acp-guard-snap 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -0
- package/dist/bundle.js +1 -0
- package/images/icon.svg +4 -0
- package/package.json +23 -0
- package/snap.manifest.json +29 -0
- package/src/index.ts +125 -0
package/README.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# ACP Guard — MetaMask Snap
|
|
2
|
+
|
|
3
|
+
Routes every MetaMask transaction through the **ACP gatekeeper** for a
|
|
4
|
+
pre-signature security verdict and renders it inside MetaMask's confirmation
|
|
5
|
+
screen (transaction-insight), plus a native MetaMask notification for anything
|
|
6
|
+
that isn't a clean pass.
|
|
7
|
+
|
|
8
|
+
## Flow
|
|
9
|
+
```
|
|
10
|
+
MetaMask confirm dialog
|
|
11
|
+
└─ onTransaction({ to, chainId, origin }) ← fires automatically
|
|
12
|
+
└─ POST {ACP_ENDPOINT}/demo/contract-validation (gatekeeper :8080)
|
|
13
|
+
└─ MCP auditor /rpc audit_lookup (GraphRAG + LLM escalation)
|
|
14
|
+
└─ renders panel: ✅ SECURE / ⚠️ WARN / 🛑 BLOCKED + risk + signatures
|
|
15
|
+
└─ snap_notify on WARN/BLOCKED
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Important limitation
|
|
19
|
+
A Snap can **warn, not block** — it cannot stop the user clicking Confirm.
|
|
20
|
+
`BLOCKED` is shown as a `Critical`-severity banner. For true *enforcement*
|
|
21
|
+
("cannot transact without ACP approval") you need a smart-account guard
|
|
22
|
+
(Safe / ERC-4337) with ACP as co-signer — that's a separate build.
|
|
23
|
+
|
|
24
|
+
## Develop / run
|
|
25
|
+
```bash
|
|
26
|
+
cd snaps/acp-guard
|
|
27
|
+
yarn # or npm install
|
|
28
|
+
# point at your gatekeeper (localhost ok for dev; prod must be HTTPS):
|
|
29
|
+
ACP_ENDPOINT=http://localhost:8080/snap/v1/validate \
|
|
30
|
+
ACP_API_KEY=<your gatekeeper key> \
|
|
31
|
+
yarn watch # serves the snap on http://localhost:8085
|
|
32
|
+
```
|
|
33
|
+
Then in **MetaMask Flask** (the dev build that allows local Snaps):
|
|
34
|
+
1. Connect to `local:http://localhost:8085`.
|
|
35
|
+
2. Send any Sepolia transaction — the ACP panel appears in the confirm screen.
|
|
36
|
+
|
|
37
|
+
## Wiring notes
|
|
38
|
+
- **Auth/CORS (wired):** the dedicated `POST /snap/v1/validate` endpoint on the
|
|
39
|
+
gatekeeper is CORS-open (snaps fetch from a `null` origin — handled in `main.go`'s
|
|
40
|
+
`AllowOriginFunc`) and runs only the contract audit (no OPA/agent-delegation).
|
|
41
|
+
Access is optionally gated by `SNAP_API_KEY` (env on the gatekeeper); if set, the
|
|
42
|
+
snap must send `Authorization: Bearer <key>` (`ACP_API_KEY` at build time). Leave
|
|
43
|
+
`SNAP_API_KEY` unset for a fully-open local/demo lookup.
|
|
44
|
+
- **Latency:** the handler blocks the confirm dialog while awaiting ACP. Keep the
|
|
45
|
+
GraphRAG fast path < ~2s and set a timeout; the code fails-open by default
|
|
46
|
+
(`FAIL_OPEN = true` in `src/index.ts`).
|
|
47
|
+
- **Calldata:** today ACP audits the destination address (`to`). Auditing *which
|
|
48
|
+
function/args* (`transaction.data`) is a future enhancement — the decoded calldata
|
|
49
|
+
is already available in `onTransaction`.
|
|
50
|
+
- **Prod endpoint:** build with `ACP_ENDPOINT=https://<public-gatekeeper>/snap/v1/validate`
|
|
51
|
+
and set `SNAP_API_KEY` on the gatekeeper + `ACP_API_KEY` on the snap.
|
|
52
|
+
|
|
53
|
+
## Files
|
|
54
|
+
- `src/index.ts` — the `onTransaction` handler.
|
|
55
|
+
- `snap.manifest.json` — permissions (`transaction-insight`, `network-access`, `snap_notify`). `shasum` is filled by `mm-snap build`.
|
|
56
|
+
- `snap.config.ts` — bundler + env injection.
|
package/dist/bundle.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(()=>{var t={543(t,n,r){var e;t=r.nmd(t),function(){var u,i="Expected a function",o="__lodash_hash_undefined__",a="__lodash_placeholder__",c=16,f=32,s=64,l=128,h=256,p=1/0,v=9007199254740991,_=NaN,g=4294967295,y=[["ary",l],["bind",1],["bindKey",2],["curry",8],["curryRight",c],["flip",512],["partial",f],["partialRight",s],["rearg",h]],d="[object Arguments]",b="[object Array]",m="[object Boolean]",w="[object Date]",x="[object Error]",A="[object Function]",j="[object GeneratorFunction]",O="[object Map]",k="[object Number]",E="[object Object]",I="[object Promise]",S="[object RegExp]",$="[object Set]",C="[object String]",R="[object Symbol]",L="[object WeakMap]",T="[object ArrayBuffer]",z="[object DataView]",B="[object Float32Array]",U="[object Float64Array]",P="[object Int8Array]",W="[object Int16Array]",N="[object Int32Array]",D="[object Uint8Array]",F="[object Uint8ClampedArray]",M="[object Uint16Array]",q="[object Uint32Array]",V=/\b__p \+= '';/g,K=/\b(__p \+=) '' \+/g,Z=/(__e\(.*?\)|\b__t\)) \+\n'';/g,G=/&(?:amp|lt|gt|quot|#39);/g,H=/[&<>"']/g,X=RegExp(G.source),J=RegExp(H.source),Y=/<%-([\s\S]+?)%>/g,Q=/<%([\s\S]+?)%>/g,tt=/<%=([\s\S]+?)%>/g,nt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rt=/^\w*$/,et=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ut=/[\\^$.*+?()[\]{}|]/g,it=RegExp(ut.source),ot=/^\s+/,at=/\s/,ct=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ft=/\{\n\/\* \[wrapped with (.+)\] \*/,st=/,? & /,lt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ht=/[()=,{}\[\]\/\s]/,pt=/\\(\\)?/g,vt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_t=/\w*$/,gt=/^[-+]0x[0-9a-f]+$/i,yt=/^0b[01]+$/i,dt=/^\[object .+?Constructor\]$/,bt=/^0o[0-7]+$/i,mt=/^(?:0|[1-9]\d*)$/,wt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,xt=/($^)/,At=/['\n\r\u2028\u2029\\]/g,jt="\\ud800-\\udfff",Ot="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",kt="\\u2700-\\u27bf",Et="a-z\\xdf-\\xf6\\xf8-\\xff",It="A-Z\\xc0-\\xd6\\xd8-\\xde",St="\\ufe0e\\ufe0f",$t="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Ct="['’]",Rt="["+jt+"]",Lt="["+$t+"]",Tt="["+Ot+"]",zt="\\d+",Bt="["+kt+"]",Ut="["+Et+"]",Pt="[^"+jt+$t+zt+kt+Et+It+"]",Wt="\\ud83c[\\udffb-\\udfff]",Nt="[^"+jt+"]",Dt="(?:\\ud83c[\\udde6-\\uddff]){2}",Ft="[\\ud800-\\udbff][\\udc00-\\udfff]",Mt="["+It+"]",qt="\\u200d",Vt="(?:"+Ut+"|"+Pt+")",Kt="(?:"+Mt+"|"+Pt+")",Zt="(?:['’](?:d|ll|m|re|s|t|ve))?",Gt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Ht="(?:"+Tt+"|"+Wt+")"+"?",Xt="["+St+"]?",Jt=Xt+Ht+("(?:"+qt+"(?:"+[Nt,Dt,Ft].join("|")+")"+Xt+Ht+")*"),Yt="(?:"+[Bt,Dt,Ft].join("|")+")"+Jt,Qt="(?:"+[Nt+Tt+"?",Tt,Dt,Ft,Rt].join("|")+")",tn=RegExp(Ct,"g"),nn=RegExp(Tt,"g"),rn=RegExp(Wt+"(?="+Wt+")|"+Qt+Jt,"g"),en=RegExp([Mt+"?"+Ut+"+"+Zt+"(?="+[Lt,Mt,"$"].join("|")+")",Kt+"+"+Gt+"(?="+[Lt,Mt+Vt,"$"].join("|")+")",Mt+"?"+Vt+"+"+Zt,Mt+"+"+Gt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",zt,Yt].join("|"),"g"),un=RegExp("["+qt+jt+Ot+St+"]"),on=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,an=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],cn=-1,fn={};fn[B]=fn[U]=fn[P]=fn[W]=fn[N]=fn[D]=fn[F]=fn[M]=fn[q]=!0,fn[d]=fn[b]=fn[T]=fn[m]=fn[z]=fn[w]=fn[x]=fn[A]=fn[O]=fn[k]=fn[E]=fn[S]=fn[$]=fn[C]=fn[L]=!1;var sn={};sn[d]=sn[b]=sn[T]=sn[z]=sn[m]=sn[w]=sn[B]=sn[U]=sn[P]=sn[W]=sn[N]=sn[O]=sn[k]=sn[E]=sn[S]=sn[$]=sn[C]=sn[R]=sn[D]=sn[F]=sn[M]=sn[q]=!0,sn[x]=sn[A]=sn[L]=!1;var ln={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},hn=parseFloat,pn=parseInt,vn="object"==typeof globalThis&&globalThis&&globalThis.Object===Object&&globalThis,_n="object"==typeof self&&self&&self.Object===Object&&self,gn=vn||_n||Function("return this")(),yn=n&&!n.nodeType&&n,dn=yn&&t&&!t.nodeType&&t,bn=dn&&dn.exports===yn,mn=bn&&vn.process,wn=function(){try{var t=dn&&dn.require&&dn.require("util").types;return t||mn&&mn.binding&&mn.binding("util")}catch(t){}}(),xn=wn&&wn.isArrayBuffer,An=wn&&wn.isDate,jn=wn&&wn.isMap,On=wn&&wn.isRegExp,kn=wn&&wn.isSet,En=wn&&wn.isTypedArray;function In(t,n,r){switch(r.length){case 0:return t.call(n);case 1:return t.call(n,r[0]);case 2:return t.call(n,r[0],r[1]);case 3:return t.call(n,r[0],r[1],r[2])}return t.apply(n,r)}function Sn(t,n,r,e){for(var u=-1,i=null==t?0:t.length;++u<i;){var o=t[u];n(e,o,r(o),t)}return e}function $n(t,n){for(var r=-1,e=null==t?0:t.length;++r<e&&!1!==n(t[r],r,t););return t}function Cn(t,n){for(var r=null==t?0:t.length;r--&&!1!==n(t[r],r,t););return t}function Rn(t,n){for(var r=-1,e=null==t?0:t.length;++r<e;)if(!n(t[r],r,t))return!1;return!0}function Ln(t,n){for(var r=-1,e=null==t?0:t.length,u=0,i=[];++r<e;){var o=t[r];n(o,r,t)&&(i[u++]=o)}return i}function Tn(t,n){return!!(null==t?0:t.length)&&qn(t,n,0)>-1}function zn(t,n,r){for(var e=-1,u=null==t?0:t.length;++e<u;)if(r(n,t[e]))return!0;return!1}function Bn(t,n){for(var r=-1,e=null==t?0:t.length,u=Array(e);++r<e;)u[r]=n(t[r],r,t);return u}function Un(t,n){for(var r=-1,e=n.length,u=t.length;++r<e;)t[u+r]=n[r];return t}function Pn(t,n,r,e){var u=-1,i=null==t?0:t.length;for(e&&i&&(r=t[++u]);++u<i;)r=n(r,t[u],u,t);return r}function Wn(t,n,r,e){var u=null==t?0:t.length;for(e&&u&&(r=t[--u]);u--;)r=n(r,t[u],u,t);return r}function Nn(t,n){for(var r=-1,e=null==t?0:t.length;++r<e;)if(n(t[r],r,t))return!0;return!1}var Dn=Gn("length");function Fn(t,n,r){var e;return r(t,function(t,r,u){if(n(t,r,u))return e=r,!1}),e}function Mn(t,n,r,e){for(var u=t.length,i=r+(e?1:-1);e?i--:++i<u;)if(n(t[i],i,t))return i;return-1}function qn(t,n,r){return n==n?function(t,n,r){var e=r-1,u=t.length;for(;++e<u;)if(t[e]===n)return e;return-1}(t,n,r):Mn(t,Kn,r)}function Vn(t,n,r,e){for(var u=r-1,i=t.length;++u<i;)if(e(t[u],n))return u;return-1}function Kn(t){return t!=t}function Zn(t,n){var r=null==t?0:t.length;return r?Jn(t,n)/r:_}function Gn(t){return function(n){return null==n?u:n[t]}}function Hn(t){return function(n){return null==t?u:t[n]}}function Xn(t,n,r,e,u){return u(t,function(t,u,i){r=e?(e=!1,t):n(r,t,u,i)}),r}function Jn(t,n){for(var r,e=-1,i=t.length;++e<i;){var o=n(t[e]);o!==u&&(r=r===u?o:r+o)}return r}function Yn(t,n){for(var r=-1,e=Array(t);++r<t;)e[r]=n(r);return e}function Qn(t){return t?t.slice(0,gr(t)+1).replace(ot,""):t}function tr(t){return function(n){return t(n)}}function nr(t,n){return Bn(n,function(n){return t[n]})}function rr(t,n){return t.has(n)}function er(t,n){for(var r=-1,e=t.length;++r<e&&qn(n,t[r],0)>-1;);return r}function ur(t,n){for(var r=t.length;r--&&qn(n,t[r],0)>-1;);return r}var ir=Hn({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),or=Hn({"&":"&","<":"<",">":">",'"':""","'":"'"});function ar(t){return"\\"+ln[t]}function cr(t){return un.test(t)}function fr(t){var n=-1,r=Array(t.size);return t.forEach(function(t,e){r[++n]=[e,t]}),r}function sr(t,n){return function(r){return t(n(r))}}function lr(t,n){for(var r=-1,e=t.length,u=0,i=[];++r<e;){var o=t[r];o!==n&&o!==a||(t[r]=a,i[u++]=r)}return i}function hr(t){var n=-1,r=Array(t.size);return t.forEach(function(t){r[++n]=t}),r}function pr(t){var n=-1,r=Array(t.size);return t.forEach(function(t){r[++n]=[t,t]}),r}function vr(t){return cr(t)?function(t){var n=rn.lastIndex=0;for(;rn.test(t);)++n;return n}(t):Dn(t)}function _r(t){return cr(t)?function(t){return t.match(rn)||[]}(t):function(t){return t.split("")}(t)}function gr(t){for(var n=t.length;n--&&at.test(t.charAt(n)););return n}var yr=Hn({"&":"&","<":"<",">":">",""":'"',"'":"'"});var dr=function t(n){var r,e=(n=null==n?gn:dr.defaults(gn.Object(),n,dr.pick(gn,an))).Array,at=n.Date,jt=n.Error,Ot=n.Function,kt=n.Math,Et=n.Object,It=n.RegExp,St=n.String,$t=n.TypeError,Ct=e.prototype,Rt=Ot.prototype,Lt=Et.prototype,Tt=n["__core-js_shared__"],zt=Rt.toString,Bt=Lt.hasOwnProperty,Ut=0,Pt=(r=/[^.]+$/.exec(Tt&&Tt.keys&&Tt.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"",Wt=Lt.toString,Nt=zt.call(Et),Dt=gn._,Ft=It("^"+zt.call(Bt).replace(ut,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Mt=bn?n.Buffer:u,qt=n.Symbol,Vt=n.Uint8Array,Kt=Mt?Mt.allocUnsafe:u,Zt=sr(Et.getPrototypeOf,Et),Gt=Et.create,Ht=Lt.propertyIsEnumerable,Xt=Ct.splice,Jt=qt?qt.isConcatSpreadable:u,Yt=qt?qt.iterator:u,Qt=qt?qt.toStringTag:u,rn=function(){try{var t=hi(Et,"defineProperty");return t({},"",{}),t}catch(t){}}(),un=n.clearTimeout!==gn.clearTimeout&&n.clearTimeout,ln=at&&at.now!==gn.Date.now&&at.now,vn=n.setTimeout!==gn.setTimeout&&n.setTimeout,_n=kt.ceil,yn=kt.floor,dn=Et.getOwnPropertySymbols,mn=Mt?Mt.isBuffer:u,wn=n.isFinite,Dn=Ct.join,Hn=sr(Et.keys,Et),br=kt.max,mr=kt.min,wr=at.now,xr=n.parseInt,Ar=kt.random,jr=Ct.reverse,Or=hi(n,"DataView"),kr=hi(n,"Map"),Er=hi(n,"Promise"),Ir=hi(n,"Set"),Sr=hi(n,"WeakMap"),$r=hi(Et,"create"),Cr=Sr&&new Sr,Rr={},Lr=Pi(Or),Tr=Pi(kr),zr=Pi(Er),Br=Pi(Ir),Ur=Pi(Sr),Pr=qt?qt.prototype:u,Wr=Pr?Pr.valueOf:u,Nr=Pr?Pr.toString:u;function Dr(t){if(ra(t)&&!Vo(t)&&!(t instanceof Vr)){if(t instanceof qr)return t;if(Bt.call(t,"__wrapped__"))return Wi(t)}return new qr(t)}var Fr=function(){function t(){}return function(n){if(!na(n))return{};if(Gt)return Gt(n);t.prototype=n;var r=new t;return t.prototype=u,r}}();function Mr(){}function qr(t,n){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!n,this.__index__=0,this.__values__=u}function Vr(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=g,this.__views__=[]}function Kr(t){var n=-1,r=null==t?0:t.length;for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function Zr(t){var n=-1,r=null==t?0:t.length;for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function Gr(t){var n=-1,r=null==t?0:t.length;for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function Hr(t){var n=-1,r=null==t?0:t.length;for(this.__data__=new Gr;++n<r;)this.add(t[n])}function Xr(t){var n=this.__data__=new Zr(t);this.size=n.size}function Jr(t,n){var r=Vo(t),e=!r&&qo(t),u=!r&&!e&&Ho(t),i=!r&&!e&&!u&&sa(t),o=r||e||u||i,a=o?Yn(t.length,St):[],c=a.length;for(var f in t)!n&&!Bt.call(t,f)||o&&("length"==f||u&&("offset"==f||"parent"==f)||i&&("buffer"==f||"byteLength"==f||"byteOffset"==f)||bi(f,c))||a.push(f);return a}function Yr(t){var n=t.length;return n?t[He(0,n-1)]:u}function Qr(t,n){return zi($u(t),ce(n,0,t.length))}function te(t){return zi($u(t))}function ne(t,n,r){(r!==u&&!Do(t[n],r)||r===u&&!(n in t))&&oe(t,n,r)}function re(t,n,r){var e=t[n];Bt.call(t,n)&&Do(e,r)&&(r!==u||n in t)||oe(t,n,r)}function ee(t,n){for(var r=t.length;r--;)if(Do(t[r][0],n))return r;return-1}function ue(t,n,r,e){return pe(t,function(t,u,i){n(e,t,r(t),i)}),e}function ie(t,n){return t&&Cu(n,Ra(n),t)}function oe(t,n,r){"__proto__"==n&&rn?rn(t,n,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[n]=r}function ae(t,n){for(var r=-1,i=n.length,o=e(i),a=null==t;++r<i;)o[r]=a?u:Ea(t,n[r]);return o}function ce(t,n,r){return t==t&&(r!==u&&(t=t<=r?t:r),n!==u&&(t=t>=n?t:n)),t}function fe(t,n,r,e,i,o){var a,c=1&n,f=2&n,s=4&n;if(r&&(a=i?r(t,e,i,o):r(t)),a!==u)return a;if(!na(t))return t;var l=Vo(t);if(l){if(a=function(t){var n=t.length,r=new t.constructor(n);n&&"string"==typeof t[0]&&Bt.call(t,"index")&&(r.index=t.index,r.input=t.input);return r}(t),!c)return $u(t,a)}else{var h=_i(t),p=h==A||h==j;if(Ho(t))return ju(t,c);if(h==E||h==d||p&&!i){if(a=f||p?{}:yi(t),!c)return f?function(t,n){return Cu(t,vi(t),n)}(t,function(t,n){return t&&Cu(n,La(n),t)}(a,t)):function(t,n){return Cu(t,pi(t),n)}(t,ie(a,t))}else{if(!sn[h])return i?t:{};a=function(t,n,r){var e=t.constructor;switch(n){case T:return Ou(t);case m:case w:return new e(+t);case z:return function(t,n){var r=n?Ou(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}(t,r);case B:case U:case P:case W:case N:case D:case F:case M:case q:return ku(t,r);case O:return new e;case k:case C:return new e(t);case S:return function(t){var n=new t.constructor(t.source,_t.exec(t));return n.lastIndex=t.lastIndex,n}(t);case $:return new e;case R:return u=t,Wr?Et(Wr.call(u)):{}}var u}(t,h,c)}}o||(o=new Xr);var v=o.get(t);if(v)return v;o.set(t,a),aa(t)?t.forEach(function(e){a.add(fe(e,n,r,e,t,o))}):ea(t)&&t.forEach(function(e,u){a.set(u,fe(e,n,r,u,t,o))});var _=l?u:(s?f?ii:ui:f?La:Ra)(t);return $n(_||t,function(e,u){_&&(e=t[u=e]),re(a,u,fe(e,n,r,u,t,o))}),a}function se(t,n,r){var e=r.length;if(null==t)return!e;for(t=Et(t);e--;){var i=r[e],o=n[i],a=t[i];if(a===u&&!(i in t)||!o(a))return!1}return!0}function le(t,n,r){if("function"!=typeof t)throw new $t(i);return Ci(function(){t.apply(u,r)},n)}function he(t,n,r,e){var u=-1,i=Tn,o=!0,a=t.length,c=[],f=n.length;if(!a)return c;r&&(n=Bn(n,tr(r))),e?(i=zn,o=!1):n.length>=200&&(i=rr,o=!1,n=new Hr(n));t:for(;++u<a;){var s=t[u],l=null==r?s:r(s);if(s=e||0!==s?s:0,o&&l==l){for(var h=f;h--;)if(n[h]===l)continue t;c.push(s)}else i(n,l,e)||c.push(s)}return c}Dr.templateSettings={escape:Y,evaluate:Q,interpolate:tt,variable:"",imports:{_:Dr}},Dr.prototype=Mr.prototype,Dr.prototype.constructor=Dr,qr.prototype=Fr(Mr.prototype),qr.prototype.constructor=qr,Vr.prototype=Fr(Mr.prototype),Vr.prototype.constructor=Vr,Kr.prototype.clear=function(){this.__data__=$r?$r(null):{},this.size=0},Kr.prototype.delete=function(t){var n=this.has(t)&&delete this.__data__[t];return this.size-=n?1:0,n},Kr.prototype.get=function(t){var n=this.__data__;if($r){var r=n[t];return r===o?u:r}return Bt.call(n,t)?n[t]:u},Kr.prototype.has=function(t){var n=this.__data__;return $r?n[t]!==u:Bt.call(n,t)},Kr.prototype.set=function(t,n){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=$r&&n===u?o:n,this},Zr.prototype.clear=function(){this.__data__=[],this.size=0},Zr.prototype.delete=function(t){var n=this.__data__,r=ee(n,t);return!(r<0)&&(r==n.length-1?n.pop():Xt.call(n,r,1),--this.size,!0)},Zr.prototype.get=function(t){var n=this.__data__,r=ee(n,t);return r<0?u:n[r][1]},Zr.prototype.has=function(t){return ee(this.__data__,t)>-1},Zr.prototype.set=function(t,n){var r=this.__data__,e=ee(r,t);return e<0?(++this.size,r.push([t,n])):r[e][1]=n,this},Gr.prototype.clear=function(){this.size=0,this.__data__={hash:new Kr,map:new(kr||Zr),string:new Kr}},Gr.prototype.delete=function(t){var n=si(this,t).delete(t);return this.size-=n?1:0,n},Gr.prototype.get=function(t){return si(this,t).get(t)},Gr.prototype.has=function(t){return si(this,t).has(t)},Gr.prototype.set=function(t,n){var r=si(this,t),e=r.size;return r.set(t,n),this.size+=r.size==e?0:1,this},Hr.prototype.add=Hr.prototype.push=function(t){return this.__data__.set(t,o),this},Hr.prototype.has=function(t){return this.__data__.has(t)},Xr.prototype.clear=function(){this.__data__=new Zr,this.size=0},Xr.prototype.delete=function(t){var n=this.__data__,r=n.delete(t);return this.size=n.size,r},Xr.prototype.get=function(t){return this.__data__.get(t)},Xr.prototype.has=function(t){return this.__data__.has(t)},Xr.prototype.set=function(t,n){var r=this.__data__;if(r instanceof Zr){var e=r.__data__;if(!kr||e.length<199)return e.push([t,n]),this.size=++r.size,this;r=this.__data__=new Gr(e)}return r.set(t,n),this.size=r.size,this};var pe=Tu(we),ve=Tu(xe,!0);function _e(t,n){var r=!0;return pe(t,function(t,e,u){return r=!!n(t,e,u)}),r}function ge(t,n,r){for(var e=-1,i=t.length;++e<i;){var o=t[e],a=n(o);if(null!=a&&(c===u?a==a&&!fa(a):r(a,c)))var c=a,f=o}return f}function ye(t,n){var r=[];return pe(t,function(t,e,u){n(t,e,u)&&r.push(t)}),r}function de(t,n,r,e,u){var i=-1,o=t.length;for(r||(r=di),u||(u=[]);++i<o;){var a=t[i];n>0&&r(a)?n>1?de(a,n-1,r,e,u):Un(u,a):e||(u[u.length]=a)}return u}var be=zu(),me=zu(!0);function we(t,n){return t&&be(t,n,Ra)}function xe(t,n){return t&&me(t,n,Ra)}function Ae(t,n){return Ln(n,function(n){return Yo(t[n])})}function je(t,n){for(var r=0,e=(n=mu(n,t)).length;null!=t&&r<e;)t=t[Ui(n[r++])];return r&&r==e?t:u}function Oe(t,n,r){var e=n(t);return Vo(t)?e:Un(e,r(t))}function ke(t){return null==t?t===u?"[object Undefined]":"[object Null]":Qt&&Qt in Et(t)?function(t){var n=Bt.call(t,Qt),r=t[Qt];try{t[Qt]=u;var e=!0}catch(t){}var i=Wt.call(t);e&&(n?t[Qt]=r:delete t[Qt]);return i}(t):function(t){return Wt.call(t)}(t)}function Ee(t,n){return t>n}function Ie(t,n){return null!=t&&Bt.call(t,n)}function Se(t,n){return null!=t&&n in Et(t)}function $e(t,n,r){for(var i=r?zn:Tn,o=t[0].length,a=t.length,c=a,f=e(a),s=1/0,l=[];c--;){var h=t[c];c&&n&&(h=Bn(h,tr(n))),s=mr(h.length,s),f[c]=!r&&(n||o>=120&&h.length>=120)?new Hr(c&&h):u}h=t[0];var p=-1,v=f[0];t:for(;++p<o&&l.length<s;){var _=h[p],g=n?n(_):_;if(_=r||0!==_?_:0,!(v?rr(v,g):i(l,g,r))){for(c=a;--c;){var y=f[c];if(!(y?rr(y,g):i(t[c],g,r)))continue t}v&&v.push(g),l.push(_)}}return l}function Ce(t,n,r){var e=null==(t=Ii(t,n=mu(n,t)))?t:t[Ui(Xi(n))];return null==e?u:In(e,t,r)}function Re(t){return ra(t)&&ke(t)==d}function Le(t,n,r,e,i){return t===n||(null==t||null==n||!ra(t)&&!ra(n)?t!=t&&n!=n:function(t,n,r,e,i,o){var a=Vo(t),c=Vo(n),f=a?b:_i(t),s=c?b:_i(n),l=(f=f==d?E:f)==E,h=(s=s==d?E:s)==E,p=f==s;if(p&&Ho(t)){if(!Ho(n))return!1;a=!0,l=!1}if(p&&!l)return o||(o=new Xr),a||sa(t)?ri(t,n,r,e,i,o):function(t,n,r,e,u,i,o){switch(r){case z:if(t.byteLength!=n.byteLength||t.byteOffset!=n.byteOffset)return!1;t=t.buffer,n=n.buffer;case T:return!(t.byteLength!=n.byteLength||!i(new Vt(t),new Vt(n)));case m:case w:case k:return Do(+t,+n);case x:return t.name==n.name&&t.message==n.message;case S:case C:return t==n+"";case O:var a=fr;case $:var c=1&e;if(a||(a=hr),t.size!=n.size&&!c)return!1;var f=o.get(t);if(f)return f==n;e|=2,o.set(t,n);var s=ri(a(t),a(n),e,u,i,o);return o.delete(t),s;case R:if(Wr)return Wr.call(t)==Wr.call(n)}return!1}(t,n,f,r,e,i,o);if(!(1&r)){var v=l&&Bt.call(t,"__wrapped__"),_=h&&Bt.call(n,"__wrapped__");if(v||_){var g=v?t.value():t,y=_?n.value():n;return o||(o=new Xr),i(g,y,r,e,o)}}if(!p)return!1;return o||(o=new Xr),function(t,n,r,e,i,o){var a=1&r,c=ui(t),f=c.length,s=ui(n),l=s.length;if(f!=l&&!a)return!1;var h=f;for(;h--;){var p=c[h];if(!(a?p in n:Bt.call(n,p)))return!1}var v=o.get(t),_=o.get(n);if(v&&_)return v==n&&_==t;var g=!0;o.set(t,n),o.set(n,t);var y=a;for(;++h<f;){var d=t[p=c[h]],b=n[p];if(e)var m=a?e(b,d,p,n,t,o):e(d,b,p,t,n,o);if(!(m===u?d===b||i(d,b,r,e,o):m)){g=!1;break}y||(y="constructor"==p)}if(g&&!y){var w=t.constructor,x=n.constructor;w==x||!("constructor"in t)||!("constructor"in n)||"function"==typeof w&&w instanceof w&&"function"==typeof x&&x instanceof x||(g=!1)}return o.delete(t),o.delete(n),g}(t,n,r,e,i,o)}(t,n,r,e,Le,i))}function Te(t,n,r,e){var i=r.length,o=i,a=!e;if(null==t)return!o;for(t=Et(t);i--;){var c=r[i];if(a&&c[2]?c[1]!==t[c[0]]:!(c[0]in t))return!1}for(;++i<o;){var f=(c=r[i])[0],s=t[f],l=c[1];if(a&&c[2]){if(s===u&&!(f in t))return!1}else{var h=new Xr;if(e)var p=e(s,l,f,t,n,h);if(!(p===u?Le(l,s,3,e,h):p))return!1}}return!0}function ze(t){return!(!na(t)||(n=t,Pt&&Pt in n))&&(Yo(t)?Ft:dt).test(Pi(t));var n}function Be(t){return"function"==typeof t?t:null==t?uc:"object"==typeof t?Vo(t)?Fe(t[0],t[1]):De(t):pc(t)}function Ue(t){if(!ji(t))return Hn(t);var n=[];for(var r in Et(t))Bt.call(t,r)&&"constructor"!=r&&n.push(r);return n}function Pe(t){if(!na(t))return function(t){var n=[];if(null!=t)for(var r in Et(t))n.push(r);return n}(t);var n=ji(t),r=[];for(var e in t)("constructor"!=e||!n&&Bt.call(t,e))&&r.push(e);return r}function We(t,n){return t<n}function Ne(t,n){var r=-1,u=Zo(t)?e(t.length):[];return pe(t,function(t,e,i){u[++r]=n(t,e,i)}),u}function De(t){var n=li(t);return 1==n.length&&n[0][2]?ki(n[0][0],n[0][1]):function(r){return r===t||Te(r,t,n)}}function Fe(t,n){return wi(t)&&Oi(n)?ki(Ui(t),n):function(r){var e=Ea(r,t);return e===u&&e===n?Ia(r,t):Le(n,e,3)}}function Me(t,n,r,e,i){t!==n&&be(n,function(o,a){if(i||(i=new Xr),na(o))!function(t,n,r,e,i,o,a){var c=Si(t,r),f=Si(n,r),s=a.get(f);if(s)return void ne(t,r,s);var l=o?o(c,f,r+"",t,n,a):u,h=l===u;if(h){var p=Vo(f),v=!p&&Ho(f),_=!p&&!v&&sa(f);l=f,p||v||_?Vo(c)?l=c:Go(c)?l=$u(c):v?(h=!1,l=ju(f,!0)):_?(h=!1,l=ku(f,!0)):l=[]:ia(f)||qo(f)?(l=c,qo(c)?l=da(c):na(c)&&!Yo(c)||(l=yi(f))):h=!1}h&&(a.set(f,l),i(l,f,e,o,a),a.delete(f));ne(t,r,l)}(t,n,a,r,Me,e,i);else{var c=e?e(Si(t,a),o,a+"",t,n,i):u;c===u&&(c=o),ne(t,a,c)}},La)}function qe(t,n){var r=t.length;if(r)return bi(n+=n<0?r:0,r)?t[n]:u}function Ve(t,n,r){n=n.length?Bn(n,function(t){return Vo(t)?function(n){return je(n,1===t.length?t[0]:t)}:t}):[uc];var e=-1;n=Bn(n,tr(fi()));var u=Ne(t,function(t,r,u){var i=Bn(n,function(n){return n(t)});return{criteria:i,index:++e,value:t}});return function(t,n){var r=t.length;for(t.sort(n);r--;)t[r]=t[r].value;return t}(u,function(t,n){return function(t,n,r){var e=-1,u=t.criteria,i=n.criteria,o=u.length,a=r.length;for(;++e<o;){var c=Eu(u[e],i[e]);if(c)return e>=a?c:c*("desc"==r[e]?-1:1)}return t.index-n.index}(t,n,r)})}function Ke(t,n,r){for(var e=-1,u=n.length,i={};++e<u;){var o=n[e],a=je(t,o);r(a,o)&&tu(i,mu(o,t),a)}return i}function Ze(t,n,r,e){var u=e?Vn:qn,i=-1,o=n.length,a=t;for(t===n&&(n=$u(n)),r&&(a=Bn(t,tr(r)));++i<o;)for(var c=0,f=n[i],s=r?r(f):f;(c=u(a,s,c,e))>-1;)a!==t&&Xt.call(a,c,1),Xt.call(t,c,1);return t}function Ge(t,n){for(var r=t?n.length:0,e=r-1;r--;){var u=n[r];if(r==e||u!==i){var i=u;bi(u)?Xt.call(t,u,1):hu(t,u)}}return t}function He(t,n){return t+yn(Ar()*(n-t+1))}function Xe(t,n){var r="";if(!t||n<1||n>v)return r;do{n%2&&(r+=t),(n=yn(n/2))&&(t+=t)}while(n);return r}function Je(t,n){return Ri(Ei(t,n,uc),t+"")}function Ye(t){return Yr(Da(t))}function Qe(t,n){var r=Da(t);return zi(r,ce(n,0,r.length))}function tu(t,n,r,e){if(!na(t))return t;for(var i=-1,o=(n=mu(n,t)).length,a=o-1,c=t;null!=c&&++i<o;){var f=Ui(n[i]),s=r;if("__proto__"===f||"constructor"===f||"prototype"===f)return t;if(i!=a){var l=c[f];(s=e?e(l,f,c):u)===u&&(s=na(l)?l:bi(n[i+1])?[]:{})}re(c,f,s),c=c[f]}return t}var nu=Cr?function(t,n){return Cr.set(t,n),t}:uc,ru=rn?function(t,n){return rn(t,"toString",{configurable:!0,enumerable:!1,value:nc(n),writable:!0})}:uc;function eu(t){return zi(Da(t))}function uu(t,n,r){var u=-1,i=t.length;n<0&&(n=-n>i?0:i+n),(r=r>i?i:r)<0&&(r+=i),i=n>r?0:r-n>>>0,n>>>=0;for(var o=e(i);++u<i;)o[u]=t[u+n];return o}function iu(t,n){var r;return pe(t,function(t,e,u){return!(r=n(t,e,u))}),!!r}function ou(t,n,r){var e=0,u=null==t?e:t.length;if("number"==typeof n&&n==n&&u<=2147483647){for(;e<u;){var i=e+u>>>1,o=t[i];null!==o&&!fa(o)&&(r?o<=n:o<n)?e=i+1:u=i}return u}return au(t,n,uc,r)}function au(t,n,r,e){var i=0,o=null==t?0:t.length;if(0===o)return 0;for(var a=(n=r(n))!=n,c=null===n,f=fa(n),s=n===u;i<o;){var l=yn((i+o)/2),h=r(t[l]),p=h!==u,v=null===h,_=h==h,g=fa(h);if(a)var y=e||_;else y=s?_&&(e||p):c?_&&p&&(e||!v):f?_&&p&&!v&&(e||!g):!v&&!g&&(e?h<=n:h<n);y?i=l+1:o=l}return mr(o,4294967294)}function cu(t,n){for(var r=-1,e=t.length,u=0,i=[];++r<e;){var o=t[r],a=n?n(o):o;if(!r||!Do(a,c)){var c=a;i[u++]=0===o?0:o}}return i}function fu(t){return"number"==typeof t?t:fa(t)?_:+t}function su(t){if("string"==typeof t)return t;if(Vo(t))return Bn(t,su)+"";if(fa(t))return Nr?Nr.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}function lu(t,n,r){var e=-1,u=Tn,i=t.length,o=!0,a=[],c=a;if(r)o=!1,u=zn;else if(i>=200){var f=n?null:Xu(t);if(f)return hr(f);o=!1,u=rr,c=new Hr}else c=n?[]:a;t:for(;++e<i;){var s=t[e],l=n?n(s):s;if(s=r||0!==s?s:0,o&&l==l){for(var h=c.length;h--;)if(c[h]===l)continue t;n&&c.push(l),a.push(s)}else u(c,l,r)||(c!==a&&c.push(l),a.push(s))}return a}function hu(t,n){var r=-1,e=(n=mu(n,t)).length;if(!e)return!0;for(;++r<e;){var u=Ui(n[r]);if("__proto__"===u&&!Bt.call(t,"__proto__"))return!1;if(("constructor"===u||"prototype"===u)&&r<e-1)return!1}var i=Ii(t,n);return null==i||delete i[Ui(Xi(n))]}function pu(t,n,r,e){return tu(t,n,r(je(t,n)),e)}function vu(t,n,r,e){for(var u=t.length,i=e?u:-1;(e?i--:++i<u)&&n(t[i],i,t););return r?uu(t,e?0:i,e?i+1:u):uu(t,e?i+1:0,e?u:i)}function _u(t,n){var r=t;return r instanceof Vr&&(r=r.value()),Pn(n,function(t,n){return n.func.apply(n.thisArg,Un([t],n.args))},r)}function gu(t,n,r){var u=t.length;if(u<2)return u?lu(t[0]):[];for(var i=-1,o=e(u);++i<u;)for(var a=t[i],c=-1;++c<u;)c!=i&&(o[i]=he(o[i]||a,t[c],n,r));return lu(de(o,1),n,r)}function yu(t,n,r){for(var e=-1,i=t.length,o=n.length,a={};++e<i;){var c=e<o?n[e]:u;r(a,t[e],c)}return a}function du(t){return Go(t)?t:[]}function bu(t){return"function"==typeof t?t:uc}function mu(t,n){return Vo(t)?t:wi(t,n)?[t]:Bi(ba(t))}var wu=Je;function xu(t,n,r){var e=t.length;return r=r===u?e:r,!n&&r>=e?t:uu(t,n,r)}var Au=un||function(t){return gn.clearTimeout(t)};function ju(t,n){if(n)return t.slice();var r=t.length,e=Kt?Kt(r):new t.constructor(r);return t.copy(e),e}function Ou(t){var n=new t.constructor(t.byteLength);return new Vt(n).set(new Vt(t)),n}function ku(t,n){var r=n?Ou(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}function Eu(t,n){if(t!==n){var r=t!==u,e=null===t,i=t==t,o=fa(t),a=n!==u,c=null===n,f=n==n,s=fa(n);if(!c&&!s&&!o&&t>n||o&&a&&f&&!c&&!s||e&&a&&f||!r&&f||!i)return 1;if(!e&&!o&&!s&&t<n||s&&r&&i&&!e&&!o||c&&r&&i||!a&&i||!f)return-1}return 0}function Iu(t,n,r,u){for(var i=-1,o=t.length,a=r.length,c=-1,f=n.length,s=br(o-a,0),l=e(f+s),h=!u;++c<f;)l[c]=n[c];for(;++i<a;)(h||i<o)&&(l[r[i]]=t[i]);for(;s--;)l[c++]=t[i++];return l}function Su(t,n,r,u){for(var i=-1,o=t.length,a=-1,c=r.length,f=-1,s=n.length,l=br(o-c,0),h=e(l+s),p=!u;++i<l;)h[i]=t[i];for(var v=i;++f<s;)h[v+f]=n[f];for(;++a<c;)(p||i<o)&&(h[v+r[a]]=t[i++]);return h}function $u(t,n){var r=-1,u=t.length;for(n||(n=e(u));++r<u;)n[r]=t[r];return n}function Cu(t,n,r,e){var i=!r;r||(r={});for(var o=-1,a=n.length;++o<a;){var c=n[o],f=e?e(r[c],t[c],c,r,t):u;f===u&&(f=t[c]),i?oe(r,c,f):re(r,c,f)}return r}function Ru(t,n){return function(r,e){var u=Vo(r)?Sn:ue,i=n?n():{};return u(r,t,fi(e,2),i)}}function Lu(t){return Je(function(n,r){var e=-1,i=r.length,o=i>1?r[i-1]:u,a=i>2?r[2]:u;for(o=t.length>3&&"function"==typeof o?(i--,o):u,a&&mi(r[0],r[1],a)&&(o=i<3?u:o,i=1),n=Et(n);++e<i;){var c=r[e];c&&t(n,c,e,o)}return n})}function Tu(t,n){return function(r,e){if(null==r)return r;if(!Zo(r))return t(r,e);for(var u=r.length,i=n?u:-1,o=Et(r);(n?i--:++i<u)&&!1!==e(o[i],i,o););return r}}function zu(t){return function(n,r,e){for(var u=-1,i=Et(n),o=e(n),a=o.length;a--;){var c=o[t?a:++u];if(!1===r(i[c],c,i))break}return n}}function Bu(t){return function(n){var r=cr(n=ba(n))?_r(n):u,e=r?r[0]:n.charAt(0),i=r?xu(r,1).join(""):n.slice(1);return e[t]()+i}}function Uu(t){return function(n){return Pn(Ya(qa(n).replace(tn,"")),t,"")}}function Pu(t){return function(){var n=arguments;switch(n.length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3]);case 5:return new t(n[0],n[1],n[2],n[3],n[4]);case 6:return new t(n[0],n[1],n[2],n[3],n[4],n[5]);case 7:return new t(n[0],n[1],n[2],n[3],n[4],n[5],n[6])}var r=Fr(t.prototype),e=t.apply(r,n);return na(e)?e:r}}function Wu(t){return function(n,r,e){var i=Et(n);if(!Zo(n)){var o=fi(r,3);n=Ra(n),r=function(t){return o(i[t],t,i)}}var a=t(n,r,e);return a>-1?i[o?n[a]:a]:u}}function Nu(t){return ei(function(n){var r=n.length,e=r,o=qr.prototype.thru;for(t&&n.reverse();e--;){var a=n[e];if("function"!=typeof a)throw new $t(i);if(o&&!c&&"wrapper"==ai(a))var c=new qr([],!0)}for(e=c?e:r;++e<r;){var f=ai(a=n[e]),s="wrapper"==f?oi(a):u;c=s&&xi(s[0])&&424==s[1]&&!s[4].length&&1==s[9]?c[ai(s[0])].apply(c,s[3]):1==a.length&&xi(a)?c[f]():c.thru(a)}return function(){var t=arguments,e=t[0];if(c&&1==t.length&&Vo(e))return c.plant(e).value();for(var u=0,i=r?n[u].apply(this,t):e;++u<r;)i=n[u].call(this,i);return i}})}function Du(t,n,r,i,o,a,c,f,s,h){var p=n&l,v=1&n,_=2&n,g=24&n,y=512&n,d=_?u:Pu(t);return function l(){for(var b=arguments.length,m=e(b),w=b;w--;)m[w]=arguments[w];if(g)var x=ci(l),A=function(t,n){for(var r=t.length,e=0;r--;)t[r]===n&&++e;return e}(m,x);if(i&&(m=Iu(m,i,o,g)),a&&(m=Su(m,a,c,g)),b-=A,g&&b<h){var j=lr(m,x);return Gu(t,n,Du,l.placeholder,r,m,j,f,s,h-b)}var O=v?r:this,k=_?O[t]:t;return b=m.length,f?m=function(t,n){var r=t.length,e=mr(n.length,r),i=$u(t);for(;e--;){var o=n[e];t[e]=bi(o,r)?i[o]:u}return t}(m,f):y&&b>1&&m.reverse(),p&&s<b&&(m.length=s),this&&this!==gn&&this instanceof l&&(k=d||Pu(k)),k.apply(O,m)}}function Fu(t,n){return function(r,e){return function(t,n,r,e){return we(t,function(t,u,i){n(e,r(t),u,i)}),e}(r,t,n(e),{})}}function Mu(t,n){return function(r,e){var i;if(r===u&&e===u)return n;if(r!==u&&(i=r),e!==u){if(i===u)return e;"string"==typeof r||"string"==typeof e?(r=su(r),e=su(e)):(r=fu(r),e=fu(e)),i=t(r,e)}return i}}function qu(t){return ei(function(n){return n=Bn(n,tr(fi())),Je(function(r){var e=this;return t(n,function(t){return In(t,e,r)})})})}function Vu(t,n){var r=(n=n===u?" ":su(n)).length;if(r<2)return r?Xe(n,t):n;var e=Xe(n,_n(t/vr(n)));return cr(n)?xu(_r(e),0,t).join(""):e.slice(0,t)}function Ku(t){return function(n,r,i){return i&&"number"!=typeof i&&mi(n,r,i)&&(r=i=u),n=va(n),r===u?(r=n,n=0):r=va(r),function(t,n,r,u){for(var i=-1,o=br(_n((n-t)/(r||1)),0),a=e(o);o--;)a[u?o:++i]=t,t+=r;return a}(n,r,i=i===u?n<r?1:-1:va(i),t)}}function Zu(t){return function(n,r){return"string"==typeof n&&"string"==typeof r||(n=ya(n),r=ya(r)),t(n,r)}}function Gu(t,n,r,e,i,o,a,c,l,h){var p=8&n;n|=p?f:s,4&(n&=~(p?s:f))||(n&=-4);var v=[t,n,i,p?o:u,p?a:u,p?u:o,p?u:a,c,l,h],_=r.apply(u,v);return xi(t)&&$i(_,v),_.placeholder=e,Li(_,t,n)}function Hu(t){var n=kt[t];return function(t,r){if(t=ya(t),(r=null==r?0:mr(_a(r),292))&&wn(t)){var e=(ba(t)+"e").split("e");return+((e=(ba(n(e[0]+"e"+(+e[1]+r)))+"e").split("e"))[0]+"e"+(+e[1]-r))}return n(t)}}var Xu=Ir&&1/hr(new Ir([,-0]))[1]==p?function(t){return new Ir(t)}:fc;function Ju(t){return function(n){var r=_i(n);return r==O?fr(n):r==$?pr(n):function(t,n){return Bn(n,function(n){return[n,t[n]]})}(n,t(n))}}function Yu(t,n,r,o,p,v,_,g){var y=2&n;if(!y&&"function"!=typeof t)throw new $t(i);var d=o?o.length:0;if(d||(n&=-97,o=p=u),_=_===u?_:br(_a(_),0),g=g===u?g:_a(g),d-=p?p.length:0,n&s){var b=o,m=p;o=p=u}var w=y?u:oi(t),x=[t,n,r,o,p,b,m,v,_,g];if(w&&function(t,n){var r=t[1],e=n[1],u=r|e,i=u<131,o=e==l&&8==r||e==l&&r==h&&t[7].length<=n[8]||384==e&&n[7].length<=n[8]&&8==r;if(!i&&!o)return t;1&e&&(t[2]=n[2],u|=1&r?0:4);var c=n[3];if(c){var f=t[3];t[3]=f?Iu(f,c,n[4]):c,t[4]=f?lr(t[3],a):n[4]}(c=n[5])&&(f=t[5],t[5]=f?Su(f,c,n[6]):c,t[6]=f?lr(t[5],a):n[6]);(c=n[7])&&(t[7]=c);e&l&&(t[8]=null==t[8]?n[8]:mr(t[8],n[8]));null==t[9]&&(t[9]=n[9]);t[0]=n[0],t[1]=u}(x,w),t=x[0],n=x[1],r=x[2],o=x[3],p=x[4],!(g=x[9]=x[9]===u?y?0:t.length:br(x[9]-d,0))&&24&n&&(n&=-25),n&&1!=n)A=8==n||n==c?function(t,n,r){var i=Pu(t);return function o(){for(var a=arguments.length,c=e(a),f=a,s=ci(o);f--;)c[f]=arguments[f];var l=a<3&&c[0]!==s&&c[a-1]!==s?[]:lr(c,s);return(a-=l.length)<r?Gu(t,n,Du,o.placeholder,u,c,l,u,u,r-a):In(this&&this!==gn&&this instanceof o?i:t,this,c)}}(t,n,g):n!=f&&33!=n||p.length?Du.apply(u,x):function(t,n,r,u){var i=1&n,o=Pu(t);return function n(){for(var a=-1,c=arguments.length,f=-1,s=u.length,l=e(s+c),h=this&&this!==gn&&this instanceof n?o:t;++f<s;)l[f]=u[f];for(;c--;)l[f++]=arguments[++a];return In(h,i?r:this,l)}}(t,n,r,o);else var A=function(t,n,r){var e=1&n,u=Pu(t);return function n(){return(this&&this!==gn&&this instanceof n?u:t).apply(e?r:this,arguments)}}(t,n,r);return Li((w?nu:$i)(A,x),t,n)}function Qu(t,n,r,e){return t===u||Do(t,Lt[r])&&!Bt.call(e,r)?n:t}function ti(t,n,r,e,i,o){return na(t)&&na(n)&&(o.set(n,t),Me(t,n,u,ti,o),o.delete(n)),t}function ni(t){return ia(t)?u:t}function ri(t,n,r,e,i,o){var a=1&r,c=t.length,f=n.length;if(c!=f&&!(a&&f>c))return!1;var s=o.get(t),l=o.get(n);if(s&&l)return s==n&&l==t;var h=-1,p=!0,v=2&r?new Hr:u;for(o.set(t,n),o.set(n,t);++h<c;){var _=t[h],g=n[h];if(e)var y=a?e(g,_,h,n,t,o):e(_,g,h,t,n,o);if(y!==u){if(y)continue;p=!1;break}if(v){if(!Nn(n,function(t,n){if(!rr(v,n)&&(_===t||i(_,t,r,e,o)))return v.push(n)})){p=!1;break}}else if(_!==g&&!i(_,g,r,e,o)){p=!1;break}}return o.delete(t),o.delete(n),p}function ei(t){return Ri(Ei(t,u,Vi),t+"")}function ui(t){return Oe(t,Ra,pi)}function ii(t){return Oe(t,La,vi)}var oi=Cr?function(t){return Cr.get(t)}:fc;function ai(t){for(var n=t.name+"",r=Rr[n],e=Bt.call(Rr,n)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==t)return u.name}return n}function ci(t){return(Bt.call(Dr,"placeholder")?Dr:t).placeholder}function fi(){var t=Dr.iteratee||ic;return t=t===ic?Be:t,arguments.length?t(arguments[0],arguments[1]):t}function si(t,n){var r,e,u=t.__data__;return("string"==(e=typeof(r=n))||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==r:null===r)?u["string"==typeof n?"string":"hash"]:u.map}function li(t){for(var n=Ra(t),r=n.length;r--;){var e=n[r],u=t[e];n[r]=[e,u,Oi(u)]}return n}function hi(t,n){var r=function(t,n){return null==t?u:t[n]}(t,n);return ze(r)?r:u}var pi=dn?function(t){return null==t?[]:(t=Et(t),Ln(dn(t),function(n){return Ht.call(t,n)}))}:gc,vi=dn?function(t){for(var n=[];t;)Un(n,pi(t)),t=Zt(t);return n}:gc,_i=ke;function gi(t,n,r){for(var e=-1,u=(n=mu(n,t)).length,i=!1;++e<u;){var o=Ui(n[e]);if(!(i=null!=t&&r(t,o)))break;t=t[o]}return i||++e!=u?i:!!(u=null==t?0:t.length)&&ta(u)&&bi(o,u)&&(Vo(t)||qo(t))}function yi(t){return"function"!=typeof t.constructor||ji(t)?{}:Fr(Zt(t))}function di(t){return Vo(t)||qo(t)||!!(Jt&&t&&t[Jt])}function bi(t,n){var r=typeof t;return!!(n=n??v)&&("number"==r||"symbol"!=r&&mt.test(t))&&t>-1&&t%1==0&&t<n}function mi(t,n,r){if(!na(r))return!1;var e=typeof n;return!!("number"==e?Zo(r)&&bi(n,r.length):"string"==e&&n in r)&&Do(r[n],t)}function wi(t,n){if(Vo(t))return!1;var r=typeof t;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=t&&!fa(t))||(rt.test(t)||!nt.test(t)||null!=n&&t in Et(n))}function xi(t){var n=ai(t),r=Dr[n];if("function"!=typeof r||!(n in Vr.prototype))return!1;if(t===r)return!0;var e=oi(r);return!!e&&t===e[0]}(Or&&_i(new Or(new ArrayBuffer(1)))!=z||kr&&_i(new kr)!=O||Er&&_i(Er.resolve())!=I||Ir&&_i(new Ir)!=$||Sr&&_i(new Sr)!=L)&&(_i=function(t){var n=ke(t),r=n==E?t.constructor:u,e=r?Pi(r):"";if(e)switch(e){case Lr:return z;case Tr:return O;case zr:return I;case Br:return $;case Ur:return L}return n});var Ai=Tt?Yo:yc;function ji(t){var n=t&&t.constructor;return t===("function"==typeof n&&n.prototype||Lt)}function Oi(t){return t==t&&!na(t)}function ki(t,n){return function(r){return null!=r&&(r[t]===n&&(n!==u||t in Et(r)))}}function Ei(t,n,r){return n=br(n===u?t.length-1:n,0),function(){for(var u=arguments,i=-1,o=br(u.length-n,0),a=e(o);++i<o;)a[i]=u[n+i];i=-1;for(var c=e(n+1);++i<n;)c[i]=u[i];return c[n]=r(a),In(t,this,c)}}function Ii(t,n){return n.length<2?t:je(t,uu(n,0,-1))}function Si(t,n){if(("constructor"!==n||"function"!=typeof t[n])&&"__proto__"!=n)return t[n]}var $i=Ti(nu),Ci=vn||function(t,n){return gn.setTimeout(t,n)},Ri=Ti(ru);function Li(t,n,r){var e=n+"";return Ri(t,function(t,n){var r=n.length;if(!r)return t;var e=r-1;return n[e]=(r>1?"& ":"")+n[e],n=n.join(r>2?", ":" "),t.replace(ct,"{\n/* [wrapped with "+n+"] */\n")}(e,function(t,n){return $n(y,function(r){var e="_."+r[0];n&r[1]&&!Tn(t,e)&&t.push(e)}),t.sort()}(function(t){var n=t.match(ft);return n?n[1].split(st):[]}(e),r)))}function Ti(t){var n=0,r=0;return function(){var e=wr(),i=16-(e-r);if(r=e,i>0){if(++n>=800)return arguments[0]}else n=0;return t.apply(u,arguments)}}function zi(t,n){var r=-1,e=t.length,i=e-1;for(n=n===u?e:n;++r<n;){var o=He(r,i),a=t[o];t[o]=t[r],t[r]=a}return t.length=n,t}var Bi=function(t){var n=zo(t,function(t){return 500===r.size&&r.clear(),t}),r=n.cache;return n}(function(t){var n=[];return 46===t.charCodeAt(0)&&n.push(""),t.replace(et,function(t,r,e,u){n.push(e?u.replace(pt,"$1"):r||t)}),n});function Ui(t){if("string"==typeof t||fa(t))return t;var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}function Pi(t){if(null!=t){try{return zt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function Wi(t){if(t instanceof Vr)return t.clone();var n=new qr(t.__wrapped__,t.__chain__);return n.__actions__=$u(t.__actions__),n.__index__=t.__index__,n.__values__=t.__values__,n}var Ni=Je(function(t,n){return Go(t)?he(t,de(n,1,Go,!0)):[]}),Di=Je(function(t,n){var r=Xi(n);return Go(r)&&(r=u),Go(t)?he(t,de(n,1,Go,!0),fi(r,2)):[]}),Fi=Je(function(t,n){var r=Xi(n);return Go(r)&&(r=u),Go(t)?he(t,de(n,1,Go,!0),u,r):[]});function Mi(t,n,r){var e=null==t?0:t.length;if(!e)return-1;var u=null==r?0:_a(r);return u<0&&(u=br(e+u,0)),Mn(t,fi(n,3),u)}function qi(t,n,r){var e=null==t?0:t.length;if(!e)return-1;var i=e-1;return r!==u&&(i=_a(r),i=r<0?br(e+i,0):mr(i,e-1)),Mn(t,fi(n,3),i,!0)}function Vi(t){return(null==t?0:t.length)?de(t,1):[]}function Ki(t){return t&&t.length?t[0]:u}var Zi=Je(function(t){var n=Bn(t,du);return n.length&&n[0]===t[0]?$e(n):[]}),Gi=Je(function(t){var n=Xi(t),r=Bn(t,du);return n===Xi(r)?n=u:r.pop(),r.length&&r[0]===t[0]?$e(r,fi(n,2)):[]}),Hi=Je(function(t){var n=Xi(t),r=Bn(t,du);return(n="function"==typeof n?n:u)&&r.pop(),r.length&&r[0]===t[0]?$e(r,u,n):[]});function Xi(t){var n=null==t?0:t.length;return n?t[n-1]:u}var Ji=Je(Yi);function Yi(t,n){return t&&t.length&&n&&n.length?Ze(t,n):t}var Qi=ei(function(t,n){var r=null==t?0:t.length,e=ae(t,n);return Ge(t,Bn(n,function(t){return bi(t,r)?+t:t}).sort(Eu)),e});function to(t){return null==t?t:jr.call(t)}var no=Je(function(t){return lu(de(t,1,Go,!0))}),ro=Je(function(t){var n=Xi(t);return Go(n)&&(n=u),lu(de(t,1,Go,!0),fi(n,2))}),eo=Je(function(t){var n=Xi(t);return n="function"==typeof n?n:u,lu(de(t,1,Go,!0),u,n)});function uo(t){if(!t||!t.length)return[];var n=0;return t=Ln(t,function(t){if(Go(t))return n=br(t.length,n),!0}),Yn(n,function(n){return Bn(t,Gn(n))})}function io(t,n){if(!t||!t.length)return[];var r=uo(t);return null==n?r:Bn(r,function(t){return In(n,u,t)})}var oo=Je(function(t,n){return Go(t)?he(t,n):[]}),ao=Je(function(t){return gu(Ln(t,Go))}),co=Je(function(t){var n=Xi(t);return Go(n)&&(n=u),gu(Ln(t,Go),fi(n,2))}),fo=Je(function(t){var n=Xi(t);return n="function"==typeof n?n:u,gu(Ln(t,Go),u,n)}),so=Je(uo);var lo=Je(function(t){var n=t.length,r=n>1?t[n-1]:u;return r="function"==typeof r?(t.pop(),r):u,io(t,r)});function ho(t){var n=Dr(t);return n.__chain__=!0,n}function po(t,n){return n(t)}var vo=ei(function(t){var n=t.length,r=n?t[0]:0,e=this.__wrapped__,i=function(n){return ae(n,t)};return!(n>1||this.__actions__.length)&&e instanceof Vr&&bi(r)?((e=e.slice(r,+r+(n?1:0))).__actions__.push({func:po,args:[i],thisArg:u}),new qr(e,this.__chain__).thru(function(t){return n&&!t.length&&t.push(u),t})):this.thru(i)});var _o=Ru(function(t,n,r){Bt.call(t,r)?++t[r]:oe(t,r,1)});var go=Wu(Mi),yo=Wu(qi);function bo(t,n){return(Vo(t)?$n:pe)(t,fi(n,3))}function mo(t,n){return(Vo(t)?Cn:ve)(t,fi(n,3))}var wo=Ru(function(t,n,r){Bt.call(t,r)?t[r].push(n):oe(t,r,[n])});var xo=Je(function(t,n,r){var u=-1,i="function"==typeof n,o=Zo(t)?e(t.length):[];return pe(t,function(t){o[++u]=i?In(n,t,r):Ce(t,n,r)}),o}),Ao=Ru(function(t,n,r){oe(t,r,n)});function jo(t,n){return(Vo(t)?Bn:Ne)(t,fi(n,3))}var Oo=Ru(function(t,n,r){t[r?0:1].push(n)},function(){return[[],[]]});var ko=Je(function(t,n){if(null==t)return[];var r=n.length;return r>1&&mi(t,n[0],n[1])?n=[]:r>2&&mi(n[0],n[1],n[2])&&(n=[n[0]]),Ve(t,de(n,1),[])}),Eo=ln||function(){return gn.Date.now()};function Io(t,n,r){return n=r?u:n,n=t&&null==n?t.length:n,Yu(t,l,u,u,u,u,n)}function So(t,n){var r;if("function"!=typeof n)throw new $t(i);return t=_a(t),function(){return--t>0&&(r=n.apply(this,arguments)),t<=1&&(n=u),r}}var $o=Je(function(t,n,r){var e=1;if(r.length){var u=lr(r,ci($o));e|=f}return Yu(t,e,n,r,u)}),Co=Je(function(t,n,r){var e=3;if(r.length){var u=lr(r,ci(Co));e|=f}return Yu(n,e,t,r,u)});function Ro(t,n,r){var e,o,a,c,f,s,l=0,h=!1,p=!1,v=!0;if("function"!=typeof t)throw new $t(i);function _(n){var r=e,i=o;return e=o=u,l=n,c=t.apply(i,r)}function g(t){var r=t-s;return s===u||r>=n||r<0||p&&t-l>=a}function y(){var t=Eo();if(g(t))return d(t);f=Ci(y,function(t){var r=n-(t-s);return p?mr(r,a-(t-l)):r}(t))}function d(t){return f=u,v&&e?_(t):(e=o=u,c)}function b(){var t=Eo(),r=g(t);if(e=arguments,o=this,s=t,r){if(f===u)return function(t){return l=t,f=Ci(y,n),h?_(t):c}(s);if(p)return Au(f),f=Ci(y,n),_(s)}return f===u&&(f=Ci(y,n)),c}return n=ya(n)||0,na(r)&&(h=!!r.leading,a=(p="maxWait"in r)?br(ya(r.maxWait)||0,n):a,v="trailing"in r?!!r.trailing:v),b.cancel=function(){f!==u&&Au(f),l=0,e=s=o=f=u},b.flush=function(){return f===u?c:d(Eo())},b}var Lo=Je(function(t,n){return le(t,1,n)}),To=Je(function(t,n,r){return le(t,ya(n)||0,r)});function zo(t,n){if("function"!=typeof t||null!=n&&"function"!=typeof n)throw new $t(i);var r=function(){var e=arguments,u=n?n.apply(this,e):e[0],i=r.cache;if(i.has(u))return i.get(u);var o=t.apply(this,e);return r.cache=i.set(u,o)||i,o};return r.cache=new(zo.Cache||Gr),r}function Bo(t){if("function"!=typeof t)throw new $t(i);return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2])}return!t.apply(this,n)}}zo.Cache=Gr;var Uo=wu(function(t,n){var r=(n=1==n.length&&Vo(n[0])?Bn(n[0],tr(fi())):Bn(de(n,1),tr(fi()))).length;return Je(function(e){for(var u=-1,i=mr(e.length,r);++u<i;)e[u]=n[u].call(this,e[u]);return In(t,this,e)})}),Po=Je(function(t,n){var r=lr(n,ci(Po));return Yu(t,f,u,n,r)}),Wo=Je(function(t,n){var r=lr(n,ci(Wo));return Yu(t,s,u,n,r)}),No=ei(function(t,n){return Yu(t,h,u,u,u,n)});function Do(t,n){return t===n||t!=t&&n!=n}var Fo=Zu(Ee),Mo=Zu(function(t,n){return t>=n}),qo=Re(function(){return arguments}())?Re:function(t){return ra(t)&&Bt.call(t,"callee")&&!Ht.call(t,"callee")},Vo=e.isArray,Ko=xn?tr(xn):function(t){return ra(t)&&ke(t)==T};function Zo(t){return null!=t&&ta(t.length)&&!Yo(t)}function Go(t){return ra(t)&&Zo(t)}var Ho=mn||yc,Xo=An?tr(An):function(t){return ra(t)&&ke(t)==w};function Jo(t){if(!ra(t))return!1;var n=ke(t);return n==x||"[object DOMException]"==n||"string"==typeof t.message&&"string"==typeof t.name&&!ia(t)}function Yo(t){if(!na(t))return!1;var n=ke(t);return n==A||n==j||"[object AsyncFunction]"==n||"[object Proxy]"==n}function Qo(t){return"number"==typeof t&&t==_a(t)}function ta(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=v}function na(t){var n=typeof t;return null!=t&&("object"==n||"function"==n)}function ra(t){return null!=t&&"object"==typeof t}var ea=jn?tr(jn):function(t){return ra(t)&&_i(t)==O};function ua(t){return"number"==typeof t||ra(t)&&ke(t)==k}function ia(t){if(!ra(t)||ke(t)!=E)return!1;var n=Zt(t);if(null===n)return!0;var r=Bt.call(n,"constructor")&&n.constructor;return"function"==typeof r&&r instanceof r&&zt.call(r)==Nt}var oa=On?tr(On):function(t){return ra(t)&&ke(t)==S};var aa=kn?tr(kn):function(t){return ra(t)&&_i(t)==$};function ca(t){return"string"==typeof t||!Vo(t)&&ra(t)&&ke(t)==C}function fa(t){return"symbol"==typeof t||ra(t)&&ke(t)==R}var sa=En?tr(En):function(t){return ra(t)&&ta(t.length)&&!!fn[ke(t)]};var la=Zu(We),ha=Zu(function(t,n){return t<=n});function pa(t){if(!t)return[];if(Zo(t))return ca(t)?_r(t):$u(t);if(Yt&&t[Yt])return function(t){for(var n,r=[];!(n=t.next()).done;)r.push(n.value);return r}(t[Yt]());var n=_i(t);return(n==O?fr:n==$?hr:Da)(t)}function va(t){return t?(t=ya(t))===p||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function _a(t){var n=va(t),r=n%1;return n==n?r?n-r:n:0}function ga(t){return t?ce(_a(t),0,g):0}function ya(t){if("number"==typeof t)return t;if(fa(t))return _;if(na(t)){var n="function"==typeof t.valueOf?t.valueOf():t;t=na(n)?n+"":n}if("string"!=typeof t)return 0===t?t:+t;t=Qn(t);var r=yt.test(t);return r||bt.test(t)?pn(t.slice(2),r?2:8):gt.test(t)?_:+t}function da(t){return Cu(t,La(t))}function ba(t){return null==t?"":su(t)}var ma=Lu(function(t,n){if(ji(n)||Zo(n))Cu(n,Ra(n),t);else for(var r in n)Bt.call(n,r)&&re(t,r,n[r])}),wa=Lu(function(t,n){Cu(n,La(n),t)}),xa=Lu(function(t,n,r,e){Cu(n,La(n),t,e)}),Aa=Lu(function(t,n,r,e){Cu(n,Ra(n),t,e)}),ja=ei(ae);var Oa=Je(function(t,n){t=Et(t);var r=-1,e=n.length,i=e>2?n[2]:u;for(i&&mi(n[0],n[1],i)&&(e=1);++r<e;)for(var o=n[r],a=La(o),c=-1,f=a.length;++c<f;){var s=a[c],l=t[s];(l===u||Do(l,Lt[s])&&!Bt.call(t,s))&&(t[s]=o[s])}return t}),ka=Je(function(t){return t.push(u,ti),In(za,u,t)});function Ea(t,n,r){var e=null==t?u:je(t,n);return e===u?r:e}function Ia(t,n){return null!=t&&gi(t,n,Se)}var Sa=Fu(function(t,n,r){null!=n&&"function"!=typeof n.toString&&(n=Wt.call(n)),t[n]=r},nc(uc)),$a=Fu(function(t,n,r){null!=n&&"function"!=typeof n.toString&&(n=Wt.call(n)),Bt.call(t,n)?t[n].push(r):t[n]=[r]},fi),Ca=Je(Ce);function Ra(t){return Zo(t)?Jr(t):Ue(t)}function La(t){return Zo(t)?Jr(t,!0):Pe(t)}var Ta=Lu(function(t,n,r){Me(t,n,r)}),za=Lu(function(t,n,r,e){Me(t,n,r,e)}),Ba=ei(function(t,n){var r={};if(null==t)return r;var e=!1;n=Bn(n,function(n){return n=mu(n,t),e||(e=n.length>1),n}),Cu(t,ii(t),r),e&&(r=fe(r,7,ni));for(var u=n.length;u--;)hu(r,n[u]);return r});var Ua=ei(function(t,n){return null==t?{}:function(t,n){return Ke(t,n,function(n,r){return Ia(t,r)})}(t,n)});function Pa(t,n){if(null==t)return{};var r=Bn(ii(t),function(t){return[t]});return n=fi(n),Ke(t,r,function(t,r){return n(t,r[0])})}var Wa=Ju(Ra),Na=Ju(La);function Da(t){return null==t?[]:nr(t,Ra(t))}var Fa=Uu(function(t,n,r){return n=n.toLowerCase(),t+(r?Ma(n):n)});function Ma(t){return Ja(ba(t).toLowerCase())}function qa(t){return(t=ba(t))&&t.replace(wt,ir).replace(nn,"")}var Va=Uu(function(t,n,r){return t+(r?"-":"")+n.toLowerCase()}),Ka=Uu(function(t,n,r){return t+(r?" ":"")+n.toLowerCase()}),Za=Bu("toLowerCase");var Ga=Uu(function(t,n,r){return t+(r?"_":"")+n.toLowerCase()});var Ha=Uu(function(t,n,r){return t+(r?" ":"")+Ja(n)});var Xa=Uu(function(t,n,r){return t+(r?" ":"")+n.toUpperCase()}),Ja=Bu("toUpperCase");function Ya(t,n,r){return t=ba(t),(n=r?u:n)===u?function(t){return on.test(t)}(t)?function(t){return t.match(en)||[]}(t):function(t){return t.match(lt)||[]}(t):t.match(n)||[]}var Qa=Je(function(t,n){try{return In(t,u,n)}catch(t){return Jo(t)?t:new jt(t)}}),tc=ei(function(t,n){return $n(n,function(n){n=Ui(n),oe(t,n,$o(t[n],t))}),t});function nc(t){return function(){return t}}var rc=Nu(),ec=Nu(!0);function uc(t){return t}function ic(t){return Be("function"==typeof t?t:fe(t,1))}var oc=Je(function(t,n){return function(r){return Ce(r,t,n)}}),ac=Je(function(t,n){return function(r){return Ce(t,r,n)}});function cc(t,n,r){var e=Ra(n),u=Ae(n,e);null!=r||na(n)&&(u.length||!e.length)||(r=n,n=t,t=this,u=Ae(n,Ra(n)));var i=!(na(r)&&"chain"in r&&!r.chain),o=Yo(t);return $n(u,function(r){var e=n[r];t[r]=e,o&&(t.prototype[r]=function(){var n=this.__chain__;if(i||n){var r=t(this.__wrapped__);return(r.__actions__=$u(this.__actions__)).push({func:e,args:arguments,thisArg:t}),r.__chain__=n,r}return e.apply(t,Un([this.value()],arguments))})}),t}function fc(){}var sc=qu(Bn),lc=qu(Rn),hc=qu(Nn);function pc(t){return wi(t)?Gn(Ui(t)):function(t){return function(n){return je(n,t)}}(t)}var vc=Ku(),_c=Ku(!0);function gc(){return[]}function yc(){return!1}var dc=Mu(function(t,n){return t+n},0),bc=Hu("ceil"),mc=Mu(function(t,n){return t/n},1),wc=Hu("floor");var xc,Ac=Mu(function(t,n){return t*n},1),jc=Hu("round"),Oc=Mu(function(t,n){return t-n},0);return Dr.after=function(t,n){if("function"!=typeof n)throw new $t(i);return t=_a(t),function(){if(--t<1)return n.apply(this,arguments)}},Dr.ary=Io,Dr.assign=ma,Dr.assignIn=wa,Dr.assignInWith=xa,Dr.assignWith=Aa,Dr.at=ja,Dr.before=So,Dr.bind=$o,Dr.bindAll=tc,Dr.bindKey=Co,Dr.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Vo(t)?t:[t]},Dr.chain=ho,Dr.chunk=function(t,n,r){n=(r?mi(t,n,r):n===u)?1:br(_a(n),0);var i=null==t?0:t.length;if(!i||n<1)return[];for(var o=0,a=0,c=e(_n(i/n));o<i;)c[a++]=uu(t,o,o+=n);return c},Dr.compact=function(t){for(var n=-1,r=null==t?0:t.length,e=0,u=[];++n<r;){var i=t[n];i&&(u[e++]=i)}return u},Dr.concat=function(){var t=arguments.length;if(!t)return[];for(var n=e(t-1),r=arguments[0],u=t;u--;)n[u-1]=arguments[u];return Un(Vo(r)?$u(r):[r],de(n,1))},Dr.cond=function(t){var n=null==t?0:t.length,r=fi();return t=n?Bn(t,function(t){if("function"!=typeof t[1])throw new $t(i);return[r(t[0]),t[1]]}):[],Je(function(r){for(var e=-1;++e<n;){var u=t[e];if(In(u[0],this,r))return In(u[1],this,r)}})},Dr.conforms=function(t){return function(t){var n=Ra(t);return function(r){return se(r,t,n)}}(fe(t,1))},Dr.constant=nc,Dr.countBy=_o,Dr.create=function(t,n){var r=Fr(t);return null==n?r:ie(r,n)},Dr.curry=function t(n,r,e){var i=Yu(n,8,u,u,u,u,u,r=e?u:r);return i.placeholder=t.placeholder,i},Dr.curryRight=function t(n,r,e){var i=Yu(n,c,u,u,u,u,u,r=e?u:r);return i.placeholder=t.placeholder,i},Dr.debounce=Ro,Dr.defaults=Oa,Dr.defaultsDeep=ka,Dr.defer=Lo,Dr.delay=To,Dr.difference=Ni,Dr.differenceBy=Di,Dr.differenceWith=Fi,Dr.drop=function(t,n,r){var e=null==t?0:t.length;return e?uu(t,(n=r||n===u?1:_a(n))<0?0:n,e):[]},Dr.dropRight=function(t,n,r){var e=null==t?0:t.length;return e?uu(t,0,(n=e-(n=r||n===u?1:_a(n)))<0?0:n):[]},Dr.dropRightWhile=function(t,n){return t&&t.length?vu(t,fi(n,3),!0,!0):[]},Dr.dropWhile=function(t,n){return t&&t.length?vu(t,fi(n,3),!0):[]},Dr.fill=function(t,n,r,e){var i=null==t?0:t.length;return i?(r&&"number"!=typeof r&&mi(t,n,r)&&(r=0,e=i),function(t,n,r,e){var i=t.length;for((r=_a(r))<0&&(r=-r>i?0:i+r),(e=e===u||e>i?i:_a(e))<0&&(e+=i),e=r>e?0:ga(e);r<e;)t[r++]=n;return t}(t,n,r,e)):[]},Dr.filter=function(t,n){return(Vo(t)?Ln:ye)(t,fi(n,3))},Dr.flatMap=function(t,n){return de(jo(t,n),1)},Dr.flatMapDeep=function(t,n){return de(jo(t,n),p)},Dr.flatMapDepth=function(t,n,r){return r=r===u?1:_a(r),de(jo(t,n),r)},Dr.flatten=Vi,Dr.flattenDeep=function(t){return(null==t?0:t.length)?de(t,p):[]},Dr.flattenDepth=function(t,n){return(null==t?0:t.length)?de(t,n=n===u?1:_a(n)):[]},Dr.flip=function(t){return Yu(t,512)},Dr.flow=rc,Dr.flowRight=ec,Dr.fromPairs=function(t){for(var n=-1,r=null==t?0:t.length,e={};++n<r;){var u=t[n];oe(e,u[0],u[1])}return e},Dr.functions=function(t){return null==t?[]:Ae(t,Ra(t))},Dr.functionsIn=function(t){return null==t?[]:Ae(t,La(t))},Dr.groupBy=wo,Dr.initial=function(t){return(null==t?0:t.length)?uu(t,0,-1):[]},Dr.intersection=Zi,Dr.intersectionBy=Gi,Dr.intersectionWith=Hi,Dr.invert=Sa,Dr.invertBy=$a,Dr.invokeMap=xo,Dr.iteratee=ic,Dr.keyBy=Ao,Dr.keys=Ra,Dr.keysIn=La,Dr.map=jo,Dr.mapKeys=function(t,n){var r={};return n=fi(n,3),we(t,function(t,e,u){oe(r,n(t,e,u),t)}),r},Dr.mapValues=function(t,n){var r={};return n=fi(n,3),we(t,function(t,e,u){oe(r,e,n(t,e,u))}),r},Dr.matches=function(t){return De(fe(t,1))},Dr.matchesProperty=function(t,n){return Fe(t,fe(n,1))},Dr.memoize=zo,Dr.merge=Ta,Dr.mergeWith=za,Dr.method=oc,Dr.methodOf=ac,Dr.mixin=cc,Dr.negate=Bo,Dr.nthArg=function(t){return t=_a(t),Je(function(n){return qe(n,t)})},Dr.omit=Ba,Dr.omitBy=function(t,n){return Pa(t,Bo(fi(n)))},Dr.once=function(t){return So(2,t)},Dr.orderBy=function(t,n,r,e){return null==t?[]:(Vo(n)||(n=null==n?[]:[n]),Vo(r=e?u:r)||(r=null==r?[]:[r]),Ve(t,n,r))},Dr.over=sc,Dr.overArgs=Uo,Dr.overEvery=lc,Dr.overSome=hc,Dr.partial=Po,Dr.partialRight=Wo,Dr.partition=Oo,Dr.pick=Ua,Dr.pickBy=Pa,Dr.property=pc,Dr.propertyOf=function(t){return function(n){return null==t?u:je(t,n)}},Dr.pull=Ji,Dr.pullAll=Yi,Dr.pullAllBy=function(t,n,r){return t&&t.length&&n&&n.length?Ze(t,n,fi(r,2)):t},Dr.pullAllWith=function(t,n,r){return t&&t.length&&n&&n.length?Ze(t,n,u,r):t},Dr.pullAt=Qi,Dr.range=vc,Dr.rangeRight=_c,Dr.rearg=No,Dr.reject=function(t,n){return(Vo(t)?Ln:ye)(t,Bo(fi(n,3)))},Dr.remove=function(t,n){var r=[];if(!t||!t.length)return r;var e=-1,u=[],i=t.length;for(n=fi(n,3);++e<i;){var o=t[e];n(o,e,t)&&(r.push(o),u.push(e))}return Ge(t,u),r},Dr.rest=function(t,n){if("function"!=typeof t)throw new $t(i);return Je(t,n=n===u?n:_a(n))},Dr.reverse=to,Dr.sampleSize=function(t,n,r){return n=(r?mi(t,n,r):n===u)?1:_a(n),(Vo(t)?Qr:Qe)(t,n)},Dr.set=function(t,n,r){return null==t?t:tu(t,n,r)},Dr.setWith=function(t,n,r,e){return e="function"==typeof e?e:u,null==t?t:tu(t,n,r,e)},Dr.shuffle=function(t){return(Vo(t)?te:eu)(t)},Dr.slice=function(t,n,r){var e=null==t?0:t.length;return e?(r&&"number"!=typeof r&&mi(t,n,r)?(n=0,r=e):(n=null==n?0:_a(n),r=r===u?e:_a(r)),uu(t,n,r)):[]},Dr.sortBy=ko,Dr.sortedUniq=function(t){return t&&t.length?cu(t):[]},Dr.sortedUniqBy=function(t,n){return t&&t.length?cu(t,fi(n,2)):[]},Dr.split=function(t,n,r){return r&&"number"!=typeof r&&mi(t,n,r)&&(n=r=u),(r=r===u?g:r>>>0)?(t=ba(t))&&("string"==typeof n||null!=n&&!oa(n))&&!(n=su(n))&&cr(t)?xu(_r(t),0,r):t.split(n,r):[]},Dr.spread=function(t,n){if("function"!=typeof t)throw new $t(i);return n=null==n?0:br(_a(n),0),Je(function(r){var e=r[n],u=xu(r,0,n);return e&&Un(u,e),In(t,this,u)})},Dr.tail=function(t){var n=null==t?0:t.length;return n?uu(t,1,n):[]},Dr.take=function(t,n,r){return t&&t.length?uu(t,0,(n=r||n===u?1:_a(n))<0?0:n):[]},Dr.takeRight=function(t,n,r){var e=null==t?0:t.length;return e?uu(t,(n=e-(n=r||n===u?1:_a(n)))<0?0:n,e):[]},Dr.takeRightWhile=function(t,n){return t&&t.length?vu(t,fi(n,3),!1,!0):[]},Dr.takeWhile=function(t,n){return t&&t.length?vu(t,fi(n,3)):[]},Dr.tap=function(t,n){return n(t),t},Dr.throttle=function(t,n,r){var e=!0,u=!0;if("function"!=typeof t)throw new $t(i);return na(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),Ro(t,n,{leading:e,maxWait:n,trailing:u})},Dr.thru=po,Dr.toArray=pa,Dr.toPairs=Wa,Dr.toPairsIn=Na,Dr.toPath=function(t){return Vo(t)?Bn(t,Ui):fa(t)?[t]:$u(Bi(ba(t)))},Dr.toPlainObject=da,Dr.transform=function(t,n,r){var e=Vo(t),u=e||Ho(t)||sa(t);if(n=fi(n,4),null==r){var i=t&&t.constructor;r=u?e?new i:[]:na(t)&&Yo(i)?Fr(Zt(t)):{}}return(u?$n:we)(t,function(t,e,u){return n(r,t,e,u)}),r},Dr.unary=function(t){return Io(t,1)},Dr.union=no,Dr.unionBy=ro,Dr.unionWith=eo,Dr.uniq=function(t){return t&&t.length?lu(t):[]},Dr.uniqBy=function(t,n){return t&&t.length?lu(t,fi(n,2)):[]},Dr.uniqWith=function(t,n){return n="function"==typeof n?n:u,t&&t.length?lu(t,u,n):[]},Dr.unset=function(t,n){return null==t||hu(t,n)},Dr.unzip=uo,Dr.unzipWith=io,Dr.update=function(t,n,r){return null==t?t:pu(t,n,bu(r))},Dr.updateWith=function(t,n,r,e){return e="function"==typeof e?e:u,null==t?t:pu(t,n,bu(r),e)},Dr.values=Da,Dr.valuesIn=function(t){return null==t?[]:nr(t,La(t))},Dr.without=oo,Dr.words=Ya,Dr.wrap=function(t,n){return Po(bu(n),t)},Dr.xor=ao,Dr.xorBy=co,Dr.xorWith=fo,Dr.zip=so,Dr.zipObject=function(t,n){return yu(t||[],n||[],re)},Dr.zipObjectDeep=function(t,n){return yu(t||[],n||[],tu)},Dr.zipWith=lo,Dr.entries=Wa,Dr.entriesIn=Na,Dr.extend=wa,Dr.extendWith=xa,cc(Dr,Dr),Dr.add=dc,Dr.attempt=Qa,Dr.camelCase=Fa,Dr.capitalize=Ma,Dr.ceil=bc,Dr.clamp=function(t,n,r){return r===u&&(r=n,n=u),r!==u&&(r=(r=ya(r))==r?r:0),n!==u&&(n=(n=ya(n))==n?n:0),ce(ya(t),n,r)},Dr.clone=function(t){return fe(t,4)},Dr.cloneDeep=function(t){return fe(t,5)},Dr.cloneDeepWith=function(t,n){return fe(t,5,n="function"==typeof n?n:u)},Dr.cloneWith=function(t,n){return fe(t,4,n="function"==typeof n?n:u)},Dr.conformsTo=function(t,n){return null==n||se(t,n,Ra(n))},Dr.deburr=qa,Dr.defaultTo=function(t,n){return null==t||t!=t?n:t},Dr.divide=mc,Dr.endsWith=function(t,n,r){t=ba(t),n=su(n);var e=t.length,i=r=r===u?e:ce(_a(r),0,e);return(r-=n.length)>=0&&t.slice(r,i)==n},Dr.eq=Do,Dr.escape=function(t){return(t=ba(t))&&J.test(t)?t.replace(H,or):t},Dr.escapeRegExp=function(t){return(t=ba(t))&&it.test(t)?t.replace(ut,"\\$&"):t},Dr.every=function(t,n,r){var e=Vo(t)?Rn:_e;return r&&mi(t,n,r)&&(n=u),e(t,fi(n,3))},Dr.find=go,Dr.findIndex=Mi,Dr.findKey=function(t,n){return Fn(t,fi(n,3),we)},Dr.findLast=yo,Dr.findLastIndex=qi,Dr.findLastKey=function(t,n){return Fn(t,fi(n,3),xe)},Dr.floor=wc,Dr.forEach=bo,Dr.forEachRight=mo,Dr.forIn=function(t,n){return null==t?t:be(t,fi(n,3),La)},Dr.forInRight=function(t,n){return null==t?t:me(t,fi(n,3),La)},Dr.forOwn=function(t,n){return t&&we(t,fi(n,3))},Dr.forOwnRight=function(t,n){return t&&xe(t,fi(n,3))},Dr.get=Ea,Dr.gt=Fo,Dr.gte=Mo,Dr.has=function(t,n){return null!=t&&gi(t,n,Ie)},Dr.hasIn=Ia,Dr.head=Ki,Dr.identity=uc,Dr.includes=function(t,n,r,e){t=Zo(t)?t:Da(t),r=r&&!e?_a(r):0;var u=t.length;return r<0&&(r=br(u+r,0)),ca(t)?r<=u&&t.indexOf(n,r)>-1:!!u&&qn(t,n,r)>-1},Dr.indexOf=function(t,n,r){var e=null==t?0:t.length;if(!e)return-1;var u=null==r?0:_a(r);return u<0&&(u=br(e+u,0)),qn(t,n,u)},Dr.inRange=function(t,n,r){return n=va(n),r===u?(r=n,n=0):r=va(r),function(t,n,r){return t>=mr(n,r)&&t<br(n,r)}(t=ya(t),n,r)},Dr.invoke=Ca,Dr.isArguments=qo,Dr.isArray=Vo,Dr.isArrayBuffer=Ko,Dr.isArrayLike=Zo,Dr.isArrayLikeObject=Go,Dr.isBoolean=function(t){return!0===t||!1===t||ra(t)&&ke(t)==m},Dr.isBuffer=Ho,Dr.isDate=Xo,Dr.isElement=function(t){return ra(t)&&1===t.nodeType&&!ia(t)},Dr.isEmpty=function(t){if(null==t)return!0;if(Zo(t)&&(Vo(t)||"string"==typeof t||"function"==typeof t.splice||Ho(t)||sa(t)||qo(t)))return!t.length;var n=_i(t);if(n==O||n==$)return!t.size;if(ji(t))return!Ue(t).length;for(var r in t)if(Bt.call(t,r))return!1;return!0},Dr.isEqual=function(t,n){return Le(t,n)},Dr.isEqualWith=function(t,n,r){var e=(r="function"==typeof r?r:u)?r(t,n):u;return e===u?Le(t,n,u,r):!!e},Dr.isError=Jo,Dr.isFinite=function(t){return"number"==typeof t&&wn(t)},Dr.isFunction=Yo,Dr.isInteger=Qo,Dr.isLength=ta,Dr.isMap=ea,Dr.isMatch=function(t,n){return t===n||Te(t,n,li(n))},Dr.isMatchWith=function(t,n,r){return r="function"==typeof r?r:u,Te(t,n,li(n),r)},Dr.isNaN=function(t){return ua(t)&&t!=+t},Dr.isNative=function(t){if(Ai(t))throw new jt("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return ze(t)},Dr.isNil=function(t){return null==t},Dr.isNull=function(t){return null===t},Dr.isNumber=ua,Dr.isObject=na,Dr.isObjectLike=ra,Dr.isPlainObject=ia,Dr.isRegExp=oa,Dr.isSafeInteger=function(t){return Qo(t)&&t>=-9007199254740991&&t<=v},Dr.isSet=aa,Dr.isString=ca,Dr.isSymbol=fa,Dr.isTypedArray=sa,Dr.isUndefined=function(t){return t===u},Dr.isWeakMap=function(t){return ra(t)&&_i(t)==L},Dr.isWeakSet=function(t){return ra(t)&&"[object WeakSet]"==ke(t)},Dr.join=function(t,n){return null==t?"":Dn.call(t,n)},Dr.kebabCase=Va,Dr.last=Xi,Dr.lastIndexOf=function(t,n,r){var e=null==t?0:t.length;if(!e)return-1;var i=e;return r!==u&&(i=(i=_a(r))<0?br(e+i,0):mr(i,e-1)),n==n?function(t,n,r){for(var e=r+1;e--;)if(t[e]===n)return e;return e}(t,n,i):Mn(t,Kn,i,!0)},Dr.lowerCase=Ka,Dr.lowerFirst=Za,Dr.lt=la,Dr.lte=ha,Dr.max=function(t){return t&&t.length?ge(t,uc,Ee):u},Dr.maxBy=function(t,n){return t&&t.length?ge(t,fi(n,2),Ee):u},Dr.mean=function(t){return Zn(t,uc)},Dr.meanBy=function(t,n){return Zn(t,fi(n,2))},Dr.min=function(t){return t&&t.length?ge(t,uc,We):u},Dr.minBy=function(t,n){return t&&t.length?ge(t,fi(n,2),We):u},Dr.stubArray=gc,Dr.stubFalse=yc,Dr.stubObject=function(){return{}},Dr.stubString=function(){return""},Dr.stubTrue=function(){return!0},Dr.multiply=Ac,Dr.nth=function(t,n){return t&&t.length?qe(t,_a(n)):u},Dr.noConflict=function(){return gn._===this&&(gn._=Dt),this},Dr.noop=fc,Dr.now=Eo,Dr.pad=function(t,n,r){t=ba(t);var e=(n=_a(n))?vr(t):0;if(!n||e>=n)return t;var u=(n-e)/2;return Vu(yn(u),r)+t+Vu(_n(u),r)},Dr.padEnd=function(t,n,r){t=ba(t);var e=(n=_a(n))?vr(t):0;return n&&e<n?t+Vu(n-e,r):t},Dr.padStart=function(t,n,r){t=ba(t);var e=(n=_a(n))?vr(t):0;return n&&e<n?Vu(n-e,r)+t:t},Dr.parseInt=function(t,n,r){return r||null==n?n=0:n&&(n=+n),xr(ba(t).replace(ot,""),n||0)},Dr.random=function(t,n,r){if(r&&"boolean"!=typeof r&&mi(t,n,r)&&(n=r=u),r===u&&("boolean"==typeof n?(r=n,n=u):"boolean"==typeof t&&(r=t,t=u)),t===u&&n===u?(t=0,n=1):(t=va(t),n===u?(n=t,t=0):n=va(n)),t>n){var e=t;t=n,n=e}if(r||t%1||n%1){var i=Ar();return mr(t+i*(n-t+hn("1e-"+((i+"").length-1))),n)}return He(t,n)},Dr.reduce=function(t,n,r){var e=Vo(t)?Pn:Xn,u=arguments.length<3;return e(t,fi(n,4),r,u,pe)},Dr.reduceRight=function(t,n,r){var e=Vo(t)?Wn:Xn,u=arguments.length<3;return e(t,fi(n,4),r,u,ve)},Dr.repeat=function(t,n,r){return n=(r?mi(t,n,r):n===u)?1:_a(n),Xe(ba(t),n)},Dr.replace=function(){var t=arguments,n=ba(t[0]);return t.length<3?n:n.replace(t[1],t[2])},Dr.result=function(t,n,r){var e=-1,i=(n=mu(n,t)).length;for(i||(i=1,t=u);++e<i;){var o=null==t?u:t[Ui(n[e])];o===u&&(e=i,o=r),t=Yo(o)?o.call(t):o}return t},Dr.round=jc,Dr.runInContext=t,Dr.sample=function(t){return(Vo(t)?Yr:Ye)(t)},Dr.size=function(t){if(null==t)return 0;if(Zo(t))return ca(t)?vr(t):t.length;var n=_i(t);return n==O||n==$?t.size:Ue(t).length},Dr.snakeCase=Ga,Dr.some=function(t,n,r){var e=Vo(t)?Nn:iu;return r&&mi(t,n,r)&&(n=u),e(t,fi(n,3))},Dr.sortedIndex=function(t,n){return ou(t,n)},Dr.sortedIndexBy=function(t,n,r){return au(t,n,fi(r,2))},Dr.sortedIndexOf=function(t,n){var r=null==t?0:t.length;if(r){var e=ou(t,n);if(e<r&&Do(t[e],n))return e}return-1},Dr.sortedLastIndex=function(t,n){return ou(t,n,!0)},Dr.sortedLastIndexBy=function(t,n,r){return au(t,n,fi(r,2),!0)},Dr.sortedLastIndexOf=function(t,n){if(null==t?0:t.length){var r=ou(t,n,!0)-1;if(Do(t[r],n))return r}return-1},Dr.startCase=Ha,Dr.startsWith=function(t,n,r){return t=ba(t),r=null==r?0:ce(_a(r),0,t.length),n=su(n),t.slice(r,r+n.length)==n},Dr.subtract=Oc,Dr.sum=function(t){return t&&t.length?Jn(t,uc):0},Dr.sumBy=function(t,n){return t&&t.length?Jn(t,fi(n,2)):0},Dr.template=function(t,n,r){var e=Dr.templateSettings;r&&mi(t,n,r)&&(n=u),t=ba(t),n=Aa({},n,e,Qu);var i=Aa({},n.imports,e.imports,Qu),o=Ra(i),a=nr(i,o);$n(o,function(t){if(ht.test(t))throw new jt("Invalid `imports` option passed into `_.template`")});var c,f,s=0,l=n.interpolate||xt,h="__p += '",p=It((n.escape||xt).source+"|"+l.source+"|"+(l===tt?vt:xt).source+"|"+(n.evaluate||xt).source+"|$","g"),v="//# sourceURL="+(Bt.call(n,"sourceURL")?(n.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++cn+"]")+"\n";t.replace(p,function(n,r,e,u,i,o){return e||(e=u),h+=t.slice(s,o).replace(At,ar),r&&(c=!0,h+="' +\n__e("+r+") +\n'"),i&&(f=!0,h+="';\n"+i+";\n__p += '"),e&&(h+="' +\n((__t = ("+e+")) == null ? '' : __t) +\n'"),s=o+n.length,n}),h+="';\n";var _=Bt.call(n,"variable")&&n.variable;if(_){if(ht.test(_))throw new jt("Invalid `variable` option passed into `_.template`")}else h="with (obj) {\n"+h+"\n}\n";h=(f?h.replace(V,""):h).replace(K,"$1").replace(Z,"$1;"),h="function("+(_||"obj")+") {\n"+(_?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(c?", __e = _.escape":"")+(f?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+h+"return __p\n}";var g=Qa(function(){return Ot(o,v+"return "+h).apply(u,a)});if(g.source=h,Jo(g))throw g;return g},Dr.times=function(t,n){if((t=_a(t))<1||t>v)return[];var r=g,e=mr(t,g);n=fi(n),t-=g;for(var u=Yn(e,n);++r<t;)n(r);return u},Dr.toFinite=va,Dr.toInteger=_a,Dr.toLength=ga,Dr.toLower=function(t){return ba(t).toLowerCase()},Dr.toNumber=ya,Dr.toSafeInteger=function(t){return t?ce(_a(t),-9007199254740991,v):0===t?t:0},Dr.toString=ba,Dr.toUpper=function(t){return ba(t).toUpperCase()},Dr.trim=function(t,n,r){if((t=ba(t))&&(r||n===u))return Qn(t);if(!t||!(n=su(n)))return t;var e=_r(t),i=_r(n);return xu(e,er(e,i),ur(e,i)+1).join("")},Dr.trimEnd=function(t,n,r){if((t=ba(t))&&(r||n===u))return t.slice(0,gr(t)+1);if(!t||!(n=su(n)))return t;var e=_r(t);return xu(e,0,ur(e,_r(n))+1).join("")},Dr.trimStart=function(t,n,r){if((t=ba(t))&&(r||n===u))return t.replace(ot,"");if(!t||!(n=su(n)))return t;var e=_r(t);return xu(e,er(e,_r(n))).join("")},Dr.truncate=function(t,n){var r=30,e="...";if(na(n)){var i="separator"in n?n.separator:i;r="length"in n?_a(n.length):r,e="omission"in n?su(n.omission):e}var o=(t=ba(t)).length;if(cr(t)){var a=_r(t);o=a.length}if(r>=o)return t;var c=r-vr(e);if(c<1)return e;var f=a?xu(a,0,c).join(""):t.slice(0,c);if(i===u)return f+e;if(a&&(c+=f.length-c),oa(i)){if(t.slice(c).search(i)){var s,l=f;for(i.global||(i=It(i.source,ba(_t.exec(i))+"g")),i.lastIndex=0;s=i.exec(l);)var h=s.index;f=f.slice(0,h===u?c:h)}}else if(t.indexOf(su(i),c)!=c){var p=f.lastIndexOf(i);p>-1&&(f=f.slice(0,p))}return f+e},Dr.unescape=function(t){return(t=ba(t))&&X.test(t)?t.replace(G,yr):t},Dr.uniqueId=function(t){var n=++Ut;return ba(t)+n},Dr.upperCase=Xa,Dr.upperFirst=Ja,Dr.each=bo,Dr.eachRight=mo,Dr.first=Ki,cc(Dr,(xc={},we(Dr,function(t,n){Bt.call(Dr.prototype,n)||(xc[n]=t)}),xc),{chain:!1}),Dr.VERSION="4.18.1",$n(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){Dr[t].placeholder=Dr}),$n(["drop","take"],function(t,n){Vr.prototype[t]=function(r){r=r===u?1:br(_a(r),0);var e=this.__filtered__&&!n?new Vr(this):this.clone();return e.__filtered__?e.__takeCount__=mr(r,e.__takeCount__):e.__views__.push({size:mr(r,g),type:t+(e.__dir__<0?"Right":"")}),e},Vr.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse()}}),$n(["filter","map","takeWhile"],function(t,n){var r=n+1,e=1==r||3==r;Vr.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:fi(t,3),type:r}),n.__filtered__=n.__filtered__||e,n}}),$n(["head","last"],function(t,n){var r="take"+(n?"Right":"");Vr.prototype[t]=function(){return this[r](1).value()[0]}}),$n(["initial","tail"],function(t,n){var r="drop"+(n?"":"Right");Vr.prototype[t]=function(){return this.__filtered__?new Vr(this):this[r](1)}}),Vr.prototype.compact=function(){return this.filter(uc)},Vr.prototype.find=function(t){return this.filter(t).head()},Vr.prototype.findLast=function(t){return this.reverse().find(t)},Vr.prototype.invokeMap=Je(function(t,n){return"function"==typeof t?new Vr(this):this.map(function(r){return Ce(r,t,n)})}),Vr.prototype.reject=function(t){return this.filter(Bo(fi(t)))},Vr.prototype.slice=function(t,n){t=_a(t);var r=this;return r.__filtered__&&(t>0||n<0)?new Vr(r):(t<0?r=r.takeRight(-t):t&&(r=r.drop(t)),n!==u&&(r=(n=_a(n))<0?r.dropRight(-n):r.take(n-t)),r)},Vr.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Vr.prototype.toArray=function(){return this.take(g)},we(Vr.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),e=/^(?:head|last)$/.test(n),i=Dr[e?"take"+("last"==n?"Right":""):n],o=e||/^find/.test(n);i&&(Dr.prototype[n]=function(){var n=this.__wrapped__,a=e?[1]:arguments,c=n instanceof Vr,f=a[0],s=c||Vo(n),l=function(t){var n=i.apply(Dr,Un([t],a));return e&&h?n[0]:n};s&&r&&"function"==typeof f&&1!=f.length&&(c=s=!1);var h=this.__chain__,p=!!this.__actions__.length,v=o&&!h,_=c&&!p;if(!o&&s){n=_?n:new Vr(this);var g=t.apply(n,a);return g.__actions__.push({func:po,args:[l],thisArg:u}),new qr(g,h)}return v&&_?t.apply(this,a):(g=this.thru(l),v?e?g.value()[0]:g.value():g)})}),$n(["pop","push","shift","sort","splice","unshift"],function(t){var n=Ct[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",e=/^(?:pop|shift)$/.test(t);Dr.prototype[t]=function(){var t=arguments;if(e&&!this.__chain__){var u=this.value();return n.apply(Vo(u)?u:[],t)}return this[r](function(r){return n.apply(Vo(r)?r:[],t)})}}),we(Vr.prototype,function(t,n){var r=Dr[n];if(r){var e=r.name+"";Bt.call(Rr,e)||(Rr[e]=[]),Rr[e].push({name:n,func:r})}}),Rr[Du(u,2).name]=[{name:"wrapper",func:u}],Vr.prototype.clone=function(){var t=new Vr(this.__wrapped__);return t.__actions__=$u(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=$u(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=$u(this.__views__),t},Vr.prototype.reverse=function(){if(this.__filtered__){var t=new Vr(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Vr.prototype.value=function(){var t=this.__wrapped__.value(),n=this.__dir__,r=Vo(t),e=n<0,u=r?t.length:0,i=function(t,n,r){var e=-1,u=r.length;for(;++e<u;){var i=r[e],o=i.size;switch(i.type){case"drop":t+=o;break;case"dropRight":n-=o;break;case"take":n=mr(n,t+o);break;case"takeRight":t=br(t,n-o)}}return{start:t,end:n}}(0,u,this.__views__),o=i.start,a=i.end,c=a-o,f=e?a:o-1,s=this.__iteratees__,l=s.length,h=0,p=mr(c,this.__takeCount__);if(!r||!e&&u==c&&p==c)return _u(t,this.__actions__);var v=[];t:for(;c--&&h<p;){for(var _=-1,g=t[f+=n];++_<l;){var y=s[_],d=y.iteratee,b=y.type,m=d(g);if(2==b)g=m;else if(!m){if(1==b)continue t;break t}}v[h++]=g}return v},Dr.prototype.at=vo,Dr.prototype.chain=function(){return ho(this)},Dr.prototype.commit=function(){return new qr(this.value(),this.__chain__)},Dr.prototype.next=function(){this.__values__===u&&(this.__values__=pa(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?u:this.__values__[this.__index__++]}},Dr.prototype.plant=function(t){for(var n,r=this;r instanceof Mr;){var e=Wi(r);e.__index__=0,e.__values__=u,n?i.__wrapped__=e:n=e;var i=e;r=r.__wrapped__}return i.__wrapped__=t,n},Dr.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Vr){var n=t;return this.__actions__.length&&(n=new Vr(this)),(n=n.reverse()).__actions__.push({func:po,args:[to],thisArg:u}),new qr(n,this.__chain__)}return this.thru(to)},Dr.prototype.toJSON=Dr.prototype.valueOf=Dr.prototype.value=function(){return _u(this.__wrapped__,this.__actions__)},Dr.prototype.first=Dr.prototype.head,Yt&&(Dr.prototype[Yt]=function(){return this}),Dr}();gn._=dr,(e=function(){return dr}.call(n,r,n,t))===u||(t.exports=e)}.call(this)}};const n={};function r(e){const u=n[e];if(void 0!==u)return u.exports;const i=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.d=(t,n)=>{if(Array.isArray(n))for(var e=0;e<n.length;){var u=n[e++],i=n[e++];r.o(t,u)?0===i&&e++:0===i?Object.defineProperty(t,u,{enumerable:!0,value:n[e++]}):Object.defineProperty(t,u,{enumerable:!0,get:i})}else for(var u in n)r.o(n,u)&&!r.o(t,u)&&Object.defineProperty(t,u,{enumerable:!0,get:n[u]})},r.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),r.r=t=>{Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t);let e={};(()=>{"use strict";r.r(e),r.d(e,{onTransaction:()=>rn});class t extends TypeError{constructor(t,n){let r;const{message:e,explanation:u,...i}=t,{path:o}=t,a=0===o.length?e:`At path: ${o.join(".")} -- ${e}`;super(u??a),null!=u&&(this.cause=a),Object.assign(this,i),this.name=this.constructor.name,this.failures=()=>r??(r=[t,...n()])}}function n(t){return"object"==typeof t&&null!==t}function u(t){return"symbol"==typeof t?t.toString():"string"==typeof t?JSON.stringify(t):`${t}`}function i(t,n,r,e){if(!0===t)return;!1===t?t={}:"string"==typeof t&&(t={message:t});const{path:i,branch:o}=n,{type:a}=r,{refinement:c,message:f=`Expected a value of type \`${a}\`${c?` with refinement \`${c}\``:""}, but received: \`${u(e)}\``}=t;return{value:e,type:a,refinement:c,key:i[i.length-1],path:i,branch:o,...t,message:f}}function*o(t,r,e,u){(function(t){return n(t)&&"function"==typeof t[Symbol.iterator]})(t)||(t=[t]);for(const n of t){const t=i(n,r,e,u);t&&(yield t)}}function*a(t,r,e={}){const{path:u=[],branch:i=[t],coerce:o=!1,mask:c=!1}=e,f={path:u,branch:i};if(o&&(t=r.coercer(t,f),c&&"type"!==r.type&&n(r.schema)&&n(t)&&!Array.isArray(t)))for(const n in t)void 0===r.schema[n]&&delete t[n];let s="valid";for(const n of r.validator(t,f))n.explanation=e.message,s="not_valid",yield[n,void 0];for(let[l,h,p]of r.entries(t,f)){const r=a(h,p,{path:void 0===l?u:[...u,l],branch:void 0===l?i:[...i,h],coerce:o,mask:c,message:e.message});for(const e of r)e[0]?(s=null===e[0].refinement||void 0===e[0].refinement?"not_valid":"not_refined",yield[e[0],void 0]):o&&(h=e[1],void 0===l?t=h:t instanceof Map?t.set(l,h):t instanceof Set?t.add(h):n(t)&&(void 0!==h||l in t)&&(t[l]=h))}if("not_valid"!==s)for(const n of r.refiner(t,f))n.explanation=e.message,s="not_refined",yield[n,void 0];"valid"===s&&(yield[void 0,t])}class c{constructor(t){const{type:n,schema:r,validator:e,refiner:u,coercer:i=t=>t,entries:a=function*(){}}=t;this.type=n,this.schema=r,this.entries=a,this.coercer=i,this.validator=e?(t,n)=>o(e(t,n),n,this,t):()=>[],this.refiner=u?(t,n)=>o(u(t,n),n,this,t):()=>[]}assert(t,n){return l(t,this,n)}create(t,n){return function(t,n,r){const e=h(t,n,{coerce:!0,message:r});if(e[0])throw e[0];return e[1]}(t,this,n)}is(t){return function(t,n){const r=h(t,n);return!r[0]}(t,this)}mask(t,n){return function(t,n,r){const e=h(t,n,{coerce:!0,mask:!0,message:r});if(e[0])throw e[0];return e[1]}(t,this,n)}validate(t,n={}){return h(t,this,n)}}const f="EXACT_OPTIONAL";class s extends c{constructor(t){super({...t,type:`exact optional ${t.type}`}),this.brand=f}static isExactOptional(t){return n(t)&&"brand"in t&&t.brand===f}}function l(t,n,r){const e=h(t,n,{message:r});if(e[0])throw e[0]}function h(n,r,e={}){const u=a(n,r,e),i=function(t){const{done:n,value:r}=t.next();return n?void 0:r}(u);if(i[0]){return[new t(i[0],function*(){for(const t of u)t[0]&&(yield t[0])}),void 0]}return[void 0,i[1]]}function p(t){return new c({type:"array",schema:t,*entries(n){if(t&&Array.isArray(n))for(const[r,e]of n.entries())yield[r,e,t]},coercer:t=>Array.isArray(t)?t.slice():t,validator:t=>Array.isArray(t)||`Expected an array value, but received: ${u(t)}`})}function v(){return w("boolean",t=>"boolean"==typeof t)}function _(){return w("never",()=>!1)}function g(t){const r=t?Object.keys(t):[],e=_();return new c({type:"object",schema:t??null,*entries(u){if(t&&n(u)){const n=new Set(Object.keys(u));for(const e of r){n.delete(e);const r=t[e];s.isExactOptional(r)&&!Object.prototype.hasOwnProperty.call(u,e)||(yield[e,u[e],t[e]])}for(const t of n)yield[t,u[t],e]}},validator:t=>n(t)||`Expected an object, but received: ${u(t)}`,coercer:t=>n(t)?{...t}:t})}function y(t){return new c({...t,validator:(n,r)=>void 0===n||t.validator(n,r),refiner:(n,r)=>void 0===n||t.refiner(n,r)})}function d(){return w("string",t=>"string"==typeof t||`Expected a string, but received: ${u(t)}`)}function b(t){const n=t.map(t=>t.type).join(" | ");return new c({type:"union",schema:null,coercer(n){for(const r of t){const[t,e]=r.validate(n,{coerce:!0});if(!t)return e}return n},validator(r,e){const i=[];for(const n of t){const[...t]=a(r,n,e),[u]=t;if(!u?.[0])return[];for(const[n]of t)n&&i.push(n)}return[`Expected the value to satisfy a union of \`${n}\`, but received: ${u(r)}`,...i]}})}function m(...t){const r="type"===t[0]?.type,e=t.map(({schema:t})=>t),i=Object.assign({},...e);return r?function(t){const r=Object.keys(t);return new c({type:"type",schema:t,*entries(e){if(n(e))for(const n of r)s.isExactOptional(t[n])&&!Object.prototype.hasOwnProperty.call(e,n)||(yield[n,e[n],t[n]])},validator:t=>n(t)||`Expected an object, but received: ${u(t)}`,coercer:t=>n(t)?{...t}:t})}(i):g(i)}function w(t,n){return new c({type:t,schema:null,validator:n})}function x(t,n){return A(t,"pattern",r=>n.test(r)||`Expected a ${t.type} matching \`/${n.source}/\` but received "${r}"`)}function A(t,n,r){return new c({...t,*refiner(e,u){yield*t.refiner(e,u);const i=o(r(e,u),u,t,e);for(const t of i)yield{...t,refinement:n}}})}const j=BigInt(2**32-1),O=BigInt(32);function k(t,n=!1){return n?{h:Number(t&j),l:Number(t>>O&j)}:{h:0|Number(t>>O&j),l:0|Number(t&j)}}function E(t,n=!1){const r=t.length;let e=new Uint32Array(r),u=new Uint32Array(r);for(let i=0;i<r;i++){const{h:r,l:o}=k(t[i],n);[e[i],u[i]]=[r,o]}return[e,u]}const I=(t,n,r)=>t<<r|n>>>32-r,S=(t,n,r)=>n<<r|t>>>32-r,$=(t,n,r)=>n<<r-32|t>>>64-r,C=(t,n,r)=>t<<r-32|n>>>64-r;function R(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function L(t,...n){if(!((r=t)instanceof Uint8Array||ArrayBuffer.isView(r)&&"Uint8Array"===r.constructor.name))throw new Error("Uint8Array expected");var r;if(n.length>0&&!n.includes(t.length))throw new Error("Uint8Array expected of length "+n+", got length="+t.length)}function T(t,n=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(n&&t.finished)throw new Error("Hash#digest() has already been called")}function z(...t){for(let n=0;n<t.length;n++)t[n].fill(0)}const B=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0];function U(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}const P=B?t=>t:function(t){for(let n=0;n<t.length;n++)t[n]=U(t[n]);return t};function W(t){if("string"!=typeof t)throw new Error("string expected");return new Uint8Array((new TextEncoder).encode(t))}function N(t){return"string"==typeof t&&(t=W(t)),L(t),t}class D{}function F(t){const n=n=>t().update(N(n)).digest(),r=t();return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.create=()=>t(),n}const M=BigInt(0),q=BigInt(1),V=BigInt(2),K=BigInt(7),Z=BigInt(256),G=BigInt(113),H=[],X=[],J=[];for(let t=0,n=q,r=1,e=0;t<24;t++){[r,e]=[e,(2*r+3*e)%5],H.push(2*(5*e+r)),X.push((t+1)*(t+2)/2%64);let u=M;for(let t=0;t<7;t++)n=(n<<q^(n>>K)*G)%Z,n&V&&(u^=q<<(q<<BigInt(t))-q);J.push(u)}const Y=E(J,!0),Q=Y[0],tt=Y[1],nt=(t,n,r)=>r>32?$(t,n,r):I(t,n,r),rt=(t,n,r)=>r>32?C(t,n,r):S(t,n,r);class et extends D{constructor(t,n,r,e=!1,u=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=t,this.suffix=n,this.outputLen=r,this.enableXOF=e,this.rounds=u,R(r),!(0<t&&t<200))throw new Error("only keccak-f1600 function is supported");var i;this.state=new Uint8Array(200),this.state32=(i=this.state,new Uint32Array(i.buffer,i.byteOffset,Math.floor(i.byteLength/4)))}clone(){return this._cloneInto()}keccak(){P(this.state32),function(t,n=24){const r=new Uint32Array(10);for(let e=24-n;e<24;e++){for(let n=0;n<10;n++)r[n]=t[n]^t[n+10]^t[n+20]^t[n+30]^t[n+40];for(let n=0;n<10;n+=2){const e=(n+8)%10,u=(n+2)%10,i=r[u],o=r[u+1],a=nt(i,o,1)^r[e],c=rt(i,o,1)^r[e+1];for(let r=0;r<50;r+=10)t[n+r]^=a,t[n+r+1]^=c}let n=t[2],u=t[3];for(let r=0;r<24;r++){const e=X[r],i=nt(n,u,e),o=rt(n,u,e),a=H[r];n=t[a],u=t[a+1],t[a]=i,t[a+1]=o}for(let n=0;n<50;n+=10){for(let e=0;e<10;e++)r[e]=t[n+e];for(let e=0;e<10;e++)t[n+e]^=~r[(e+2)%10]&r[(e+4)%10]}t[0]^=Q[e],t[1]^=tt[e]}z(r)}(this.state32,this.rounds),P(this.state32),this.posOut=0,this.pos=0}update(t){T(this),L(t=N(t));const{blockLen:n,state:r}=this,e=t.length;for(let u=0;u<e;){const i=Math.min(n-this.pos,e-u);for(let n=0;n<i;n++)r[this.pos++]^=t[u++];this.pos===n&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:t,suffix:n,pos:r,blockLen:e}=this;t[r]^=n,128&n&&r===e-1&&this.keccak(),t[e-1]^=128,this.keccak()}writeInto(t){T(this,!1),L(t),this.finish();const n=this.state,{blockLen:r}=this;for(let e=0,u=t.length;e<u;){this.posOut>=r&&this.keccak();const i=Math.min(r-this.posOut,u-e);t.set(n.subarray(this.posOut,this.posOut+i),e),this.posOut+=i,e+=i}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return R(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(function(t,n){L(t);const r=n.outputLen;if(t.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,z(this.state)}_cloneInto(t){const{blockLen:n,suffix:r,outputLen:e,rounds:u,enableXOF:i}=this;return t||(t=new et(n,r,e,i,u)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=u,t.suffix=r,t.outputLen=e,t.enableXOF=i,t.destroyed=this.destroyed,t}}const ut=(t,n,r)=>F(()=>new et(n,t,r)),it=ut(1,136,32);var ot=r(543);Error;function at(t){return Boolean(t)&&"object"==typeof t&&!Array.isArray(t)}const ct=(t,n)=>Object.hasOwnProperty.call(t,n);var ft;!function(t){t[t.Null=4]="Null",t[t.Comma=1]="Comma",t[t.Wrapper=1]="Wrapper",t[t.True=4]="True",t[t.False=5]="False",t[t.Quote=1]="Quote",t[t.Colon=1]="Colon",t[t.Date=24]="Date"}(ft=ft||(ft={}));function st(t){return function(t){return function(t){return"object"==typeof t&&null!==t&&"message"in t}(t)&&"string"==typeof t.message?t.message:null==t?"":String(t)}(t).replace(/\.$/u,"")}function lt(t,n){return r=t,Boolean("string"==typeof r?.prototype?.constructor?.name)?new t({message:n}):t({message:n});var r}class ht extends Error{constructor(t){super(t.message),this.code="ERR_ASSERTION"}}function pt(t,n,r="Assertion failed",e=ht){try{l(t,n)}catch(t){throw lt(e,`${r}: ${st(t)}.`)}}const{memoize:vt}=ot,_t=/^(?:0x)?[0-9a-f]+$/iu,gt=/^0x[0-9a-f]+$/iu,yt=/^0x[0-9a-f]{40}$/u,dt=/^0x[0-9a-fA-F]{40}$/u,bt=(x(d(),_t),x(d(),gt),x(d(),yt),x(d(),dt)),mt=t=>"string"==typeof t;function wt(t){return mt(t)&&dt.test(t)}const xt=vt(function(t){!function(t,n="Assertion failed.",r=ht){if(!t){if(n instanceof Error)throw n;throw lt(r,n)}}(wt(t),"Invalid hex address.");const n=function(t){if(t.startsWith("0x")||t.startsWith("0X"))return t.substring(2);return t}(t).toLowerCase(),r=it(n),{length:e}=n,u=new Array(e);for(let t=0;t<e;t++){const e=1&t,i=r[t>>1],o=0===e?i>>4:15&i;u[t]=o>=8?n[t].toUpperCase():n[t]}return`0x${u.join("")}`});const At=vt(function(t){return!!wt(t)&&xt(t)===t});vt(function(t){return mt(n=t)&&yt.test(n)||At(t);var n});var jt;function Ot(t){return w(JSON.stringify(t),function(t){const n=u(t),r=typeof t;return new c({type:"literal",schema:"string"===r||"number"===r||"boolean"===r?t:null,validator:r=>r===t||`Expected the literal \`${n}\`, but received: ${u(r)}`})}(t).validator)}function kt(t){return Ot(t)}function Et(t,n,r=[]){return(...e)=>{if(1===e.length&&function(t){if("object"!=typeof t||null===t)return!1;try{let n=t;for(;null!==Object.getPrototypeOf(n);)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(t)===n}catch(t){return!1}}(e[0])){const r={...e[0],type:t};return pt(r,n,`Invalid ${t} component`),r}const u=r.reduce((t,n,r)=>void 0!==e[r]?{...t,[n]:e[r]}:t,{type:t});return pt(u,n,`Invalid ${t} component`),u}}!function(t){t.Copyable="copyable",t.Divider="divider",t.Heading="heading",t.Panel="panel",t.Spinner="spinner",t.Text="text",t.Image="image",t.Row="row",t.Address="address",t.Button="button",t.Input="input",t.Form="form"}(jt||(jt={}));const It=g({type:d()}),St=m(It,g({value:w("unknown",()=>!0)})),$t=m(St,g({type:Ot(jt.Address),value:bt}));Et(jt.Address,$t,["value"]);var Ct,Rt;!function(t){t.Primary="primary",t.Secondary="secondary"}(Ct||(Ct={})),function(t){t.Button="button",t.Submit="submit"}(Rt||(Rt={}));const Lt=m(St,g({type:Ot(jt.Button),value:d(),variant:y(b([kt(Ct.Primary),kt(Ct.Secondary)])),buttonType:y(b([kt(Rt.Button),kt(Rt.Submit)])),name:y(d())})),Tt=(Et(jt.Button,Lt,["value","buttonType","name","variant"]),m(St,g({type:Ot(jt.Copyable),value:d(),sensitive:y(v())}))),zt=(Et(jt.Copyable,Tt,["value","sensitive"]),m(It,g({type:Ot(jt.Divider)}))),Bt=Et(jt.Divider,zt);var Ut;!function(t){t.Text="text",t.Number="number",t.Password="password"}(Ut||(Ut={}));const Pt=m(St,g({type:Ot(jt.Input),value:y(d()),name:d(),inputType:y(b([kt(Ut.Text),kt(Ut.Password),kt(Ut.Number)])),placeholder:y(d()),label:y(d()),error:y(d())})),Wt=(Et(jt.Input,Pt,["name","inputType","placeholder","value","label"]),b([Pt,Lt])),Nt=m(It,g({type:Ot(jt.Form),children:p(Wt),name:d()})),Dt=(Et(jt.Form,Nt,["name","children"]),m(St,g({type:Ot(jt.Heading),value:d()}))),Ft=Et(jt.Heading,Dt,["value"]);const Mt=m(It,g({type:Ot(jt.Image),value:A(d(),"SVG",t=>!!t.includes("<svg")||"Value is not a valid SVG.")})),qt=(Et(jt.Image,Mt,["value"]),m(St,g({type:Ot(jt.Text),value:d(),markdown:y(v())}))),Vt=Et(jt.Text,qt,["value","markdown"]);var Kt;!function(t){t.Default="default",t.Critical="critical",t.Warning="warning"}(Kt||(Kt={}));const Zt=b([Mt,qt,$t]),Gt=m(St,g({type:Ot(jt.Row),variant:y(b([kt(Kt.Default),kt(Kt.Critical),kt(Kt.Warning)])),label:d(),value:Zt})),Ht=Et(jt.Row,Gt,["label","value","variant"]),Xt=m(It,g({type:Ot(jt.Spinner)})),Jt=(Et(jt.Spinner,Xt),m(It,g({children:p(function(t){let n;return new c({type:"lazy",schema:null,*entries(r,e){n??(n=t()),yield*n.entries(r,e)},validator:(r,e)=>(n??(n=t()),n.validator(r,e)),coercer:(r,e)=>(n??(n=t()),n.coercer(r,e)),refiner:(r,e)=>(n??(n=t()),n.refiner(r,e))})}(()=>tn))}))),Yt=m(Jt,g({type:Ot(jt.Panel)})),Qt=Et(jt.Panel,Yt,["children"]),tn=function(t){const n=t.map(t=>"union"===t.type&&Array.isArray(t.schema)?t.schema:t).flat(1/0),r=n.map(({schema:t})=>t.type.type),e=n.reduce((t,n)=>(t[JSON.parse(n.schema.type.type)]=n,t),{});return new c({type:"union",schema:n,*entries(t,n){if(!at(t)||!ct(t,"type")||"string"!=typeof t.type)return;const{type:r}=t,u=e[r];if(u)for(const r of u.entries(t,n))yield r},coercer(t,n){if(!at(t)||!ct(t,"type")||"string"!=typeof t.type)return t;const{type:r}=t,u=e[r];return u?u.coercer(t,n):t},*refiner(t,n){const r=e[t.type];yield*r.refiner(t,n)},validator(t,n){if(!at(t)||!ct(t,"type")||"string"!=typeof t.type)return`Expected type to be one of: ${r.join(", ")}, but received: undefined`;const{type:u}=t,i=e[u];return i?i.validator(t,n):`Expected type to be one of: ${r.join(", ")}, but received: "${u}"`}})}([Tt,zt,Dt,Mt,Yt,Xt,qt,Gt,$t,Pt,Nt,Lt]);var nn;!function(t){t.Critical="critical"}(nn||(nn={}));const rn=async({transaction:t,chainId:n,transactionOrigin:r})=>{var e,u;const i=null===(e=null===(u=t)||void 0===u?void 0:u.to)||void 0===e?void 0:e.toLowerCase();if(!i)return{content:Qt([Ft("ACP Guard"),Vt("Contract-creation transaction — no destination address to audit.")])};let o;try{const t=await fetch("https://api.agentundercontrol.com/snap/v1/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contract_address:i,chain_id:n,agent_message:`MetaMask transaction to ${i} (origin: ${r??"unknown"})`})});if(!t.ok)throw new Error(`ACP responded ${t.status}`);o=await t.json()}catch(t){return{content:Qt([Ft("⚠️ ACP Guard — unavailable"),Vt("Could not reach ACP. Proceeding is at your own risk — verify the contract manually."),Bt(),Vt(String(t))]),severity:void 0}}const a=String(o.status??"UNKNOWN").toUpperCase(),c="number"==typeof o.risk_score?o.risk_score:void 0,f=o.matched_types??[],s=o.critique??"",l=Qt([Ft(`${"BLOCKED"===a?"🛑":"WARN"===a?"⚠️":"✅"} ACP verdict: ${a}`),Ht("Contract",Vt(i)),...void 0!==c?[Ht("Risk",Vt(c.toFixed(2)))]:[],...f.length?[Bt(),Vt(`**Matched signatures:** ${f.join(", ")}`)]:[],...s?[Bt(),Vt(s)]:[]]);return"SECURE"!==a&&"APPROVED"!==a&&await snap.request({method:"snap_notify",params:{type:"inApp",message:`ACP ${a}: ${i.slice(0,10)}…`}}),{content:l,severity:"BLOCKED"===a?nn.Critical:void 0}}})(),module.exports=e})();
|
package/images/icon.svg
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M16 2 4 7v8c0 7 5 12 12 15 7-3 12-8 12-15V7L16 2Z" fill="#1D4ED8"/>
|
|
3
|
+
<path d="m11 16 3.5 3.5L22 12" stroke="#fff" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
+
</svg>
|
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "acp-guard-snap",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MetaMask Snap that routes transactions through ACP for a pre-signature security verdict.",
|
|
5
|
+
"files": ["dist", "images", "snap.manifest.json"],
|
|
6
|
+
"main": "src/index.ts",
|
|
7
|
+
"repository": { "type": "git", "url": "https://github.com/NikkNet/acp.git" },
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "mm-snap build",
|
|
10
|
+
"serve": "mm-snap serve",
|
|
11
|
+
"watch": "mm-snap watch",
|
|
12
|
+
"start": "mm-snap watch",
|
|
13
|
+
"prepublishOnly": "mm-snap build"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@metamask/snaps-sdk": "^6.7.0"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@metamask/snaps-cli": "^6.5.0",
|
|
20
|
+
"prettier": "^3.9.5",
|
|
21
|
+
"typescript": "^5.4.5"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.1.0",
|
|
3
|
+
"description": "Routes every MetaMask transaction through ACP for a pre-signature security verdict.",
|
|
4
|
+
"proposedName": "ACP Guard",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/NikkNet/acp.git"
|
|
8
|
+
},
|
|
9
|
+
"source": {
|
|
10
|
+
"shasum": "RG73xpdQd7RHfNTbhsJYTbvkDCCCzyqoUl2w/6xp9Ec=",
|
|
11
|
+
"location": {
|
|
12
|
+
"npm": {
|
|
13
|
+
"filePath": "dist/bundle.js",
|
|
14
|
+
"iconPath": "images/icon.svg",
|
|
15
|
+
"packageName": "acp-guard-snap",
|
|
16
|
+
"registry": "https://registry.npmjs.org/"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"initialPermissions": {
|
|
21
|
+
"endowment:transaction-insight": {
|
|
22
|
+
"allowTransactionOrigin": true
|
|
23
|
+
},
|
|
24
|
+
"endowment:network-access": {},
|
|
25
|
+
"snap_notify": {}
|
|
26
|
+
},
|
|
27
|
+
"platformVersion": "6.24.0",
|
|
28
|
+
"manifestVersion": "0.1"
|
|
29
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { OnTransactionHandler } from '@metamask/snaps-sdk';
|
|
2
|
+
import {
|
|
3
|
+
panel,
|
|
4
|
+
heading,
|
|
5
|
+
text,
|
|
6
|
+
divider,
|
|
7
|
+
row,
|
|
8
|
+
SeverityLevel,
|
|
9
|
+
} from '@metamask/snaps-sdk';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* ACP Guard — routes every MetaMask transaction through the ACP gatekeeper for a
|
|
13
|
+
* pre-signature security verdict, and renders it inside MetaMask's confirmation
|
|
14
|
+
* screen (transaction-insight).
|
|
15
|
+
*
|
|
16
|
+
* NOTE ON "BLOCK": a Snap can only *warn* — it cannot stop the user from clicking
|
|
17
|
+
* Confirm. BLOCKED is surfaced as a Critical-severity banner. True enforcement
|
|
18
|
+
* requires a smart-account guard (Safe / ERC-4337) with ACP as co-signer.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
// Gatekeeper audit endpoint. Defaults to PROD (so the npm-published snap works for
|
|
22
|
+
// anyone); local dev overrides it via ACP_ENDPOINT=http://localhost:8080/... (set by
|
|
23
|
+
// scripts/run_snap.sh). `||` (not `??`) so an empty build-time value falls to the default.
|
|
24
|
+
const ACP_ENDPOINT =
|
|
25
|
+
process.env.ACP_ENDPOINT || 'https://api.agentundercontrol.com/snap/v1/validate';
|
|
26
|
+
// Gatekeeper API key (the endpoint is auth-gated). Inject at build time.
|
|
27
|
+
const ACP_API_KEY = process.env.ACP_API_KEY ?? '';
|
|
28
|
+
// Fail-open (show a soft warning) or fail-closed (Critical banner) when ACP is unreachable.
|
|
29
|
+
const FAIL_OPEN = true;
|
|
30
|
+
|
|
31
|
+
type AcpVerdict = {
|
|
32
|
+
status?: string; // SECURE | WARN | BLOCKED | APPROVED
|
|
33
|
+
risk_score?: number;
|
|
34
|
+
matched_types?: string[];
|
|
35
|
+
critique?: string;
|
|
36
|
+
decision?: boolean;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const onTransaction: OnTransactionHandler = async ({
|
|
40
|
+
transaction,
|
|
41
|
+
chainId,
|
|
42
|
+
transactionOrigin,
|
|
43
|
+
}) => {
|
|
44
|
+
const to = (transaction?.to as string | undefined)?.toLowerCase();
|
|
45
|
+
|
|
46
|
+
// Contract-creation (no `to`) — nothing to look up.
|
|
47
|
+
if (!to) {
|
|
48
|
+
return {
|
|
49
|
+
content: panel([
|
|
50
|
+
heading('ACP Guard'),
|
|
51
|
+
text('Contract-creation transaction — no destination address to audit.'),
|
|
52
|
+
]),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
let verdict: AcpVerdict;
|
|
57
|
+
try {
|
|
58
|
+
const res = await fetch(ACP_ENDPOINT, {
|
|
59
|
+
method: 'POST',
|
|
60
|
+
headers: {
|
|
61
|
+
'Content-Type': 'application/json',
|
|
62
|
+
...(ACP_API_KEY ? { Authorization: `Bearer ${ACP_API_KEY}` } : {}),
|
|
63
|
+
},
|
|
64
|
+
body: JSON.stringify({
|
|
65
|
+
contract_address: to,
|
|
66
|
+
chain_id: chainId,
|
|
67
|
+
agent_message: `MetaMask transaction to ${to} (origin: ${transactionOrigin ?? 'unknown'})`,
|
|
68
|
+
}),
|
|
69
|
+
});
|
|
70
|
+
if (!res.ok) {
|
|
71
|
+
throw new Error(`ACP responded ${res.status}`);
|
|
72
|
+
}
|
|
73
|
+
verdict = (await res.json()) as AcpVerdict;
|
|
74
|
+
} catch (err) {
|
|
75
|
+
return {
|
|
76
|
+
content: panel([
|
|
77
|
+
heading('⚠️ ACP Guard — unavailable'),
|
|
78
|
+
text(
|
|
79
|
+
FAIL_OPEN
|
|
80
|
+
? 'Could not reach ACP. Proceeding is at your own risk — verify the contract manually.'
|
|
81
|
+
: 'Could not reach ACP. Treat this transaction as UNVERIFIED.',
|
|
82
|
+
),
|
|
83
|
+
divider(),
|
|
84
|
+
text(String(err)),
|
|
85
|
+
]),
|
|
86
|
+
severity: FAIL_OPEN ? undefined : SeverityLevel.Critical,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const status = String(verdict.status ?? 'UNKNOWN').toUpperCase();
|
|
91
|
+
const risk =
|
|
92
|
+
typeof verdict.risk_score === 'number' ? verdict.risk_score : undefined;
|
|
93
|
+
const matched = verdict.matched_types ?? [];
|
|
94
|
+
const critique = verdict.critique ?? '';
|
|
95
|
+
|
|
96
|
+
const badge =
|
|
97
|
+
status === 'BLOCKED' ? '🛑' : status === 'WARN' ? '⚠️' : '✅';
|
|
98
|
+
|
|
99
|
+
const content = panel([
|
|
100
|
+
heading(`${badge} ACP verdict: ${status}`),
|
|
101
|
+
row('Contract', text(to)),
|
|
102
|
+
...(risk !== undefined ? [row('Risk', text(risk.toFixed(2)))] : []),
|
|
103
|
+
...(matched.length
|
|
104
|
+
? [divider(), text(`**Matched signatures:** ${matched.join(', ')}`)]
|
|
105
|
+
: []),
|
|
106
|
+
...(critique ? [divider(), text(critique)] : []),
|
|
107
|
+
]);
|
|
108
|
+
|
|
109
|
+
// Native MetaMask notification for anything that isn't a clean pass.
|
|
110
|
+
if (status !== 'SECURE' && status !== 'APPROVED') {
|
|
111
|
+
await snap.request({
|
|
112
|
+
method: 'snap_notify',
|
|
113
|
+
params: {
|
|
114
|
+
type: 'inApp',
|
|
115
|
+
message: `ACP ${status}: ${to.slice(0, 10)}…`,
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return {
|
|
121
|
+
content,
|
|
122
|
+
// Only Critical exists today; use it to make a BLOCK verdict prominent.
|
|
123
|
+
severity: status === 'BLOCKED' ? SeverityLevel.Critical : undefined,
|
|
124
|
+
};
|
|
125
|
+
};
|