@tokmizer/plugin 1.0.2 → 1.1.1
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/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +37 -37
- package/command-templates/tkr-status.md +1 -1
- package/dist/bin/tkr-codex-hook.js +58 -58
- package/dist/bin/tkr-context-hook.js +1 -1
- package/dist/bin/tkr-daemon.js +133 -133
- package/dist/bin/tkr-exec +11 -11
- package/dist/bin/tkr-exec.js +11 -11
- package/dist/bin/tkr-processor.js +14 -14
- package/dist/bin/tkr-shim.js +12 -12
- package/dist/bin/tkr.js +213 -213
- package/dist/hooks-host/post-tool-use.js +9 -9
- package/dist/hooks-host/reducer-prompt-submit.js +1 -1
- package/dist/hooks-host/reducer-session-start.js +1 -1
- package/dist/hooks-host/reducer-stop.js +25 -25
- package/dist/hooks-host/session-recap.js +2 -2
- package/dist/index.js +91 -91
- package/dist/native/manifest.json +12 -12
- package/dist/native/single.json +12 -12
- package/dist/native/tkr-exec-darwin-arm64 +0 -0
- package/dist/native/tkr-exec-darwin-x64 +0 -0
- package/dist/native/tkr-exec-linux-arm64 +0 -0
- package/dist/native/tkr-exec-linux-x64 +0 -0
- package/dist/native/tkr-exec-win32-arm64.exe +0 -0
- package/dist/native/tkr-exec-win32-x64.exe +0 -0
- package/hooks/on-session-start.mjs +2 -2
- package/package.json +8 -8
- package/scripts/README-INSTALL.md +1 -1
- package/scripts/install-mac-linux.sh +2 -2
- package/scripts/install-windows.ps1 +4 -3
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __tkrCreateRequire } from "node:module"; const require = __tkrCreateRequire(import.meta.url);
|
|
3
|
-
var
|
|
3
|
+
var lu=Object.defineProperty;var he=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var Ns=(e,t)=>{for(var n in t)lu(e,n,{get:t[n],enumerable:!0})};function bc(e,t){let n=e.slice(0,t).split(/\r?\n/);return[n.length,n.pop().length+1]}function _c(e,t,n){let r=e.split(/\r?\n/),s="",o=(Math.log10(t+1)|0)+1;for(let i=t-1;i<=t+1;i++){let a=r[i-1];a&&(s+=i.toString().padEnd(o," "),s+=": ",s+=a,s+=`
|
|
4
4
|
`,i===t&&(s+=" ".repeat(o+n+2),s+=`^
|
|
5
|
-
`))}return s}var E,Ke=
|
|
5
|
+
`))}return s}var E,Ke=he(()=>{E=class e extends Error{line;column;codeblock;constructor(t,n){let[r,s]=bc(n.toml,n.ptr),o=_c(n.toml,r,s);super(`Invalid TOML document: ${t}
|
|
6
6
|
|
|
7
|
-
${o}`,n),this.line=r,this.column=s,this.codeblock=o}static x(t,n,r){throw new e(t,{toml:n.s,ptr:r??n.p})}}});function
|
|
8
|
-
`:n===102?i+="\f":n===114?i+="\r":n===101?i+="\x1B":n===34?i+='"':n===92?i+="\\":E.x("unrecognised escape sequence",e),a=e.p+1,l=0);else n!==32&&n!==9&&(l===2&&E.x("invalid escape: only line-ending whitespace may be escaped",e,a),l=!s&&n===92?1:0,a=e.p);E.x("unfinished string",e,t)}var Xn=ge(()=>{Ke();});var xu,qe,Qn=ge(()=>{xu=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i,qe=class e extends Date{#t=!1;#n=!1;#e=null;constructor(t,n,r){let s=!0,o=!0,i="Z",a;if(typeof t=="string")if(n)e:{if(n<3){if(+t.slice(11,13)>23){t="";break e}n===2?(i=null,t+="Z"):(a=t.charCodeAt(t.length-1))!==90&&a!==122&&(i=t.slice(t.length-6)),r&&(t=t.slice(0,10)+"T"+t.slice(11))}else n===4&&(t=+t.slice(0,2)>23?"":`0000-01-01T${t}Z`);s=n!==4,o=n!==3}else{let l=t.match(xu);l?(l[1]||(s=!1,t=`0000-01-01T${t}`),o=!!l[2],o&&t[10]===" "&&(t=t.replace(" ","T")),l[2]&&+l[2]>23?t="":(i=l[3]||null,!i&&o&&(t+="Z"))):t=""}super(t),isNaN(this.getTime())||(this.#t=s,this.#n=o,this.#e=i)}isDateTime(){return this.#t&&this.#n}isLocal(){return!this.#t||!this.#n||!this.#e}isDate(){return this.#t&&!this.#n}isTime(){return this.#n&&!this.#t}isValid(){return this.#t||this.#n}toISOString(){let t=super.toISOString();if(this.isDate())return t.slice(0,10);if(this.isTime())return t.slice(11,23);if(this.#e===null)return t.slice(0,-1);if(this.#e==="Z"||this.#e==="z")return t;let n=+this.#e.slice(1,3)*60+ +this.#e.slice(4,6);return n=this.#e[0]==="-"?n:-n,new Date(this.getTime()-n*6e4).toISOString().slice(0,-1)+this.#e}static wrapAsOffsetDateTime(t,n="Z"){let r=new e(t);return r.#e=n,r}static wrapAsLocalDateTime(t){let n=new e(t);return n.#e=null,n}static wrapAsLocalDate(t){let n=new e(t);return n.#n=!1,n.#e=null,n}static wrapAsLocalTime(t){let n=new e(t);return n.#t=!1,n.#e=null,n}}});function V(e,t=10){return t===16?e>47&&e<58||e>64&&e<71||e>96&&e<103:e>47&&e<48+t}function tr(e,t){return e===32||e===9||e===10||e===13||t&&(e===t||e===44)||e===35}function Pt(e,t){let n=e.p,r=e.s.charCodeAt(e.p);if(r===91||r===123){e.d--||E.x("document contains excessively nested structures. aborting.",e);let s=r===91?Ws(e):Gs(e);return e.d++,s}return r===34||r===39?un(e):r===116?((e.s.charCodeAt(++e.p)!==114||e.s.charCodeAt(++e.p)!==117||e.s.charCodeAt(++e.p)!==101)&&E.x("invalid value",e,n),e.p++,!0):r===102?((e.s.charCodeAt(++e.p)!==97||e.s.charCodeAt(++e.p)!==108||e.s.charCodeAt(++e.p)!==115||e.s.charCodeAt(++e.p)!==101)&&E.x("invalid value",e,n),e.p++,!1):r===43||r===45?fn(e,e.p,e.s.charCodeAt(++e.p),44-r,t):e.s.charCodeAt(e.p+4)===45&&e.s.charCodeAt(e.p+7)===45?wu(e,r,t):e.s.charCodeAt(e.p+2)===58?Su(e,r,t):fn(e,e.p,r,0,t)}function fn(e,t,n,r,s){let o=n,i=0,a=!1;if(o===105)return(e.s.charCodeAt(++e.p)!==110||e.s.charCodeAt(++e.p)!==102)&&E.x("invalid value",e,t),e.p++,(r||1)/0;if(o===110)return(e.s.charCodeAt(++e.p)!==97||e.s.charCodeAt(++e.p)!==110)&&E.x("invalid value",e,t),e.p++,NaN;if(o===48){if(++e.p>=e.s.length||tr(o=e.s.charCodeAt(e.p),s))return e.bi===!0?0n:0;if(!r){if(o===120)return er(e,t,16,s);if(o===98)return er(e,t,2,s);if(o===111)return er(e,t,8,s)}o===46?i=2:o===101||o===69?i=4:E.x("illegal leading zero",e,t)}else V(o)||E.x("invalid value",e,t);for(;++e.p<e.s.length&&(o=e.s.charCodeAt(e.p),!tr(o,s));)i||(i=1),o===95?(i&1||E.x("illegal underscore",e),i+=11,a=!0):i===1&&o===46?i=2:(i===1||i===3)&&(o===101||o===69)?i=4:i===4&&(o===43||o===45)||(V(o)?i>9?i-=11:i&1||i++:E.x("illegal character in numeric literal",e));if(!i){let c=(n-48)*(r||1);return e.bi===!0?BigInt(c):c}i&1||E.x("unfinished numeric value",e,t);let l=e.s.slice(t,e.p);return a&&(l=l.replaceAll("_","")),i>1?parseFloat(l):Js(e,l,10,t)}function er(e,t,n,r){let s,o=1;for(;++e.p<e.s.length&&(s=e.s.charCodeAt(e.p),!tr(s,r));)s===95?(o&1&&E.x("illegal underscore",e),o=3):V(s,n)?o&1&&o--:E.x("illegal character in numeric literal",e);o&1&&E.x("unfinished numeric value",e);let i=e.s.slice(t+2,e.p);return o&&(i=i.replaceAll("_","")),Js(e,i,n,t)}function Js(e,t,n,r){if(e.bi!==!0)e:{let s=parseInt(t,n);if(!Number.isSafeInteger(s)){if(e.bi)break e;E.x("integer value cannot be represented losslessly",e,r)}return s}return BigInt(n===10?t:(n===2?"0b":n===8?"0o":"0x")+t)}function wu(e,t,n){let r=e.p++,s;if(!V(t)||!V(e.s.charCodeAt(e.p++))||!V(e.s.charCodeAt(e.p++))||!V(e.s.charCodeAt(e.p++)))return fn(e,e.p=r,t,0,n);if(e.p+=5,V(e.s.charCodeAt(e.p++))||E.x("invalid date-time: date part is malformed",e,r),e.p>=e.s.length||((t=e.s.charCodeAt(e.p))!==32||(s=!0,!V(e.s.charCodeAt(e.p+1))))&&t!==84&&t!==116){let i=e.s.slice(r,e.p);return Nt(e,i,3,!1,r)}if(e.s.charCodeAt(e.p+=3)!==58&&E.x("invalid date-time: time part is malformed",e,r),e.s.charCodeAt(e.p+=3)===58&&(e.p+=3),e.s.charCodeAt(e.p)===46)for(;V(e.s.charCodeAt(++e.p)););if(t=e.s.charCodeAt(e.p)){if(t===90||t===122){let i=e.s.slice(r,++e.p);return Nt(e,i,1,s,r,"[+00:00]")}if(t===43||t===45){let i=e.s.slice(r,e.p+=6);return Nt(e,i,1,s,r,!e.ld&&"["+e.s.slice(e.p-6,e.p)+"]")}}let o=e.s.slice(r,e.p);return Nt(e,o,2,s,r)}function Su(e,t,n){let r=e.p;if(!V(t)||!V(e.s.charCodeAt(++e.p)))return fn(e,--e.p,t,0,n);if(e.s.charCodeAt(e.p+=4)===58&&(e.p+=3),e.s.charCodeAt(e.p)===46)for(;V(e.s.charCodeAt(++e.p)););let s=e.s.slice(r,e.p);return Nt(e,s,4,!1,r)}function Nt(e,t,n,r,s,o){if(e.ld){let i=new qe(t,n,r);return i.isValid()||E.x("invalid date",e,s),i}try{switch(o&&(t+=o),n){case 1:return Temporal.ZonedDateTime.from(t);case 2:return Temporal.PlainDateTime.from(t);case 3:return Temporal.PlainDate.from(t);case 4:return Temporal.PlainTime.from(t)}}catch(i){E.x(i instanceof Error?i.message:""+i,e,s)}}var nr=ge(()=>{Xn();rr();Ke();Qn();});function vu(e){for(;e.p<e.s.length;e.p++){let t=e.s.charCodeAt(e.p);if(t===10)break;if(t===13&&e.s.charCodeAt(e.p+1)===10){e.p++;break}(t<32&&t!==9||t===127)&&E.x("control characters are not allowed in comments",e)}}function se(e,t,n){let r;for(;e.p<e.s.length;){for(;e.p<e.s.length&&((r=e.s.charCodeAt(e.p))===32||r===9||!t&&(r===10||r===13&&e.s.charCodeAt(e.p+1)===10));)e.p++;if(n||r!==35)break;vu(e)}}var sr=ge(()=>{Ke();});function dn(e,t=61){let n,r=0,s=[],o,i=e.s.charCodeAt(n=e.p);do{if(i===t)return r||E.x("unexpected end of key",e),r===1&&s.push(e.s.slice(o,e.p)),e.p++,s;i===46?(r||E.x("illegal empty bare key",e),r===1&&s.push(e.s.slice(o,e.p)),r=0):!r&&(i===34||i===39)?(i===e.s.charCodeAt(e.p+1)&&i===e.s.charCodeAt(e.p+2)&&E.x("illegal quoted key: multiline strings are not allowed",e),s.push(un(e)),r=2,e.p--):i===32||i===9?r===1&&(s.push(e.s.slice(o,e.p)),r=2):r===2||i<48&&i!==45||i>57&&i<65||i>90&&i<97&&i!==95||i>122?E.x("illegal character in key",e):r||(r=1,o=e.p)}while(i=e.s.charCodeAt(++e.p));E.x("incomplete key-value: cannot find end of key",e,n)}function Gs(e){let t=e.p++,n=Object.create(null),r=new Set,s;for(;e.p<e.s.length;){if(se(e),(s=e.s.charCodeAt(e.p))===125)return e.p++,n;let o,i=n,a=!1,l=e.p,c=dn(e);for(let f=0;f<c.length;f++){f&&(i=a?i[o]:i[o]=Object.create(null)),o=c[f],(a=Object.hasOwn(i,o))&&(typeof i[o]!="object"||r.has(i[o]))&&E.x("trying to redefine an already defined value",e,l);let d=o==="__proto__";if(e.uk&&(d||o==="constructor")){i=e.uk!==1&&E.x("document contains an unsafe property",e,l);break}!a&&d&&Object.defineProperty(i,o,{enumerable:!0,configurable:!0,writable:!0})}a&&E.x("trying to redefine an already defined value",e,l),se(e,!0,!0);let u=Pt(e,125);if(i&&typeof(i[o]=u)=="object"&&r.add(u),se(e),(s=e.s.charCodeAt(e.p++))===125)return n;s!==44&&E.x("expected comma or end of structure",e,e.p-1)}E.x("unfinished table",e,t)}function Ws(e){let t=e.p++,n=[],r;for(;e.p<e.s.length;){if(se(e),(r=e.s.charCodeAt(e.p))===93)return e.p++,n;if(n.push(Pt(e,93)),se(e),(r=e.s.charCodeAt(e.p++))===93)return n;r!==44&&E.x("expected comma or end of structure",e,e.p-1)}E.x("unfinished array",e,t)}var rr=ge(()=>{Xn();nr();sr();Ke();});function Vs(e,t,n,r,s){let o=n,i=r,a,l=!1,c;for(let u=0;u<t.length;u++){if(u){if(o=l?o[a]:o[a]=Object.create(null),i=(c=i[a]).c,s===0&&(c.t===1||c.t===2))return null;if(c.t===2){let f=o.length-1;o=o[f],i=i[f].c}}if(a=t[u],(l=Object.hasOwn(o,a))&&i[a]?.t===0&&i[a]?.d)return null;if(!l){let f=a==="__proto__";if(e.uk&&(f||a==="constructor"))return!1;f&&(Object.defineProperty(o,a,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(i,a,{enumerable:!0,configurable:!0,writable:!0})),i[a]={t:u<t.length-1&&s===2?3:s,d:!1,i:0,c:Object.create(null)}}}if(c=i[a],c.t!==s&&!(s===1&&c.t===3)||(s===2&&(c.d||(c.d=!0,o[a]=[]),o[a].push(o=Object.create(null)),c.c[c.i++]=c={t:1,d:!1,i:0,c:Object.create(null)}),c.d))return null;if(c.d=!0,s===1)o=l?o[a]:o[a]=Object.create(null);else if(s===0&&l)return null;return[a,o,c.c]}function Ks(e,t,n){(t===null||e.uk===2)&&E.x(t===null?"trying to redefine an already defined table or value":"document contains an unsafe property",e,n)}function Dt(e,t={}){let n={s:e,p:0,d:t.maxDepth??1e3,bi:t.integersAsBigInt??!1,ld:t.useLegacyDate??!0,uk:t.unsafeKeyBehaviour==="throw"?2:t.unsafeKeyBehaviour==="drop"?1:0},r=Object.create(null),s=Object.create(null),o,i=!1,a=r,l=s;for(e.charCodeAt(0)===65279&&n.p++,se(n);n.p<e.length;){if(e.charCodeAt(n.p)===91){let c=e.charCodeAt(++n.p)===91;o=n.p+=+c,i=!1;let u=dn(n,93);c&&(e.charCodeAt(n.p)!==93&&E.x("expected end of table array declaration",n),n.p++);let f=Vs(n,u,r,s,c?2:1);f?(l=f[2],a=f[1]):(Ks(n,f,o),i=!0)}else{o=n.p;let c=dn(n),u=Vs(n,c,a,l,0);!u&&!i&&Ks(n,u,o),se(n,!0,!0);let f=Pt(n,void 0);u&&!i&&(u[1][u[0]]=f)}se(n,!0),n.p<e.length&&(o=e.charCodeAt(n.p))!==10&&(o!==13||e.charCodeAt(n.p+1)!==10)&&E.x("each key-value declaration must be followed by an end-of-line",n),se(n)}return r}var qs=ge(()=>{rr();nr();sr();Ke();});function Lt(e){let t=typeof e;if(t==="object"){if(Array.isArray(e))return"array";if(typeof e.getUTCDate=="function"&&e instanceof Date)return"date";if(globalThis.Temporal){if(e.until){if(e instanceof Temporal.ZonedDateTime)return"temporal/tz+uc";if(e instanceof Temporal.PlainDateTime||e instanceof Temporal.PlainDate)return"temporal/uc";if(e instanceof Temporal.PlainTime||e instanceof Temporal.Instant)return"temporal";if(e instanceof Temporal.PlainYearMonth)return"temporal/x"}else if(e.toPlainDate&&e instanceof Temporal.PlainMonthDay||e.negated&&e instanceof Temporal.Duration)return"temporal/x"}}return t}function Tu(e){for(let t=0;t<e.length;t++)if(Lt(e[t])!=="object")return!1;return e.length!=0}function Xs(e){return JSON.stringify(e).replaceAll("\x7F","\\u007f")}function Au(e){return Xs(Ys?e.toWellFormed():e)}function Qs(e){if(Eu.test(e))return e;if(Ys&&!e.isWellFormed())throw new RangeError("key contains illegal lone surrogates");return Xs(e)}function or(e,t,n,r,s){if(n===0)throw new Error("Could not stringify the object: maximum object depth exceeded");switch(t){case"number":if(isNaN(e))return"nan";if(e===1/0)return"inf";if(e===-1/0)return"-inf";if(Number.isInteger(e)&&(r||!Number.isSafeInteger(e)))return e.toFixed(1);case"bigint":case"boolean":case"temporal":return e.toString();case"string":return Au(e);case"date":if(isNaN(e.getTime()))throw new TypeError("cannot serialize invalid date");return e.toISOString();case"object":return Ru(e,n,r,s);case"array":return $u(e,n,r,s);case"temporal/tz+uc":if(s){let o=e.timeZoneId,i=o.charCodeAt(0);if(i!==43&&i!==45&&(i!==85&&i!==71&&i!==90&&i!==69||o!=="UTC"&&o!=="UCT"&&o!=="Universal"&&o!=="Zulu"&&!o.startsWith("GMT")&&o!=="Greenwich"&&!o.startsWith("Etc/")))throw new TypeError("Temporal objects with an IANA timezone are not allowed in Temporal strict mode")}case"temporal/uc":if(s&&e.calendarId!=="iso8601")throw new TypeError("Temporal objects with a non-default calendar are not allowed in Temporal strict mode");return e.toString({calendarName:"never",timeZoneName:"never"});case"temporal/x":throw new TypeError("Unsupported "+e[Symbol.toStringTag])}}function Ru(e,t,n,r){let s=Object.keys(e);if(s.length===0)return"{}";let o="{ ";for(let i=0;i<s.length;i++){let a=s[i];i&&(o+=", "),o+=Qs(a)+" = "+or(e[a],Lt(e[a]),t-1,n,r)}return o+" }"}function $u(e,t,n,r){if(e.length===0)return"[]";let s="[ ";for(let o=0;o<e.length;o++){if(o&&(s+=", "),e[o]===null||e[o]===void 0)throw new TypeError("arrays cannot contain null or undefined values");s+=or(e[o],Lt(e[o]),t-1,n,r)}return s+" ]"}function Cu(e,t,n,r,s){if(n===0)throw new Error("Could not stringify the object: maximum object depth exceeded");let o="";for(let i=0;i<e.length;i++)o+=`${o&&`
|
|
7
|
+
${o}`,n),this.line=r,this.column=s,this.codeblock=o}static x(t,n,r){throw new e(t,{toml:n.s,ptr:r??n.p})}}});function cn(e){let t=e.p,n=e.s.charCodeAt(e.p++),r=n,s=n===39,o=n===e.s.charCodeAt(e.p)&&n===e.s.charCodeAt(e.p+1);o&&((n=e.s.charCodeAt(e.p+=2))===10?e.p++:n===13&&e.s.charCodeAt(e.p+1)===10&&(e.p+=2));let i="",a=e.p,l=0;for(;e.p<e.s.length;e.p++)if(n=e.s.charCodeAt(e.p),o&&(n===10||n===13&&e.s.charCodeAt(e.p+1)===10))l=l&&3;else if(n<32&&n!==9||n===127)E.x("control characters are not allowed in strings",e);else if((!l||l===3)&&n===r&&(!o||e.s.charCodeAt(e.p+1)===r&&e.s.charCodeAt(e.p+2)===r)){if(o&&(e.s.charCodeAt(e.p+3)===r&&e.p++,e.s.charCodeAt(e.p+3)===r&&e.p++),!l){let u=e.s.slice(a,e.p);i=i?i+u:u}return e.p+=o?3:1,i}else if(!l)!s&&n===92&&(i+=e.s.slice(a,a=e.p),l=1);else if(l===1)if(n===120||n===117||n===85){let u=e.p++-1,c=0,f=n===120?2:n===117?4:8;for(let d=0;d<f;d++,e.p++){let p=e.s.charCodeAt(e.p),g=p>=48&&p<=57?p-48:p>=65&&p<=70?p-65+10:p>=97&&p<=102?p-97+10:-1;g<0&&E.x("invalid non-hex character in unicode escape",e),c=c<<4|g}(c<0||c>1114111||c>=55296&&c<=57343)&&E.x("invalid unicode escape",e,u),i+=String.fromCodePoint(c),a=e.p--,l=0}else o&&(n===32||n===9)?l=2:(n===98?i+="\b":n===116?i+=" ":n===110?i+=`
|
|
8
|
+
`:n===102?i+="\f":n===114?i+="\r":n===101?i+="\x1B":n===34?i+='"':n===92?i+="\\":E.x("unrecognised escape sequence",e),a=e.p+1,l=0);else n!==32&&n!==9&&(l===2&&E.x("invalid escape: only line-ending whitespace may be escaped",e,a),l=!s&&n===92?1:0,a=e.p);E.x("unfinished string",e,t)}var Xn=he(()=>{Ke();});var xc,qe,Qn=he(()=>{xc=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i,qe=class e extends Date{#t=!1;#n=!1;#e=null;constructor(t,n,r){let s=!0,o=!0,i="Z",a;if(typeof t=="string")if(n)e:{if(n<3){if(+t.slice(11,13)>23){t="";break e}n===2?(i=null,t+="Z"):(a=t.charCodeAt(t.length-1))!==90&&a!==122&&(i=t.slice(t.length-6)),r&&(t=t.slice(0,10)+"T"+t.slice(11))}else n===4&&(t=+t.slice(0,2)>23?"":`0000-01-01T${t}Z`);s=n!==4,o=n!==3}else{let l=t.match(xc);l?(l[1]||(s=!1,t=`0000-01-01T${t}`),o=!!l[2],o&&t[10]===" "&&(t=t.replace(" ","T")),l[2]&&+l[2]>23?t="":(i=l[3]||null,!i&&o&&(t+="Z"))):t=""}super(t),isNaN(this.getTime())||(this.#t=s,this.#n=o,this.#e=i)}isDateTime(){return this.#t&&this.#n}isLocal(){return!this.#t||!this.#n||!this.#e}isDate(){return this.#t&&!this.#n}isTime(){return this.#n&&!this.#t}isValid(){return this.#t||this.#n}toISOString(){let t=super.toISOString();if(this.isDate())return t.slice(0,10);if(this.isTime())return t.slice(11,23);if(this.#e===null)return t.slice(0,-1);if(this.#e==="Z"||this.#e==="z")return t;let n=+this.#e.slice(1,3)*60+ +this.#e.slice(4,6);return n=this.#e[0]==="-"?n:-n,new Date(this.getTime()-n*6e4).toISOString().slice(0,-1)+this.#e}static wrapAsOffsetDateTime(t,n="Z"){let r=new e(t);return r.#e=n,r}static wrapAsLocalDateTime(t){let n=new e(t);return n.#e=null,n}static wrapAsLocalDate(t){let n=new e(t);return n.#n=!1,n.#e=null,n}static wrapAsLocalTime(t){let n=new e(t);return n.#t=!1,n.#e=null,n}}});function V(e,t=10){return t===16?e>47&&e<58||e>64&&e<71||e>96&&e<103:e>47&&e<48+t}function tr(e,t){return e===32||e===9||e===10||e===13||t&&(e===t||e===44)||e===35}function Pt(e,t){let n=e.p,r=e.s.charCodeAt(e.p);if(r===91||r===123){e.d--||E.x("document contains excessively nested structures. aborting.",e);let s=r===91?Ws(e):Gs(e);return e.d++,s}return r===34||r===39?cn(e):r===116?((e.s.charCodeAt(++e.p)!==114||e.s.charCodeAt(++e.p)!==117||e.s.charCodeAt(++e.p)!==101)&&E.x("invalid value",e,n),e.p++,!0):r===102?((e.s.charCodeAt(++e.p)!==97||e.s.charCodeAt(++e.p)!==108||e.s.charCodeAt(++e.p)!==115||e.s.charCodeAt(++e.p)!==101)&&E.x("invalid value",e,n),e.p++,!1):r===43||r===45?fn(e,e.p,e.s.charCodeAt(++e.p),44-r,t):e.s.charCodeAt(e.p+4)===45&&e.s.charCodeAt(e.p+7)===45?wc(e,r,t):e.s.charCodeAt(e.p+2)===58?Sc(e,r,t):fn(e,e.p,r,0,t)}function fn(e,t,n,r,s){let o=n,i=0,a=!1;if(o===105)return(e.s.charCodeAt(++e.p)!==110||e.s.charCodeAt(++e.p)!==102)&&E.x("invalid value",e,t),e.p++,(r||1)/0;if(o===110)return(e.s.charCodeAt(++e.p)!==97||e.s.charCodeAt(++e.p)!==110)&&E.x("invalid value",e,t),e.p++,NaN;if(o===48){if(++e.p>=e.s.length||tr(o=e.s.charCodeAt(e.p),s))return e.bi===!0?0n:0;if(!r){if(o===120)return er(e,t,16,s);if(o===98)return er(e,t,2,s);if(o===111)return er(e,t,8,s)}o===46?i=2:o===101||o===69?i=4:E.x("illegal leading zero",e,t)}else V(o)||E.x("invalid value",e,t);for(;++e.p<e.s.length&&(o=e.s.charCodeAt(e.p),!tr(o,s));)i||(i=1),o===95?(i&1||E.x("illegal underscore",e),i+=11,a=!0):i===1&&o===46?i=2:(i===1||i===3)&&(o===101||o===69)?i=4:i===4&&(o===43||o===45)||(V(o)?i>9?i-=11:i&1||i++:E.x("illegal character in numeric literal",e));if(!i){let u=(n-48)*(r||1);return e.bi===!0?BigInt(u):u}i&1||E.x("unfinished numeric value",e,t);let l=e.s.slice(t,e.p);return a&&(l=l.replaceAll("_","")),i>1?parseFloat(l):Js(e,l,10,t)}function er(e,t,n,r){let s,o=1;for(;++e.p<e.s.length&&(s=e.s.charCodeAt(e.p),!tr(s,r));)s===95?(o&1&&E.x("illegal underscore",e),o=3):V(s,n)?o&1&&o--:E.x("illegal character in numeric literal",e);o&1&&E.x("unfinished numeric value",e);let i=e.s.slice(t+2,e.p);return o&&(i=i.replaceAll("_","")),Js(e,i,n,t)}function Js(e,t,n,r){if(e.bi!==!0)e:{let s=parseInt(t,n);if(!Number.isSafeInteger(s)){if(e.bi)break e;E.x("integer value cannot be represented losslessly",e,r)}return s}return BigInt(n===10?t:(n===2?"0b":n===8?"0o":"0x")+t)}function wc(e,t,n){let r=e.p++,s;if(!V(t)||!V(e.s.charCodeAt(e.p++))||!V(e.s.charCodeAt(e.p++))||!V(e.s.charCodeAt(e.p++)))return fn(e,e.p=r,t,0,n);if(e.p+=5,V(e.s.charCodeAt(e.p++))||E.x("invalid date-time: date part is malformed",e,r),e.p>=e.s.length||((t=e.s.charCodeAt(e.p))!==32||(s=!0,!V(e.s.charCodeAt(e.p+1))))&&t!==84&&t!==116){let i=e.s.slice(r,e.p);return Nt(e,i,3,!1,r)}if(e.s.charCodeAt(e.p+=3)!==58&&E.x("invalid date-time: time part is malformed",e,r),e.s.charCodeAt(e.p+=3)===58&&(e.p+=3),e.s.charCodeAt(e.p)===46)for(;V(e.s.charCodeAt(++e.p)););if(t=e.s.charCodeAt(e.p)){if(t===90||t===122){let i=e.s.slice(r,++e.p);return Nt(e,i,1,s,r,"[+00:00]")}if(t===43||t===45){let i=e.s.slice(r,e.p+=6);return Nt(e,i,1,s,r,!e.ld&&"["+e.s.slice(e.p-6,e.p)+"]")}}let o=e.s.slice(r,e.p);return Nt(e,o,2,s,r)}function Sc(e,t,n){let r=e.p;if(!V(t)||!V(e.s.charCodeAt(++e.p)))return fn(e,--e.p,t,0,n);if(e.s.charCodeAt(e.p+=4)===58&&(e.p+=3),e.s.charCodeAt(e.p)===46)for(;V(e.s.charCodeAt(++e.p)););let s=e.s.slice(r,e.p);return Nt(e,s,4,!1,r)}function Nt(e,t,n,r,s,o){if(e.ld){let i=new qe(t,n,r);return i.isValid()||E.x("invalid date",e,s),i}try{switch(o&&(t+=o),n){case 1:return Temporal.ZonedDateTime.from(t);case 2:return Temporal.PlainDateTime.from(t);case 3:return Temporal.PlainDate.from(t);case 4:return Temporal.PlainTime.from(t)}}catch(i){E.x(i instanceof Error?i.message:""+i,e,s)}}var nr=he(()=>{Xn();rr();Ke();Qn();});function vc(e){for(;e.p<e.s.length;e.p++){let t=e.s.charCodeAt(e.p);if(t===10)break;if(t===13&&e.s.charCodeAt(e.p+1)===10){e.p++;break}(t<32&&t!==9||t===127)&&E.x("control characters are not allowed in comments",e)}}function se(e,t,n){let r;for(;e.p<e.s.length;){for(;e.p<e.s.length&&((r=e.s.charCodeAt(e.p))===32||r===9||!t&&(r===10||r===13&&e.s.charCodeAt(e.p+1)===10));)e.p++;if(n||r!==35)break;vc(e)}}var sr=he(()=>{Ke();});function dn(e,t=61){let n,r=0,s=[],o,i=e.s.charCodeAt(n=e.p);do{if(i===t)return r||E.x("unexpected end of key",e),r===1&&s.push(e.s.slice(o,e.p)),e.p++,s;i===46?(r||E.x("illegal empty bare key",e),r===1&&s.push(e.s.slice(o,e.p)),r=0):!r&&(i===34||i===39)?(i===e.s.charCodeAt(e.p+1)&&i===e.s.charCodeAt(e.p+2)&&E.x("illegal quoted key: multiline strings are not allowed",e),s.push(cn(e)),r=2,e.p--):i===32||i===9?r===1&&(s.push(e.s.slice(o,e.p)),r=2):r===2||i<48&&i!==45||i>57&&i<65||i>90&&i<97&&i!==95||i>122?E.x("illegal character in key",e):r||(r=1,o=e.p)}while(i=e.s.charCodeAt(++e.p));E.x("incomplete key-value: cannot find end of key",e,n)}function Gs(e){let t=e.p++,n=Object.create(null),r=new Set,s;for(;e.p<e.s.length;){if(se(e),(s=e.s.charCodeAt(e.p))===125)return e.p++,n;let o,i=n,a=!1,l=e.p,u=dn(e);for(let f=0;f<u.length;f++){f&&(i=a?i[o]:i[o]=Object.create(null)),o=u[f],(a=Object.hasOwn(i,o))&&(typeof i[o]!="object"||r.has(i[o]))&&E.x("trying to redefine an already defined value",e,l);let d=o==="__proto__";if(e.uk&&(d||o==="constructor")){i=e.uk!==1&&E.x("document contains an unsafe property",e,l);break}!a&&d&&Object.defineProperty(i,o,{enumerable:!0,configurable:!0,writable:!0})}a&&E.x("trying to redefine an already defined value",e,l),se(e,!0,!0);let c=Pt(e,125);if(i&&typeof(i[o]=c)=="object"&&r.add(c),se(e),(s=e.s.charCodeAt(e.p++))===125)return n;s!==44&&E.x("expected comma or end of structure",e,e.p-1)}E.x("unfinished table",e,t)}function Ws(e){let t=e.p++,n=[],r;for(;e.p<e.s.length;){if(se(e),(r=e.s.charCodeAt(e.p))===93)return e.p++,n;if(n.push(Pt(e,93)),se(e),(r=e.s.charCodeAt(e.p++))===93)return n;r!==44&&E.x("expected comma or end of structure",e,e.p-1)}E.x("unfinished array",e,t)}var rr=he(()=>{Xn();nr();sr();Ke();});function Vs(e,t,n,r,s){let o=n,i=r,a,l=!1,u;for(let c=0;c<t.length;c++){if(c){if(o=l?o[a]:o[a]=Object.create(null),i=(u=i[a]).c,s===0&&(u.t===1||u.t===2))return null;if(u.t===2){let f=o.length-1;o=o[f],i=i[f].c}}if(a=t[c],(l=Object.hasOwn(o,a))&&i[a]?.t===0&&i[a]?.d)return null;if(!l){let f=a==="__proto__";if(e.uk&&(f||a==="constructor"))return!1;f&&(Object.defineProperty(o,a,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(i,a,{enumerable:!0,configurable:!0,writable:!0})),i[a]={t:c<t.length-1&&s===2?3:s,d:!1,i:0,c:Object.create(null)}}}if(u=i[a],u.t!==s&&!(s===1&&u.t===3)||(s===2&&(u.d||(u.d=!0,o[a]=[]),o[a].push(o=Object.create(null)),u.c[u.i++]=u={t:1,d:!1,i:0,c:Object.create(null)}),u.d))return null;if(u.d=!0,s===1)o=l?o[a]:o[a]=Object.create(null);else if(s===0&&l)return null;return[a,o,u.c]}function Ks(e,t,n){(t===null||e.uk===2)&&E.x(t===null?"trying to redefine an already defined table or value":"document contains an unsafe property",e,n)}function Dt(e,t={}){let n={s:e,p:0,d:t.maxDepth??1e3,bi:t.integersAsBigInt??!1,ld:t.useLegacyDate??!0,uk:t.unsafeKeyBehaviour==="throw"?2:t.unsafeKeyBehaviour==="drop"?1:0},r=Object.create(null),s=Object.create(null),o,i=!1,a=r,l=s;for(e.charCodeAt(0)===65279&&n.p++,se(n);n.p<e.length;){if(e.charCodeAt(n.p)===91){let u=e.charCodeAt(++n.p)===91;o=n.p+=+u,i=!1;let c=dn(n,93);u&&(e.charCodeAt(n.p)!==93&&E.x("expected end of table array declaration",n),n.p++);let f=Vs(n,c,r,s,u?2:1);f?(l=f[2],a=f[1]):(Ks(n,f,o),i=!0)}else{o=n.p;let u=dn(n),c=Vs(n,u,a,l,0);!c&&!i&&Ks(n,c,o),se(n,!0,!0);let f=Pt(n,void 0);c&&!i&&(c[1][c[0]]=f)}se(n,!0),n.p<e.length&&(o=e.charCodeAt(n.p))!==10&&(o!==13||e.charCodeAt(n.p+1)!==10)&&E.x("each key-value declaration must be followed by an end-of-line",n),se(n)}return r}var qs=he(()=>{rr();nr();sr();Ke();});function Lt(e){let t=typeof e;if(t==="object"){if(Array.isArray(e))return"array";if(typeof e.getUTCDate=="function"&&e instanceof Date)return"date";if(globalThis.Temporal){if(e.until){if(e instanceof Temporal.ZonedDateTime)return"temporal/tz+uc";if(e instanceof Temporal.PlainDateTime||e instanceof Temporal.PlainDate)return"temporal/uc";if(e instanceof Temporal.PlainTime||e instanceof Temporal.Instant)return"temporal";if(e instanceof Temporal.PlainYearMonth)return"temporal/x"}else if(e.toPlainDate&&e instanceof Temporal.PlainMonthDay||e.negated&&e instanceof Temporal.Duration)return"temporal/x"}}return t}function Tc(e){for(let t=0;t<e.length;t++)if(Lt(e[t])!=="object")return!1;return e.length!=0}function Xs(e){return JSON.stringify(e).replaceAll("\x7F","\\u007f")}function Ac(e){return Xs(Ys?e.toWellFormed():e)}function Qs(e){if(Ec.test(e))return e;if(Ys&&!e.isWellFormed())throw new RangeError("key contains illegal lone surrogates");return Xs(e)}function or(e,t,n,r,s){if(n===0)throw new Error("Could not stringify the object: maximum object depth exceeded");switch(t){case"number":if(isNaN(e))return"nan";if(e===1/0)return"inf";if(e===-1/0)return"-inf";if(Number.isInteger(e)&&(r||!Number.isSafeInteger(e)))return e.toFixed(1);case"bigint":case"boolean":case"temporal":return e.toString();case"string":return Ac(e);case"date":if(isNaN(e.getTime()))throw new TypeError("cannot serialize invalid date");return e.toISOString();case"object":return Rc(e,n,r,s);case"array":return $c(e,n,r,s);case"temporal/tz+uc":if(s){let o=e.timeZoneId,i=o.charCodeAt(0);if(i!==43&&i!==45&&(i!==85&&i!==71&&i!==90&&i!==69||o!=="UTC"&&o!=="UCT"&&o!=="Universal"&&o!=="Zulu"&&!o.startsWith("GMT")&&o!=="Greenwich"&&!o.startsWith("Etc/")))throw new TypeError("Temporal objects with an IANA timezone are not allowed in Temporal strict mode")}case"temporal/uc":if(s&&e.calendarId!=="iso8601")throw new TypeError("Temporal objects with a non-default calendar are not allowed in Temporal strict mode");return e.toString({calendarName:"never",timeZoneName:"never"});case"temporal/x":throw new TypeError("Unsupported "+e[Symbol.toStringTag])}}function Rc(e,t,n,r){let s=Object.keys(e);if(s.length===0)return"{}";let o="{ ";for(let i=0;i<s.length;i++){let a=s[i];i&&(o+=", "),o+=Qs(a)+" = "+or(e[a],Lt(e[a]),t-1,n,r)}return o+" }"}function $c(e,t,n,r){if(e.length===0)return"[]";let s="[ ";for(let o=0;o<e.length;o++){if(o&&(s+=", "),e[o]===null||e[o]===void 0)throw new TypeError("arrays cannot contain null or undefined values");s+=or(e[o],Lt(e[o]),t-1,n,r)}return s+" ]"}function Cc(e,t,n,r,s){if(n===0)throw new Error("Could not stringify the object: maximum object depth exceeded");let o="";for(let i=0;i<e.length;i++)o+=`${o&&`
|
|
9
9
|
`}[[${t}]]
|
|
10
|
-
`,o+=ir(0,e[i],t,n,r,s);return o}function ir(e,t,n,r,s,o){if(r===0)throw new Error("Could not stringify the object: maximum object depth exceeded");let i="",a="",l=Object.keys(t);for(let
|
|
11
|
-
`)+
|
|
12
|
-
`)+ir(p,t[
|
|
10
|
+
`,o+=ir(0,e[i],t,n,r,s);return o}function ir(e,t,n,r,s,o){if(r===0)throw new Error("Could not stringify the object: maximum object depth exceeded");let i="",a="",l=Object.keys(t);for(let u=0;u<l.length;u++){let c=l[u];if(t[c]!==null&&t[c]!==void 0){let f=Lt(t[c]);if(f==="symbol"||f==="function")throw new TypeError(`cannot serialize values of type '${f}'`);let d=Qs(c);if(f==="array"&&Tc(t[c]))a+=(a&&`
|
|
11
|
+
`)+Cc(t[c],n?`${n}.${d}`:d,r-1,s,o);else if(f==="object"){let p=n?`${n}.${d}`:d;a+=(a&&`
|
|
12
|
+
`)+ir(p,t[c],p,r-1,s,o)}else i+=d,i+=" = ",i+=or(t[c],f,r,s,o),i+=`
|
|
13
13
|
`}}return e&&(i||!a)&&(i=i?`[${e}]
|
|
14
14
|
${i}`:`[${e}]`),i&&a?`${i}
|
|
15
15
|
${a}`:i||a}function ar(e,{maxDepth:t=1e3,numbersAsFloat:n=!1,strictTemporal:r=!1}={}){if(Lt(e)!=="object")throw new TypeError("stringify can only be called with an object");let s=ir(0,e,"",t,n,r);return s[s.length-1]!==`
|
|
16
16
|
`?s+`
|
|
17
|
-
`:s}var Eu,Ys,eo=ge(()=>{Eu=/^[a-z0-9-_]+$/i,Ys=!!"".isWellFormed});var lr={};Ns(lr,{TomlDate:()=>qe,TomlError:()=>E,default:()=>Ou,parse:()=>Dt,stringify:()=>ar});var Ou,pn=ge(()=>{qs();eo();Qn();Ke();Ou={parse:Dt,stringify:ar,TomlDate:qe,TomlError:E}});import{readdir as Iu,readFile as Nu}from"node:fs/promises";import{join as no,dirname as Pu}from"node:path";import{fileURLToPath as Du}from"node:url";var k={};Ns(k,{BRAND:()=>Pc,DIRTY:()=>Ne,EMPTY_PATH:()=>dc,INVALID:()=>v,NEVER:()=>ku,OK:()=>U,ParseStatus:()=>j,Schema:()=>O,ZodAny:()=>ve,ZodArray:()=>be,ZodBigInt:()=>De,ZodBoolean:()=>Le,ZodBranded:()=>Ot,ZodCatch:()=>We,ZodDate:()=>Me,ZodDefault:()=>Ge,ZodDiscriminatedUnion:()=>an,ZodEffects:()=>Y,ZodEnum:()=>Ze,ZodError:()=>G,ZodFirstPartyTypeKind:()=>T,ZodFunction:()=>cn,ZodIntersection:()=>ze,ZodIssueCode:()=>g,ZodLazy:()=>Ue,ZodLiteral:()=>Be,ZodMap:()=>at,ZodNaN:()=>ct,ZodNativeEnum:()=>Je,ZodNever:()=>re,ZodNull:()=>je,ZodNullable:()=>ce,ZodNumber:()=>Pe,ZodObject:()=>W,ZodOptional:()=>K,ZodParsedType:()=>x,ZodPipeline:()=>It,ZodPromise:()=>Ee,ZodReadonly:()=>Ve,ZodRecord:()=>ln,ZodSchema:()=>O,ZodSet:()=>lt,ZodString:()=>Se,ZodSymbol:()=>ot,ZodTransformer:()=>Y,ZodTuple:()=>le,ZodType:()=>O,ZodUndefined:()=>Fe,ZodUnion:()=>He,ZodUnknown:()=>ke,ZodVoid:()=>it,addIssueToContext:()=>_,any:()=>Bc,array:()=>Wc,bigint:()=>Fc,boolean:()=>Zs,coerce:()=>yu,custom:()=>zs,date:()=>jc,datetimeRegex:()=>js,defaultErrorMap:()=>he,discriminatedUnion:()=>Yc,effect:()=>cu,enum:()=>iu,function:()=>ru,getErrorMap:()=>nt,getParsedType:()=>ae,instanceof:()=>Lc,intersection:()=>Xc,isAborted:()=>sn,isAsync:()=>rt,isDirty:()=>on,isValid:()=>we,late:()=>Dc,lazy:()=>su,literal:()=>ou,makeIssue:()=>Ct,map:()=>tu,nan:()=>Mc,nativeEnum:()=>au,never:()=>Jc,null:()=>Uc,nullable:()=>fu,number:()=>Bs,object:()=>Vc,objectUtil:()=>Kn,oboolean:()=>hu,onumber:()=>gu,optional:()=>uu,ostring:()=>mu,pipeline:()=>pu,preprocess:()=>du,promise:()=>lu,quotelessJson:()=>cc,record:()=>eu,set:()=>nu,setErrorMap:()=>fc,strictObject:()=>Kc,string:()=>Us,symbol:()=>Hc,transformer:()=>cu,tuple:()=>Qc,undefined:()=>zc,union:()=>qc,unknown:()=>Zc,util:()=>N,void:()=>Gc});var N;(function(e){e.assertEqual=s=>{};function t(s){}e.assertIs=t;function n(s){throw new Error}e.assertNever=n,e.arrayToEnum=s=>{let o={};for(let i of s)o[i]=i;return o},e.getValidEnumValues=s=>{let o=e.objectKeys(s).filter(a=>typeof s[s[a]]!="number"),i={};for(let a of o)i[a]=s[a];return e.objectValues(i)},e.objectValues=s=>e.objectKeys(s).map(function(o){return s[o]}),e.objectKeys=typeof Object.keys=="function"?s=>Object.keys(s):s=>{let o=[];for(let i in s)Object.prototype.hasOwnProperty.call(s,i)&&o.push(i);return o},e.find=(s,o)=>{for(let i of s)if(o(i))return i},e.isInteger=typeof Number.isInteger=="function"?s=>Number.isInteger(s):s=>typeof s=="number"&&Number.isFinite(s)&&Math.floor(s)===s;function r(s,o=" | "){return s.map(i=>typeof i=="string"?`'${i}'`:i).join(o)}e.joinValues=r,e.jsonStringifyReplacer=(s,o)=>typeof o=="bigint"?o.toString():o})(N||(N={}));var Kn;(function(e){e.mergeShapes=(t,n)=>({...t,...n})})(Kn||(Kn={}));var x=N.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),ae=e=>{switch(typeof e){case"undefined":return x.undefined;case"string":return x.string;case"number":return Number.isNaN(e)?x.nan:x.number;case"boolean":return x.boolean;case"function":return x.function;case"bigint":return x.bigint;case"symbol":return x.symbol;case"object":return Array.isArray(e)?x.array:e===null?x.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?x.promise:typeof Map<"u"&&e instanceof Map?x.map:typeof Set<"u"&&e instanceof Set?x.set:typeof Date<"u"&&e instanceof Date?x.date:x.object;default:return x.unknown}};var g=N.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),cc=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:"),G=class e extends Error{get errors(){return this.issues}constructor(t){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};let n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=t}format(t){let n=t||function(o){return o.message},r={_errors:[]},s=o=>{for(let i of o.issues)if(i.code==="invalid_union")i.unionErrors.map(s);else if(i.code==="invalid_return_type")s(i.returnTypeError);else if(i.code==="invalid_arguments")s(i.argumentsError);else if(i.path.length===0)r._errors.push(n(i));else{let a=r,l=0;for(;l<i.path.length;){let c=i.path[l];l===i.path.length-1?(a[c]=a[c]||{_errors:[]},a[c]._errors.push(n(i))):a[c]=a[c]||{_errors:[]},a=a[c],l++}}};return s(this),r}static assert(t){if(!(t instanceof e))throw new Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,N.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=n=>n.message){let n={},r=[];for(let s of this.issues)if(s.path.length>0){let o=s.path[0];n[o]=n[o]||[],n[o].push(t(s))}else r.push(t(s));return{formErrors:r,fieldErrors:n}}get formErrors(){return this.flatten()}};G.create=e=>new G(e);var uc=(e,t)=>{let n;switch(e.code){case g.invalid_type:e.received===x.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case g.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,N.jsonStringifyReplacer)}`;break;case g.unrecognized_keys:n=`Unrecognized key(s) in object: ${N.joinValues(e.keys,", ")}`;break;case g.invalid_union:n="Invalid input";break;case g.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${N.joinValues(e.options)}`;break;case g.invalid_enum_value:n=`Invalid enum value. Expected ${N.joinValues(e.options)}, received '${e.received}'`;break;case g.invalid_arguments:n="Invalid function arguments";break;case g.invalid_return_type:n="Invalid function return type";break;case g.invalid_date:n="Invalid date";break;case g.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:N.assertNever(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case g.too_small:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="bigint"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:n="Invalid input";break;case g.too_big:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?n=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:n="Invalid input";break;case g.custom:n="Invalid input";break;case g.invalid_intersection_types:n="Intersection results could not be merged";break;case g.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case g.not_finite:n="Number must be finite";break;default:n=t.defaultError,N.assertNever(e)}return{message:n}},he=uc;var Ps=he;function fc(e){Ps=e}function nt(){return Ps}var Ct=e=>{let{data:t,path:n,errorMaps:r,issueData:s}=e,o=[...n,...s.path||[]],i={...s,path:o};if(s.message!==void 0)return{...s,path:o,message:s.message};let a="",l=r.filter(c=>!!c).slice().reverse();for(let c of l)a=c(i,{data:t,defaultError:a}).message;return{...s,path:o,message:a}},dc=[];function _(e,t){let n=nt(),r=Ct({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===he?void 0:he].filter(s=>!!s)});e.common.issues.push(r)}var j=class e{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,n){let r=[];for(let s of n){if(s.status==="aborted")return v;s.status==="dirty"&&t.dirty(),r.push(s.value)}return{status:t.value,value:r}}static async mergeObjectAsync(t,n){let r=[];for(let s of n){let o=await s.key,i=await s.value;r.push({key:o,value:i})}return e.mergeObjectSync(t,r)}static mergeObjectSync(t,n){let r={};for(let s of n){let{key:o,value:i}=s;if(o.status==="aborted"||i.status==="aborted")return v;o.status==="dirty"&&t.dirty(),i.status==="dirty"&&t.dirty(),o.value!=="__proto__"&&(typeof i.value<"u"||s.alwaysSet)&&(r[o.value]=i.value)}return{status:t.value,value:r}}},v=Object.freeze({status:"aborted"}),Ne=e=>({status:"dirty",value:e}),U=e=>({status:"valid",value:e}),sn=e=>e.status==="aborted",on=e=>e.status==="dirty",we=e=>e.status==="valid",rt=e=>typeof Promise<"u"&&e instanceof Promise;var S;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t?.message})(S||(S={}));var q=class{constructor(t,n,r,s){this._cachedPath=[],this.parent=t,this.data=n,this._path=r,this._key=s}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},Ds=(e,t)=>{if(we(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let n=new G(e.common.issues);return this._error=n,this._error}}};function $(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:s}=e;if(t&&(n||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:s}:{errorMap:(i,a)=>{let{message:l}=e;return i.code==="invalid_enum_value"?{message:l??a.defaultError}:typeof a.data>"u"?{message:l??r??a.defaultError}:i.code!=="invalid_type"?{message:a.defaultError}:{message:l??n??a.defaultError}},description:s}}var O=class{get description(){return this._def.description}_getType(t){return ae(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:ae(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new j,ctx:{common:t.parent.common,data:t.data,parsedType:ae(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){let n=this._parse(t);if(rt(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(t){let n=this._parse(t);return Promise.resolve(n)}parse(t,n){let r=this.safeParse(t,n);if(r.success)return r.data;throw r.error}safeParse(t,n){let r={common:{issues:[],async:n?.async??!1,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:ae(t)},s=this._parseSync({data:t,path:r.path,parent:r});return Ds(r,s)}"~validate"(t){let n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:ae(t)};if(!this["~standard"].async)try{let r=this._parseSync({data:t,path:[],parent:n});return we(r)?{value:r.value}:{issues:n.common.issues}}catch(r){r?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),n.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:n}).then(r=>we(r)?{value:r.value}:{issues:n.common.issues})}async parseAsync(t,n){let r=await this.safeParseAsync(t,n);if(r.success)return r.data;throw r.error}async safeParseAsync(t,n){let r={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:ae(t)},s=this._parse({data:t,path:r.path,parent:r}),o=await(rt(s)?s:Promise.resolve(s));return Ds(r,o)}refine(t,n){let r=s=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(s):n;return this._refinement((s,o)=>{let i=t(s),a=()=>o.addIssue({code:g.custom,...r(s)});return typeof Promise<"u"&&i instanceof Promise?i.then(l=>l?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(t,n){return this._refinement((r,s)=>t(r)?!0:(s.addIssue(typeof n=="function"?n(r,s):n),!1))}_refinement(t){return new Y({schema:this,typeName:T.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:n=>this["~validate"](n)}}optional(){return K.create(this,this._def)}nullable(){return ce.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return be.create(this)}promise(){return Ee.create(this,this._def)}or(t){return He.create([this,t],this._def)}and(t){return ze.create(this,t,this._def)}transform(t){return new Y({...$(this._def),schema:this,typeName:T.ZodEffects,effect:{type:"transform",transform:t}})}default(t){let n=typeof t=="function"?t:()=>t;return new Ge({...$(this._def),innerType:this,defaultValue:n,typeName:T.ZodDefault})}brand(){return new Ot({typeName:T.ZodBranded,type:this,...$(this._def)})}catch(t){let n=typeof t=="function"?t:()=>t;return new We({...$(this._def),innerType:this,catchValue:n,typeName:T.ZodCatch})}describe(t){let n=this.constructor;return new n({...this._def,description:t})}pipe(t){return It.create(this,t)}readonly(){return Ve.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},pc=/^c[^\s-]{8,}$/i,mc=/^[0-9a-z]+$/,gc=/^[0-9A-HJKMNP-TV-Z]{26}$/i,hc=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,yc=/^[a-z0-9_-]{21}$/i,kc=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,bc=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,_c=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,xc="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",qn,wc=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Sc=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,vc=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Ec=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Tc=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Ac=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Ms="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",Rc=new RegExp(`^${Ms}$`);function Fs(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision==null&&(t=`${t}(\\.\\d+)?`);let n=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function $c(e){return new RegExp(`^${Fs(e)}$`)}function js(e){let t=`${Ms}T${Fs(e)}`,n=[];return n.push(e.local?"Z?":"Z"),e.offset&&n.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${n.join("|")})`,new RegExp(`^${t}$`)}function Cc(e,t){return!!((t==="v4"||!t)&&wc.test(e)||(t==="v6"||!t)&&vc.test(e))}function Oc(e,t){if(!kc.test(e))return!1;try{let[n]=e.split(".");if(!n)return!1;let r=n.replace(/-/g,"+").replace(/_/g,"/").padEnd(n.length+(4-n.length%4)%4,"="),s=JSON.parse(atob(r));return!(typeof s!="object"||s===null||"typ"in s&&s?.typ!=="JWT"||!s.alg||t&&s.alg!==t)}catch{return!1}}function Ic(e,t){return!!((t==="v4"||!t)&&Sc.test(e)||(t==="v6"||!t)&&Ec.test(e))}var Se=class e extends O{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==x.string){let o=this._getOrReturnCtx(t);return _(o,{code:g.invalid_type,expected:x.string,received:o.parsedType}),v}let r=new j,s;for(let o of this._def.checks)if(o.kind==="min")t.data.length<o.value&&(s=this._getOrReturnCtx(t,s),_(s,{code:g.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="max")t.data.length>o.value&&(s=this._getOrReturnCtx(t,s),_(s,{code:g.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="length"){let i=t.data.length>o.value,a=t.data.length<o.value;(i||a)&&(s=this._getOrReturnCtx(t,s),i?_(s,{code:g.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):a&&_(s,{code:g.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),r.dirty())}else if(o.kind==="email")_c.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"email",code:g.invalid_string,message:o.message}),r.dirty());else if(o.kind==="emoji")qn||(qn=new RegExp(xc,"u")),qn.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"emoji",code:g.invalid_string,message:o.message}),r.dirty());else if(o.kind==="uuid")hc.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"uuid",code:g.invalid_string,message:o.message}),r.dirty());else if(o.kind==="nanoid")yc.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"nanoid",code:g.invalid_string,message:o.message}),r.dirty());else if(o.kind==="cuid")pc.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"cuid",code:g.invalid_string,message:o.message}),r.dirty());else if(o.kind==="cuid2")mc.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"cuid2",code:g.invalid_string,message:o.message}),r.dirty());else if(o.kind==="ulid")gc.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"ulid",code:g.invalid_string,message:o.message}),r.dirty());else if(o.kind==="url")try{new URL(t.data)}catch{s=this._getOrReturnCtx(t,s),_(s,{validation:"url",code:g.invalid_string,message:o.message}),r.dirty()}else o.kind==="regex"?(o.regex.lastIndex=0,o.regex.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"regex",code:g.invalid_string,message:o.message}),r.dirty())):o.kind==="trim"?t.data=t.data.trim():o.kind==="includes"?t.data.includes(o.value,o.position)||(s=this._getOrReturnCtx(t,s),_(s,{code:g.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),r.dirty()):o.kind==="toLowerCase"?t.data=t.data.toLowerCase():o.kind==="toUpperCase"?t.data=t.data.toUpperCase():o.kind==="startsWith"?t.data.startsWith(o.value)||(s=this._getOrReturnCtx(t,s),_(s,{code:g.invalid_string,validation:{startsWith:o.value},message:o.message}),r.dirty()):o.kind==="endsWith"?t.data.endsWith(o.value)||(s=this._getOrReturnCtx(t,s),_(s,{code:g.invalid_string,validation:{endsWith:o.value},message:o.message}),r.dirty()):o.kind==="datetime"?js(o).test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{code:g.invalid_string,validation:"datetime",message:o.message}),r.dirty()):o.kind==="date"?Rc.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{code:g.invalid_string,validation:"date",message:o.message}),r.dirty()):o.kind==="time"?$c(o).test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{code:g.invalid_string,validation:"time",message:o.message}),r.dirty()):o.kind==="duration"?bc.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"duration",code:g.invalid_string,message:o.message}),r.dirty()):o.kind==="ip"?Cc(t.data,o.version)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"ip",code:g.invalid_string,message:o.message}),r.dirty()):o.kind==="jwt"?Oc(t.data,o.alg)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"jwt",code:g.invalid_string,message:o.message}),r.dirty()):o.kind==="cidr"?Ic(t.data,o.version)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"cidr",code:g.invalid_string,message:o.message}),r.dirty()):o.kind==="base64"?Tc.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"base64",code:g.invalid_string,message:o.message}),r.dirty()):o.kind==="base64url"?Ac.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"base64url",code:g.invalid_string,message:o.message}),r.dirty()):N.assertNever(o);return{status:r.value,value:t.data}}_regex(t,n,r){return this.refinement(s=>t.test(s),{validation:n,code:g.invalid_string,...S.errToObj(r)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...S.errToObj(t)})}url(t){return this._addCheck({kind:"url",...S.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...S.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...S.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...S.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...S.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...S.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...S.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...S.errToObj(t)})}base64url(t){return this._addCheck({kind:"base64url",...S.errToObj(t)})}jwt(t){return this._addCheck({kind:"jwt",...S.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...S.errToObj(t)})}cidr(t){return this._addCheck({kind:"cidr",...S.errToObj(t)})}datetime(t){return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof t?.precision>"u"?null:t?.precision,offset:t?.offset??!1,local:t?.local??!1,...S.errToObj(t?.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){return typeof t=="string"?this._addCheck({kind:"time",precision:null,message:t}):this._addCheck({kind:"time",precision:typeof t?.precision>"u"?null:t?.precision,...S.errToObj(t?.message)})}duration(t){return this._addCheck({kind:"duration",...S.errToObj(t)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...S.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n?.position,...S.errToObj(n?.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...S.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...S.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...S.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...S.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...S.errToObj(n)})}nonempty(t){return this.min(1,S.errToObj(t))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isDate(){return!!this._def.checks.find(t=>t.kind==="date")}get isTime(){return!!this._def.checks.find(t=>t.kind==="time")}get isDuration(){return!!this._def.checks.find(t=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(t=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get isCIDR(){return!!this._def.checks.find(t=>t.kind==="cidr")}get isBase64(){return!!this._def.checks.find(t=>t.kind==="base64")}get isBase64url(){return!!this._def.checks.find(t=>t.kind==="base64url")}get minLength(){let t=null;for(let n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxLength(){let t=null;for(let n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t}};Se.create=e=>new Se({checks:[],typeName:T.ZodString,coerce:e?.coerce??!1,...$(e)});function Nc(e,t){let n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,s=n>r?n:r,o=Number.parseInt(e.toFixed(s).replace(".","")),i=Number.parseInt(t.toFixed(s).replace(".",""));return o%i/10**s}var Pe=class e extends O{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==x.number){let o=this._getOrReturnCtx(t);return _(o,{code:g.invalid_type,expected:x.number,received:o.parsedType}),v}let r,s=new j;for(let o of this._def.checks)o.kind==="int"?N.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),_(r,{code:g.invalid_type,expected:"integer",received:"float",message:o.message}),s.dirty()):o.kind==="min"?(o.inclusive?t.data<o.value:t.data<=o.value)&&(r=this._getOrReturnCtx(t,r),_(r,{code:g.too_small,minimum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),s.dirty()):o.kind==="max"?(o.inclusive?t.data>o.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),_(r,{code:g.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),s.dirty()):o.kind==="multipleOf"?Nc(t.data,o.value)!==0&&(r=this._getOrReturnCtx(t,r),_(r,{code:g.not_multiple_of,multipleOf:o.value,message:o.message}),s.dirty()):o.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),_(r,{code:g.not_finite,message:o.message}),s.dirty()):N.assertNever(o);return{status:s.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,S.toString(n))}gt(t,n){return this.setLimit("min",t,!1,S.toString(n))}lte(t,n){return this.setLimit("max",t,!0,S.toString(n))}lt(t,n){return this.setLimit("max",t,!1,S.toString(n))}setLimit(t,n,r,s){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:S.toString(s)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:S.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:S.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:S.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:S.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:S.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:S.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:S.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:S.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:S.toString(t)})}get minValue(){let t=null;for(let n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(let n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t}get isInt(){return!!this._def.checks.find(t=>t.kind==="int"||t.kind==="multipleOf"&&N.isInteger(t.value))}get isFinite(){let t=null,n=null;for(let r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(n===null||r.value>n)&&(n=r.value):r.kind==="max"&&(t===null||r.value<t)&&(t=r.value)}return Number.isFinite(n)&&Number.isFinite(t)}};Pe.create=e=>new Pe({checks:[],typeName:T.ZodNumber,coerce:e?.coerce||!1,...$(e)});var De=class e extends O{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==x.bigint)return this._getInvalidInput(t);let r,s=new j;for(let o of this._def.checks)o.kind==="min"?(o.inclusive?t.data<o.value:t.data<=o.value)&&(r=this._getOrReturnCtx(t,r),_(r,{code:g.too_small,type:"bigint",minimum:o.value,inclusive:o.inclusive,message:o.message}),s.dirty()):o.kind==="max"?(o.inclusive?t.data>o.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),_(r,{code:g.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),s.dirty()):o.kind==="multipleOf"?t.data%o.value!==BigInt(0)&&(r=this._getOrReturnCtx(t,r),_(r,{code:g.not_multiple_of,multipleOf:o.value,message:o.message}),s.dirty()):N.assertNever(o);return{status:s.value,value:t.data}}_getInvalidInput(t){let n=this._getOrReturnCtx(t);return _(n,{code:g.invalid_type,expected:x.bigint,received:n.parsedType}),v}gte(t,n){return this.setLimit("min",t,!0,S.toString(n))}gt(t,n){return this.setLimit("min",t,!1,S.toString(n))}lte(t,n){return this.setLimit("max",t,!0,S.toString(n))}lt(t,n){return this.setLimit("max",t,!1,S.toString(n))}setLimit(t,n,r,s){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:S.toString(s)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:S.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:S.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:S.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:S.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:S.toString(n)})}get minValue(){let t=null;for(let n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(let n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t}};De.create=e=>new De({checks:[],typeName:T.ZodBigInt,coerce:e?.coerce??!1,...$(e)});var Le=class extends O{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==x.boolean){let r=this._getOrReturnCtx(t);return _(r,{code:g.invalid_type,expected:x.boolean,received:r.parsedType}),v}return U(t.data)}};Le.create=e=>new Le({typeName:T.ZodBoolean,coerce:e?.coerce||!1,...$(e)});var Me=class e extends O{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==x.date){let o=this._getOrReturnCtx(t);return _(o,{code:g.invalid_type,expected:x.date,received:o.parsedType}),v}if(Number.isNaN(t.data.getTime())){let o=this._getOrReturnCtx(t);return _(o,{code:g.invalid_date}),v}let r=new j,s;for(let o of this._def.checks)o.kind==="min"?t.data.getTime()<o.value&&(s=this._getOrReturnCtx(t,s),_(s,{code:g.too_small,message:o.message,inclusive:!0,exact:!1,minimum:o.value,type:"date"}),r.dirty()):o.kind==="max"?t.data.getTime()>o.value&&(s=this._getOrReturnCtx(t,s),_(s,{code:g.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):N.assertNever(o);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:S.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:S.toString(n)})}get minDate(){let t=null;for(let n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(let n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t!=null?new Date(t):null}};Me.create=e=>new Me({checks:[],coerce:e?.coerce||!1,typeName:T.ZodDate,...$(e)});var ot=class extends O{_parse(t){if(this._getType(t)!==x.symbol){let r=this._getOrReturnCtx(t);return _(r,{code:g.invalid_type,expected:x.symbol,received:r.parsedType}),v}return U(t.data)}};ot.create=e=>new ot({typeName:T.ZodSymbol,...$(e)});var Fe=class extends O{_parse(t){if(this._getType(t)!==x.undefined){let r=this._getOrReturnCtx(t);return _(r,{code:g.invalid_type,expected:x.undefined,received:r.parsedType}),v}return U(t.data)}};Fe.create=e=>new Fe({typeName:T.ZodUndefined,...$(e)});var je=class extends O{_parse(t){if(this._getType(t)!==x.null){let r=this._getOrReturnCtx(t);return _(r,{code:g.invalid_type,expected:x.null,received:r.parsedType}),v}return U(t.data)}};je.create=e=>new je({typeName:T.ZodNull,...$(e)});var ve=class extends O{constructor(){super(...arguments),this._any=!0}_parse(t){return U(t.data)}};ve.create=e=>new ve({typeName:T.ZodAny,...$(e)});var ke=class extends O{constructor(){super(...arguments),this._unknown=!0}_parse(t){return U(t.data)}};ke.create=e=>new ke({typeName:T.ZodUnknown,...$(e)});var re=class extends O{_parse(t){let n=this._getOrReturnCtx(t);return _(n,{code:g.invalid_type,expected:x.never,received:n.parsedType}),v}};re.create=e=>new re({typeName:T.ZodNever,...$(e)});var it=class extends O{_parse(t){if(this._getType(t)!==x.undefined){let r=this._getOrReturnCtx(t);return _(r,{code:g.invalid_type,expected:x.void,received:r.parsedType}),v}return U(t.data)}};it.create=e=>new it({typeName:T.ZodVoid,...$(e)});var be=class e extends O{_parse(t){let{ctx:n,status:r}=this._processInputParams(t),s=this._def;if(n.parsedType!==x.array)return _(n,{code:g.invalid_type,expected:x.array,received:n.parsedType}),v;if(s.exactLength!==null){let i=n.data.length>s.exactLength.value,a=n.data.length<s.exactLength.value;(i||a)&&(_(n,{code:i?g.too_big:g.too_small,minimum:a?s.exactLength.value:void 0,maximum:i?s.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:s.exactLength.message}),r.dirty())}if(s.minLength!==null&&n.data.length<s.minLength.value&&(_(n,{code:g.too_small,minimum:s.minLength.value,type:"array",inclusive:!0,exact:!1,message:s.minLength.message}),r.dirty()),s.maxLength!==null&&n.data.length>s.maxLength.value&&(_(n,{code:g.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,exact:!1,message:s.maxLength.message}),r.dirty()),n.common.async)return Promise.all([...n.data].map((i,a)=>s.type._parseAsync(new q(n,i,n.path,a)))).then(i=>j.mergeArray(r,i));let o=[...n.data].map((i,a)=>s.type._parseSync(new q(n,i,n.path,a)));return j.mergeArray(r,o)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:S.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:S.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:S.toString(n)}})}nonempty(t){return this.min(1,t)}};be.create=(e,t)=>new be({type:e,minLength:null,maxLength:null,exactLength:null,typeName:T.ZodArray,...$(t)});function st(e){if(e instanceof W){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=K.create(st(r))}return new W({...e._def,shape:()=>t})}else return e instanceof be?new be({...e._def,type:st(e.element)}):e instanceof K?K.create(st(e.unwrap())):e instanceof ce?ce.create(st(e.unwrap())):e instanceof le?le.create(e.items.map(t=>st(t))):e}var W=class e extends O{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let t=this._def.shape(),n=N.objectKeys(t);return this._cached={shape:t,keys:n},this._cached}_parse(t){if(this._getType(t)!==x.object){let c=this._getOrReturnCtx(t);return _(c,{code:g.invalid_type,expected:x.object,received:c.parsedType}),v}let{status:r,ctx:s}=this._processInputParams(t),{shape:o,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof re&&this._def.unknownKeys==="strip"))for(let c in s.data)i.includes(c)||a.push(c);let l=[];for(let c of i){let u=o[c],f=s.data[c];l.push({key:{status:"valid",value:c},value:u._parse(new q(s,f,s.path,c)),alwaysSet:c in s.data})}if(this._def.catchall instanceof re){let c=this._def.unknownKeys;if(c==="passthrough")for(let u of a)l.push({key:{status:"valid",value:u},value:{status:"valid",value:s.data[u]}});else if(c==="strict")a.length>0&&(_(s,{code:g.unrecognized_keys,keys:a}),r.dirty());else if(c!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let c=this._def.catchall;for(let u of a){let f=s.data[u];l.push({key:{status:"valid",value:u},value:c._parse(new q(s,f,s.path,u)),alwaysSet:u in s.data})}}return s.common.async?Promise.resolve().then(async()=>{let c=[];for(let u of l){let f=await u.key,d=await u.value;c.push({key:f,value:d,alwaysSet:u.alwaysSet})}return c}).then(c=>j.mergeObjectSync(r,c)):j.mergeObjectSync(r,l)}get shape(){return this._def.shape()}strict(t){return S.errToObj,new e({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(n,r)=>{let s=this._def.errorMap?.(n,r).message??r.defaultError;return n.code==="unrecognized_keys"?{message:S.errToObj(t).message??s}:{message:s}}}:{}})}strip(){return new e({...this._def,unknownKeys:"strip"})}passthrough(){return new e({...this._def,unknownKeys:"passthrough"})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:T.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let r of N.objectKeys(t))t[r]&&this.shape[r]&&(n[r]=this.shape[r]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let r of N.objectKeys(this.shape))t[r]||(n[r]=this.shape[r]);return new e({...this._def,shape:()=>n})}deepPartial(){return st(this)}partial(t){let n={};for(let r of N.objectKeys(this.shape)){let s=this.shape[r];t&&!t[r]?n[r]=s:n[r]=s.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let r of N.objectKeys(this.shape))if(t&&!t[r])n[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof K;)o=o._def.innerType;n[r]=o}return new e({...this._def,shape:()=>n})}keyof(){return Hs(N.objectKeys(this.shape))}};W.create=(e,t)=>new W({shape:()=>e,unknownKeys:"strip",catchall:re.create(),typeName:T.ZodObject,...$(t)});W.strictCreate=(e,t)=>new W({shape:()=>e,unknownKeys:"strict",catchall:re.create(),typeName:T.ZodObject,...$(t)});W.lazycreate=(e,t)=>new W({shape:e,unknownKeys:"strip",catchall:re.create(),typeName:T.ZodObject,...$(t)});var He=class extends O{_parse(t){let{ctx:n}=this._processInputParams(t),r=this._def.options;function s(o){for(let a of o)if(a.result.status==="valid")return a.result;for(let a of o)if(a.result.status==="dirty")return n.common.issues.push(...a.ctx.common.issues),a.result;let i=o.map(a=>new G(a.ctx.common.issues));return _(n,{code:g.invalid_union,unionErrors:i}),v}if(n.common.async)return Promise.all(r.map(async o=>{let i={...n,common:{...n.common,issues:[]},parent:null};return{result:await o._parseAsync({data:n.data,path:n.path,parent:i}),ctx:i}})).then(s);{let o,i=[];for(let l of r){let c={...n,common:{...n.common,issues:[]},parent:null},u=l._parseSync({data:n.data,path:n.path,parent:c});if(u.status==="valid")return u;u.status==="dirty"&&!o&&(o={result:u,ctx:c}),c.common.issues.length&&i.push(c.common.issues)}if(o)return n.common.issues.push(...o.ctx.common.issues),o.result;let a=i.map(l=>new G(l));return _(n,{code:g.invalid_union,unionErrors:a}),v}}get options(){return this._def.options}};He.create=(e,t)=>new He({options:e,typeName:T.ZodUnion,...$(t)});var ye=e=>e instanceof Ue?ye(e.schema):e instanceof Y?ye(e.innerType()):e instanceof Be?[e.value]:e instanceof Ze?e.options:e instanceof Je?N.objectValues(e.enum):e instanceof Ge?ye(e._def.innerType):e instanceof Fe?[void 0]:e instanceof je?[null]:e instanceof K?[void 0,...ye(e.unwrap())]:e instanceof ce?[null,...ye(e.unwrap())]:e instanceof Ot||e instanceof Ve?ye(e.unwrap()):e instanceof We?ye(e._def.innerType):[],an=class e extends O{_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==x.object)return _(n,{code:g.invalid_type,expected:x.object,received:n.parsedType}),v;let r=this.discriminator,s=n.data[r],o=this.optionsMap.get(s);return o?n.common.async?o._parseAsync({data:n.data,path:n.path,parent:n}):o._parseSync({data:n.data,path:n.path,parent:n}):(_(n,{code:g.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),v)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let s=new Map;for(let o of n){let i=ye(o.shape[t]);if(!i.length)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let a of i){if(s.has(a))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(a)}`);s.set(a,o)}}return new e({typeName:T.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:s,...$(r)})}};function Yn(e,t){let n=ae(e),r=ae(t);if(e===t)return{valid:!0,data:e};if(n===x.object&&r===x.object){let s=N.objectKeys(t),o=N.objectKeys(e).filter(a=>s.indexOf(a)!==-1),i={...e,...t};for(let a of o){let l=Yn(e[a],t[a]);if(!l.valid)return{valid:!1};i[a]=l.data}return{valid:!0,data:i}}else if(n===x.array&&r===x.array){if(e.length!==t.length)return{valid:!1};let s=[];for(let o=0;o<e.length;o++){let i=e[o],a=t[o],l=Yn(i,a);if(!l.valid)return{valid:!1};s.push(l.data)}return{valid:!0,data:s}}else return n===x.date&&r===x.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}var ze=class extends O{_parse(t){let{status:n,ctx:r}=this._processInputParams(t),s=(o,i)=>{if(sn(o)||sn(i))return v;let a=Yn(o.value,i.value);return a.valid?((on(o)||on(i))&&n.dirty(),{status:n.value,value:a.data}):(_(r,{code:g.invalid_intersection_types}),v)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([o,i])=>s(o,i)):s(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}};ze.create=(e,t,n)=>new ze({left:e,right:t,typeName:T.ZodIntersection,...$(n)});var le=class e extends O{_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==x.array)return _(r,{code:g.invalid_type,expected:x.array,received:r.parsedType}),v;if(r.data.length<this._def.items.length)return _(r,{code:g.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),v;!this._def.rest&&r.data.length>this._def.items.length&&(_(r,{code:g.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());let o=[...r.data].map((i,a)=>{let l=this._def.items[a]||this._def.rest;return l?l._parse(new q(r,i,r.path,a)):null}).filter(i=>!!i);return r.common.async?Promise.all(o).then(i=>j.mergeArray(n,i)):j.mergeArray(n,o)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};le.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new le({items:e,typeName:T.ZodTuple,rest:null,...$(t)})};var ln=class e extends O{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==x.object)return _(r,{code:g.invalid_type,expected:x.object,received:r.parsedType}),v;let s=[],o=this._def.keyType,i=this._def.valueType;for(let a in r.data)s.push({key:o._parse(new q(r,a,r.path,a)),value:i._parse(new q(r,r.data[a],r.path,a)),alwaysSet:a in r.data});return r.common.async?j.mergeObjectAsync(n,s):j.mergeObjectSync(n,s)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof O?new e({keyType:t,valueType:n,typeName:T.ZodRecord,...$(r)}):new e({keyType:Se.create(),valueType:t,typeName:T.ZodRecord,...$(n)})}},at=class extends O{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==x.map)return _(r,{code:g.invalid_type,expected:x.map,received:r.parsedType}),v;let s=this._def.keyType,o=this._def.valueType,i=[...r.data.entries()].map(([a,l],c)=>({key:s._parse(new q(r,a,r.path,[c,"key"])),value:o._parse(new q(r,l,r.path,[c,"value"]))}));if(r.common.async){let a=new Map;return Promise.resolve().then(async()=>{for(let l of i){let c=await l.key,u=await l.value;if(c.status==="aborted"||u.status==="aborted")return v;(c.status==="dirty"||u.status==="dirty")&&n.dirty(),a.set(c.value,u.value)}return{status:n.value,value:a}})}else{let a=new Map;for(let l of i){let c=l.key,u=l.value;if(c.status==="aborted"||u.status==="aborted")return v;(c.status==="dirty"||u.status==="dirty")&&n.dirty(),a.set(c.value,u.value)}return{status:n.value,value:a}}}};at.create=(e,t,n)=>new at({valueType:t,keyType:e,typeName:T.ZodMap,...$(n)});var lt=class e extends O{_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==x.set)return _(r,{code:g.invalid_type,expected:x.set,received:r.parsedType}),v;let s=this._def;s.minSize!==null&&r.data.size<s.minSize.value&&(_(r,{code:g.too_small,minimum:s.minSize.value,type:"set",inclusive:!0,exact:!1,message:s.minSize.message}),n.dirty()),s.maxSize!==null&&r.data.size>s.maxSize.value&&(_(r,{code:g.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,exact:!1,message:s.maxSize.message}),n.dirty());let o=this._def.valueType;function i(l){let c=new Set;for(let u of l){if(u.status==="aborted")return v;u.status==="dirty"&&n.dirty(),c.add(u.value)}return{status:n.value,value:c}}let a=[...r.data.values()].map((l,c)=>o._parse(new q(r,l,r.path,c)));return r.common.async?Promise.all(a).then(l=>i(l)):i(a)}min(t,n){return new e({...this._def,minSize:{value:t,message:S.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:S.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}};lt.create=(e,t)=>new lt({valueType:e,minSize:null,maxSize:null,typeName:T.ZodSet,...$(t)});var cn=class e extends O{constructor(){super(...arguments),this.validate=this.implement}_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==x.function)return _(n,{code:g.invalid_type,expected:x.function,received:n.parsedType}),v;function r(a,l){return Ct({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,nt(),he].filter(c=>!!c),issueData:{code:g.invalid_arguments,argumentsError:l}})}function s(a,l){return Ct({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,nt(),he].filter(c=>!!c),issueData:{code:g.invalid_return_type,returnTypeError:l}})}let o={errorMap:n.common.contextualErrorMap},i=n.data;if(this._def.returns instanceof Ee){let a=this;return U(async function(...l){let c=new G([]),u=await a._def.args.parseAsync(l,o).catch(p=>{throw c.addIssue(r(l,p)),c}),f=await Reflect.apply(i,this,u);return await a._def.returns._def.type.parseAsync(f,o).catch(p=>{throw c.addIssue(s(f,p)),c})})}else{let a=this;return U(function(...l){let c=a._def.args.safeParse(l,o);if(!c.success)throw new G([r(l,c.error)]);let u=Reflect.apply(i,this,c.data),f=a._def.returns.safeParse(u,o);if(!f.success)throw new G([s(u,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:le.create(t).rest(ke.create())})}returns(t){return new e({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,r){return new e({args:t||le.create([]).rest(ke.create()),returns:n||ke.create(),typeName:T.ZodFunction,...$(r)})}},Ue=class extends O{get schema(){return this._def.getter()}_parse(t){let{ctx:n}=this._processInputParams(t);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}};Ue.create=(e,t)=>new Ue({getter:e,typeName:T.ZodLazy,...$(t)});var Be=class extends O{_parse(t){if(t.data!==this._def.value){let n=this._getOrReturnCtx(t);return _(n,{received:n.data,code:g.invalid_literal,expected:this._def.value}),v}return{status:"valid",value:t.data}}get value(){return this._def.value}};Be.create=(e,t)=>new Be({value:e,typeName:T.ZodLiteral,...$(t)});function Hs(e,t){return new Ze({values:e,typeName:T.ZodEnum,...$(t)})}var Ze=class e extends O{_parse(t){if(typeof t.data!="string"){let n=this._getOrReturnCtx(t),r=this._def.values;return _(n,{expected:N.joinValues(r),received:n.parsedType,code:g.invalid_type}),v}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(t.data)){let n=this._getOrReturnCtx(t),r=this._def.values;return _(n,{received:n.data,code:g.invalid_enum_value,options:r}),v}return U(t.data)}get options(){return this._def.values}get enum(){let t={};for(let n of this._def.values)t[n]=n;return t}get Values(){let t={};for(let n of this._def.values)t[n]=n;return t}get Enum(){let t={};for(let n of this._def.values)t[n]=n;return t}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(r=>!t.includes(r)),{...this._def,...n})}};Ze.create=Hs;var Je=class extends O{_parse(t){let n=N.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==x.string&&r.parsedType!==x.number){let s=N.objectValues(n);return _(r,{expected:N.joinValues(s),received:r.parsedType,code:g.invalid_type}),v}if(this._cache||(this._cache=new Set(N.getValidEnumValues(this._def.values))),!this._cache.has(t.data)){let s=N.objectValues(n);return _(r,{received:r.data,code:g.invalid_enum_value,options:s}),v}return U(t.data)}get enum(){return this._def.values}};Je.create=(e,t)=>new Je({values:e,typeName:T.ZodNativeEnum,...$(t)});var Ee=class extends O{unwrap(){return this._def.type}_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==x.promise&&n.common.async===!1)return _(n,{code:g.invalid_type,expected:x.promise,received:n.parsedType}),v;let r=n.parsedType===x.promise?n.data:Promise.resolve(n.data);return U(r.then(s=>this._def.type.parseAsync(s,{path:n.path,errorMap:n.common.contextualErrorMap})))}};Ee.create=(e,t)=>new Ee({type:e,typeName:T.ZodPromise,...$(t)});var Y=class extends O{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===T.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){let{status:n,ctx:r}=this._processInputParams(t),s=this._def.effect||null,o={addIssue:i=>{_(r,i),i.fatal?n.abort():n.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),s.type==="preprocess"){let i=s.transform(r.data,o);if(r.common.async)return Promise.resolve(i).then(async a=>{if(n.value==="aborted")return v;let l=await this._def.schema._parseAsync({data:a,path:r.path,parent:r});return l.status==="aborted"?v:l.status==="dirty"?Ne(l.value):n.value==="dirty"?Ne(l.value):l});{if(n.value==="aborted")return v;let a=this._def.schema._parseSync({data:i,path:r.path,parent:r});return a.status==="aborted"?v:a.status==="dirty"?Ne(a.value):n.value==="dirty"?Ne(a.value):a}}if(s.type==="refinement"){let i=a=>{let l=s.refinement(a,o);if(r.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(r.common.async===!1){let a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return a.status==="aborted"?v:(a.status==="dirty"&&n.dirty(),i(a.value),{status:n.value,value:a.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(a=>a.status==="aborted"?v:(a.status==="dirty"&&n.dirty(),i(a.value).then(()=>({status:n.value,value:a.value}))))}if(s.type==="transform")if(r.common.async===!1){let i=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!we(i))return v;let a=s.transform(i.value,o);if(a instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:a}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(i=>we(i)?Promise.resolve(s.transform(i.value,o)).then(a=>({status:n.value,value:a})):v);N.assertNever(s)}};Y.create=(e,t,n)=>new Y({schema:e,typeName:T.ZodEffects,effect:t,...$(n)});Y.createWithPreprocess=(e,t,n)=>new Y({schema:t,effect:{type:"preprocess",transform:e},typeName:T.ZodEffects,...$(n)});var K=class extends O{_parse(t){return this._getType(t)===x.undefined?U(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};K.create=(e,t)=>new K({innerType:e,typeName:T.ZodOptional,...$(t)});var ce=class extends O{_parse(t){return this._getType(t)===x.null?U(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};ce.create=(e,t)=>new ce({innerType:e,typeName:T.ZodNullable,...$(t)});var Ge=class extends O{_parse(t){let{ctx:n}=this._processInputParams(t),r=n.data;return n.parsedType===x.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}};Ge.create=(e,t)=>new Ge({innerType:e,typeName:T.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...$(t)});var We=class extends O{_parse(t){let{ctx:n}=this._processInputParams(t),r={...n,common:{...n.common,issues:[]}},s=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return rt(s)?s.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new G(r.common.issues)},input:r.data})})):{status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new G(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}};We.create=(e,t)=>new We({innerType:e,typeName:T.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...$(t)});var ct=class extends O{_parse(t){if(this._getType(t)!==x.nan){let r=this._getOrReturnCtx(t);return _(r,{code:g.invalid_type,expected:x.nan,received:r.parsedType}),v}return{status:"valid",value:t.data}}};ct.create=e=>new ct({typeName:T.ZodNaN,...$(e)});var Pc=Symbol("zod_brand"),Ot=class extends O{_parse(t){let{ctx:n}=this._processInputParams(t),r=n.data;return this._def.type._parse({data:r,path:n.path,parent:n})}unwrap(){return this._def.type}},It=class e extends O{_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.common.async)return(async()=>{let o=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?v:o.status==="dirty"?(n.dirty(),Ne(o.value)):this._def.out._parseAsync({data:o.value,path:r.path,parent:r})})();{let s=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return s.status==="aborted"?v:s.status==="dirty"?(n.dirty(),{status:"dirty",value:s.value}):this._def.out._parseSync({data:s.value,path:r.path,parent:r})}}static create(t,n){return new e({in:t,out:n,typeName:T.ZodPipeline})}},Ve=class extends O{_parse(t){let n=this._def.innerType._parse(t),r=s=>(we(s)&&(s.value=Object.freeze(s.value)),s);return rt(n)?n.then(s=>r(s)):r(n)}unwrap(){return this._def.innerType}};Ve.create=(e,t)=>new Ve({innerType:e,typeName:T.ZodReadonly,...$(t)});function Ls(e,t){let n=typeof e=="function"?e(t):typeof e=="string"?{message:e}:e;return typeof n=="string"?{message:n}:n}function zs(e,t={},n){return e?ve.create().superRefine((r,s)=>{let o=e(r);if(o instanceof Promise)return o.then(i=>{if(!i){let a=Ls(t,r),l=a.fatal??n??!0;s.addIssue({code:"custom",...a,fatal:l})}});if(!o){let i=Ls(t,r),a=i.fatal??n??!0;s.addIssue({code:"custom",...i,fatal:a})}}):ve.create()}var Dc={object:W.lazycreate},T;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(T||(T={}));var Lc=(e,t={message:`Input not instance of ${e.name}`})=>zs(n=>n instanceof e,t),Us=Se.create,Bs=Pe.create,Mc=ct.create,Fc=De.create,Zs=Le.create,jc=Me.create,Hc=ot.create,zc=Fe.create,Uc=je.create,Bc=ve.create,Zc=ke.create,Jc=re.create,Gc=it.create,Wc=be.create,Vc=W.create,Kc=W.strictCreate,qc=He.create,Yc=an.create,Xc=ze.create,Qc=le.create,eu=ln.create,tu=at.create,nu=lt.create,ru=cn.create,su=Ue.create,ou=Be.create,iu=Ze.create,au=Je.create,lu=Ee.create,cu=Y.create,uu=K.create,fu=ce.create,du=Y.createWithPreprocess,pu=It.create,mu=()=>Us().optional(),gu=()=>Bs().optional(),hu=()=>Zs().optional(),yu={string:(e=>Se.create({...e,coerce:!0})),number:(e=>Pe.create({...e,coerce:!0})),boolean:(e=>Le.create({...e,coerce:!0})),bigint:(e=>De.create({...e,coerce:!0})),date:(e=>Me.create({...e,coerce:!0}))};var ku=v;var Te=k.object({slug:k.string().min(1).max(64),description:k.string().max(255).optional(),match_command:k.string().min(1),priority:k.number().int().default(50),strip_ansi:k.boolean().default(!1),strip_lines_matching:k.array(k.string()).default([]),drop_lines_matching:k.array(k.string()).default([]),keep_failures:k.boolean().default(!1),strip_on_failure:k.boolean().default(!1),fold_passing:k.boolean().default(!1),fold_passing_threshold:k.number().int().positive().max(1e3).optional(),mask_abs_paths:k.boolean().default(!1),preserve_exact:k.boolean().default(!1),truncate_lines_at:k.number().int().positive().max(1e4).optional(),max_lines:k.number().int().positive().max(1e5).optional(),scale_with_level:k.boolean().default(!0),transform:k.string().max(64).optional(),transform_on_failure:k.boolean().default(!1),on_empty:k.string().max(255).optional()});var Lu=Pu(Du(import.meta.url)),Mu=process.env.TOKMIZER_FILTERS_DIR||no(Lu,"..","..","filters"),ut=null,to=!1;function Fu(){return!1}async function ro(){return ut||(Fu()?(ut=await ju(Mu),ut):(!to&&process.env.TOKMIZER_DEBUG==="1"&&(process.stderr.write(`tokmizer: disk loader disabled (set TOKMIZER_DEV=1 to re-enable for local dev).
|
|
18
|
-
`),to=!0),
|
|
19
|
-
`))?e:e.map(n=>{if(n.length<=t||io(n))return n;let r=n.charCodeAt(t-1),s=n.charCodeAt(t),o=r>=55296&&r<=56319&&s>=56320&&s<=57343?t-1:t;return`${n.slice(0,o)}\u2026`})}function dt(e){return`\u2026 (${e} more lines omitted)`}var
|
|
20
|
-
`).length<6)}var
|
|
17
|
+
`:s}var Ec,Ys,eo=he(()=>{Ec=/^[a-z0-9-_]+$/i,Ys=!!"".isWellFormed});var lr={};Ns(lr,{TomlDate:()=>qe,TomlError:()=>E,default:()=>Oc,parse:()=>Dt,stringify:()=>ar});var Oc,pn=he(()=>{qs();eo();Qn();Ke();Oc={parse:Dt,stringify:ar,TomlDate:qe,TomlError:E}});import{readdir as Ic,readFile as Nc}from"node:fs/promises";import{join as no,dirname as Pc}from"node:path";import{fileURLToPath as Dc}from"node:url";var k={};Ns(k,{BRAND:()=>Pu,DIRTY:()=>Ne,EMPTY_PATH:()=>du,INVALID:()=>v,NEVER:()=>kc,OK:()=>U,ParseStatus:()=>j,Schema:()=>O,ZodAny:()=>ve,ZodArray:()=>be,ZodBigInt:()=>De,ZodBoolean:()=>Le,ZodBranded:()=>Ot,ZodCatch:()=>We,ZodDate:()=>Me,ZodDefault:()=>Ge,ZodDiscriminatedUnion:()=>an,ZodEffects:()=>Y,ZodEnum:()=>Ze,ZodError:()=>G,ZodFirstPartyTypeKind:()=>T,ZodFunction:()=>un,ZodIntersection:()=>ze,ZodIssueCode:()=>h,ZodLazy:()=>Ue,ZodLiteral:()=>Be,ZodMap:()=>at,ZodNaN:()=>ut,ZodNativeEnum:()=>Je,ZodNever:()=>re,ZodNull:()=>je,ZodNullable:()=>ue,ZodNumber:()=>Pe,ZodObject:()=>W,ZodOptional:()=>K,ZodParsedType:()=>x,ZodPipeline:()=>It,ZodPromise:()=>Ee,ZodReadonly:()=>Ve,ZodRecord:()=>ln,ZodSchema:()=>O,ZodSet:()=>lt,ZodString:()=>Se,ZodSymbol:()=>ot,ZodTransformer:()=>Y,ZodTuple:()=>le,ZodType:()=>O,ZodUndefined:()=>Fe,ZodUnion:()=>He,ZodUnknown:()=>ke,ZodVoid:()=>it,addIssueToContext:()=>_,any:()=>Bu,array:()=>Wu,bigint:()=>Fu,boolean:()=>Zs,coerce:()=>yc,custom:()=>zs,date:()=>ju,datetimeRegex:()=>js,defaultErrorMap:()=>ge,discriminatedUnion:()=>Yu,effect:()=>uc,enum:()=>ic,function:()=>rc,getErrorMap:()=>nt,getParsedType:()=>ae,instanceof:()=>Lu,intersection:()=>Xu,isAborted:()=>sn,isAsync:()=>rt,isDirty:()=>on,isValid:()=>we,late:()=>Du,lazy:()=>sc,literal:()=>oc,makeIssue:()=>Ct,map:()=>tc,nan:()=>Mu,nativeEnum:()=>ac,never:()=>Ju,null:()=>Uu,nullable:()=>fc,number:()=>Bs,object:()=>Vu,objectUtil:()=>Kn,oboolean:()=>gc,onumber:()=>hc,optional:()=>cc,ostring:()=>mc,pipeline:()=>pc,preprocess:()=>dc,promise:()=>lc,quotelessJson:()=>uu,record:()=>ec,set:()=>nc,setErrorMap:()=>fu,strictObject:()=>Ku,string:()=>Us,symbol:()=>Hu,transformer:()=>uc,tuple:()=>Qu,undefined:()=>zu,union:()=>qu,unknown:()=>Zu,util:()=>N,void:()=>Gu});var N;(function(e){e.assertEqual=s=>{};function t(s){}e.assertIs=t;function n(s){throw new Error}e.assertNever=n,e.arrayToEnum=s=>{let o={};for(let i of s)o[i]=i;return o},e.getValidEnumValues=s=>{let o=e.objectKeys(s).filter(a=>typeof s[s[a]]!="number"),i={};for(let a of o)i[a]=s[a];return e.objectValues(i)},e.objectValues=s=>e.objectKeys(s).map(function(o){return s[o]}),e.objectKeys=typeof Object.keys=="function"?s=>Object.keys(s):s=>{let o=[];for(let i in s)Object.prototype.hasOwnProperty.call(s,i)&&o.push(i);return o},e.find=(s,o)=>{for(let i of s)if(o(i))return i},e.isInteger=typeof Number.isInteger=="function"?s=>Number.isInteger(s):s=>typeof s=="number"&&Number.isFinite(s)&&Math.floor(s)===s;function r(s,o=" | "){return s.map(i=>typeof i=="string"?`'${i}'`:i).join(o)}e.joinValues=r,e.jsonStringifyReplacer=(s,o)=>typeof o=="bigint"?o.toString():o})(N||(N={}));var Kn;(function(e){e.mergeShapes=(t,n)=>({...t,...n})})(Kn||(Kn={}));var x=N.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),ae=e=>{switch(typeof e){case"undefined":return x.undefined;case"string":return x.string;case"number":return Number.isNaN(e)?x.nan:x.number;case"boolean":return x.boolean;case"function":return x.function;case"bigint":return x.bigint;case"symbol":return x.symbol;case"object":return Array.isArray(e)?x.array:e===null?x.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?x.promise:typeof Map<"u"&&e instanceof Map?x.map:typeof Set<"u"&&e instanceof Set?x.set:typeof Date<"u"&&e instanceof Date?x.date:x.object;default:return x.unknown}};var h=N.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),uu=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:"),G=class e extends Error{get errors(){return this.issues}constructor(t){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};let n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=t}format(t){let n=t||function(o){return o.message},r={_errors:[]},s=o=>{for(let i of o.issues)if(i.code==="invalid_union")i.unionErrors.map(s);else if(i.code==="invalid_return_type")s(i.returnTypeError);else if(i.code==="invalid_arguments")s(i.argumentsError);else if(i.path.length===0)r._errors.push(n(i));else{let a=r,l=0;for(;l<i.path.length;){let u=i.path[l];l===i.path.length-1?(a[u]=a[u]||{_errors:[]},a[u]._errors.push(n(i))):a[u]=a[u]||{_errors:[]},a=a[u],l++}}};return s(this),r}static assert(t){if(!(t instanceof e))throw new Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,N.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=n=>n.message){let n={},r=[];for(let s of this.issues)if(s.path.length>0){let o=s.path[0];n[o]=n[o]||[],n[o].push(t(s))}else r.push(t(s));return{formErrors:r,fieldErrors:n}}get formErrors(){return this.flatten()}};G.create=e=>new G(e);var cu=(e,t)=>{let n;switch(e.code){case h.invalid_type:e.received===x.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case h.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,N.jsonStringifyReplacer)}`;break;case h.unrecognized_keys:n=`Unrecognized key(s) in object: ${N.joinValues(e.keys,", ")}`;break;case h.invalid_union:n="Invalid input";break;case h.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${N.joinValues(e.options)}`;break;case h.invalid_enum_value:n=`Invalid enum value. Expected ${N.joinValues(e.options)}, received '${e.received}'`;break;case h.invalid_arguments:n="Invalid function arguments";break;case h.invalid_return_type:n="Invalid function return type";break;case h.invalid_date:n="Invalid date";break;case h.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:N.assertNever(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case h.too_small:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="bigint"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:n="Invalid input";break;case h.too_big:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?n=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:n="Invalid input";break;case h.custom:n="Invalid input";break;case h.invalid_intersection_types:n="Intersection results could not be merged";break;case h.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case h.not_finite:n="Number must be finite";break;default:n=t.defaultError,N.assertNever(e)}return{message:n}},ge=cu;var Ps=ge;function fu(e){Ps=e}function nt(){return Ps}var Ct=e=>{let{data:t,path:n,errorMaps:r,issueData:s}=e,o=[...n,...s.path||[]],i={...s,path:o};if(s.message!==void 0)return{...s,path:o,message:s.message};let a="",l=r.filter(u=>!!u).slice().reverse();for(let u of l)a=u(i,{data:t,defaultError:a}).message;return{...s,path:o,message:a}},du=[];function _(e,t){let n=nt(),r=Ct({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===ge?void 0:ge].filter(s=>!!s)});e.common.issues.push(r)}var j=class e{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,n){let r=[];for(let s of n){if(s.status==="aborted")return v;s.status==="dirty"&&t.dirty(),r.push(s.value)}return{status:t.value,value:r}}static async mergeObjectAsync(t,n){let r=[];for(let s of n){let o=await s.key,i=await s.value;r.push({key:o,value:i})}return e.mergeObjectSync(t,r)}static mergeObjectSync(t,n){let r={};for(let s of n){let{key:o,value:i}=s;if(o.status==="aborted"||i.status==="aborted")return v;o.status==="dirty"&&t.dirty(),i.status==="dirty"&&t.dirty(),o.value!=="__proto__"&&(typeof i.value<"u"||s.alwaysSet)&&(r[o.value]=i.value)}return{status:t.value,value:r}}},v=Object.freeze({status:"aborted"}),Ne=e=>({status:"dirty",value:e}),U=e=>({status:"valid",value:e}),sn=e=>e.status==="aborted",on=e=>e.status==="dirty",we=e=>e.status==="valid",rt=e=>typeof Promise<"u"&&e instanceof Promise;var S;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t?.message})(S||(S={}));var q=class{constructor(t,n,r,s){this._cachedPath=[],this.parent=t,this.data=n,this._path=r,this._key=s}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},Ds=(e,t)=>{if(we(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let n=new G(e.common.issues);return this._error=n,this._error}}};function $(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:s}=e;if(t&&(n||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:s}:{errorMap:(i,a)=>{let{message:l}=e;return i.code==="invalid_enum_value"?{message:l??a.defaultError}:typeof a.data>"u"?{message:l??r??a.defaultError}:i.code!=="invalid_type"?{message:a.defaultError}:{message:l??n??a.defaultError}},description:s}}var O=class{get description(){return this._def.description}_getType(t){return ae(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:ae(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new j,ctx:{common:t.parent.common,data:t.data,parsedType:ae(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){let n=this._parse(t);if(rt(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(t){let n=this._parse(t);return Promise.resolve(n)}parse(t,n){let r=this.safeParse(t,n);if(r.success)return r.data;throw r.error}safeParse(t,n){let r={common:{issues:[],async:n?.async??!1,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:ae(t)},s=this._parseSync({data:t,path:r.path,parent:r});return Ds(r,s)}"~validate"(t){let n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:ae(t)};if(!this["~standard"].async)try{let r=this._parseSync({data:t,path:[],parent:n});return we(r)?{value:r.value}:{issues:n.common.issues}}catch(r){r?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),n.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:n}).then(r=>we(r)?{value:r.value}:{issues:n.common.issues})}async parseAsync(t,n){let r=await this.safeParseAsync(t,n);if(r.success)return r.data;throw r.error}async safeParseAsync(t,n){let r={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:ae(t)},s=this._parse({data:t,path:r.path,parent:r}),o=await(rt(s)?s:Promise.resolve(s));return Ds(r,o)}refine(t,n){let r=s=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(s):n;return this._refinement((s,o)=>{let i=t(s),a=()=>o.addIssue({code:h.custom,...r(s)});return typeof Promise<"u"&&i instanceof Promise?i.then(l=>l?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(t,n){return this._refinement((r,s)=>t(r)?!0:(s.addIssue(typeof n=="function"?n(r,s):n),!1))}_refinement(t){return new Y({schema:this,typeName:T.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:n=>this["~validate"](n)}}optional(){return K.create(this,this._def)}nullable(){return ue.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return be.create(this)}promise(){return Ee.create(this,this._def)}or(t){return He.create([this,t],this._def)}and(t){return ze.create(this,t,this._def)}transform(t){return new Y({...$(this._def),schema:this,typeName:T.ZodEffects,effect:{type:"transform",transform:t}})}default(t){let n=typeof t=="function"?t:()=>t;return new Ge({...$(this._def),innerType:this,defaultValue:n,typeName:T.ZodDefault})}brand(){return new Ot({typeName:T.ZodBranded,type:this,...$(this._def)})}catch(t){let n=typeof t=="function"?t:()=>t;return new We({...$(this._def),innerType:this,catchValue:n,typeName:T.ZodCatch})}describe(t){let n=this.constructor;return new n({...this._def,description:t})}pipe(t){return It.create(this,t)}readonly(){return Ve.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},pu=/^c[^\s-]{8,}$/i,mu=/^[0-9a-z]+$/,hu=/^[0-9A-HJKMNP-TV-Z]{26}$/i,gu=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,yu=/^[a-z0-9_-]{21}$/i,ku=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,bu=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,_u=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,xu="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",qn,wu=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Su=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,vu=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Eu=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Tu=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Au=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Ms="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",Ru=new RegExp(`^${Ms}$`);function Fs(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision==null&&(t=`${t}(\\.\\d+)?`);let n=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function $u(e){return new RegExp(`^${Fs(e)}$`)}function js(e){let t=`${Ms}T${Fs(e)}`,n=[];return n.push(e.local?"Z?":"Z"),e.offset&&n.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${n.join("|")})`,new RegExp(`^${t}$`)}function Cu(e,t){return!!((t==="v4"||!t)&&wu.test(e)||(t==="v6"||!t)&&vu.test(e))}function Ou(e,t){if(!ku.test(e))return!1;try{let[n]=e.split(".");if(!n)return!1;let r=n.replace(/-/g,"+").replace(/_/g,"/").padEnd(n.length+(4-n.length%4)%4,"="),s=JSON.parse(atob(r));return!(typeof s!="object"||s===null||"typ"in s&&s?.typ!=="JWT"||!s.alg||t&&s.alg!==t)}catch{return!1}}function Iu(e,t){return!!((t==="v4"||!t)&&Su.test(e)||(t==="v6"||!t)&&Eu.test(e))}var Se=class e extends O{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==x.string){let o=this._getOrReturnCtx(t);return _(o,{code:h.invalid_type,expected:x.string,received:o.parsedType}),v}let r=new j,s;for(let o of this._def.checks)if(o.kind==="min")t.data.length<o.value&&(s=this._getOrReturnCtx(t,s),_(s,{code:h.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="max")t.data.length>o.value&&(s=this._getOrReturnCtx(t,s),_(s,{code:h.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="length"){let i=t.data.length>o.value,a=t.data.length<o.value;(i||a)&&(s=this._getOrReturnCtx(t,s),i?_(s,{code:h.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):a&&_(s,{code:h.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),r.dirty())}else if(o.kind==="email")_u.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"email",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="emoji")qn||(qn=new RegExp(xu,"u")),qn.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"emoji",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="uuid")gu.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"uuid",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="nanoid")yu.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"nanoid",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="cuid")pu.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"cuid",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="cuid2")mu.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"cuid2",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="ulid")hu.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"ulid",code:h.invalid_string,message:o.message}),r.dirty());else if(o.kind==="url")try{new URL(t.data)}catch{s=this._getOrReturnCtx(t,s),_(s,{validation:"url",code:h.invalid_string,message:o.message}),r.dirty()}else o.kind==="regex"?(o.regex.lastIndex=0,o.regex.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"regex",code:h.invalid_string,message:o.message}),r.dirty())):o.kind==="trim"?t.data=t.data.trim():o.kind==="includes"?t.data.includes(o.value,o.position)||(s=this._getOrReturnCtx(t,s),_(s,{code:h.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),r.dirty()):o.kind==="toLowerCase"?t.data=t.data.toLowerCase():o.kind==="toUpperCase"?t.data=t.data.toUpperCase():o.kind==="startsWith"?t.data.startsWith(o.value)||(s=this._getOrReturnCtx(t,s),_(s,{code:h.invalid_string,validation:{startsWith:o.value},message:o.message}),r.dirty()):o.kind==="endsWith"?t.data.endsWith(o.value)||(s=this._getOrReturnCtx(t,s),_(s,{code:h.invalid_string,validation:{endsWith:o.value},message:o.message}),r.dirty()):o.kind==="datetime"?js(o).test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{code:h.invalid_string,validation:"datetime",message:o.message}),r.dirty()):o.kind==="date"?Ru.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{code:h.invalid_string,validation:"date",message:o.message}),r.dirty()):o.kind==="time"?$u(o).test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{code:h.invalid_string,validation:"time",message:o.message}),r.dirty()):o.kind==="duration"?bu.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"duration",code:h.invalid_string,message:o.message}),r.dirty()):o.kind==="ip"?Cu(t.data,o.version)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"ip",code:h.invalid_string,message:o.message}),r.dirty()):o.kind==="jwt"?Ou(t.data,o.alg)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"jwt",code:h.invalid_string,message:o.message}),r.dirty()):o.kind==="cidr"?Iu(t.data,o.version)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"cidr",code:h.invalid_string,message:o.message}),r.dirty()):o.kind==="base64"?Tu.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"base64",code:h.invalid_string,message:o.message}),r.dirty()):o.kind==="base64url"?Au.test(t.data)||(s=this._getOrReturnCtx(t,s),_(s,{validation:"base64url",code:h.invalid_string,message:o.message}),r.dirty()):N.assertNever(o);return{status:r.value,value:t.data}}_regex(t,n,r){return this.refinement(s=>t.test(s),{validation:n,code:h.invalid_string,...S.errToObj(r)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...S.errToObj(t)})}url(t){return this._addCheck({kind:"url",...S.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...S.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...S.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...S.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...S.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...S.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...S.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...S.errToObj(t)})}base64url(t){return this._addCheck({kind:"base64url",...S.errToObj(t)})}jwt(t){return this._addCheck({kind:"jwt",...S.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...S.errToObj(t)})}cidr(t){return this._addCheck({kind:"cidr",...S.errToObj(t)})}datetime(t){return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof t?.precision>"u"?null:t?.precision,offset:t?.offset??!1,local:t?.local??!1,...S.errToObj(t?.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){return typeof t=="string"?this._addCheck({kind:"time",precision:null,message:t}):this._addCheck({kind:"time",precision:typeof t?.precision>"u"?null:t?.precision,...S.errToObj(t?.message)})}duration(t){return this._addCheck({kind:"duration",...S.errToObj(t)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...S.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n?.position,...S.errToObj(n?.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...S.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...S.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...S.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...S.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...S.errToObj(n)})}nonempty(t){return this.min(1,S.errToObj(t))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isDate(){return!!this._def.checks.find(t=>t.kind==="date")}get isTime(){return!!this._def.checks.find(t=>t.kind==="time")}get isDuration(){return!!this._def.checks.find(t=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(t=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get isCIDR(){return!!this._def.checks.find(t=>t.kind==="cidr")}get isBase64(){return!!this._def.checks.find(t=>t.kind==="base64")}get isBase64url(){return!!this._def.checks.find(t=>t.kind==="base64url")}get minLength(){let t=null;for(let n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxLength(){let t=null;for(let n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t}};Se.create=e=>new Se({checks:[],typeName:T.ZodString,coerce:e?.coerce??!1,...$(e)});function Nu(e,t){let n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,s=n>r?n:r,o=Number.parseInt(e.toFixed(s).replace(".","")),i=Number.parseInt(t.toFixed(s).replace(".",""));return o%i/10**s}var Pe=class e extends O{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==x.number){let o=this._getOrReturnCtx(t);return _(o,{code:h.invalid_type,expected:x.number,received:o.parsedType}),v}let r,s=new j;for(let o of this._def.checks)o.kind==="int"?N.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),_(r,{code:h.invalid_type,expected:"integer",received:"float",message:o.message}),s.dirty()):o.kind==="min"?(o.inclusive?t.data<o.value:t.data<=o.value)&&(r=this._getOrReturnCtx(t,r),_(r,{code:h.too_small,minimum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),s.dirty()):o.kind==="max"?(o.inclusive?t.data>o.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),_(r,{code:h.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),s.dirty()):o.kind==="multipleOf"?Nu(t.data,o.value)!==0&&(r=this._getOrReturnCtx(t,r),_(r,{code:h.not_multiple_of,multipleOf:o.value,message:o.message}),s.dirty()):o.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),_(r,{code:h.not_finite,message:o.message}),s.dirty()):N.assertNever(o);return{status:s.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,S.toString(n))}gt(t,n){return this.setLimit("min",t,!1,S.toString(n))}lte(t,n){return this.setLimit("max",t,!0,S.toString(n))}lt(t,n){return this.setLimit("max",t,!1,S.toString(n))}setLimit(t,n,r,s){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:S.toString(s)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:S.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:S.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:S.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:S.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:S.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:S.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:S.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:S.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:S.toString(t)})}get minValue(){let t=null;for(let n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(let n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t}get isInt(){return!!this._def.checks.find(t=>t.kind==="int"||t.kind==="multipleOf"&&N.isInteger(t.value))}get isFinite(){let t=null,n=null;for(let r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(n===null||r.value>n)&&(n=r.value):r.kind==="max"&&(t===null||r.value<t)&&(t=r.value)}return Number.isFinite(n)&&Number.isFinite(t)}};Pe.create=e=>new Pe({checks:[],typeName:T.ZodNumber,coerce:e?.coerce||!1,...$(e)});var De=class e extends O{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==x.bigint)return this._getInvalidInput(t);let r,s=new j;for(let o of this._def.checks)o.kind==="min"?(o.inclusive?t.data<o.value:t.data<=o.value)&&(r=this._getOrReturnCtx(t,r),_(r,{code:h.too_small,type:"bigint",minimum:o.value,inclusive:o.inclusive,message:o.message}),s.dirty()):o.kind==="max"?(o.inclusive?t.data>o.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),_(r,{code:h.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),s.dirty()):o.kind==="multipleOf"?t.data%o.value!==BigInt(0)&&(r=this._getOrReturnCtx(t,r),_(r,{code:h.not_multiple_of,multipleOf:o.value,message:o.message}),s.dirty()):N.assertNever(o);return{status:s.value,value:t.data}}_getInvalidInput(t){let n=this._getOrReturnCtx(t);return _(n,{code:h.invalid_type,expected:x.bigint,received:n.parsedType}),v}gte(t,n){return this.setLimit("min",t,!0,S.toString(n))}gt(t,n){return this.setLimit("min",t,!1,S.toString(n))}lte(t,n){return this.setLimit("max",t,!0,S.toString(n))}lt(t,n){return this.setLimit("max",t,!1,S.toString(n))}setLimit(t,n,r,s){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:S.toString(s)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:S.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:S.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:S.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:S.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:S.toString(n)})}get minValue(){let t=null;for(let n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(let n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t}};De.create=e=>new De({checks:[],typeName:T.ZodBigInt,coerce:e?.coerce??!1,...$(e)});var Le=class extends O{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==x.boolean){let r=this._getOrReturnCtx(t);return _(r,{code:h.invalid_type,expected:x.boolean,received:r.parsedType}),v}return U(t.data)}};Le.create=e=>new Le({typeName:T.ZodBoolean,coerce:e?.coerce||!1,...$(e)});var Me=class e extends O{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==x.date){let o=this._getOrReturnCtx(t);return _(o,{code:h.invalid_type,expected:x.date,received:o.parsedType}),v}if(Number.isNaN(t.data.getTime())){let o=this._getOrReturnCtx(t);return _(o,{code:h.invalid_date}),v}let r=new j,s;for(let o of this._def.checks)o.kind==="min"?t.data.getTime()<o.value&&(s=this._getOrReturnCtx(t,s),_(s,{code:h.too_small,message:o.message,inclusive:!0,exact:!1,minimum:o.value,type:"date"}),r.dirty()):o.kind==="max"?t.data.getTime()>o.value&&(s=this._getOrReturnCtx(t,s),_(s,{code:h.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):N.assertNever(o);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:S.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:S.toString(n)})}get minDate(){let t=null;for(let n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(let n of this._def.checks)n.kind==="max"&&(t===null||n.value<t)&&(t=n.value);return t!=null?new Date(t):null}};Me.create=e=>new Me({checks:[],coerce:e?.coerce||!1,typeName:T.ZodDate,...$(e)});var ot=class extends O{_parse(t){if(this._getType(t)!==x.symbol){let r=this._getOrReturnCtx(t);return _(r,{code:h.invalid_type,expected:x.symbol,received:r.parsedType}),v}return U(t.data)}};ot.create=e=>new ot({typeName:T.ZodSymbol,...$(e)});var Fe=class extends O{_parse(t){if(this._getType(t)!==x.undefined){let r=this._getOrReturnCtx(t);return _(r,{code:h.invalid_type,expected:x.undefined,received:r.parsedType}),v}return U(t.data)}};Fe.create=e=>new Fe({typeName:T.ZodUndefined,...$(e)});var je=class extends O{_parse(t){if(this._getType(t)!==x.null){let r=this._getOrReturnCtx(t);return _(r,{code:h.invalid_type,expected:x.null,received:r.parsedType}),v}return U(t.data)}};je.create=e=>new je({typeName:T.ZodNull,...$(e)});var ve=class extends O{constructor(){super(...arguments),this._any=!0}_parse(t){return U(t.data)}};ve.create=e=>new ve({typeName:T.ZodAny,...$(e)});var ke=class extends O{constructor(){super(...arguments),this._unknown=!0}_parse(t){return U(t.data)}};ke.create=e=>new ke({typeName:T.ZodUnknown,...$(e)});var re=class extends O{_parse(t){let n=this._getOrReturnCtx(t);return _(n,{code:h.invalid_type,expected:x.never,received:n.parsedType}),v}};re.create=e=>new re({typeName:T.ZodNever,...$(e)});var it=class extends O{_parse(t){if(this._getType(t)!==x.undefined){let r=this._getOrReturnCtx(t);return _(r,{code:h.invalid_type,expected:x.void,received:r.parsedType}),v}return U(t.data)}};it.create=e=>new it({typeName:T.ZodVoid,...$(e)});var be=class e extends O{_parse(t){let{ctx:n,status:r}=this._processInputParams(t),s=this._def;if(n.parsedType!==x.array)return _(n,{code:h.invalid_type,expected:x.array,received:n.parsedType}),v;if(s.exactLength!==null){let i=n.data.length>s.exactLength.value,a=n.data.length<s.exactLength.value;(i||a)&&(_(n,{code:i?h.too_big:h.too_small,minimum:a?s.exactLength.value:void 0,maximum:i?s.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:s.exactLength.message}),r.dirty())}if(s.minLength!==null&&n.data.length<s.minLength.value&&(_(n,{code:h.too_small,minimum:s.minLength.value,type:"array",inclusive:!0,exact:!1,message:s.minLength.message}),r.dirty()),s.maxLength!==null&&n.data.length>s.maxLength.value&&(_(n,{code:h.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,exact:!1,message:s.maxLength.message}),r.dirty()),n.common.async)return Promise.all([...n.data].map((i,a)=>s.type._parseAsync(new q(n,i,n.path,a)))).then(i=>j.mergeArray(r,i));let o=[...n.data].map((i,a)=>s.type._parseSync(new q(n,i,n.path,a)));return j.mergeArray(r,o)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:S.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:S.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:S.toString(n)}})}nonempty(t){return this.min(1,t)}};be.create=(e,t)=>new be({type:e,minLength:null,maxLength:null,exactLength:null,typeName:T.ZodArray,...$(t)});function st(e){if(e instanceof W){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=K.create(st(r))}return new W({...e._def,shape:()=>t})}else return e instanceof be?new be({...e._def,type:st(e.element)}):e instanceof K?K.create(st(e.unwrap())):e instanceof ue?ue.create(st(e.unwrap())):e instanceof le?le.create(e.items.map(t=>st(t))):e}var W=class e extends O{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let t=this._def.shape(),n=N.objectKeys(t);return this._cached={shape:t,keys:n},this._cached}_parse(t){if(this._getType(t)!==x.object){let u=this._getOrReturnCtx(t);return _(u,{code:h.invalid_type,expected:x.object,received:u.parsedType}),v}let{status:r,ctx:s}=this._processInputParams(t),{shape:o,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof re&&this._def.unknownKeys==="strip"))for(let u in s.data)i.includes(u)||a.push(u);let l=[];for(let u of i){let c=o[u],f=s.data[u];l.push({key:{status:"valid",value:u},value:c._parse(new q(s,f,s.path,u)),alwaysSet:u in s.data})}if(this._def.catchall instanceof re){let u=this._def.unknownKeys;if(u==="passthrough")for(let c of a)l.push({key:{status:"valid",value:c},value:{status:"valid",value:s.data[c]}});else if(u==="strict")a.length>0&&(_(s,{code:h.unrecognized_keys,keys:a}),r.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let u=this._def.catchall;for(let c of a){let f=s.data[c];l.push({key:{status:"valid",value:c},value:u._parse(new q(s,f,s.path,c)),alwaysSet:c in s.data})}}return s.common.async?Promise.resolve().then(async()=>{let u=[];for(let c of l){let f=await c.key,d=await c.value;u.push({key:f,value:d,alwaysSet:c.alwaysSet})}return u}).then(u=>j.mergeObjectSync(r,u)):j.mergeObjectSync(r,l)}get shape(){return this._def.shape()}strict(t){return S.errToObj,new e({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(n,r)=>{let s=this._def.errorMap?.(n,r).message??r.defaultError;return n.code==="unrecognized_keys"?{message:S.errToObj(t).message??s}:{message:s}}}:{}})}strip(){return new e({...this._def,unknownKeys:"strip"})}passthrough(){return new e({...this._def,unknownKeys:"passthrough"})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:T.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let r of N.objectKeys(t))t[r]&&this.shape[r]&&(n[r]=this.shape[r]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let r of N.objectKeys(this.shape))t[r]||(n[r]=this.shape[r]);return new e({...this._def,shape:()=>n})}deepPartial(){return st(this)}partial(t){let n={};for(let r of N.objectKeys(this.shape)){let s=this.shape[r];t&&!t[r]?n[r]=s:n[r]=s.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let r of N.objectKeys(this.shape))if(t&&!t[r])n[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof K;)o=o._def.innerType;n[r]=o}return new e({...this._def,shape:()=>n})}keyof(){return Hs(N.objectKeys(this.shape))}};W.create=(e,t)=>new W({shape:()=>e,unknownKeys:"strip",catchall:re.create(),typeName:T.ZodObject,...$(t)});W.strictCreate=(e,t)=>new W({shape:()=>e,unknownKeys:"strict",catchall:re.create(),typeName:T.ZodObject,...$(t)});W.lazycreate=(e,t)=>new W({shape:e,unknownKeys:"strip",catchall:re.create(),typeName:T.ZodObject,...$(t)});var He=class extends O{_parse(t){let{ctx:n}=this._processInputParams(t),r=this._def.options;function s(o){for(let a of o)if(a.result.status==="valid")return a.result;for(let a of o)if(a.result.status==="dirty")return n.common.issues.push(...a.ctx.common.issues),a.result;let i=o.map(a=>new G(a.ctx.common.issues));return _(n,{code:h.invalid_union,unionErrors:i}),v}if(n.common.async)return Promise.all(r.map(async o=>{let i={...n,common:{...n.common,issues:[]},parent:null};return{result:await o._parseAsync({data:n.data,path:n.path,parent:i}),ctx:i}})).then(s);{let o,i=[];for(let l of r){let u={...n,common:{...n.common,issues:[]},parent:null},c=l._parseSync({data:n.data,path:n.path,parent:u});if(c.status==="valid")return c;c.status==="dirty"&&!o&&(o={result:c,ctx:u}),u.common.issues.length&&i.push(u.common.issues)}if(o)return n.common.issues.push(...o.ctx.common.issues),o.result;let a=i.map(l=>new G(l));return _(n,{code:h.invalid_union,unionErrors:a}),v}}get options(){return this._def.options}};He.create=(e,t)=>new He({options:e,typeName:T.ZodUnion,...$(t)});var ye=e=>e instanceof Ue?ye(e.schema):e instanceof Y?ye(e.innerType()):e instanceof Be?[e.value]:e instanceof Ze?e.options:e instanceof Je?N.objectValues(e.enum):e instanceof Ge?ye(e._def.innerType):e instanceof Fe?[void 0]:e instanceof je?[null]:e instanceof K?[void 0,...ye(e.unwrap())]:e instanceof ue?[null,...ye(e.unwrap())]:e instanceof Ot||e instanceof Ve?ye(e.unwrap()):e instanceof We?ye(e._def.innerType):[],an=class e extends O{_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==x.object)return _(n,{code:h.invalid_type,expected:x.object,received:n.parsedType}),v;let r=this.discriminator,s=n.data[r],o=this.optionsMap.get(s);return o?n.common.async?o._parseAsync({data:n.data,path:n.path,parent:n}):o._parseSync({data:n.data,path:n.path,parent:n}):(_(n,{code:h.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),v)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let s=new Map;for(let o of n){let i=ye(o.shape[t]);if(!i.length)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let a of i){if(s.has(a))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(a)}`);s.set(a,o)}}return new e({typeName:T.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:s,...$(r)})}};function Yn(e,t){let n=ae(e),r=ae(t);if(e===t)return{valid:!0,data:e};if(n===x.object&&r===x.object){let s=N.objectKeys(t),o=N.objectKeys(e).filter(a=>s.indexOf(a)!==-1),i={...e,...t};for(let a of o){let l=Yn(e[a],t[a]);if(!l.valid)return{valid:!1};i[a]=l.data}return{valid:!0,data:i}}else if(n===x.array&&r===x.array){if(e.length!==t.length)return{valid:!1};let s=[];for(let o=0;o<e.length;o++){let i=e[o],a=t[o],l=Yn(i,a);if(!l.valid)return{valid:!1};s.push(l.data)}return{valid:!0,data:s}}else return n===x.date&&r===x.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}var ze=class extends O{_parse(t){let{status:n,ctx:r}=this._processInputParams(t),s=(o,i)=>{if(sn(o)||sn(i))return v;let a=Yn(o.value,i.value);return a.valid?((on(o)||on(i))&&n.dirty(),{status:n.value,value:a.data}):(_(r,{code:h.invalid_intersection_types}),v)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([o,i])=>s(o,i)):s(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}};ze.create=(e,t,n)=>new ze({left:e,right:t,typeName:T.ZodIntersection,...$(n)});var le=class e extends O{_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==x.array)return _(r,{code:h.invalid_type,expected:x.array,received:r.parsedType}),v;if(r.data.length<this._def.items.length)return _(r,{code:h.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),v;!this._def.rest&&r.data.length>this._def.items.length&&(_(r,{code:h.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());let o=[...r.data].map((i,a)=>{let l=this._def.items[a]||this._def.rest;return l?l._parse(new q(r,i,r.path,a)):null}).filter(i=>!!i);return r.common.async?Promise.all(o).then(i=>j.mergeArray(n,i)):j.mergeArray(n,o)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};le.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new le({items:e,typeName:T.ZodTuple,rest:null,...$(t)})};var ln=class e extends O{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==x.object)return _(r,{code:h.invalid_type,expected:x.object,received:r.parsedType}),v;let s=[],o=this._def.keyType,i=this._def.valueType;for(let a in r.data)s.push({key:o._parse(new q(r,a,r.path,a)),value:i._parse(new q(r,r.data[a],r.path,a)),alwaysSet:a in r.data});return r.common.async?j.mergeObjectAsync(n,s):j.mergeObjectSync(n,s)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof O?new e({keyType:t,valueType:n,typeName:T.ZodRecord,...$(r)}):new e({keyType:Se.create(),valueType:t,typeName:T.ZodRecord,...$(n)})}},at=class extends O{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==x.map)return _(r,{code:h.invalid_type,expected:x.map,received:r.parsedType}),v;let s=this._def.keyType,o=this._def.valueType,i=[...r.data.entries()].map(([a,l],u)=>({key:s._parse(new q(r,a,r.path,[u,"key"])),value:o._parse(new q(r,l,r.path,[u,"value"]))}));if(r.common.async){let a=new Map;return Promise.resolve().then(async()=>{for(let l of i){let u=await l.key,c=await l.value;if(u.status==="aborted"||c.status==="aborted")return v;(u.status==="dirty"||c.status==="dirty")&&n.dirty(),a.set(u.value,c.value)}return{status:n.value,value:a}})}else{let a=new Map;for(let l of i){let u=l.key,c=l.value;if(u.status==="aborted"||c.status==="aborted")return v;(u.status==="dirty"||c.status==="dirty")&&n.dirty(),a.set(u.value,c.value)}return{status:n.value,value:a}}}};at.create=(e,t,n)=>new at({valueType:t,keyType:e,typeName:T.ZodMap,...$(n)});var lt=class e extends O{_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==x.set)return _(r,{code:h.invalid_type,expected:x.set,received:r.parsedType}),v;let s=this._def;s.minSize!==null&&r.data.size<s.minSize.value&&(_(r,{code:h.too_small,minimum:s.minSize.value,type:"set",inclusive:!0,exact:!1,message:s.minSize.message}),n.dirty()),s.maxSize!==null&&r.data.size>s.maxSize.value&&(_(r,{code:h.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,exact:!1,message:s.maxSize.message}),n.dirty());let o=this._def.valueType;function i(l){let u=new Set;for(let c of l){if(c.status==="aborted")return v;c.status==="dirty"&&n.dirty(),u.add(c.value)}return{status:n.value,value:u}}let a=[...r.data.values()].map((l,u)=>o._parse(new q(r,l,r.path,u)));return r.common.async?Promise.all(a).then(l=>i(l)):i(a)}min(t,n){return new e({...this._def,minSize:{value:t,message:S.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:S.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}};lt.create=(e,t)=>new lt({valueType:e,minSize:null,maxSize:null,typeName:T.ZodSet,...$(t)});var un=class e extends O{constructor(){super(...arguments),this.validate=this.implement}_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==x.function)return _(n,{code:h.invalid_type,expected:x.function,received:n.parsedType}),v;function r(a,l){return Ct({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,nt(),ge].filter(u=>!!u),issueData:{code:h.invalid_arguments,argumentsError:l}})}function s(a,l){return Ct({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,nt(),ge].filter(u=>!!u),issueData:{code:h.invalid_return_type,returnTypeError:l}})}let o={errorMap:n.common.contextualErrorMap},i=n.data;if(this._def.returns instanceof Ee){let a=this;return U(async function(...l){let u=new G([]),c=await a._def.args.parseAsync(l,o).catch(p=>{throw u.addIssue(r(l,p)),u}),f=await Reflect.apply(i,this,c);return await a._def.returns._def.type.parseAsync(f,o).catch(p=>{throw u.addIssue(s(f,p)),u})})}else{let a=this;return U(function(...l){let u=a._def.args.safeParse(l,o);if(!u.success)throw new G([r(l,u.error)]);let c=Reflect.apply(i,this,u.data),f=a._def.returns.safeParse(c,o);if(!f.success)throw new G([s(c,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:le.create(t).rest(ke.create())})}returns(t){return new e({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,r){return new e({args:t||le.create([]).rest(ke.create()),returns:n||ke.create(),typeName:T.ZodFunction,...$(r)})}},Ue=class extends O{get schema(){return this._def.getter()}_parse(t){let{ctx:n}=this._processInputParams(t);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}};Ue.create=(e,t)=>new Ue({getter:e,typeName:T.ZodLazy,...$(t)});var Be=class extends O{_parse(t){if(t.data!==this._def.value){let n=this._getOrReturnCtx(t);return _(n,{received:n.data,code:h.invalid_literal,expected:this._def.value}),v}return{status:"valid",value:t.data}}get value(){return this._def.value}};Be.create=(e,t)=>new Be({value:e,typeName:T.ZodLiteral,...$(t)});function Hs(e,t){return new Ze({values:e,typeName:T.ZodEnum,...$(t)})}var Ze=class e extends O{_parse(t){if(typeof t.data!="string"){let n=this._getOrReturnCtx(t),r=this._def.values;return _(n,{expected:N.joinValues(r),received:n.parsedType,code:h.invalid_type}),v}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(t.data)){let n=this._getOrReturnCtx(t),r=this._def.values;return _(n,{received:n.data,code:h.invalid_enum_value,options:r}),v}return U(t.data)}get options(){return this._def.values}get enum(){let t={};for(let n of this._def.values)t[n]=n;return t}get Values(){let t={};for(let n of this._def.values)t[n]=n;return t}get Enum(){let t={};for(let n of this._def.values)t[n]=n;return t}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(r=>!t.includes(r)),{...this._def,...n})}};Ze.create=Hs;var Je=class extends O{_parse(t){let n=N.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==x.string&&r.parsedType!==x.number){let s=N.objectValues(n);return _(r,{expected:N.joinValues(s),received:r.parsedType,code:h.invalid_type}),v}if(this._cache||(this._cache=new Set(N.getValidEnumValues(this._def.values))),!this._cache.has(t.data)){let s=N.objectValues(n);return _(r,{received:r.data,code:h.invalid_enum_value,options:s}),v}return U(t.data)}get enum(){return this._def.values}};Je.create=(e,t)=>new Je({values:e,typeName:T.ZodNativeEnum,...$(t)});var Ee=class extends O{unwrap(){return this._def.type}_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==x.promise&&n.common.async===!1)return _(n,{code:h.invalid_type,expected:x.promise,received:n.parsedType}),v;let r=n.parsedType===x.promise?n.data:Promise.resolve(n.data);return U(r.then(s=>this._def.type.parseAsync(s,{path:n.path,errorMap:n.common.contextualErrorMap})))}};Ee.create=(e,t)=>new Ee({type:e,typeName:T.ZodPromise,...$(t)});var Y=class extends O{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===T.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){let{status:n,ctx:r}=this._processInputParams(t),s=this._def.effect||null,o={addIssue:i=>{_(r,i),i.fatal?n.abort():n.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),s.type==="preprocess"){let i=s.transform(r.data,o);if(r.common.async)return Promise.resolve(i).then(async a=>{if(n.value==="aborted")return v;let l=await this._def.schema._parseAsync({data:a,path:r.path,parent:r});return l.status==="aborted"?v:l.status==="dirty"?Ne(l.value):n.value==="dirty"?Ne(l.value):l});{if(n.value==="aborted")return v;let a=this._def.schema._parseSync({data:i,path:r.path,parent:r});return a.status==="aborted"?v:a.status==="dirty"?Ne(a.value):n.value==="dirty"?Ne(a.value):a}}if(s.type==="refinement"){let i=a=>{let l=s.refinement(a,o);if(r.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(r.common.async===!1){let a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return a.status==="aborted"?v:(a.status==="dirty"&&n.dirty(),i(a.value),{status:n.value,value:a.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(a=>a.status==="aborted"?v:(a.status==="dirty"&&n.dirty(),i(a.value).then(()=>({status:n.value,value:a.value}))))}if(s.type==="transform")if(r.common.async===!1){let i=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!we(i))return v;let a=s.transform(i.value,o);if(a instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:a}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(i=>we(i)?Promise.resolve(s.transform(i.value,o)).then(a=>({status:n.value,value:a})):v);N.assertNever(s)}};Y.create=(e,t,n)=>new Y({schema:e,typeName:T.ZodEffects,effect:t,...$(n)});Y.createWithPreprocess=(e,t,n)=>new Y({schema:t,effect:{type:"preprocess",transform:e},typeName:T.ZodEffects,...$(n)});var K=class extends O{_parse(t){return this._getType(t)===x.undefined?U(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};K.create=(e,t)=>new K({innerType:e,typeName:T.ZodOptional,...$(t)});var ue=class extends O{_parse(t){return this._getType(t)===x.null?U(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};ue.create=(e,t)=>new ue({innerType:e,typeName:T.ZodNullable,...$(t)});var Ge=class extends O{_parse(t){let{ctx:n}=this._processInputParams(t),r=n.data;return n.parsedType===x.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}};Ge.create=(e,t)=>new Ge({innerType:e,typeName:T.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...$(t)});var We=class extends O{_parse(t){let{ctx:n}=this._processInputParams(t),r={...n,common:{...n.common,issues:[]}},s=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return rt(s)?s.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new G(r.common.issues)},input:r.data})})):{status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new G(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}};We.create=(e,t)=>new We({innerType:e,typeName:T.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...$(t)});var ut=class extends O{_parse(t){if(this._getType(t)!==x.nan){let r=this._getOrReturnCtx(t);return _(r,{code:h.invalid_type,expected:x.nan,received:r.parsedType}),v}return{status:"valid",value:t.data}}};ut.create=e=>new ut({typeName:T.ZodNaN,...$(e)});var Pu=Symbol("zod_brand"),Ot=class extends O{_parse(t){let{ctx:n}=this._processInputParams(t),r=n.data;return this._def.type._parse({data:r,path:n.path,parent:n})}unwrap(){return this._def.type}},It=class e extends O{_parse(t){let{status:n,ctx:r}=this._processInputParams(t);if(r.common.async)return(async()=>{let o=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?v:o.status==="dirty"?(n.dirty(),Ne(o.value)):this._def.out._parseAsync({data:o.value,path:r.path,parent:r})})();{let s=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return s.status==="aborted"?v:s.status==="dirty"?(n.dirty(),{status:"dirty",value:s.value}):this._def.out._parseSync({data:s.value,path:r.path,parent:r})}}static create(t,n){return new e({in:t,out:n,typeName:T.ZodPipeline})}},Ve=class extends O{_parse(t){let n=this._def.innerType._parse(t),r=s=>(we(s)&&(s.value=Object.freeze(s.value)),s);return rt(n)?n.then(s=>r(s)):r(n)}unwrap(){return this._def.innerType}};Ve.create=(e,t)=>new Ve({innerType:e,typeName:T.ZodReadonly,...$(t)});function Ls(e,t){let n=typeof e=="function"?e(t):typeof e=="string"?{message:e}:e;return typeof n=="string"?{message:n}:n}function zs(e,t={},n){return e?ve.create().superRefine((r,s)=>{let o=e(r);if(o instanceof Promise)return o.then(i=>{if(!i){let a=Ls(t,r),l=a.fatal??n??!0;s.addIssue({code:"custom",...a,fatal:l})}});if(!o){let i=Ls(t,r),a=i.fatal??n??!0;s.addIssue({code:"custom",...i,fatal:a})}}):ve.create()}var Du={object:W.lazycreate},T;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(T||(T={}));var Lu=(e,t={message:`Input not instance of ${e.name}`})=>zs(n=>n instanceof e,t),Us=Se.create,Bs=Pe.create,Mu=ut.create,Fu=De.create,Zs=Le.create,ju=Me.create,Hu=ot.create,zu=Fe.create,Uu=je.create,Bu=ve.create,Zu=ke.create,Ju=re.create,Gu=it.create,Wu=be.create,Vu=W.create,Ku=W.strictCreate,qu=He.create,Yu=an.create,Xu=ze.create,Qu=le.create,ec=ln.create,tc=at.create,nc=lt.create,rc=un.create,sc=Ue.create,oc=Be.create,ic=Ze.create,ac=Je.create,lc=Ee.create,uc=Y.create,cc=K.create,fc=ue.create,dc=Y.createWithPreprocess,pc=It.create,mc=()=>Us().optional(),hc=()=>Bs().optional(),gc=()=>Zs().optional(),yc={string:(e=>Se.create({...e,coerce:!0})),number:(e=>Pe.create({...e,coerce:!0})),boolean:(e=>Le.create({...e,coerce:!0})),bigint:(e=>De.create({...e,coerce:!0})),date:(e=>Me.create({...e,coerce:!0}))};var kc=v;var Te=k.object({slug:k.string().min(1).max(64),description:k.string().max(255).optional(),match_command:k.string().min(1),priority:k.number().int().default(50),strip_ansi:k.boolean().default(!1),strip_lines_matching:k.array(k.string()).default([]),drop_lines_matching:k.array(k.string()).default([]),keep_failures:k.boolean().default(!1),strip_on_failure:k.boolean().default(!1),fold_passing:k.boolean().default(!1),fold_passing_threshold:k.number().int().positive().max(1e3).optional(),mask_abs_paths:k.boolean().default(!1),preserve_exact:k.boolean().default(!1),truncate_lines_at:k.number().int().positive().max(1e4).optional(),max_lines:k.number().int().positive().max(1e5).optional(),scale_with_level:k.boolean().default(!0),transform:k.string().max(64).optional(),transform_on_failure:k.boolean().default(!1),on_empty:k.string().max(255).optional()});var Lc=Pc(Dc(import.meta.url)),Mc=process.env.TOKMIZER_FILTERS_DIR||no(Lc,"..","..","filters"),ct=null,to=!1;function Fc(){return!1}async function ro(){return ct||(Fc()?(ct=await jc(Mc),ct):(!to&&process.env.TOKMIZER_DEBUG==="1"&&(process.stderr.write(`tokmizer: disk loader disabled (set TOKMIZER_DEV=1 to re-enable for local dev).
|
|
18
|
+
`),to=!0),ct=new Map,ct))}async function jc(e){let t=new Map,n,r;try{n=(await Promise.resolve().then(()=>(pn(),lr))).parse,r=(await Ic(e)).filter(s=>s.endsWith(".toml"))}catch{return t}for(let s of r){let o=await Nc(no(e,s),"utf8"),a=n(o).filters;if(a)for(let[l,u]of Object.entries(a)){let c=Te.parse({slug:l,...u});t.set(l,{...c,matchRegex:new RegExp(c.match_command)})}}return t}import{createHash as Hc}from"node:crypto";var zc=k.enum(["normal","compact","minimal"]),Uc=k.enum(["off","light","balanced","max"]),Mt=k.object({enabled:k.boolean().default(!0),telemetryOptIn:k.boolean().default(!0),outputVerbosity:zc.default("compact"),reducer:Uc.default("off"),filters:k.object({enableAll:k.boolean().default(!0),disabled:k.array(k.string().max(64)).max(100).default([])}).default({enableAll:!0,disabled:[]})}),so=new Map;function X(e){let t=so.get(e);return t||(t=Hc("sha256").update(`tkr:${e}`).digest("hex").slice(0,16),so.set(e,t)),t}var oo=new WeakMap,Bc=256;function ft(e,t,n,r=t){let s=oo.get(r);s||(s=new Map,oo.set(r,s));let o=JSON.stringify([e,n?[...n].sort():null]),i=s.get(o);if(i!==void 0)return i;let a=null;for(let l of t)n&&!n.has(X(l.slug))||l.matchRegex.test(e)&&(!a||l.priority>a.priority)&&(a=l);if(s.size>=Bc){let l=s.keys().next().value;l&&s.delete(l)}return s.set(o,a),a}import{readdir as vd,readFile as Go,writeFile as rw,mkdir as sw,rename as ow}from"node:fs/promises";import{readdirSync as Ed,statSync as Bo}from"node:fs";import{createHash as Td}from"node:crypto";import{basename as uw,join as _n}from"node:path";var Zc=/\x1b\[[0-9;?]*[ -/]*[@-~]/g,Jc=/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g;function ce(e){return e.replace(Zc,"").replace(Jc,"")}function ur(e,t){return t.length===0?e:e.filter(n=>!t.some(r=>r.test(n)))}function io(e){let t=e.trim();if(t.length>4096||!(t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")))return!1;try{return JSON.parse(t),!0}catch{return!1}}function ao(e,t){return e.some(n=>n.length>t)&&io(e.join(`
|
|
19
|
+
`))?e:e.map(n=>{if(n.length<=t||io(n))return n;let r=n.charCodeAt(t-1),s=n.charCodeAt(t),o=r>=55296&&r<=56319&&s>=56320&&s<=57343?t-1:t;return`${n.slice(0,o)}\u2026`})}function dt(e){return`\u2026 (${e} more lines omitted)`}var Gc=/\b(?:ERROR|FATAL|CRITICAL|PANIC)\b|\bpanic:|\bTraceback \(most recent|\b[A-Z][A-Za-z0-9]*(?:Error|Exception)\b|\berror(?:\[[A-Za-z0-9]+\])?:/,Wc=20,Vc=4096;function lo(e,t){if(e.length<=t)return{kept:e,dropped:[]};let n=Math.ceil(t*.7),r=t-n,s=e.slice(n,e.length-r),o=s.filter(a=>a.length<=Vc&&Gc.test(a)).slice(0,Wc),i=s.length-o.length;return{kept:[...e.slice(0,n),...i>0?[dt(i)]:[],...o,...e.slice(e.length-r)],dropped:s}}var Kc=/^\s*(?:[✓✔√]|ok )/,Q=/✕|✗|×|\bFAIL\b|\bERROR\b|\bFATAL\b|\bError|\berror|Expected|Received|\bfailed\b|^\s*Tests?:|^\s*Test Suites?:/;function uo(e,t){let n=t>0?t:5,r=[],s=0,o=a=>{s>=n?r.push(`\u2026 ${s} passing checks folded \u2026`):r.push(...a)},i=[];for(let a of e)Kc.test(a)&&!Q.test(a)?(i.push(a),s+=1):(o(i),i=[],s=0,r.push(a));return o(i),r}var qc=/(?:\/[\w.@+-]+){3,}/g;function co(e){return e.map(t=>t.replace(qc,n=>{let r=n.split("/").filter(Boolean);return r.length<=2?n:`\u2026/${r.slice(-2).join("/")}`}))}var Yc=/^(\s*)(?:export\s+)?(?:async\s+)?(?:function|interface|type|const|let|var|def|fn|impl|trait|struct|enum)\s+[\w$]+/,Xc=/\{\s*$/;var Qc=/^\s*(?:(?:public|private|protected|static|async|get|set|readonly|override)\s+)*([\w$]+)\s*\(([^)]*)\)\s*(?::\s*[^{]+)?\{\s*$/,ef=new Set(["if","for","while","switch","catch","do","with","return","else","function","await","yield"]);function tf(e){let t=Qc.exec(e);return!t||ef.has(t[1])?!1:!/=>|\bfunction\b/.test(t[2])}var nf=/^\s*(?:if|for|while|switch|try|do)\b[^{}]*\{\s*$/;function rf(e,t,n){let r=t;for(;r<e.length;){if(e[r]==="\\"){r+=2;continue}if(e[r]===n)return!0;r+=1}return!1}function sf(e,t){let n=0,r=null,s=0;for(;s<e.length;){let o=e[s];if(t.inBlockComment){if(o==="*"&&e[s+1]==="/"){t.inBlockComment=!1,s+=2;continue}s+=1;continue}if(t.inTemplate){if(o==="\\"){s+=2;continue}o==="`"&&(t.inTemplate=!1),s+=1;continue}if(r){if(o==="\\"){s+=2;continue}o===r&&(r=null),s+=1;continue}if(o==="/"&&e[s+1]==="/")break;if(o==="/"&&e[s+1]==="*"){t.inBlockComment=!0,s+=2;continue}if(o==="`"){t.inTemplate=!0,s+=1;continue}if(o==="'"||o==='"'){let i=s>0?e[s-1]:"";!(o==="'"&&(i==="<"||i==="&"))&&rf(e,s+1,o)&&(r=o),s+=1;continue}o==="{"||o==="("||o==="["?n+=1:(o==="}"||o===")"||o==="]")&&(n-=1),s+=1}return n}var of=/^\s*… (\d+) lines? folded(?: \(\d+-\d+\): Read offset=\d+ limit=\d+ before editing)? …$/;function af(e,t,n){let r=n==null?"":` (${n}-${n+t-1}): Read offset=${n} limit=${t} before editing`;return`${e}\u2026 ${t} ${t===1?"line":"lines"} folded${r} \u2026`}function cr(e){let t=new Array(e.length).fill(!1);for(let n=0;n<e.length;n+=1){let r=of.exec(e[n]);if(!r)continue;let s=Number(r[1])-1,o=n+1;for(;s>0&&o<e.length&&e[o]==="";)t[o]=!0,s-=1,o+=1;n=o-1}return t}function Ft(e,t=3,n=!1){let r=[],s=0;for(;s<e.length;){let o=e[s];if(Yc.test(o)&&Xc.test(o)||tf(o)||nf.test(o)){let i={inBlockComment:!1,inTemplate:!1},a=0,l=s,u=!1;for(;l<e.length&&l-s<200;)if(a+=sf(e[l],i),l+=1,a<=0&&!i.inTemplate&&!i.inBlockComment){u=!0;break}let c=l-s;if(u&&c<t){r.push(...e.slice(s,l)),s=l;continue}if(u&&c>=3){let f=c-2,d=/^\s*/.exec(e[s+1]??"")?.[0]??" ";r.push(o),r.push(af(d,f,n?s+2:null));for(let p=0;p<f-1;p++)r.push("");r.push(e[l-1]),s=l;continue}}r.push(o),s+=1}return r}var lf=/\b(?:function|class|interface|import\s+|export\s+|def\s+|fn\s+|impl\s+|package\s+|namespace\s+|using\s+|#include|=>\s*\{|=\s*function)/;function mn(e){let t=e.slice(0,4096);return!(!lf.test(t)||t.split(`
|
|
20
|
+
`).length<6)}var ho=/^\s*(?:\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?Z?|\d{2}:\d{2}:\d{2}(?:\.\d+)?)\s*/,go=/^\s*(?:\[(?:DEBUG|TRACE|INFO|VERBOSE)\]|(?:DEBUG|TRACE|INFO|VERBOSE)(?!\s*:))(?=\s|:|$)(?!\s*[+\-*\/%&|^?]*=)/,yo=new RegExp(Q.source,"i"),ko=/\bWARN(?:ING)?\b/i;function bo(e){let t=[],n=0,r=()=>{n>0&&t.push(`\u2026 ${n} verbose log line${n===1?"":"s"} dropped \u2026`),n=0};for(let s of e){if(go.test(s.replace(ho,""))&&!yo.test(s)&&!ko.test(s)){n+=1;continue}r(),t.push(s)}return r(),t}var uf=/^(?:DEBUG|INFO):[\w.-]+:/,cf=/Error|Exception|Traceback|panic|fail|FAIL|Fail|SEVERE|CRITICAL/,ff=8,fo=1,po=2;function mo(e){if(e.trim()===""||/^\s/.test(e)||yo.test(e)||ko.test(e)||cf.test(e))return null;let t=e.replace(ho,"");return go.test(t)||uf.test(t)?"\0verbose":e.replace(/\d+/g,"#")}function _o(e){let t=[],n=0;for(;n<e.length;){let r=mo(e[n]),s=n+1;if(r!==null)for(;s<e.length&&mo(e[s])===r;)s+=1;let o=s-n;r===null||o<ff?t.push(...e.slice(n,s)):(t.push(...e.slice(n,n+fo)),t.push(`\u2026 ${o-fo-po} similar log lines dropped \u2026`),t.push(...e.slice(s-po,s))),n=s}return t}var df=/^@@ -\d+(?:,\d+)? \+\d+(?:,\d+)? @@/;function xo(e){return e.some(t=>df.test(t))}function hn(e){if(e.length===0||xo(e))return e;let t=[],n=1,r=e[0];for(let s=1;s<e.length;s++){if(e[s]===r){n+=1;continue}t.push(n>1&&r.trim()?`${r} \xD7${n}`:r),r=e[s],n=1}return t.push(n>1&&r.trim()?`${r} \xD7${n}`:r),t}function wo(e){if(xo(e))return e;let t=[],n=0;for(let r of e){if(r.trim()===""){n+=1;continue}n>0&&t.push(""),n=0,t.push(r)}return t}var So=new Map;function M(e,t){So.set(e,t)}function vo(e){return So.get(e)}var Ao=/^[dbclps\-][rwxsStT\-]{9}[@.+]?(?:\s|$)/,Ro=/^[./~][^\s]*:$/,pf=String.raw`(?:[^\s\d]{3,}\s+\d{1,2}|\d{1,2}\s+[^\s\d]{3,})\s+(?:\d{1,2}:\d{2}|\d{4})|\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:\s+[+-]\d{4})?`,mf=new RegExp(String.raw`^(\S+)\s+\d+\s+(\S+(?:\s+\S+)??)\s+(\d+(?:[.,]\d+)?[KMGTPkmgtp]?i?B?)\s+(?:${pf})\s+(.+)$`),hf={k:1,m:2,g:3,t:4,p:5},fr=1e3;function gf(e){if(e<1024)return String(e);let t=["K","M","G","T"],n=e/1024,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;return`${n.toFixed(1)}${t[r]}`}function yf(e){let t=/^(\d+(?:[.,]\d+)?)([KMGTPkmgtp])?/.exec(e),n=t[2]?hf[t[2].toLowerCase()]:0;return Number(t[1].replace(",","."))*1024**n}function kf(e){let t=mf.exec(e);if(!t)return null;let n=t[4].trim();if(n===""||n==="."||n==="..")return null;let r=t[3],s=/^\d+$/.test(r)?gf(Number(r)):r,o=e.charCodeAt(0)===100;return{name:n,size:s,sizeKey:yf(r),isDir:o,mode:t[1],owner:t[2].replace(/\s+/g," ")}}function bf(e){if(e.length<3)return null;let t=new Map;for(let s of e){let o=s.name.lastIndexOf(".");if(o<=0)continue;let i=s.name.slice(o);t.set(i,(t.get(i)??0)+1)}let n=null,r=0;for(let[s,o]of t)o>r&&(r=o,n=s);return n&&r>=Math.ceil(e.length/2)?`${r} ${n}`:null}var _f=12,xf=3,wf=180;function Eo(e,t){let n=[],r=e;for(let s of t)r.length+1+s.length>wf&&r!==e&&r!==" "&&(n.push(r),r=" "),r+=r===" "?s:` ${s}`;return n.push(r),n}function Sf(e){let t=e.endsWith("/")?"":e,n=t.indexOf(".",1);return n>0?t.slice(n):""}function vf(e){let t=e.filter(l=>l.trim()!=="");if(t.length<_f)return null;let n=e.findIndex(l=>l.trim()!==""),r=e.length-1-[...e].reverse().findIndex(l=>l.trim()!=="");if(e.slice(n,r+1).some(l=>l.trim()==="")||t.some(l=>l.endsWith(":")||Ro.test(l.trim())||Ao.test(l)||/^total\s+\d+/.test(l)||l!==l.trimEnd()||l.startsWith(" "))||t.filter(l=>/\s/.test(l)).length>t.length*.2)return null;let s=l=>/\s|"/.test(l)?JSON.stringify(l):l,o=new Map;for(let l of t){let u=Sf(l),c=o.get(u)??[];c.push(l),o.set(u,c)}let i=[`${t.length} entries:`],a=[];for(let[l,u]of[...o.entries()].sort((c,f)=>f[1].length-c[1].length||c[0].localeCompare(f[0])))l&&u.length>=xf&&u.every(c=>!/\s|"/.test(c))?i.push(...Eo(`*${l} (${u.length}):`,u.map(c=>c.slice(0,-l.length)))):a.push(...u);return a.length&&i.push(...Eo(`other (${a.length}):`,a.map(s))),i.join(`
|
|
21
21
|
`).length<t.join(`
|
|
22
|
-
`).length?i:null}function Ef(e){if(!e)return!1;let t=/(?:^|[\s;&|(])ls(?=\s|$)([^|;&]*)/.exec(e);if(!t)return!1;for(let n of t[1].trim().split(/\s+/)){if(n==="--")break;if(/^--(?:sort|reverse|time)(?:=|$)/.test(n)||/^-[A-Za-z0-9]+$/.test(n)&&/[tSUfrvX]/.test(n))return!0}return!1}function To(e){let t=new Map;for(let s of e)t.set(s.mode,(t.get(s.mode)??0)+1);let n=null,r=0;for(let[s,o]of t)o>r&&([n,r]=[s,o]);return r>=2?n:null}function dr(e,t){if(Ef(t))return e;let n=vf(e);if(n)return n;let r=[],s=[],o=!1;for(let m of e){if(m.trim()===""||/^total\s+\d+/.test(m))continue;if(Ro.test(m.trim())||!Ao.test(m))return e;let b=kf(m);if(!b){if(/\s\.\.?$/.test(m))continue;return e}o=!0,(b.isDir?r:s).push(b)}if(!o)return e;let i=(m,b)=>m.name.localeCompare(b.name);r.sort(i),s.sort((m,b)=>b.sizeKey-m.sizeKey||i(m,b));let a=[...r,...s],l=a.every(m=>m.owner===a[0].owner)?a[0].owner:null,
|
|
23
|
-
`).trim();if(!t.startsWith("{"))return e;let n;try{n=JSON.parse(t)}catch{return e}if(!n||typeof n!="object"||!n.files||typeof n.files!="object")return e;let r=Object.keys(n.files),s=Lf(r),o=r.reduce((a,l)=>a+(n.files[l].messages?.length??0),0),i=[`phpstan: ${o} error${o===1?"":"s"} in ${r.length} file${r.length===1?"":"s"}${s?` under ${s}`:""}`];for(let a of r){let l=n.files[a].messages??[];i.push(`${a.slice(s.length)} (${l.length})`);for(let
|
|
22
|
+
`).length?i:null}function Ef(e){if(!e)return!1;let t=/(?:^|[\s;&|(])ls(?=\s|$)([^|;&]*)/.exec(e);if(!t)return!1;for(let n of t[1].trim().split(/\s+/)){if(n==="--")break;if(/^--(?:sort|reverse|time)(?:=|$)/.test(n)||/^-[A-Za-z0-9]+$/.test(n)&&/[tSUfrvX]/.test(n))return!0}return!1}function To(e){let t=new Map;for(let s of e)t.set(s.mode,(t.get(s.mode)??0)+1);let n=null,r=0;for(let[s,o]of t)o>r&&([n,r]=[s,o]);return r>=2?n:null}function dr(e,t){if(Ef(t))return e;let n=vf(e);if(n)return n;let r=[],s=[],o=!1;for(let m of e){if(m.trim()===""||/^total\s+\d+/.test(m))continue;if(Ro.test(m.trim())||!Ao.test(m))return e;let b=kf(m);if(!b){if(/\s\.\.?$/.test(m))continue;return e}o=!0,(b.isDir?r:s).push(b)}if(!o)return e;let i=(m,b)=>m.name.localeCompare(b.name);r.sort(i),s.sort((m,b)=>b.sizeKey-m.sizeKey||i(m,b));let a=[...r,...s],l=a.every(m=>m.owner===a[0].owner)?a[0].owner:null,u=To(r),c=To(s),f=[];for(let m of a){let b=m.isDir?u:c,A=`${m.mode===b?"":`${m.mode} `}${l===null?`${m.owner} `:""}${m.isDir?`${m.name}/`:m.name}`;f.push(m.isDir?A:`${A} ${m.size}`)}if(f.length>fr){let m=f.length-fr;f=[...f.slice(0,fr),`\u2026 ${m} more lines omitted`]}let d=s.length===1?"file":"files",p=r.length===1?"dir":"dirs",g=bf(s),y=`${s.length} ${d}, ${r.length} ${p}`+(g?` (${g})`:"")+(l===null?"":`, owner ${l.replace(" ",":")}`)+(u||c?`, mode ${[u&&`dirs ${u}`,c&&`files ${c}`].filter(Boolean).join(", ")} unless shown`:"");return f.push(y),f}M("smart-ls",dr);M("smart-read",e=>Ft(e));var $o=1e3;function Tf(e){let t=e[0].split("/");for(let n of e.slice(1)){let r=n.split("/"),s=0;for(;s<t.length&&s<r.length&&t[s]===r[s];)s+=1;if(t=t.slice(0,s),t.length===0)break}return t.join("/")}function Af(e){if(e.length<2||e.some(s=>s.startsWith('"')))return"";let t=e[0];for(let s of e.slice(1)){let o=0;for(;o<t.length&&o<s.length&&t[t.length-1-o]===s[s.length-1-o];)o+=1;if(t=t.slice(t.length-o),!t)return""}let n=t.indexOf("."),r=n<0?"":t.slice(n);return r.length>=3&&e.every(s=>s.length>r.length)?r:""}function Rf(e){let t=e.filter(u=>u.trim()!=="");if(t.length===0||t.filter(u=>!/\s/.test(u.trim())).length<t.length*.6)return e;let r=new Map,s=[],o=0;for(let u of t){let c=u.trim();if(c.startsWith("find:")){s.push(c);continue}let f=c.replace(/^\.\//,"").replace(/\/+$/,""),d=f.lastIndexOf("/"),p=d>0?f.slice(0,d):d===0?"/":"",g=d>=0?f.slice(d+1):f;if(!g)continue;let y=r.get(p)??[];y.push(/\s/.test(g)?`"${g}"`:g),r.set(p,y),o+=1}if(o===0)return e;let i=[...r.keys()].sort(),a=i.every(u=>u!=="")&&!i.includes("/")?Tf(i):"",l=[`${o}F ${i.length}D${a?` in ${a}/`:""}:`];for(let u of i){let c=u==="/"?"/":a?u.slice(a.length).replace(/^\//,""):u,f=r.get(u),d=Af(f),p=d?f.map(g=>g.slice(0,-d.length)):f;l.push(`${c==="/"?"/":c?`${c}/`:"./"} (${f.length}${d?`, *${d}`:""}): ${p.join(" ")}`)}if(l.length+s.length>$o){let u=Math.max(0,$o-s.length),c=l.length-u;return[...l.slice(0,u),`\u2026 ${c} more lines omitted`,...s]}return[...l,...s]}M("smart-find",Rf);var $f=/^\s*(\d+(?:\s+\d+){0,3})\s+(\S.*)$/;function Cf(e){let t=[];for(let i of e){if(i.trim()==="")continue;let a=$f.exec(i);if(!a)return e;t.push({counts:a[1].replace(/\s+/g," "),path:a[2]})}let n=t.filter(i=>i.path!=="total");if(n.length<2)return t.length?t.map(i=>`${i.counts} ${i.path}`):e;let r=n.map(i=>i.path.includes("/")?i.path.slice(0,i.path.lastIndexOf("/")+1):""),s=r[0];for(let i of r)for(;s&&!i.startsWith(s);)s=s.slice(0,s.slice(0,-1).lastIndexOf("/")+1);let o=s?[`in ${s}:`]:[];for(let i of t)o.push(`${i.counts} ${i.path!=="total"&&s?i.path.slice(s.length):i.path}`);return o}M("smart-wc",Cf);var Co=/^\s*\d+\/\d+ Test\s+#\s*\d+: \S+ \.{2,}/,Of=/^\d+% tests passed, \d+ tests? failed out of \d+$/,If=new RegExp(`${Q.source}|\\*\\*\\*|Exception|FAIL|ERROR`),pr=3,mr=8;function Nf(e){let t=[];for(let n=0;n<e.length;n+=1){let r=1;for(;n+r<e.length&&e[n+r]===e[n];)r+=1;t.push(r>1?`${e[n]} \xD7${r}`:e[n]),n+=r-1}return t}function Pf(e){if(e.length<=pr+mr+1)return e;let t=e.slice(pr,-mr),n=t.filter(s=>If.test(s)),r=t.length-n.length;return r===0?e:[...e.slice(0,pr),...n,`\u2026 ${r} more lines omitted`,...e.slice(-mr)]}function Df(e){if(!e.some(s=>Co.test(s)))return e;let t=[],n=[],r=()=>{t.push(...Pf(Nf(n))),n=[]};for(let s=0;s<e.length;s+=1){let o=e[s];if(Of.test(o))return r(),t.push(...e.slice(s)),t;if(Co.test(o)){r(),t.push(o);continue}n.push(o)}return r(),t}M("smart-ctest",Df);function Lf(e){if(e.length<2)return"";let t=e[0].slice(0,e[0].lastIndexOf("/")+1);for(let n of e)for(;t&&!n.startsWith(t);)t=t.slice(0,t.slice(0,-1).lastIndexOf("/")+1);return t}function Mf(e){let t=e.join(`
|
|
23
|
+
`).trim();if(!t.startsWith("{"))return e;let n;try{n=JSON.parse(t)}catch{return e}if(!n||typeof n!="object"||!n.files||typeof n.files!="object")return e;let r=Object.keys(n.files),s=Lf(r),o=r.reduce((a,l)=>a+(n.files[l].messages?.length??0),0),i=[`phpstan: ${o} error${o===1?"":"s"} in ${r.length} file${r.length===1?"":"s"}${s?` under ${s}`:""}`];for(let a of r){let l=n.files[a].messages??[];i.push(`${a.slice(s.length)} (${l.length})`);for(let u of l){let c=typeof u.line=="number"?`:${u.line}`:":?",f=typeof u.tip=="string"&&u.tip?` \u2014 ${u.tip}`:"";i.push(` ${c} ${String(u.message??"")}${f}`)}}for(let a of Array.isArray(n.errors)?n.errors:[])i.push(`error: ${String(a)}`);return i}M("smart-phpstan",Mf);var Ff=/^\d+ \| /,hr=/^\s+\^\s*$/,jf=new RegExp(`${Q.source}|\\*\\*\\*|Exception|FAIL|ERROR`);function Hf(e){if(!e.some(n=>hr.test(n)))return e;let t=[];for(let n=0;n<e.length;n+=1){let r=e[n];hr.test(r)||Ff.test(r)&&!hr.test(e[n+1]??"")&&!jf.test(r)||t.push(r)}return t}M("bun-frames",Hf);var zf=/^\s*% Total\s+% Received\s+% Xferd\s+Average Speed/,Uf=/^\s+Dload\s+Upload\s+Total\s+Spent\s+Left\s+Speed/,Bf=/^\s*\d+\s+[\d.]+[kMGTP]?\s+\d+\s+[\d.]+[kMGTP]?\s+\d+\s+[\d.]+[kMGTP]?\s+[\d.]+[kMGTP]?\s+[\d.]+[kMGTP]?\s+[-\d:]+\s+[-\d:]+\s+[-\d:]+\s+[\d.]+[kMGTP]?\s*$/,Zf=/^\* (?:Trying |Connected to |Host .* was resolved|Connection #\d+|IPv[46]:|Uses proxy)|^> [A-Z]+ \S+ HTTP\/[\d.]+\s*$|^< HTTP\/[\d.]+ \d{3}/,Jf=/^(?:\* |[<>] (?:[A-Za-z][\w-]*: .*|[A-Z]+ \S+ HTTP\/[\d.]+|HTTP\/[\d.]+ .*)$|[<>]\s?$|[{}] \[\d+ bytes data\])/;function Gf(e){let t=e.split("\r").filter(n=>n.trim()!=="");return t.length>0&&t.every(n=>Bf.test(n))}function Wf(e){let t=e.some(r=>Zf.test(r)),n=[];for(let r=0;r<e.length;r+=1){let s=e[r];if(zf.test(s)){let o=r+1;for(Uf.test(e[o]??"")&&(o+=1);Gf(e[o]??"");)o+=1;r=o-1;continue}t&&Jf.test(s)||n.push(s)}return n}M("curl-progress",Wf);var gr=1e3,Oo=200,Vf=60,Kf=190,Po=/^([^\s:]+):(\d+):(.*)$/,Do=/^([^:]+?)-(\d+)-(.*)$/,Lo=/^([^\s:]+):(.*)$/,Io=/(?:^|\/)(?:__tests__|tests?|spec|fixtures?|__mocks__|__snapshots__)\/|\.(?:test|spec)\.[^/]+$/i;function No(e,t=!1){let n=t?e.trimEnd():e.trim();return n.length>Oo?`${n.slice(0,Oo)}\u2026`:n}function qf(e){let t=[],n="";for(let r of e){let s=n?`${n}, ${r}`:r;s.length>=Kf&&n?(t.push(`${n},`),n=r):n=s}return n&&t.push(n),t}function Yf(e){let t=null;for(let n of e){let r=n.split("/").slice(0,-1);if(t===null){t=r;continue}let s=0;for(;s<t.length&&s<r.length&&t[s]===r[s];)s+=1;if(t=t.slice(0,s),t.length===0)return""}return t?t.join("/"):""}function Mo(e){return e.includes("/")||e.includes("\\")||/\.[A-Za-z][\w-]*$/.test(e)}function Xf(e,t,n){return/^\d+$/.test(e)?!1:Mo(e)?!0:(t||n)&&/^[\w.-]+$/.test(e)}function Qf(e){let t=0,n=0;for(let r of e){let s=(Po.exec(r)??Do.exec(r)??Lo.exec(r))?.[1];s&&(n+=1,Mo(s)&&(t+=1))}return t>=2&&t*2>n}function Fo(e,t={}){let n=e.filter(m=>m.trim()!=="");if(n.length===0)return e;let r=Qf(n),s=new Map,o=new Map,i=null,a=0,l=0,u=null;for(let m of n){if(m==="--"){i&&s.get(i).push({separator:!0});continue}if(/^[A-Za-z]:[\\/]/.test(m))return e;let b=Po.exec(m),w=Do.exec(m);if(b&&w)return e;let A=b||w?null:Lo.exec(m),I=(b??w??A)?.[1];if(!I||!Xf(I,!!b,r))return e;let L=b?{line:b[2],content:b[3],context:!1}:w?{line:w[2],content:w[3],context:!0}:{line:"",content:A[2],context:!1},z=s.get(I)??[];z.push(L),s.set(I,z);let F=L.line?Number(L.line):NaN,me=t.astGrep&&I===i&&u!==null&&F===u+1;(t.astGrep?!me:!L.context)&&(a+=1,o.set(I,(o.get(I)??0)+1)),u=t.astGrep&&Number.isFinite(F)?F:null,l+=1,i=I}if(s.size===l)return e;let c=[...s.keys()].sort((m,b)=>{let w=Io.test(m)?1:0,A=Io.test(b)?1:0;return w-A||(m<b?-1:m>b?1:0)}),f=c.length>1?Yf(c):"",d=m=>f?m.slice(f.length+1):m,p=[];for(let m of c){p.push(`${d(m)} (${o.get(m)??0}):`);for(let b of s.get(m))"separator"in b?p.push(" --"):b.line?p.push(` ${b.line}${b.context?"-":":"} ${No(b.content,t.astGrep)}`):p.push(` ${No(b.content,t.astGrep)}`)}let g=c.length>1&&p.length>Vf?qf(c.map(m=>`${d(m)} (${o.get(m)??0})`)):[],y=[`${a}m ${c.length}f${f?` in ${f}/`:""}:`,...g,"",...p];if(y.length>gr){let m=y.length-gr;return[...y.slice(0,gr),`\u2026 ${m} more lines omitted`]}return y}M("smart-grep",Fo);M("smart-grep-ast",e=>Fo(e,{astGrep:!0}));var jo=/^(?:([|\\/ ._-]*\*[|\\/* ._-]* ))?commit [0-9a-f]{7,40}\b/,ed=/^[|\\/* ._-]*$/,td=/^ {4}/,nd=/^ {4}(?:Co-[Aa]uthored-[Bb]y|Signed-off-by|Reviewed-by|Acked-by|Tested-by|Reported-by|Fixes|Closes):/,rd=2,sd=1,Ho=/^commit ([0-9a-f]{40})(\s.*)?$/,od=/^Author:\s+(.+)$/,id=/^Date:\s+(?:[A-Z][a-z]{2} )?([A-Z][a-z]{2}) +(\d{1,2}) (\d{2}:\d{2}):\d{2} (\d{4}) ([+-]\d{4})$/,ad=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ld=12,ud=5;function cd(e){let t=[];for(let l=0;l<e.length;l+=1){let u=Ho.exec(e[l]);if(!u)continue;let c=l+1,f=null;e[c]?.startsWith("Merge: ")&&(f=e[c].slice(7),c+=1);let d=od.exec(e[c]??""),p=id.exec(e[c+1]??"");if(!d||!p)return null;let g=ad.indexOf(p[1])+1;if(g===0)return null;t.push({at:l,hash:u[1].slice(0,ld),refs:u[2]??"",merge:f,author:d[1],date:`${p[4]}-${String(g).padStart(2,"0")}-${p[2].padStart(2,"0")} ${p[3]}`,zone:p[5],end:c+2})}if(t.length===0)return null;let n=[...new Set(t.map(l=>l.author))],r=n.length===1&&t.length>1?n[0]:null,s=n.length>1&&n.length<=ud&&t.length>n.length,o=t.length>1&&t.every(l=>l.zone===t[0].zone)?t[0].zone:null,i=r?[`author: ${r}`]:s?[`authors: ${n.map((l,u)=>`[${u+1}] ${l}`).join("; ")}`]:[];o&&i.push(`dates: UTC${o}`);let a=0;for(let l of t){i.push(...e.slice(a,l.at));let u=r?"":s?` [${n.indexOf(l.author)+1}]`:` ${l.author}`;i.push(`${l.hash} ${l.date}${o?"":` ${l.zone}`}${u}${l.merge?` merge ${l.merge}`:""}${l.refs}`),a=l.end}return i.push(...e.slice(a)),i}function fd(e){if(!e.some(r=>jo.test(r)))return e;let t=e.some(r=>Ho.test(r))&&!e.some(r=>/^[|\\/*]/.test(r)),n=dd(e,t?sd:rd);return cd(n)??n}function dd(e,t){let n=[],r=0,s=0,o=0,i="",a=!1,l=!1,u=()=>{s>0&&n.push(`${i} \u2026 ${s} ${s===1?"line":"lines"} folded \u2026`),s=0};for(let c of e){let f=c.slice(0,o),d=ed.test(f),p=d?c.slice(o):c,g=td.test(p),y=a&&g?null:jo.exec(c);if(y){u(),r=0,o=y[1]?.length??0,a=!0,l=!1,n.push(c);continue}if(/^diff --(?:git|cc|combined) /.test(p)&&(l=!0),g&&!l&&!(o>0&&p.trim().length===0)){if(nd.test(p)){n.push(c);continue}r+=1,r<=t?n.push(c):(s+=1,i=d?f:"");continue}u(),n.push(c)}return u(),n}M("smart-log",fd);var pd=/^[\s=]+$/,md=/^\s*=+\s+(.*?)\s+=+\s*$/,hd=512;M("strip-banners",e=>{let t=[];for(let n of e){if(pd.test(n))continue;let r=n.length<=hd?md.exec(n):null;t.push(r?r[1]:n)}return t});function gd(e){let t=[],n=0,r=0;for(;r<e.length;){let s=e[r].trimEnd();if(s===""){n+=1,r+=1,n<=1&&t.push("");continue}n=0;let o=1;for(;r+o<e.length&&e[r+o].trimEnd()===s;)o+=1;if(o>=3)t.push(s),t.push(` \u2026 (repeated ${o}x)`);else for(let i=0;i<o;i++)t.push(s);r+=o}for(;t.length>0&&t[t.length-1]==="";)t.pop();return t}M("squeeze-output",gd);function yd(e){return e==="compact"?.6:e==="minimal"?.3:1}var kd=20;function bd(e){let[t,n,r,s]=e.slice(-4);if(!t||!n||!r||!s||!/^\s*Test Files\s+([1-9]\d*) passed \(\1\)$/.test(t)||!/^\s*Tests\s+([1-9]\d*) passed \(\1\)$/.test(n)||!/^\s*Start at\s+\d{2}:\d{2}:\d{2}$/.test(r))return e;let o=/^(\s*Duration\s+\d+(?:\.\d+)?(?:ms|s)) \(transform [^\n]+\)$/.exec(s)?.[1];return o?[...e.slice(0,-4).filter((a,l)=>l>2||!/^ RUN v\d+\.\d+\.\d+(?:[\w.+-]*) .+$/.test(a)),t,n,o]:e}var zo=new WeakMap;function _d(e){let t=zo.get(e);if(t)return t;let n=e.strip_lines_matching.map(o=>new RegExp(o)),r=(e.drop_lines_matching??[]).map(o=>new RegExp(o)),s={def:e,stripRegexes:n,dropRegexes:r};return zo.set(e,s),s}var xd=new RegExp([String.raw`(?:^|[\s;&|(])grep(?=\s)[^|;&]*?\s(?:-[A-Za-z]*q[A-Za-z]*|--quiet|--silent)(?=\s|$)`,String.raw`(?:^|[\s;&|(])find(?=\s)[^|;&]*?\s-(?:delete|quit|exec|execdir|ok|okdir|fprint0?|fprintf|fls|prune)(?=\s|$)`,String.raw`(?:^|[\s;&|(])(?:ruff|black|flake8)(?=\s)[^|;&]*?\s(?:-q+|--quiet)(?=\s|$)`,String.raw`(?:^|[\s;&|(])eslint(?=\s)[^|;&]*?\s(?:-o|--output-file)(?=[\s=]|$)`,String.raw`(?:^|[\s;&|(])prettier(?=\s)[^|;&]*?\s(?:-l|--list-different)(?=\s|$)`].join("|")),wd=new Set(["grep","ast-grep"]);function yr(e){return!!e&&xd.test(e)}function kr(e,t,n){if(e==="smart-ls")return dr(t,n);let r=vo(e);return r?r(t):t}function gn(e,t,n={}){return br(e,t,n).text}function br(e,t,n={}){let r=n.verbosity??"normal";if(!t.strip_ansi&&t.strip_lines_matching.length===0&&(t.drop_lines_matching??[]).length===0&&!t.transform&&!t.mask_abs_paths&&!t.fold_passing&&!t.truncate_lines_at&&!t.max_lines&&!t.on_empty&&!n.smartCode&&r==="normal")return{text:e,droppedTail:null};let s=_d(t),o=!t.preserve_exact&&e.includes(`\r
|
|
24
24
|
`)?e.replace(/\r\n/g,`
|
|
25
|
-
`):e;t.strip_ansi&&(o=
|
|
25
|
+
`):e;t.strip_ansi&&(o=ce(o));let i=o.endsWith(`
|
|
26
26
|
`),a=(i?o.slice(0,-1):o).split(`
|
|
27
|
-
`);s.stripRegexes.length&&(a=t.keep_failures?a.filter(d=>Q.test(d)||!s.stripRegexes.some(p=>p.test(d))):
|
|
28
|
-
`):null,a=[...a.slice(0,m),...I>0?[dt(I)]:[],...w.filter(L=>Q.test(L))]}else if(c
|
|
29
|
-
`),a=[...a.slice(0,m),dt(b)];else{let{kept:w,dropped:A}=lo(a,p);
|
|
27
|
+
`);s.stripRegexes.length&&(a=t.keep_failures?a.filter(d=>Q.test(d)||!s.stripRegexes.some(p=>p.test(d))):ur(a,s.stripRegexes)),s.dropRegexes.length&&(a=ur(a,s.dropRegexes)),r!=="normal"&&!t.preserve_exact&&(a=hn(a),a=wo(a)),r==="minimal"&&!t.preserve_exact&&(a=bo(a),(t.slug==="vitest"||t.slug==="npm-test")&&(a=bd(a)));let l=t.transform==="smart-read"&&n.smartCode!==!0?r==="compact"?8:r==="minimal"?6:3:3;!t.preserve_exact&&(n.smartCode||n.smartCode===void 0&&r!=="normal"&&mn(o))&&(a=Ft(a,l)),t.transform&&(t.transform==="smart-read"?a=Ft(a,l,t.slug==="read-tool"):a=kr(t.transform,a,n.cmd));let u=t.slug==="read-tool";if(!u){let d=cr(a);d.some(Boolean)&&(a=a.filter((p,g)=>!d[g]))}t.mask_abs_paths&&(a=co(a)),t.fold_passing&&(a=uo(a,t.fold_passing_threshold??5)),t.truncate_lines_at&&(a=ao(a,t.truncate_lines_at));let c=null;if(t.max_lines){let d=t.scale_with_level?yd(n.verbosity):1,p=Math.min(t.max_lines,Math.max(kd,Math.round(t.max_lines*d))),g=u?cr(a):null,y=g?g.filter(m=>!m).length:a.length;if(y>p){let m=p;if(g){let w=0;for(m=0;m<a.length&&w<p;)g[m]||(w+=1),m+=1}let b=y-p;if(t.keep_failures){let w=a.slice(m),A=w.filter(L=>!Q.test(L)),I=w.reduce((L,z,F)=>L+(!Q.test(z)&&!g?.[m+F]?1:0),0);c=A.length>0?A.join(`
|
|
28
|
+
`):null,a=[...a.slice(0,m),...I>0?[dt(I)]:[],...w.filter(L=>Q.test(L))]}else if(u)c=a.slice(m).join(`
|
|
29
|
+
`),a=[...a.slice(0,m),dt(b)];else{let{kept:w,dropped:A}=lo(a,p);c=A.length>0?A.join(`
|
|
30
30
|
`):null,a=w}}}let f=a.join(`
|
|
31
31
|
`);return i&&f.length>0&&(f+=`
|
|
32
|
-
`),f.trim().length===0&&t.on_empty&&(e.length===0||e.trim().length>0)&&(n.exitCode==null||n.exitCode===0||n.exitCode===1&&wd.has(t.slug))&&!yr(n.cmd)&&(f=t.on_empty),{text:f,droppedTail:
|
|
33
|
-
`)[0]})`}),{filters:n,tests:r,issues:s}}let a=Id(i.schema_version);if(a)return s.push({file:t,message:a}),{filters:n,tests:r,issues:s};let l=i.filters;if(typeof l!="object"||l===null||Array.isArray(l))return s.push({file:t,message:"no [filters.<name>] table found"}),{filters:n,tests:r,issues:s};for(let[c
|
|
32
|
+
`),f.trim().length===0&&t.on_empty&&(e.length===0||e.trim().length>0)&&(n.exitCode==null||n.exitCode===0||n.exitCode===1&&wd.has(t.slug))&&!yr(n.cmd)&&(f=t.on_empty),{text:f,droppedTail:c}}import Sd from"node:os";import{join as Uo}from"node:path";function R(){return process.env.TOKMIZER_HOME||Uo(Sd.homedir(),".tokmizer")}function jt(){return Uo(R(),"install-id")}var Wo="user/",yn=1,kn=null,Zo="",Jo=0,Ad=1e3;function bn(){return _n(R(),"filters")}function Vo(){return _n(R(),"filters-trust.json")}function Ko(e){return typeof e=="string"&&e.startsWith(Wo)}function Rd(e){return Td("sha256").update(e).digest("hex")}async function $d(){try{let e=JSON.parse(await Go(Vo(),"utf8")),t={};if(e.files&&typeof e.files=="object")for(let[n,r]of Object.entries(e.files))typeof r=="string"&&/^[0-9a-f]{64}$/.test(r)&&(t[n]=r);return{v:1,files:t}}catch{return{v:1,files:{}}}}function Cd(e,t){if(t===void 0)return{tests:[]};let n={message:`${e}: tests: each [[filters.${e}.tests]] needs input and expected strings`};if(!Array.isArray(t))return n;let r=[];for(let s of t){if(typeof s!="object"||s===null)return n;let{input:o,expected:i,name:a}=s;if(typeof o!="string"||typeof i!="string")return n;r.push({...typeof a=="string"&&a?{name:a}:{},input:o,expected:i})}return{tests:r}}function Od(e,t){let n=typeof t=="object"&&t!==null&&!Array.isArray(t)?t:{},{tests:r,...s}=n,o=Cd(e,r);if("message"in o)return o;let i=Te.safeParse({...s,slug:e});if(!i.success){let l=i.error.issues.map(u=>`${u.path.join(".")||"rule"}: ${u.message}`).join("; ");return{message:`${e}: ${l}`}}let a;try{a=new RegExp(i.data.match_command)}catch{return{message:`${e}: match_command is not a valid regular expression`}}for(let l of i.data.strip_lines_matching)try{new RegExp(l)}catch{return{message:`${e}: strip_lines_matching has an invalid regular expression`}}return{filter:{...i.data,slug:`${Wo}${i.data.slug}`,matchRegex:a},tests:o.tests}}function Id(e){return e===void 0||e===yn?null:typeof e=="number"&&Number.isInteger(e)?`schema_version ${e} is not supported: this tkr reads schema_version = ${yn}. Update tkr, or write the file for version ${yn}`:`schema_version must be the number ${yn}`}async function Nd(e){try{return(await vd(e)).filter(t=>t.endsWith(".toml")).sort()}catch{return[]}}async function Pd(e={}){let t=e.requireTrust!==!1,n=bn(),r=new Map,s=new Map,o=[],i=await Nd(n);if(i.length===0)return{dir:n,filters:r,tests:s,issues:o};let a=t?await $d():null;for(let l of i){let u;try{u=await Go(_n(n,l),"utf8")}catch{o.push({file:l,message:"could not be read"});continue}if(a){let f=a.files[l];if(!f){o.push({file:l,message:`not trusted yet. Review it, then run: tkr filters trust ${l}`});continue}if(f!==Rd(u)){o.push({file:l,message:`changed since it was trusted. Review it, then run: tkr filters trust ${l}`});continue}}let c=await Dd(u,l);for(let[f,d]of c.filters)r.set(f,d);for(let[f,d]of c.tests)s.set(f,d);o.push(...c.issues)}return{dir:n,filters:r,tests:s,issues:o}}async function Dd(e,t){let n=new Map,r=new Map,s=[],{parse:o}=await Promise.resolve().then(()=>(pn(),lr)),i;try{i=o(e)}catch(u){return s.push({file:t,message:`not valid TOML (${String(u.message).split(`
|
|
33
|
+
`)[0]})`}),{filters:n,tests:r,issues:s}}let a=Id(i.schema_version);if(a)return s.push({file:t,message:a}),{filters:n,tests:r,issues:s};let l=i.filters;if(typeof l!="object"||l===null||Array.isArray(l))return s.push({file:t,message:"no [filters.<name>] table found"}),{filters:n,tests:r,issues:s};for(let[u,c]of Object.entries(l)){let f=Od(u,c);if("message"in f){s.push({file:t,message:f.message});continue}n.set(f.filter.slug,f.filter),f.tests.length>0&&r.set(f.filter.slug,{file:t,tests:f.tests})}return{filters:n,tests:r,issues:s}}function Ld(){let e=[];for(let t of[Vo(),bn()])try{let n=Bo(t);e.push(`${n.mtimeMs}:${n.size}`)}catch{e.push("-")}try{for(let t of Ed(bn()).filter(n=>n.endsWith(".toml")).sort()){let n=Bo(_n(bn(),t));e.push(`${t}:${n.mtimeMs}:${n.size}`)}}catch{}return e.join("|")}function Md(){let e=Date.now();if(!kn||e-Jo>=Ad){Jo=e;let t=Ld();(!kn||t!==Zo)&&(Zo=t,kn=Pd())}return kn}async function Fd(e){let{filters:t}=await Md();return t.size===0?null:ft(e,t.values(),null,t)}function qo(e){return async(t,n)=>await Fd(t)??e(t,n)}var jd=[/\bERROR\b/,/\bFAIL\b/,/\bFAILED\b/,/\bFATAL\b/,/^Traceback /m,/^Error: /m,/^\s+at .*\(.*:\d+:\d+\)/m,/panic:/,/SyntaxError:/,/TypeError:/,/ReferenceError:/,/AssertionError:/,/^\s*(?:error|fatal):/i,/thread '.*' panicked/,/\b[1-9]\d* (?:failed|errors?)\b/];function Yo(e){if(!e)return!1;for(let t of ce(e).split(`
|
|
34
34
|
`))if(!/^\s*[✓✔√]\s/.test(t)&&jd.some(n=>n.test(t)))return!0;return!1}var Hd=new Set(["sudo","command","time","nice","nohup","env","stdbuf","timeout"]),zd=/^[A-Za-z_][A-Za-z0-9_]*=/,_r=/^([a-z]+)-tool(?::\s|$)/,Ud=new Set(["-C","-c","--git-dir","--work-tree","--namespace","--exec-path","--super-prefix","--config-env"]),Bd=new Set(["-p","--paginate","-P","--no-pager","--bare","--no-replace-objects","--literal-pathspecs","--glob-pathspecs","--noglob-pathspecs","--icase-pathspecs","--no-optional-locks","--no-lazy-fetch","--no-advice"]);function Zd(e){let t=0;for(;t<e.length;){let n=e[t];if(Ud.has(n))t+=2;else if(Bd.has(n))t+=1;else if(/^--(?:git-dir|work-tree|namespace|exec-path|super-prefix|config-env)=/.test(n))t+=1;else if(/^-[Cc]\S/.test(n))t+=1;else break}return e.slice(t)}function Ye(e){let t=e.trim(),n=t.split(/\s+/),r=0;for(;r<n.length;){let l=n[r];if(zd.test(l)){r++;continue}if(Hd.has(l)){for(r++,l==="timeout"&&r<n.length&&/^\d+(?:\.\d+)?[smhd]?$/.test(n[r])&&r++;(l==="stdbuf"||l==="nice")&&r<n.length&&n[r].startsWith("-");)r++;continue}break}if(r>=n.length)return t;let s=n[r],o=s.slice(Math.max(s.lastIndexOf("/"),s.lastIndexOf("\\"))+1)||s;o=o.replace(/\.(?:exe|cmd|bat|ps1)$/i,"")||o;let i=n.slice(r+1);o.toLowerCase()==="py"&&(o="python",i.length&&/^-\d(?:\.\d+)?(?:-\d+)?$/.test(i[0])&&(i=i.slice(1)));let a=o==="git"?Zd(i):i;return a.length?`${o} ${a.join(" ")}`:o}var Jd=new Set(["cd","export","source","set","unset","mkdir","true",":","pushd","popd","alias","ulimit","umask","echo","printf","sleep","touch","rm","cp","mv","chmod","ln"]);function Xo(e,t){let n=!1,r=!1,s=0,o=[];for(let i=0;i<e.length;i++){let a=e[i];if(a==="\\"&&!n){i++;continue}a==="'"&&!r?n=!n:a==='"'&&!n?r=!r:!n&&!r&&(a===";"?(o.push(e.slice(s,i)),s=i+1):a==="|"&&e[i+1]==="|"?(o.push(e.slice(s,i)),i++,s=i+1):a==="|"?t||(o.push(e.slice(s,i)),s=i+1):a==="&"&&e[i+1]==="&"&&(o.push(e.slice(s,i)),i++,s=i+1))}return o.push(e.slice(s)),o}function Gd(e){let t=Xo(e,!1);for(let n=t.length-1;n>=0;n--){let r=t[n].trim();if(r)return r}return e.trim()}function xr(e){let t=Xo(e,!0).map(n=>n.trim()).filter(Boolean);if(t.length===0)return null;for(let n of t.slice(0,-1)){let r=Ye(n).split(/\s+/)[0]??"";if(!Jd.has(r))return null}return Gd(t[t.length-1])}function Qo(e){let t=!1,n=!1,r=0,s=[];for(let o=0;o<e.length;o++){let i=e[o];if(i==="\\"&&!t){o++;continue}i==="'"&&!n?t=!t:i==='"'&&!t?n=!n:!t&&!n&&(i==="|"||i===";"?(s.push(e.slice(r,o)),i==="|"&&e[o+1]==="|"&&o++,r=o+1):i==="&"&&e[o+1]==="&"&&(s.push(e.slice(r,o)),o++,r=o+1))}s.push(e.slice(r));for(let o=s.length-1;o>=0;o--){let i=s[o].trim();if(i)return i}return e.trim()}var Wd=/^(?:npx|bunx|uvx|pnpm\s+(?:exec|dlx)|yarn\s+(?:exec|dlx)|(?:uv|poetry|pipenv|hatch|pdm|rye)\s+run|bundle\s+exec|python[0-9.]*\s+-m)\s+(?=[^\s-])/;function wr(e){let t=Wd.exec(e);return t?Ye(e.slice(t[0].length)):null}function ei(e){let t=_r.exec(e),n=e;if(t){if(t[1]!=="bash")return[e];let a=e.indexOf(": ");if(a<0)return[e];n=e.slice(a+2)}let r=xr(n),s=r?Ye(r):null,i=[s?wr(s):null,s,e].filter(a=>!!a);return[...new Set(i)]}var ti=`
|
|
35
35
|
[YOLO: omitted]
|
|
36
36
|
`;function Sr(e){let t=Buffer.from(e,"utf8");if(t.length<=256)return e;let n=256-Buffer.byteLength(ti,"utf8"),r=Math.floor(n/2);for(;(t[r]&192)===128;)r-=1;let s=t.length-(n-r);for(;(t[s]&192)===128;)s+=1;return t.subarray(0,r).toString("utf8")+ti+t.subarray(s).toString("utf8")}var Vd=/^ID {2,}TITLE {2,}BRANCH {2,}STATE {2,}CREATED *$/,Kd=/^… \([1-9]\d* more lines omitted\)$/,vr=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?Z$/;function qd(e,t){if(!t)return e.split(`
|
|
@@ -42,7 +42,7 @@ ${a}`:i||a}function ar(e,{maxDepth:t=1e3,numbersAsFloat:n=!1,strictTemporal:r=!1
|
|
|
42
42
|
`)?`
|
|
43
43
|
`:"",r=(n?e.slice(0,-1):e).split(`
|
|
44
44
|
`),s=r.findIndex(m=>Vd.test(m));if(s>=0&&r.slice(0,s).some(m=>m!==""&&!/^Showing \d+ of \d+ (?:open|closed|all) pull requests in \S+$/.test(m)))return e;let o=s>=0?[...r[s].matchAll(/\S+/g)].map(m=>m.index):[],i=[];for(let m=s+1;m<r.length;m+=1){let b=r[m];if(Kd.test(b))continue;if(/…|\.\.\./.test(b))return e;let w;if(s>=0){if(/[^\x20-\x7e]/.test(b))return e;let A=o.map((I,L)=>b.slice(I,o[L+1]));if(A.slice(0,-1).some(I=>I[0]===" "||!I.endsWith(" "))||(w=A.map(I=>I.replace(/ +$/,"")),!/^#\d+$/.test(w[0])||!/^\S+$/.test(w[2])||!/^(OPEN|CLOSED|MERGED|DRAFT)$/.test(w[3])||!/^\d+(?:s|m|h|d|w|mo|y)$/.test(w[4])))return e}else if(w=b.split(" "),w.length!==5||!/^\d+$/.test(w[0])||!w[1]||!w[2]||!/^(OPEN|CLOSED|MERGED|DRAFT)$/.test(w[3])||!vr.test(w[4])||!Number.isFinite(Date.parse(w[4])))return e;if(w.some(A=>/[\u0000-\u001f\u007f]/.test(A)))return e;i.push({index:m,cells:w})}if(i.length===0)return e;s>=0&&(r[s]="ID TITLE BRANCH STATE CREATED");for(let m of i)r[m.index]=m.cells.join(" ");let a=r.join(`
|
|
45
|
-
`)+n;if(!t)return a;let l=new Map;for(let{cells:m}of i)l.set(m[1],(l.get(m[1])??0)+1);let
|
|
45
|
+
`)+n;if(!t)return a;let l=new Map;for(let{cells:m}of i)l.set(m[1],(l.get(m[1])??0)+1);let u=new Map,c=[];for(let[m,b]of l){if(m.length<40||b<3||m.trim().split(/\s+/).length<8)continue;let w=`@${u.size+1}`,A=JSON.stringify(m).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029"),I=`TITLE ${w} = ${A}`;b*(Buffer.byteLength(m)-Buffer.byteLength(w))<=Buffer.byteLength(I)+1||(u.set(m,w),c.push(I))}let f=new Map;for(let{cells:m}of i){if(u.has(m[1]))continue;let b=/^((?:\S+\s+){4})\S/.exec(m[1])?.[1];b&&b.length>=24&&f.set(b,(f.get(b)??0)+1)}let d=new Map;for(let[m,b]of f){if(b<3)continue;let w=`@p${d.size+1}`,A=`TITLE prefix ${w} = ${JSON.stringify(m).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}`;b*(Buffer.byteLength(m)-Buffer.byteLength(w)-1)<=Buffer.byteLength(A)+1||(d.set(m,w),c.push(A))}let p=i[0].cells[4].slice(10),g=i.length>=3&&vr.test(i[0].cells[4])&&i.every(({cells:m})=>vr.test(m[4])&&m[4].slice(10)===p)&&i.length*p.length>`CREATED suffix = ${JSON.stringify(p)}`.length+1;if(g&&c.push(`CREATED suffix = ${JSON.stringify(p)}`),c.length===0)return a;for(let{index:m,cells:b}of i){let w=u.get(b[1]),A=/^((?:\S+\s+){4})\S/.exec(b[1])?.[1],I=A?d.get(A):void 0;r[m]=b.map((L,z)=>z===1?w??(I?`${I}:${L.slice(A.length)}`:L):z===4&&g?L.slice(0,10):L).join(" ")}let y=[...r,"",...c].join(`
|
|
46
46
|
`)+n;return Buffer.byteLength(y)<Buffer.byteLength(a)?y:a}var ni={"Changes to be committed:":"staged","Changes not staged for commit:":"unstaged","Untracked files:":"untracked"},Xd={modified:"M",deleted:"D","new file":"A",renamed:"R",copied:"C",typechange:"T"},Qd=/^\t(modified|deleted|new file|renamed|copied|typechange):\s+(.+)$/,ep=/^On branch (\S+)$/,tp=/^Your branch is (?:up to date with '([^']+)'|(ahead|behind)(?: of)? '([^']+)' by (\d+) commits?(?:, and can be fast-forwarded)?)\.$/;function np(e){let t=ep.exec(e[0]??"");if(!t)return e;let n=tp.exec(e[1]??"");if(!n)return[`* ${t[1]}`,...e.slice(1)];let r=n[1]??n[3],s=n[2]?` [${n[2]} ${n[4]}]`:"";return[`* ${t[1]}...${r}${s}`,...e.slice(2)]}function ri(e){let t=e.endsWith(`
|
|
47
47
|
`)?`
|
|
48
48
|
`:"",n=np((t?e.slice(0,-1):e).split(`
|
|
@@ -52,68 +52,68 @@ ${a}`:i||a}function ar(e,{maxDepth:t=1e3,numbersAsFloat:n=!1,strictTemporal:r=!1
|
|
|
52
52
|
`)}var op=/^( *(?:[~+-] +)?(?:[\w.-]+|"[^"\n]*")) {2,}= /gm,oi=/^[A-Z][A-Z0-9_]*(?: +[A-Z][A-Z0-9_]*)+$/,ii=/^… \(\d+ more lines omitted\)$/;function ip(e,t){let n=[];for(let r=0;r<t.length;r+=1){let s=t[r];if(s>0&&e.length>s&&e[s-1]!==" ")return null;let o=e.slice(s,t[r+1]??e.length).trim();if(o.includes(" "))return null;n.push(o)}return n}function ap(e){let t=e.endsWith(`
|
|
53
53
|
`)?`
|
|
54
54
|
`:"",n=(t?e.slice(0,-1):e).split(`
|
|
55
|
-
`),r=[],s=[];for(let
|
|
56
|
-
`)+t;let i=s[o],a=[...i.matchAll(/\S+/g)].map(
|
|
57
|
-
`)+t;l.push(
|
|
55
|
+
`),r=[],s=[];for(let u of n)u.startsWith("WARNING:")?r.includes(u)||r.push(u):s.push(u);let o=s.findIndex(u=>oi.test(u));if(o<0)return[...r,...s].join(`
|
|
56
|
+
`)+t;let i=s[o],a=[...i.matchAll(/\S+/g)].map(u=>u.index),l=[...r,...s.slice(0,o),i.split(/ +/).join(" ")];for(let u of s.slice(o+1)){if(ii.test(u)){l.push(u);continue}let c=u.startsWith(" ")||/[^\x20-\x7e]/.test(u)?null:ip(u,a);if(!c)return[...r,...s].join(`
|
|
57
|
+
`)+t;l.push(c.join(" "))}return l.join(`
|
|
58
58
|
`)+t}function lp(e){let t=e.endsWith(`
|
|
59
59
|
`)?`
|
|
60
60
|
`:"",n=(t?e.slice(0,-1):e).split(`
|
|
61
61
|
`),r=n.findIndex(i=>oi.test(i.trimEnd()));if(r<0)return e;let s=n[r].trim().split(/ {2,}/).length;if(s<2)return e;let o=[...n.slice(0,r),n[r].trim().split(/ {2,}/).join(" ")];for(let i of n.slice(r+1)){if(ii.test(i)){o.push(i);continue}if(i.startsWith(" ")||i.includes(" ")||/[^\x20-\x7e]/.test(i))return e;let a=i.trimEnd().split(/ {2,}/);if(a.length===s-1){let l=a[0].indexOf(" ");if(l<0||a[0].indexOf(" ",l+1)>=0)return e;a=[a[0].slice(0,l),a[0].slice(l+1),...a.slice(1)]}if(a.length!==s)return e;o.push(a.join(" "))}return o.join(`
|
|
62
|
-
`)+t}function Er(e,t,n){if(t!=="compact"&&t!=="minimal"){if(n!=="git-status")return e;let s=ri(e);return Buffer.byteLength(s)<Buffer.byteLength(e)?s:e}let r=e;if(/^[ \t\r\n]*[\[{]/.test(e)){try{JSON.parse(e)}catch{return e}r=qd(e,t==="minimal")}else n==="gh"?r=Yd(e,t==="minimal"):n==="git-status"?r=ri(e):n==="gcloud"?r=ap(e):n==="oc"?r=lp(e):n==="git-diff"?r=sp(e):n==="tofu-plan"&&(r=e.replace(op,"$1 = "));return Buffer.byteLength(r)<Buffer.byteLength(e)?r:e}var
|
|
63
|
-
`),n=[];for(let r=0;r<t.length;){let s=t[r],o=r+1;if(
|
|
64
|
-
`)}var fp=/^(?:[A-Za-z]:)?[^\s"'<>|]+\.(?:[cm]?[jt]sx?|json)$/,dp=/--(?:listFiles|listFilesOnly|listEmittedFiles|showConfig|explainFiles|traceResolution)(?:\s|=|$)/;function li(e){return dp.test(e)}function
|
|
62
|
+
`)+t}function Er(e,t,n){if(t!=="compact"&&t!=="minimal"){if(n!=="git-status")return e;let s=ri(e);return Buffer.byteLength(s)<Buffer.byteLength(e)?s:e}let r=e;if(/^[ \t\r\n]*[\[{]/.test(e)){try{JSON.parse(e)}catch{return e}r=qd(e,t==="minimal")}else n==="gh"?r=Yd(e,t==="minimal"):n==="git-status"?r=ri(e):n==="gcloud"?r=ap(e):n==="oc"?r=lp(e):n==="git-diff"?r=sp(e):n==="tofu-plan"&&(r=e.replace(op,"$1 = "));return Buffer.byteLength(r)<Buffer.byteLength(e)?r:e}var up=/^(?:\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?Z?\s+)?(?:\[(?:DEBUG|TRACE|INFO|WARN|WARNING|ERROR|FATAL)\]|DEBUG|TRACE|INFO|WARN|WARNING|ERROR|FATAL)(?::|\s|$)/,cp=/^\[tkr: previous log line repeated \d+ additional times\]$/m;function ai(e){if(Buffer.byteLength(e)<2048||mn(e)||cp.test(e))return e;let t=e.split(`
|
|
63
|
+
`),n=[];for(let r=0;r<t.length;){let s=t[r],o=r+1;if(up.test(s))for(;o<t.length&&t[o]===s;)o+=1;let i=o-r,a=`[tkr: previous log line repeated ${i-1} additional times]`;if(i>=3&&Buffer.byteLength(a)+1<(i-1)*(Buffer.byteLength(s)+1))n.push(s,a);else for(let l=r;l<o;l+=1)n.push(s);r=o}return n.join(`
|
|
64
|
+
`)}var fp=/^(?:[A-Za-z]:)?[^\s"'<>|]+\.(?:[cm]?[jt]sx?|json)$/,dp=/--(?:listFiles|listFilesOnly|listEmittedFiles|showConfig|explainFiles|traceResolution)(?:\s|=|$)/;function li(e){return dp.test(e)}function ui(e){let t=e.endsWith(`
|
|
65
65
|
`),n=(t?e.slice(0,-1):e).split(`
|
|
66
66
|
`),r=0;for(let s of n)if(s.trim()!==""){if(!fp.test(s))return null;r+=1}return r<2?null:`tsc: 0 errors, ${r} files${t?`
|
|
67
|
-
`:""}`}var pi=/^(?:(?:npx|bunx|pnpm(?:\s+(?:exec|dlx))?|yarn(?:\s+exec)?|uv\s+run|poetry\s+run|pipenv\s+run|hatch\s+run|python3?\s+-m)\s+)?(?:\S*\/)?(?:vitest|jest|mocha|pytest|py\.test|playwright\s+test)(?:\s|$)|^(?:npm|pnpm|yarn|bun)\s+(?:run\s+)?(?:test|t)(?:[:-]\S+)?(?:\s|$)|^cargo\s+test(?:\s|$)|^go\s+test(?:\s|$)/,mi={normal:{msg:40,diff:60,frames:6,out:20,bulk:50,repeats:10,trimDiff:!1,changedOnly:!1},compact:{msg:12,diff:24,frames:2,out:5,bulk:20,repeats:2,trimDiff:!0,changedOnly:!1},minimal:{msg:6,diff:8,frames:0,out:0,bulk:10,repeats:1,trimDiff:!0,changedOnly:!0}},pp=/node_modules|^node:|^internal\/|site-packages|dist-packages|\/lib\/python\d|\/rustc\/|\.cargo\/registry|\.rustup\/|\/go\/src\/|\/go\/pkg\/mod\/|\/libexec\/src\/|<anonymous>/,mp=/^\s*at\s+(?:.*?\()?((?:file:\/\/)?[^\s()]+?):(\d+)(?::(\d+))?\)?\s*$/,gp=/^\s*❯\s+(?:\S+\s+)?([^\s]+?):(\d+)(?::(\d+))?\s*$/,hp=/^\s*(>)?\s*(\d+)\s*\|/,yp=/^\s*\|\s*[\^~]+\s*$/,kp=/^(?:- Expected|\+ Received|- Snapshot|\+ expected - actual|\+ actual - expected|- expected \+ actual)(?:\s+[-+]\s*\d+)?$/;function pt(e,t){let n=null;for(let r of e){let s=t.exec(r);s&&(n=(n??0)+Number(s[1]))}return n}function xn(e){return pp.test(e)}function bp(e){if(!/^file:\/\//i.test(e))return e;let t=e.replace(/^file:\/\/(?:localhost)?/i,"");try{t=decodeURIComponent(t)}catch{}return t.replace(/^\/([A-Za-z]:[\\/])/,"$1")}function wn(e,t,n){return n===null?t:(t!==n&&!e.some(r=>r.kind==="frame"&&r.text===t)&&e.push({kind:"frame",text:t}),n)}function Tr(e,t=()=>!1){let n=[],r=null,s=-1,o=!1;for(let f of e){let d=f.trimEnd(),p=d.trim();if(!p||yp.test(d)||/^─+$/.test(p))continue;if(t(p)){o=!0,n.push({kind:"out",text:p.replace(/\s*─+$/,"")});continue}if(o){n.push({kind:"out",text:p});continue}let h=mp.exec(d)??gp.exec(d);if(h){s=-1;let m=bp(h[1]);xn(m)||(r=wn(n,`${m}:${h[2]}${h[3]?`:${h[3]}`:""}`,r));continue}let y=hp.exec(d);if(y){s=-1,n.push({kind:"code",text:p,num:Number(y[2]),pointed:y[1]===">"});continue}if(kp.test(p)){s=n.length,n.push({kind:"legend",text:p});continue}n.push(s>=0?{kind:"diff",text:d,segment:s}:{kind:"msg",text:p})}let i=n.some(f=>f.kind==="code"&&f.pointed),a=r?Number(/:(\d+)(?::\d+)?$/.exec(r)?.[1]):NaN,l=!1,c=n.filter(f=>{if(f.kind!=="code")return!0;let d=!l&&(i?f.pointed===!0:f.num===a);return d&&(l=!0),d}),u=new Map;for(let f of c){if(f.kind!=="diff")continue;let d=f.text.length-f.text.trimStart().length;u.set(f.segment,Math.min(u.get(f.segment)??d,d))}for(let f of c)f.kind==="diff"&&(f.text=f.text.slice(u.get(f.segment)??0)),f.kind==="code"&&(f.kind="source",f.text=f.text.replace(/^>\s*/,""));return{body:c,loc:r}}function Z(e,t=!1){return{text:e.trim().replace(/\s{2,}/g," "),minor:t}}function _p(e){if(!e.some(l=>/^⎯+ Failed (?:Tests|Suites) \d+ ⎯+$/.test(l.trim())||/^\s*Test Files\s{2,}\d/.test(l)||/^ ?FAIL\s+\S+ > /.test(l)))return null;let t=pt(e,/^\s*Tests\s+(\d+) failed/),n=[];for(let l of e)/^\s*Test Files\s{2,}\S/.test(l)?n.push(Z(l,!0)):(/^\s*(?:Tests|Errors|Type Errors)\s{2,}\S/.test(l)||/^\s*ERROR: Coverage for \S.*threshold/.test(l))&&n.push(Z(l));let r=[],s=0,o=[],i=[],a=()=>{if(o.length){let{body:l,loc:c}=Tr(i);for(let u of o)u.body=l,u.loc=c}o=[],i=[]};for(let l of e){let c=l.trim(),u=/^ ?FAIL\s+(\S.*?)\s*$/.exec(l);if(u){i.some(m=>m.trim())&&a();let d=u[1],p=/^(\S+) \[ \S+ \]$/.exec(d),h=d.split(" > "),y=p?{file:p[1],name:"(suite)",loc:null,body:[]}:h.length>1?{file:h[0],name:h.slice(1).join(" > "),loc:null,body:[]}:{file:null,name:d,loc:null,body:[]};p||(s+=1),r.push(y),o.push(y);continue}let f=/^⎯+ (Unhandled [A-Za-z ]+?) ⎯+$/.exec(c);if(f){a();let d={file:null,name:f[1],loc:null,body:[]};r.push(d),o.push(d);continue}if(/^⎯{3,}/.test(c)||/^(?:Test Files|Tests|Start at|Duration|Errors)\s{2,}/.test(c)){a();continue}o.length&&i.push(l)}if(a(),s===0){let l=null;for(let c of e){let u=/^\s*[❯✓×✗]\s+(\S+)\s+\(\d+ tests?\b/.exec(c);if(u){l=u[1];continue}let f=/^\s+[×✗]\s+(.+?)(?:\s+\d+(?:\.\d+)?m?s)?$/.exec(c);f&&(r.push({file:l,name:f[1],loc:null,body:[]}),s+=1)}}return{failures:r,summary:n,reported:t,counted:s}}function xp(e){if(!e.some(u=>/^\s{2}● (?!Console$)/.test(u))||!e.some(u=>/^Tests:\s/.test(u)||/^(?:FAIL|PASS)\s+\S/.test(u)))return null;let t=pt(e,/^Tests:\s+(\d+) failed/),n=[];for(let u of e)/^Test Suites:\s/.test(u)?n.push(Z(u,!0)):(/^Tests:\s/.test(u)||/^Snapshots:\s/.test(u)&&/failed|obsolete/.test(u))&&n.push(Z(u));let r=[],s=new Set,o=0,i=null,a=null,l=[],c=()=>{if(a){let u=`${a.file}\0${a.name}`;if(!s.has(u)){s.add(u);let{body:f,loc:d}=Tr(l);a.body=f,a.loc=d,r.push(a),a.name!=="Test suite failed to run"&&(o+=1)}}a=null,l=[]};for(let u of e){let f=/^(?:FAIL|PASS)\s+(\S+)/.exec(u);if(f){c(),i=f[1];continue}if(/^(?:Summary of all failing tests|Test Suites:|Tests:|Snapshots:|Time:|Ran all test suites)/.test(u)){c();continue}let d=/^\s{2}● (.+)$/.exec(u);if(d){c(),d[1].trim()!=="Console"&&(a={file:i,name:d[1].trim(),loc:null,body:[]});continue}a&&l.push(u)}return c(),{failures:r,summary:n,reported:t,counted:o}}function gi(e,t,n,r,s){let o=[],i=new Map,a=null;for(let l=t;l<n;l++){let c=e[l],u=/^\s{2}\d+\) (.+)$/.exec(c);if(u){let{name:f,used:d}=r(u[1],e.slice(l+1,Math.min(n,l+8)));l+=d,a=i.get(f)??null,a||(a=[],i.set(f,a),o.push({file:null,name:f,loc:null,body:[]}));continue}/^\s+Retry #\d+ ─*/.test(c)||a&&a.push(c)}for(let l of o){let{body:c,loc:u}=Tr(i.get(l.name),s);l.body=c,l.loc=u}return o}function wp(e){let t=e.findIndex(o=>/^\s*\d+ failing$/.test(o));if(t<0)return null;let n=Number(/(\d+)/.exec(e[t])[1]),r=e.filter(o=>/^\s*\d+ (?:passing|failing|pending)(?: \(\S+\))?$/.test(o)).map(o=>Z(o.replace(/ \(\S+\)\s*$/,""))),s=gi(e,t+1,e.length,(o,i)=>{let a=[o.trim()],l=0;for(;!a[a.length-1].endsWith(":")&&l<i.length&&i[l].trim();)a.push(i[l].trim()),l+=1;return a[a.length-1].endsWith(":")?{name:a.join(" \u203A ").replace(/:$/,""),used:l}:{name:o.trim(),used:0}});return{failures:s,summary:r,reported:n,counted:s.length}}function Sp(e){let t=e.findIndex(a=>a.length<=2e3&&/^\s{2}\d+\) .*›.*─{3,}\s*$/.test(a));if(t<0)return null;let n=e.findIndex((a,l)=>l>t&&/^\s{2}\d+ (?:failed|flaky|passed|skipped|interrupted|did not run)(?: \(.+\))?$/.test(a)),r=n<0?e.length:n,s=pt(e.slice(r),/^\s{2}(\d+) failed$/),o=e.slice(r).filter(a=>/^\s{2}\d+ (?:failed|flaky|passed|skipped|interrupted|did not run)(?: \(.+\))?$/.test(a)).map(a=>Z(a.replace(/ \([\d.]+m?s\)\s*$/,""))),i=gi(e,t,r,a=>({name:a.replace(/\s*─+\s*$/,"").trim(),used:0}),a=>/^attachment #\d+:/.test(a));return{failures:i,summary:o,reported:s,counted:i.length}}function vp(e){if(!e.some(i=>/^test result: /.test(i))||!e.some(i=>/^---- .+ stdout ----$/.test(i)))return null;let t=pt(e,/^test result: FAILED\. \d+ passed; (\d+) failed/),n=[];for(let i of e)/^test result: FAILED/.test(i)?n.push(Z(i.replace(/; finished in [\d.]+m?s\s*$/,""))):/^test result: ok/.test(i)?n.push(Z(i.replace(/; finished in [\d.]+m?s\s*$/,""),!0)):/^error(?:\[\w+\])?: /.test(i)&&n.push(Z(i));let r=[],s=null,o=[];for(let i of e){let a=/^---- (.+?) stdout ----$/.exec(i);if(a){s={f:{file:null,name:a[1],loc:null,body:[]},lines:[]},o.push(s),r.push(s.f);continue}if(/^failures:$|^test result: |^running \d+ tests?$/.test(i)){s=null;continue}s&&s.lines.push(i)}for(let{f:i,lines:a}of o){let l=!1,c=!1;for(let u of a){let f=u.trimEnd(),d=f.trim();if(!d)continue;let p=/^thread '.+?'(?: \(\d+\))? panicked at (?:'(.*)', )?(\S+?):(\d+):(\d+):?$/.exec(d);if(p){l=!0,i.loc??=`${p[2]}:${p[3]}:${p[4]}`,p[1]&&i.body.push({kind:"msg",text:p[1]});continue}if(!/^note: run with `RUST_BACKTRACE/.test(d)){if(/^stack backtrace:$/.test(d)){c=!0;continue}if(c){let h=/^at\s+(\S+?):(\d+):(\d+)$/.exec(d);h&&!xn(h[1])&&(i.loc=wn(i.body,`${h[1]}:${h[2]}:${h[3]}`,i.loc));continue}i.body.push(l?{kind:"msg",text:f}:{kind:"out",text:f})}}}return{failures:r,summary:n,reported:t,counted:r.length}}function Ep(e){if(!e.some(a=>/^\s*--- FAIL: \S/.test(a)))return null;let t=new Map,n=[],r=new Map,s=[],o=null,i=null;for(let a of e){let l=/^=== (?:RUN|CONT|PAUSE|NAME)\s+(\S+)/.exec(a);if(l){o=l[1],i=null;continue}let c=/^\s*--- FAIL: (\S+) \([\d.]+m?s\)/.exec(a);if(c){i={file:null,name:c[1],loc:null,body:[]},r.set(i,[...t.get(c[1])??[]]),n.push(i),o=null;continue}if(/^\s*--- (?:PASS|SKIP): /.test(a)){i=null,o=null;continue}let u=/^(FAIL|ok)\s+(\S+)(?:\s+(?:[\d.]+m?s|\(cached\)|\[[^\]]+\]))?/.exec(a);if(u&&/\t|\s{2,}|\[/.test(a)){s.push(Z(a.replace(/\s+[\d.]+m?s\s*$/,""),u[1]==="ok")),i=null,o=null;continue}if(!/^(?:FAIL|PASS)$/.test(a.trim())){if(/^exit status \d+$/.test(a)){s.push(Z(a,!0));continue}if(i)r.get(i).push(a);else if(o){let f=t.get(o)??[];f.push(a),t.set(o,f)}else(/^#\s\S+$/.test(a)||/^\S+\.go:\d+(?::\d+)?: /.test(a))&&s.push(Z(a))}}for(let a of n){for(let l of r.get(a)){let c=l.trim();if(!c||/^goroutine \d+ \[/.test(c))continue;let u=/^(\/\S+\.go|\S+\.go):(\d+)(?: \+0x[0-9a-f]+)?$/.exec(c);if(u){xn(u[1])||(a.loc=wn(a.body,`${u[1]}:${u[2]}`,a.loc));continue}/^(?:[\w.*/()-]+)\(.*\)$/.test(c)||/^created by /.test(c)||a.body.push({kind:"msg",text:c})}a.loc&&a.body.some(l=>l.kind==="msg"&&/^\S+\.go:\d+: /.test(l.text))&&(a.body.unshift({kind:"frame",text:a.loc}),a.loc=null)}return{failures:n,summary:s,reported:null,counted:n.length}}var ui=/^(FAILED|ERROR) (\S+?\.py(?:::\S+)?)(?: - (.*))?$/;function fi(e,t){let n=[],r=null,s=!1,o=-1;for(let l of e){let c=l.trimEnd(),u=c.trim();if(/^-{3,} Captured .+ -{3,}$/.test(u)){s=!0;continue}if(s){u&&n.push({kind:"out",text:c});continue}if(/^E(?:\s|$)/.test(c)){c.slice(1).trim()&&n.push({kind:"msg",text:c});continue}let f=/^(\S+?\.py):(\d+):(?: (.*))?$/.exec(c);if(f){if(xn(f[1]))o>=0&&n.splice(o,1);else{let d=f[3]?.startsWith("in ")?` ${f[3]}`:"";r=wn(n,`${f[1]}:${f[2]}${r===null?"":d}`,r)}o=-1;continue}/^>\s/.test(c)&&(o=n.length,n.push({kind:"source",text:u.replace(/^>\s*/,"")}))}let i=n.filter(l=>l.kind==="msg"),a=Math.min(...i.map(l=>l.text.slice(1).length-l.text.slice(1).trimStart().length));for(let l of i)l.text=`E ${l.text.slice(1+a)}`;return t&&!i.some(l=>l.text.includes(t.replace(/\.\.\.$/,"")))&&n.unshift({kind:"msg",text:t}),{body:n,loc:r}}function di(e,t){return t.push(Z(e.replace(/ in [\d.]+s(?: \([\d:]+\))?$/,""))),(pt([e],/(\d+) failed/)??0)+(pt([e],/(\d+) errors?\b/)??0)}function Tp(e){if(!e.some(y=>/^={3,} (?:FAILURES|ERRORS|short test summary info) ={3,}$/.test(y)||ui.test(y)))return null;let t=new Map,n=[],r=[],s="",o=null,i=null,a=null,l=/^(?:\d+ (?:failed|passed|errors?|skipped|xfailed|xpassed|deselected|warnings?)(?:, |\s|$))+(?:in [\d.]+s(?: \([\d:]+\))?)?$/,c=/\b\d+ (?:failed|passed|errors?|skipped|xfailed|xpassed|deselected|warnings?)\b|no tests ran/,u=/^(?:FAILURES|ERRORS|short test summary info|warnings summary|test session starts|PASSES)$/,f=-1;for(let y=e.length-1;y>=0&&f<0;y--){let m=/^={3,} (.+?) ={3,}$/.exec(e[y]);m&&!u.test(m[1])&&c.test(m[1])&&(f=y)}if(f<0){for(let y=e.length-1;y>=0;y--)if(e[y].trim()){l.test(e[y].trim())&&(f=y);break}}for(let[y,m]of e.entries()){let b=/^={3,} (.+?) ={3,}$/.exec(m);if(b){s=b[1],o=null,i=null,y===f&&(a=di(s,r));continue}if(y===f&&l.test(m.trim())){a=di(m.trim(),r);continue}if(/^!{3,} .+ !{3,}$/.test(m)){r.push(Z(m.replace(/^!+ | !+$/g,"")));continue}let w=/^_{3,} (.+?) _{3,}$/.exec(m);if(w&&(s==="FAILURES"||s==="ERRORS")){o=[],t.set(w[1],o);continue}let A=ui.exec(m);if(A&&s!=="FAILURES"&&s!=="ERRORS"){o=null;let I={kind:A[1],id:A[2],msg:A[3]??null,inline:[]};n.push(I),i=I;continue}if(o){o.push(m);continue}i&&/^E(?:\s|$)/.test(m)?i.inline.push(m):i&&m.trim()&&(i=null)}let d=new Set,p=[],h=new Set;for(let y of n){if(h.has(y.id))continue;h.add(y.id);let[m,...b]=y.id.split("::"),w=b.join("."),A=[w,`ERROR collecting ${y.id}`,`ERROR at setup of ${w}`,`ERROR at teardown of ${w}`].find(F=>F&&t.has(F)&&!d.has(F));A&&d.add(A);let{body:I,loc:L}=fi(A?t.get(A):y.inline,y.msg),z=b.length?b.join("::"):"(collection)";p.push({file:m,name:y.kind==="ERROR"?`${z} [error]`:z,loc:L,body:I,exact:!0})}for(let[y,m]of t){if(d.has(y))continue;let{body:b,loc:w}=fi(m,null);p.push({file:w?w.replace(/:\d+$/,""):null,name:y,loc:w,body:b,exact:!0})}if(p.length===0)for(let y of e){let m=/^(\S+?)::(\S+) (FAILED|ERROR)\b/.exec(y);m&&p.push({file:m[1],name:m[3]==="ERROR"?`${m[2]} [error]`:m[2],loc:null,body:[]})}return{failures:p,summary:r,reported:a,counted:p.length}}var Ap=12,Rp=[vp,Ep,Tp,xp,_p,wp,Sp];function $p(e,t){return e.length===0?!1:e.every(n=>{let r=n.text.trim();if(!/^[-+]/.test(r))return!1;let s=r.slice(1).trim().replace(/,$/,"");return s.length>0&&t.includes(s)})}function Cp(e,t,n){let r=mi[n],s=e.body.filter(p=>p.kind==="msg");if(!t)return[...e.body.filter(p=>p.kind==="source"),...s.slice(0,1)].map(p=>` ${p.text}`);let o=e.body.filter(p=>p.kind==="diff"),i=r.trimDiff&&$p(o,s.map(p=>p.text).join(`
|
|
68
|
-
`)),a={msg:0,legend:0,diff:0,frame:0,code:0,source:0,out:0},l={msg:0,legend:0,diff:0,frame:0,code:0,source:0,out:0},
|
|
69
|
-
`)}}),i=[],a,l=null;for(let
|
|
67
|
+
`:""}`}var pi=/^(?:(?:npx|bunx|pnpm(?:\s+(?:exec|dlx))?|yarn(?:\s+exec)?|uv\s+run|poetry\s+run|pipenv\s+run|hatch\s+run|python3?\s+-m)\s+)?(?:\S*\/)?(?:vitest|jest|mocha|pytest|py\.test|playwright\s+test)(?:\s|$)|^(?:npm|pnpm|yarn|bun)\s+(?:run\s+)?(?:test|t)(?:[:-]\S+)?(?:\s|$)|^cargo\s+test(?:\s|$)|^go\s+test(?:\s|$)/,mi={normal:{msg:40,diff:60,frames:6,out:20,bulk:50,repeats:10,trimDiff:!1,changedOnly:!1},compact:{msg:12,diff:24,frames:2,out:5,bulk:20,repeats:2,trimDiff:!0,changedOnly:!1},minimal:{msg:6,diff:8,frames:0,out:0,bulk:10,repeats:1,trimDiff:!0,changedOnly:!0}},pp=/node_modules|^node:|^internal\/|site-packages|dist-packages|\/lib\/python\d|\/rustc\/|\.cargo\/registry|\.rustup\/|\/go\/src\/|\/go\/pkg\/mod\/|\/libexec\/src\/|<anonymous>/,mp=/^\s*at\s+(?:.*?\()?((?:file:\/\/)?[^\s()]+?):(\d+)(?::(\d+))?\)?\s*$/,hp=/^\s*❯\s+(?:\S+\s+)?([^\s]+?):(\d+)(?::(\d+))?\s*$/,gp=/^\s*(>)?\s*(\d+)\s*\|/,yp=/^\s*\|\s*[\^~]+\s*$/,kp=/^(?:- Expected|\+ Received|- Snapshot|\+ expected - actual|\+ actual - expected|- expected \+ actual)(?:\s+[-+]\s*\d+)?$/;function pt(e,t){let n=null;for(let r of e){let s=t.exec(r);s&&(n=(n??0)+Number(s[1]))}return n}function xn(e){return pp.test(e)}function bp(e){if(!/^file:\/\//i.test(e))return e;let t=e.replace(/^file:\/\/(?:localhost)?/i,"");try{t=decodeURIComponent(t)}catch{}return t.replace(/^\/([A-Za-z]:[\\/])/,"$1")}function wn(e,t,n){return n===null?t:(t!==n&&!e.some(r=>r.kind==="frame"&&r.text===t)&&e.push({kind:"frame",text:t}),n)}function Tr(e,t=()=>!1){let n=[],r=null,s=-1,o=!1;for(let f of e){let d=f.trimEnd(),p=d.trim();if(!p||yp.test(d)||/^─+$/.test(p))continue;if(t(p)){o=!0,n.push({kind:"out",text:p.replace(/\s*─+$/,"")});continue}if(o){n.push({kind:"out",text:p});continue}let g=mp.exec(d)??hp.exec(d);if(g){s=-1;let m=bp(g[1]);xn(m)||(r=wn(n,`${m}:${g[2]}${g[3]?`:${g[3]}`:""}`,r));continue}let y=gp.exec(d);if(y){s=-1,n.push({kind:"code",text:p,num:Number(y[2]),pointed:y[1]===">"});continue}if(kp.test(p)){s=n.length,n.push({kind:"legend",text:p});continue}n.push(s>=0?{kind:"diff",text:d,segment:s}:{kind:"msg",text:p})}let i=n.some(f=>f.kind==="code"&&f.pointed),a=r?Number(/:(\d+)(?::\d+)?$/.exec(r)?.[1]):NaN,l=!1,u=n.filter(f=>{if(f.kind!=="code")return!0;let d=!l&&(i?f.pointed===!0:f.num===a);return d&&(l=!0),d}),c=new Map;for(let f of u){if(f.kind!=="diff")continue;let d=f.text.length-f.text.trimStart().length;c.set(f.segment,Math.min(c.get(f.segment)??d,d))}for(let f of u)f.kind==="diff"&&(f.text=f.text.slice(c.get(f.segment)??0)),f.kind==="code"&&(f.kind="source",f.text=f.text.replace(/^>\s*/,""));return{body:u,loc:r}}function Z(e,t=!1){return{text:e.trim().replace(/\s{2,}/g," "),minor:t}}function _p(e){if(!e.some(l=>/^⎯+ Failed (?:Tests|Suites) \d+ ⎯+$/.test(l.trim())||/^\s*Test Files\s{2,}\d/.test(l)||/^ ?FAIL\s+\S+ > /.test(l)))return null;let t=pt(e,/^\s*Tests\s+(\d+) failed/),n=[];for(let l of e)/^\s*Test Files\s{2,}\S/.test(l)?n.push(Z(l,!0)):(/^\s*(?:Tests|Errors|Type Errors)\s{2,}\S/.test(l)||/^\s*ERROR: Coverage for \S.*threshold/.test(l))&&n.push(Z(l));let r=[],s=0,o=[],i=[],a=()=>{if(o.length){let{body:l,loc:u}=Tr(i);for(let c of o)c.body=l,c.loc=u}o=[],i=[]};for(let l of e){let u=l.trim(),c=/^ ?FAIL\s+(\S.*?)\s*$/.exec(l);if(c){i.some(m=>m.trim())&&a();let d=c[1],p=/^(\S+) \[ \S+ \]$/.exec(d),g=d.split(" > "),y=p?{file:p[1],name:"(suite)",loc:null,body:[]}:g.length>1?{file:g[0],name:g.slice(1).join(" > "),loc:null,body:[]}:{file:null,name:d,loc:null,body:[]};p||(s+=1),r.push(y),o.push(y);continue}let f=/^⎯+ (Unhandled [A-Za-z ]+?) ⎯+$/.exec(u);if(f){a();let d={file:null,name:f[1],loc:null,body:[]};r.push(d),o.push(d);continue}if(/^⎯{3,}/.test(u)||/^(?:Test Files|Tests|Start at|Duration|Errors)\s{2,}/.test(u)){a();continue}o.length&&i.push(l)}if(a(),s===0){let l=null;for(let u of e){let c=/^\s*[❯✓×✗]\s+(\S+)\s+\(\d+ tests?\b/.exec(u);if(c){l=c[1];continue}let f=/^\s+[×✗]\s+(.+?)(?:\s+\d+(?:\.\d+)?m?s)?$/.exec(u);f&&(r.push({file:l,name:f[1],loc:null,body:[]}),s+=1)}}return{failures:r,summary:n,reported:t,counted:s}}function xp(e){if(!e.some(c=>/^\s{2}● (?!Console$)/.test(c))||!e.some(c=>/^Tests:\s/.test(c)||/^(?:FAIL|PASS)\s+\S/.test(c)))return null;let t=pt(e,/^Tests:\s+(\d+) failed/),n=[];for(let c of e)/^Test Suites:\s/.test(c)?n.push(Z(c,!0)):(/^Tests:\s/.test(c)||/^Snapshots:\s/.test(c)&&/failed|obsolete/.test(c))&&n.push(Z(c));let r=[],s=new Set,o=0,i=null,a=null,l=[],u=()=>{if(a){let c=`${a.file}\0${a.name}`;if(!s.has(c)){s.add(c);let{body:f,loc:d}=Tr(l);a.body=f,a.loc=d,r.push(a),a.name!=="Test suite failed to run"&&(o+=1)}}a=null,l=[]};for(let c of e){let f=/^(?:FAIL|PASS)\s+(\S+)/.exec(c);if(f){u(),i=f[1];continue}if(/^(?:Summary of all failing tests|Test Suites:|Tests:|Snapshots:|Time:|Ran all test suites)/.test(c)){u();continue}let d=/^\s{2}● (.+)$/.exec(c);if(d){u(),d[1].trim()!=="Console"&&(a={file:i,name:d[1].trim(),loc:null,body:[]});continue}a&&l.push(c)}return u(),{failures:r,summary:n,reported:t,counted:o}}function hi(e,t,n,r,s){let o=[],i=new Map,a=null;for(let l=t;l<n;l++){let u=e[l],c=/^\s{2}\d+\) (.+)$/.exec(u);if(c){let{name:f,used:d}=r(c[1],e.slice(l+1,Math.min(n,l+8)));l+=d,a=i.get(f)??null,a||(a=[],i.set(f,a),o.push({file:null,name:f,loc:null,body:[]}));continue}/^\s+Retry #\d+ ─*/.test(u)||a&&a.push(u)}for(let l of o){let{body:u,loc:c}=Tr(i.get(l.name),s);l.body=u,l.loc=c}return o}function wp(e){let t=e.findIndex(o=>/^\s*\d+ failing$/.test(o));if(t<0)return null;let n=Number(/(\d+)/.exec(e[t])[1]),r=e.filter(o=>/^\s*\d+ (?:passing|failing|pending)(?: \(\S+\))?$/.test(o)).map(o=>Z(o.replace(/ \(\S+\)\s*$/,""))),s=hi(e,t+1,e.length,(o,i)=>{let a=[o.trim()],l=0;for(;!a[a.length-1].endsWith(":")&&l<i.length&&i[l].trim();)a.push(i[l].trim()),l+=1;return a[a.length-1].endsWith(":")?{name:a.join(" \u203A ").replace(/:$/,""),used:l}:{name:o.trim(),used:0}});return{failures:s,summary:r,reported:n,counted:s.length}}function Sp(e){let t=e.findIndex(a=>a.length<=2e3&&/^\s{2}\d+\) .*›.*─{3,}\s*$/.test(a));if(t<0)return null;let n=e.findIndex((a,l)=>l>t&&/^\s{2}\d+ (?:failed|flaky|passed|skipped|interrupted|did not run)(?: \(.+\))?$/.test(a)),r=n<0?e.length:n,s=pt(e.slice(r),/^\s{2}(\d+) failed$/),o=e.slice(r).filter(a=>/^\s{2}\d+ (?:failed|flaky|passed|skipped|interrupted|did not run)(?: \(.+\))?$/.test(a)).map(a=>Z(a.replace(/ \([\d.]+m?s\)\s*$/,""))),i=hi(e,t,r,a=>({name:a.replace(/\s*─+\s*$/,"").trim(),used:0}),a=>/^attachment #\d+:/.test(a));return{failures:i,summary:o,reported:s,counted:i.length}}function vp(e){if(!e.some(i=>/^test result: /.test(i))||!e.some(i=>/^---- .+ stdout ----$/.test(i)))return null;let t=pt(e,/^test result: FAILED\. \d+ passed; (\d+) failed/),n=[];for(let i of e)/^test result: FAILED/.test(i)?n.push(Z(i.replace(/; finished in [\d.]+m?s\s*$/,""))):/^test result: ok/.test(i)?n.push(Z(i.replace(/; finished in [\d.]+m?s\s*$/,""),!0)):/^error(?:\[\w+\])?: /.test(i)&&n.push(Z(i));let r=[],s=null,o=[];for(let i of e){let a=/^---- (.+?) stdout ----$/.exec(i);if(a){s={f:{file:null,name:a[1],loc:null,body:[]},lines:[]},o.push(s),r.push(s.f);continue}if(/^failures:$|^test result: |^running \d+ tests?$/.test(i)){s=null;continue}s&&s.lines.push(i)}for(let{f:i,lines:a}of o){let l=!1,u=!1;for(let c of a){let f=c.trimEnd(),d=f.trim();if(!d)continue;let p=/^thread '.+?'(?: \(\d+\))? panicked at (?:'(.*)', )?(\S+?):(\d+):(\d+):?$/.exec(d);if(p){l=!0,i.loc??=`${p[2]}:${p[3]}:${p[4]}`,p[1]&&i.body.push({kind:"msg",text:p[1]});continue}if(!/^note: run with `RUST_BACKTRACE/.test(d)){if(/^stack backtrace:$/.test(d)){u=!0;continue}if(u){let g=/^at\s+(\S+?):(\d+):(\d+)$/.exec(d);g&&!xn(g[1])&&(i.loc=wn(i.body,`${g[1]}:${g[2]}:${g[3]}`,i.loc));continue}i.body.push(l?{kind:"msg",text:f}:{kind:"out",text:f})}}}return{failures:r,summary:n,reported:t,counted:r.length}}function Ep(e){if(!e.some(a=>/^\s*--- FAIL: \S/.test(a)))return null;let t=new Map,n=[],r=new Map,s=[],o=null,i=null;for(let a of e){let l=/^=== (?:RUN|CONT|PAUSE|NAME)\s+(\S+)/.exec(a);if(l){o=l[1],i=null;continue}let u=/^\s*--- FAIL: (\S+) \([\d.]+m?s\)/.exec(a);if(u){i={file:null,name:u[1],loc:null,body:[]},r.set(i,[...t.get(u[1])??[]]),n.push(i),o=null;continue}if(/^\s*--- (?:PASS|SKIP): /.test(a)){i=null,o=null;continue}let c=/^(FAIL|ok)\s+(\S+)(?:\s+(?:[\d.]+m?s|\(cached\)|\[[^\]]+\]))?/.exec(a);if(c&&/\t|\s{2,}|\[/.test(a)){s.push(Z(a.replace(/\s+[\d.]+m?s\s*$/,""),c[1]==="ok")),i=null,o=null;continue}if(!/^(?:FAIL|PASS)$/.test(a.trim())){if(/^exit status \d+$/.test(a)){s.push(Z(a,!0));continue}if(i)r.get(i).push(a);else if(o){let f=t.get(o)??[];f.push(a),t.set(o,f)}else(/^#\s\S+$/.test(a)||/^\S+\.go:\d+(?::\d+)?: /.test(a))&&s.push(Z(a))}}for(let a of n){for(let l of r.get(a)){let u=l.trim();if(!u||/^goroutine \d+ \[/.test(u))continue;let c=/^(\/\S+\.go|\S+\.go):(\d+)(?: \+0x[0-9a-f]+)?$/.exec(u);if(c){xn(c[1])||(a.loc=wn(a.body,`${c[1]}:${c[2]}`,a.loc));continue}/^(?:[\w.*/()-]+)\(.*\)$/.test(u)||/^created by /.test(u)||a.body.push({kind:"msg",text:u})}a.loc&&a.body.some(l=>l.kind==="msg"&&/^\S+\.go:\d+: /.test(l.text))&&(a.body.unshift({kind:"frame",text:a.loc}),a.loc=null)}return{failures:n,summary:s,reported:null,counted:n.length}}var ci=/^(FAILED|ERROR) (\S+?\.py(?:::\S+)?)(?: - (.*))?$/;function fi(e,t){let n=[],r=null,s=!1,o=-1;for(let l of e){let u=l.trimEnd(),c=u.trim();if(/^-{3,} Captured .+ -{3,}$/.test(c)){s=!0;continue}if(s){c&&n.push({kind:"out",text:u});continue}if(/^E(?:\s|$)/.test(u)){u.slice(1).trim()&&n.push({kind:"msg",text:u});continue}let f=/^(\S+?\.py):(\d+):(?: (.*))?$/.exec(u);if(f){if(xn(f[1]))o>=0&&n.splice(o,1);else{let d=f[3]?.startsWith("in ")?` ${f[3]}`:"";r=wn(n,`${f[1]}:${f[2]}${r===null?"":d}`,r)}o=-1;continue}/^>\s/.test(u)&&(o=n.length,n.push({kind:"source",text:c.replace(/^>\s*/,"")}))}let i=n.filter(l=>l.kind==="msg"),a=Math.min(...i.map(l=>l.text.slice(1).length-l.text.slice(1).trimStart().length));for(let l of i)l.text=`E ${l.text.slice(1+a)}`;return t&&!i.some(l=>l.text.includes(t.replace(/\.\.\.$/,"")))&&n.unshift({kind:"msg",text:t}),{body:n,loc:r}}function di(e,t){return t.push(Z(e.replace(/ in [\d.]+s(?: \([\d:]+\))?$/,""))),(pt([e],/(\d+) failed/)??0)+(pt([e],/(\d+) errors?\b/)??0)}function Tp(e){if(!e.some(y=>/^={3,} (?:FAILURES|ERRORS|short test summary info) ={3,}$/.test(y)||ci.test(y)))return null;let t=new Map,n=[],r=[],s="",o=null,i=null,a=null,l=/^(?:\d+ (?:failed|passed|errors?|skipped|xfailed|xpassed|deselected|warnings?)(?:, |\s|$))+(?:in [\d.]+s(?: \([\d:]+\))?)?$/,u=/\b\d+ (?:failed|passed|errors?|skipped|xfailed|xpassed|deselected|warnings?)\b|no tests ran/,c=/^(?:FAILURES|ERRORS|short test summary info|warnings summary|test session starts|PASSES)$/,f=-1;for(let y=e.length-1;y>=0&&f<0;y--){let m=/^={3,} (.+?) ={3,}$/.exec(e[y]);m&&!c.test(m[1])&&u.test(m[1])&&(f=y)}if(f<0){for(let y=e.length-1;y>=0;y--)if(e[y].trim()){l.test(e[y].trim())&&(f=y);break}}for(let[y,m]of e.entries()){let b=/^={3,} (.+?) ={3,}$/.exec(m);if(b){s=b[1],o=null,i=null,y===f&&(a=di(s,r));continue}if(y===f&&l.test(m.trim())){a=di(m.trim(),r);continue}if(/^!{3,} .+ !{3,}$/.test(m)){r.push(Z(m.replace(/^!+ | !+$/g,"")));continue}let w=/^_{3,} (.+?) _{3,}$/.exec(m);if(w&&(s==="FAILURES"||s==="ERRORS")){o=[],t.set(w[1],o);continue}let A=ci.exec(m);if(A&&s!=="FAILURES"&&s!=="ERRORS"){o=null;let I={kind:A[1],id:A[2],msg:A[3]??null,inline:[]};n.push(I),i=I;continue}if(o){o.push(m);continue}i&&/^E(?:\s|$)/.test(m)?i.inline.push(m):i&&m.trim()&&(i=null)}let d=new Set,p=[],g=new Set;for(let y of n){if(g.has(y.id))continue;g.add(y.id);let[m,...b]=y.id.split("::"),w=b.join("."),A=[w,`ERROR collecting ${y.id}`,`ERROR at setup of ${w}`,`ERROR at teardown of ${w}`].find(F=>F&&t.has(F)&&!d.has(F));A&&d.add(A);let{body:I,loc:L}=fi(A?t.get(A):y.inline,y.msg),z=b.length?b.join("::"):"(collection)";p.push({file:m,name:y.kind==="ERROR"?`${z} [error]`:z,loc:L,body:I,exact:!0})}for(let[y,m]of t){if(d.has(y))continue;let{body:b,loc:w}=fi(m,null);p.push({file:w?w.replace(/:\d+$/,""):null,name:y,loc:w,body:b,exact:!0})}if(p.length===0)for(let y of e){let m=/^(\S+?)::(\S+) (FAILED|ERROR)\b/.exec(y);m&&p.push({file:m[1],name:m[3]==="ERROR"?`${m[2]} [error]`:m[2],loc:null,body:[]})}return{failures:p,summary:r,reported:a,counted:p.length}}var Ap=12,Rp=[vp,Ep,Tp,xp,_p,wp,Sp];function $p(e,t){return e.length===0?!1:e.every(n=>{let r=n.text.trim();if(!/^[-+]/.test(r))return!1;let s=r.slice(1).trim().replace(/,$/,"");return s.length>0&&t.includes(s)})}function Cp(e,t,n){let r=mi[n],s=e.body.filter(p=>p.kind==="msg");if(!t)return[...e.body.filter(p=>p.kind==="source"),...s.slice(0,1)].map(p=>` ${p.text}`);let o=e.body.filter(p=>p.kind==="diff"),i=r.trimDiff&&$p(o,s.map(p=>p.text).join(`
|
|
68
|
+
`)),a={msg:0,legend:0,diff:0,frame:0,code:0,source:0,out:0},l={msg:0,legend:0,diff:0,frame:0,code:0,source:0,out:0},u={msg:r.msg,legend:1/0,diff:r.diff,frame:e.exact?1/0:r.frames,code:0,source:1/0,out:r.out},c=r.changedOnly&&o.length>Ap,f=[];for(let p of e.body){if((p.kind==="diff"||p.kind==="legend")&&i)continue;if(p.kind==="diff"&&c&&!/^[-+]/.test(p.text.trim())){l.diff+=1;continue}let g=p.kind==="legend"?"diff":p.kind;if(a[g]>=u[g]&&p.kind!=="legend"){l[g]+=1;continue}p.kind!=="legend"&&(a[g]+=1),f.push(p.kind==="frame"?` at ${p.text}`:` ${p.text}`)}let d=l.msg+l.diff+(n==="normal"?l.frame+l.out:0);return d>0&&f.push(` ${dt(d)}`),f}function Op(e){let t=e[0];for(let r of e)for(;!r.startsWith(t);)t=t.slice(0,-1);t=t.slice(0,Math.max(...["_",":",".","/"," ","\u203A","-","[","("].map(r=>t.lastIndexOf(r)))+1);let n=e.map(r=>r.slice(t.length));return t.length>=3&&n.every(r=>r.length>0&&!/[{},\s]/.test(r))?`${t}{${n.join(",")}}`:e.join(", ")}function Ip(e){if(!e.loc)return`\xD7 ${e.name}`;let t=!e.exact&&e.file&&e.loc.startsWith(`${e.file}:`)?e.loc.slice(e.file.length):e.loc;return`\xD7 ${e.name} ${t}`}function Np(e,t){let n=mi[t],r=new Map,s=e.failures.length>n.bulk,o=e.failures.map(u=>{let c=u.body.find(p=>p.kind==="msg")?.text??"",f=(r.get(c)??0)+1;r.set(c,f);let d=c===""||!s||f<=n.repeats;return{f:u,full:d,body:Cp(u,d,t).join(`
|
|
69
|
+
`)}}),i=[],a,l=null;for(let u=0;u<o.length;u++){let c=o[u];c.f.file!==a&&(a=c.f.file,a&&i.push(a));let f=u;if(!c.full&&c.f.loc===null)for(;f+1<o.length;){let p=o[f+1];if(p.full||p.f.loc!==null||p.f.file!==c.f.file||p.body!==c.body)break;f+=1}i.push(f>u?`\xD7 ${Op(o.slice(u,f+1).map(p=>p.f.name))}`:Ip(c.f)),u=f;let d=o[u+1];d&&d.f.file===c.f.file&&d.body===c.body||c.body&&(c.body===l&&t!=="normal"?i.push(" \u2191 same error"):(i.push(c.body),l=c.body))}for(let u of e.summary)(!u.minor||t==="normal")&&i.push(u.text);return`${i.join(`
|
|
70
70
|
`)}
|
|
71
|
-
`}function
|
|
72
|
-
`).map(r=>{let s=r.endsWith("\r")?r.slice(0,-1):r;return s.includes("\r")?s.slice(s.lastIndexOf("\r")+1):s});for(let r of Rp){let s=r(n);if(!(!s||s.failures.length===0))return s.counted===0||s.reported!==null&&s.counted<s.reported?null:Np(s,t)}return null}import{createCipheriv as Aw,createDecipheriv as Pp,hkdfSync as Dp,randomBytes as Rw}from"node:crypto";var Lp=Buffer.from("tokmizer-bundle-enc-v1"),Mp=Buffer.from("rules-bundle");function Fp(e){return Buffer.from(Dp("sha256",Buffer.from(e,"utf8"),Lp,Mp,32))}function Sn(e,t){let n=Fp(t),r=Buffer.from(e,"base64url"),s=r.subarray(0,12),o=r.subarray(12,28),i=r.subarray(28),a=Pp("aes-256-gcm",n,s);return a.setAuthTag(o),Buffer.concat([a.update(i),a.final()]).toString("utf8")}import{createPublicKey as rm,verify as sm}from"node:crypto";import{join as jp}from"node:path";import{mkdir as Iw,readFile as Hp,writeFile as Nw,unlink as Pw,rename as Dw}from"node:fs/promises";var zp="state.json";function Up(){try{let e=Intl.DateTimeFormat().resolvedOptions().timeZone;return e&&e.length>0?e:"Etc/UTC"}catch{return"Etc/UTC"}}function Bp(e){return e?.dir??R()}async function Ht(e){let t=Bp(e);try{let n=await Hp(jp(t,zp),"utf8"),r=JSON.parse(n),s=r.timeZone;return{...r,lastSettingsRevision:r.lastSettingsRevision??0,get timeZone(){return s??=Up()},bonusActive:r.bonusActive??!1,...r.bonusResetAt!==void 0?{bonusResetAt:r.bonusResetAt}:{}}}catch{return null}}import{createRequire as Zp}from"node:module";var Jp=Zp(import.meta.url);function Gp(){let e="1.
|
|
71
|
+
`}function gi(e,t="normal"){let n=ce(e).split(`
|
|
72
|
+
`).map(r=>{let s=r.endsWith("\r")?r.slice(0,-1):r;return s.includes("\r")?s.slice(s.lastIndexOf("\r")+1):s});for(let r of Rp){let s=r(n);if(!(!s||s.failures.length===0))return s.counted===0||s.reported!==null&&s.counted<s.reported?null:Np(s,t)}return null}import{createCipheriv as Aw,createDecipheriv as Pp,hkdfSync as Dp,randomBytes as Rw}from"node:crypto";var Lp=Buffer.from("tokmizer-bundle-enc-v1"),Mp=Buffer.from("rules-bundle");function Fp(e){return Buffer.from(Dp("sha256",Buffer.from(e,"utf8"),Lp,Mp,32))}function Sn(e,t){let n=Fp(t),r=Buffer.from(e,"base64url"),s=r.subarray(0,12),o=r.subarray(12,28),i=r.subarray(28),a=Pp("aes-256-gcm",n,s);return a.setAuthTag(o),Buffer.concat([a.update(i),a.final()]).toString("utf8")}import{createPublicKey as rm,verify as sm}from"node:crypto";import{join as jp}from"node:path";import{mkdir as Iw,readFile as Hp,writeFile as Nw,unlink as Pw,rename as Dw}from"node:fs/promises";var zp="state.json";function Up(){try{let e=Intl.DateTimeFormat().resolvedOptions().timeZone;return e&&e.length>0?e:"Etc/UTC"}catch{return"Etc/UTC"}}function Bp(e){return e?.dir??R()}async function Ht(e){let t=Bp(e);try{let n=await Hp(jp(t,zp),"utf8"),r=JSON.parse(n),s=r.timeZone;return{...r,lastSettingsRevision:r.lastSettingsRevision??0,get timeZone(){return s??=Up()},bonusActive:r.bonusActive??!1,...r.bonusResetAt!==void 0?{bonusResetAt:r.bonusResetAt}:{}}}catch{return null}}import{createRequire as Zp}from"node:module";var Jp=Zp(import.meta.url);function Gp(){let e="1.1.1";if(e)return e;for(let t of["../package.json","../../package.json"])try{let n=Jp(t).version;if(typeof n=="string"&&n)return n}catch{}return"0.0.0"}var zt=Gp();function yi(e,t){if(!e||!t)return!1;let n=e.split(".").map(s=>parseInt(s,10)),r=t.split(".").map(s=>parseInt(s,10));for(let s=0;s<3;s+=1){let o=n[s]??0,i=r[s]??0;if(Number.isNaN(o)||Number.isNaN(i))return!1;if(o<i)return!0;if(o>i)return!1}return!1}var ki=`-----BEGIN PUBLIC KEY-----
|
|
73
73
|
MCowBQYDK2VwAyEAj/kMlXlhTIGHRKxOKMuGFa1S1ybxxwgdYcAE0YM9fgU=
|
|
74
74
|
-----END PUBLIC KEY-----
|
|
75
|
-
`;import{existsSync as Wp,mkdirSync as Uw,rmSync as Bw,writeFileSync as Zw}from"node:fs";import{join as Vp}from"node:path";var Kp=new Set(["0","off","false","no"]);var Ww=["Tokmizer contacts tokmizer.com to keep its rules up to date and to improve the product. No account or email is needed.","It sends a random install ID,
|
|
75
|
+
`;import{existsSync as Wp,mkdirSync as Uw,rmSync as Bw,writeFileSync as Zw}from"node:fs";import{join as Vp}from"node:path";var Kp=new Set(["0","off","false","no"]);var Ww=["Tokmizer contacts tokmizer.com to keep its rules up to date and to improve the product. No account or email is needed.","It sends a random install ID, the plugin version and how it was installed (npm, Homebrew, Claude Code...), nothing that describes your machine: no computer name, OS, hardware or user name. Command contents and output are never sent.","Usage stats (command names, token counts and install health counts) are sent only while they are on, to spot when compression gets worse and fix it before it reaches everyone. Check with: tkr telemetry status.","Turn all network access off: tkr network off. Usage stats only: tkr telemetry off."].join(`
|
|
76
76
|
`);function qp(){return Vp(R(),"network-off")}function Yp(){let e=process.env.TOKMIZER_NETWORK;return e!==void 0&&Kp.has(e.trim().toLowerCase())}function Ar(){return Yp()?!1:!Wp(qp())}var Qw=300*1e3,eS=120*1e3;function bi(){return ki.replace(/\\n/g,`
|
|
77
|
-
`)}import{chmodSync as rS,readFileSync as Xp,writeFileSync as sS,mkdirSync as oS,renameSync as iS}from"node:fs";import{join as Qp}from"node:path";var em=k.object({payload:k.string().min(1),signature:k.string().min(1),enc:k.literal("v1"),fetchedAt:k.number().int().nonnegative()});function tm(){return Qp(R(),"bundle-cache.json")}function _i(){try{let e=Xp(tm(),"utf8"),t=em.safeParse(JSON.parse(e));return t.success?t.data:null}catch{return null}}var Rr=k.object({bundleVersion:k.number().int().nonnegative(),signedAt:k.number().int(),filters:k.array(Te)}),_S=k.object({payload:k.string().min(1),signature:k.string().min(1),enc:k.literal("v1")}),om=10080*60*1e3;function im(){let e=Number(process.env.TOKMIZER_MAX_BUNDLE_AGE_MS);return Number.isFinite(e)&&e>0?e:om}function am(e,t){let n=bi();if(!n||!n.includes("BEGIN PUBLIC KEY"))throw new Error("tkr-daemon: no valid signing public key configured (set TOKMIZER_RESP_SIGNING_PUBLIC_KEY_PEM at build time).");let r=rm({key:n,format:"pem"});if(!sm(null,Buffer.from(e.payload,"utf8"),r,Buffer.from(e.signature,"base64url")))throw new Error("tkr-daemon: rules bundle signature invalid");return JSON.parse(Sn(e.payload,t))}function lm(e,t){let n=am(e,t),r=Rr.parse(n);if(Date.now()-r.signedAt>im())throw new Error("tkr-daemon: rules bundle is stale");return $r(r,{signedAt:r.signedAt,fetchedAt:Date.now()})}function $r(e,t){let n=new Map;for(let r of e.filters)n.set(r.slug,{...r,matchRegex:new RegExp(r.match_command)});return{bundleVersion:e.bundleVersion,signedAt:t.signedAt,ruleCount:n.size,startedAt:Date.now(),fetchedAt:t.fetchedAt,selectFor:(r,s,o)=>ft(r,n.values(),o?new Set(o):null,n)}}async function xi(){try{let e=_i();if(!e)return null;let t=await Ht();return t?.signingSecret?lm(e,t.signingSecret):null}catch{return null}}var cm="tokmizer-default-rules-v1",um=/^[0-9a-f]{16}$/,Ut=null;function wi(){let e="RmLB4Qg6kLBB3OS6Ty7fwJ1EvSuPsOtduIjpFnS93R6i20hNm02x4Q6dX6Bg4wVHrFu-yqSmMwPb6epbvOOSVfbhS6SIFv06v7IulFcWxSbvQ6V1IVomZZj2IevavoWmSoe5yPSMz45duDZ6xViaeatwTIkV0LYPXu_QZ_-dMcWddqTVJ8dFlJ6OQOMBJ3EKL5uaySOpI5dZ176qL1ggLpNrLTu78ou2wnT5TtwlaauYHZVcV5iL9DquJuW4Nh0hLDYGoHRFY1HhyXHP_cTkFoOVfXKcIN8SbvX9Mv_lUgqlhKXH0g7ajGy1ByHn4des9EffWR_YzY8wVZ9gKlq340B6q1Umk6ihWvkmB1RJzfHXJIFiEzfYeVXVtna5R3omXp9TbG-FljQde7iiqIL-j72uZheP1_AO2e3YMMhmuW0hmtTD7coxvNDAL_KmHRDxPZ7IO38KUfu2_rjgEO3E-8vU6ytHrnPK-k2MVSSZfU2wF7TP8Nf32W_kHSI91K0QCZRvJvPqday16TAmcsXzAlGhZxJhXLgjoMJKpY42yqrIEf-Rkb2A8erIYdBpFhWc67n-rXbCHRxCko6DiwZxA8Gc6QAl6OuE99Sjf63Y0MbhwBkhgOIkzF7upgDqd5ek9opuvpjzquA4vT92D4XYNETa63r4oPEAoNTlEmWVmnB_0Fk7jeSVgdlQWngvNmEeiMMqMALIe7R_M1Qa1lDvs-_vE8k-806g8IJPgWAi5BfU_T67kZ6QK3rJf9cypqEXJpJxXkX50Qsvs_jklUHQknxzvKqJUv3p9GINwGmLnKmLtk03IZyWGdcGj4jNJQ0LZS6tMz4fhtBy6bPeaW7_9DQR2ygPAI8SOVZXTqZOdQWKuJgB6Rd1lY2lpCKBoI34kNC6YSrOOFRTUd9aiLRfoJoYsSvmZQTG_kpg8NfEQvXFb5_fkwlSll47wKz8uHA2Dsc2oZ7cPkz0yb5qKwomULNzUL7ZjcLHjFVi1LBlVdocn9Zc6o3AdoARZRq8A8RQjXI_qyK-XHrcrNzgf-Qtjz5-RMY_uXEP9iSBIRlz3hmXLlFpqpUkGkCzA2McQQ6itx-kMu8Qslo-vghzdPoRyEy61nJB9JXfx_FVnKVLKTBPpfOTfYwgc7UHU_L2JNuL1ui5J_SA7tDHueJTbRjyLlp2gdXqrWhaHcunp3c7TuLY_7nKiQ81GxNvkpPnNSd_xh65M6ezoudewoRxoTpHII74H_tTkuwYtSujyRdyrucXDNkCEiYjft5k-5H5RG4y5VbouIdD8N_uyV89YFoBQ5JMB6pW-lZo0VgK1oB7WU49Im_hqCBDOO2AuGdirI4qP5S-K3-1BzhiCBJpYE5Moeo1mgYyzJi1Wiagjy4F8rkJiitcBFk6nyT8r87JlUrEcf04cUWt1AVqWzCvfanVjCTuggPlxJzaIH7P4bCS0k5DUrdGNbpD94UmCq63LqYhY9wg_bv4bwyB8k18YOHbHUlacgGlm--LPz_i9eDVhAXzC_0kCLvhF18BOhKLyHJpPjkV3u6lOKbnQlJzIrPXGRZr00mn-0Vjk95JmnCWtkIzMLKPD2Tf1j29onCQf5T-44lyNxp6CghOH3UwSeYsa_8e2V7u651HYUcPthrF1VBSaqJ8uLHujIi8373LYNrQQTEYaEtiFrgE1023fczHoovsnbCEfT_IdsXc_e9uAzDF7tlrvFy9B0J-NLt3V_OeHwc6_NKp9tpXZ7UKaQ6oeVxN5FO4mkM-cfNuZoB3y8ERa4qghoMjS-SZQ4OPVin4cwlnhGvyGJrtXeefp7_b34InvJQNUgMQRplTKcDuTbjQELrb02A-67_28C3A8RCC8mHFheRd8ZfybO-1Cv_-byTJTEDXc_RUR5X7AUUNEL3CIYW6ChTTmuotI20FT4vGpMIMgveYyNIwhXBWvWITDcB3CfUAWVMyAxd4wEOFgp4Bw-W3dN4e0QmXjGroQUsyyS5xINq6N7r5gR_ZG35j0GAk3qhih4G5y7WwRCCsKwJzXjKNc1eUCzbwhp_UZTEX4HUsCzfI_19EO82VHpOXmUp44wp1pD_hc9Ijqn7X8xyGUhuhBWMfZhjbFmd9vOJZUsgLJaNQma_L26hFTRd7SpEaBFwZZtc5ODdd4rVCuy7oViacttaB2gDT03EB8eUz1Z1wms_fhcsowazLG6stAjN8hKmz_9kbcnd9DYDU7eV9LYDLSpaMjszjgwwyWaS0jssaV998VD682x6Bf6Z1ScXEC3t6_28ddlIS7L7vIcNaDSGmKnh86Y3Yc2Qf4O_OH5YRFf0-Cjq9Qv4UG3uiS4KNDoOXuEGgTeOtzKjJ0Y9s23ztiFJKVCOSJGGl6YByKfzZJIrQoJO12mJM-pVItkHh-is8Wh8QzrxL83IadpDP_MY6u5lwlvfwAgGlOLFhn8MzHbKYUbR35FNAQyYX-m9fYfwJmLdGg5wKVfx-GImtku4Za-sopigKckemVIrILmRcTt9mgTT6DSdxk0Bv3k2eChir-Ls7XfOpiFIcpgtPcn2LkQ0djEmq5DrJAe7gwumHmu7vvawSlxAbzjPybKZGlLaRPcBJhGz0nsGqG_s49pYf8d_PhrN4w4tCtFMz6ecoQqvxfhwRGMAXDL38OtesRRl-83hUCke3gsYfAdq5EOC92c4hTYQ-AhejjqzA2uP4QSQ2dqm2BlP9D6-kXwu2OknxGe4bwNCa5d4usZH0BA4MJRvxZs3sDKKb9EWoVRwWlAD53Pot5uw6SP4dB3QTdO3XDsp0rX3x49CBjr3lEWSxjl9LQyoCGAbdfYG4dhCdTCE1LP0UPoltPJUsIOUr_UfLitpFeFLRuEtlQliA_vgkzxCczVI7xTVMqOtzHfHWfTTb1o1dUqpd4tiUgCNaIWmTXJlGUgdVJMY-FpjnitEYOSHiRpcavelhEr0P1mkOXf_Lh6rn4Q81Dqln6KXV7YgDx6kLFF3g4fJKmlE38Xf86n8ozVQ3Kc9M5R0mfFX_sTBwlR1aFrSP9mvlPWInEDfr5KCyqB3GCelWlOV69IeOszzFJyqoWAKDaWJsw0AqotkYPP5liXgc8vcPHNFbXUADD26mpVGW3jNC1v6h9cSZZRAKF5YK02vWvymlZU1zGOuW53-HIfJpVm-LZgQMnoVcQ5y5wm8cXwSNayzqAe8MZ4v_ob8Hu3yVMrb6bJMbi3Bopj3LDZMCXCZV9ohx0NXRevKF-QxBK6dytup0ag_rWd6Lv3-YdmrsjGchM1cHImmVA9vqu0gJ0sead8Z_wKFXREH36ERsXvUvk-qZm8qvGMnSTjjtIsjDawBUn43HARyGWBn2A66GIXK5XV21m5aVlIajRVMMxt-o0jiW35SowAea1RqblcJ-1htQ7t_EDy8JLpI1XNl1KUkWMFsuSGbZsp3YLbL-jVY4ON_L68fZjyFPzabvDOjFoHWlYevIs8qlJZa0vadlZLgB753qoc-6Zq8TclNT1w3fPpefXECdyZDoE3tks0ZKi-gpp0v-sJ20gNU-8oB6SAjFOLORxHctuFSvAZl-s11QLJxlTmz6O3f9v0oGQq9OR9qY6KrHaPutctmFPx6YYYNzkqy_Jl-pXZWlEevNw39cxLwjEnt560qClosPx1ha6vp0J_IsK65t4yCyRCWcq0U5hqiMHfDM0-lKRf5tkADT4Ianod0qIgdr4aI1vd6_GhkkpKhhtAMNv0n8YmsR_rRprNBGvl4FHbEpcmRs9AV3LGYV1znpw0SdcYfvekF21YmZySWAgaK5Y8Cf9UaXuuf8vUxzbKvf5z0il_RPvbMkolE40K15irri-6t-JfMWXoxMJvv5SnH6lxME09spixC8R9SzZMxO_JcLvAe8KVPQD0--kWwZ2Mq27C_A-Xu70eWxNf9j6jjKDrokvb1CqVhGKKyD9d81X76j59pntC3viTwe4v2eC9ZB1AFPWL8iG8_uuWFhdq8SDqKCR_1rTDHOJm-VbLOKdBZ4paYXnbXcxhPlAv4rt7TVtHYXafyofDoswgRZEUU5VN-PIknh5O9e-vW4JmTyHuGiT0QJSBOep0FSy1rPNUBfvm8G02wgaqLqy91QJC5aoOeizNP1iGahf28iN5zEL4iNEOm_Gi9d5m1CwFZytFDWvMawtMAtTsBejddNMQOjhMl1t7OutVS8rjpaWVRBRCHh6OiL1FDrz0mOtVy61RHWTlRhbE4smP_4_hrxOTJijbwH9-itihKxvzTobcJSBppJsmdOqZQr92m_CyJh7bKTAVbftIaBtUVwayNKHr6D0sfXg7XmNHCCW-uMVgjgVodgxYK6NdSHqvcMM7niwDz_Gk5pFiDpjRMxVSZqNNAKr6JNe3rUW7uoasPDniEMOW_-u-ByvUbNin1t0ZZLk6WiwFDZ5zdmGYGtYVnq_zCUG7Q8CyYz8XS6A0wk02sn1coY8TiIAOntAMHPRGTczyI-UIfMNM05qd6_SW1sfWKvQXeIL6OvRA-eDiAjKa-gfxiCN9Tmw0RNhsp11cF0wPlDhTj9e2eIQejJfoxdWE74tBIGtlntVmZR1Idg_qnF3MqNuPPq_TjFQDmgdp8Bo7N2Gskpfpyeixor4v6nJ8Iu22QRGponSHdTSJ84yVNLih_Tr1j76Z0UexPXOLrxLtf7_SAf_x1dCEl3yx_sVsmtrWTmaBr49PmxhwqjnI4rAlrPeo38YjJu8GlNgNQ1PuYySJCh13bCAUxRTov5gpSvc1aTqCjplqz4EpkZ2DHVAc4vAH1TBLOhJNx9gnAyFDAKsl3-0CQtY3a5xttjO6oIiR9rbiSJ15yD9HAP0QeeXGZmMFUDFfe32lC5sQ2PXPINo9ZnJQHdaM1uyDmHmdTy850b4JWZ6ieP6rIXUXPPVrIj51wr-IZfn9kNDkXI0Psk_PdNtV7mTudfD7I290G6PvjE_0NzSzWPuf3nu2y458m3pq0k1YZW6LUm53txdn25mgZ2qJB8F6Kzw8EHZaYyNE4W0P3s5FP_xG0D8Bcw-XJQLGcMdvWUcc2HMY4eQAdIltKwoYPMrY0y_KevUM0WSb5JzEWY0WXTKfp08t268rsuUeuPpC9sh9PWhR78ZOMiovyjghSHtGWZKMDILmgqz6cIcsElbQPc0QvvW8njADiuKEZTUWrksUCXWVuPOhg29-A3cOEKJRqM2EyIILCfxl1ihDIF32m-WzB7zhpW_8v1ZF2Oy5m_qlgYsRosvyrp9XyuQCrPqi3z0Qg2gqbjTnPIAzlHyQAPHxJ-oeCZbGyBZ2ScScKkrrVkLtYuiOKXKc6IyqxKW8HbTv_jFha6L6uuoNgeMyuySyG_QyvlXoV5hSmtL-G4Uu7rXgaDSQAUGV9juiN0JiBVj5G-AhMs8yu0CQuRr_C_ZEzitsRZAfV-lxDP7Q3PNUmQmC_6TfpaTpZhJtsimrSoOGMbsM33UXKCEGriQrSURityXkOlkY6hPAf0njT83yBtUwf80tqI_EREy71NVZ9fBdJRhsnxTTooGbKNvS1asCtD3yGDhUD4zmkEVWtay7lALNhoZ9U6v-yVSYdi1OemG0-rubeZbINadhja2Q_qxnzowN0WjxE-OeR25UVT4M4VAJETL8f-td_bUB941FLBhdhjW-lBKCDHJt1AfitxEqAaQadzIuPkosiF5Icgho86NwwPVdhZWGC-CRedTP3UhkXB4t3BoZvV-piTCqnKB8LRNPAUSoP5zLjC08X_dK5PgZw1hohXdGafK9LuH5OVs_QzvnfkwcCNMWAl04T2ZbWpqBBcEFZhWVcxfL3poX6WAiEKJlStFWJ9S5VMTqJjdwl8J_3aCo8mrnDQhc2eDtOuXKpwWuMMBUPDn1XknMkBcQCioDBY10WAGvdaKRvGrW32EY81k6zPGv_wJYf97x0wPR15S4YljFyFsrKTMnK8jNfLNd2UuWIEyulQ7217_T7vyTlPr8PicKvJM7bWiaQQFPia0og5QBdosnyRlFXMJ2YMKVpcSJMKHrSLBY3c7-9-cYNuLtV3sYdQO4pCmCcsUtey5q2f1RyiJDfexmvtcktlsGIbnNNaYLK7Ld2GRpXChsUyu0P5J80vPiyecGVaEWAOkwiBX611YER9fLBC_E5VRIvh5h03fc_siTjU32114H4ci4ExflnpwmqfbuJ3A1QQ2_TFNpP91phP7TcloCZAEPJdqWvQVBti67ounOYTjsU_3UTCdBe839HFRvf47TUVfzr6XXWF5SKTzDtZc1RwEMOcBXEKPokcVILuqdhCSNOkVIh9vWSAj2ethr4TOF-iH_y4dQkK7OqHwpOzkhsdPtrhDO1XrLbocgoVwQBqk3ZVi2ztO1xaGDxoVRxPp-FjVdPF8KIWyJBVjV9ZQNHNyCY0B8zq-d9xHeYuRkpQioCdgXj1QkaG_sZ1bmEThBbZbu3UuTrkegcXJorfvX6t8p4hjV_DUbrcK85POlM7B0USp3kjCwEpPZVTAgVvv-hP6lV3aqj0eHI0WHBmUKZQseLP1_0Kjswty7sTNBCyfnIwHz6_5mA9_DxYERyu8LCEBWfi4EcH5zWOPki0P0sp6renn0Sw2nPAN0jmt5Se5afEk6edP1NVkrHNgFHyw-7jU0Wi4xWRJ07hcj8tjEGIH2RTUW8OIhg4IgGhRKq30QCxQesI1HMDKhW02NpLhyd3XIb57dzFsZ4aFqMfFzde7UqD08BykDj7L6UCfdc_PU_NlhP21FBHBNZjwUeFJnDl_qHHSaYuGEdztQOZcuwtuhTkr1ORjOURrg-H99wYxMF38_90JbbE9HxpWOgX015AavuyjNTf1PgxGcvYrH_0EwIN8s4ibmTbRBrJxoXfqTyKj-EKByydlvoWDI661kY2VS5LpYuehQOwARm22Ht24WaIoVCxJyVTX7EtY44Y4FeMYHnscRgZnKWrtZWrk46fRPR0Vs3KwepYxqEqPpZyE7-DwPo1meFZa9PZZvaAqhlCU4cmr_AV8GyJintvlE93EWZuoQwLNxXfJkWbdGRz5EcnuSFCD8FJKnoD68TiqFC8Ju1ejWO8Kx8bCS-eWFn9pVJ2DqL2cwA3b3AIHJ-fxIwwUNxWRR8BTiWNyCweQ96WtKbQ5j4mkORcHkjWXPCtt3ZuIdhazLvftYGm1AU02-iJzpty82eq8LjIMEFktdK98xLA2r-1S_gUN65vIDI8cj9zj6JFgL-mb57HWGOYLRgKkjBNR3k9_oaSS8y0p9cgl1FlZVoDJt4RvQFutjmHzxNF7W4R3OJwUocjiWYPmEmwU2GMmcWBOgw12UoX6mNNsT_OVGI7TuoAdlSjiPlG_bePn9CJ5JvXiiryaai3tunGDN3qdBqRYiXAWwZdvXit9vXd1scP2xPr5hGOglIwC8L1gVBwPAPkckpTCjYz-UK4VvK7BiVy1LK-CA6-5xGtx018_6BPULa0rC3elrG8SLnADTocyaltwRkBTzdD2-Sevt45TRaujL3L8oiMOENUyTsjlrqtztagxIDFTVkJCsx7dxsEPG7CJvQyV-uDOipwVzNhzYMR5eqjh2cvJ83e0TkW0rrsVSHqkQDIg0R7pxuWY3jy7UGHjyo9brUdgDK9SWvZQIh5RE1cDkDSvJYUNDZRcawFOuQTOSHDd-lrvcaxG_bq8_TajSN4tJ6ojKRDCRY6pFXD1S1C-DT5ZIgtOaZpFMppl1ynqj5MRM1Jp2sWnJdsISPiMZ8xSr3mI3HYC_BXVjBwFkNMNhqpLzbnP0tuMmL8qiB6FO3d0NgJMl_J27_CKt7GEm22tAMNikmG6gjel7zBNrgLHL1N_xGcOCxHxOTCWHzz1Bco81AMwUWpnVBeW88GsDE0KFYfCbhNo7TBgficw545rjZaBVdhyHHHoX9wjuHLu1mum1mw2ZUuwra5qCVIdX9ts02SmiY__ZOUxoHDcaZWBxqGdbM_rWgv4DzUbzXwiSCuF2tOijE3Mb8XeSmH9hZW9dwm4Wn5zyG7WtedzN7Cv57q45wyNtTccFyY-es2PZfiErsFQof4foU8CPIyhHSMQ5lGbiXRijaMatmhy1tfN2xoFruPucwARx1WfnfpT-1eR72d7BjGQxleJZM-EbP7gJoWODi_9YjOqzkc_KAsLG8VNNhAXWCtdT_5jUQzE2voSyid2NpeFgmH3tdioEOsjP0Q853UlImt9pkMIs_OD0fe1OcamlyNIOF63h1l0IMa9tE1KF3_A-ARdnBeOefXrw1vfYFBHxWt3U_h9VlgC2X5iMo-Btt5qITw3dorDA6AmSE0JYyTJmhG6UFd4LSLnuoaH_XfFFGeGsBPuQv0gBRYt9Vsp7D2wqjmJm5hBCq5tJeKHLKTv6yv75Jvfy4wfmenuigXk_b5rVdffp2NxCOHX8Ed9NxjFhnRgXZn_fsSQInp_bRx7wskxDsUZxtYxIHObdIx4ul2yG8CIWwwspwdIFDRjBS1RfCiXG9aFLS91UWX-8zYD9_hx853LYqXAzASYKtLi9_JVLufiOhC0fDATc38QmsgnrvHPdKpwT_60i7Em6CcgVYAkuPZUpXoU54GV6U0x3Tx7iBJyZQ7QFC7lhNd9wNnqDMx-8pKd2mrNWcHa1X_8ka0s3WGsTNiCo_JIbiq7cH-onSyyN_KhfkKUgCp2BHmKrnuupnrkV5lWxRGBJZyZ_fJelAW9FMJ4G5ayJA3uBOtsZ_iYsFgFItwHDIDC_fgo7_L2lod7XDegVRRbEKabV05-fu-QTmOImWnemO-9rnsHIvZqSveEK6TQa1877TyoZgrtiGdHuAIZWsqOg6uvwdhdo1SYsdd6SK1VXpQuiiekW1X6X0RDqFXJDAACd9wEbqoJt3e8fKDPRsFQaUv3M5PZb3FQa-UOou0_cdKC6X4xdCHFbIMSAXBRrleessW9PrJxQC7lbATO-NcCssS7n4Yc-RmzQ9FtcY_HSUIAX0Hsj5ys5EUuO71UgVL1N7ZE7lX0MhcM4l2CPL4TULQeAJJv2DgCM7JHMDc3ZdiHHHxDsn2zsrqhgMJec5rBEc0nyCO1EuoI-DYzYOpJ03nUOcLDvJ5XvLzDfBT6Ja4b_vzkwn3gXECePZ8uifg8ME6ore4jb3xkbBCPWW18UUmYGuoEnjGfI9M3lW2erSKEkb_0G-8LjS-I6ozcAbNZWHAAyNq--cBcPC2D1QYOukbXIfZ2nRstagn6uFU_CAkCG0L51UuYm0lQARZwA_5dLM0sjq2BDv7Kj76qTTiiD1bj0x8GcUo0zBle-1cWYn4Fy73g1yyK6SMdbwmLlkJOfTbm5dCPHvetzQbd3tAf5rEv0Zw3MAw12ju9JMloqU75E-eOW-vWVpUff5NTaVBCjE-U-1HWTl6yDuUE23dbZbU6q6FgSBEkKCAYC0clfOgdHiCjqaLaX6X0C_8HK8vTRWQwFQfBnUkKW_uuYDODHtTQegSr4ImW0Pijf0vvF5TzrVW0SjYDzGRl3bENXaBycWXmUm7-rhc7R5c4_qU8fNqD59Sn-i4HlwcqBOZYfkib8WCznu76g1xqIUPqsDEyfeD8fLIhQqV1d67vVT4txhsrJ1rSlGm_lZS7vjD4QJN30Ld9ezWGI93k4KYbaZ5AcTStAsHiIGI5kRNbh6C85H9uBB9L0LJM4Bo1RI0VLT8bkzA2EjREDHXFcN59Zr7Jlrn2QJxoyzVEFU-_RCQ8N9eOKQD3_lyiIoHqdi5MShb9BrLXqvs0AIvhFtHujERDDbnjSyFVhRToMqI_SUHjOkXG3uVEoiAOG1OXbDnnENZsOG2JA1bzl7j54kgKQVfajbFYQN_MOhrre_fTsezM9z2Fe4My2txtS11NuZ7-g7xZwogilS_FU0a0Ao0EKsWTIuJHg7j4F9QeZ2NEWf-b2LQed_uHAz3gVihzxRfwB0GWdfGULdYQA-ne8CPeJw13KE_6AaY-x4sGcGcNTefkBV8v3NtO6QMrKqI_DHKq5hQ5Xc0D6IgWJWaskQwnbjSh6BoJItLvRSvEGEqGs7DrfRpn7hxYTN7m3EZ4qsf42vAT8BPQMjxcXyEXEEgqobJokMArArcbvBiyVB6nEoLU0Dw9O5zIH5weEAzIFi1DngkQX07asvRWrQUPOKELPFsNCdqUGAwvMpoVJyBIoi_9kapyFjGNZMJIMPGr1pj3zIRV7HW7isRCtrl1N9g3So-XLO6twaEmKP8CCKVs0ijdEca6UY2JQrnPR8ZJDQilj1gsqfJNbPi_3t2r1ansSBKqc0TgiWSfSPQlPk9DRq7m_ISf21YYv21RYgZaP24xXHexYM9uJcFsRaebukt65E_aKuTju9OaFJY-600V2VA-oRJeQ5UZuLTCqvRB_IzNzJIFdh0ZCAM1yyzNIKgzE59ATFktMaSAZsonRSw617fbdl9KtO6H97LhLd-TckTmmuMQGMNodh2Lev_9bUJahjlh_spudJiO55xEB1qrKY4AtWIgSW4OSJuvILWvNyAYCsRRmV_HlDs5Y7ta1pq1L3H_ofPT8zoUHG98mrBLjpVdEyQDTv_edNixKCa8QCssqY4SBOC5y_BMMRKQGWcq4LFnfjzkeZgVDjNg38L9Y9tTagB0CB4apwmdyPD0uyEVn_VHnprO-VTcvQOU8qWIGh0AiBUtCkNsVNXUTZJhvcwtzR5Tr4tqqAr7jXns_LetflqKyBDORZ6DBPI0wwPrRbtZfveB6WIPmly33VegPEuxjt7LDRohepqZBKA5Bfb6VUEJ3g4v4BkfcV6aJrbPzr7Y_00iYe8smPD0VKMLkS4efLwPce_HZkfAQrg0DHE112F3z1pYeP6mKvlhVqVIVbkCp5zxekrCPK9kAEOxHPOAb9SRESzU2Vp6461O9jalHd-zOJG3ta5ORg4T-kFikBL2kO9LC0lrIoJqYXXuKBzuQbAFAeDb7sVOV0LL842xxE1suZLlA3ri5alDPy4XjfYv5t9SPtkhJY-DgOGZ2tcFeZgDK0HpFzL_5k4vviYjUpk6uqVplw2COGB1NDN939Ovnkzz7qAFTdFxThssOwJ3lKDgk2VdUknqWE3Uwh40hlFGxLZJc6Ql2sFa6AR5NhraJw7VYq1MffsD7l7XWx0HtSKt7EQVytCiwGQ8ZLcuqh3Y6yvgUPMEEpBXHi294K-W3l57Ko7mND_w6uOfvHwQ4V0u_zldSVKkZ6-tyqxxzxjpqBk09TVK8MHJ_c5dz2e3sJjW1HN84mLp1mwQiiFr1PKyNIMWUx5Xnjm0Y9ugy7EuPJ942M_EioWitgQ2zLMDFlEf5PRQN6xiDMqr0O4P3zNFjB_yIEoumIepg0DvtPdZJ8sTPoJQpVdDRO7DS2Wr0TNM9iBURs5iaWplAIZFdfHA3Pb11YwdJ8LJiMXUuPvsI_hGJOLgxFpohKVinD6McTOoVzUejaTViN32r8paSJVzkaW25WiCTpRJX49XO9ratepb8bfvuKe86EQYKCo7lBv7JnYyTHu2n2k9XLSxtkRikeby441nDrN90p9xX92iUl7waXKx58aoVRucyQJQXlBwQckiTgwqowgcNBlauLwx79WrHW2f54ttsxVYB4MzP9r2g9uoGBhIZSoEmjOX2Uj-36UryX2tmrVFhdRloVvJSPS6VwFsg66Tggagxc1DuMoO6KqUli4Ox8oSjMQY1lGBuPgbhftuCqaxz4uqZI5PpWXmStfYJI0YtUcWoif27H0G7b4lhnCz_6qFhCFd4S--jec-YtcW4vU1IolfK-rLcwcxXWkI49spJqTxblxkovatplAlpp5EmM8jtb-NY06fFBK_UOFn-S05cmrWgISzTbDNaLJKKYmkt1ZCfHPLgDcoyHFHTk0GTW_bxQNWWQ2_6I91cgQpVsOLuzRvxDDFz0JnUA8ul4IxLoIHIYZX6W7HntwWhv6HAt2Qzg3nOSivVnrmGylwl53V_CN0t0E0vo3ywuv6Goqnt0phWTr3Q_ysf89HenmL00JWPKGShh_Scqe4Inzeu6TiAYReEDGIVjRM85rbIlo0mfdldJRKsXhntj4cfMaKbD1SuqEDgXkd5rsULyAdxDO-r-D7TymHvbSup-LRoiRIOY6C7S_uBdWRxy5foSqzgYyCRC34gvLlcUDxzE_VKhlXx2-1zmVkxkRoWREj72Xu8FOIbCxuC2eWUa_P3qmYx7si2QQ2gAcpulYW2apo5SLk2ZU7rT7aM7qQWbZ46nIWs_o7Jr0h2zs8UnINh7xHcfil7nuLnKv3YMLRG4mClA1pX0xxkdEL6GMgmcm4wCmyfhv5sg4hSoMh425E9-eZbmad3eKluZESAVG759_4CZbVYneNvqnwE5Rr8FevMflhIlsyB4n_1K_NThTKQvsmJFZjeY1CG_cTfwuKhjT4v0JeXvpQxKhK2vda7OHfiOAOPYSMGtdJ27vM9Qxj-Tf4wjNiwBENZTvvlWHmfiZQh3YV97fEy9aOJTsXqHwemog8OZWOwGzKJLHmq1otzm1VdD7CzNj_mVGSTLX9V5Q7IK3n8DJiZ8m1KGurX-NaCcx8v_8p1_0e5AUoVsFAg3-qqyhsVP03DCHf2jqbG-c4ChkEJWbnyradGyOFlt-Y_RWoFbSUVKBDakZ_WJnTdLJwUsTHGu51QS5yBSUKAHhp4D8vtTKGHwEtpOePSYS-lZMx8l_iBkR-NfleVySeoJl2iQb0rJdQ7JycwJvAo9zreCmxhbl9lJySFRvlpS8qVK8JhkCSGN9YuYgTXgEOGRJiYGrztoAAqFV81viERLd4hW0I8MheJK8X3ITL0X0e7GagZsym0GEs7fse5XShuT8kFp7CNlF9bXD1-KjIF8kXYUigmwG7re_dLcGQ6gat9jDICFEPXfXqZXA8mdEii1ZHoFuM9H2ZbLplXDiea5EgxS0jPRyfsHC9IQ2i5RghHB3EOL9ghbUAIGKj7h5BrTVJT7DewfYsNgDyQVgLrRqA5S32qxP3l-z2mWp3eyflVZGtL4DBYb7I1Q7_1ZPvrqR2G9Js2MKJTbcBXFuVeYi7FcAK5Apo2nMptiXG-a2hf59L2lh-KM2UxfQskFHfAdbacnqW9nvwuoF8HC3t1iMhldPkmOfFlMrTirCTTdZ9O2jjgtAidfWIdr8DPEhKEbTuDnpYmRD9oYtyy6Ir4mmPaOsMjeSnrMA8Jjtz_EJvzvvWy72EyyZRwuN731pQG677XXwL1d3ezFbF5MqVcovY8fPwqcuf82-SQfqDVJI-dcu4g1LaxWMCeDtaB-9iPkLmJW5zige2OGMvC1uJrKoL7fLYrmzXYhmNcSaU4YMc0Spaa0D1J2ufrogU6pVcSUf45xqn38vylcMJuVcltUtjCGqaMTEx6_ndE5LvZtfSQVsbFKqc5-J6f5Jy7OA1OECnm1E_Pv4B6zJPar7szhcR23vRPPV3s5CrFQmLw1H7AcPHqaedmFHwly18GDmlrh_KbQ3PqJWJTUfD6z_fv4FaXmJG6hXBc_fm2Z0MyBjiXUy6NbBlTqxM7O0e84xCQILjvSL5RJKvRNS5NOBYvZpEUOu97aq60bJ4g1IpCr3IU3Ng_4V-d7f92HeWHUcN3_O-zZ0c2L4UtTTLiGczWWc-TuTm8ioeXc6F8DWDucdgL9SXgeSc4NYr7il-2SxGitbguPHaQDzws9fCkoRq1XMX3pNqP4DkXeqoJTh9pJQvmR2z0g8NLmf1ZsMSEOGV8cJuHm69NrYE2vhlpu2N3K_hI3DKQ_7wk-CL3hE7RWru3y3EcV01QY-vj5GF7udyxyJEBy8IQSn2LoZ9Xja9CKjJKBTxrQb12ZHuJcyMqo8hbwREPRw52w0J8a_Fd9Yp5DIEBypYXqXJr4VK3lYZNZvXrZszXdYXpd_R3zoxmI1UKKS571JIvpuXheHuqb7U--ggEVbnlITyCJ2oaw-mn2TZ0SIMDpisL_5JBqOgJdmLM0gfKKOh75YBu6mvE2H4vAXOHE-FitzFviKt5_o2bOCn9R2c4gceG4h5AZ_-3eVKtG1LYRgTWZgtzVngOf5If1T7Ev4sB4TUNG-MbuOOA7BerC151Na3dD5sVvmRUI09OfZxgYnYLugs1P48nlodtgeR3aA_LDLY3hY1ype4PFAQeyU_P2nWz9DuPAqDFzV2SHnE_DSNXdktH3Ckg-wwmCkSM36B3B68iUKkmtxB4foi1sAD4JlB6ex6Dv6X1-dHpzdjBhXbVWDbpsQGKdYsyQm0_eYZ2979RFRRD7H9cnN0WbSKe5LhWJmlSB7E380d02DPdShakvjoB1zOqX-2t2C5HFqpht_PEUhYrUhfsA3lqxNHbuInMe92i_R0JLE9EhYQ_2T8VaO0g0djC9cUt9gy52S4vdQ9W0lbJFF_2s9YiKrRZnodNKkXe0QqK6Rk_IQq2Z3elksFCZ9S_gg2ZQ4TDhdRZvSRjmyMr4glKn0ULbaM_iw1lza2b1727IlWrrqYmsI8GiCB6j2tB4DmaQz1dAf2famZ_HSNww40yXNSGX3uLOGH6UlmQWjNJR-wYJlHzkAqb5jcxnJd0i6Z5CJNo3Ayb1JbMnhheIp1JnM_yB-Px7fRrGL_Ovl_Ml0g6WRHzbBXWhhhMSrImIn1nJHBdH-fvj3FSgvNFAsrch7riKj3FZ-xjBy2f17SHZYOfR2jWZFQdNFGVWmYY9zgD2OOYZXNJEwTttWTYYo0bf6mfV84T_u61yvVa0L3AX1xGxPSm_4W87dp0LGk5insneTLrFe0BDVIMQlh9F1E7GmuH37ALvD01cxVZa_NAwVRcgneRO45CcZCCh41W3AZ2oFCuFsHGmV-sZ4v8jvqyMjPA4VCraDjnLaqyr-NQ4J4waEcUsCaWNW35VbFL48L9CYuzggLWc7RgS8RI6SNeUzRdkkDMrGdHK46CsQIecGU1oUFS6rgIOx09IT9isQxfCswVS908O0ubYGu0GobxYmhH1A_aiaUBQoiZvkx59d9NUCmchqcShId0zk-oM_e-3U55Od6pnsb_1OD3gvthnxP1ehwXMyOIHrjmTqL7-PifgGwP4MlrlYqaQGsm0M9RyTnYFpDwP8Qkqw09Q3v9645jNnqzb9X8fNgpQHs2VZBNHVVremvBU-NLDcf8vXZDd_M_WdKJRxlT6TgFnCH4tah1IAIUkFDOa5INTtUYiEqq65tDjnMIqPA2T0uKbgmEMyQjVfdxoqyHYiI4nkYZaOS6nrjDy93BmHUnX7OuQprIXSR0U64Su3rrQXhmDxJkO8sw_SSPbOhPaLaqh3-SzSL9Uepd0oHyfSct-Y-2Lzn0aJbgugHsqshdf1Pah2j9eO0TUAlM_-YJqTvgGLZFOAm6FBaMijLyf9G-XNFxWDIQ-a0gh36uiSdz5-uoyKT1pIcEvpNZvZmfAtRStcyaqJjJ7m9KjSfcb1E3Ys7hPdilAhBwvYFy0gLSuLZ_XFa4Uv75KRFc7BFfmeJuqyHsQPS1qGH7ZF-QQq3yLz6c0cbur4VAxkRpls0Ehoj9wT0vy8_nA0hoLKsK7Rn4ZMia8sCh_6Ddw10J0X0K8dWWI5VYNBRHqQQvG5eFOxyNmqp5JdLyJt6t3SS8I0yMltJzs4R4jSO0JDLP7qT5JM-jCRc3Qz7MHyqjbszSoxGpy7LtU1g2hr5hHCcBUB93RHqzkhddjqWUhjFZDr0MdpXQes_u76PU-XkIIPjo7-bPmFWf1pbRa-4M59eE0PwxhFo6DUf3KNTD5glNjOVa4-0-YwCyRCzSYplb_jZshSjqVKYhpTX0vJ1-7uZgUrhpZQx44iQAN7QBdw0Jz64IWlfBU4Wt3sfuX-meIyZsLFbqF-pWgN2gShgMtN0nWCbc5igyZ_4371yvKbPx27Q6CoMtmZXeCwLFfFhdNC26ODyR7LiA9qgS35kVQ3cdvny7OzSJEPOgZvxqpvmoOTJeQ1FOOMEZGg4FlOP3MbsCqyQxefRZ4-QvSJBG8nhJL58RTB8952azpSl-kk6SUsz0ZmDlEBRBwAT2yu_99qO0nlWt2YSPhOVyhqNwHxXLDJNFWk-nQAnbN0ebokahaTbrTnLrtwned2XokFTMPqjrYffr2_f7VthS4ehaiTnRVm8Ix8Xdi8WBV_2zVE6VTp6YfOccIqZ4xyVWhkAtjTvTD2aFsGGX1Ad4KxezTroOFQhGxwPeY6EB-wmeQlEwLfzh8N-Rs0P6HLVv4U6vtiq2QfJ11RBNlnuln_yzmYI1KoiRR9aKXtPF9gIS8jp0tH9J-y6aBDet3I1WecfDRu89aJ3Av3krwygEyzh0n26jyFsKVpFEfBh8yI_dXx4w_vdvVNUOfQU4vEMdSrjH5x10MEkdi49Yhx5ahU3DSiwKap2PGdSj08X_rWbYjFSxoL4Kq2oYjbnDV1atgUOex5dQjEAxazDeBI86xqKLB85MehoWONeuXDI8qsEbnAUSloOUfPS2WVNBSyTnQnTjauF-9A7rADafR5MPBV76RrpiWQcE61qngPdua7wLy7SjuCgo5KpKeVfJzPjUTjr5rlTS6MJH-WFMxau3OOLG4KkKyqC1U1FxSlyHR3sb5JcVW8jAmslMPdED9YZgN2kfxI-mycTUInjTRjacEIEO6HU1xrB4z-82P3EImcGM9JgqXkp_3yDJe6Yg_NYh3I4FzJwT6OqkTzngPkNzeo6l7kkdFhrx0o1Gv9MkfQth-EG2AenqTSu94nD2ecMjlvfGPTOEjK_AEQUgcunjbCaQZtHaWqmbC-_zOCrtuViv5_ERql4dAZi1bIp_CYYS86yPjN7VYocnsTpb0Lma3hZ4Mde6roaTsounvMcXSEsrINx1uRL-TSOEZZgwLj8W1Z8yUVkZQtcohOAILSp29LRwI8uJC8uwUrQjjeIsv3lFzIVEh4V-cOXNJJPs0o6gZdpIqwX-OtEhpho0nsq826FdBdE6LxZrw-ObDGrH0dyUpQLcc8Jaf0TI85BW9a2nQzZswKNAgXP5Hrb4ERY9D1R4JNbrQJWUzb1kgDUMvS2Z0l5FzZxCRoMs9l3N8UonaCirZnLzZpEinvMZ1WCysp4zkvN8_FuyoI_ZXXqpaIFKIe411cEEP6WOkYsgwCqLmW1O34IC7gc0Eo7X741Azg2hJS39mNRtgXcdw5VA_B6_-e2ZL-w5x1NVizh8p3T8sz_He_SrT4ROehK-kII7uRjwwdm3mLlvpkgkqFktCJuUUGhfLi4C-4WuVEA7D4J5S-lx2czWERiQRcSw8g8521SncEp63nld4TMKB0XxmedFRL7B-xM8f9nkBZZ89zo1MSwpWDh8GyKqutYApA-ItIS9MLuAORQNdsfxZ1UT-Hy_LGR7USlJ8rhvijzsI3NpTiVYVB7Hx3IDWFtmIAioMIQ8XSXzazEmvNv-oWuU7CWs7B_1q1JPfkIU0GXMLL4YdFOdcNSAq4ylqSMuS57CHPWbmhF6WAAC0Rzdr5x7cTa2mnAdb0RB3F1iESltgsZ-B6yFG-_teAzswz4tG7EVW-3Hywqm8uuScP9qgjywbsfJWTC5_-OqkBjH0PRLKpuqV3u7-2m1OV0sI0lzeHb242O_NBKmzwmxp35ql7tRiZz-QtaxWGc1WmeecUn2nIIAh9kB5zDzMRI36LybnjnJJpf2x4K9knCOgdLC3AgY-06L2GJhLxapDqKBTrWKBBVJO-OjLA1sME7al-xleLLg80q1aEYy3Ik1ggSMkV3T5LFXv3tadLPEbMny8aPgga0OCLvY_Ja9oL9XJsMM2eEO2lHMzYhDJCD1KCk3tGeB5jhBuFu7sEe1olvR_Uyp4r-WZ0y8hlxsTcQu4N2RGQYFmmZqRAguxwabu93-aibrZESBgyeCWaHlbNUaFod_3XSfW7yBxLgJAiOeQwFvakyCGDhn_dxHBeti7YzuXxKG1pJ6Gbs3qqMAPkqrfseFmwkrGKGjwevbgZ7vM1nr7wJKoXwg7u8y9k0FjmRC0WLt6OAX6scmoIxboUfOyFQ_eGrvry9tu3ikoCIRW1Q0eUhbbjjxXPtOF9ddzqG3XL6Q4VhnagXxG8QNW6ivJhc4OKyVxah66vnninl4F4Rzt5Tpi6-xTTGYH523nr8XUGLOMZbeDg7nlYZ2mID9kXqguJByxVDAqFblUkn0NaHGjRCJzTvgeJMHQiEUBBWYKgXV87wLHZEfxBm64yqHYV-7XllW6bJ7WwdXcXHgSOPIXf4u-I1t7-7HMcuoDRHTy1EP3XSSbayIyiSbXL2pcXZme9LocVaXIJA_S2dQJXQ0e87zeTsKcfsRGN2wu3GLLZIpsBK8_XtYWSf5EQIgkoDmMYz-4SOKM81GCMTcpSzR_d7-2dynyisp10cLpaURoxQ8RKlkVH_bRdor7ppeOn0cfpqcMKjXwZ54PkOLaXnRMUAE5Plq0p-M07DiBu4EIl_KXkIJJOZMbbYq19sJf3SXoV3o8hgb6iOXoo6y1xbqCfUYoQOrXbSqe-3_4DlV5INlY7hHX9Ktm4n0aNG8zY-54deBmgLaSAPdQVDuDHXpHxy-xqR2aYnrGtSTRLFBCHixBlHy_9lxEKJ2PljSog-2vTWRiH2vAYmXG-khU6GsZ5glgZHKOekTKkbuS2FntzKpiUkKNl0wzKoou1U5wrooMgJ82p4JqloAS6qwoJfZ77rsXQSnqqZ6bkmbGgMPHbZuS49hCSSIl-7TE0IXnaSmftcjn5kPZHg8xjPVifBjVCVluudQlLIOOoveSW5idnsK42sAw73HpWgIc1q0Exg8pDYCJUUAs36e0x766WNnB1O_Un4erSI01NqzVE2tzRUU78PFRqiYpwJ9S2yPj1XU_lON18Nm-eG29nDjCoax2q666IvlzESZfkyyTZZchlFz-GxyenQcgF-tSP_Of0Ay_APENENHvFIBa_xY9c5fivV6qy7l9u6Ly2Hfxytxu4DhjvpzxtyaGLsTVSWUVnlu7Lft-eKX6vVzGJmbCrH_zCT5yjXbh4PjDbIXBR9Qs-HeF7oH8uQ-WV35wqqxhoxkddA2PUJay0bB6JPdKqL2TkiidSQJTbL5FFAKGUVqyoFnjXUxFoQwxPZuyxpB5_cT7ernX9K-CvBz5W647aPA99fsj0x_9nwIbeq6oaOA-aVm7-fHm3m6Zfo8N_IccoKiP2O0BUTOG6mlSEzOzDhXcvIumtoUH3XolilGa_2DKNsn_Zm58sLUNlckWCyK4lpiv0FSKtHWGlVw6l9ugPiRJVzuBmgPK4CfFZ7bAhzgmb2gpmt6WyGymQixRPC4m-bkodiZDK-BwfzlZ93h_A8PU7fdqiln45Co8-api5zMoO-OYHD_fbeAvG7dtPslg_Pxecb93-cuv16-__u7IgHmjZENB2SRV6AmwqxXDrCqjCdRLZpjxEvYnL2HbIipUIT4fp4zZw2tydKVo6C-qg15R4bqU84s850e7JxLooAl91ApSlrMU2gevfkbQEvLqnRXGB18XVVqLvLtqMzUkNBpTb3lWyzkqZLsUxbK2awZKv_mZjAZORP4FXZ6NHJ0UW9Hq8GeXi7IxL5IHBPCegwIFZk6eFCXBwrZwTL4M09_l8OIZyvtjFw_AZm0E75ojT65Wnb7Ynuw8e3uyFK9WwUnABxOfJxl5c84RAjyhRU5c8jdWL-3hGzfWww1vhBezRD7cnaZlJ8gsGVDB4HH5vEgqZhIUdnvwZjOxX81_h1vLz8fGiLvikbqMJyVnOpM5zXpAfASTy3JSQBFzMk1vZNdyt43879wXWh9XqVlEvKbJl2Z_fJsB0m75XmyqBLZEAK935vTMtatoeAP7TcKzN02ClZxTNtUtc1pCQm7M2mdJVBDD0aM2KVj7JyM50bOLCfv4H8ou-X9YqCuBZdbFrW5mluoNNgIA2JOEYHBUUecByDY947b3kOiR_ORosqVzOGIPxz2qNpAdqN1gJ9ipnrTCSWFE1Sjx8o2SJvkExAdjmgw-O0uPQMRy-th9thjR64lfgznuJf1BLU6rLss2Cc_nHpY7sepY3MWecvLRBd63V6PeO8hKxVapvC-J341yqcOOAXBTmqia6FPwTwbza3Bz0gv9SpT6UsHsJT5hogDSfyHukCyHVTSdkxmwn6Szg5jxRlcHU8VHuq0NxPonnOsbI-LmiR9Tgti7VEsaeN647BUriSEc7q94lDQ0TSgQwk-kLFHG9Ujf5z77usiFXfLCl_FNG9SBy0zCNpG9e8r-di354AR0xhCVFmd9f_T67UMiettFt6wJY1fAa5S2022fnIv_56vmCfeMsp-hJ96Ifxn5AzoSM4DkozQEiCbL7TlO_QMwsEz3OdVfrfWkXOzKNVmXKfDLhf4wr4UbMpmR7K5rcsi8zCSeiXEtNlOfvUsbrjrQbT3SpzTDdsX1GTLtDXs84dMDO7_CqslFVgMQScEQ2uluNEL91S1UuNFM4qjP3KU6kB2TtFzRoVtcq1T_5LfzuXY9LEtfY2dywNnqo3daTdbYdUJ7K-LFkhuBR_QpJ8kX7qDCCPNNk3qbqEMYX66CanZZTNcN0xOXWXJuFgurvHyD_zQnVqSa_GOU7A9Vz_UEdudscZW7K-vOj-XIJXgMVd-VzyC5MBhPPFbmbx8orcocE9uMIyFpalGgcyy8NTxYNwjQkPU0XCskI-ZevqHL7RetobBxUB21_WPv-54JYz1y2oV_LLZjwFAS2GFxYxTkmi9i1oLXpX6Bf9Go34H10o_lFYsLCSMoKGJXorwjXMZgnJiz1Ud2RhhxJZTOgfRlVR9IX2pjErQ-MNsCKlxZ3v5rpIqHfMYObB9-oUWMgnEGCwybJEmpkdcC8pl_uqhju9rXr_w4CIMuQTHIYrW9t3CE0JHov1cPd2rJ2Ndpz7FLtQQEdWf_-zfSXMC-IoSu8r0HTfJYRO1gINDxd2anRohaVPKAT3kSVwtWGb20444gGY8yWyZxkHjcYFafL3kbKAFoM2zDAehPA131H5sryG_FdWEqmcTtjHY4VvQ2B-cZ-kuBDKrGfn0luXw5lD7XnboDk4-Cmv_xs9Q04RHaPpOv1wOksBEXYnb4hoCL2iVdnFCpi6ckgWAdcVPzlf2RU8tK5flvQ4h9o_OyXtPlVo7_j7cSgdagZNyRMGSYMVQRDG7RAsW5Gg6YqQCpnLGO3h1J74iOacXoy_UeY8sq4DY5ntDaKPphMUGzxXxyM-WWDvGVeRF3xKUNMwln_zXf2pq1JF0yVuRq-TPjP8guaV73xt2cLwzD5_HxkXZ4LLsJMTZilceK6cQzE4hdFtjyAncLSmOgM2vTB4mkKfvtZ-FnTs3UknNbfRtktv6KTDYV4k8kMNipadb9QT6pGGEIRpX1nU5tJ9Awl1jJg-2i3emAP6gc11YWyyqqt4LQpKK3KebRwNCbC1uZA_UnqyLUXTjLiN1lavGPZ2kVT4-ktfGpRNbXR7anK_jLEVbS88GTxaMsTSKUIavHAyJIG7Kou6r6JFoV7WFjJmOB8FmbrJRruI8n_r-Z6npbIxz3wO6bM3UHU0A23tEJJfFDTc81AaGYAiMNfBbwRbAL0ZuHoY8wzayu0sZQBibAa9k79WGFwvMSrYbIDoTLBiA1EUw921PVGw9n1hDuElpL7jpMxozMKlAPejDQr7uRyZ_3cwXaUD6w-zj6um3k7hsYAItd9wd0Z-JpP_twXp-lfTPbVBzaZKbgwu_U4te-O5jYpnSAGGbtpWNM1MQOMqMhXkDd-9jryFnaCmIUkZBsnlDP0EVKXn2CGKw6YHOzp8fKO2kdCpi9CTe9Qi7h4JcWVwkUgth9Xtt0NLAu_7u0CqvBCIV2767xl5kYbiBuuk_cbgDz0LGCr-0PoGQYsIBxT5Pm-ETWkxamUFCoBwEePNSn-U_9xzbvrPxGKXtHDf5ohXVUBR7A21DIqwrXZ9GlDy9ecnIyUvuOIlDG6rDwEZiNVYIegSIAjF5MUCTLHIodpTq2lnuqwGIel8G8-IJH8vQkb8mlOryxTN8gDxdSLFfrF_bLT983_adpg-dPlxolbma9A7mvmUXa-VqYoooAe18LsSt0OlRX-PbZePwF9TlKKmc0eOaXPx7CgzBzimCODeTC0l0pnagDOAtN6VMxOOijuI1CILlE7TuHTdZgpUvKvTTFsuwWWTwvbEdA8Cxato9G7w9ARejBZvt3nvdMPqiUdWk5xlS0DSne28RlaKBCTCrqYElSWpRLUDd2o5fCUwojLh_jovuhRxHzkYW_4eiw3PEe9mmQXD8n_H3q7i2iwCyLNP_eOqxFPz9y6-L3z1_WwAaz9piwLKkt4BQYk4gKMIxxIIMg0YJi-BYlFN79wY_YYp7ecGd8cpO22CfBRnfDDmyntGh8ZEWqhVYQTeJa-t9_o49TwY_XOTmJSD4qldV5FYzSBhGscJ8dACGIJZIshIf6-HAy3_J879gec-v3OBfXNGcYkJtWLPK9Jpk3h6DztJFrivUH0DRxCR4vVIYmVBEEX5QusGJsKNHNrIuXwl8vlYWaQLY21X72vOqK2FK_Bg6IZ_zrFWki-UEyyM4seeEvPpBjBRHEBlChicgPwirR5UP55R56olEYfy0Z44apJk4Q-2FvOiPKxPtfvr1h1kaYJCD7M-InwCONGxB6jYQTkJR3TM6HtqAWP4ty_1MTg6CZi8aZ2_nGBk2tLv9SeadnQ5fYHtflMgkHNxNAlIIzmNI7mLgsNcECt52c0Un5ps5J37DGL4SpGh677xCD6L19MVqIuqw9vCng5COMai_PQ5nnzn-b5eCswTr2S2jRydqgtbW2TqPQvpX4_87-b4FsJ1XnAw93T5WwCL86OzgNlIBBcQa6Wt4DDDUtmXof3XeucchLHQl7heVYtAbsEMxzJeDoidRWcVRvfLlBoeS3qjtyzIvY7pp-nl_L72A8hEHmW8bj-msy-rHJOQXIBR1JlOsQEo-P3nBs-UZJHheoK4rXjUSWOP1ZVTsy57iKKTxz_wQ9pjVXSrGBeQQv5SFv5aV1Jf1zUMzcdn_VVNg4dfW4QAnhM75zVth_KWISEMrHNmJmM7HncMN_0Z_wrwuvVTEYxGS4ngVv2wGVO3okbxr9tpQ8-o84m_yOw-1QZSNpoHd9LVMP7d7Dw8MegsxWPKRY0GhXro8mekGlhb23QGUysO8-19mC1nRIl2nlsAfL4EDpVfKnPC4ZT4k0ls47Sh7lWHw47-tIt7SkCHBr5LBWTovXTiXwQmlDW3JYU6mK-7TPw42khH8rcKulz1vvvOUyi6HdcyJNuyMzHrlB9BAf6P-pKKzAzevswcOotEzbLVOdLSIvjDTbncv9KuZMGEaNhkoVKtp_V1NQHfJ8YkLuWtLPaG2HLhwX4rLRnj7VKrAx3Fxfuiin0_JZQzsupNe0IslP_7X-WVFgQ8mBdEGu9H_55vUyXY0AtDtcL8_0Sve_i0CKqmh86-1OSSzsn3jOjM37qjBYiX9sgaWNFm6owRrpbGfXdKtEwLLG1LEtEPfx6uEp3PJD0UUyi7f4J-Lm7B3I0cY2ZQ_NLvRWIgg12y7Ga4sR-bAgudpupSDzmXeRNH1MmuPjG9AbgZYEaEAu94D1p0EWqYbdqnctWgTaUrDC-w-J5KLsPNBpAO4ShMM61d57VMyL2bSBZe934H9Tz3CWNU58fZV2-ldkK7Hw6KP0GiKtLAAys-XS_tr8KweBZ4edV7ra3lg7pWlQ8pmgmihpraarhnk9faARDsXWAQkKDBh_S1vEeyqkVSXlE_SRMpY7R7jDRKvejPlgo0DS-YwTA8R1ypaGk16Gyj-IvkFKvziSscFX9R-3p3XYPrMqR0P_9OGxzZ8L2t65b2n8jfc4sfNsg11k_bu-GrEMUvdoN1-KS6nubPDbIMWDwz0lEdRxBoWXf0jVF82DDbIvqxgg6on19tumjlLVnDdLSxnX6FT4UtVfTHuzoZLsCAKlmN_OPnB37Il1b6SlYHWguvH3Elp6A3qkbrmjjal_V1R44aOuRP2xh7tmZm25xfQMDhgm9uAwMXjV91Ts65teZyfLwq_DIqbyEMqLKfXhmoEzex4imYdi1pZiE0ZZpI7mwcOIPFPbSO1bbFLlpVtnNZLpf7fcpOQbj6s5VIYET0ITuft5II1TKKH48f3x4fFNGzKOdJ9QRfSWxwT6_o8Zk7jeYPeSJX3omt9pvsExRfX1uR3YimpK_bV3PcG_fXKhkDzdKMf6IFGp8olyr-gZg4JrCg3EvoWwrfEPMvYX92o6AJD8FyGaJSTpz01UunIHy960rpErxIkWw0_FT58F8XfEnSVh5zoD3T0yIEo2Kexq5YT8ivl91UrnU4WxHSCiWtkVQ5dFT2ey-i8ebfz4b4Kx2e_bxdAQj917JO7jlOa05dHNppZ2adGav6D4_rv93o1sPGYYv9rN7crfUbORQGbaFm7uDTMlHxIX_F_pglWEG2Nb2F0jVJf6beMhqtwj-wjjG-q2iWJG0Py7UunGb388I44Yqs_--HqWzHOCHZJv6No5XKbbRmmLdVAgyfJviuLliyr8hSvkJDgHzB_zurffsGK57y03dg80vvfBlSnLlxJ-VhXpxMasPQOvg_F8f9rjFXyLr1a1oV79def9h1bAFF909qcpYMjFSfHmIDZ8LhuOZQpg2L6dUTeytzbn6Q_2oPcfsy-xXK5ZVd7CKWNH99Vkb7wJmt6sul-bKQ8VF4xEilgBcnXbe-YetRTXBJBisW8dmdRYj9AG0CZo5YCxF1CgmFRIJ56jZrAyDCrj_mJ0HYU9akQ87uea9a137gWDpJLzj3eCV3yzLqRafR7AzHVvMArnWh6xUinDAc5faZf1GRJpJysrGSkFsY_zoMWS6JgPD49i9HfesaN7fCtTFtkZOy8eFeG9ZctA6BKVWIt291lJ6R7MBoWPTToHUDCNFoLuJCVDZOhOJslhFkCjLq46NamBmFXN9uBHz0Z_aHuYX00E6RZ-0tEQTpMMvr8HnnEDCkuQM-Hv4Y0Afaq30mcR5hOOaT1pqToviMAMzRFRISyfqQEix55PRqohbTmTmzX44IPbseuSIiO1zOnC13zb8h07aCSOsq9b9CtBEkj-jHuAANKBmThXFMPBjzse1PPWUZsuJOLW0NTha-w91uo-cpyFfye3m8rXzfltd6gi88tOAeOmx3-Vzs2mDpfG2bMm1yk-n8LvJPJbE_Qa88tGHIe_F6W84oKqDCO3fkiQTACmBdzxFGx34Mt3SycOhiCOXOpZAbgjY9devnjfj7SXMNCNsiN-2l592iHANiGUhIBenfbgHkAOvNv6bj68tb1faIioFqjhtmQHZ1zG697afNIZ2tPSYkBF_zokfMbrR4hWXN343Sexh4S3p0LTaVlZRfAhlhKunt4kybqiL9nBapx3s9vOu0k0nDiPEBVGQiD0Ouev8tnCWme8yNVSMsYwQ8pes0yIEsq1xxikVzhYoQ7SNotlnqjiRzW3VPdAXwtFStuiaQDd79T9-4O3SQpn2uUIu5FoK74fCfyxh46Ae8s_L9ST5YGiy6H3wk6D8YWAeKP1HxSacsFj7-uclh--QLmQJucPCNzpLTwjEfhhCFHLzeSu14CTCuLVobJyVNx6MmH6Hb5OxUWUXExjSPBp5awLgUIiuohfb84UwqW_tkaS4FWH9E-c1Dg3_l1y0okViD5xOqRIWbSqzGKy0rKhWE7a3YL1znw_L2AEe-thouvvC5X81xXkUkvD98dX5PNC4aOmyBP5TNAgUzAT6XIyjD-nld1sZ3ixCG5Qq-QjfAUIVzQCf8Ec7YKwWI65nD5A-6vDClIJOm_IJYEygG41y5ujN7lGQ8TOsrrM9KYQb1mVLT8MZeu7BeX5KW11OWWvZUlY5avHvG_DAwfl9ptN5hFPO9NEjrSNXx7PNwtWwbBVVYgk7bUcVGtHzAGoacCmHQH_O-eYwgnQ4iGCHOYhc8KxHzZPAq3oCAzvXK1hPoBavi-1NhPNsXdPnc19wMheCd8r1BqejSZzNhyU_ntyYPiJkzzR6p2_skdky1oiRHjdj68oLuMQwWnf1JGOfOQdEe_Ie_T9Z_HTd4iofQxb_NB1MomTJeQIqU2pmZQYCr-YNWEEngicBu2tHbWhsK83f_0m4bBWrmd6eXDtg7vcIu7BAFF3zZLAlcjtDcNug3SEoSfDoxQHi2uiIolLzuj_y3DtAX-9Y60IDjisaHFAViG1x2lrbAhlsDkdLmnZGrVeifM8xUaG2h2EbP5GXa3RK7FjZAZInfPCTewhU8ej1_2yuH6DGHfEUFnjK8HrRqGCouZb4H5nku1cemHbGYdvSd2wDc0OhQv3JiHCbC_KUMruyI_hEja-MxyKoBp6D2drIX2EYmxpNg0QsB9vAt5PeFEjljapPRxmLG9rzHdcofPgqXdGpD4B3OfNuvQHjsidNDHZ-0iVsMuCFPCwLd1uivaKu9aGc_VnJfuDitxbPDY2AC6bruzjA2wC8NQk9gOFkWM-U-1Jc4YnplmpZ_bRgiaAtVQjqxf3-cnr0YzS34hriewijNSvza1yW_lQHaYW8EOei33UJQzXEkiKwsNYwdJ0waZ4aJ9foAbt-WEEZAc3zO4nC7dCx3MKGmk3jt57yZtApddFSKL81rgqGQd-zih0c_OISlMKkSTOTqSPYENhM0bEh5zROkR7ED7iddoQRfBzPBNOwnkLP81ytkbpIt1QiN2qZwxmvq7iHCT7nJksUpWk2W0jI1Yn1pBqmq8WmCXLmiJikQl0qT-en8eqVlSHKZZ5TB2nWHqIj-i_FxA36KrYWE_-A3dwmPl4HELC7M3cU-w8EdrKIgIOJmIvvJ4B3z6M-l_Fe0yQxeHEyWrQPIuIbTX1aGIaoN4CDiGkuG7HpU5-6TxksEwlJQNcKSZkbtSM6lZw1iwxkAJY5XPjPrCCMmoRmU4p6RuAvtHD6DAJf_hbzRYBGYgKH3iFQyQoRemj-UWqFuLDrZyaHfh9RV9K0AOXmdeKzc793g6QMfGiUWRlKXknTd_r6TJxiWzL1Z6Szqn2RrWeCZm_5w2EyRekCCjhn3jTR5ZRRD50X0JvT2ccSuUIKXrxU0j-6S0a-beNAORvx9oNafx5vpz69_4k2JHkWPQ8JXloIQXMEJxtsOupaPouv3xukfrGRzCoe5DDSNTUtuvJWNnNbEhVXY2mzs_r4e7jElPTu1CekyYdaCEvGBQV76X2O-m14ApPFAaTnaXiTsaklM-gIO1FbenfSMojQ3z7ixzezuIK71DErdAFU90C26sib4r6vGXkruXv71No5K_feTFMY9HIExe52YOrWaocnuTrnLTewuoTE355PJXHniAqsoMPQkZdFewN9pLOOhCvtWIucZV-TU8T2jkYheKXVvD5kv0pA_wFhw65VhXl6ppEhEI1T7tywN2dhBsZ7yVrF6OJmNJNzdX13pTWJybkbxS2uvEQ_JqS4z8i0sW3z91aQBynRCXH1QLzVoKOsDwFSN3NnTg3Yp28B22v2QzijyRYy_9LH0bEEY2kfsSg5hgTrpzvXqTDk1oMt6GnD5fCL_AuVphhnAWGNlEGV2Jgpc0-p8bz3Y5niC18zXlfWt7yOqxqXGDJlGP0Fws3NotpM5oj4FURl-dyb9tQ77ALzelQHJ67-YQb7cAfgf5XrpANdxt1mGKigbdDE5C8ZTazBAW4SSQhUGP6DWchVLecFfocR8d6C_5zxY0l2eglxR01VFP-F3xodQBF81ZPULaEYa_mljtOTBtXgWEyyMyZo_WhImOaEkfER99f3-DPXF6x-oP2fvZen_HSCICw33rzVQqgV_8wPctx1-CsfhYNRjWDUAPmP-er8sd6eIVx3ZhaJ9UXStcY1ooX30-UgL-bvYgHVRzNsbgUVGZ6Q_HI0CVokOaxbocKhHlTRtDW1RDlTn8Ii6EPiDgEcIf_5IBgGfEeBHzH6SaLHpvcXjTudj-VjZMo6vQq1q-enLC6CJqnBlU9c7vV-JFPCFmyYJypcX83R9eLvTUQRWlgTwtZjfpfVl_FrZVCgFfS94aEEwQ9ADqvs6sWVuEljTzfW0F-GtJ1N1fOXrceObhQRvB9XFBeaUyebXI-nGTgSzdqepoju6L9ChAoMWw7Q3iDyr-KcohBdvHd9zZ-ODNtRq82nMfKnO6PG0MjDM6o2WBHuI5GXIHRGLDpBsYOnj7vtjnlVFGTWh3yHmraHFDKzZhBxcEderuz_N3KtjCZHR-Yqo-TxkQJjCw_EiGzdJynzg20lrNoMWKdgLFKCFZFDbg5oMsvIdXVABL9ctfr1lFjNVLad35HjoXPYd69xyb1vaWwChHQKUz3tkuTze12rWiVao2mHcKqDJK8MwfusAl2EveWxxotWxn8gH9WHQjacBUdRj8ykdz5dmf0c2o_RoWAZjudg8EqptmV8Cb3-nERb7N3Gkf9AeHUloSIIN8CHhaoIgC_yxTj755EH87sVcxa1B57Z5w7lGpWJYRUHHiaX-nI5LdirViHXVBILX63XtRUJ-HDCTlspYCY74oalJVasUBm-J4DdbkYqkJZUI0OCpjf63syk8RLi0Rju-rS1K-ZUyj6dsWZkU08_PRIfSmOxuDu2Iuz3REGfQ9A9lTGFWAvXgl5ruwlUaU6UytR4RtsqEFY_ChUyMgIgVv2WMFIvEbNGObXAsai_QLAOoy8bHSsjG81bY89ojtljQg5e9F7WV7oB5SavVJEq1-UM_EHYIyTumfQxkKUTwtF8thcWtftH89waghT_hNoNJB6-e7lB2L1NNFbFJKiDb3-s4HJPZNqSHaqAQ-s4f-_GTJ6FPzvQFYnfUz2e0LluILAfo_cazhjZzaX4ZuGVOeCT-0HveDFOTgVno7101xKrzpaxNcgBBdfuHAXD85UTj9btTbYgWJZzD1rkZYb-PWz18UWbfOaj6nc5ms1vYTboMjFX__8Eb_h9MdNcHzBFvmt6jqsBLn59pQ1fWZm1my-YksCWZc2MfmteM1EK0D3PNlFaZyrB9Dmcqqb1Wbcms430caFwiCB_TcB-EoZ4B32t6E3MG3J2V1CYpeUnrirbhClW8_dzo2fazAsL7LidHjd6GZdfuNbsefux6EKFSBg70BnBBFSgIaLC2VUWChbFb1l2LwwQdxvHaOwRsZM75vAhg-GrcKp86g3j0FMcB1hHC4-b9XI2CfSjDnwwpM73SX4VB6-i0kS-so0ip6YW0MLl1r_GtTpmQodY_QC8yMQtbrmahAzlB50ujHlSlOdnoHyVnJD_XAGFcPzsN4uDxesuXA6HFyN0mzZeym8Zu85WuabKfBh5F-6jaEBT_soSMXDyU__1muvXYZwHtjFrz0XOtjc5NGIwMdo8dzbRuzOUyleFxUbvhbhcpR7aVY8zWQzJXOpIFs04t1LbDVHIx7ul5XqSPFpSDo2j6jPNq2S1VmzEnYGCn7KLdjW3UWHQzPcDomyLLkWUzPJNl3ql6TVctyBjKXf2qssCqiEbL31PmEj6RD1Cpz4WhOHOxNLZ_o1dXukuUOnHUwnL_e-uqT1fWPVHvTq6AfHy14vRJXG_8c25vt5iPAkpWR_o1-x7XH09cujkn4CieD7MrJg44hUZf8wB2XfUxjfwfesRk4PaNLYChJsHvm9ytRBbdfYOTBEbk5H95Vtvb85HLJQBDHQlLMm1QVTUwZuhD52IUAlkLNBPkpFLew8haKoMz6PHzdINYprPYzFUA3TdHwbKBYtS6X8Eh-uvbXKJb4UNCQRDomTgbF4VfvaT1BiXgA388f6zUWN-Bw0tJnXPwB3HID-i8rcj8xM56emARAShLGjLRg3FxrCTRJEsZ9deYwFP-dShetMyg4J7FOcaAH85K4jeG32Hi4CovozoXixt2XqtlVn_ePniMYGTuTbvrfClSK9EBA_TD3mmU3g2tDRSmRJ0MTeg8nGBVq-rKzCpVhoiRMlYK74U-QGPm4rKPE4JJFYuq-NWeGCpdgSplPIEt2RhSk0nLOydHeHklo2-H684pVA0JOq89GivZbWDwUeMO-T_YphRUNASUXGrV85iv0FPNU4WiDMRmyyODAE3OtfXkVLrxQYRTtmvet_C55Jc7aZctsA2H3JQmNSLb7somwpzO7BvRYQCKMwg7zfhHlVB5yhA3SL92ymVhDQg6y_m0ar8v0evX9Q5TOha3GXsSTWwb43QfaP8zyyO9TNov1axIFSFojpwRpWO72_mG92nfGlLIt9E4BS6ztsM8036EBccafAurrobSGVGWTLAXnRwTIKF_Bt3Mvwjf0vAhaEdW7fNU3uPcdHTyOvsNiPHC5rNfshmde--z9oxc9QN3NUcVmqHnUTNwiYPodUhb-3CyLCLCpNOudCZHRrqoiGQXpqNgnmvniNP2z4ZQafaNry1XRplkkWZganBUdyyIqARLXvJLJ2gjpwuB4fiMZ-NgdGhIx_j-aH7YTZ-QeYjRfMdtwWz71joy3mNLTMxv1gfIk3LmqcmA-4TbTR7T2d_eApyZTbWIeQ8zOCAEmLYGF-6hLChlkzg3ItVAktskGQW1Q1Q0KwraoMkzFUNVYVv-61N_tNIPHzFlIep4d-0tRzjN3QKmmW3yoeM-nQ9q36t7BQ-VTq0gbP3-_9Dvn29TZo0yLE-BuMzphSebOIOnkumkgghwlQkGaWjiUFWRmcYjLLS88tzr1qFBKz4ZOvWfuGMiXoWuW8C3cF8cmamYX5LWhnAA2XpQ_AzT49JZu5QOnfL2InSzZ8cgFqEgEmbhZywdc-gfH2wAPGjsBjEPRDeZ2YMq932XYnNRYiZI_jgYcFGjSHFkcEX67b3ivGVXlijVbl5acInvwjuSGQkhXB8iuLcAoSL2T0VEsenRYMCQE75PLNL2pnk-H1wHk3yjv08sL3-Vc5JWE6upSJtGSjXhwNhhA6HtOUXn9LYarDy_xjEddw00l60YRJpK48U9jKqp9oY1doeOrNtDF3NprFJxsb7nS6xMsOIAoEJcmIrgIG1vXbfftXKODWis9sEfimxLO_Y4hea-ShO331Z7z9SOTzIbNnGdiVAzdi2WSVb1Bg2vecc_pIMoylUkfXt05i7-mJVUezZyZlFs9IhnWLH0ihntTWsBZeF0inLHa2LppQ-cJMXO73Td4rCqgPiQrXXln4zktDOGUmdClqM5-1dU_XCkD5FyY6OfWtfxZG238Dbyh2Qw5f_RVTldLlVA7fEJvxgMxXtWqTkSUDU1wNRlJ_XW_qjEbH7ibCHHj_SoL9hirgSW7JG0zidLSZC2FoLrM5HxUO6pKISr-hrlGt-lhZf0c0eP9DYoJbJqhbsJ8etAXhUzsHWJ4Oiss-6iXQB0NPreaFKC0cnERE1ivyEsyNG1iD9lFwTiIxZEWN2kAQcVhnlDXPj6YNRm-gLWKp0JIEtX2AKmAkPmOvtiiUM-Ug7hPtOajIZkT_I39eINvolkPYUtbBuNcf3OJbCfaqKbmja7nkDpsz2WA3AdpDQuGx_efwEZiz88Tpfr51uQ6gtstgmIijKckiGXd7wwqWOUd6vklcM2J8JrMRB4Q9Autsd07uMmRy8sr1CALXRcVfO-hOaD5VkoofK8hIb04QuhniFhM2Mr6NSxduI09ERpGgNCy9n7XZC0cD5QjQJlyxETHD_lrltDKAnJMb1o3fjLQFfFxxQAbHQU-i2e7lE_Kz1S60kUAMBHP57RSZmhMy23UeAxIxsG_OM6WeuHCXs9xraNCYQ942o1V2k1YsvY7103RXWh0txRgPBOKuk_JtbcgkqT_zQf2H7g_3Pdl90hHfdCyB7VOxaL37hxHU8TxLxUqeSGDuNCAmW23dTAnR7-ItCrxwqu7QEycvIbZf3igeIarqSguPnWc1lkX0yIZjdQYshJtJm86mR2NEKvu7krqaxDtkqLkDfN68lqVWUaT50DRjHDLUf0lIVmDHzzkzRoATsVARvPfAq7JeWuE98OP9i2RHfYxZGGTzH8oe5gIEZqMgbgFt2T_NK092IfhRNL8saUZtdq5JHYGhzJSA11Dl5t2TqZ7HqoWhkwSme1ptRBzrQQ79TFgR36ogoMQzs1jiGQdnRD7Xa57lf83enrpXtdLw9ziviIzseUCwad9CjG6eqatlwnHaw_neM9uJhN6qFurxJzEi0U2FSs6AigzIy1vf2PwCJwC9bOrC2HIbkpeka78fwm4VQhWpNu49JtJ2bvdZ81Ju-9_waUVP0n-gVr7zbOgKf2hoKUf1cG1cKiXfY1sYK0rkvwMJskzVbVGzP3RXn-W6brRCiQTiqNyjTv9ulMDDydd1DJk5cC_LNVreeo6FAC3WtDMfLNSdArZ9HA0L4uv33U2zP6qWawrkM15ebpk0WNxG0TVOYYxKMhFMiHnp_Eb7Oq1O5URlHhMoSk7XwpRRwWgMwn_Y63y38dlHrFSATyhj6jXD7nWPY9rj9WWy15CN9uTcQtgOO8NBWdu3loXbQxHClr87QNS9ZmShSeX06ppQP6upjZOzAsSevAQKjtjx2_Qt1WPF14-KL7m-H5GYpj5C6synt4_JBJ6en9ztbY1HTB-FkZ_LcCni-kBumjEHPHc0HnYthtkBHlOHnGrJqERpff2ZhXwaucz2yhrA-FlXu0JNMNWcfwBwV-bN8TnhLqS2grafj5drM-fa5fBJZ__u92O__zRSCqDyQD3y_KQWwqXVnzeDDBKMGXArnkjItF1-_d7bu8cspBbOY7gVb8vpoPkhjme_x3zksA67NYVUwCB4DXVrREnZjSZt8kV9zHvzvOtPyYVYNvPtYulrpGr89bCNzd1ryFhcNj-JmY58d_9ooZAFGNe9vIhyXtfjyG86-vlwmHrDMwReJdn16oJmKCIH5RVOR3geSbmn9GcUzw69_i6iSp8SpA2d2_upqcKbyGhZD8a7xlf8GLXyA-dxB15Usxnz8aeYj6Qmu-QpkDl7za6FcACcUpTR3pj-762jHUsLKqhNYZ559UPPaahdwWDHXmetmEyzLMQ2Bb3tan_2ScJ5LOelocnoUPWOuRydhgcHMg2ZEMUhR0TXxxdtweaet9pTUFT_CYky_8jEf_KarAYUq2R4Q8b4-cFWncn0oYBgXG_Hygf0bFKoGUK9Fgkdhb7vM7uG4BtjkAIx9Y6y40gvVPqND29mCEXj-6wXDokHtWSdTJHnNZLz9zuwewmxauXwpctb6hVIEGtnfaNqyrR2An1qLzBhZXP7HzX6U_Azdv61_4swEeUC_U_uqkB9KH4WS2fnD-OHR72TsNHYFa5Ml8yzLgzp2TiwlKJRVhCbalL1U_E1kTUUqvwgqEYCnIQgV8257yJNnsxHuyTwcPQ2uPGzQmsxuTmj3vxs0fioXL__wEx8L2TS2KvVnh_V-Cfosf2vp-DKSxFkR2ofEnEpf3QjLpQj2hKJoXSvEbPRWqK1NWYguVhyo85rNAwqMCPc5kZV7MWB3cpMB_Bsa2cTsyKdHkjZN9gWosKSbVA-r3q-fxUHF_ZRw_MY4_lFN05S244meK_C5edEDcAaEWEUsdiDp9F0dCzYFKGm7hQ5VxCjoQwa4hS3V-Kuykex72VCxwmWVOufXLoi0P44DJyuBQysDdka1B_hRQ_uK3NWv_54mxDnfxJC4rRoYvrDUMJJew8pmREsXjCrSbZa8Y_Bm-ZSYAVpfBS1EmBl75ITacf_LiDoVAvTRpZYmdbUffUCGYAyGE5HJBHdVGqfLbxYXxAqokCsc58L1nrmpg5ZZdFIcEeE-VWvNpuzDUHZvJrnRbxlWq-q7upm2bg7W9zmBqv-PllD_5wH4T_dnRs1fbM2ML_VSg7rSt3U9WfnF4DXEwWVTPcyb9m73QIoM1ZRQ_C0Of67gy0C4UdWSeXeYVauLJcS0P9F__e1fzYQo236CeszIimFpoRFOBKLa3PnZgdW_mIO3zwI8LDlljGGY2Ug94AHhGU-cyDYz7l08jAhbP4IZDWJwbA70GELL8ziAmQ-DfTlu_Eg7XZfpXCFCjOtEl7LYmQtjpBC8u1oHBSja5nNW_gx0rybxJ3Xo6RKLbORVipK46bd1Da-zqzER9RghgpvGQPiY35sF2eG6rtk49R5bdOEbL9lSjEhdpKNE2FHp_xl5Wm2QVvCjB2UL-Xp_rr1Uz3klVtBsnEbToI9CIzCiNN7nbUguSzsxaGxGHfqsS6D0l9Y4PsufJdPGjZKRQVnFfdUrtk__CR2lnFnMa_KlpbT2mc0KmGUsgdQ2kMU6pPd3J0isr1cqpVs_w6qZ7Wr0jiYSj13fMp-dcFo2mCSyzs0_CdRFAQnGYu8sMWDNOUfQSZeepZt2Wx_G2C2x9SANouCfdHsJmOJnOgYe7SlhRIda-nPUDTqQCdFk-nlz3RgGnKveWxstiT1dlvaGqrVLsg7FVKYI32nQ-SijrA9IO1bxwb65lkotSGNCBPvUbwwHWi9FPBS4L_7FbsAl34OmBlQFJ-Ez0yJxFCROp_VvYIckSLjU5E07Wdkehq3OjzzEUbIt39vTX_N4CHfKOCJWb7VZiJZoFwl3RDwYyXz_-4VEfEoYgsEXfaPdnBnxxFnV8l3xfULIPfzZL2qLQYiL_7Jj44mdTB0aJgCD5UgRygVNriiI9AzwZW8NUlFbmvOeSsYDhFmeuzQBNBtzga-MXtKNxedvjSqWwl4uYQ9UQintS8u4JsBn4efoq3MDQVaO1r2W-FVNE1W4ovv_dsPgxYmd-B8mfMpA1c1oX8TjlcOTRzI7fXrfehYKJQu8w6BmzVEd5HVAyAQgXExZ82nVVKxIxYQtNfnRul6IYwX_i8PqbkzDEe3Vdid-1Me5Pmv4SgepAX_Af8YnAMFGvQ41pSwIVMfkNPIcGSY6I11TkzGK6Y0eZvTKFG7Ft4je6K4F9yo-Ypkr_W8SAV7IvuUbgmxsHMlt712qTAqPUMR83R-nv3pCBXp4SyQrOmynj1E8EDVGsQK6BMyjsb-vipyy_e1BJXDo-DG-oBqbUFT4gP1ZPDBMRDEJTcEXQyVytIYa-Rktb7pp00Gv4FoOCwQocsfIYu59axE3TC7HNTltOJDILn_bG-zEhpkAzCpayv65DVYu4tl8GuBaU4etPDGthCm6f46TZzFDXT5282CmryNo8kgUwYfa5AEVBe1o1IyJnZrDVlDr048capKuw5wcLz30vpOYHb1qnaumQv5bZxaO-4yOnfu8c6Btp4TlJF_Ht6dlUchCceBeKDoDlfzyUqQu0TOTlQcFOmUpX83bs1THqmbzGYgw2kXwAGt-sv3ej7Q6enXzO9aCgt5JIH0csTTfv_b43DSpQw4xmHArj6U8WECZoSfzCP-qz-9gsZiEehTnghUb7qpgKZfJ-p41cvX4Yx4cNnEdE7awSuEllmYP_4xhmqBp8jm2UVud4-ZVVJPdmP2dyPP2FPo4-CoGxlRPItDhFMXNZ5LaqjZjZBalQGXFzw71lnb8u4fn2eLV-dtWZmTkJ7biokggj1Q6pioUsSg3lpmCAoHy0Jq6mG9htZr7fPs5uulIUJX3QzuyMPrETWPTPw7GXU6OgpM-_mHITMQeittdX-fS_59thIjcCUScGWj9M-ho85d4wemrvqLUBwjzNmpwv4OAggbbUukgHCq6jAToMZs8iWQ7i6CCtHanNX24ncUM9A1E1Z7V-69vYDFXjUV_3smzozF7eJTSq71huFQeC1q6Fi6KhVyeb7DOJ3821QhyyxXmMIXI9KseM4-dSUoYgtaySzv1pNTGGPNMzWL6PooSrbuS7yIQEGP0UQxvEnBo1CvBZ6RvKB3zZKUuMv2ooF30KNH6ZSRY9rizKZkGn2QGhIxLmQGQ4zhfs-FI8Yeh2wZNlN4VNmuVHqXNt5o2K9CIUsKQ2LM_hCTXbyN7vSFRBA8YrlKV3uQjkx3YD-22A78Zza4NIrilm-0l6RqRVOPjopYPZyWyRvhy5uHJmkyqY9R7-PsA6SLXWKt3yDdv0k1M1T7eujadzJRAkyku_6fH-IBhKEoVJPRjDRE3l0ZyMtLfki_hjEtY_GNdVvJp8-IOgeRdJBkcY4ULcSshZRk23qPtI8P8NivNHUh5_KkNmvWcwaArlA2Pyi1geUAXP3n_5hVkYe6xTR22Y6Aq5JLgO-qaqsGc6S-CQh0OQnPpg19kEVtECAiDyQeXGvGclEH0jUIn3A2HMkRm_RoecdjrCNlOUkZeI7vO4q0dMsx2_NcOBefYUfoUFzJlkCJbbO53C5JuAhnBDc3kbhTLfIoYNOS61g6TT5kFix-EtZ8SRS1J3_BoVx0K_ivu4s0SNI2JyB4Das-lssTYEzgOgtP6PRNYNhMZAYzQEe0mbXpbtjWN0qG8l2k9_zjo_2trnYxqdnJejmFbBj3NNRSW1c_6J4fZdRvbGOk4VbFro699SKK6FkZ8TomBkGy-OX5jDhm1BpLFujYKPCm0MoWugMrWRmbNmOA03IxQSfOv6Yz6RrLcIVV7TLU4vcNUMpA2qnFTbD-87ZZW0tgeWpkGq2ScoocAMimdwRrNNxzZeT7zEEUqLU7TfJkGIxT1WXroVKX14WtgRieAXMhHgVl4mo2-clh3Voa3gYG0iYttBlYB8YqRbf34aeObdEIsY_uVkVCDALAYMFc6YqMsjeqQGuGd44IUwqtY-qZA_M_nGQ9PIvrVFjCIGnYuBXbkwXihrUKppENP3H6uVA5OptdQGESDQYDXzqUpzqcEVVwkYGaTK6EoxtuWP86qErRdFuuYDFEKHtQcn0Apr9K0CxzLX0uhUBvxDT6Frwj1k1-KnwuG2EhMoDWqKDGSv2pMI3DLCVEihAIkuO9_zFWYkF8GxXKoYKK0d6_uPcjg_pRizkmyzCWbLA2hNz7Cgh7VaFP3AU_2eJPFwlLyA6gTfRqnNCSUc8qJOC8KTOpwUVOGsDGS1QV9VNhYEwGTE4RkxpjU1qSL7brIHgi0oOdJl5sbSTJilxomBKtPzPaW_NYJUIw34UNTurPawhmj9ouhVDAu74N5B0BaR_Pd0zcBwqWAC483TiTU1p6vxeuyzqOfr0lCcCTa-FnJfRUH45KaDJe6oy-6vpMKwbxba9wdeH5N5sT0FCBa8bVoEDZe5BrNNSeMQYcjxMB-LZJh_yYDzp6805ghBlfHMXhS7cpg5EO_lf6ROISFXatIwCyS9hT9Ffa_Rmvo56wqIuBgP0262BrMFtNPpulzLz7YuVcl7Q0XPup2b1ojs9mroj2N4KjHU7EAANFPtARXMY-2nWtxrK8DYBVs9l0-MDlBLAZuJOUpwP0CTKQsCmlKHIFKs34lnPuPPKyiLwIkIE_t302QAIRN-WmAmHfZox6vWrwOUrtXI0V0dRymcMKngmzmBdE4iPjjpcHgb_3FMaaHbSjTHhN7HHP7CKpUbmvqyp4RDlbC_XRVlnqy411-hNalqzVl8N-u6urd5afE88tCYG350yy6T3UfUHne51I4iJlumw7XBSRm54jBZ8xDqlVFuI3lL9wESHcIBKbZxvBUFwSPeb-9GRV0y19tkBcIw0CCBvBQRYUhCy3TkUG_MjmRK6gwu8rZzxIW7Or0fpHiHRB8TjZAWHJ_8Z8TKaoDO8Rl4EhvE47j0Bgs_9MLWRWtMdIIBOMBk9RPI4H6G-WOY_BMQnoK4B_sh9ck-mu12PDXuZHRLN5KR5QO51sjxyJtp5NHpI4rj02AQSpJ7K4E9DEtBrVy6dgHwb2Kq-lQyzw4BcKkAq3wnLmcL6LfBeT4f96T2b_BuRjJC4HAEocdd_-TxDOTexvKxRiEGUVlrYrBIEqkemMw5CShtxmUl4lqk1tTgnU9EsTNYIUmpHgqiFMOAAY1omSxVH89z4xDsNtQUXaWCW1qMS0hGnsVwlf9bjEImDKKME5Ax-IgfGVmAFJZwb_b5EmujGtw1itCpEXVJN1ENd60uIhghcJ2Cpv3koEZZKhXnEvZhQt9joXGk2zO0ROq-n0kHXnCsgQwn14PDVca9Klld00ZKWPnMhegb6E9Gj_rz_QvctqATNuQ0Pfmhn-7IInUP5mVGwGfKk-1AqlCOt7nnr_iJKArzgUS8nM63ALXuC2IcUY54Nv7TV2fYXrrdpAp96wf7_PFUE5_5Zfs1au2un5J4fT3FOyL19vPMNzsnB7VJjHoEs0nittnIBbyrvnafmBSZjzIaBTSRVjHgIKhGBeqFqqBAQKDmn5aL5WDRgbusJ5FoL55Cwk4RIvXqYdsWNN2LPDUL_F6dyt-qxN6CDtyyB7d0_HbQlAIAoIE3HzT13e15TjQL76X0kdXivJ5cy0WnCvtCtznncb9aZH64Hg2cO9bFOH8iehcOGeZqSGfELhyhevveAcvv9_9MNzXgjFr78b1lwOslIcrn3Lc8D3gDKTPaRouyM8Vgis_Umd1ntiqRuUi9UuohUwe6Z2tZUV0FrFa3GpTDzdcCUK5zxHF1diXIXoBVTaSYpBVt2v26A0I3_ZQHex4FRlCHD9GuRr1I2SH53Rm--yHtLQJ5FDCOs2jhM0F_PXqw2w_7iIJ0q7h3AZIRGeP5a7FZb-nINlP7A_IMmMlwRaJmLg6eHKeVriQDPTRmHXsgcw80s1JdOjSLXPImbmOE7lnOhrpdCcmbrgY_V3IfEmdrEqY0c2Lm_uYCf4S33yqQJXApo1R1Ge1eHmHs1kbNWHVDSGO9CENa5X_m1tTQIASCa-doBYxkzXNHmHjEK4fJAXe1xIL1uL0agoJjpdDO0ct-jBKhTQ4HB68QDxNya_02iDzbbzSWexj4fJcf9MdvZKkyk9VjgzfUcFnv-VvFYROLqHzodYtB8QG1Lrr_kaR1s9FdDa1kwU6dwe5b0LkM6F-nD3IPcmew__9PSWVAqt06Df92rBDsktyqsiLCgFdl6um4Dzs5Ueugr8vfSKmFR_PvxSyGsVq_QMR3galDsntSx6KDcw86Ovh421-hxPcK6i1LVG6C27vyJSKYv46Z07Jc4Vcm2nzkR_MICmU9CLStiPA635APSgayJlxOqT0nGwu5DIM6qlAHEwzyqxtz5XKdN_Wbwe9hj7FVU5dEkDnmwpVgHgfeoQRL0kpB90_WsZMJXu0U7Wje87Eg5NOPuqzBhXZuSJSDAV7VNxtgzhRDbxhxMQ5bzgl0L3Bc9p-GWgvHcUbzs9mMhm1jv02SFZDi2-2Z6TAFdaU7_kQmZ00lAQ1Uow5WhEfVMV_zzt2Q7qRV8OiUKSU211yT0BYCzSIbqRIkz36bSPVKhMSrR9BKQ8kmJwLTrr68r-xP6fL6NniN3fWGK1Ua7i6hrm00XdeUEMOyjFTGzRiyJ2acawm0rRCOXffJuTVR4A_vwlxjI5dMf8aoZ4X3kcEHF4H9uAz40h-43iK-TguN64Bpn6OOpDg8znvU_voYBZCshcIbi1ShLQlcY2u2vTWpTVpAcE2U5x-yuNY2nMw8ek_OaTNcveJwpGfAhU67EEV8AaGQfYL3IKikzrHHt99G56bNMnOgfQv2oq4pUNrTtC-XqIJ7DQXRhQGE4aOHbxzmPJAl7d5YeJ54ceCDuEHlQNAp_zz87mn0y4HPpfafmmNNIhMwh40230AxuROLs88SkVI_zgXZlRPCzaR4ofpk9WGPjA3X-o9CY9LubEbVhjRxdA2ZYgl4YLcpORbnKM6tPpZJ6U4OdBp_qLMnZymv59TaJkPE8lMCyEgwGIq4aO0x3kvUDb447VjKI-dlS9ENiwrNEah1I6EMyj_u96E0Mm_13tOBMZjKA_YpXty_oJLx5K610Vno7r5XFDCK6DGMZAlzFq4y683SIdLhA9BTdIqPXQQEUvKUJ0aU_P6HSXSe1LWgQUv9dvkuQAcZ2kJtquXUbmteyTBuZkaHDhEFZjMHATCaJmF5hQ2Y0Y47sQQNgeJKqWWI8kHVangob_fV6oMPhBcY89Wne6KVCKb8C9nb3b-ML5zXhB9Vuw9diFEsRSWiHeikF631IMuwfcNmKB1_NJwcBbl77dfC7yuk2cYJQBb98cZTMNhVA37GdSo8dijCVzZk2Nr6DkCvJCXBInZx73xRN-4BRyguX5dYRODAMw2CmOjYdcddrG9VFxdFM1u6PAfg24iwYYqS_duFhrwRAifrbaSa13P2F8OmN_--a3DyE6WL32MUIcm3I7n0v2fejF-wdzQGXbBU9i8wxDxO2jNVT1SMlJvY3MYUEGg4-Uo4sBz71e8hRgfzQmtx-Lggb3oNNepKtdPKl4J62UyiJzNtr8VOBNJSar6d-75CmvcxJFbSo0d3q2ng49L2Q_48xd7jt2_9zNt8ZOal6wV1JPRT7CsAXGUc-Jwte8YqPQkN8vN8q54Q0TZGzyo8HWLwEv0os6CnWlBmjl-H14Pt5cJt9ir1lPffiXRcVuLgXHgEh8J9RF4quvL1KtXWAFIFYRk-0rhl478IvPT0GIoV-h_Oric6xGzwytRHqpVKEHF7NKsDP8B-ac_uqJKo3Bj6rdWeJGAFTdlDvg-UQfDYwtdnfGAICsqFOQLmrvZJBYnTeTmahKPt5Ei6XMOF6-gOmAUTUb-uBcZRu6G7_RvQTsocV2Ag-AQxzf6zwEcHsd4RFCjByblOwOmHqkNmvlks_RUsk71GAqlCj4TbxsCRzLLQls72yDDQ2DQD8UoqJENbH4iL4t5O6nyO522w829xoFDbpSH3URvw6xNFEjt088aIR74kMDjbWDlp-WGAWkm7Wq1fnOlInyp8Kac2WG4vpbBiPdgnw08zzzW8t1oNPpPFb5RChfnrjHbRGjg4OtkK_0_7l4p9p-5EW7AEkshalMebx48y_XvkRpE5M4tzOji4DbU_FQvp-cq-flpAxt0-TVJ-TTgAOcH8PA14lmx-OGHh1RTw2UFYT-t421QKSrPisSzeX_EFkxhaRLgZqi3Tf8bmQaNYcNXott61k9KKsLcnyZr4sb2BIqkPVewJ54RCneEgieRpoRyhvWF0zQdiEPJGG3z2aR3SibmI9dD9_w5GAT0jgEJQzwwlwO9UP2NGIhx1AfUxMf5c7WvIj9FQ8CncKVBg9E0C2W6nGsOxaHVp-I0v3vOzxDhEI6laMu1Odz_6q4Ao43iXN383ZtdNDjWfbavcZUdvxhcRGj0pdp-QSrnSqf1OtfcTTK_0GbQa121t5WJNyH6B3InWtFfPJNNCCM8H2Fa78U3mHeoLnfS1LCT0bQVw3JMbe3ulGTlrSHMvsy-REw2dBexWi99hHML7ICNzji6Si-ncV-7ZeMLQ4aOhB0v4IB3xehPFmx4dVzc0cVruP5FrGe_2XmDTL5a9zD9gBG-_3cUVfzOHLW6smmsC-GTzwdOFTmj997m6aHoHlNAXAeINitNeQAAp7suDHhpxgcGytIFYDr_bvgJky8z6BnsSebuA03NOXv68O4PHxmQFEEO80Tm1Wp4KonKjzR5GkA8inozDBjZapicnZOm7JMZSA1uvSRuRoaFASlYX7IqViIyZaaHoSt26-MV8EXSx8HK4vMUxWkc4cJkuAdShFoNj4AY3lPealjPSbXX_Z1zKmVWCnXhZzMHSV2Nw90PMsfs-tqRy7E_jaSVx5HXeznO7f-HZCrbWZtq7USLO0DR4w2-c-EHlEdSqdSBq0LRsV-uF0r2CXyNR9AEYpki8Jd9IUUs1OwIqPPSd5GPtJve-p7VURrJLjvbDTac1sH38UXO7fm0yaFCi8OnLw252uTAHuDOL8WjghZiz-EA1zqNGsfzUu9DcDolVgULvySKxogCZbLWSjDT1tuoUnRGRHOpoZbvIe8NbGpGditujHdfp6oolTQ0LSY3xAPe38E3Nljmz8ku3RjCb72Ao322wihfQFEY6saMj1hBcLECIxIZSJndYQcwTl4gKssmRpkp8w-PDVtwST2UjLkg2g_XEL7qwItxL0uKp5VE6uVbEH2abseXb5QN7jfrKqZAx_oK7PbkX4w_2ZCBIPe0faBnT7FWT_bRu-ggjtWmTkz6G76hhY7_z3KvFNUwm8jmxTim1a-NnqxeTc8hpFDiD51xdbmCR1au-ryggK9VtoqdGZUFghLMAAVj18fySubfTI9oBxRimJS0y9uXP4cV50pTogZSK9Sg_ocPtccb2oQLcmQeBHO7Pz3qZ7LVmdpA5RUw0alUnEeHSBi_fbe6BBmJfl4o-5msOntVne_ZmFG1JayaQXaSSIZPbl0gx6Qk8iWoHJzuLTMdhQHtppuyo99RalEGQ8IR_Gk-ERSSEYdIL-kUoP-xYRla56T7jQ5oxvF6F0_URaJgDrLAfhDGdiPqFydJ9wu9QUbs51SeJaKs1WJAjbVEOp-_6DFwFXwf4aTs-dQ7Xa5olYEFySJ-KVMcqCft13vqY8ggQ-_c22jFHjT4purqcHJF0G2Z71_8DpdRHR4pnuDid9tyNtUIgwHKcwPQIwwPy0Zak5FktEhbQvHUwM7dS6IV_jfQ2e9a7-EC-Oc6cj741aM7crGOqxfROtDTJ7OhdM96nvd6_SwjcOcnt3Ywm4KO36TQkQO7Fv5nGvtcB9K2nSv6GlvM9e7adqLIm0TsqgafQLVQjAoRacYuOrYfRXOXIyPWQgUMPJ2WQCN6nFWHfK4EiDO3fSWcYfprtEQhoV3i4Z3TvlzZAjihqoBkZ9W8VS-FA0lSXQXnOHY13oqZh60LS0Q2bI7gPhtB-f8NAo5Yxwf1D72zLF5VO7mYfPEQsqp_iJBrV8ugFU5NTdOmBC9B556canE1ftqgNnTpYC4ukuzD3R4BfCu4L8mZuFBW5PEWd-a4VGU0E4cuh_tr9hEkPlas2YudzbcJ5tMJ2iXMTtUYwRuTXWu640BxiZNNsTwVY9mfU-Kb5zwt88QSDkUZdawz24T2SGWoUHjjLQriz3LSjA2KP-a3cOqWZbtXwOjKnnBbCGEezovZ-m_WraF5SMxBQLeJMQ8TDItjkUGp5lBbAx7GZ2HMrODT9pPgRZJwu4ZJewljKHFNS83ycimkbWCEMwHsqJ2KCztDMESDP8PVkQU2hUMM-nP2zxBTUsCt4QmzYIvizfJEZ2h9EI3rI8wszHRRH4ff-a8eg-XriBK5M0plfEh5n1E6j63F_Lu61Ygnl0PicXcHtXSDVj5_-8O5SjNzIH_MWZDBYUFagUswInJrNXj_y94d0QZlKtbW--zvRLzwjB3CtqQWctvEax5sZmvY3qS9jScQJncTQwnk8IIfRh1LiXemxlrKTCZUWB6uz_WZX_To0EWG5oIhv_VfPC7fPRKNVnHtjx1qcuGMuI-NJcwfQI207UYS0F9T_Ya8BCVW0F9dnatA-g2GY_WMzy17hD5QyL4_SMWwvMJjcIOxy-u75ukByNxnyKJ22nSCuuRJx9TSbrJTV8zAXQ1AEzpIg8YxmYMYkh4dPa1fckWqwDdB1qykQxmYR_ab2-XjYM5c6DX-K4--rSS_YRqpsTPq5TUoH4zAwmuWK7YTJfNZWHRLfJO7XC3Z8ntLbStr82hXK4OryZkAxStPT-bqE3uihS6qXeIbk7FxlrmVBwFiLN43DyELhuL_o17WNMv6jRyeJ-Q7IQ8vu5-l6tSjVwcYcukWlh0cMr3LbyrosgdWSZeI6J8m1KFawDcbBiDd2J5_CxzXP-Xgb1jG6-e48cTdoWADXmWJ3aD7phZgY-YIcJmVotJMOxXQ_lGzUbxJVLY_6Bc96wffzYm-AjdoVFTc9vCTWg_O6UO4kk343M6JreqToRsAG3jD8n5_YePMTtjyA5nkVoqJJmsr8ACljlV3L3hZx6FWxHS5HuwIXQJ3RNzFjCoRjgYhkBrk8KBKc_bZCo34c15PkfEpGTOuE5ZmPAbq-z0ymBvxTOyPoRyjUH2Z7N4t_V9l98oS8BkXqBZ44WjWaFThurUao_rKiBpNges3RjaPZblkMGfehR5k8Fx8bY8_iW52wDjqC2KnD4J-uLenzop9wq0JHjA9FvYQnAbPNkXKDpqzV1J4N9XRoT4y4h04pI5uqEYKnUwj-MSKgi_Fh-RHuLrkPJIUchCGHv6J6S-sQESNoVE9Ko6yk5K19Tp6ULbLyoifhjCWl4w6rGTId5ITsH4hJQfD3lg42JRqTB931mLcPmP4fr4r_E4A51maN9bw2QJVjtZPDIJP28NzUsnh7a311XGekFiKHu9EXA8FOa_osNDAFOUXIvB9v3jgUJkLMc3MyXh7A0_ik9dVx_baNiP3Y14QY46BYoiDq-CdWQ1LbD_vARo1f7YwhyM6YS5eUf9xeJ-OVdiqB2slsnVb0hvXuAiujuwQO5jd3S6yq4vPRvo6sWZJYmnqpQcCPiP3xrlpE0XPynOYGFJPXG3rFMLFS5QuTSzuvWz_BaFleCcbONDSS6tbDd0nMxO4Z4vBOnWYI9lw85rbfq5WmXFZmrkm_v0NW01qZHAZnTpwlQOgpkA5ycG1m4SBM5lw4JrfO6_ERZGzy9NG8zhbM8kEnYuGTdc_UZNfWPD_iJwQRzY2gAdI0btaNT5h1aKuZYGTNepjo6_R2um4EkkxYxjZ9vCO2Pe1THVOF91OuwV2YBNH1tgG31jpi-Ywt2B0dL11m2CloMSTJcAPttT4Le-POLD1ImEhL_U4eW_oMF5_LsoX2R03aC-EME8WJAAhECAPuQD3sEcQ7sYIk5fuoDks_MErM0BZT3IxM2rinkWTCF4g86qty91lcxn4lh2RCL9gJIDQ6-PA1KkNsbRuHEpN-tTC9S8qY8SNvHLWdx9mcoRDHfZ9Y6dLDHLixlgxhPd-TawTGuu5Rs43cp8rlIrhF8OUX03haUy5dW8sukRxyys33trDMdJSOVmed-eSMd59qfb079Im7JO-DAF-fxjSsT93tClVSoU2bDMtjWoEQF2ih32AgmLfcOO3Nfj4HBZLOFwwqNemkDPbzRFybvaLBgTSRc8Lvz32Oql-E2bfpR3cdpmTVUVjkmJFzAulrlgNDMeIUA1UTBTBZ2Yww3Kft0Xf7Dk4k_oXo5WPGoibqW5i_C3_3e59SOHafGHOyfuoKb4Tg0eNnhuUZaAMK_mKay6zD75OJzCTICfkb-uCgmo7YHGaQZ9ZP7ebM40pAO9-hJBPcpSGXJt1Z_dE2chkdZJJFZBPFKjlKekldUpr6CbWamnuidaHvPFsLzOZAFYwUgpUKtyStvQgtPnJCFryEUTy-nc88MKlkiKCA9buMZpKg-Gd1pOU5w9yKfEzg6rZA6QiekGIxGLKeDEIfDML7_74ugvZm9VCTr4wsXNmaVXsd2aR843-b64pNdcYh6KOYXBLRkViFtG8E4BnFlItNFl2ALsaWwZQqfnE4UNx-WJyQO3GliPy3x3X-hGLGU_-jj_Jet5wVDA5FmehljDsHGCE77DT7AL-x9_55unR17PMkRQEGGH27BuVGDBCxkVHGRz5u1wyM26nmpATQZgPlDZ9W-BxdPph2VQ7rFqQrBbOUMl2m8J8e3HOTsZ9HfEGHBqWtCElLkU0OIdD760zaNhNq9OHgLezKF8fAS47XONKjpJP-fgF5diP7atcceN2fdceVX_QDh9LFWIf77eZzgT19tnEC6RBYyICeC3s0IZdeYpUy_A6I1_leYgUpI6yFO_xyoopUBdj1-8xoQikAIy7iYf4yOqIjZcpNI4rfaNlzZaXFwdiAw78VSzE5R71hTun2sFjbQW4txiRacFLd5GwjbTr_LJXst7IiCccj0pmO8s0_AJuciBtuy5S5z-HrROZfWF0qhkGHGHOOF1khRC9a2_G7YJgoLTriNBd9Sky-DxgzIisSb9iVj_dKPR6BsN17QcjayWlHP7EomdGyZaLykcyER2Grq-7XG314tfGi_dw8yYCj81L9Ncsv53o3vJCoQ5EEB8jA-CJokZHwwMA9P751_AK5vVRZm-Kjemgthf9JqzT7fu40nSYWq0PAP5LgNEvJWfG6gGLRyGHQnuCS7Z6cgzDwQ8S5hO5PCvLDx0vsJwzJeii97HILgvnq150G2Aixo1UUWneez_RAZIhK-ek8QjND2zA5MS4K7QtXO8OnsnZOHLGExN5mx_8RwQ2HjOrnpwje-YfGfdF7a8YyCwj-yAdI3Mun2WwYc1gNScmAIhppWQMbx_tKhOPKUwcT0JSqmgoEPxBmpj-ZuZg3vKDQZ2i8i39bWRewkxVT_l0sgQGgP8aJCUrE7FUz8LsnkuxSFnW-yh2-J9QEpLfzMsFZqJpgYDlQjuoutbiqVzyk0mcMtQWfH6O1Zym9FoRVcdxCNgRYx1QMi99rktI3henxr731TUgogTRZWhHW1TcaK1RfUQhtIJhS_mgWYJYxwR38QihntG_67Pmgg9lotYFN_-Z1-SmioEgYQi-aZZZ_NfxYn_wQt8XpmK5JAMh0Byy3uUeBUEKPxYMG760Roo8lAtmT0N9PjXKt_7xEjd1S8OzNMBSKrgoLL0Jd-I2eXTxfa4XV3NgU-TLOFYq6oprvsRlzoJLVPBz3lCYRZ1xDxLGEDgUGvLvTrAvDg_S00htjs1eVwbL_F-odIzLLehMZ-vNfJh_uVvD4W58v3MgocuzoETT90N9aHPlfkdk4WGh-UCnje7nVn65thSShfuqPKSGFP79R3tet-E56Gacjs8WFX9MrD3-ZeTVcd8_0gkLGDqow05rthfyHhbJ4xYSxNS30LW-yxPY5xuvTFIVqJpmKOQMSMdYnuv_gRVvMsbnc0bijJu-RNhpslCwQ4wnpTkcCkkZYglzHc6Pt7K0pTo3pPzZv_ahq53jsO9PbSdtbNT_R1WOYtm9AsfDk-Tm_DcuaxH_ylWgbtCrsrdPmyguHY5DXb4Y_snqJiCsFUEmiRn0CA2nSRVd8T5ZB4gBgaNOHc1KSG-M4SbYUIuR__42-V8Ti-DYJ0MN3naeXZQYL58cVDuu-kglQFbSTMq-jlTOadI8PdYaqq9nv2XR-ixzYQb0oJq40p1zaK4_B0BX43ryPaglASaf3fWBRTd1BG0UxWWo_UW-FDc3BNkjwNgnrJd1fbF1PiJhQ3flUj6kSNNVJlWbiUvxQkOWapks-tFW6yPXFYRkylSZGuFzeNm2zDbRE_R7OKSu1Q7nkOiTN9ix8F6n5LW5ka2rht3Ar_oZdbpc4CjxanAmI7zbCxaX1e1lC6xnuuRyDKKYO2csSWJ7YWB_98nK2E5c1oqwZqm4HODzeJYjvJpp6mYVu2ee2wmExREeKPSHr6lKSVMtm36N4PG6hzjoM5N4o42_HKQBe_muPG0mjJ2RZua-45czHNKnm9p9eIdItXEjcJlNzyBtQ_oohIXlH5XBqn41VwsNVnKW67EBgGnJsbCH2At0ULN7IrYTcAO0w-BRm8EDjasKY8muVkVaQi-GoGmkEviUu_-ny9VtgNtzblow7PSqfY_zR_5UVo7M7VeA3PJDil1X3GoXzT3C-K3VIR4k54apX-2HBSkM7TXYyr47-Za_yzCdbJce51Xnhw2bkmIVstWYT5YdYtpBF6_My_MDinu8PbJ6tGTeKiavrkm5VRDenycGBC96IvKiJbAKfc15x-iBnS7a36duZrFXjYfQalF4ETFhxBXeC4doFzvmjdTFxoAHU4JYWQGwJe_M_K9BKWOyL8pGU-wFBnFfbMgsiVunteTVlcClNKI3qW8HIxOClBrjAEv2HoKIK066qDZi_2b5vEp-l_hzqrIvJqunETHboseF2X4xGem815uVfndCbPvSV_skVjw2x3YlIy5jAsZ10frlpSqLfmMz-ltNOvfQoKU_RxVwkGA8LBrgaocSdMdM3MNH5vJdee5y8v34kYwGa7v9eM8AkZ9_zaZJkIm0felnzaP-olZqMJcXRWc6LI4CR5-KnDM9DcziN_mzXGt3NvidErOfLQ2JLP39jqT0aghwDea-SCptwMAq7Y4JOQtGb2uxM46OezAJFlL2XI5P409n2WyYT9sxcMoWcobs06P_hokstH1NMxUNNluClVvBCUpF9X_WJ9gJD78obdxWhD6S7Q2Yu4LeyAgXrRpc2_I-5zTCMUpSxraAb6v3ECef9DngPimNpkHwjN9NGzff3oSYaOp46la3uxl8cOYErZr0J_ujU1jFxPWrFCLr4fsPuC9E8Oz5NaqGiK6VYDJUshla7bm9izdc_kuA39AFX_hqYJNaSbu9RFoijzT02tbgKUzxI94mlcZzULBzF6Mnrj-W7NokmOoqKOVhHAhoGC1tJbqtGS1PkmR1UfjDUknoj7OBPP_h7RqA-GyKeEZvaoJisCywBDrMWICyfrialqtJx4Rb-kCBytKAIPHV58KOe-Gw9NXWolu9Enc3cFcKl9d6yCXmTJSNNvX0i76RODCDpZMn8FgunGfavOak5fH4RBFtPVunl-uYN1MxGK8DsxXgOVZgv23dPpqeZEH0pNpRPL8Ut-Xqbydmt3sLqCZbrTdzH5S4HcZfWppOU2CkpC3O1I6WstIyqRlqYu4fNuuBfOzyKC768OnH824JhpGI0QtlHzjHf7h0EeEAeSsUnBBZ2xgkUNo7UmVzJWfaQsVgfzb6y0RMjrScYegkdIVWyRUUEpwS_SnOoiBBts0g5qeY8DIdDr1xtgL-mgttwMnJqEZd7NEKMyEEd1DDeFqQTox-1kGUG3qVjYely4RoAVL5ohOC8P7gydIPS8N8KjreyK9Yb33q41o7bLgdUiRK5kKeC2Sp9-0LnIUjtJWyMf4p6IH0_UssncgWwyqx0GOLyc_A3FuvP-qd_5QKtfAiNPl9JxWEslImZekIQ48iVPQAlHrbHeS_B0AVphf_yCuwUQMuAdO4qOdfZJ9chHCQTSbiP1UCCcmMLdd1oPfTwSYL55ujAwr0eZklJ_IdHprMVN2-MhCWer5Rqh_GWCFtjh2AjcqPn0a0QBS9W4cdzhUh3f53fwEqbfLx31JrKihzASznTjbFDoIVczkHk9DNnyOhd-Lrb3Sjwwg_NHWy3W6RHng3BtfDoEWXeijxC7y34xw9cPEH8UrSYP_2_DqPU4XOVGElNlnqJ95xRbGLebdNnu6XsPWFpaIjaB4sly-hBp204dCHVzPFjW9VpJ7Fg4w-yqj_-R_FQYa7L06JU8IqAuBqIhQuFaWWbGax_pEe4W1-AU6EkzITqkmBrSlSS_vtxeZM6GxvYEcQxITqHn6Q99vDJi6s01kwA_WGBTPoNDnAtUswzAj1X_iuX_UHO35UiHUzQKo4ZfCJli5agJefPhKHGJaf9SzDuc6AaprBhzMFJJBcVgzSM1DbwlW78yhMHak33EvHOFoDPX69KB_baGaEJpHDI_W5c_Hfyuzzk5ZW5rKbYAmA--_KHBCNLuFHzqmeCMjOuPSv4Md_3r77E4E9zLdHbCqUpz6A_XXw-r1KTGRmaC70_ZKBpUZnieg2hqmikYdAkBPhtZH5pU73kAKaARguUVGfRZh4XkPhbqvUELkB6QBHTSti5LTqCk_zbSdIVJMEITHFSb_HcXq1XqIc6T6dM-jP62ATk0Jeq_W1ovZn1kMCoqhpxiPWHDBMccckzSAjtX_YzwmuijDBQTWve1aro7sRjVzrwVRx-95atIY9lw7vc39h4ljT3ZUKJbxWlm_8uXv8KBbTXTs5uXSZd6r1IAt-fbE9a6pq-7Jl0J6bpMSykNHe6ypzTeFOzMuXtpqm2Nuis-rgneNXA9xh9hgoEGb6EhdWrskDG5ZRkKUzPUy_cy7I9zU1a9m2DsaJDQtHYRobgkheBS2JCQAzAlQkOu2vHRAYB3WO0BEeER5EcwgGdkklt6Ny0qrbttU20xONoWju1icwd4JOfkXnh5XI6pabk6VAAX4VdXw9A8p-STJBQUfQdGpKhzLhlV17-Wz2LX6GEc6wqfnBcGywh9jwJsTlrD6GhFnhVdufyWrHVLbCXN12gbC9Oxui4C_ApO6TnsrooFrwJ15Qrv-kJQ0lYAIsvNDBRxCrFe3wMLeDx3D7iyNbFkJM0JvhPMVSN6QZfFCTG2Zm22FDu54nWdrTM4GvvJCTstMMKp5LHw8SPSsJCzXnbzQ1lhgjnZgHvtyTqLckIlK5cKKqFy75JzU4Jcz-ffWpvqwX7LWHnOQa6-83mk29lUYmGcwirjAXZI6tT6jB67nqARyOkcFSHlTvwTlBVKRWbYyhlXIZN43dT5226QqBAHSQ_OpiuInslRLNa5fNk0KRYAC4hK7zIlJoO2kAu-A8WXL1rKa3QLc7yOp3NaIEKKY91JiDGuFHgwkya46JgFgI6jEgSIUkvIX5UioccTECbh3qO73MUVxFO89Bfx29GYvOENplfkwVRq4MJ2UO9JtjXj_ju0zly9j6R-ayC230Nwcuj3-NSR1eWyDsn8gd75klF8GE1Fh5YD6j-nPAvnkEfY6umvHF4c1ziimTjbzG77WWJG-YrAdQHf1XqjR_TZ7PhjH3ao2LVMC02ZJBWirAm9ZAhC1Rg6nuuDKUryJBhcyy3zriGsOzQXBMgJGJJERdwrXcb5Qe9RfksHtKzMKHFU1YK1g5IssfGg1OPmENKZDJEEuyFj-oJA5LuRLs0S6ujL0Qs-qQo6gxq73-36RRYY9IvyrwGR023IrMmqk8pxMd5ADsPfqqovcfstky-aFBnJTD-uqTPdx4SZ-DK2oqdpmnD2nr6IHbOyHObXPTmL3ToHr1LvyOXOIQWei1ALBgrCn_KhhpGVdgI0KBoYql-uPS-efdLhx66qtMwTBI4umm40btKPt099CQtX58Rg8UYZ6hMZ7CKptM27aPgQxq6dbY3t-jgogbuP_PV7TsEzEcqQ0uMsljmXC4gvoScKiX-DW07pqYmLxXruUbZ6l2BlNZOZBDdVXl6vCn8LReG6CbInqpiHL2fDezKFQVsP33gnisNAnPO4_ucvFwU0D_QWAv_Exwj1LMYP_CZ14hOqHKcfM0lYGy5_CkZlCwggldm78rJ1oDYJsetAmjoUDb7y4x3cXgaMxdAfBkxlPw_NtIlJdJBZYwJaLj5nM7CWBKkCdYuQN_6_xZ-9imm8kKESmR0Uh4V5JcQzM0AEsGjZed22tA0ASVlE-kXNGllK0IwKgDsyf_XsuBSjPgMFyw_aoLEtpt5y_Y4jT17VHz_yeqYtDl7YDkVQSSAao0VlYBEiiQ8yQWTz9tm-_r7LvcOyjc6VOt_NB1BpPHkiqYD5hHdPd5ZSAr7-aQZ0LS9-iIeNyc4skCCXr9OhTkiPMkVHQjJeOehFFb-FrSW1h4jFN8MMY4911nsjoYkEc1C40BP-uK6x6Gl1ZVwCADCq5hkZ7txohxYLDFAI5pfitvAJolHgGql1lEOFJ_Sht8AnMYWMsLQjSQvGrLnC1F-5VsdwpBVPcGMgv20uFYsGxpzHPwVCE_dQs0fvul4YAWpTPYaJzgERMQxBMBAU78tBrftfNEjaQHSQCSq_yrw-LW8F5YYhAXh9ZlKerRz_MhUS38TwOGpsFAk-18KiT66rPHpCRQkpU0cFKtewAgUQbUFwU8CQpdqmPle4o-9mmUez6AQlEn54QhEyo6pEYON751IMqeaDajkI22MYjSrDWIo8gSFP8eGbfxZLUsEfwdv458yAWsMTwh5aUn1pMB2YYyAVGDiXV-ic8jlz4yoJ4Hbphrvx-Yktaaqah21LpeCLBVoy0xrgBsVXlQ0AGu0Aw09PG0VrMvcZ8WUETyCQ5IDzy0ev9ez30dRzZcATz7GDEUEoPGdPJYEI5tD34H5-6k28_am_AFqzaf1O1Jy7_lSvtvtNicCPx1NT0amp2buFejOYxYRhe4hjvjYegfsr_ZWQ2TtJ_tpIpEQBXPg00_KLKeB7ZLPbfXa133wVh09mKRS_6nqBFGz6aMgCu_ao6mrG7OAiQp8wL88JNrZ-Zx2081rXbDqQTo-RoVWLwwsIUJaMQwz_mkLjhSE4kwbKolEqXGFkc8rHUzxxwnYWBVNQcwtQ3vAwrmqriRFOSOTNf1Fhg95VHjE7remTNDqxcmxvqvuMHedkN9EdldEs4PGSfNIf8W2i36GNMjLVGpHxZkNs74uuiMEKW73gJuUwPA948XJAyFyH7xemZ7PZptdU9XsAkYNk6C9hD3w92pqgxg92mnnhv7oxyVSo1vDZrTGXsA-voo9EqwLra366c8muiGqWw2JoeJdFhDSeQyfMwD3KgE1jthPet3NOHGbSjUqxj6P-RuOASCI3WIwihToXFqd7d8KFDUifBeKZIPf55pyXSZDIVxPOjch6ZwxeJtgT8yHHD_h26cI5iA1GRmjGzh31jfuE0UrE73Q9Pc-CrSFAHAirUpKkADdL6dzvmiu2xEVF45wtx7pGDKQ9dNdmm2X2qU7hdLh4HdWuFv-eABIPXHrrsWmWhA3kA5dTQgN1XY5I0ScQmDfXhWggYUXxIJDHJhAr0op2dRnSIptimr7ukczMa5ycs3Atsh3Lp1_E1sQTkmIEJ9DyH0Z4it5nV3DCAdyRv5Rv47-d0j1xi9I30RrDyPfFDd4hnQYFSbNWFFTESITR3us8D68xVl3jr5w4wbjC22CW1eCE6ravvqRgEHDheI0f05jo-v8gPHQJvcU6r_lOQKipLOzCktJsHGnkTsNnZfcAmtO6oD--EWWqvAJ1AZD538SqHMhFaMimw17qD3B87WZZTPT3vyDsQr03D3I-k6TkUT_jOpOJ_CkjTz7T8urmcNbo28wb1eav1PZEdnXq5VzSi0ZXkzXhjaUlNyrexGIf6bg83v8WHjX-VN-4n01_45pPJS8qpBX39knLT0nAwudIbkE013YJc33Z3vSOFIV4dKXgipHi_FURr2bD4V3nCK6GFf0CdrpvNWbL13IAQctZo2PC9_pxF1KdgLroe0KJ9ESkGegwartms6Z2yqlkAWBD0qrg1rkGjEtRPqvdRJRsg7K94HVYoRYgF_BT7DDTnFANpi6BAB8mZnnA_5MDB7sKZoygHa_Bbqe9-u7aaAujEGrvy27DvhziK8joJzgu158esarUkJnQiMWfDorykMsHuI51RjASGPNQselZUpc6n2q5RyWa_V2J5j-O7cQ0c25UxWaeF116_lU1ijO5LaleDcBPwWNmny_o2iWD-JXsYf3pkawU_p_H1y_zu8ELeyo_pjMooc-YebLpXaaIQR_5OWxBL0DCbiHzDn158IraIlSTn1VyuZuwbYneJNYYUcCokNhiGo0ilukeviQQdxAOChtPFoMbpAFKruOsI4sQfEAXX3HNrmzMCIWyNxV1lVk9wxHWX4szPW2o8qct-R9gwY4gtK8Lh4erl8JNocNBes1f_6eSGvmD5-NGlHHMYN00EKSrkeb9qQrUw6l1JMlNsGKLWYoaKgG4LrcO---AwHm9_i6YPBSGUxa4PzQQWJZvP0AvVE7ixN5gCmdsCVOKV4WVueW0k-QyQ7NVj_xM-6fyRvv3_gT9gTWK9yg4coUAHrGbdVpf__oyB1IFA5jY8RSFd8y10sOecGKx0_SSYywGc-YGDOoZcPuUn_F0yodTGeXDdgkSfFf-KNWCzULuE_QFFJbf7IhpCL4Zfh1N6vaJOCAgZ8ORGbitvmfqhc80RhFMdbJ6JYjSX1uFp00QrZ3zm9zN0WvbP7Vh8wHkZSHG4lO1HSP2MuhGW783JlzLZEqmlR58tDSgCGaNIl3SZ2BL2GFiGT6huu5pGGj6BQ3GknadRjx8DcKlRJimoqeG-u8Vl6piX6QhlfBwlxvbRzk0CFthjvETFB_7ksLgsU9CSmG8cVxXUWPbbS9ehmoBGpngM8dnEnu2AnZqeCoOTNTWOJEdCfsvc27IEGKJ8KDAt1yVmzw4LOoFdPJQDrIZrlA7vg_IGBKdoiRH_7GC5_3YyPg4y9XfCEUvY9Pmsc-fdH1oMjqVPpaSZ_XVYzvIY3LECZdlrKJi9rWdk8ODaRuJ1IRujOJ3ukiWbtJW-g74hraILS5rv9lfdqnZYb2b1_ZdQTxDnkOBHPMNYeR5cO-M8a1fO13eVNjeAxP3PRaCyPKFZf912gcjXjdXlFJPT9cuWrZf_jg05oecbncFQEq4dSOWmC06FVlHAETWl5KXjC6DeDimkwn887iQDImL4iCosfLh7P31B_zcsj6X4mHUfuyxBZvS0Al_5jox2yCSaogGlEyH-UewhqHMooaiExYERocB1X3y_fnN4C6wINDbXUPn13EQIJiqWHDDqZfG3vDsdL38tXiaCHHI-0wCgMrpJYfQ6bjw2BaY15myCf55aC4ZD6XvKICF0XIutU6qVZCh9_fiCDEs5uKw1lfzvFJfTzhvhqhOuJSHdHu7y6c4haEojMZ0c3MKVmnd8DPOSa-WVo4tawy777B8-4qJk-P-Oh-9IDwB4y3h6Crg5o7T4iaHSFPGGfJPiZVC-s62RoiSQgI-00VX-CjqqIweEcfsvrajUuWBSSh_-NxxXsoCKpHhtAkaSspzTB6lQEQYYIQtjINtT5TXucpwKupxPoio6L1TDwdcxF9NB58DrQhac5SeExXS3RKEYwNrpuiybhCjqiu5ajCvQdFiFPHi-CDy93aph89kwGjJSebEi2D8jEy0bU_0sf6CI-TyzxHz33YUXprb_DyjV4hvlAnhRL3Pijr3canTyidFGgpSIVhH6oKwsuG6TOUHmFEbOEZMDpI1C8ilnqPYaCb727NLoZfgh05qynQ3CwQaw5sWXuYeG_a6BYdXUTtFtUqlxuNkbdg3nJsL6kgHIJyNp2_bK44isZvUXtOw-ocwxHujkU5kFED1eZee3uEc4w4Kqck0m7KmyYSM3Ps3Icik0CgxlJVQlG6tHYW_Y0Vvi1_3RAeb6ZTuasrv1jR-19U6Hb45qppGZzznA8QnW7SuShcmos4VWdmeHx9Dk8EDOPwKbJdSAZX7-S5ZlScbuLKHTIkynZT5IBIoYMCxrGPVWLDLF2tusVFD7f_gLIVQWnjquuNgyArFrbg3m5HSx4OLKvTyLQk3qz9c66XiYCKJVWDdCKBtS6V-ZYCQB8lBiR2-wepvuMG8_hYI6NlrLC54mn4YSmCGzG9TFWzS3_0_vnJsNp0_O0XND6n1nSnBMiyh3zCxzN1FLhcr4ThcCxyiMWBC6QhnUtV4jINK_BSwPyE2HwOXJcBzUmyOBkwYXA4_4kFJuTw3PiGWhwxWZ7usliA3j6dyG4XDpAtlfI5IZDvNv1nuAw-sHlNysDgC2QF7XrraDolo2H3Ltobu4Mu0qxBeX6yOhn3mO9fYkZ5_vM1jg2EXy2i81G6EGzhgA7YLHadGpYTVYpmnrjY-QAoNlOOjYwfcSg-IDwJzcUSr2OhKqq1BW0a81D2xdTTXAoVtWOlB8AuUx3nBqGj9CKmsr49f7aaTh6ciT9Y_I4TO3xq3ObUY2yN8405jTfz8H2H7quNaGl2Db37Cd7IdCLSjivxKP4wCh7ulA8piTiqRtWXxuEZ8eC5R-0Q9Esofujfo5le_jYBjBN-aAhf7DIEyO7FUYcVc18KZ_q7gDucrmuD_Iqa3dqxCM9LhagBMHawEt6y0RzO6HJSChlltkGtKUAKlUTus9pRShQryrD9-hjRDESqhmzTicfD52EsZnK5TuiyqacsICRuVyG4EsTUcX8JWpmd7BQA1pQLdpUhYkLZqHxpG4PouF55o5nY-7cj4FnlNj2Fiw-grDKfY4tv3NQ3QCNS47PBYOZZT-IcRa3FumntVVOxa-rA0iCLPd8Hwl_moNnsHByamUAqFUB1izs7fswt9ZKPUEFjDL3NMNUGLEk9HavBHeqJgs09TvRSCKlNoRjmev4aPLG-LYIhKUUKXBI0WXXd5XaS6W3Xkb8SqohGiQxCpQ0hMKYhdwQ2O-Y61Tcw7OB28KuTd_55nRZCINGj_bzZMJA4-ZGlj5--BIntjSWE-I7Il1ERh4kW2VntNnAoEY-cR16bUSTRtMYm0RjkQRrC0yRRo2fQ-rTW9bYku6FdefWZgiJj7rHqtzmVlYh9Wjrtx2gmGuF7EiLnVnrLD4V8iF0Yb6hXSWSfw4ZMLeT-V3EhnMMFUjdWhNtM3R8I4aHtnA-voLzJVXyOEyrMNhcBFHcnYgtXqer7PGf_cd2Mamtw-DWTszzAT0ydMbbgHLLeMiZkOH7MpCrLl1t8-Dw-18895wZI9Jn7eW2-VXloxdIhI4p2my1ldCzax5LwcH59jHmVYxU0AVidUeVrK-T_O54yAX18qyRnssh8tSPqjA0c9n0KnqZhFj2iZznkUyjzzoYW7k_KZZ6cVCfzT1zFW47OY2UtoGrAlp8XzBTqQFRRdDXnZ4EwinyIKmt7eY76LxySSVsylM5K-1-7V1oOOxHJL3YgLmO0UD8Q4kM8n96n8U8jE4B_gDlvZvzZ97pp-oo2JCJyYKKOBkHzvTv4JI27aujp9pGcWlIyktqQeW2YnpI_CMbE-CieQ_cuuAC3MmhouWa_Q6lNoPljeadx21Mqw4KziHAkkgLcFCM0Tm6kOoNoQHkXD-V3x0F4QJu_usg11hr9zlXLcDJ9YbmLSKjHw8lfDLoLmbmPRb5fVr4s6Nk61JpZq6JpkVwadr-8iZnDfAkSVBJUbMRX3mKFUTd0hiLtScA_uDvVXOxG_7mVqWxP67Vh14BXQ_3U_8pQXrX9F5qboDjvLDFVIcEPs1wOdQxgy1C4YoX4L0ojiZd9B7OpHZHCYgMCkUS0b4DTstWWGsws3Z6JlPiFt6WusPVFmdPPmq21_zQxihvGZ8S43y_-kyLn7YBflbzNwCoEn22JA2N3GkrGCBbf32eoUq3DGKCZ2bnInqdXi_GKE8WtiJFT4NNFmIpRDj3muXB8x1_EL-E00ozCCN6BWptGBo-cvaV-ASplDfC9u5uuChiXPdb75EeBusiJLPcFlFJl-cxL02B2TWbEKYJDyDKCLxUao9BNszV0yP-PoTBGV62EdHWkogAq-HYtwucp76BQWC6hY_rQHMJeLI7L4MjzbQHrmgk6c6J20B1In85dYsEQAMIzpoJs0l72X8v0-gUKdQU-eMgk5bOlnbIG9t6B7bx2lWUSraQo5VIR-qKr1_aQZNfxWY-sX7zm59IZORGlP8UtCrswUl3FltLpjPpOQbQwgk2y5utCSWhAsddUrW_PYe-F5IpYyoK8nbiw1q6sNSb4Jtsi3V4kSJ5A_mF1rNqqkPh71M_BRpbTc_vLIRXR0CdpWJ686UeZxPWQPMj4CfwC6o8CnjLvCnYK3ZqE24NY74xCJJeWccsL9uN_4FmygcHHAyFEq11tgz2LgSPSpaXplayhsTzFqtP7lZtkgM9r8CxTiEbGLyLIBjp1M90Bdr-nDxqP0WZKJbPHEtRnamqRZyWKymdBwx4vz7fm3ZathBLZKKFOkMB41Rw0sxDewKObLgnE9CN-q_xiplGqnmawuvSZFzV8fY1fsF4x0qV9DQOvJcgosv1Ieeg_i-EjoVs90SNoOpyEgzJ6yd4h-R8F0ellzmcAnvSIhXXeQq8K8BtAsnxZ1hfRT8DlMd7ZGQ38kjYKZmXvF11_sB-wQEf3NAycRtJ34yXOA_jMwZ1dJhjGh6_nzbx-8lWv83TEZM4XQjAE6Z3z8T-BdPOkLQcwhfcHJri3oS5HGcONdGB2h8EIkxJj8NS_lqBIqV-tedb8ZAMAOHd0CuSb9_vNWvmR5aCAknOxvCKNzsYzhVPyg1pcFRkmW5nFrQIOE5-UJjvfGk9FX6TiSBW1FXZYMrFTsERQkO6Yyn-uVTfcRQkG8jhXCPp9ZWBnte5DNen2Y-yIkweWpCrj5wvReoM_M8Keur5qmh8epwabHnLXjNZJdOFQZwv5VxTkm-oqKUEu9AJocIW-Ug2xunwPIEKnflm5FUFOoyDQcwTPxaLazkA8qwSqT1VZgm3y3BHfuDP0lP9HKoY8OaiAHf-xoZsiwlSPEV4bmnhkgXiMn9bht6epFFyFnQ1oBbr_kgovs4NvmLm_rJVcbUW5SRuZOBphP82Q41KDAsDXToAf0kYDaKR17zW2C37yRRYVqToqO_zOIaO4kXAcQndJVkZdO7AtqQFWm-CYcbYk5XoS4LrxcfyCzc4Le5V45Ekkbjzb0o1Mgy-_Z_CzLs6QFWSJK_IC1Hys-sUPwXJV57Qt4-tyNVsMC_LVnYx0Ygo54CslU7Wy34YfKwX3ytZH2TunAzdkWZLBx4MW9TPL4AjSdnHct2UDZNI99k_IZCs-LGTA39SkNlQPVx3gojO31Gqs6_JQvNHOuo7-kJM6kDHdMjhWUrSPm-1vteldxB-FRCmnTTDtm864NitmUHjytTBPjX0yrZWuLoCwbs9YVjqjuV2F1lCRjxNfjfPk0D77i_ayw5HGoJ8eXqUEli_Kj9GxhdLbwEjRBdLfZqY2PeAJM7o9n2-47XkgEP2XYcnXoR4JlWRaQsXCnv_D_9a9YEjgAxulhiK2n0a1haWlIyw1XM6zjtdGE1FsgNpEA7hlbTJsc0s-sSXf7o8ixnVUYgL6EWopfKAYpqFYf2JGQvx53ZveNheFxZUuyf3UKY_orfTVZFdhvTEMIOxDaTsDRySVRfrNK1wO_A1gqtSSEnsdF0pbiS8r_L7qk97qbfVIIrd_Vi7s40eOVgX3dYgwRsu_XYkGh-dXv3FqQx7VAllkS8geVSXO6s35rsmtaBpmg8xFCiFWfnThOoo0jSlg94MtyZ64xVTL625itX_z_AH3hu8vfdmHsaf7aOV74tHV1NbZRPP3sU4_CeCVdpksvnjRbJLF2K9rsvNkRIydFNekaSdDW9w1jPG91P4S9-Oymt5nyCVVvkHwnG-0bq_gmYuCFn3W0q0L_Qb73svMMeKHPU3uxy2G6C8BL5SiG120uGm6pP9W2Y4hnj2aH3KqevdOm2tnHT9KeuL-yWBjuvyF2PubwQuc39V2dCfk_26gyxeCqv96bOu6G9r-j9PdJ2W3yRqkIFl9Dbi474ukLtcZ4y1jGzifZnNaGVVO0Q_fcpBa6pXbzYrqZ6U-wKNX7lsoF5X4o11GtFaKxTDF-SykV0lN7k-Eche755tC0JpRG6nDcrsD52q3IsJj9x1PgS1mkAPq65FLRCuvJmgYsAlXsY5k0bTsq7leThug52m-kpaPMnJ8_njfBrZG2lgluBwnATPlmlIC76qnCSdgHZXeupa144NpeqyyTMQ9lNkrqsm156D7NDT__bGI3ye6vtvD0_fCOmrFSSZkV565erA4gxWbpFZPpwTM7LyKNyjUYQaDsQ4HcNN-c38mu_8KP-o8v7Nwp-0iXOwgnIE0pJWVe6V7f9xyfJ_5DNcS6Gvt4sWsGWkTXHRPu8OS6Ys16iPhDLCBIZ7E_0jn9aroaDE5Fnd5cyudWcM68_xqxfyq_knM2BDxK0Q0iHWtONWo4PpZjWWmSPGeBxS5h8AYqC7VbaJZNqXt1ivlamtHGWke7QDu31OPS43za89O3myFUZiJcTSjG4XvZe29dHQ8vV5XF5G1VA_RU2Tm8VFiGcqn2tu3MuxPR9zEh-6aUSJqAcrspm92t3mJ4lAhoZPjeEYmSsgtu_3uZLdRieHmqPqp2tSOHS0aqgkf8Od9-ylgRUp-KBeEpy7ALNuQ6sq1anoNOAco9SxCIwC4NCmMW9gWIyLWSOprIaz84T5omCUKsyBBscEs7hdDWFIAjfFkc6U0U17d3GwVukU54NuhGlrOD2YsdRDzJ6wRkZ01GvUJmXcYg3tQTjnZNC44vdd6_RFLzGgYgh2tN8iQuqheVWbuRLkY23yqMFfYgkuGPhCi-FZbywA0jlw208p0RLasPu8tMoI4grnYOAAbKfI4yHw-XbFM8BzBWTU5pr2l0PZ5Uovq3xNB1yEYpomOuiwFqE4p7t3JZpGY75-Mz73AuW2MFrYGIfNaKLGvAAV4bH-J1PKpa2fInJHQYc3W6V-TdV_QYBY-DISWdXA6vm5dwEwk5aaj5wQMJLJG7wNYiprG6rwHGpCLaDvVVZVq9TxCE0pIzW2iupB8NstX3O754u2HTLUxRDjhg_w7iP-5sheHDuI8mKYyTlOdVLkBFFTCO7vRbwdyGtzGHGHRHl1wbpEeIuhq_qr_8dVoKsbjOmGd1OfbYnTRgiBYJxTOYU5BLOyPqmcXIDz_4YKZ3JIA1M3GE_neKJ1wk0Y6KYg5X0HcOlaTOLnMVJbqNDF1SmSW-PMPpaQvWWMdIVythK0V6QlfuXIeAfZV6T11A9ZC0cHW3HX0RhrrUeVO5y63RhleM07SczZydKSjlPblLRFy6GkRwQuSzvezuho6FXOaJcWAG91gYt3iZqiQ-jPI6DlgRLA8rPhoDIHEUYroxCRlJ9ckg4IVbXExq9-hL4-N_TCd1qh7wHlf7aXmejtfZtKwQtDzRCJywoyuzEK3DDuKWDfZmIdRw54vlgVjsX6350nFZfn00GNmWhZx6O6NgAlgGS_nstF6TwDMEPkleijyyrSXZIbiw2tI3yHelvDGDN-H-ZNDB8r9tSBrqI2-sJ0Yz7QUxkNo3Q1mTKfs3_EkeydSko7BKFwzcmU61unPP-c9lQuylygrDWjrV0iJpr5BRKk419SajyE4A99KVfLJHgJK4aWBIL0L8LGsjcXHDRLe0zDRMiMxf7qD-kcYIja9w_C-iO0mddWT9EP6ohUwb9YkTrcJU6lNlEmoEnrqzcF26IxCqV3OrzZYwfGE0O3AKSofT2t6aZ0XK7Y247Xi2lDVNAPOlAi49_Jt3KU4haHnB6WqSeztVuwQDWDAaq670ZW8-se3ftTjbC2Wn5PNxDL1CoSTGaY5N_h1U3dVtFmccbqvCs-gtcWsFsuzWaUF-kPZ2ADH7RG0_vrA86esxvHI0I8vE8-F_xpLSIq-g9-nuxAqVCQWMzyHwSU3jSeANMkYyLleToEMSkIfNEbUGA8zdqk8ZPMlWt129UQXyVFDsF5j-Ki7RUgn-1AlmRUB39SuzEU6LuyovpSpcEbwosjBkeo4PDydLh0-AuzvvVkONbNvaKl0aIDoWK5C1GTfKCq6-HVXGHDefgC8mhUXrRN2IaPCQi0DXdKlPBkkqfvuWRy9tLLElam9I7W9EXQDZtWCSu9Gz0scfYadO07dE1O1UC3QwoUvp-FkS4UY13IbQHhZDD8nd5T1meNaG2dP6ZUZzAvIEVSCgjzHK2DfYTBHdbD3res0qL48L6RCHyb83JVYl5pC3F7oWBzckxmXTYIuQ3wrWyJm48oRYZ6nQP56Hm00r4W77V-HhLH7R0kNR45TJfSMIGOJ8QSdYHSMnJA-Ch26zd85E6silLVCdHZzuHNOskKx_X9Tl0udtXKTbgoSj28KbHM3jSKd217FpeEEbtf7tAFl-GQf7li3NFicIGgqBz2tTmSNL0zM09uD03YWh7nFPfodliwEaNWmA_HOQRhppH93Qgu5DFFl9Q1jglYb-dZL9qltyMpmRby5fdTwKxw_GY4OnH0PmTKkzktn3dICGoppGyuaQqsb5N3PwsrK9CG8xTN68sUtIcFBp5lT3Zf4B452P8pAH4dGyqwJYZBUm2mn617RgQuc95Qmn_SEk0ypxZX_aw1fZeFKANmLD0XMMz8e8Ji9ULlu6laOObJwpJ_UaSbhSiLaNDFvr7z7tGwWDrlRyUrP0tl0U_JwT-GUGE9qN9x6ppfUUOck9LKjLXBLuYW6RmG8jdwMrVTPHfFZ_uvSN22aWETYekoAc4ZrFvQ5Z5VVsq3XO_fQHrXmN0K60tbB86jHzO0boryhwCUgrC0S2kSws62HjbNwh5GI9octdH-iK9RiXPCTWnTFOUouzPPTuPRZXB1SLrMlhTIxWQwgjgG81CJnKFqwi_6fpMEIfFCUlf44eX0WJv97SLi-q0Mww0iybEXWcB0-Cl9GzWIFXfELPLT_coLzd16RuSUrlgB0i1T0_sn-_lvVC6yz1RJPWY7nKiPBlvyDqMjp2MQrUsvw-nCkbtYEtRILINM1kDFR71cxXhkBhpuFbLgioFK5LmESek-4NJg8oNv2VfDnCywH1SP3KU4FHK-CY7GWP9HMJ5HCzeGl5utFThmurcdm8qQjY6TKv00fgiOwEu2KaJjd9CYIxp3Svd7FjA1o4XoPYM6sPS-97_RqAfgvB7Hrwr7fbsGxDMmjjSihMP1xPtEEePDLx7ZeWpCWdeW7KQKAuVQPORYrluVjVBNzaUJIP6NXN_ufl6SvNBrp46kjrDhtLx16VX57pjfpkRwOu_hEKZ63Ms2MakrqtC5LkWHPLsRWXhYHJLvYF3TI2ED6YevbH1F10q5DoGu6IDyRbfX0Pr211PfKQzDj4wdj9JGJpXdkDtjVTEPWVRPxIU7s79tcgYR5k-G_C1FawZM8FskXYI9e8YT6qNP-BXzcfwK6VmyRKNisFqfIh0v6pV1kz2RU8FHoAW8l8YwqLR-OyHtj6vSjbSS48CZoy1tI7c8aKOXpk3fA5_jD47iZXYPZXTSyjsHqcXIZ8k_bK4CD8p_KMurqCQQnB2gG3KPgXsC0n2mXIzFwYRbJA1jcn6fj2vMFSbZv97vgXvamMIOf64MJPFBlzk3HoH2x_ZqrOWSCyaoWzANQlsPVUvy6t-3vUQiBdHcXqF_w9yy9h2XNSt2VOahWIQ6KdmWXnpBqhqfksNFa8l4hTA182pIMAfS7Y6BCdW4zWyAb01TzGZMYV3fdYrjsJcq7SnAHupEImp3RwUqGfYsL9bPL-w5aOcGLzo2BRXzRI32tBg6YO4k41AS20l7-nwW9299H0RC0HEIRb9nsAS4IMjuoR0ubHQiPeM-8Ok28zuzJakVF55RFz06Ug-p1DQnoCKP--xxA6gm136aTme2Gpsiy6jJ_BBKFGyMEIhpnxia_G6lRZRDlrp68Lbk8rmgawBLgh5VEk2anSZsae9IaL2JYOVkeOFafQJDyUjjxTa0FoMqktmwsY-2LQIwvNmSHBfjTmIJ4emrBLvJkQj0EB1osY02PWdh58phA_H-B5lzBn-TqtNa70yYzj1GQK4CiMVdYKYBYU7uYRd4Z6-IJypC5ArOUv6abmLqsOAHA7wrc8LsxEcixmSCIn55KCWnvHQLRIMVX14ss406N87aE17hI-Tr-7BMHlfowaoIZRpKIITnUBrXonWO9BLa2jRJyfF4fKv2DRyTG6NhNzkXlHyJ124UzAxYgK1Wkufu0ijeuZxnRhZjMsgfEKyLmiiqffbE5JH-nXME7mgzRxPMwoFA25kzmZ83rz7BrUUIQ7eLic19_uyE9IjilRaEqbdWl-M3SxmGEhWCOm02KYxGW74di27YgCZfR6ke5YfKDNVb3p0YJieoCs3jfUrHl8NJ4Fn5_lye1XZG2-U5Idh8hs9NsnA6jto2l5RcmsEjH0chEfnA4uO4CpMfOyONgB7ahVU3a539qSCHi7qLAOul4Nmef-QO68VaZq_DlR9Gjsjc_DGOzjl_AMD9badgG0_x1i5I6pW8BupKEQj_NOumdMdqT8xqY34lsTGZcYLxZf8tLcwtW2NA85sHQeJUeJqNTSqor5WLfPAROrq3briQfsgLQA-dK2RM7gTxpo-KaDR2GM0hX4sIjED3lpRouTZ3HKowq2mwTNJ9q7nyFPqCUhosQLCz3YTogFeFflyuhrB9Oh5qLK9H0G61n7hNQfMQV9MlSEtvP7e7_ayQk_mmZEK5znmnR_wt7MmfDK6NoGQTYESyeGAS52N_3xvLd2m5UkI_L65ffB_W8yKxSGGFY4N6jFJVba1hEj4-W3s9kS5oGMBTwTdiLvXNjQsVnmGpLf2oGrVzOZyIzsA7z3TG4AqSUhDu4FQyZ_29DxRGyzMuMaPFI2295eYbu0nfJh9XWvpZvqCT_WhI9L5-7TWic3Bman-byw9MIZVNZbooY6k3Nwu3d17nDG1-PTnNIkD05l3fskKmwR0_Ia6mk6J3R_qKP68YCW2J4czAdbpXzGPn_LB8Z94NQBrBOoW2TtoAqUSDMG-huQjYPzewzn0L3WWgq194_RyF0CNDiT3-xQ6DF1S2ckbV8N1hukDrd51MKPOCSafew_byNNmDH-8G5SHDPvIAjUJGeNvpTEddvb2ADicsOsx8YImEJXVaOohqWLx-KQtCjtJxRTmpkI2K-7GPsPrwoPACUNlR69ef1wDh65Fm5foEOgOZktLkOHSHbTfMpOMMwqFwgYI_ruIWk0LurX0D7fwlaYaNyJYxoPna90h6vRPG3xhNlkPSUJwZq_njDjSk8tErIKQ7_bdKOMh9CS3DPrTwrshfEzeQB9_b5dr7qEjXCSnssjjzoXvkxy7OgHuuPZW13dvkqqKI3c9bihPV_Oc1x2nNC_GvX7RHJ7EYrt6YOWKbtoJu_QZ_nXOjK_i3ucpgdcUexEPN4I4Fmhd4aOaw5AANrJRsapSqgBJ29rRFFuERvqdicwaE2L5lx7_ZjX0xrg_EKFlvN0yBLGutf2r4LF-eC-SqKr5ugwko3KV2gCnQFEfMh5mFKDMRYY6f292G0gfoAvgQ9VBVKCUTFq_q2b458mSXPLDB9KbQQ2pTzbVjx-8EgW0lbKH_SpmrD4qsM7uvf3O02aH8PrlDZzl76YkAEaqn8w7pvbRfLDckx6otB4MkU7FJxZwBg-oS01QV_IssO-zSkLXLm47qh_s-tkVLdz43AeIImcoj99MM3697cxiQ9qAZJz7f8H-_NkVjuhxctGsBZzmxVDX870_KJre9HDwLlOF8CdGe-bwoK-yfyRrO1OxZKsQbRURMmroubnTMgYue6h8c0gMq3CF1eJ9lRZoxCxHFSAN5S6fsn44rtvMO7D_vV3Cc2yCYqfw6aEqLscDOsPgydz4trLPdAF9EnbR08uCJb3qV64kkMQ0dqb_VbAUIujKHTeb7KGuR8n3gMZ8ksQGAIHSkNIecmGVyoCo7IgncE_zCYdxrDbatAqNmVqMgJEkniVGONyoqXADUKmHOB4LhynTIYXIvTfRzOOK_ASIB2NaO8EN58RZ6fPLcUBcu6QM8452wbKgJqmrhacZq1L-wxbvLV7KHnpK0q2SddIEQ4604ZMYxFeevpDnw_FKbIyzujlbl9fg7juEf3lAcW8jWtTXNy24HPRS-qIh5Zrftiwnr6B50ntbpyol82nMB6efWuq27NaeKSzDTr2Zjki6GUtbzbqa12FERNAeOB5Wf1UfGq5NLOTrdZfl_MSqI8yhoCldy0L4mPcjSux3NhYmt1DE_tsSenGZdGh_5gbrth0lMdd7oN7wQmn51Ir8b9A0Xd5mEWrwWWxInFhSUvuYTUi4bYRA4L3tdB73lCoZxq2wSgiHToM1k5mlMcorhYgVGArl_b_lFvHhnYZXtdG2lXiWF7yVlCBcvym7fqLgMR89HXJCSa-bJ0d3VA_fNwMtce6HrZ9LZelOIBXWkhpLWN9KCUhAuTGIHaR0JwjWMZL9HDDoUTicNQ6w-TCALJV4bDCtd6L2mgsCq82utXmHM4NtvpRzJZA5oygdXlo2BVcZ_iPnpEVt29Ytfhfl-zomsj8fRR12RKfgpta6U7uRmBt_x6wL76j5aILcg26kNedCBAVIfs5qhXbaAnilhsw8HAOaiuq9aLKY3Yhhwps19epeyw5oirenpA_041nxxSeBxpIXxpOzazJMzPwwiAw_KTX4iuKpD2adc076_k2mdVRJSUR5veRw7f9vYRQWvlOziOLDiA54YKO6oJfav6mHQFCS6PnUjirm_ecq_X0MLFX7WR1m0Qt50lCJNDOzH8I_gTlD5hoBNg80sgUyZRDNU799FK1Z88qbVTFKP5xzjZM1E2miZt9PuzmTtqbnCu5kLqwAjM4dN1odX4Pdz5-mntXxf5wQAtUenJx1wuR1xkheWt0qymgv4zqoGdxcBRp1i3YfYYHSITQaGK1JKdp15IGGfBEqlhPnNj1RT8uFOIPF3QsiwE2YTa0R0fnk5Nxi31pSTG7NLsu8rgxMJC4kyx5ebWzh1ErDtcN3K_8Fhg7cQ-VVyKYgaiiOy-IHEpDSD4aAUFn-BcRjaj9oruNW2EWgZzOeideaVeX2BWI6f31ND-1q5te-nXvGqPr_p5XCmI_bPjzE0uOSR1JfkZ1pImQVeehaceljoykuAhBnn01kYstKbDm8q6tCCc12IeUj7LmQ-Ztaqit6bX4nE5qSovI-QXIwYSJLu9JmijAZfEBKIoLqtOvs2I2G-PyW9h1rGdhMslB1mcOPpNbTDVkd8DstO7HR-XjhG0tUvRYDVoMD43fb31zX4FdJvr-LSO8a-G_s7BWKSZuRipFoMfff_IYnWvxdRNqnuLIcZcjrOFl1agrR0j7nCmdSb-cBsG5N9EcAstrQoeZvtrusnuztFjWa4RTzu1XfJI9rbH4q67iGX1z2d_viqW6ITYNj6Z-DG3N-sUXNexf6Kg0pYkkzrHW-LQSipfz6dlIa_7haAC_4vgRKnEc5tk5Zx1DCsZwei7tQ9moIeeMhgTN4vUu4jLpNP_Cm59c4s9R-puekj7cuJ2IWP4F1Z2lr2C4JqeoEr7qouCbTB0FJ2jp3WPz-4v4haDkqkB0pjxQMxrCYns0nPLWKQbA7-LOODE6XIIlEZB2jcTCJ10Bt95-N1Gxu0uLGGtLHpeLS0Ic23uhXLUc2FnyKySdIIpcvET0KdnP6RGtGQeDKYAl5f-dfr7rtrUWeIesy0CWcfnQZOKJwhRdPVfgz7rjcLZWo8jWOeoX9HpZV1mlYA7Wl9Nn0TpaAMMZHX9EZ-cOnLD_1iQM8tZhvTnTcwmwT73zlT5irK1rBZi29Digb2fVH-gkdISh5xC5MOPyM94YyX2CSq5l3O1SSONsf44Fm62jYdL0rOzUbtX9iGKkL3-UnvLPPfe62yoK1JJP1QrJieyS9JfB9KxRs7eIJhNNGYFQjq4k5ULO5g6PV_044Zx-LRmv5BH_J-Vv8oJ84vpknqKguc23fVXoiamI7rp6XgpyMNwSFxrI6TxXNsYduWkSExeWLAqNFE8tLZDcBckEUd8yTbfaDOAHCLHxCtHH5Ts-XCuWormDTCFEg61FZPojKCOnVGAutyxaxMLs7jd_O0maEnOI_cxl5bh4NSS3UpOYbk6sCUORI7mxxs5lwzDrvmDlomSUCxUQ1dNq7EQgNOk5sDeTh7yYpr0WGYrzgIbukrLGDsyx6ep2PnjYoftj9sBOhxC3l4hw5JYF_n2fVQeX5AKqWZs6DlBBn2tUX_pk5rWGpPMXcrbg8YDnsFk2kIILfyc0Bp1Hq41c6ZFMc0KGZb7S-Jj66S4DYffqjNYLR0lMRFeGyDgtKpk8OFxpQMr4pa5h3heYEwngQao-8EdlcjwBrTZyurW_H-N5-TGV8iK5htqspgs8IIXJsqpBDTgqRKDojfHsvE0F0THJs5PxoB1U9OgipqYyXAnTxV5Ci9DqH73srJE9vxQ4vcld2PAe6eh-2fnr59CCig4KiOE9tuMvHIdLL5FD8GoxKnrWyoTss_XQYgxAV3MunbRQc-65kuMItTyi7Vr9KzF6eG93fxmzGWl4s_b6bC4WR8ZWBeHXLkPKcL9XxRfvwSkSBCE29ToEpoWXlU6loRfyectSzgl-THgSMjwamZaxovjmEz_ABsHEPD5FgUV0L5OaPpZUy4-K_Yr_CyvrGAGCtXRsMNvrFJW4wbZNmsH81jSeWcPboUzyH_giTc2NscnvdLieBvusBd6b_ypBjydBugmEfS4ESYD2bmn0fpqTfzRCoMtKJE92sIBw9AN3mBANHA7DYdgosblYToyr1GPHgvym7pAwfOUQjjiSt6StSkxJ7JPVUGI3SVhZ6_3Dv05Q2GK91Eyh3ay5fgd501DIfmLBzEeugDgEGk_jvAhYzH_QEbq404fli2GyWL8zvqaAWd4f2CN5GGUtKy7MUO_uGZ2ca0zQIXqAGq1cfiIVLvU3mxwWxFSD24taXMusP_bFvlsxpOVVJ9_afFT8k7l7sqcRvLyzvV8CNVvRMKEdzQzPrmokCrHnXiosSQePRyrN5f7eV2kk3UE7nRWU6el8AxYsROmiUirWkm8y2g9UF1njBUXukyc1ko2-9Br3MZlMRwKy2UFfpaxwggkZgk7NiRd08j7T2kFMRxDtc0uP31RylLM_JJnmtD7NiUpFI5w7ZPpz34DNprjFNJnGhbDoMcHpqxM6GySC9EkMltm31B6fIN0grO2mzbPyDvU2z6tLjHYXwF4POvSFehDYPvUgLPxgxgvMDQosV8w0Qax5_vOq2hQU08SuGQNwM62Zyn97iJHAFz6pXTIAkp9ZT51BecSm-LE8UKPOR7ulIsaATwjztcCD6P3R8KJTorxoWmzZcKYrp3oVXrJlNZZ3A8SUGwiixJ9SsfmR4x9f2nkmh7uATSqPzY6QnGJsd-F7agKskvsaGCdkO-0WY9vZK9QY-dF8eFVGU33QZNeVyJ-GS4DFcIEhPflN1YBqZhvZJ43OkQB3Aqshvdj7mGX4C6drQEL07J1oYbgxNH-abM0P4eaoZ5kyRr6eWGtyPw8BWwLrAZYRbJEZwvmsNpNfrK1YVIlUKsnmdu5weOLV59VQCIWwXbG3lZmUGtjeqnKX3PAxDwbvqOEDR5O4D8UaqWVOwA_LefPRybEn0q3B-bcway-a83LMtDBhN8ygh6irr3pElu1b38JD_6XEpt1PVsJD9Yx_MazVDyEwJ5PmUa18YsgcnCSIZu_Q3KUW5d_8gkgh1Ol3OWo_ebYYkFyNZk_pvbRqUEs0gEDAADVEQWSvgfFSUkw33j3U7N6-uWHLZF2UybmSRLNI9q6kYUTGVrgsqCxxSrLbMtzt_5Uvy0_df2RJz-l3JYqpeEVWU8QiHICMfWo3ehVyUnBYy6T1SnPX7zl4Jf-6Cyjk-3P6b3t1sVagmzpHk9hY2oAY6HrBLnqp3__mbNMhcUwVsKWIm6NKj-S17h3N-aKHbDzoPXD_LywJtUJJukhIaHutfWSn4PST-mcm-6y6ZQFWwL4bL3QyNILI_1E0Z9j2jLWoyQHgZDuwOOmBrM5hx_-goTdC_ItwAz8UyLqS5cW7J4hFKFB-q3SHLEj2RcOoKxkbLyCAgvVviyOwHnH7GAxwL7V-FGrWnBkgLWLnAV53MI5MEngPOczqp9Y0xjVUtVwUH644_2apr6JRERKBmCVnnrRFQN5v9YfrTu2PW8-B-YRnOLnpGj7WutbfnLEdCNWkNk-amBPcRjYKCFfhLGeZfcBM5aOYB96VBhAKChgSBo21EIY6mac6KFqjKSydil_TW0JaGNgsbc9CyI19vkJDSLV1NayQjF11H4WtsUYA-IsmwVIdmIlkImowEC4rxqzxshkAWEk6g2_L0qy163x1pikKJ2QYSFauR2ZvnyHPt3RG-2kPmcQ5NLf1kODVq83SQR8tgOdy2FFU4h1bJA0OHGtAw7clDMDh1Q8zVHdkV49VBSkljuQc84_9P2kIFD8zM2sU3AOhEJUi6i5v0QKKFZnlAd2wl-arDTFUdzEt3A3FNAkgBAY8h5OKJ0jIPPQB-kCwegCBpjZO2qLGLB3nG9hqdE6v_5M6Hb8z9g498ABg3xp2X4_65OGhbSeqpyUWMhuIEXk0zzxXADhC8F77dfFiiHEbxviYxYRsKtnBqvvGIULS3TffygrEhAVCs2xNOtn9HhD-BuDNcYZeX7bYKi2vfFBAZXN3AXnZGsfC8Pg4pqBPHb6zs--C6IC9HxDB0aEsGEB7CpITm1sCdzwIU2Fotd6y7ZxT6ocZRRREN4jGFoLljG-bRcx_HLzYfa-bwpgPuZJsAFS5xaEv8HhNCS7jF13CJ8kSFOl9VQDpk184v8g_y0NH5LQNnzFoXRmJOyv7HaoZ0y2uZN7pOdmV_Uft1lVrv9E9hj14vth_h_Hi0_1hBn9rWoGl7ea9gSC6GwwdtqAzCzrrOzgolEZUTs0PUp8xJFBQXfmjS9uP5kJJ6UgKlyEHHJY6ic5fL5E3gNpHG09mWuW7lKRcHayzQjyOvyiS6sn8dB5teC_PaSHjryQ8Alav77H2VjGZbWCUMMelmMWNpVN5MhyV6QDuyxBsgHniVxIh_35Zg-gU28eH-QobTNjJPJgKv7m5uCjvsGrW84C4Y45LUibmfFJ8yLOSPcOU2voPCdBLbt6R4nzAP52uXRQw_gWE4JCLFmM12UwhsIK4y1W7TX6eUKXZYImkDVcVa0sknVlhInO5BCted1RwXNg1sUHgxnpJctYWQRYhg5D6y8wvuNN7q2MAB3hBKWHz5bmWT1P8GddJ-X9zBDO0WmjVL0MCa1aHxcgZ7la7IjvOSnFZnhApjPyXVQT94v7niHXKHqx_0FuAByEtaK5Qgi4naCeXKL4vapCAuSDGY9yWQlRiEcfjCX1Fn8QCD6TwC1JIhU8Xfx3a7hEIVPuq5LhFtnJ06R_Y3juUaO1FH2GXvJvheiA6mv9LngJCj2rpKhjjUYPO95ZCAeL44YmeJzOKQ4BP21f0UG4B88-Bsn0EARAUO-OYXK9B0AovpJtUXvJfuWpB2phWE1tTVAWRCrojT4OAqYxNV7kZ3acAW-ZZq1j_baabJCwvl9wrXr1yuoa-ypyUUpKqBhhQyEXsrjHpTEEo1nunrFDEWwFyBBadK-0DQ60KhXSEH_-mxZdVenK_kC_TQCb30LhIQtcT82A-_0oxvimBrK3BJ0iBEzD-I48XL1MgQC92eWAop31j9r0UMyscyGnDuTITQ-pE8ksGvIRaudLsM9XtyliZXBcVQiSQH88Z6xL0PJ6-VrOrYR0uCGzEO4VtVDU6M5vtpAuOTVkNM03OU_oqncESwja3s5i4zQQpvxCKor6ceBaQ8UUI-rEIreCCXvTNUVITa969_kR6jBWWZfevCLvCubi5Rbah8CMa1xWbpDFrABUJ_ukDue3KrmHyKXiZ-E3qvTnpN9qqUWZlnbbbefCqP3qmo-53T-AUDe3X6XioAWV1LiDr7nHcM7qlTWPWufDpS7OmCnGuY4d6ECO91k8XgoeHmeNMUIp4CcNWc3cU3h0sT4yn6xOj4lqJion0fmkJcgyRw5eEPm2prtJkfecQ3rvKSy5QUv9vjCm7UlGjGXpCkMw_mnlug2MrEWMFGZJ3VIBwdVb6Z6eQ8l9AAmJo3Ehm3P7DmuJM5FzlQFzx8R02XRURNBnfm_Yz11Z7MK-4t2klQRR8umw6Ombs7-Yl9VSoQIjmtQdiLQWcjKyEYhCVNJM6roKit0ZgjJ11YL3jbd69BzIjZWqvwxpR3lfjXb4lRFkZDS51a-Gz6sYmD5Ot6c1Wy91XfpKDM6MH-Ne_Wa0ZVmv3ARWoKlHxPquIVZhbR6IHtR0y5TQK0MClLljPNO00wvJh-O5WHO3i7aeWb9l-k8VonzCFWKnx9JUyRGVHGy9E41W_gdXwDB1uEe-YQsTmt64XxhHfcwAa6nii2PGXpR16q0atOYQlyUjlFZE_nhq-wNd2XXQLNMm_6J75MHUeSoOr4Er-Xi3ELhGUuS87kDftgoghjUiSXm8FNqH6F1BU1xkOAK56AjL3Tw4XXcLNRcX2Ot5_RdSJ1UsuJmfHogykZ8HtbRyNSHcasQHLV4dJu039t5AqGGukl7SESc5V3DyIso9p4t_onRKV40ZocweMGA4xC5rqQ31iFD1u8VGsacNjLH7OEZSnEdtZ26Uao5IxkhTA1R_SUxJ-GUA9dDdFpR-4tUkOVfs0UQQnTIFeuCc3teUx5pd4GNCHfHh2SJRUQlq3YkGpbumZmZULlztXCt7-LfVM8g_1Y19fsjWp2UcWkMFd6tqoC-4FwY6IEGsLzEaIfJ--Az2Jbtp7Mb4gIrOEGbo-cZ3cygeP8m3-lnqfpnVOdQ2DoU53-CO98J4up-_hfbvdNhGIHRLgYd_WAU8fSXM5tmq-M4SR4dHQGznCX1vSUxO1GAGhJG-HIBZXSTwVY0x7x2-SNFvKaYTIORPNkzackhfGARNo9NLowem-XItWrrJWPjRbQS1EHCTh6qMCfCoQugCVQmOUjmhWJstQRWwH4n18QUC_Ag0WH_EqXdV3GRSqa0C7qK8iaMgEdejSvg7oZMk2MECBRoMdvOVoGBH3YOi_5ARdikGp6tkxSfqc2yToB_hOrAgwjAFMAl7YCj9lFbcj5SaGBPXU_pvXTJQdehECwF60Mqq9lK9h1HzdYrY36cAdLXjbHpawbfbUef8k8mZsAZ7C4sOqvTCSDNzQ0idbBzWjicHSWl7tFwFtVVU0UW8lyjpESCrrCvzowovSeQYZ9RaaixknRcibJ1CZkBJafF99B_440YZ7ZaGYqW67Q9iWEUn9XwNergJjwqj5WqTWwd0mC3LPPgDXeXddTnJZrH0XQoTjxIv9sj26VH73V3Ojxt0kjka63rxT-STFnnsLyyZBUvLcSUKJoUVN4zsTRoQmTVwg2kKwfiCHf_iwwn_ykG0phgleXcpWsNIvS3HBgiEe58sGSsUnwCMbTBaEjuX1_0xmn8EfcPJhQangJ3LRYrSyOQqJfoVCM81su5zq8YdXxrCRweDHYpB8maTUd52g6gIn70Xq4KNS5AgXOAYSB06wfwqzpK2iflSvcr9t1YoPBWwaDXGNgvqWWT063QhAwoybaaQDjNNMp83DPxvf3MAr5di6kYvPYXTr18J-Z_YG-sD41f6SnomnxMAtT1zKrprfbv7cC0QGEncfYqILygH1DPReeSplEFesYgFGb2bTa1PaZm9b80mGEOD7EnHn8cIevXetbjpCCMFYQE96vVXdgXm0EELKfU8vZnEUAdiTkJbbPcEtzP7rCgWcxacEsv1qt0m-rFPv_0n7PVwE607dYVSyxBvu8SI_LjXx_gc0D45N5cgW5v9AoRVw47sARN7u0_h4gKIYilwpBvkuhAY4gqmY45LxkhyVAtih1Dje-L9-9XGMEixisfqQoOgttci0N7d1ycTFu12_GSPKBg38HfiaXTUFyRo7fLYIYNfa1YUjD1PaVGJzbruCSvB_yt-Qo5Rc_SEsO-GICQhpeth1FyPI5h8ExyjFFWOIKYznyajOtzMDMQh32U6t4iuTjas-qnN1yv2y5iBmWLQy5G3WgIpM3HVvfNnBGmLeLv2WuvRLMOuGWoLxz52UuFKjEpq34tokPMemzXIrZGeSgQ7gvL_lflXhGwZbh3WG9_Tncj0d-rJ7Q3tY2VN_7mrb3Wlj1aJ0Ze325RC1SicsOmrPODBo3TYMuA_Xee-84LkFa8HWN6x8mldYBRKp3gyhldnNMN9Q0s3QOlXCQpwruDtwFvkw9YA_kfa8FISlb9BSPvV25v0URVrp_M_RB9hiod06TTNNIb5AGiiVDIWWvimPpx6wYjk3bQNp0o8JwcxZDndyhJJf5q61Qz-Y710eCFt2dWozI6TmHEtGDLrSHUCjjLWpunxGsNVQeFJTJGSe9wXmSbwbrJTIfoF8aFndhP5UNIiDwmLBMYOlgljGdkM2NjLwUUzE7bU2m-5WXGdYJSg46jhXjg6JezxPV04o7aXJ7YACoHQZbEqi2yj6wbrWSQJfKrm3XmlWld6GTfe4aPj9Mfy89f2zTOscRpLWEDxuF7uZC0xyurB9jysKWKdIqj5AoUwMHbHn9DWP0FBmHneBrQr1zmy44pGsM_CIFeMq7t9xNA63TLpQ-SUL9VUxgNL0vY8IOAhloY3tNzjwa6G5iPNmIAo4YNL8wN2i8-aLcaxg10Ek2TQARqLxhbYZ86MMdaco80d54RHxnlr1Yi_jVINi_OfvZLJwID3q_YLLtWb83hYMh76FDedBGBePIqG0ouRH1HGuXdaiwpgbc6_ss0RplDJ4-uDicJMhnS0B90yHZPe3rsUxeAPQCFkIjUffdJBrZshsTHHXmnrYigRfnx7Y0LLIBNlkFyMDSHxG-CBnuK3Pl0--Etzw1kRlRa11OjbfrUL-DxL79KSMnnOo_EHq_RL13gakzOgU-8VxaiqlBYmiyZ-Vye5e8BDMCSC5SGD7B61HqINMjvKVkLo3Zm7UZzvNQfwHR2_ziPjMe_GjS-H5m2h0FLdhxg2L9m3KbAHMPuhQXgb_LI2SSlWqMtOVQAtVnCvuOyNoorwrLbgMhGfNBp3yyr7VT5ytnp3pzUBl1AxCMVtYdACum5ycBY83FJGK8rVYnH2ScwfQnfI437a1C7WLqp95trdK1Cy9a4RIvnDToEz8fcUYgp-dvTqzxXqBqlojjpXP9ff-bOdmyHLAL8PpF3rsum31MNCDzZ4YxXWQgICB15KtjOCRF2S7yA_Ks4EoDeRvlx2B0pqqiIr0BHx2NnmQU3ji29mh7EwcnMWPGnTNWLx_0nlkQ-RlXp7jjxOJKB5RD6EQNqhpKkwZRIn5UnWMy3HwMeMvU8xWB693zONdhmfoACSddaMsZpcF-mj3_4ipj0LEabHTlb2AEkIw7ZHpT8xpoKwPTurqorbg6PvbJlybt4ZKqziRm_uWjw6fAdfEFpghy7PrRUP6zP-RjTBol5ey3DhSArlFv-drAEjdBYvUIUFB3SAWUx0TzikJLJWbzhZdywikJXJF52RZOTgXKtfqsbpYvw3hRPBMp_uOHgtxTVBVlMmWzqOy2vID3kfw8uA2Ye17XXs3R_ccp2fqXQN1cGHnzahFP9l0EujM3tnPZTAQL-_EjmvMFgdpeuMfeNeHH0D3aHyPHabhfr_hoW2qZ33wiwLAkPKVxHqqB47DMLgqU2GDtndjWkmYxX-HyN8_9X0rgYL6-fM09q-SK5UTxecoVwtM6qIpFNsoiBreiuig97Tv36wAXzZDSXncHSzJFbyFop0ZUho2m6_8GPCz_At5lW2uLLZyyz0GMks1UoMc37Jg_182Zo58IcsR8qx1umUkLF9fJgSXFmZxizqb2eWArAaomHzsIZpLlhrpUH6B7QQJvtxX4iTMzPZIVtoxi7jBELiQDYBjIwDWcMy2A2GffE8qx5YcJwP2Lpx0y3gfqQIAqpHrz9OM4pUDJGdmWFcdjvwRamr2f7I_b7-DvW5ZbyQ1cMfcjtNBenrv3RPJT3NhSS4wkuAVpkQ13_EJM2-UiF8PySp1CU93P2fXDNDFOhf3B4iaSiQSHemtmar58PNouWzBoXfGvQXT1yft8uW7-1hihSq8xbzmUB90fYRPf4jTropwR8jNRMo5PRYlRejjZjaeHziZ1bRUq0DKfbhG4rf17vFV_3yxB_OkSsp4DkOFWr8jp8Hsx2P96xb7aElltNq821QxPfhsd0yIcEpxfg6D8VLrEWYylZyf1atqSsF6Bv_mH7mXq4uWuKnuTk-aKiy8FG6Ivm60jzIye7A8Vk731IQOmXN58-62WZnNM2Y2CSFnA4yczYJHHcRhmneRfYXLIYE43xhefLlVkfQ_Ey5S4JuV2VCihz8BBVmAqNCJ45_SGUjVtbgiqN3c88NHleMuA0Q1LNhKXK_cx7SZEe4Y8dR-fJfW4BGakVVjGIFrJo19vunWjnuls1rJ_CSelQGP76cV9Znx8f2qFsrz2daDvwBv79oQfte_mCaToVa3uLqEYSuZbvvzxueRui-DtMuA7KyX6xVvlEDnnaptOzkAwH-JmEzYQhYc92cVG-JcqUtXU8k4eHy_dzdHsQqVpHR7iK2njMtfC9nZUl4psfVEBKHlnygLUmks4gnpXCzeEoB3v9F2VFpYSJZ_moahw1_IF_l4YPIlHAhrp_jdjvIUDJMwyC2wsyWb0e97PHsvjcZNoqio4z72A61VPCn9LQg8U0KQ50uSOWfPdbEMx-QnOfiE_oYmdxhqMkZk4w3Ewafg80ipltYP40bnQab7cvwp7WvUyCE0f57OLxxTYv0Gtm6bHNTFS9XrvZv0iaqKBQ3k3rs_aOTpqhvO13VBxdhQ9ioptJ2qIZJH_2560fLf0WVZ7jgUjbjPnd64yC7xOuprk7TnIQeukPwNTKndJwyjQW_DYdtYFkUZt6ts_hv__R_fKeB5JQNbjkJekHBSJnim1rFhCknb_sH2ZvyakOkj8cuE7wul6sFnt-x-YuJc8gm0h0BNOY8ahKmH1FhPD4FK9YAougd3mlg6m9cTLC6u_rKCINk8z0-jPxtDD3IS2GctrX4M2bhtw9fzkEjuTbyPsUybTnW39K4reQ85jx9t4j1iz8FyBfc64YZBTUVK6Cf7Q4QH_oR62VvcM64edN2sWbPZN6CSDv0fRhgD18JOjakZj48NeaYImdkfgHZ0xx0xTMa2nD4fvoYWdfajF6AhLKpm998Ri_SOrm43-fe8VPn9fWy74AaUswxnx1uOeHwrlesch_NjpjcaW2qJ9wbRtceMmwr24HtUd3r35zhCgwvwRTjR9dgrib6x5P0l-Qo45bfvRSMgPmObATkJCeN4sYgF-fGXHtTAZmI_HLkueiDMBVGONw84tA2GMHejMG9oKWPUN_pDjeG-KTpX2OLjaG11n80m8EZCXJ48YL8K8K5mJu_yNcWRO8V5rLyToe4nZY4ALcUry_b3_ukfTwlg7YoxFKUqQ6hS8J3q2n6WAJG84E6DjVuQbe6KhA7do-TIS0J25-1oFJ7V-fdZaeScgbltoRuOPQc27C87pD3u5tCP18N_DzH32FvAFdt2zskBwpbGwzJ7DMs8bzAXmwHJcm8MEB-_gexa73XbpZrmSGReJs2H6MXvQZ31zZ2UDDJj6vDCd6Jr4DoEnsFUS-KhCf8klcL8rT6P-L62qjECoEYI_oRgDi1khhDHAbmfD-TBUocYwDCm5JfimwW7s1am48Jghus4dUNrhgPbSjY6h0R_99SrWb8psMVUylofR0RyKv8tfaJAALiri7YQPITOBunH9GTaZXIAZlvCDm2XtRlITy51C8HXClU7-e5_SD2z0pXi9uBXv3OMNdKv42KnqslKzy0idKiF_ddOUNWIPFGdhc7v-um-P0xFbANtEyME0CBW86GAhiDuoAJuCadseJPjAfac221NHJPCznsvaNfG2ZcQuJuWKeShDjumdOH2RfOBpVWwBPUMRzDs_dA1TJ9v9Wd72w2GfyBGNvD-WvIZMtyAQL5IU4atdhNTuoNmm3GJ-gqAp7OdZJXK5JvVLyFHk-fJnFrN0qpIh3a_yxe7rrIEqv3l25HR9ndVpwdIkKAt_7x7m61S8n0BvciPxzCd4nHDoTyRW2qxIx8cuz1J3HOfgX2P5QKHFxNSF1I3NWq9IrhIAFIyMlxEVm7uY24pRmwI5tZN_LV_lEnbPqNUnlcyELqy4HY8AlL2eklajnwrXlp6qTAw-F30xpHHtL61wrOBxqyrbooxv7AyUdqt_Z0U2SZRxgrwl7BG2akvqHlBJXUAQxYHf8Fyq5DfWIcuoDTKBDnNEAElJtrVp5PRdDG-bdx-Kaqybm52EPLmRjEmrEPCOTBtlKSr02EyQrplGr9kyY8j1tJRbAXYPsxk3kXINBh0VJV4CyGlHRxVu6e0JAaIy6EezwHrdvPWymurriLegkj36m7eZ4HikIM7TcfMfigRVgjyK_uYMwfjamTa9UHx1eRT8-PuAt-fLQuQSZoqbqxyhIiYVjeRFY_2SaRzE-r_-1QF_kZWQDzbeoIosWQvXMHdpfRI6wty0iqK7fJkWtMlWlJK780RKKaIV5JNUiPz6j9ZgVbH7juujXrj3Seodhqem6TBv8nP5uppY4BQDk-pIIbHOyJM5I2XpzaehveXBmG3Bck-5GV-WRhY2UgfOcj87irEt1Gt4TLdlyt9dOhFN6AKIZaOsuWjb7b3AGGqKyyiw8kieks-MJZ_5bXepcNzVRv65slW7tdq5fO9OnFjLlKBIkDuaQ5EGfMNAgBBvBbCCK7HfT0R_aJ87PT4Jvo2Vb0yjjcyqSD8--qzn0vDkTAUAYfebGdFvClxoCt8_SQh8WfRSGht1D-WNvc-NlTyMjCWQ1O1_JMv8Zqc9beKVl5ghJt1gDilrmH-dlV50HX14GQI4rcoOKj22dnCan0uvAcpaNsxj9vDrxveL3I0wYKv4473a-0RPqSPbdqwERSMP4PJCdQWrCXZXYLi0_1i-9d81ruvo3HKb9L1DMgDmkUZq_bMasvPR6O2gKmx-z454o6GPIPIqQPZ-jWSprTR8eIdEHPGZGZNwq44HpW1YRDvzgisR7hYufUQ7HrOzW5eEIU2M2r1kFF4hLBeRbDaEB4fsJjy23OJ7AcKrZIbahDcEptEEiK3JCfWEIIpLkoRfhcjpLUH5NFevLF_hUxsBfKnrJg4uN-iI5pPM2KmDB9zwd5UnHJrqdr73pJI9I-DJqR6NdLRCoHidjFPx2P-NgHN4NYxKUmbla8zfzxBfhID8V4_PixSYEsjS7v_G8pL8geUinfRsHeGHl907epN8vFcLNGMfYWpIDOrt9I-BikbgI0ZmfzW_WP2qmM7Eb6NjKFEu0vKeT5nSUjBAr5dvCPuSDcQ2G6GFdvUYJU8VZZhu2N9-riMe8PIuypv-QCJjzJn6KwOgNb6FjDDJHzyS5LMiuQN_cf-Jevj2PqsSUiFO0ycQIf6m_h8LoBgQhiSnEIS1o7mWyxqTWvGB4u3Yx_aTXcFDhWKidjQidHYJfYZtopKVjTRfjk4ipI6RCQOYv50dGvHqLwKaT3oEttMDE0-vw_8-BbfezdsAsgNLbfVJF4uNkcln_BE63t_I8TOs3wdyj2vw-JE9AYyJLvuuk2El6dqDgqBwSrxmBDCXTQWhS1UMnXVB4VY3NhZ2vmjY1qmlJHPD4QUwJYZOeZQTz5E4kTwxEjB-k-9Vthdjdd919ulGWaCF5IKRqJ7MdaLQ1WOOjKz5XfaUKcbFn9Zo8Tc6H6bVx8cTxoCE1eq5VK4hEpperF3YVuImx6YwfoQea5Bqs16aLQFrK2Yzl18hnYBc-mgrdWm3JUG6UN_Z2kdGJuVmkczHBFRisVt_NcKUHjp-r01vZSnzPEdJDvgGGUrMS5-b2x0KsFh-fp8GU5T6WNS-EGYYWh-Vq4DYkJNPvQfRAqzLObISFNE4CFudmMgQlxM64cztrzBUGgsFRz0bdd-49dwS7BdKLdb76srtz7pWT0CLjW7EnyDYcdqfAAP3IRWJy3aahqJPlVaOqnF0CfQpS6qRSodS1inkqJVH4M37VbZoAE5s7ab3X1P4qMY6A1oHMbnIXGslgf3FJYzTf1_gpr9NrslxwEZvgMkbUUfsmZ3vIQ4w4f9Ats95CkezQHq3Hzmb48C31B8X_NQ0vIaO4iWe2ERFk8NYJPUi6SWI6wTS2WhgqFKObKOkO-wT3SHJloCIqp_qhc9ugupwC6_w_zUKg4gq1dLwQXnqnU60c0ZD4B0y3vmwce8BFJcNO0YX6wj4mngEW7Z-GJBFpYg5gnUTErABwbTAgTfr-VoX8lX-H__3Yb9TlR2ADddNbhbuA7uTw60BVmNbFTKCuaRt5nFkUx_wqpM-crL-9eJmmOMcos3Ppl4_1rsJm6SLB8RJoWY0qXU7ibq5aASKt-F2OJe14TcZsstJWvFvsyhMbNzmXh9S82VcU6LzdUmlM5UkoLzbT8ai6wZRee1bVrVXE9o-QGG4oouAtFS50VSaT8zTZEF4L4RxqU2DJFJpR-kIJgrgXR9Nz-oyXvavvFVh8KUnCukPyvSygDe7_Owg00GPv5CfjXXSYEH_RbWtzhvt-WDWKl_lSPBQc_0k9XCkXH4ISHPlrq1nYUqGuQk-G1qasEn37aeDhZ3VXYLOSbS27zFBynTdUlYyIYMyHK2PDHYNAWS5OollAEPbM6DsWZQnvSWdsexz2dMVWtk5qeYD0T9w_cQD-Jz8aIKNPNL_ReO7LzoeGvkEzrY8TN1iF0G7c1SjiFNKf3bbxUf7umGaWhOtUPXXoKHOM-FrOH8z0HsAJMSGavn9Ma2dqbfBPARd3TjhOMJzLF2SXPWJXn7BUTyDBnB72OqW3ImItdTOEocDHZWk8g9yS_qBcG9YcK1OqX83-0NhWSZYe0T6ecemK5zp2QB_Jmm8f041BhZPneeEx8FsrIp-2XPWwu0cWBLTKdx1ec77nGuAkF-402_AsKrZC-AMrkqh9hepzGI4CQCC1ip6JTlpXPQgs6m29o8JdBzNxnHeiD58GAwDOAlxc4HlKc4EszrUDHituIV0uGBBoj0Ajpcbs0eweScUu7DcLCMyWPT2WhaWsR6akKtDPbh8EahNhnjBqhZxpbN7GySnlg0q5voEu2MJBZN1XmhQpWqz4ZIjG7w7VM5tx8YQ8yr68NPYNOKi2YCSB3NjhFWvk311Wn0CgnQX_SeaKDqkhHRBtjBVbIngxXmmTSj3mx_peEEjxcM-FWDiItrmmfQnAEmLuHA1gVfJkzxjXm2_B58VZa2Jtkuwn2qTXxgyUJSZksX872cIArzRrD6As2KvfXMbSEvT4Na1z9DLfTfzhW2iUd7e1HvWddXQGv5GvghXbV_SYeIKi1gYVc0Wbzf_FJvuOX2BQN9IjychXyKZ1oZcxrpLAfAUCa77ykI9mBHwbTdK8gdClwvxIXqsLnt5YpZvfvu_Xw-E6Lv7Taisn8291J2wktjuYpdmrMmIBj_havDIXD2cU3gr5wwq07o1IuRwO-_dKkb9OoFXhQvJMEBJKFIdUyBIFnXTyoVcCFTZNvkt993YbmCdpV67iROR9ZEqByqZHrEEW0vaR0sP7PunDfG6HSYx4pM4MSTmmaCAXtXI0bA1TIrzO7NzgWSUFoNunB1GCZYTe8YKwAJCVdtw1gWKnw0bmhGnrSvOESQPUEodvPjwsQkEQSj8REUSlToc4yZW5c_iRNQP-Qtt7eoYaF_w4yUFetCyUYLXOKJy9n_BT4x64za_uTxl5k-i17qB_G8ymmBLLY5t3RJSFwvlPXdIXXzNz7fVemITTtyVcG2VUZcM0-uujGXc3gRiWXSDbwGCESGO1JB31ME0tA4NW4TeFjsePF-Hbv8Uud7cYdr-F4M9eVPjw52L6nj3s4dWh-Z7T5-Zvt2Zo8-4fjTIE3zYh2LuMq6FFHgxNAL3lvqYKhuGyx9UDEaphLgsVlq0od-CSAkJ_79m0Fm1nc07wrXiXY4GHn3pvViMDCBNpo4_BXKFGavGD1BG-VQ9j3iHXRAP0qRSsvaDI9zo-81eX8Qs4oQm31P2wnP861vnL8kNG9q5grN7vfCI8hdsk5z560LO418CHCwDiIDgXRIGLucb9UEmjlMTDPQIFDMeSDY5auwsPmDclUceFn9Us6J5hwaI-Dt3lFxwdo61WSwzSEsw8vIdYYUaY4_5Gt8E2rCEfX1O3knlSrEqcEJiaZ7Q9-jpWahfziDzVsOM28OfFsEvDTd4YvxCKnWdflnivoulm2GrBHmZe7-hcZ-yWgN9XUP0nuswyZnP_ADS8UFuh1-cN_lIrHqwNrecNmRGLmY1OpyTMZGFmHRi_3BQSWVkbBoh-5cTJaSXxB_pSWSFYDvZ0WiOys71TOruEh73SGLhkaU89cRdc-L8-7ediJWut3VhyysTEkBR9HVDTIS7yiH9YBaILBq_i8ZpUivNytXleSTXl9w4QE1yuewCcAyni93APMICZyzck0m0J3IxHgwbwV7NF24xMQcRgdTeK1YA8Blyb0wJ4Liya6yC-KOFd88mJ4y6CwjmF2MpTJDniZzMX-iHHb7oWAm4oTBuCguh7O0AMcflvqhDdTvojL0odEH5FhKIUZ9nHQbCKTYbWQo_q5rFn_L462VszKPFbmw84w7z0SEDnZAf7mvCeCHX9bZIvH3Nifi6q3Ithf8n-UnW7mONjC5KPwyh0r9Y1eDVqt8CiMNY1FY1S6bm7tOYFYemeNgnrP4txMv_uKxvh_7HcWuOPYTc_pkkb15jCQkAlym007ai3DX9k-ZM588TOC8leTCuzcw9_a3FnkfLpQkNUsofDG52-gZOx8uEhJgp0ySmSuRL3A6LD4oVrvifEDNpbMQBNrg_ag70aN-YFJxi99YKlmysyoiXAYWS9M9k2a4NoaNiQDIqeh6VLQoYBSOcGpt2xVWqRmKNW7-241zZsLR1q8t-m7YkJ7ub_Bsx9A7ufVjjFj9NVynrqeUbrIQ0T7Pt04br72FG9vvk3R00NI4eGHGhObKYGQeP0pxi1XXqzktPmd4mx_f_Xsix5y_6CdReoy0bagU8dh-apSqQczxP1TvQq_3y4UxdxLxH4joU8V9Qin-mNV_iV_N3-qB6HmhtMxtIR9xZUAU7cjdoP3yLY2AGPiup37CtWT6Sz3X1g_HmiQBBY8IuqWbFeIi6NY9nGMcKn3Lzqwn5oGriEilDgH3NR2954ogTbnJom99LQ5SwLpNjOGpDo1L8im12b4XiXvpq7fMta7bORw6Pdu0ai-gEIIiZVHA2iKFSbsT_pfCNNCUWtjmnDri0nAXIhe8scePetMEXYjTdgnn48XLbyY7eNNXfcVfEAoaxPCR-cEvNkqeZbG9xEoxIvmna4e1EomZkYKtQkSfVE46IbUZNrGsTp_aYYmbEKgh4bmBrRaSdIH3tvLTlX3aHnVp2KCs3QiBTCoBaQdSz35Hc_ipzuMdwtb1j0TxTmM6Re1QFxzz-vLeBNd_hg5tm1GGvO_3MXgdRuUhiKAHb2sO1qXsbvLqlf0mj3HSIwQbMqOsrDMX86dJfCBrDP0AAYdViMClqz3NHSuCiF8ss8v08wuM9btN1y9LasTTdAatubmyMuSoGzLeNGaecVCLzbW9a9zYcjOFEhJ_vAzebSDw8nFCF13mIQsv91cJkC1qw58216fFOdDB2rgIvtZ_NKrAydEe5Xki_XTbmq2HUUJXj6xAyqbZuPjfouf_-Omef9lJobRxFBWbb2FcTnfTSETem_yafMvMvY53GZ6mYq9ICCPEJCGdtxsS9SJPRLSYb-n1cdJtCLF70zejsJF87ZSKsntNi-WnDsoHJcOb5PqWCjh1Y25hYCDnZ7M03wbhP18yT90CsUSGpsESew-JOyIlg6oi2RDQ7i1_J_W4EzSuD6gamhQX-EEvP1evBr006USgD-gOumFqg4xONX88zLdNqkSOc94Vg04NogAF5b8R_aO5RkSrn3UuYP0O6nkfH4x-NuyZcNm5ofvK7a0eoMhVLp7nj4688So0V8vbYSPTJKtvicH0drxCtJVemX5gbNsiHX8ZSPP63LhtLhI0IyWIpcpE-uclTlzOaZSWKXlCg-3iMHwShwVCSy-qOFnbYRJM_wOPgxR23TeXSU8mq4BuBsUNSsBgExTCsqhOxbWKMCZx1erwE3jRqZ8uUY_mhe6lZW_yHzCoRSb_O2yPUfkigt5-9_1F2eL27G4utClhrL6xVoXYGANJ1GbmIt3dL2Q4VlhS5tVN30ycj2mQtwikhTlNiiQG8Uz3fxZkv8JkPN5ry2KPjTk3yYFN3jgLs_OQjl3GX5xx3XQLPuYJjSduTJ2t6aY_si4cwyILK19ELAXWJvWWA_rWCeRwxeqV6w_nbX1B7ccPd9v8qUhSpu3kWYPl9I-G-ngn7-Lpsnns5MESA_lKLt00JgoZMDjwznEtC9vjeRsjLFU3Ty58Y_-ouM1NXJybN43YX-t0Rf-9uxAIQuLrzeM6ykD--XqotpgA3Biuj7t-TPjE3dwaA1KZylCcoL28dXH0QL4iQhLfaF7SdH0SFyU2u3SbmjCsV9K-pnuIEAhYKqKuoTkwoNBEe-syg7Zk1BRL1-Yqk-a6MEGl81wXWkeNzdS8ab4PGvjcaK0S0KqJQMCDFpskNBCbXesL3DCnhXkfwtxyKUAdk12WteH94k5SyUgFjDpmE1HfNiWbFuTnxRPh9cT_W2ty_wmxqTEsYzOKgXoGsv2QIhCkMb4_s9TQ2cnVfVIrqomK1DWKxNi4hBq8JuSV2wVrTiruFFm-G3TxeFW0EFiSYbklVhxpW1scsgPdDP6bE4ZqSHJfT5MKyHsnrZQ0n50BZEgvKkNWqzl1Uaq9S2s9QqfAwIGx2uHSOE9UN-fJY9oDUyT3OZtNOcegfmtiDDY6AJF7YOKMT6mS0i6gpbOCHVquf7Oq6mOaOUovudPbhSFAXnliVyl3-6Zfrq7Tb9RwGyg5deL5gNWb85XE7HcqO2hUZc_MYFQ3vZlovrqDiknmsGb8C_1c42G95od63P-f5AoDv4aw2sAnv6TSSO1HB4XwU0tySwJgP4nyj2HpBGdaKxNSp6pZnDYIHuWBpTJqA-uYZo-ctOksDwTvMqYe2ENOJA60htqXWwclPG19GE8l19wPlhZODOaG_lnzDAu9MDT4A9NEkIAUELzbThqwC4em3hegebbf5Vdc38Ysd1e8_FXnjWQrAdyELShvVLYPEDDST8MbiWw57aHG3eHr0c5CnwY1sA-QERUVfNmz5efkt-mOo-0nesHlobPQOR9RWiHjwGyleJoIsHrr9GLv00sfcsffvKk6r0vmy4oLZoaxFCAXdog4hOLbE1EjYEU4jQKD7yk4sgTSJcslM5Qjv-SHYyB2WXrgZwVRy0gNuVYnuzFo_vToiaHKDbRChYT-DIZnJAFlH8SVNcjDZQ58iBLZ4VgsJL5_JEvAqCDtrOfUDK2Qbu0pywniFbVreFeO4HM5qdcEFORd0_L3PICtmuzjwcqu4cNo76jRRESwsOy070OmyTyHUg_-HcYBhdW2GOG_uAFRFE38EmIfqExEQJQY2dwUn9pM5kipaVA51W8ZlB879gdGp42R1EkyKH-Xp07CIgg6Idz4L9uTaAMmufh2STnsdiwRU4s7dIuGqXmnVHIGVszituGFaOOIf0FxtvBNfbKncDe_UJfnFwzUUAw3_Ophqv3xaYjovr6OTOTEimkdkscO46NmWqree1PcTolm13nAyV2v_6uM7uBbByv0VV_vCy_j7EeQXChi7aqjw5TxlDk6oB7xC2IfT0hfKzxztvWW2jTU2LbTYG-sLt_OYIbR-cSZ7g_XUcVLcM8MnnDAgfysvX6SmgR2i89EVqez2n7xHejn1GLS2Ej-8Y5AFWxOIpa98foZHYF5Icfwt3bjti5h6b4bkUhFv74VHkVFVAVk2WlYOZu5TNZLZCkVn4niGw67z0O7GTtNI0JW2DxK4FMrH59MduvM7XhlPq7IoJFSlSUmoc62l0p3wrLVIIbt_WKhSalgcmnk3sZvucq81pfyisLZpRgJRl5iyUWytRGpYiuOWKHVbNh_IzR9UmrpDY9yTtCUE2WSW7bkDMMehWRvgY_0lbTF9C2IkxipbaC60IawRlskiwIdBpAgu9BaIlX6_knSORTmaXad1L5ow_UGJf71Tx_GBCbyb_C-7abRHLhNTR-ipN22UAPDCsT_2WcR6PtGt4NgaeUuEyJIFNCk2xuGHBLEQXxnHK-wvnOiNtXZMq5nSiyaGnPEg0IwK0L3XAg2hbl-mI1DTc-qYiwOpfbU2xN2m0mjY2QCf9KDrnLyZ17Rm8JDRlNwNOp_j9aqy9noxntloDiMR-KariSOWhz2OCPSDqOFx24sfqb_wcGWQOlwb0SV3Wf5g5ldQUR5QG01bva0LetPs87vnMg0sEwZBJHVdSvvaqv_rifAt2QmpdmvpHGoE3d_goq82SMwSbgc6bGP1WKoD0ptrossXgDC9zAx6FjU0PYAvQ-Ef-L89_ivVCmCyU7HsBG7PULO8HYGozAND6g-2yf8B_ZKVquTxuympYD31oVPo0dwoEqxPCkso6W0TtNcjKrvGuC7s6Fj0EaEHuo7ZOn1l1roVa7a74lVfFUDMvq4kF03etM_-vu1TBuKPb6zi0msb3EUnqh-oGx7U6B8BiJVN4AGWtmkLpuJeHorI63Li8rXgk6Po7CXVNE1QXTyhJ-Klh0a5yd-skLhHyuLe0vBF6NA-iwJZgB4oQ2cVj9TFst0jC78C3cicyfSPpiIgRQJkqXEu5Hn9UfCdAFwA4oXSF8Xv42NXwZYZ5WVLUpw1v5P1Kbb1c1DVQc-NuebsVocdfSMPwhhRoHvKuNLn0mIFaT1Ak1TYNwgBzv2KUWQZ8w16PkfEAFrqh9W6jOYUCiHN2cFEP8nifNnDBFdEkCy_6fFocJU8mlz8zCPHq4VwrUUsyxw0l7e5nj3bZ946a42w2i1SihzY3sE8sUjgXe-HzNidTXN52XEDCF5gY3HUWSxbrBKW4ogGq_YHttwTM67iS0eWFZqnNH6meCj5grCjpeLpnE_PEkFfF3Zc-BfPTsBDiCf7cE-Rrfuy6rfgPRWDc73q2ZLBRPDrQRoaF0A1Ygaj4MFO2NgSliSmmeNHb8QsMecnULTMsVU-JJC7czN3RtVIj4R2x45Ca5O224vr7j-F9QV40tGCryMzzc6WsoMwwby3ubQsl2j9X-2_yuS8XGUa3Z3sxn4FjK3BduPceG8kXvyaMc599m6T5RvrNgugvCweEUeA2BarAcTsTI_U0Vf_RVHo4fUHWF5Ud3_O1D5nKb3UzAAL-xae0hpE6ixsJnHZ2vyW3t_4JCbIYm44Z-XxlHaR0vO76GXtXlNfHUb56URcI1uKRapfxBzx-pCv8tFjIGYHTvNiAY5pMQHVTaCNwClNOK-pl4DEg2_E4ZPp2_J4ovWjbFNfjqeQzrzkWT3quonF8hajm96xHMbl_qmQdcN7wH3U1mvTi_ch5xRy44HEiggwD8tl7X5GpDbdf87B-ChhZCWM8x5gmzX8ZOxjxaINu5LnZV1xRHVPTibID0_p2bDz-dQbBsedkQCdc_MCxId-cjn6i69Y9SMqjqKHcsNAV2IFZAMsn6uCa4k2edfRJ9uiPcSWV71n-T8j2cAOBnxQv8ZayTBmTDvmd9vrkZWRUo25ofh9I98IyebBisk_rjVQNINSTMPb45xDK_SU6l2RXpVhb7jC_saAZ8-lCEEShawBeGJwu6qpj-LCzq4QLGm4--gtVSVoomJV_Czt4DOLo0A7m_T48Blj4lxuSRuGjWUVn9Fhyfsl2lC9P60H93g5vdwRWo3Y1vsrhyZDaALVa49vuaO9gjfjc2IV9HVM4A8tH--bXXtdSjQ64KhF1vaIdVAZR3zfkvrQrucQYXRDk-wnSXwKNCty4QX6FxcAzqzB9WFpCWyyrH4nXwWAgfyNLz7_qlMkkE6ENrwcomEmbDudFZPPMwEFa1tczE0LwQ94zJnw3J25pOYt4sNaGoLLLNPzZOjvR4P-4HFC_oY0AEzRWNWZJ5G2YYLsneyCl7_vwqpCFEKKHZrjFU9eNsUPBarBubA9zg_ful1PPoX6AP-MgGe-U5KNjbrK5jZg8YEIE5oH6otZQWGF41tnq28fdUssgeIxxMdoNZRwEDUs_7v16xf9stpnMvS--0JagwyDzynFor6tqFpm06-q_anO-U51hi6zQpQcPlW-lB0ypn4EvdMFYEihC_YORCHIfgpCAW-lJlUiGQ6_4zSfj5nhGUeSyYxq4xmPJizCivHCjhPMlkkOiQCz3TcryBKlHcoczWxEtsXG40eMYtCMRvHHqGmtkogqJ9kCezRp0yVBy7muVHOidMtgCsgesceZ3d-xt6BC194zp84wpM4p1HHBLMDK87zgadP2CJokKbdYKOKxrUMqj9N_HVSsdcrYiHWeLnOJIDLeSuQ4_XSeoGKN0r-u3x6GWAm3yH25lvngmXzsAsXDgBNaUvMlEGjkYSlqMOmtsfPz1b0F2_K2vYtZU0TDWz5Mrnyfe8cwgurPwLl6r49DSbF9HByo6IvHzaUoZBcBeVA1B9dUyZMuZ7lgYENc_C8eeCkmbTLqvlnL5LB-yWjV6xB5cxX0Oz9v-MItBcsB5Jda6yRNvTby6Jwf9TqkXPykUtXDm3yyB7OwPOzqsNwbnkRTwL8TYMH_0FOcHkErlmiWNmwTDswS4zuui9ht6AOFETk25UIZdvnFR1cXXqUPoZVEqObsHrzXRJ_eTBvKJwELwLh-ERhtxuoKR-wx2Y7g9DZhW_Kfcismu-P6krpiSYM6aoW_9sJmFOGMiIV4inUj9V9i_G98jNc79xGOHcRB2yHw45v_et9kom0OVi1PAdFMid-T0KFWBA13MA_v_ucyXqD-tQ_FUH48b3qC8ENmHP4DijGKxL5EZyv5L3MDqjduGW7TZlPsYjOs4LMmH3f70mL8m47jItcxM6Taz6hNGp9ZMfNj5hNlwi2Jp4oTQNQ0zR3XAiTKYoLdvGPM1EJ6lXMcOb36k02i8ws3ZpYDvdkE3qyFZLZ77lGD9WjKi_xwLCI-E-spP9ISfcV679eJ7VqC-lqLD0eD7NNnulTjlkS8uBqTaJdoQbKDulusTrY0wSXfeEjyI4qDvfP6yowBphYjlaMOBXxskmPBj6zaKakfx3Us2e4SsVsQGPLlSp3IZ0_nv0n9eELV24veqTprTa4hn7C6HWLo54lxJJo8BRlfItaJbu-viYjmIN-FhRcvDXpzWbhYWRLauFD-ObgIX6n1I67F7l9AU-DMjKjSg6hqNJ6ZoCiFjqreRViYUplfGtnyewrDttZcdbdtWXt-v1G8OX48nrdg952G5RgsCGmYpy-A0N-0TZSoi1F5AGvZbtFv-DTyncxRp4YZfCcyoMF16bA_SGeNJe67-cUnSPWGDzgn4dIaLR8sJImLv7FtJJVJXxyVkmeKS1INiEqghSZ38BGMZV1YaK4OvZe2AzgT2AiZozyLJURvxtWRrnFEOXn3mSNgJbgO8e3CT7MRQDRbyYhncg6Dg-s_w4gF_Gq2XoJO0JWvu59nTLU-QaasNvIaU5sONL-UVOGW_zc0SjbOVtC_RZt57jRHifSAOigKCRA4u0cyO7i5y1hIjvIkMDn86NBexWIxjs8Ievn0yfOmPHO4CKrfYaZ1-kFpe6z4jpp3WMsMkCF-7kYwGL5cpycG4RWyECnlXlYvrkt60wVCNKMNQdobSpOHryv_OgUrPpQhNam16D93hNK1vO13c1XzGJoDlnj3akVQQv1wg6Il8Eqzof7TtALA6v-REHHqWxfBnwKtJdfAXp8tVnQIx_IHm9Gj7nDDX7xCHMgReISOhjUHWxsEQO0fXCD1JgOKzXlq_L77pbKNKgA_Jz6oJwWKMFCqfGL-dM0bQbljvuIeOIQaPiCP-nax76NrJ-sHZLfmgTu6__6jAsJXvZoaJRJiDRBBN07MK31L6-9Ybxy8BcA7WVkG0QrnEVR4Yz2YsQ5J9-MxlDnFeWwrZ5AVBxY24-ni7tGubVO-xA0Qh89ERJJvAuhZ2aR6SO18KeMygEOSwWlvy4cOhZmGD_cn27kmN_kViIOwxhCXhS6FnwqcKvB__Z7zd2EAXcPtpucYMMjciWri-QL9ruaqdAC_BAd9ybgSz5WDdy2BoOMCgwXmNsWnWUWjNBa6zPN_rM6b3YybhAy2HvhofvXoW89-DktR3ojszSiMfujlK5S0JM1gZqWBBe9P-v1ThFQB2xVRj9a25ZbGRITQIV3jwUjcw06Xutu2g3uyU88XbeN2iUUQPGEK4XqJmAI84W6yBQ_j-2X_D4LEHzZgpON4ywKQJ0cJfskWIScQpNJk3YXING4OpkligffoshGt2ZGdBdaKgYeu4ilepLctB2lxpkSMsauU3t9dHCdT_XK_foXyv7_CK8e6IwwBrGAX7EF4T1i9mnHr0bY8ohaqYthCP_L51wBGsyXO9OiGuxENJL2uQvNM4pwSf79pLR_cMZ5OVULuzM1q6mSvdgpPH5W2wyak72Ngf6aFFrPODeTnzekL4--2eJsMkqtinEUYP4ejrdcsaalkzO0Yzrl0kWY_23e-2kI4yOIZnDwJa77YMOSmOtrWxgaeFHqt9ogqp3Gyac4XltIk1lFARGrHTbBnO20RKI-zEGVBmb8ztnI8TYumM0SBDP2pcwJ13XbRiExIE9vKNW-fBhaC75oK5xFCqGh2yu3PRWSIlY0RgOY8U7jrUUXBBU9S-U14tyNr6Wk_NnG34rtiggttmuOzCHBIFzed3wFtYHrIBf0GbOhKTxKs8crjnCGNj0t7OjMPwfX9rz2FVfhLYPqmxqVAZIf7OlwQ3QFE2OE5MDAZgbyGas86dBjKS_kuuEjFX8DAytUtZo7Q-umBYmI5BxLkNCYTlT-ZjqUjiisKo6ijJGduyfTodhe6hvoXXgvWJDosdLYM6ZxADQshMW13xMmY9CoEMq03HyTq598XKUd-gH5-pLENd7ynr4ci2yAt-BVJbDnupzrNrt_hy8HOukhyr12mRdzUO4zJosLjwQp3phcXkC8cnGuyqmF27JtwaDUzKIyegvwzmv5Cl89__OhREOIofAfg_Y0fdp9s8Lv1oLf5fZ7dgA_vZpwsv0VlkxXSidjt1_faiiG79GUa6za2EE7HfCBj2wY9g_dPUSIw8KeCOXBI2fd37E5lMqPI0MwzWAp0Q9wmnlJztMuGxLaFnlGf-jig3ngOHsEUUa6_n2NlvvAZbS85C22xQ45czuzNET1daEoxNHDGP_-bpnmw1ETTdBMr1WzdRc6Si_FsaGl3pG5KC-jjelqH4yX60pyvbnQNjf52HC98eJ6VJ4AcjZeb72zkfWUAZGBW6B-rMbtcqRMre2EsTFOVJQPUMvz2xtVfcoa_BPDbGWhArYPXUclW--qzD6EX3ht8O8k36lSTr2VmSrmSNEvzGJ0y2e5I2G2rYUPiki6CxowjGYHZjl-TSbNCfHPf5IBAw0_QeOv4UPJG5T2btNPjfw6SmaVVwMj-BIgZu0IQKW6wsuOHuejWOtEd9hoAOh7uPD0TgRgur2DND7AQkhNoDkrfa0hOWv86yUktZeVdgR7Tc3wT5Gl8AWJAhHl66_tAQOwQHjFeFV8NbbGkVJ18-QSWoYzyEwoMTZWuHsA8An2sJFK-xJS5anMNyn8WR5sbgKTlXZ_r3SUaKC6vq7F8WY1Ir8OKeg6l5va5DY49uTGifYYogczDTjjU3x14-BORBgqSWk0z0veD7cRT90TBWHBntP32R27Kxhk--Kz8BvCnPIXdh-aNYghFYPVf4vxCbmlEHIDPG_6-AVKrEDB-57N24iZ13Jm5oCzO9aVyB--a-dyGodO8_S6HJlYJZvuz-vAo0aQBh2C6g8ruJdOqp25NYVfxZglwb5cN4mq5EJC1p9c2Gd98OYlK26QzbZc7yN6rNox0h2cXCdwrPp5PWDaNS7aM_GdMLikUaamy-gEo91evbFMADaFshnLp0sTjCiWHTHHyCxRuNwBCVKq_hPqsU2N0YL7_mWeM149dFSh6KFvzCBXHKNcVWdZ-BqvwBEhQTsIROFkn4t_xAQMr8DlZv6txi6omIG7ff2Mx-Xg6DfspIxoRgeW_nXjELP7Pm76LRSAttsI3vkcnd4slja0b0eFsNTEMoV0k1GTveTD19AQb05T_NYkdcS8xgeZ1Dx7PKS-foKLoViwv67PzVUmtVqm3c6TvZ7TbYn-AuWmdboKPc0a2UZSUAjUY5x80tyt_T2qW9uJtYe8iDCHUcCwgxMB0SFFxP1cndOkpu70ojBIuQ2xpXFsmqWiOQZAv_tjJY4cBASN455QoUgzaj8oZpqbP7SVMf-kG92BacNOaOz4ljsa_nrnkK_ZBUyEFwZjmm6kgOoPlVh1bgd3mxEr_UTieF4tpOK6EKMMaGFg9Hxkn8O80mugPyhfqMI1sNXGDWs0bZKN7Rv4wDGHFuUosn1T2vAhXrMJZnggY3gi0V6Z1FnL_nf3STRP63vozXd40OXuDudadQxs92okHLOWxq9C1AwAFzwQZXnuEGSGlKRuWyjLaSQYZ1hPJwzk6QeIh3RV_7wUmKyfpccWvYglCZqszEzo-z5NmwE_Lqdv1lSpuGTlbWsqtAuH-NzPUU7lGhWvFuRBg9ptSEMfF1XAiTuoiK0jDJFbZuc2oB6EicwmKdObr-Zh5csGVAjeSF1n1EWXgQG-dJ-GWahIu3bloY6NYWpJNpji_NDxiJd1D_DDkxw0euoXAxkA9t_bYiWQo-wqbrk-pOYESsRb8CWLEJr-usQq1z64DcZdGQ6VUzL1ru6R5U2cGNYzPBvdQ_E7yDSm8DfUW8sgklYNuNsL4pghozZ-AC8D4kot2u1EmS5G4H5tl6ObV7qSX0MHpd0UvmwQMQ5dUnEt4wEFoGzs9mVp6mhT_P1E3FQv-RIVpTjdtQUXWTt9Y7CxaXvhVLakS83-nGZJEGSPwTNH2qCcK9P-zTNt9VtVWMaNjWSaCaJ8uAxwjmJjAIh6iHbJ3wg91nDMvbgQOntSOKNPQu8wgiWUtkmlW_tOU0KeleT912LUYcxo2Ll75PsJ4tzekzxsaLsUVuZKCh-18PWMdnZtw85ir8NAWJ-riRZhmWaeTTKcqjdKzs9Mm3ntac-BEmTvt4Wq2KVVF1Ns0DGuG4ZfRuIMKB9AJ_r4ufQzJbN00JnxJZl8PinNs9EpOC6Tk-vOGB-XzQeAz4GzDDgv38FLe4P5dmnZ7ex7dinUTbTwB68-VEoXtCTtRWYQJmzXZalH37xB5lNQclBUlunw4mdgRxHOpdOPYTTsBOUHs7GVFOSFtRVGtjqp8Llxjy52qhnEx6DDf-ay-XGNGltc2Zi6zDFYJGfe4LvzyKyXa0DMH6TSUSUZg9Gn0Y_03D6l-KkGXqhWQi9D6aZe3gPfxKRbjmH5FEmBS5Ee_bhmh5y_-zcHlb-NmbuBQIrEBD-VeSNNactTgbsw3bbb0MSkxV2z9Q5wHAmlfI6YIWNCLdn76MAKtSOZvSUy_kto3Jg58vbwhmLPqip55aJvXg-J-b0XeiOpRTBWydtWROKvvP1qLNc-euhcoBj__B_4OF_vE53cOZYOkGIAI0YMmDuHho1LpV2w3VwP1zBMBJU_W3h1UKhz7b6zwlv7R8rN8On-q4mX49qyWvu0Fz2qjqAY9vq9cPNNT7qEIuwu10juIUVAaSGB9K3O5kiAIMhneq9TcV5ISIATXqGPL9mWi4Zd82-F_c0p-0dVZe4VId-bxKKegVIPHjJFCWtTaV9mD5Bzh1PXIMZ-osb7wG5Ru4D33G1zDhjpjiO9ME7yS_pOCE1exAOlyrDY2sV0y3hbv5uC2YpmE5KAUXVeHW4YF63PvPo-vp3n-kmw1c6RNl9sKtsdhQT-iiB9BSKOZaCpqP3wpGYT8GQP5mJYSUGs8fupaggZ7sNGbra1aAmg-Uc7bXNJAdpANK-iCM4R0dbNvAP2rX8Xg9GbRpyEl-mqvJjIf_0gK0gszdrHAIJY04rMAPOInLOZHfuu0Eom4zhKdzMQscuH1_jFuQWEzu_ZIPah5uNqJggHfTiblvJ50GUErUbp8cf6JWZumBBFvR7N1SicBI7k35I8ukiGPewGyuiMEznmwKQm7ViyiYjhHQ4EpCRjXK4fdqrFNt0Mj60M8tsMJBdH5zn9SPRT75zTaFUxCsm011L4lS16QFvJ5lqxF9iWSG3IHNPZYa6choY5DVJPn-tspbcPKbWzKJV2gTiRR4GnEbP8sbycigq-awtA8EjA9EwMkspweYfzyl_jfelW14zaih3KXbs2tI_xGGymkjXCxAMO_pTDX-D1NyTIMLFmJc8N53O2qhKNMjctn8Ss07lfdR-J3N5q5wjYEzJBETJa6IuLlolWNqYNJXLBEHviK6QwUXij750oIRrg85oWwr3NuKsx8EtM7Nss-6fauXbpLfAO9wdRJ_sXhnlz-RUSr8kcj7bGNHZWG6fojYQIVOC34b4D70KKy7ml2sb_KhhbivLOAHW0ZgccNJoty-coja5jHrDDaR8Hd77vk4r6txnQNeoFppsQuRnD7dCunxfZcoIm0T9HcsamH4pkOGh68L69v4pHiOqSuUnB0Xt-JdwhB1LD9ogh82aGNW43Llw9-Be9x4CNNDHbJg-NSkAo3lzi6Iye9a3e1Wgd0eQDbZgo4g4s3d5mrYarguxgKj9Tc0bLfj4rac3JNlC_OdxAlRHJipk9XSUgdQwi7lwA0Coc4Uy9t_2JR31uk3ND82k0h9ym2c_Gb8pIe6KM-a_AXrnbGT3ZiX75LDJK278tO6J_2HMGHbVq5-2W9dZVcZKVJfw4ba-Z3Ta3CId8Gfyu-HuPQkxSfYnJfkw7jop5zWC2QrRrkwoJHnP9XKKHSR-cR3RBb8Pkqz5FdmOzbGuvuTGqVoIdSgrAP2tblGvNHOX1p4VwuUjW4QxoJ9R2C38pd0oBVsGVtq9oxxThXV6grYy0YC2tr9DdteZnM_U5CsDe1EVOlVx4H4eDJOB0flmpKCUTfMLeI2WVsazL7v3Iw0smSeHJYySMsyHVekIAyww9_jlrqQ1x0zaxaJnmGKiteywhb5iDmvaBl_LmzlrhIwKc2NqHbxxeRLbIpb94_uXEZvDoOXknoJvgDI_taQyZWYsMfwkqNSRk9se92FAzo9lEff2DHb4iKmrfEtTOtDXHev4keuoYnNlkMrnMr51u71ac_a1PxvdiSddTxjlTF5j2GoJYSK2Cw0gd53EcMMZ-KbPjIKmInDhogX0P-caHeldLRLTRB8nMeEQzTkcdlkFSp1yccqWD7Y8Q-Ok5JLVz9gUVW374T0XzBT6ny2D5QxzrcvhLE63XpMxFyOQa5cWT8Nd7Sw16GoUFKwS98JhVfO8cinBU2AT4GZ7t-xD59XQBp3eGcXGpmNJv608yhb9Ag1zZjYRfl2Atzv_07Aq6S3Jav69gqlkmyZowWjXBe2Ga0GEJppzZIwINrqLJ9x-kIVo8nrlkd5oaNLA0qxncjwGgv6TA-ch9pv8LhcB4PV-mPvfgR7y2wzkot0qNzyQlX11fjV_OyOffhb51OeVnBk2MgZ7kFYRzGcDQsJXAFMVrTRKt3xfFq0pWopOHg6Jn-HCj1M4ViZYD5gZEDQwhoyB8W_UEVCkG-flyem9lGhtiHw2NmWNBL3SvBjXzWvII8KXsiuXbZGWwHM_Fh1bpqifYzsaGJLqle9ycPo0X0NQJEoK1vzhMszK5FbHHvRU6OKklSfQ-9OtV8K-WpMKvibIq2gt0sVo0ldjolLxLE8dzOH8X0C9L4L-M7RojGyeR5hoJpqGCR6HctPlpW5OyZZL2TBVkl-RozHg7a-v-wyKCwtFqjH3anz9oUJlZ4qLY1vFKNrYeO_w2O0DtN9qYthybAIxr7LyLMY-FubhJTNMDBL-l93HLgHmrrrZSMLwxcHiXi6-URpAdE9UzaJzy1XjErtbzdhy3QP0Uom_GEJs-JawIUtP_970UHO9-rSjCn2b-oMeDkLGC1NiKGFkSsYEPdFI9aHJ2DkWakWmuxaHwQlcwCWsLNoFUig3d4JmxX_Np-mS8OHKcxkVsF8fFMiGIFTG-2JjIK4ZitlGKCHpxhveYTDad6ashqzZfbw0Eqep8qGMgc1syL4PxkVQthjTnAYb26PptPoOiq2wcfihYkr2HVaFILijIt9QGmVf6lIOyfH6K_yc5SUxJef2cNVyClKyzF9BA7fhbdFTd6-EGS1jd1bbA7if2GUdBB-MlSYcem5cAFJpmTnh7_RHosQl8DS7gU0Q4oALZZcP3c9OF7H5yRmHjzXclMa4_eYiysQgAufgS8I-x_StcJYUfm0NScKRw16LMytPWRL7aDPEpDGG3cN4b27ZCCSS0LB_LbTPbEXZ1CLpuQJv3APMsOMAByRylW7bDwhhVBWoxCr4GDkBaUib_Ad19Y8Lj7mSZimcUTgB57S40btarxZhWLqvnanTppmbIEFF6LrtGkcjoFXw0MdkMbsLms1MrAfPQXXi5uOg_IKzaka7YGN_nkvXxq01YeJZe8At-7ABQV8R_XsXDLv2HUBmW3VWjnAAdhrb_qePNmnYQ1Gg2ngPvpoXI8wWNfC2bfQULe_6Z746LhDZHX4_ljEZYjE7vIZaYHDqPRC0KDyKBWOxpC38m-8a9omHUcQZ2P5QA5BQC2q_ekWXPnqAXh5yajYu5IH2BDUAzWjhjDpesomFvNt2LpJFTRsDFuVW23SDiYN8AZPSq-QO-kwekkjwUtSspkVx7ja2UL_Mt35m5t4fcgdDDFzICatRXb8MF1yJbS7ZS_GbSDZe2VwtGGj8VFLmyoenN8_ZU736BtYtNyD_FLilm6fmRHCuSBsjQJU_lDzTn2UxTR7hIlbMemGiTCC1yE_RnT3NCiT68a6ZDhEL4UFbNpeZZHg2MXkuk_FkoRpBYSwkrGIoaCeKa2KdnqriiQsG-E12H-NNM9rixmloObsKK5IAQuJsadS3DVyg9ijWqUb5sfoC4i4y9E0XEy4IHCetwqy0Elb21qEMoV1h39YLKlUFKm4i-1GK0RnSL8-LemvOeKvqdwZAOTwGGPOPG5T4nNumCB93pbxDXe8PpgJtKk-3z8P_eyH9V4cz29p3gGKIEsD4RbJ8sHAMdlC7qwImiET5zJenuBI-NCb5SijMtGSH9_5bwxrs_69-ZPaepmecqhZnlgecH2F14wWgv6DRz8ZGnUeRd_xhxIMiG9M-3-leE816KiL-V6EejjJwNI9tVu5c9BSiouEjytfvFUbqspFBgIlIw3JjY-9F7vInYWscyR8KvldBlPjbwvJNOgj-JltnRKK7evGNahd7_hdm4py_Dut6taKq2nsC-3SHVR9_0A957M5aB7-g0sJBZfHQoh916tPNHD_ZtEYPTP82bepnJ7TiJ9_Xn9A3IuTR7ICpHRi2ENOv16ccBPrjhPOV19sxQFUtFAfxmggugtmA1NRqV6XRrYOUATsHhY1FwWZYBJlkfL5Zt9UynCvJA8DRHQvmYq0TpsX56KDuIiiW9zHHG-6Gxu2FSymecn2QJvjZvXZibEu78IFj18r_Yho6bW5eih_TcV0RBLzP8TG-rPO0BwHQvCyTDHMbDEw_2AlRQHBZdi4b1viDJUE9MK6DNUOWo6OS8ykQZBFpVV1uQvVFrrKeWx6k8rT6avAgP14QyQaYiK5fzAlgoDFaBIT-x2MGI8hCoUfXyHQQ6tn9iXiQuW03Jjli72A2VQw4JUOXZrIjC5m_2l5lYPPjzjBD7e_5ghNbqg5RZHfczcRm4jGb0iXxMFGPlYYLEC-j3uPfdeuCzpchqBaIueYetEscJjszabkHsKWjcdopjkJBVebsgtT41zNKnwC_Vk5AvYmEhqOIjWNpyoHqWuas0LzLtH6eL4OaZ4QbaIegqq6otjFVGxajMaV2QbY-tFZL9BpqAdiLe9FQKIumJofJvr0e_O0nzMVqBTvRi6xFkfEBmSGMD9wYR9hPtApnz0-4fD-GAoGxmHLidv7ebw8uBglh6CC8t7UNbi5fj82YsUJ0xiAUTErFbJoa2q2dxBbbYOTCQzY_nxnXjqDomFLCNIheHJsNjKWRLMGpJHvTrqzSxIRRm9ynfeJOoKAtHRXNb2NUmDmbXS7AtWYQNNk4ZWIbg";if(!e)return null;if(Ut&&Ut.sealed===e)return Ut;let t=null;try{t=Rr.parse(JSON.parse(Sn(e,cm)))}catch{t=null}return Ut={sealed:e,bundle:t},Ut}function vn(){let e=wi();if(!e?.bundle)return null;if(e.runtime===void 0){let t=Date.now();try{e.runtime=$r(e.bundle,{signedAt:t,fetchedAt:t})}catch{e.runtime=null}}return e.runtime}function fm(){let e=wi();return e?.bundle?(e.keys??=new Set(e.bundle.filters.map(t=>X(t.slug))),e.keys):null}function En(e,t=!1){if(t||!e||e.length===0){let n=fm();return n?new Set(n):null}return new Set(e.map(n=>um.test(n)?n:X(n)))}var Si=null;function Cr(e){Si=e}async function dm(e,t){let n=await ro();if(n.size>0)return ft(e,n.values(),t,n);let r=vn();return r?r.selectFor(e,"free",t?[...t]:void 0):null}var pm=/^(?:grep|rg|find|eslint|ruff|flake8|mypy|prettier|biome|black|stylelint)(?:\s|$)|^git\s+(?:diff|grep)\b/,mm=2048,gm=8192,hm=32*1024;function ym(e,t,n){let r=hn(e,{...t,keep_failures:!0,fold_passing:!1,mask_abs_paths:!1,transform:void 0,truncate_lines_at:void 0,max_lines:void 0,on_empty:void 0},{verbosity:"normal",smartCode:!1});if(r.trim().length===0)return ue(e);if(n!=="compact"&&n!=="minimal")return r;let s=r.endsWith(`
|
|
77
|
+
`)}import{chmodSync as rS,readFileSync as Xp,writeFileSync as sS,mkdirSync as oS,renameSync as iS}from"node:fs";import{join as Qp}from"node:path";var em=k.object({payload:k.string().min(1),signature:k.string().min(1),enc:k.literal("v1"),fetchedAt:k.number().int().nonnegative()});function tm(){return Qp(R(),"bundle-cache.json")}function _i(){try{let e=Xp(tm(),"utf8"),t=em.safeParse(JSON.parse(e));return t.success?t.data:null}catch{return null}}var Rr=k.object({bundleVersion:k.number().int().nonnegative(),signedAt:k.number().int(),filters:k.array(Te)}),_S=k.object({payload:k.string().min(1),signature:k.string().min(1),enc:k.literal("v1")}),om=10080*60*1e3;function im(){let e=Number(process.env.TOKMIZER_MAX_BUNDLE_AGE_MS);return Number.isFinite(e)&&e>0?e:om}function am(e,t){let n=bi();if(!n||!n.includes("BEGIN PUBLIC KEY"))throw new Error("tkr-daemon: no valid signing public key configured (set TOKMIZER_RESP_SIGNING_PUBLIC_KEY_PEM at build time).");let r=rm({key:n,format:"pem"});if(!sm(null,Buffer.from(e.payload,"utf8"),r,Buffer.from(e.signature,"base64url")))throw new Error("tkr-daemon: rules bundle signature invalid");return JSON.parse(Sn(e.payload,t))}function lm(e,t){let n=am(e,t),r=Rr.parse(n);if(Date.now()-r.signedAt>im())throw new Error("tkr-daemon: rules bundle is stale");return $r(r,{signedAt:r.signedAt,fetchedAt:Date.now()})}function $r(e,t){let n=new Map;for(let r of e.filters)n.set(r.slug,{...r,matchRegex:new RegExp(r.match_command)});return{bundleVersion:e.bundleVersion,signedAt:t.signedAt,ruleCount:n.size,startedAt:Date.now(),fetchedAt:t.fetchedAt,selectFor:(r,s,o)=>ft(r,n.values(),o?new Set(o):null,n)}}async function xi(){try{let e=_i();if(!e)return null;let t=await Ht();return t?.signingSecret?lm(e,t.signingSecret):null}catch{return null}}var um="tokmizer-default-rules-v1",cm=/^[0-9a-f]{16}$/,Ut=null;function wi(){let e="-pZGsFNqC8n2U6h-EWJXNI1O93DGoqybT0oPAqICMGlEfUTPjKEYjyHbis97fqbzVum-2EHHsnj_AQ1EbeGymOQBkjs3xCOfIY7Wd1Io-tYEJh3LI6-Xd26ntZMgIaHjGPxnycbXhj4-Vk3ZMIBZN-jA3z0GSQTbvbbzdmWDWoIiUt8vI1tbu70xCoX-HA2n4jOtFJQRd9xIJyqU04FNj-8LqInCrEifCPe7_2jB9Xc2qxOK21L7EYvkfc0Vy-n-IVegmltcW_nyH1UyLWuQIUKQn0Kzp9Be5rzhq2-0sCn6vzSc3iRrclZcfvir8WEElL6F59rf3v7wdg2pAPrespTH8slqwKYaKhNuOzZ0Iomm7uOBQeX7FIBgTdX_hDRlwYsY-T5UXsBww6KwkEtysv1rwgpynzcdCmLNnOdtOaLB8kywfEJ2uiTZcVYMT1dWYzLAErn9po5UunzpFV4ul8sawwda_qx-8v7UrmaI7ZWZuPEP5-SlCOgDBNSW8y65R9gdIdmUzNUC7tBYIx6BDnRk-BNiXHJ2Dm0xqDm4lNeGgJ52iVZ_CSZU6pj1Gn_eO5P3jSxQYuNmQ0_SmS09o0oM_gigvYODKtPYkgg-C8PxT0CFi7YjxW_R1odD_fHU2ShP6th2K_B6cokUvtuKL3hqWA39679JPtfjThyq5C1dhZ3YlHkSAu7kud0mlApwsRT8dCn3F7_JwANG86lvCGEj43jmK-CRT5Hic5v5bp9Q2VYWAtQ17o7sri7MHWXUi7OPisky6JuzCaeJ-63MiIHwYEK8a7_DaM9sLQ1sEquPHMf6yEQrtAn7axdNdWGUm7GhDPR2NGshG4OYEVGv2xNxl8Dq3KVWjyUIBb6t3uzlpFhFMHIsaiKmw2fpBhNgABYDWDXoz9dfO0QLxRi-R5Wh49WorHKZU5AxzF3GK2ZbyDfPVzcKZEszyFz4GsFP5W5ufZ6Yg0YHlx-ousex_peXtpTdXoj0SV4R_6RfCrEFgtXwnYq8kXdxsx6LTXJsd_3vgcLe6Er7NG4IxVyOVDUvICoNaykfeuwFp7Oi5n1OBuJdjQhWf_MC7rHadtX86rXeL5tv_V9mMTA1JJl0TLsxR40YC42IhZ6f8UOFH-hmqLEDvWdOxe89xvTiA6UrkVEkuQT3RPQvkgzD1WBHNdjD6n2BE-DISiHsi7d7-GYrkOt15lg1UAnbrUAGVGNGEWCYlISLNG2F8FubMqzxtcnfAl5EICeTAKKIeHM0RpTpwrvugWCHIZA3xZBpBq-gaJZoCxHnZI51f_Fgn6rAC7iurWerEGs4VZT3I-DYQN8wRcyQgyhunT6SZs73s7fci9uWBxiRCEAUVhBbYqE815r_D9tJGib53wS2PhBz5KZUevXFIz52DYo-p9JGjFCcuq5cntLl2lLJzyjWKWYTgbxhez4DE_KKZtInYBp6i_jMRaFVh6sFieYa1hMj3-xzsS6m7aKg1-xMXNo8NHRQ20i1Zvbw04claulRCZIcJiB-Cqux4FS83ZoGsMDqx6hhztBLQYpgXEeOfUHWTis4E3inyqeqhF4ftSgknt3J6Zu1nQhoVEgInnMxbsBtE6DLlM5H5L1hQQx1WDQQeuJqdJPRWJ7Wk_QtU0WKtwGRDxO4D_Nf0tVw_gVuSG_NJWd7C_McYyCpiXUdJSU3LTPwz9osGnqOoFKuD85MSexbY8JmdArX30JBYYSJ-9AObIwjezXTbFdUvzcKAm-YhYn1F5tC9N7rZKkIFew_GDSci1V44PfX90tvXLeoAPXh6FtBC8k1HBj9D6ojQTj7FPgsTn4hvtN34O_iu9ResfvgtKE38BLU3IKuJEsXmwJdxAxeY_KoYVK4mCBBPYmwFGbd_pdcsu1Wc6VuIOA877I_rA9W0_m37bVbKdTK2R498slLsyGFVHDYhYlLXWao0iZfy-1BkWtbDTrep3RRQjwwZDUesXb5MHCXkuapK5cd5SeK8_Mxah6FeuyjxfJ4FQDVdCNDJwm18ME0LrH9fhG-MxhBQlVggxOAPzbcCQNGuuXYCxZZ9ykPPkwJkHAYJULudQ0TMCmuHKAmsmstwKTy0flv5tF0eQkCnAv8GsbQrsmcYl0UjO__YNluSFDV_VQ9M0IJLSY0oQkUN4QgevX0luTl0bG-S5PwhxeY9fuwk_woTdVVMr3iAxFVyZrtPrQpqS7P2Latluvd89iwiO3NFG1ij2WkG4wnR8WPqaRUB0JkLarF41Vwy149RnKasAAIrjE-IlyiSQ0iwKmfO7RX4qUbDO8UCuz2BWeHNVDl7hEjuzgMdGf-ojLlTtdzw2D1HVsFEBgkuCVhBuHZBBRtayralCoYYxZA8mlozHTwvBF91_LGnDzQXCg7mMXE_UL74OmhbkrmBC4OPpRJTq7k8BNXtr_RujHYhW8ptIkSqnnwagvEJGJMzq6uFjAyuUO8xNjNj6p0SEQ7d-LeAplcuc5LsoxTSq3TeA1fcIey1dwkiYfcwX28bZ4aSLQQo7uxJy29gfyU40Z8-x3xvfU_j7eynTZ7Svxdbb4YHhLMXP5sBHhPQNF8s62ISfRSQ2wrxMEUIk3aDxR9f8yMdHcH5z_JhoHgG7Jp4CpU0mjlMBh8MDoGKXxmeIz8xfOt_qEU1UrYq--5NEP6xy-M2UEUgD5dNiXm8T_1ebzKPtUX_J7tplqLJuxF7KW_vWtBzPWUf54SRCpa203JuWNvNPr0EaD7scjp1Q14z8rTr2tOSwp35dSOITkVcJfAiDLtrvzqnHvhIXzratNr6FqqDAs__irY5t67IQtOA0y_XIiqIQ372TqzMch2Dhc9jGyIRcytKlK0PikVKo_X7HUYMqeUq_9ooCU2iLVQz-4VPaOz3suzAQH4tYuC5jshF3-7mylPVbVcHkmWt75hD_bmA06SyDxbsNDHRB62qcH5qRvh1cAmd9hMHBuJi5KJqBbWSc6o7T2PSLhDozGPIfWeNaHWBCx7woXH5YYd2gLPyQjpw-Xw0AGtauQdg6zvMTAIiHqPtcT2UqSbBG8f36zLWKOnW8xLNLqkX8lth33Vve5pkOvYgzMWIRze_50q7AOWwbWRLTKrvckfZRwxbBfQOHZbYaMYtRaLm2h3lSqRifpbZPegQ3hNV8W4o1jwapV7S_8Sx4pL-5Cn8aAYi4SPFYOMaeBoXvKHTATLkzvBOi7yMbNlA4lO4j9OeUBbpwyBccOgqq54zQluIjTQe5pHOIdprWW8InhVRIJ1yPe6wlNzJJ5UjOa8SteUP4s16FAzFuzKq3eLR8Pigbco3cii1LIBQrxSvY2xBumIdzDTe9Os64X8ZINtPSP9k1Tj3Iye3o-VmgXnnHzMV39I2DtVeYHTlNVcu5omdPWtyIY3XmEEOpJUpQaSCiFoE6Ty6Hi9VR6Nq-x_XBb5SMu2PQcP8e46q1sDfTyuQVBOWTvS2qWNYhL7ENiKQpO5U-vHZXnQKfRKHKcz0k38WY-xyJpYLvb019gJxRg-1O4Bpy4k7iHQO7AZssWf2tJwCYn1ogag3535yza7onUgAuj4uE70eHTf8WR0OzDwu-ynLgg_8ZuqDa5ghCDoTbmAcsBeiN5L8j0sLleRXf3E4Bk7Plf6Og5nQgPDIAMMwBVVt2x2eUagO8-cBM8IUd3RhWFaP-TunRiHsE3pCKRZAhveKqMy1MDqSFD5Qjp00aImyNAnpigyCFrMu95d4n6_tYLFuQplz1YeQM6JDMiUsaWqsud34wRIIBbhr3Asoc9ASNbfBFOmw1KaJbhwh0r-nK37ZXACZsdMvEb0LqShR5cUA3_3W4_7z-cS3yrsStQ62SLRSXjOnSbiH2D_8qrQ9VqqIT8T1BJyI8jA2RbUcZGRJR0HbX2S1O_mH1ncnMcOCnORSg6vxcoh9HhZ57GZ2LCeusXlRKv9jaMSwiwIowSe1KjKAgCwgj6V-_Mz-5h97ksrTPAkCPdZ7PcOClq-lwhZZxGCbYznEwd00HUI7nyzEAIvFJ3Z8a7aGYO30ZuESnJlDsQtLGkiYehwjbt0Am_P0K6q4H-YC6x-MCruzNiac-fvSjsI8HyO0F6MtyBH6gBSVO3lUYOTKVWHPuN_S13i0C4G3Vc_kIoypO60brrEHHtuVxa_e8bj7GWZ0cyVqOFDrUCS5ek8bviE_eg7SaY6cKU_HSWeDCJQ1IxepMdsnrMjJGaKGK4otZJpXnPnYuBPCK_keDJhTE9-m9qDN-9CWa0Ah9BDJ5kKPjpnlYqdoIvdeHzzBy4YC1e2poRlkkkBvCTRH8ufOnXdAID45q2ytUTTy7a1OUFxdRJzOuD9XIPPuJZaTAC2qXgYi-HVMVgeXOSoQByF_mOZ3oFy9gSerLU4o3Tf04abYWcAICdwxvh0qY04JetP2y-ymjLVT-iOH4XJe1wkZm7L44c4OVxQF3l5bhcl--zShkJRjH7a2ZN2kNkbsVy0431m0QkAzY2-kwkiUG-sy3zJhw5p3x4Iz3hoJE064ltD_d-zlVGnn-HW8ikLpQHpMkdzQdFgkU7SR7QoSVFJEKLlwTN0bVKwnMqh2o_VIguAELkEZEUBpaDrWAJJymCDBkiIFZqJ4jYjfpJxKMOSkUlYS54BF1kycYcjJrHWvqVHgYxYmPRK6sGeTbI7w93Ug83YYpuJfyVwKZFVev1QlzRnFABb9WKHO4csQz9HUHDXnDbEpMUwK-pSsEGc7NzlzHtGEMNzkY_odTF_3kVKcSXmp0Q7IuJp9FPq6KltYyZ-VvBgSLm2vy8fNsM1WzKdVJ0prj1coiOFZp11Bf6mDBnAGh-3ZottIB5_kZQUjaRFmFTuKBDdYjpVvj5AxKrfduod3TjFCSx1fNHnuwVYFXeo5z_mMmtaLXG3lN32yWGY5_-pu6sf2-gpU-EddarnWfB4aS-ryxIg7mG7PrfRepfmmf63EVLoB5YtVKNC6lNe0AaH2ksVenzGSokZJFWERfIHKifI_xc3IYeAqJOJSJJB_zzYQEM0BudylmWbtpSjx01cJnwDHO2KJZxDjoCRZWIjIPhczbuDOH5UDvi6CVM0cCFU5ZmQ1I0aeoBUZ0lLxPuIGg5JnwBI8V1S-DKmpCS8Zwbz4sSFB-FhinvEfKiqF8RCLypy-wCyq-D5t9C3F4qesKQI5hvXKFX8jhe4zqnHDxSt78mRkzLDpFc6QPe1o_BUxy0CIOZf2VSKiVjdglseQuFxNx6OTUHjkBIwJImpLIX8XqCbEYS8L8F9sbBqGoo9XeMZvv8uXf5NljmjALnR8ivKCWLo3_OdBN3Ua23yuOFDrrfO_uz1yHAc-E9Yrh-_1Y032u4f1ESQZhPnTOlfgMvXYBCuYwZI6a32YJhW3mP9mwV1n32B3CXVFLP1Wh3hqt8QMubqvgPyW-hkdr-r8S5ficwwQJ2psEDF0qxmEdVKYqfz-8jZvxMtYASRhBMFMfDbG2H8YicD4Ijs_sPFZ-Dbo5it_17glfTYSLXK2TD_ZduTEpeAqsntWT3zXJMncLApUKkb8m7RuZ_lDnXpOvwJi6kYzw067A58GpYF5sC7XDxqZC3yiDOL_XPoU2KrSOe45Y9ImY8A2nLzwuvHzvKUOmV3nP3xbF_wdSHqvvIEXUlhuEZLpXntZLPh9rl9IfhJxq0ffavAKGI6BCwWKWvcY8LRWrej8cQCT967VL-dfpUd7r4VG5s0QmPBcj7DH7HuWcg-Zijqiw-v4XRVo3EQ97MiADUlDvJ6YJLzRqfOwQ4qYHkjoFIYtAdY8eKGzCIBDlw9WucOTVg6n6GfNYbrsu_M0FKJW4Eo5jWDH8KsVi1XN3-CEX0iQkMEt0I8SAbWHb4cjujc_LqNk77xNT9SIHzva45r4rlU0TGYsFL_R3biTh_k2LvQt3Pv9EFft0GJBzPkl9aqbSk10-5p0JfiXEd6cuVwhC8jFPkjTFeI3Ows0gIqSdw54OKuirzF4Ds5XgXa-lCdMFvCyjcNaa7n-JUREmZ89FYGuHbUVVu5rWZpf6U6Kpxu76g_-m28zwU6GiV8Bss1nYW9saioheAfbgwO70NAzGbjZKK-MqcwTrz7O3IwbVzCHsmQuiONbzNqKpuZgbaGS7pHXY8NyYyxskkQUfjTMGg5AM--i9W0KHjZx36UxtsotLI9RsjrgiqWsZpVavlsjZ7eR9GAZXyRhWeH0vJak7CEK91m37NU4Y7aSeDb5BVBrBC6MXYQAwtmadUxELpnxHc5VXjjdbMV01jPgJooyBviCo4qVMZow6igp_IMyy-wBZugSNoOAduiuNMS6EaKwZdHWrrIyNyEMneMQayVeJagllAsNFwChonB6YqwVsPPnE5OF-gaRk29cwYnLiRd8zE0fgbXfwr8Vce8YV3nmVa_0RcreieNIuSawqOxqDrt2w4fUHghW4rth33cAeDEXnlrDeMOBB7wpOKADfGD0f2qFWUmhaUb6LTIeHHc-BvvuSc2hFwT3yUrmpNTCPI8IDRntp1Fg10q74DPeovUKY91oE6oGODa4bOYAsJUjGmcs189rkL7XDvPj3J7FeYZTmfXiixz7OfKvbdgTZg_iovfnbMtAy2mhkxbwgpzyWzr-V5ZSyE3bxht8H_C6a9O9LviMrA9Hg82Ll-t7GrMwM6rtj5N191nynD4lS9cMS6Gg_-B6OqG0WK3KfSb60FVG2ta-8W9uZ1yRITK1rx7MbaKacTsYt2Lw51osRDA3wUoXsElRUFksOewxj7rgA2al-RHVwUnq6wcwDGwt02CtAt9Mc6j6Wzz7ATjgKiAl7aTIxfYa5C4TiYLmLKb0Iu9WiAgmqZtVR6vRxCuUlidi7tSB_WUIaz2kJraNgwhZuGjAjAYtAYOOocuFvotWZ_GimlW9nEvDNlZOsmq-xquiGZPyC4xEbN3cVFfCJGFpNLwRYbHUQP8tsSSYbJEKvB1GEtcUR4rBYhWdqEM46PhcNVOtAUhTbopqPlh86DlCOhgYQTk3gi2LnYftRYHw_sGhpGjNhyJCP3mewVmg1oTJWHOAiKi1WkH3NhxunuoC4_-ChmqiBopbvIVCKFNuo7m-65qUP1P9lFO1qLz4vliF1CuESgMzZsE0rWg_kjR5ovzY_-34KPLN3KMHzZzTOtUzJo_SSvF-t-duLubaJU1mBrL9hwAM-DZcXP8H0JE26395HwpTnD_ziv9PMe4tDpGcom4YtTLi9XlXu7L9sEL-Aen187xKpsqGJlEzlXYZjpsKH3Jwrlf0vqW7xFTOMqFSx53jZLfT9ZDxMpIXCsVXLn-d2RXUXJCLq2qLXwF75MiJklnBx9jIlIrNTnVfNEYn3bre3Xo7HsjVK7L4n4bkqNXZqPvWrRityK8VjHwDgRifkjY8V94wt3zWtfOryb-jlbTWY3AuOpcc1xMsykVPHhmvGCMkNM9-QA2Ue7nRl0_WKur9rQ5GvCYyz4j9LAgKY5Tnp2vgFfuFdlOxTC8yfE4OeQLo4lm_ofxEIwOrvsOth3UKssKbMVgmxHT3wtDBnBtYzV9r5sBpT7DyvFkb4tEBbdZf1RgUp8VDoyMZOL-x_z96tQfDq9Dyj0UPLWxyv7Zj3eAcrqp7z85YpZJYFjkghEmAIGUiF6tNmDCVkfDwszD6lxNTf4YeCZBO9oNPYQxOq7TWSIXpAbyJ-XzIqIWAdQNtzSa3AL37QndwvNMOuQhf2dEneEzZrIJxye4pjapKaS-_WJFY834t1Ewx88aqYEx69v3l6oWwYTOIj0jrqTXUJymHYDcT2aZwB8o_6JDf_z8vC-XhP2a2SNZPxKYfb8MlQSbIeiA-YZqqwI1ycOTiut0R9RQEsNYeL8De6cZWW43D6jOcmNs6QKoR96r3paM9bA3yqtSZ8K_ZFSmQf4BbIQ2rDPFE_CAE81PKIZu3korX3hsvvWaRYuCAyNubjsUSFMnmvl4PHAGj4_eTMvsXojWfOlzG5lY6NiSTvUvi07WhQdlyBE21sqU5xcJ6P2TmquXHMUmuFIooqe7pydbrxej6vdktntOSPKMsgE35hpp7HN5AokoYheEnHOKpTBbIQeHZO5NCcqvK5wtAwqlbWPxYVs6wGaK8Ct_UPlvS68ie3TW8rDD-1XfLwT0lV8TR0JV4gFLYev_lOit94DOnDK4JOZIJS5ZbyLv86JHgmPYkMOfK4kKrOoiPBt6BohAO4jbqle1vzR1IUjywRN_ooUj9Wa4Bra6TiEj1dN0kMUuo9qv13hWzkfceSyzDx_TT46fbj8VfOb4PdyHo7YA68KJEuhFPeXcKO9GW_8G7JxCswHH61FWhYegdQo9dJ_v8M6YBqj0Htkj-TKPwiLzyQdLOudMQGn85W1kIGOEXrnCqdJowRjNOrFNWrOHAx4Hnve3qnVBcWR_c4MdAG2pI9DrOIkxdfPnftCuk98t2ZilELFL5iAcPyqPGw92elsGYV-yuFwWO8kK8bbJBSEGnmjVkclJJWM3gItARD2BWfXaHfmglc6t9cbEYCsHpJoKDGKEOD9UjkW8EZCx1qWvpUpB29-vqEZVcjwUvxHn4qYvPZHwx1PlYbpHs2zU9o59XWSOdY4u0nSlkd6Lc03AaAnPgVbWdIxn3SJuefGB5vsOfKq1d1fAwoDzHZOokTqkA0m5aEdVOMTdMggJn6ph3_07pjqotU93BCcHmH-eXjQfzApLd_QPutfqCJO3PGrfY4cBuFQ8wsnsIOX92nu9a2hDIkGFVNhjuuv6yl77-rriH1X_34Oowr2TXmiKIV9GZ_Yx3q7LYAw6MycB_ZQ--oACmFfkyk-eFE0PB6GlTaJ7L8Nqb9FLiP94kaMogXXK9Yh6f3ljnn-ng1YqiQHGTnG6XuneFQtFn1ckjTj22dGttsAqpWc2p5LIt1FspQ-jvXHMUiK1svU4S0e_wtJvuFreGW5QLfHnJnsBh09XZaYsg6NNgOepsUm_hZCSSjrxS2o8tKIQESZYUeR8UTh8BlcVlP_2emzpT5Mde-ZYrpyhadDSfmOVkBdING_kcfc3eE0cxpLY1wpGODC9g2cuGQJulm52tPIDvXTKas6KEXjw7v8klrwzaJRI6Y6DIiywD92bNRtxrEuiq5NnFhpGHlpA9sRQc4aPrbdKB6JD-Asut2pOdINyONddHNt4H9mhl9qfVxbmvslq_kSFnfw8cFLkXQuU8kXHcJPDr0sSslu9mNTgqFe5JHhHy0BZwJ3hxo7Um7pflg5aqH_BOWW3CK2_NMaQ5k12n1pkX1WwTRv7St_jBqWKF7o2UPlwAFciZwE12oMYmJNGu4xQgZGE908bgTAaeGQPv3k_HCI3Cc0-Pm486o4ZpOfnqV6MvXVCDqXKDk95ROoQoKYDaxQ9tiSlfnP8QTqU8K7SrRb9kkubl4ANi_Dhkc0_H0za94HR-tmJnZi2ZXG8lhuef6NnjrZzMozyvS1sXcFW-On1_uL4sm3IRD5QMy2NtxsIHVJ14xFMZZl0gKHw3S84C422c_M3lG3C-OyZEnG70FemIsBtFBZcIcPUiuWwjsuwJDdoOmkBf-pAGeBPBb3e1X0An9L5zRqjovslzxOs3gyehSbLLJlKqbkbcEQmeojB5tKaX0x3tjNazk6hqQPX2DTAi1D0SzneSwXk5oKbp45X0fPFBDenUMFJe3HU5B0huyYgP0KXPlA5pZqG5Q-g8uxUGfv7uwoJCz5fF8x_1NJw3aqV7Y5YNiW0ZBTCP7XCXzRfM6f63sdLoPCeOpzglFkaWfwL7Ej01TXdoPJoCoxIL7a1HoQ1YCaeUJS-ivfDRC0xH73pXLSX8jfzinUTbNZBzUjF4b9_06uN4_eEpGDsgswBfP3QB0kym0qe6UJB2wRRNqtRCpOPZ3gTvgnmgTznfk530KSNdVuDhjuTOTVb09GyFKHFnwTZV6HCBX8x2yTSx5vyxEjYDAFbupGEMEBajrsyyLQA-qcqSnHW_ZylD6NaOiruRTamke_oRdOwTExQ4RcI6i45pPuRCW8FmRfH6cU8S9CF4hwAPaGsoiTxG3VfPbt2UMmmZ6cPZsGxh9uLsNj0C1NlsHpQ3DkzkvK99myQZD1I9tq3WVfG72RZzH73qXQVrhjiTcwgTrwIpEPHrIrPTiTmKlgd9xFe3eS46L1s_DeybXWVditkXrzeTv6D0kmhQuuofMm3kp5FJ8_uyi-FNkeR7lSokh2j4AwtTMzIO5KzSC3dKTzas-zQ9NaSiPTC1MJu609XDTO3HMR6Rmx5vUGzh77l0Z4CrJCWXWK5KA1GUomWW-XPsqEn6Tt8G36PoUvDlGHbnqx9mKJvIEC6k-vA_rtVU4lTlM2JehDj0_s5wSYZWLauJxIzZ3ptrRc1pMUt1m4swOqiBW_uFV9qnVB3WXgZp8Miw9gJ3Uhfe9mLOryqxwuITo-BVk50A_rNETpXsO4oJjCY7Z5aHN7jPpfIRMKZQjtL3VvMCUdP1OjGwPJjFraXvmrWvK7ogZwC3v5cR7idrOaTV07HBpSUsAaM_pLWvqm9u1_lK4TZr-SpbS7mZL_UX8Lktx9-5sod0AVUufS5V9YrWKt2AOmIUugKvwobvVLeW0ueS-hhFLwFrcr-NI3OezI9tYAP2uy__ZnbDE8rs4EfDISItx80XyUjlHaDj0U96PdWrS14ipM4jcW_bThHS5Cgc4bvvnK_OhkJROLynhllZbqsAcDnE_csrpaOH-Ypq3TmAIPszqybGIlB2_tzdFKAwsMBnTQxlMCnZT4ltBiv0sVi06P3CM75zK_qeUN8JiAZqqC_OjGRb9IZ171T6KqckBmyqfUcIaPZVAv_gW65NCs239voLStfsYiVkum119eo0J9CLrxh3MiTeTYfe7CYbncyAhaEvod34Cx5Ig5cm2u1d4zJdstT2ZFznBKhScO_eS24qNiWP6lGYbTuvEP8SNSH-IC79FSEVyk1qlj4QA46Z7BpsNrbV9URHp3H6TJvmOaKdeP6i91cXyc-33DOvtYiagoelMvkfwKwId7DmKtIlAXzC6qmagAlBo2q__gIVPuKO-_6Aa_K7wCwKbT4jWiGg2JDZnoyjZUBIB4FZvKeOCVfx15_CB-ia_z_NlDh1pfBF40xSh_ABUsoshVAc1R_ZPzGih88C1lMe3Hi5MgSWRtpENVrqruV_sU2EfUB2VInGMPe9iH0QggyFOBtb32iP82ferODufOB-AvVYPA2uj7oxi_Fo75OySZJgeudAtqq71daArmu5y1Td5dgGSCOIxpJLMNrKi8G6H9Y6t2RUUDcc_kPEp_u0Z6Y1JlVKoMv06sS_l1M5BtjfN5KvGZPcNuy3yCYNxqSwjEv76qdQVuwT_lWnqwQqVwkF_5_Dbcs6jO0S1w-wOgWn1QsQtYb0PwfJDzrvO6OGZYi4yvk3zwkbDDzQ6RMa8BaRZs1FGfN8Eg1TWhKaxLDq8g35e8QJyfw_fIZ5EI6tYlFdZIGBtSTbL7o3lvq0lHGImMwDBI4WWScJK4eNWsRRA3sdZTLZmicPAG-qPKz1cfocKfaKUxI_BKF3gYUeKBbXPti9AzHuAeHLX54oHvlZ3PypyxOiX0kN8I_FesrreLyjnKk4tgqtzjkwBF_0Y-WSNL6AH1LAe_JrvPEaOUTvxPdMV6Z-FSXfTkyrEuJjsx8wz7a0N17DG3pII_EH1xTDr8QiNZi0m5svXhlYrNyty7VK5lJJHu9VlAs-7V_R6YuIpLaJgFVuWGDpVSpFGivUXOhgVM9DS8ZXQ9EaUwfvFkBmvYPutP4zij_t9Rh2TByG_AFtIkLTlci5zk9kzLfuIO-vMwUXdyMVweRnI6FcNisNdFuFWdgtVzXc0hZ4q30aSkMM3F2iOXE2ZooFMWl4A9MC1nRQ-4DVMCXEhgDo7a2VKd_zeKP3POnP8C_qrjrQjLQ8WZI-9z6L1ngMTr4eArHRWc49CX6lICWcx3xQKo5zEi_OZhKDyvGWMrV5A5nLQLAU0_jv8l9Iz-ElaJtz7x2RZLhjJS1M5d_JKFBXHUzGVME_gakMi5AlMw46MhcXyNAxMlCq0Ol6fLLQpphroU_x17OvkGVY8jm133MhmpBY-fMbYsqObFMKAa2vqBzMO43Gsx2AZJ0S59NklvaukQpbM0eNL2eoEIyIaaYtl4s8mHbuJNeheiwfH0fzQ-o0U70ws0HGauzCqvNSIHIjS8GXhtTCihhkMes3r_qObRBVLIrJ1rgy0QhIq2WGNzc3QEIAXXuzqaDF-N-EpnhEH1FAcj7By7qcdmtLcLWjKuSBwooeciNxM4d3deFGq1T-CkPtRysydpvsOwoTJB3D-khu9KhfVeo4A1vlEYTON0qF7BKQeUUrRUDGhzH3jUTEKbtyaWJn_LkyGJcuiYKwuZqeM4mMz8yJP7-0N7P8vWomgQLKBAVrPMbI_DKLRI-Hhsm3yGB4oG5k7CQNjaq5ExNw_KINl1UKTLN0JvUKb5LOyJPK33-FoHRxVtL32_mIsBuWPO4FoqskCuT6ckiHCtjxiqHr54v2lu5P4kfkN1LOvim7Rpg7UhIwFb9LYVBA-DlrmBULBuiRSxQqVEpK3_76KLSQ8MlKpNqh2WCPs9_n7gbF6HgFAqXMUbV9cqxO8Back8tNpt1LSE-UTUo6yMJAH8d84B11KiPz6YhIYDvNq2nS3tDsm2I3jcBkrL1wncJJr9cXnf7dI5o07-io_o5BcY9_f0UX3l49wztOfmeVvYmdTFqO7QgeHB_uHhnhUhDlvCaJSRt5kl1Khqq4EOczVkbYJSWkfCP8YDmz0ekYLxttxD1QPJSRmMGXuYiZcQ3iA_wFbW6ZuJ1ujPUEVp8HTvUtAZwTcPPzveBTC9ILrI2KBWx2qGfK1l7_z2QXrx3Jlx6qcmrTsyAueC70uh3kLQ8_rwksoB4eX_xeyqcM8mfJLvJC-W5k0ZwmxhCoEY2fJQ2dk1z00kvhejVM7AdTZpspD_vY8aOfUIckhVaQPPGmECAyXLHMkITov67EW1cqRZyMXUIDq3rKP9pKT0rEQVlNXAktdHPfLEocfwh8l0861RmQBZFXElSufWaGmbpFenAB2M7KxliecuIvX0xSfrgEQf1rhEadBQ5MX8Gk5imUvCya9gQbWJHNlk7Q73J9jbeRX8vjvQkJDK-CqcSC0KWwGuxXTJbeCk_hSSd5AG5Qer7GQDKuIQzM2e0MmZD33kX7vHKjf4-b8P6ptbkNHOanenAGY-E6HQcPQ-4Ksz9wlOKp_a-bqg4R8G0uIgPbDgEIBDWITKF-bbkls2UVftnNPWsXP50Ysjj6TWjbLB_LedGdFLtEfdPxPMucsPnK2p_tj-hYPMYcs3ZCMhse8UcvmQKKkd14mxAOqW1rQTvTPULF2qGX3DPRu3jyMbq6eeFc-OUNqqVkz_EL62caFDplyXdyI1Bf4Njcf2jKufCz_Sc0gg0voS9y1DLKaMrToDT_CrOLMTScGhAz-8OxlwlSURxawaLm4nEO8liOTGHBtVcP-nnJRR7AUbAKR-bfE0up8uh9YiQicMOQa-CG5UblME-NlxcpttgnwtIL3xOfirpN3T1T6LgkVfmY8d6w2NjSUL1-_A3VuUbvPZrbkLQeBbje-plbmoG-RVLehYXpAQXnfJe2PuSWnr0UDeXfBqAYibFoQlOevJTGktVwyHe1ESqpY9Pxo-GFfIzcyN44YSxdXKt1UakS6xvSjprsMk8933ntKO3RSV28vmaj8MSZ6fbGvW1a6NyKKQUtXhwtuj4177ignq5pX-sSEznyZFOCP-s1uksWNS-LCr709OxVtY2oGcto6ezFC6_TaSEOUa2ncY6GdNM2TrBqSJJjDYuQ9j7XH7QSE5i-WVjymPPZubZGAE6NAGUS0k_5QiMM90kMPfQYqaMm_5WSenmIaDF6yxUEcy6lhy1B2hBSE8MqFvf5itS767KZA_H0niTZ9qcL6-Zu8_brB9MgCRrAOEcAopsMn-jktBp8JTbGA9PQ-kow1eo2nA3Aerf1tOULMGfJ0n3p9aUHk3W0DHsz3osc4rNEED2iXE31C799aAdu0a_GhHeNaZr5iElP9_bs7ORc4sAlzv9mX-wDiq9pVspptZNJZLuo-ZzCeo4mCtW-f3Tz_gUFl8Iaty8spAulsIF9W-KrZ0405cBfvEFnVPC1aJJfB2BpOileNTDwqo_jp43_HBZQnUaAbD-rw4_elX0QFaJQyJanrZjO_JoMU15Ly_gM5XVz_iLDFMr0Qot60a6ukSmKRJHRH_mgtw5FxmUqdZGNSFmXRQV24WPzFmIWvznBmb0gODUIQHorly4pJ-3lmoiPM889p67p2KDEF9o-L4snZYsoPzeQSxA-NKwSN_d-CFMXurmrw974r6QHCJokgC8UexwLmBo7IIcj8YivhOIkAzIlHI1H7nJvMRhhpY2_RiafuI6sMrIvHZH6fr6rX15XdvU_mzsjBjZL0X0Un3EKSlNruKtFqd9slypryaCYI4Ce5wv6aIyVIYldPXrUZ0fwZhXJ0xdz0k95wBA5nqYvtMmCAbakxy5VO6D3pwfUaXs996fOprWDPFW-8floa9AObmfdLjbuzvhgpO1kUIJEvqIOjaVGfCXk2CTMKvbSr7bExkLIG5F6YwYhIkU8fZdJROXQ6eByGSsuN6fhIrFmAh1K7u7BRclrQk7GryyMnAMmC5wHyuJByJB7Ezz8MMdjYEiDNm0p7c9r19W6SCrI4ZEKNcthboNKHfCKvtsG63ZqIdwKoFPzPmKypwuzqssYjL5inRxYlWTM8i69Dhlg91mbIuz9GFXrF9tWFAE6EEBO2uNh7lUxoiq97LBeha_tneG6KQFNX5YD5ZQciuphSAetJv2cC6FrO7sd-m_AyTOLUGSdizeTxoR_Sr9UjvelytfB7Wd6PVt_ruYqDzhrebfGvZ5qBClND7K3D1eDhSR__JiPtwFZgTn5pJ2DszbKD6fR8n7YQ9_Yp9WosAuTu1CtfJLaEM97niiwPe5fO7mPxU59b4-5Rj_GbLKns6gjiUBHs0tfy9Pz9pSIn3l61JPEZYWXGi2pkhha9Kcsm20NY8nvgdEVl_yvv7KvQcAby7qtcg963DrbWLbYM_wnt25lF8W7lbC82k5ruR19U4g0GLvVj2E40uMyLgUXuWrZviZ7XCe8PKl2I7jZNtNcYeBiVB0de4eosnA74Wt8Ga_UmilWTuf2K0ASSKGIHBeGZXEj1zWl9wwf3zJk5A2sqXe6Ox616hPODL2GrpD6bivNVNB0zUwpPtz87Nj26vAuY6Y6VQiHP6PWcVwZq-X8sN-4TfSwI4anhjbFIXPTOJ0iGmB_E-SP6WSJGRuHn2JFRJkQASHDzBjNcYfeG5-6Grz0UnSYNFT3mWYhsbKXcGoxqyKb5bvYnaCJdbJZwHzEIQvWRP0XdlR8ZzZW4_4r4nuG25qq-fm4qHdcdATGojPTTWxiMNwzu9Ng7N1lhBCIh9WqiqB-8FK5Ke8yP33UVE6no0XdrjPNRzx6KR6f75rIK-W555Ae8DNgA8Nze_dL32iV44kFhGOkIbcsj_44Nd9axJ45E2pJSfWfPvNjyQn15NzS68B975X7natn3F31kB9Kep93edb8m4Fb7AJZnqtLJwAjsxSWco-u_t8LGvbEWB1siYt9eV-Z1q0D52O0uvdaukESV1wMBL8ccSsjeHi056leLxaSyhRjD_SwxssniMfdGoFkYp2Y63qXmKzRuqXodsBJd5Y1-AiH8x4SYGxpYpj9fTtoeiZsd3aFnOw12EoeaxLNj2lBDFHMKWZJb7X3Aqr09hBWFGmRSSl1wr3wxlFg3JUgoEcNF6LZl8DmuNNC_d2ulAk2niAGG6oZOPR6m3tsoMSOtepdDapZ4LDXAHJoCtxC2kprP-WbjRHt2BHUIlQsz8b1HdLvGNWGs5gENWX4TsiltZz-J5rZ5hSClX6wyvPVnxWKYeLraZzfnSky5wiYKA5qpp3BRkGDdFheRlMd5WuVLnx9KSgXe0DA0RaDjIsvznTS9WDsXL_YH6Zmf3tmtHWWs-A_Rl8ONwciK293xapXj7Qo3I8q0hV-Xuskw_X1yHVdccP7vjW3GP5IqPH5XEbD3frXoYDZUvvKBhxTfdwjQ7ZL4zEo9KZQHQiwfQ7g_uv1cOLV9tjba1JmQT3L2du-DWb69s8CLeYwuD4MK0gUyvW926cJX9woiTKwLg4vr_IQfTK17Gz2RdhC4hI0O0WxRc4T4YoJkRWB1QnYPzxOze9eAnK_Cqkp22nWJTJJawqJp_6nxzCZasmoGeQ3VSo344QOH-MZnoG_TfweiU5mfcrtYEE2gqRVFZToqHTHIgprpJ_Ca_sGVtV_B7R6BLIkt67d8ft9ZOumJxW6gxb90b_8FCmdymkU7r4QHdl5m6d_-I9Eh4C7qu8QSV_IO89zgoD0KS7ITA83VKpIKM1VQO0LMn-JCLGNGUAi4pfyerYfBdranLBQld_oBVM47LsAl7lS2raQJfhSXGc2tqtqTNbWL8mMWAuQx2xjvwZtQ_3DA-b4cE4ooSGG4pv3IfBwFVHgQMBBgZWVh0PgVOw1ezHbHj1vtWk2VIq8cxzc9usegYN7nRa8b9ES4ZpcJdF1NynqW4lnxVzzpAEwacE4W_JKx-B0RmIvq8NnSqGgGCm_lnQ2tkr9Fx_otCwrN9m_3VD0WiCBCZD1yHrAlu4J47cltIY6dXdZd1mm2aB2gKj-Qta8Xye0Ivdv_HNpl8vdpkbTXzjUplF5gowI_BkbktFVSTrzY809qqcWZQwB1GUW3sHBKQ6oSCKm2LDbPKXA6FwbiJ9htipwMcEcaB5ssCMgi5E8C7uHRWomu6Hb-8LrC-VssU-PbMFU_LeMxiTUFQwh-7Pdjs_MUnZay8O_3fyoFp9v5HilDYlYdHBviNv10cbEkF-1Y_5Ukrqt3o2390XjliikgkgfthTavVbuHZFadKIjkUIJplY5fgumG0gNdx-W1CUjhpyIaBLjRFbfTz1lO11vG2Wr0xhJTYjdC30ZgEGj9FxDmEeDErTe5OvWTpcczc1KxdXl5yEsaOt29EMuRusSlfXio1cBkVRDQRrwm-F4bmLecsCRuJKJ9ODyR-UTIrQh88mCxG1t5xYlszqoKUIbGBp3dKqmax_P8CnQTj2cAHpF_LHQETkrSS9a5ednuI3AQuHqhy6NS3BoFdSfn3jM3d1vWp4LRPh8cWK8gONzVPlLskseu3Onux-XsDPVTwZzB2jp_7hGRJnv5tMjeXc7MFJCDbn8EziKN4lq4RnD1fevcM-oX_unH2ozCJwUuvaqYTY-uWa8MuPyj0tUHzVsN_mBDhtJP8QZthT4qsIBC4LLR34NFPdsKtXzmWcaTriVLkAuBmWmGp-qjgWW0dWyAMTTPz0eK8yne8oSjkpSNbzhNRyyWdu-UqqAvwBHZyZ-x5pNnY2RW17bEqhsgYsLXeHWQLkf4RAHIzfr4jivCGIK8GtkxixTJ89Tc6MBcKunj7HjgzczPywicEgUHl9Hy5_1CxyyH4JXEdba_BYJrLU71Wa5p9AVy_9tQBK1v80AQwNRY_KfwYVjl8XcIgFTxgSl5P459OEA6ym32ZYMSHlfQc4DkVpePKd3Xwmlx4oio5eIIeX_M29Qbxhn6QKLlJqyk7ZBeRLauO-nL33iBKglX1sEAnQkHwi5H4bso6rixYikf1SiuDdcEIcw5d6haHNXz0LkMp3BFibUdCv-KavRiHTU42Dzympe9HeGnyVOheJHxDoL7j_IR-Ksta_j85PzWw_cMhD3z1xWVBcv1dKmXJO8iOaP35Du3QYEF-hX0nk3olV2J_JwKpYNQrErXzRcaZeS3D7c2zibz9iU4cR_VMkJjtdr742kxIqVKJBIwhxDeD2MSJP-2SR-VBQ1EKHhKFWwrTq5kZfplzlmJ5GSmCzSLVvsQ5usuq6LLlESiq6TxSXIr0Xu3lHvBTdI5j9Bn_R9Wufk6QBnPxRQUEHRxEz-bPsEmKDHTj54oWL7zJoVl3N44vU8LfvxKXgiOf5_U7oZqYlPYHxG8eZC32utxjr0RhR-NKYaOrSJa2o9bq2Sm9TY2C3t0aXSjpXZLVXq-aVHDC8cpfYv8xhtEieXQYQOmSvp7K95sz2d7w7o53hjwTb9SjeSwDRqe_ehTtvPg0vpGBM0OGXuQS_CxGBX-mkMJ945AHoNOCZ3OQmEeUCrA0dyrJejvMyzGjvD7oBET-PCY7mE-5eW5bJaj2XNWcSMn3d9I5MJZLqV5Ybx2tG2CP1WNjwve44iG6AavvReokPvPJ8jtMJc-HHXbvI31DKV2DLSXLr5evMB6PE7DmxM5NckscID-wSwvxIdk7v5r93ymq6Yx7uNteWfgsqgpKuPCCKJck8s5xxOv-FP9gTpzYTsWCxtaP4SUsLVrLudLkPykV3uspEq27meiCJIHnxg9CkGvKL1uS9EN_Am9-STfzgM_03C2Mbe8iJkYy2Z6H6ynqDt3vGDhuQMLygMpxQeyQpEgUSrpD-9iEIQL_LSfQqRVNf-Q5i-N-HveSF-bKiGyidGkEbh_x1mMDlD2qdn2HiBlbXfnxcAUhZfSTG4rML5A45u0N4Z1iWLyUjBab8Hs7brBKsqKjKcISdR-PMLUcVXRLG1QG2ynF09DIF-5oF4wBMScac18WanJrkJUKcr3uPlN2jr6rqbxUvoo_AvDyBWrV4s5TLe7UJ-zlHW-hrjl7lU-FjkLVX7s4Hokib35gX2-lM96AAx_967RX63_aeq_vssKnMFljFhiGFAt0iL99V7MZDMBYO2PIkXewJaovfulTzADPP479It7pixFzjvLIiZZvFEip_XSnzFukmm_D7ww6mynfpkEuncBxM0aTo5Jl1n6Xo5OzdHR4mz_BORIA9B6xKD_wnMI9JLnNsak_w7UpqcbB6VTh_TyL1PoxnKsObLQJ9cwTcnsvi6BLMwqMOdmMW8mc1PRMzTRpBPM3OCFKH1S05A6-bS93jF3XN5_nBu6wEzKnVI-ykfJbheHA1SxoZ6hWyjmUVYZzWftvezCnOP28eN2708u3uEtjvO09wIDc7u3ptCMxm97mO1eFt3hi0fQWA5wT-dQUf5zKYBEYQ6EnkX6xEPqIFCltYlvYJvqqrGMzZXwFK1zfjMDQmWJSVxXZu4GiahYBz1YEnmOmhy0xKnSvN1zHIczjpoVyFOT6WNXV4jbvS1ICX3WnfdaNaQje5rA7-a4r6k9L8z-yyr_N84wAOtcMEwrtWn9YkjGIJUtF9AEi_3_AAl3Dg964BW81URtQa9zeYpoArdcNafy_IM1Q8ezyMf9gKZhJRUwNnMnwyZGm9RLhYhMhF1Y1Fhe_zfcT83wDYEDtCP5PpFp2nwWLyb0siF8R8AGlY4xg34yFWArARwPIVkb5XKtFeALphXis_tSOh_Sji0YvAc2_kwoNk8C4WAWPfYea_3fUHy6jcHRR58xlVeNIB1XWv_rBsAcmouUqfolb1bYLsDRuslL4OrELROeGKCWIOcYw9S1sxaH0j9gvlitBOGZZMivW3u2BZPL3BcSwrIce5at0yYDNu1Ug9QIwihJwg3VoePMaOaEMACRVPg80tDZk49PalxA95SQ-_DYlV_Yc7yXjbxYO2cHL4djKz0GAqPv15L2ZnJVxp0i6s_q3k3K30TULaijnMNEMobBwWClVVnFHYiOGtfE0WNNZqLxOuXLdwKizbB0i8NaZqx-URniDrCXQ5KiRt56OqPwtrl8X3gazLz1Ax2phRro44Hgl5XDSo1l5xEFlm1lu0Z1TMOSCPwJJXycrVU9WREEQ9tcr_d0FQoC8vmfNVXYtTOAaWCdfkLiXESszHGqdcSVaHIJhY2CxRwu0-4JngAWXpO_ivCTxGEtYo7yw4Y5z5VNAvdBFrtnfH8tbkj5omEI0Vy1CJYKlZ1-LSNUGHs9BwUM9ar6f11b8QOrFkMv_699OelDRBeHNXlUBvYV8FN1rcf-gYVkj5lkXYQrg9BdrPoYFh53GS_tUvoLeGCL8dI8hh-ph6ayZTX0BI9HtyE33b5mX2dW0aWKa7N1lkusR2DTFhx06o1VebAqegdmh8USe3xPsBzbOj6UviH4BkfQjv_9zAkIq4WYUwtJi8AlrAsc9PZkeyFfrQlZaLjgiLFNtox7zCRtZHZ4XwBXh-OUAyXvfMtg3zzQyRP2lj-mGEpMHbYqouT0on15wmQ_wrqrzEpHs2yAKVA0Qy0i9MrM2SqA44oTt5DqSc2zEGqht6IkvsWC1jF9zyldgFWWt5SnILi5ifwBbgWYQCJ8M_P-tRCNBJzz_31ZoBQx1xnL1N39eN8jdcDEOpApM67DroR0p4tByPF7rK8bh1DV8MgYREkDCPABE0JJoGFHohixOBDd8R_PhaVMgKjqY7uJruUfYlpHSqfK1J62TtpS5vmqRj75Td55903_6bqchbonSdzEaD-pn3WhQ1I7q7d3yzQy21jJPozQHnyOrSaFhtH-8btNFx9J06yl84P58u7MEUnIF97dlKFoCXt4kxK596GN7x-HhcG1-EbR09aR1j6cFZYlcsAFlncgqOszvekB-q_nyKz2byTIG7nqmfN9dXKeHDwSIYnssbnEHRw-MGQeKkfFbrGg6oeFc35XjVv7ojAmq4Gm419tMaH9intI5zvwRjsp6TXCyDVgXsqUydBU5rIQExZ9u5zakwS_tR8Ts-ED6YbQVFe5PvH_7Ml3GBmbmFBqsxCyVHuDI0PLQFADGB0lPL_-az4JyaBdpDh0mp5wqM8xNnFAMKsLI4qHPex91Q-bDOuft9Scy_s2VieB8uRefAGKcNqVGyO5SwOBE-BVb_PIHH16W5GHxFBOQzKflo-9Dkm7sG6GIAp1Nw6Ut1nhiEVc1f198myRnu1LIUVrvDnNbVMEY6_EHbWgB_J1l7m3d0CAQF7mza2vsZds4tISiMS3DBDuBiLHg1fUgTPYzmU2VWSXCH07dqk3Gxn9Sn3cfEXPfaZNexrHKXmM5_3JT3_OR6GGewCkU0YZVORJ5beUUiJRBuMmBPHYBHWdwG6sa-vQDC-ND8G8HFDhXHFoTi_FAf8KnbZHeAxAJZmO-DuWlkIzH4cfw1J-aFv0kyLhbi0cJvDJlAH5hAqhvxjHvAqZxwNRNPOMWO8BJkFINwUE2c-giJuiu-Ee_RNlJVbDwjxg8KG8f2Z9KTT0wvmsGGBYyepw7V6safu_M-X6MTxW9FPHNfOO2VQIxXlzUq20E7hNB_MhvWUHqk0gDfTkRpnyZQJiq4iU8cn6KwVtJ5ynlV-6plVDfL9neQlgCSVO75dpc-lf7CnYzfxGce9MytnCQ7UiPz-sFrn574dq9PSlV23hIVvEIWr9VareU83Syw5_kYq9UqWeX42MN4ZyAeOCv7RO5BdB0Ib7BWCoLRbpoNWG7lJ_iuu9AM1xN1cJAytxFfLe_qnkkHjIFev_91QJ7CLFNlhS4S3c-09CXl5Fw3F27A6GV4uCGz8KgNZX_AZtFDKoDs2YyEuTr-jitwTlpfFMiLla7J06-p0qm4eYScbO51X6uiAPUmBMV9TKzg3JwlaEGpF6Ij-7Dz4EqLl-_X0btAG3LPFmzbkVqnr_KcdArwZU9GDtFx8D6LOEZTttHudW4044BpayKHBegXg2lk3LPaB-ycnsdIX3zxfUeeUVQ4qPX43616_VYGDFg3mvQqpxhT3uuCmHIRqVz4l2ndRZvGyx8FBoQfPVdDT45yu-TJgUbesHo9DLw1SJ7iUavjyokxONqcVNC9OhMWp86pHb5K3tqm6szmPntF2wdu3Nx4BdKA3npb-MEnB-mTubXyBf7Cu48jw_3Qbb8eF7a729fNV7hsjQKd_J_n3Wr1sHGTyMYATroxaIHDlfPHi2jyMKun9d2Mgkjz2DcpXiXSdRUJZPPJYk8QKv81MS6gj8b91LVMZvYj0Igy4Tyvbd4lgxp_LrSaG1xBCwKyK-oK9s-hwxiQPAlkNI2T-mbTssfZoDBwubccer1qaQjOc1Y_wUnqPgSjOjn5gt9VBcnhM5n1ImhWLtu_4qeGoTZOnqkk18Z0dpWaaGlWj_43Rukt4IPhCIY08oS3richE9NKtZxhmM2WW2SrxvSntPEYKRr2UanmmQotgvUxdt2tLd8wCx7UZKi9nMQMUUceL9v74bazOffSe1LCrzgddjtLsJnGstCZStnHiA_7ByPgQ84_dEoeMJlJ_-XgXl2gGultY-YVaTf9PrSCU9QzJq1FCN0uMhG8ThxruIRRF6ylGlneohgHwD3djAplINZwXpEjgOg94D2I0n3OuqzaurEASBclF7SoykY6joHwB_STgbAvk-EsTJur-9OdBynuk1KslhiXTZ0pdyzb9jhPRtLugwmEqn-Qcf8rEmKxt4L0L4ccndPD9XOFgbOeJovXTgg2c-BzqgU3FLkTthm-mOs3gKtvbEZziP56CnjKrm4oB6S253KCdZLp4eNgOY6JI00fDZ0Nzr8HqTjSaEhJlFabMfxfT5IKYX6E48IvlPAL7ZE5EnFFj8tzkh6UJAWd3tIb8PUaDDW1kxXyIEUUWPWxXx_5kpkTXFF6vw-Kqrx7esu9zDp7EjEtcotFyqBaBzdsPppMKtgx9zkjYT8PhRKQV6DDb9dSDIhaWnWIqnCoSUtG3ZHeQY6FrNlAWD4BS6VBaK4HQdJ_MiJKXevez50WIJjYlVG6SAXAzlswG-RrwY6cOLO01QEWkqcTjShbg20FzBId_K6VGCvZb7jS6KED-NEt2UP-cneKCGxGfB61ReP1yaoO2hPm-cnuYONcAkgVIEDL5JWwXCf3dXuZZ5XdKtWmqVGFk-vYRXa9pu3A7nm2nUUM3m9pRctdeXOm6tD2zLv21MkWZjich6gFshHo3Sq0jiYuvnLPMwFi4vhOAKgStzk_VSv53y4BWfKYRVLL2GPLonz8bBeYDqKQnFt1waVZKcv8D_x0gnyV6HabhVT0KgpcjGFDoYYHhN4PAA8RBrI0i0MCAZJt9uOMwb2WpqAd7GjTHz4FtY9MVyGJhgx8iLMHUVUMftjpx9gfCaLyMTWl0veD9Ubdwkm9bycYgsJIYdy--d1lmJIjI_uSylPwsFI3qdArWyJr4UGyJufimmmCdlysXk20aarHtDTX14ZA_UIr8BDsT9ziEkJZ1VZZCmizTLDmguS3mA7VwiIVCHmjm3UcvQi7geejru3zdgZwO_7d40Zpz2fi_LLHKU2XNaSpG8VncNS_JP15NRgEhyMnpBZBusLTlFVUWg5ALoWNYEcvQVKy9Pp40fCkn0tyFzKgtNBLv2RQafvNtRkk0m0DC9Iy9dKxs530ANdmEZ3ZyembSEyklpVK0jJ1NZz2yeTqDFCSD8_lnqiM09MfEVSFLkOQ6dqaLYCoGTMAE_EyzwVOgU3LkMepMcGT5RlUcaqhqQQll1aXsUtkSQctvr1cBxkqZ5J16FzMrlF-NFSI8IVBa5SEq2CUUwxI6InEHiyn5ObHGn3tBvcMpidxRwSSe1xhaY1gVF_yDcl0IEfRG1C5PJOaUcW8EdaD-lTzRmwkIC7hWBKSTgIRoBBqF1oI3Fbro1yOGkG-ZHkk9LdiozADJv88JOl6LxfhmBasuggKtbLhemIzFBJsEuh3j14a9d5cdg6BDxKikZ4OFP7q5Krk-Ee5Y99gURQ11CSeY2OQame45naK0MTnW5EvhalZ3VzGM0HN1R3g7HdyD5VsZmjcV4AdyUV1n33mjjfZ-BrO7nhzE2yU39W5PB5rv4vKQSbxDZSIebPLZqu2sTPaVj-qTQItMeI1H1ZDWxSu38TQTc-H_BZzQ6Ubzk0fM6juLvjyxQ-fxCuPPzfNtbS82P_oQ9IDhWD3Q8zp8u_ySICJJGVRAq5phqpDYH-4Gk9IISrokh_qyl7UQbfeR8XhdhSMcaJOeppQ2Sdt113E0TooyZKqrH9WMuoi9A3VDIm3TVfJqWJBxt7xAOIeLLHBv7FMRKFPDMxsuRVtZoe65IFjIUeD66SE4mVYxUSKi654kcrZkNkQAPN-csEjw3GHUoWkm5wPcaljTf2ZQv-utNKNUL7Vs3OUJt8M5fB5WQUQiBd3C4Jgdh9c-F72rMqpZULGvhJEidqpU-Qch0RY0L9oX5jn75uulzgzFajZ239ILWGcJOY4GQp8GfWtegkJ8WAmAG5tDGCy8vrxQ4acgP7cmRxubYyhFR0TME6mkA3iFFFn4_9PRMZ37VjZHD6qIPxgwpvkqF_HF5nZcudafbJeci2MWVH3LT4fVfGq7FRjWEAkP_2C6Bf56gJFEILKG2CQMRjnos4HEvkQvrjfsS-x6zOWgo7syasEZgQUUIG8wYSnJRPVYAzkhu9ID2OH6p1bfqxPMo2-TTLbEJe2vak0sTb1q9rjkx3ENFQe56Jrm9Kwg1oiokG0-I47JvZ4bGMfAu2oQvtRatizb_2I_GS1isEg69HVQhOcUz7t3bifzx0VjY55kdwC6mcypy8UJujlBuZa-uWT0aNEt_xL9R5A7pJBhCdKn0MNvw-v3J3gSjOrxLlRMiPhSaPIsR21kVOVL5RxbYcK19igRGLd2WdP34PbRS5OKf1L3-KfPko2ae7p_cUzRfG7ANLPrTK3PWt5m94uB1RoF6bp-b8DTPDf0vT2m9EapU6erueq_PsfVZiNBopNHSgVUsPnNm4q4-lSLPednz-N4h3oFswiyrRovzXeUIJY-uKbdxHYNngq4-wXLOc5c2uJFWDqVwMUIoaluKucUB64-QtDt8ro-UA6NWg73xDFxiEElfYo2K4QCEtr70MspqjFjTnhfLZI1pLJcOo3VeoWr-cZi1N7SGfPhkq85gO3WsKjG46x_7umkbq36TZXv5wbuGTxGBqRAnHFCppf0_8cBet_n82uXv4Dgv_0rNhSm6CAwZJ8aZsWJNf1yA9vcO_t9_I6WliukM7HOwMTDwY4P9GuJhRNuOX6dhmFf7ZLM8enaJb4EdoCta8B7dh7GQkXR5daiMVts4nP-GBRfkq2W9ygrnCCP1Mqbk2RZE-0-gMLCYJlcpmzlXprZh7rkdj_t24y04awGkMTwSC-967RbWdKLzP_qXfKDY6CE2S-mmXlvFc6aEmBEbWFIW3zOomtaBPFbhTcI_ukZ9Hj2iSTckAOuD_zvxs7I_Er4O1NrEq4Yf2_IZbuQeQqmQV7VUCVKwFjXoYiTP6aLEkkncDO1ksDAp-Yx5j1pPg_0v4hafrMdcYqpbFRYla9RNnGp7cojAhl2f-Vk5YjmHBGR-BiUS2RdGMKN0MXKa0LDydy-Dr8NaRbMx35fggPQKunJrMiEU1saTnqa-NDOK5fc4MxFyGyBWjW_3ss4R1gTqfKUUw6ScLh-Q-5peG3TFhs0wWyc9fxu-VevlPXUKMkxw5TcNnoeVqidIR6L7TdZ-2blfN-7a6ibFbqJoE7bmIqZ9LGgQK7fmcpi14Av018sefzEqJsVbwOF_Ad0SfidKPjvY_OzHfOwUtuhNQTpEJqgvQmwWmEB2QmLVayed7kGjzxcNK2I3VTea5n7vXtwgrG4CX24p7YzOgz-F90fZUiR1SX7Ubn0laVzO0uns54vzdYT3L2M7vKXtphSgOjwTgZBe7MLzmKCCkpgfvIG617veQOanZ5enXn9b5xMbvrg92l9yFaZw08OM26qCVY2L0pFsS0Ru_s3NBHj9gQZ27uKGw4vKIkWYO10fU-Rtodi2ctnZ_uIHze9nZ7ogHJTj5gRHkdEntPDxVaU9b447ag1HM3YZ24Bq4lbXEESRUw5Ent1InnvRRuyM2V5WVUrInFOyBglDJRzoqaghGWGuKn72t_tMIl-lRXVhVpNvHCqWIE7LUmJ9EJSbvL0UTHF-u0u-cIVCm862xISwhdWo1_4X7l-06ZQvyRAgtvMbyYSns5eMxTKBDDC2GvUUvxAl45e7Jr_kAmz7dbmUCRdLeetfTd7u8hWcoeX4Tz2B_Or_UVbb8o-pzBF3UBlgR9ZMBC_ngNDmr1BXoziihpNVpsmrisMWcMGsnbbgHWshSXD3q04G28KfMZmrbO8MPEIxS_8zsjd2E8xGr7SBkgUweehpkufzKvfW21o3K7yaiZ2D_-vVb4xsYkTxcNnL665UsUdFDpI380pYHe1VvCYRSDfV-USWJbTn3dU6ykECZjgucLKWRGX5W_1at0RYrz9LqX94IdOKs6I87_v0jGc8nD1Oig26YuMChrFvm53kSxwEX-mDQkp2oA1ATKt26QUhxA_BaHlIZ_h0NMrIo8MQnjCVVCSog2jlH19YJBP3VYompk_ISYaXS6NYn-8awCKkhfDW36batfMJGMzJjuaoCwNWgA7ynlTHG0_w2bWxFTYoAcSkVBcTYkSCIdTnQ9n6d1LD1KAasAxTddDe5UZ772SeHoyaBiEM0FlYoztLWy3dE7ZZEas5yeyYwwY3SuvmTj0bhX8-6eEiRa8ZznnIh1eJc32grkXPeeSmTtZjj-T0HvnDzYi2hYBKlGST6vM7jLoncQNARNJ0eAVBfctCko-qO9JiwDC_d9-s3smNYNCnVf6-e5yDU6wAN5L9ZjpaPccIV875TGZkFyvf_tj_NhahxA7rszAcwNwG100oJkpvaqXsRKyCicEbwCxh8KE5SxaeraREvGPfDrO188wp61Nor66ibDVv0-CZFNyaJMfKXoTmfsrbQmTw9Jtnx7fIkvYrkYmBDTxMSnb6HgG754Oq392sx7QgNVLbuEWnSyMK22cz24nYkVF8vMihO4KSjCN-O_6Pd3S9dete1VDHYXfUXPgoJzc9YFAzcAVw-kCHLDEfsq5dP4ufVSh-i_uHmzWx7w2qMYzc3-pqMhRbAq-deldGbclsuQOzFgp8iMD9mEpqwpiR6by8CYIRdSm74L-bvkb6edQ5XwUvLSdmEKDBnGMs9B5G7IIQN09enY9WiIzCczr7jrN3KdH_J-sHbVJGS1a0wHyaeSd0eVlL6xWTeEE2EZxnDMgD_hclzp0jCy6JbJHCsN9fIiD07D7CwuP8ulfLn7UVE4bBvkNuZytleHwkh76tAC3_tOEf5J6Ew6tGkKDyitviQ-MEkfwXvah3CljFUWNUokez2wUQGPEaZgMwH53FYaY25Y3QbVavq09dEidYzerAuw1cy37LUyI5G__Oqmxy5EnTM_0R-pN8QW0Q4yClm9dAexf3O0LQcOKyRigS4BIHW7aQKGEZCWmn-pQPytHll2kjL0Nw6QAW3d5mggmXjUpqj28NZeWicJxLDvBNQD5NepckPL8bLfREb6Iarp0FFcMcss31nni_96rD1ZtoWeCDitq6OE2LNTfuljikU-XKZRFVUtyt7G-Ix4_Yu5LJgQrNTkQVyjoYvHh9jdt8Q5rsW5Nbp5HKldFPaI0POqi5jou0--lehh3EAi3QLMDErYSth3TQz7-_sjf7KpDp5iwF3UwQ_WBfIzkFQAko-Yu2tL8y3_j1uOD-_bBvVNzOjXYPZtb4m2w9tw_UmFzSaLmTZ_35s0O2JX4-3-WsJEzbEWeVGT-Q9DVpANE0V2EMGZqbBNNG6xQmDbaAC11WxH2nddxaQ6TPr2EfoqraHmJkqj4TQnICMwE4NyP2xM7y1FSFJPAxUojVocv-l1ui3Ihbts__xzd9z4SPeDZbTk1hXG9zqulm4QhO8iFvnkV3kUsHFSBD_tKmqGKHkDPMedIy5TgnDMik3wGvnigX0K_ECj_QEHwGzUGgMYOnwN-weXsiqasiOf9OX9Bek_NFLPtL-ryh2G6v4R_2iQX-_R0aeWd4FImcuFoha7hUjNnsgRTrsgZQzb786Q8pkVtg_zGWugj_mJg5dFyDM-3DC7njoLLVDuo_c3Pq1dEUVN00id5gmzmNZBVTKBGKowc4E9QXYoyBtCyxMNCaKIowOOxJGuL2dZqJxDcHPISoyEv-L3LYPKALycRtP3dDi539IiKyWRKLrNRAxP4q0PZRDYzbE0p3aB5m9-ZHO64NEHIcyi6LlFQ2Qd8B95UfPlo9oYhs4Syg76lOinTGo5ZJr7hx6KAj6FUGCLTvXen3pzQto2UVMc4lFZZ9MSNckNimZ3lnV0DphPBa2v1Kl19r2MfKesUAW4_xjxCeX03QO_x_l0cZ9qjEM50Mt1NfeiAYnAOCAebze_IH-cXUxfOQt4mbj0AALHykwY0ECPTH0nlNqwdkPHEydNQeCXu0efURLlC6_5AjBanFSUdUzYCukVa56D73Dssvv91LWk7BmrMjb6HEyNBqv79JzkNy1_Q5lnMh-UA90vO_44TwmO5_KUEJZKM5KQoHBbCOjfsHwEsFbMPTG54d7HrGPtoWhhYA0OjjqBmsLML0q2ZpzY5f_sKbHoBiDx0uUMUpWJeSbx3wpsOZd_qWIXzNfGDhtd59rOLoQjVbyeL7jHCNZLXb8OZHoA67KDDOefWhWLd19ZA1jDxXGSsOzDDV5m4Uratajq8LFeIJgThEytLoKXfoVsnB26L5gq7UJ2f2fgNzuyfxQfKGBfYRMxHVjlQxDfE3l_2TqozRJ4pW7S0MjNb6v3XMT8xdF-ORtxg5-XDJRhzF5tFP7vDUxoe93sxmmoMakdyZrNl7apJ0DGE1XE3ag-3IE4swdmsERNe1zBXfZ9prU2grgJRQVu10pYTqlRHDlI8ETF-U4jmd4Wbf-ALr2muIz9nGjtuH_Rp1hxUkROvJkB3EUuPKDv6kutefN5nWAA3NjLYnwf5beIVBtJ4m0tydfGq99XS7RVZZr3vw3gynQJZJmeIu95WhdIyIUx_RQBI3oWrJeYidESTH-ZHrMuM59atjZmSxKPvYL-M9nRpmP7fT0dIsEnJws6TjqhqSEvLzJqL2ROZ_quLksRhJgu7PY7aMdoc3gLIHdC1P3Hx87mfB7y9m0K2gcun5DunhEU2gI3TC9XTkdr1qu_MaLs7v8d-kSlH6WHq4EDG2bbHJmtE764gEO8x7tGoy7CjWncQXWG0q9cuBRpk68tiQtokyZPK_tQsXKlh3An3Agwr9JN4VNX9oI6jV4lhHQBJpSUeVCGmJXk6et735glY1mc8I6qe30-z2REx7PJFnnmifAmYqI7_PPRFT_t96LrW3KZioO3sDJbB6BwX2u49a4OK_PK1hxkbK2AxMkIoWHYyxqIAv__3KftfS6Z5ibA4EzCxtx0hB9Grzllvl9JQCkwUBZRMlfa4QNVHzTgJY4_Q06-wdOQyBgkIXOPKr0t_gVbkSHFm7GziJKQ6oqS-VRTokjDvUjq7XaHybMG75EtGeF7N7z5bakyRRxOTsokSHqv_Krgbbu4886moy6flrv2a4Zd2JMSA0b1LhpbiqS-GlyH7h801jpphmpUecu_ojouabgMNLKhS9T0VvR3MYaSnH0wUp0fkQxaUftOWV0dYAi7Q0-dgg_PGs_3GNar9pVJQeFEcoEpwHgWfvtWpql07tkA9gcM6VBwP8e3eEKp7pIli_utyktZ-kBiTq_0BbkvZ3A8lOrp1cmz7WkF_8q8MN83jDpVfbtJEE-RhhlqG0hx8VoVtlkiHa5rj9sKZXgF1s8ed9O9_nucSqks__wcXJXAFQqg1YCj-_fTOOSg8YsoE1tiR_Wwb6eTqKg0Zze0ZMzrfEgL3g2qvY2l4t6fsezEeMH4cbKWS2osGFlPnaVTdDak5qtLiQkoXUm2VmhBwvjDzxJBrC6t_KC_PejEh7zbn0f3Rrk_KYKDcaG6tWKtsMqwrfqoulE448jCouBmVq3UD8gksU2mN0x7Ha2-83bPhr6G36gIZ3WYKyjZsPks2xvWsFWRb2bYeJKUlbQrpj0A_KUAVYr1XzDrxC09ieIzbRIiJS0Yj9aT8XiNbfXqIYgsb1A75j7vqILRvwwJdbQUWQCIGplHhcVF8nIz1TtTA9em_iyO_7-DqMBC90r5lcSHMnymsHGPSPaID2opPztB0AUcwEgPZ9e1c6gefhy7v2FVMnxswI0G1vb_poiR3XrnziMnZUSUamSV_nWmPZNZaJLA4ve8K_r0GKjnEvudsXUDeYBPgOVJ65ZQB_6jx-9I33o4xdQgE4LYhD5_qcDpZmy7nNW7BRe8VfuqknWF4yVU6k7tUIjQCvU82IKcerUh5dldWG6OvXRMxahiAtdnLTv_lGo2MOKHl17-YoEEIoWzRgFnu_LDYBTQ5ihaDcLbfEj4XiI6Q0Wlo15avFLMtQX5q1puwMO5nZ2UhXRJMMDCiPUuoYrLq4ZhaBPJwBi-TEdPa8xoh95BCkPW-q52V6CtaCEQaU9Ci5j8ANq1a_hqdipdR31eCLY_-Bjs2o5KkcCGraouNEgB2ANPAdB9258OGsc7SxZ9KUALSzMTPKRJrre4bfIAudgftakH1hJfWA4bdYf3sPgnj-9f1DQdJM5NDn4cDQvRw2NMVlmPFIeylEteNsyf7YRyq12FFPKp17nlga6hTEeLdgAd6rP2QG5vvvW2GQ6w3QijKdzJ9rasOVAokatcriCI3Di_o3gsFYHvUK9A4gM-IclNTcUvPFix3oXJ79z-VTNzbgHSoDYX0HRK3Q0LJwXcqj36w477uodJ4TUwXMjYhRdG1gKFkx9jEhsFA_x3ul534U4vzu3MsQxCZXYo6S6VoxiOUOJ1nyssmj7xg2PMWc19l18a_Q_U4oPXFp6rOAmrVgJiIvgrBgSr7V0qDKVOvM4H11bu8vX8rXTOomyGA2lKKCDaQzCuVemF92CsQbNWL6v7ERgjpRb-V2u6PK0J55vchkAk1ZwWtHaFzEYGoAXk1s5AjJCDpiPMFAJoUmZ5CsiHGgXrPXl1muWo-IVKeEOXscayp7bZsARwFYQI2B7QXRECinIr7r1k-fP7ZFFOjoNflSECk7Q9M0YZmk_EYR4WgZw9Poenmn86YCjAV1cttuCt23oBQhiXZYyUxHeDt2BHEk4bAcMTirYLVgni279FBSad_vkZJE3S8rN-pQjENRdQAj-rVOuVj8v73tMDjS1hwY-lJKGBmliqJmY6drpDIJMtC0PAe8rjQ_5sxnBkIFZk10FboY2_VV5roUC6h5Qb1EYUwkDU1SQ3DYvB-wfaMdYv9K5AjlZaKQz2jE5RPLD32nbzSb-rsOhyF0lVeVDWiK0DWq6fMBFZ29Q-9eeSmpKQ6unD2-YYrti8h1HJtVutxwSwO3j_hB9P7ao9DPwc3gsKSteqvdpRIuZrFuB8paJ8XL_sakfBeWYy7WAGzGKH4ilrVYCBWdYHj0PKE3s-_VKzgQPx0UERYjGUUCNBlvX3aZTeo_FI_4qCGTtUmddlz3HFUMUFscNsnx18SWb_F2kSshRNoTQ_7XFa0beSCELjId48akCSVN8E2iJYriBhVRIOtY4UiTUZJOFNIFTPfYXCnggRjdk8N3uoHyDXIl44bYrBbfCcsw3UeVJ8-1PVLqdO9ohyqtRRVLL-BRmE2wSN0dq_ce_6fLl3s0ZjU1fzHlIH9oIMoq0zIX3Kq_p97nm1OKCsU-j68H5TmRD48_aHZvSAPwERVlM-w40ilhDGb1pmcFEyfX2DZ0WUCU2BWkGZtN-NWrmCeIUpCx9qW400HMv3pUTmT3yGO84avxQBL8y2p6-fJWsApyuY-szdQQ84SzqqidqWSzbEVvnAy-lUYSTgz3Nw_K9jDDBB3zEIsXnNRUGAopUKoJ5t6z0otAg9yJ422Ne4zOEf4DpSsngPGAaK-UNY1UfFapId8X1Y1JeCENHRk0vCWyjlhrdsCXlB7QvgXrG-Tyt0N8IEsP1pBkjCT-I-sAEyZ9vGC7lnLW5RnMgueN7iwDBqZWIgyB6Bo0uQunaRu1M4uOti_SVSeZJ6jxyEXM-XAYQK8TXp7ohlPAbW0DnLXRBIa3GKBM7I_WSmQkZpvGtY-VI2UEEWgDsFnDyfRzzsF_okHzbe4ia6L2Fv1eJMSrgI2K9KFEgb0_3bPV2A0U8dkaDhjTUATO_Pbk8o370i_-cQ9OMCY8Ro0QkGdeHAJtCwpfhAZQMEmKtsnFxwBwNYsh45iKVB4aguF86E7cDoSDxk3VEm4f9GzDJtR07BiCcMK8rlC5hKfD1deoUMW_KRuZG2f7XhegeG6o2dN0xRIY5PDLUTCuowpSSE8PW3az-X4BpolawHJyhxhOvCHhzI2JZ9TGw0wnc2tz3TW8u2pZZBQE97P8FvrtcQkBNHX-evzhnDhAbd8WKRlNk7qVpZkL7OlNRoBIqjVoAQstw547ox6C_GgLyKcEu16dgrPVv_fj7Y5hOO7Hqha7NHWWiYcxpY37J01PN0U75cqphqUdObyioFrFHLCE6GFhWBAxORAa6lSEi5DpPPlAlsR4daiEKGCfzBPfIH_9WejXWKl2RosGhZu1jAzX3-d6Y4TRXDQGGIuIa1MeiPurcsLZfZbtlRWFI35dq7WACYoUg1MBH-ULyRoZRmp9p2b2nsU0bVhCRUAZfIuZs-AOGfR35KCR3EGeWWWyZcim1zdI_4ZwJjKcM_r-nnl6HQBg4oLShdvCFX_C5AUSTmMQ8TbWbEMP4zExSi6Ou5GxEU5PLPVP83oZq8imcB1OZoCYB7EFgE4KuTdhreCUdrH5fChaS6JbXwEAhuQsHFP67ygcQIEMeDgxddeYNd5QW1pINXBB7ADk_WQ9pYTlZ3dWojVKF9stPWnTYgy22DeAStDTFIYN33OyYk8CQrDcxIhlbUlt4UO3Gy-r9X6fNyQrpb9KQq7WzhFELcWB01TMj8RzO-1oAlVqeu9XUSob7oOztHiyL9GSPeFw88GCkWmXrYGWHpZ4KcCOdjPsbj0T0l8JA9PT-OF_BEjVw1BL-OKZSzf8ikTPbGSY3xYuhiKIpMqyW-kTkwOGfujRGmK6gqqju1Ncncy5DNju51PVQ0u1kv0P3lewMDxJpyaErrML8p4pbMDjadoK5iBph1zzfYPraNYIQrOMSeQG7Sv96trZmeSZLW0eZdth7L70buEULfv1tBINbCEhszCv8LfWflcPo8eApdxmfquFafZYH7-QVlwhENCIWBophKEit6KpnsehSdZXNggD_UiwhtztJXXT3hskEj9bQjDX9uEvqkOliGvZ8Gp8e68RCLoxDrf7L9b52mFjggThT_dClfohd5mvPDt2KvLp3dCzVoOmeQpa0RbGJByOOX_wpxLxy0I8SbzEqCA5yoPbqwvE7UrnRiD9yy7ToB5_0rv2UJFM1oNb-A0p9vbCKkIeSx-mruyBzDIoqnr3lukohay1FFavpQQv5OBXMJEC0CBmSSShjUHzniUOOb1xxxLnPxeXPtaKXN8WBghEvilvM0Z_b3348pOnV-esb9ONM3Ko8ruOuakYhiuB1QtZ367m_5uGYOG3Gxd9jg1IKwtIN6Ymy46qoIkQWx_oc8LUmmI1WM_clU4IiFZdjLKDdU5AkdywVJu1MrJS7H_jExvzCgxGEi0I3AZBHv4nqqx6hVN45_mgtDrwOXPX3GVPatjGzClRhLBozO5rJyb9nhUOg3Ru1yqXLQVeKQcsITLW7pAKFvgxjYoZMzmaaUDcmwLyKsEf0Y0KCcMUc5eHqia9t_7HO5z201q1iYUvNzC_da1jB-282bhiEwvC4CU-SrUq78WjSj6nOTkxXUspp4ce7U1dPSj_biTsSFYhRCGA4V099raKxMivLqznTX8D0LKt5hAiOtcdLa7qzUujzOqdP4oDWSNjSaPLFa43G3Ie8vyj5yDUNGjn9G_qSi67WZZ2GbgkLkepW17veg42T9Q0VpjgJGmet1mKOCWxm0K1xSmnu6hff4T-HtzD4W1OyFOPgAI3THJVSxGgKuVMd-qR5MVTIBeHT4gyPEs9KZCo7Yk8TQu1_jlMF4hS6zrppybs0-7i-mYaCszRcSpJvzAC5XcyAoM9GSpseIVgCYCBg-O7A-njsAtmu__GYutO2DY6kp057t62xZ-4SxFa-cWL76GnloMTcrzrho0MO8l_j8VajQNAJ0cnuLsAG7E2wVkHGX2V2_x17awGzWhOm-NylJTnA0lKl4eqUW52Yvob_lUGJYldcezwgf9ps-2s0Qkltb9KgIP4ozxkCWIIvypCunBVlxlHm8p0tN5OV1yhUO8QiGyPt2aQF71TzolVJprXkkqnujPADzqOshfqzUoVNZbIg9H-LEAH0Y2lL30CPHpOS5Fy4HlkYrt2MbhHh1XNPBMgEzaJ4ox11AypW5zIVT-daH_k_XEubAqpyXb92Wso0J23CujQMceRVAIcWIxqNFrrU3PA6a-2eOOOzyhR1hYk5iUS_KODrxMYDjhdUCzixpyfQe0MT09vEGm9jaknOOeV3PNEbwK986sWhOCNmagGSb6NMu_MTvEiCU5oz0Tvp5KMXVxmqo8CaOgPJKWumc1NIHMoIBCbNBQbHQC6Gurd_eTyiA0gEQ_Mm0LqHj49RKrK7B_IgM_k6BjPZnJFA-JHr-BQb5XcQTSztb2bB3ioZtuyTpmix9PM4l3Taxga4Ys4M73iHa6OewR0QFW-yg-RyC-bSzro2mxObpX6j-Aug54qf6ADk3lY9RoBNJLC3I4IS7FSYUD4StgruDK6vKhHqlGCWNZ1evGWKwUMi5ef8Bzs781U1MrZwtwNzXqofXrfiUjsIgpjM6ooyNlQmAb1k00wEZIc9bozDpLq4J7N_UkavpJC5DC1mFG225X3teluWadCllsY_zNKAhXP3niiWBEL88xYHGq3xTTO-ovBwV_W07O_Uxm3HpSdDCLq94yEibK4wwo7FQC210mGNGHOpw5s3P-EkqDQTUeS0DZxnsVNdXzrqIZ8AlanwH4c3AIHhueqwydCI0ZD4fYHEuXr-Yc-orwxSUrqU9iawYkkXLTPMG-mEMvbvrHCQgqUdDFc7wUm8rpyj1i5WUa_WBdG6pB-AJSutw_zqfWLX_gTj2zwqcgegGORZ7tVdEa9hwK30Xk-dmaPJYi-mFmueNpUz30YYuDmo8nKI6pS8i9mmCNhg2WMIKB9NKHU5CJuqEm93_DxNrXUNi5DKWfcWBmT8Q5NzK_90Im5in6p21SIzTFVKIDmi0i2WG-bQ8JGfhhLKUUmFHT5LDt1HsYBi40znNEaDnYoneHbOhZxR1cQcGzvZvLl-PCvHDbtArMZHm0SEZvpLh6mWaauhvPPFEON7KtqvMmNwee64dggv_eJ5XWd80RupPUNDgvZX8JF0RcnM3ycXXJbciW-kmInACt6Iz-gptXfZGn1X9uEcXQFpFRRcFKF50QRLjdbYFxrf0jBrEgo6pxio0dJzKH4vh9lAx2zdeHLt6b_OHMJfdrBwjm1B_FH9ySD-uFbZI__OMdtWpYpLr7H3vP03Njt9OQ8TPNbhWxkmDdXBtYjyBzqCbtSfLhVj-4AnYZYGVO33FhzByNpRFUf_fWndBOfuxigLlAaE-DMgXkhF4zWKgF7orT1Do4lADtw1z2Ap-Azaz-UOLzfS4wv_cXuhcdZnjJDOyvMLrkFornxV6vlsEJUC3RQ715bTc5tMGVr-q-K4bn5IVPbG83xkR9X6ODUfMbYFftqnUyEfajM3ttDn8O2vetS_3DjktsrcEXhi8BIl0xlvwZF5DBfjo3aCNDp9_QHhMkVtFlzubFLfZcVwil7FnlzRLZF4-rNXnH4Xp9cJhN7fOtoBoLScPnAAOX_cA46LK4JOtnhyFOWSbRNXl6qD3gU9ZXhPkP29yPrG9KduVbc-yJQWDwGA3_vycaX6I1aq2yfghEnhAqpL6CwpzkQG2VPpuVzSWyknK1h9iX48CG-qsA5eubtUbR0GhvB4zjCGmnpdq2guyRBaUJNURiwURmhhBOrVi_KXh4esrhk8mbgrTGhbt-qC3MGagrmAFmqbK2lzYFohGPtWclnY_wNBaPOw-MAUlhdQwV2eIxNOCJfg7nss6KECOE9St8GK6iAvQFQqRNqRP7h5EEvBrOJ7diKmj4VvyOGMoTfaw5betNCBf0W9LFmwPTyVXxPmNV0D4mZzXrOlVAXSjfaGk2hNPLeyfuNG_PcK0R1_oUzqxxMdGJI2iOUR6Gc8ZnG2iuc9TskOQIrYzkId3M7kLPSB1UIkDqP_2H4-DNy0GMylOWzxHNnJtbTMch40Vdg9hqIM8KUfdMnQFUcyn_hM5GxU4Rexhdwkbk5Cibi_SJK6xjBpdpW-GW_uJl_o8t0M22R_K7xDvLNQMgfUyca6kTMtuHPPz7i-sNov2ao4aZ76kPsczoeiVj47k05lMaeSMBKAOFvDbmDl2YHUxF_Rcjj0wx39lo1XwlQgnIOe8lxAT-DtI2CHTE48jHHVIL1mouvYiL69Md-9hPH5SQrV5OBRSIHfxm7m62j8V7rRpUJgoDhVFjHP8Kcq-6cMlCaRhcxmmqO0vkUe6zULT-ijUe2ivA3PkqHGYBW0QN6a6B45Ig8IDjvGRUqRgV7HqkyuDqmfg_798xiBskVuu7ZK4ThtOZPt_wWGn5OcVTIh8FKfxOHDeDP5l-CNeC2mlXkOnxpfm4Y4yBgQLq6MFBgwfsKUNBaIT99LuSb-_GisFHRm_BbujzydutQwvRfGEZ7EbluyWGUpTCEgoTOzSBFQxxPD3gVFWOGTtsmgWHtZEUwwYBtkezRnN0glysIWiKJ_y6UCYDYhLL0E-9DiIpMiaCV66BjbG7LovNXo8NzkCbFhPVinwjL6YozPXZZ785I6INKJM7Ki5erq2IhaYnmJ5JkiJELeheSoPw_WePoRPf_QcGxeh9mjtMNPZbeCayjuA4LKvUNwDg9JxnqyRWFEm9seQO_Nnibz3LCVf1VzpLnt7Nl_id4z8j7I2mAk3HoMDN2_ay7inJDlGw3wPpJoq79rU7ICXW_MxxfoFMRErKG2kGINmY5TcxD6UwS0LJPiPy6MUd2CvmMUv3sJvZ7RlP3IFKwiWNGn38rV3BFzeIt6faZ6ly68N46qMU66S36wb0xI7ovl0ILbzo72HUkYbyFiCFgRwTKfZLr-GLb17k1cmGheOma1d72yyEdLfSTsKKIQ-4cIsz4upoDdGvSsAgTRFUjtfLeY9atYvug7lldVsOazlB4eP10faSJs90uzr2RfoT3AVOV2SwluLhjl3BHmCuY5n7-a7Rwwe9mW9LW6cZFp-KIFoTlhco2egbAOWtP0Wgvf8AMJ6le1FhPKzOKX5fMwwk5C6BLh-GeFfVPsvZwQSBI6u9D8VxY6jTq17vAjF8XbioWkPeUy_mruHdpxDTUuz6P8TBKSWpJgir8srt2elA90ZXSfWSXQIIKKSc9vCcmCzw3e-GqJExb5losla_MDDY8rB9olC7xGo7KlKkppw_1F2wDdIjOoUcO6wLLKfEFd-pRe1mwk-OtghZzpqAZ7G8_2tbMf0oaXQX_CBvx4nM5gdtW4NxAh57ADL5STgT8CQZodhTzoycdOtw3pxgRNqirKz5Jis-WDxwgrN9qUiVTPp9Z4YVE9P_lB6dpHiKTC8TMnRDbdj4SNANIJi0fgyoUsMDHYTV0QNWAfmoGDwAiP3JDkeEkJY5W8-gmGx8iFFwdr5whK8zpLEv-OW8REBJPlTwE0M6kqJII3Ozy2Vv_YZqlASGdN9ws2JHANUhUgtP2ZN-n4Ma8JV7snjM11QQSeQ-YqYBqMJ1vSRsTGEoqD7QU7aRgFqUKZ6usSegYVL4rhEw8gpNbrydnPFyCSjb3Vi_DIEUhFJVh2hOO_D4Mo1nCUKTOFYW6TBkMs398sDgxZE9Z4OQHk867yIu6o3ooUuWKdshcp5l1QFzmVATe4I8t0xCgVTtEFu0nU3Gg4Nad17N5bDNr4NcKIsMhU3u26gA84_CP67Hj3FPW5M8k4_YEUjsHMELI0xRPQekpdRV9LAmn9HOpIPimxrcTfy_ejzS82iNSzJlnVXfTfDVu8zirViUkuFdgtKtI4P9QcWwcL1sM-zQuaPLEQ-ZZuGkIbGVbXy2K7dGyIiLcdnmwO7-J2esto_kNIb-DiNzBXRI8dR_fSiWc-KQn_3qI2zRbfLu1COXSo8LRNbq6LhgjgP4ztTOvy1ZZnLeIGW9GOWwuwrfSSMi6-yHAMTh4bGAep9xrJNyuyIo54tMe0mQ6ONYmVmG5sSlLwkcvK6Vyp92gfsPhsahSb10X7JdCG6LUl8dKlVAtA5H-O3Zr2Et6vPLX2qSZhmg_MV8qXyYzR5EndX5PNCs1QcyO6MKlNyoPw8EngnL15O5LSjqv2ij-eM9UtLLCU_BaZDsJSI3nqLZ6q6fGgkRN2o7gqUDH6C4kAKmNFN8bMQ88kg3ymL2T9tSGBEl3GWhuRn4zZFrzN4mhgXNssvWok1WOSMrruKynAZPMjVrfIh--SYliYMJ5QbFJKnKOKUPf0J8HCoE5axhqOfAdiEfq9aiufiGdzRo4JzHe60CSLiNu0aUEwX86kCQ_MdBi_142tSdKO12KwDIqAoF1SXvMbm4OSm2ibdqtwdBYJw0qUPbnQLwK_D-l0PIjS0gbOrJQcLKA2K1KcsZZdFJrtquwPso-3wkRC-aR1uR_EDh6BGbRImllVcB8_ozLD3f0djItPzAjSG_KJsC6KHMxaJtXeeK35h01J-LQ3N-dZ9uW3ESOP4vIXsaCaQ14tA9ltWl05zqrUyh9Vn4Ly3A-QWOq3oG1KMRPWZKvs04BO-kkH7WH4El8pXAVvTFh4gxNicWExUttxzoIiyPfojXgwvHktZmJL4eaIoef0XXtP36v1zDM0bHC9yuCqnvIHUQZehwvDZA0RtNfA8S7WY9qzwFkwdK6b7JAz7r_oTRTl7XAQ1w_t3eO1RyUIGMMNk7w1tTJBt-vdENeQ3tBwbTOGbLUlOCPQ9udYhJsSR6XvvrUYZO9C4DqEkUcNmmSbaB_ix_svA0M4zwPfU1Mntv3tq0OT-EObTMGqnY18p2nU0k9NZZF3_r5NNCA6oFwrPxrQRMDEWvgjnlE0ROJ2shzdZhFEK8iQH15Zva2d628xkb87f4Ri3llteo5Ie-8Xs2DiXuZ3U-28E6KE83omIONpBXq_ocEKxFqeNYdMhdVFjqXG8JMU7GGW8iOZGJ9JbyPlVttrIfitFZL3SCxkdU_HSgCuEhOh8jjB42tM8CWqkk8DiW02POW4kMixdFV4XP6wI0UZizJcbikaYdmzv0WF0p-JuIrg2o76Skn-uUEI6z-QXxwk_JewsjTR0xbTafMICZ3vVZojIUsr8CLOdhmWsr439cwMNeYVlgkFcmfUF-rP9zJh8KcYiP07ejmWiOkQgFWKHAI1t5nsTVzCZlHogCdpyMj1vbTErAMD_oOeZGCuB06L3S3eb6Y52P0r5ukdDZwnyU-xjGj7ALlLEXtaaCMtaZEuIuBXZtfpAyNp3nw8KBh7ZvRMLzAnAoEF-L-pXTOVOfHSrWHEdbCUjn3JqUIZvCh7hHk1mK-duDtdsH31SJucXD12AwNmVqEClEoOHgECm5Z4O1cMJ6OhHVCff_JPe3vt5zTa7BglxnXpuF9jNj96fyAnzQKlsfhR6EWhb6u_RvC-Ft-146EA0zNVRx4Gv2-vZuV-N33U2CET_PuY5K1-mJ-99DU-I5XNo7Tw044ly09rLYSp_aeEX_od87gjJeS6gTu9hc2yYHpBa4iwlIYxoFDdHRpiKi5YiV-xcjLkqFNPnjZnMzPqIQMtWYjNMRfIr0Dejv5u-bTFoNwYt_4s9atHlt5MiVNRl3hysftGRQKgtJu5NYBThuub4rlDvNL4sygfm3y3v0q7gdyBVw-L1SwamDjZYJE7dc67tPPDBNIPx6WxeIOUH3liWAg-o7hkT3LtApKmH2PibpdIHY8rpzGzIeBDs0vGJt63rdMXu60bnimjopWRUti-hQhRuJC0vPufrG7AMpYf_pKJwzAxGbp_i8An6XRlmjVcLW7SgTPO7jUda8GYtHPbrTJWiQRvFzFnl-PnQ4ZOxrp_eRnc23ELsIAG2sAeAU9pfZP9EUsRC3ijMlo27rpbjbg42UuSvSpfrPsWJbc6C7z329E_-2VRU5eLfgOz_LpG4_eyaPIxYzPGi5Y5-OVvXVGAhqa-P56ry_3iQ469zWPy7DDP6855c7SgcTAnvmD6JKHOoNsfJXlggcg83vnt3j_moSMjNlbgmYwFkvIqXEYW1obV4GIHeV7YJCrzi6kh7RzIqApm8-rtdrkjB7UP5g8n46zz-MLvqgRz2BeYQMHx4lklG3KuVAKGedUlPGlmu954fQ2kGeURGJ4p9r2ec8vC0TxsOs9nZGoAnESaVKr2SP5FGBsqkJRlLTw7z9UR3FZVaWv1OUHY6XgNedpqUwkupSN26vGq3s1HPv0CCG_XTW615eRgFw4od8xB-fAmTmf8-uz8Wqq-QJF9J0QY-3UjWfZKENxlX13DbAqsW3fcTV95q83cm_LLGiRw2Ry_uZ2X_kgPud07Tc2YuFaRmz2LLzMU5bYqwjhhlLyg9Eo2IvmPuaDmk5BSTQKS2JhrcTkN2hkzhTtjeV5lhrroRrOO4G34lhhWf_DKSBBlfQo04bIdp_80dTnk5jTOuj8OPxd1qtSWsFnYhXmYzkv48_hwjvhkUM93dSrpjwQKc5x5YjKqY5ppGvk_WBFAlizUJl3474nBq55fq12QE828V2hvUoWyOZrYO0qa-WIVIeGa5dfcLXn1wxib-WTGTNoXaNZglD-0Yt3h0mSIBXG3EeSWmmk1NP2tXL1LHrnSZUxNpjokrnep2jl5O5IhGnC9VTDkoeR_1ticexDxMXzhdwYs8HRwL7bB8j200Z3Xk8QMMnU1KwmWuOMB459ppfF-RCZu3yo68wGvsKI9r7BQ5f-r2cF3VhhyAiWji-f8JPpwPzJs9Fv4Ne40UBUoYCcGipYd35YTh7yUArNLD2MY-hf6LpBZaY5O7OavsKOjY-TAc0aL4dDNVxezPTVDEz2o_ZI_0SgwUlaTgM0aMb8Rdo5CQ7TrW6bZzxJ72GPEG3BEkU00Gg3p8XxLv8vxLOghu4uc77iqpk_wEvUsieEEejqZgVBPJorD83te4QVdoMoIQKL3JRlLhs9AjOlibHUKDMMEGOf5YCgN43r_vNz4ouRVrlK15luTrck_vXUtda4QWUtzE92efEPKQvhAxkEVMlvjddPOS6ne25BOy8dftRMNGDYJ4y0XArdntUMVRmEWH0OaLMvhIk6eVHwGwmMlvFRKtMfuDnta1DmOJDbs17C0VGhT1nZ-1BjxWhvppq755k1DEzSQox9xuoB-eblITjH8cWlMfsK4_D7Cnfgj2Y5rTYEb6C7Hf5qhUnbNQjkyuAjeocfbk-H27LD2dLofysfoUCp9ebozcNCcK7Sfjo4aj5u6Bi6ts_DTf6sTSYKZtOFgh9pAiJQUwBestKztxdgHbstXtqllxxVK1sfWNS7f6gIiOTZf03hQaWLweXnaPn7J_4hU5ZFcY2V6dHUDuWbwr5P3m60pxswOD5F3PaIYhu5GbWErJTg6Gpoi2mgi5NVJ69MaU2mfilDMOHbvt8hDKF25YckIPOD-ZdZBoJ9WoTpyb2U7jeR9sxI02CNtRlXcJqvBGrVnyxkHPl_GenSPVTGCY8oOmRkOXe1jdqVILG9PY7OQ0cznFodn7X8x5DXcwCZWM7op96nnvO491m9ESjCsOcavDsFLRD0tDBnXaY6VdKS_e5YYwRH7S3RwemNplA4Bj6IfVrY-NWwVIrCQQXcFISaE2lfmCO5sSWvmM29nXYayBkJnreAx6sTqQ8oYbLJhdqaNBMw_pefhB1XulywFThedIQe2GCfH237LByHwPnnDBEA9s15s--hmMTkWPyAP7J2x-YTEDAdXSFWO47dtzKk7pW6BW--0I8VJ-T2iNul2ng10M26hIWPa6s5HHM7Uf8JzuwxKOAq3yCm-_BqgvPmGNEBuRtspMHmr3JKuHGB8p9eoq4JnXPXDd4CopnhWVnnA4_uxi1myo3JD54a8ZDbKiU7_8Ru_aQptY_8se5Is8ZLegqQm_hR_PDhSwSt7qQHoh29JtkC8H9K8pTAzHfoJZL7k6cJBYJwsnxqKvSWh2DRg_dCPQM4_HeusGK7I1_HpYUSXSu3kXmppyFfUUEPZL1Qamzp4K0PuPa3hJYYjCnOf3o7YUncfL1MJCqlPh-atRZSyMzZSyuBIoaV5789MV8Oh2Z4FZrMs2XDoA4PKcSGfCt1LPEOnXFjPVbnlycFXZL5lZ6ehGk-ldYOmTdsVfUNlWPvq19mc77asw6Dg2vc_gx9g99vcYKfzSmT_ZDURHQMRWIhRNvIlG1OI1H6po-cefDek_QNLNvBJWVNq70h7ljyYL_3bCS8T-OK0zF4TUeYZRhFDuNrskC99pTAuKCR6ShZdK0wEJz_Ls9UhynLYYhZFjvBwjIuTMBhUeVINdqTa5-JbvxpFVVaUOcRssovUA76Em9lOpH7mJLzqgvvaN2ScrC81_qh9WXeNQHaPYga5-EHSFIITMDGkNBIJJ5STxvxnFjKum-vlHkHbq-cwKcFuF-uN0QdjzJfn8zetDuB3SB_LQAX14I16f03-oec8faOPdL5dxZatKceN0CwZGAzf0pzacXq57Ac2i2D5xOnJUHeXJwjxpysfjKmUQLGxfVACFs3lAuTEXmkuEerzLORY-qTYP2HguObweMLuO_Cf9rnZ056BW7f6guZ1lDpoIdTYKW53RP60vftVfsIpeaww5C4af0g32w-ex-9BNFDM5XnnLsHCk9fkrstcFfcksDaT5X5prPA9vVfAmey6p58k311X2RSkiMt6h3kACxEQ4X0PfIS65qolJjjAvT-pPnW45xkRQw7PpSLqkKY7ZCoktDxE5DO3RO2oJV6BDTS4rOs2UHFM734uhtze6jKfM1NMCR3e5-9vxNEiegmJVyZkrqOCjUlB5rmux5oPf8de0E1bLH-zysXgk3NLXmGpTtekqGLativ0VN1dNQXHtFniBKRW5TcSe7DtY3ymGou3hUS4afxkdqFZ3Y3MmGOF1f3zIULD4oK515OhkLeUmOeYhzJvCgRekAP6fSCLCOeCs3SvAvC-XJ5NA3VAOSImPjA4RbI_BxjtUwRZRUoguNfBbZK9oYkNhzW4s3sRNx_jEdj96yw8HHwUQcaSDGy_TljbMZ-F4ZK4GLonTH6mZwG_GQk9H4Ur3PFPRRnwgJmS6eBWQOex0Rl4LcBwH3q74pAj5l67VxtLb--lujE5c_wDF55SdYimxM5mWyEJGE9TLkb6Fso44eAMmSieGkH5-gAAzgXZsguy1GbaU6s2HtD6BvS-GD4S_j6BDHB7u1X8_8OXI45R1HPdO-0rDfxHo8w4fy6HUJbrnKL1RVjUPAD8FK5aEGRboFmIObEzxQY_ZkIkjMMEWrW5zdkH0VKzrhhBXD3nbjQlUTFA_C8zG53zIYvXaBZ7djrBP8hoGybBmKB75go6OGcqIGxTNWntTJI6HRelupus3xsTcq-PWZIfwdaZhwxCZToG6AtiPJK0AmMyTqR3UtW4ZQOJ9ZZqm7ouW7pbE7-H9G8VRlXRgHkbgvVQSK3SMfqzzF81JK-G7rmymTyfIkZV2JgGZALELKoCSXjOuet77c6PjDFWER0EU2xkvRBbA08Ty3dc2nUK4cMd6VCYqeBAfS91kDJlrYVS0q4IKCzJfNtSJmNimrfbwSSHxTiTpBwQ3RRrrvzkbjguf7uA_h2EmeDF0bVQDz9tsZMMYEP-Qs4BSuykTEGA1fZSOwE47mlYSFBY-h_nnb_x5VCPP5tUNv5cygNmwAHNYZhUWcgOXi2G8JD_F-hx0YzBzBemTs22V_gQbfVgl2C4ixa6CTbAcaZFvDGQnQf_PnzZExj16CeLvjBLjAtQ9wYF44Ys9QRw_ckulx6hsiYB9aZfjD6w4TTJhT2UjmIb4ga4wEjFK-Kiow7GP5OjG2eaGlUDq5JPUt4r-gxD28jJbfstzeQb3vX5OB-wO2HcWXVz4VxDKvXS-c3_Bw9g8UXrkVQGb_HnMRZTGylLoxFQ8rxjTSP5BJlVjRu-CYD0Lp_bZhSHFYcA0fTDP50_c7cuTyowy53gvVRCNTBmi7q70UtVxrokSgV0b-lp7PtUoksvY-j58-pv2UeeCA888R7oyH0UV-uSCnTxJ4wcbszSuXZhT1CQJWolKfJ9kKIToR7a0OYdy569R6rBLgqlsU2R1dQGfPlAOjPmldzKhott1f6pBW2k0oQh0b_Dnixs1iaSJNiMSbmK3SSrz00j7Pyb-wQGuNmtSlsnBbjiTCVyIP04kiPmt3CSeeg37uvgLfC5kubUX9IGlhs_HCCu_RxOSewpP0_qHJwpUhGYLVG-vBK8UnqFSUm5YOBueLHvDZCeIfiHianmZ8W20LDJGjx9eZF31zBHerEgNvDMgdE3V9nkhKOBxgH5KdrlZqtFARs52j2yU6FGREZYzLuSPqClmcLHm33OHF904LqCxJ10HgKk0x2XM_pNwZ3gYXQtdpZKXN52u-zATpqHcsJyTL4t-yrlxSNrywBS6hOliooXHP5QAwfJ8bgxJpGzG88brLoiGEsOSvv0Q5T1VunLRvagLC9Bh2TAO6ZVV_J4QrBkciEQ50oolA4HHCbsJUQT6-QLvrLT0AtoiY9O1WDP-MsJ7IDa1nHlQLTpW6Jx7WzbX36h68iXwXz8hW-ERCUttg9nKOvbW83Nvc7SD3aHKs1qJRa2yq3WPTXLQhnU3mh1l6cjhnwDvfEtC5WoiYWJMvk9WczytBalV350avA3z_cKXqxIlBNP1rIcwitcv1JGz2P8g-kTPsigOaSwpwjAUfenkl16796FGGVg4XfG4wCEcWMVixnojAF_oP47Ekb3fQyGDlzYaTcMrwyZncNnh72dp_l7w4hSfpWN3W34Je81q5oSsV1AswYkf9qBCv-g5ojBz2mT4XCxcrS_7qCmrlUCD7qFXIW635ISNgfuw_7Qna0e6W3QjhOQDgCqDZTwlAP3TjXgTDvKkZmT6xDifOL_K6ub-cQ7KCgRNJEksKy9lqvwrWVXEUBbKJH7AvvChT3xmRyQFzjTbwefpmxosoOw5Aic38w3OUn1Wn9AY_pQZsYJJhZJPX7RUBod9o_R2ZfQ6nqiku5N_kf4sfrOFIPvtv_GYA55Go6LWqjsfDN1LkxV6DLYsdj5_4l84LLX6fjr0nWxo28ZpAdq_9bhb8U6Nol5XzoEq-e1LA5zJq1AafBwYzRAAkgnd9Qfdt2X_dyPi11euBfkFlRu5xPHIFkvJAiaUyrJUK3o2J93IQiYZbGo-0CA8J8w3_RKAS0nNUbumLsr2fnMotYO9wjQkg9ovDYyT-NC45R5lZ2tnxmt_bsbPWtPg4kfVSDEwhe9gjVGVTc9JP9ude1oEwCo0S7untJDttOdQLii7kjF6FdZ99uOG9b7HcUv5odfLlisGbhazCTHG_VUYxQbRzjENB_QMPMncO5Q1PgI8adnDRHyjgRj41nMtY6zWIqHFJpQLi0S2muCKDjOvYBKDrVUEp1VMwZqb3Y9TwWsu35NOHGLJAClqNI6ub_U9YnKbZRTSGWrMoDTA5_qrKCggxixo4mooIrq6NNseLFwwnro6Jc-aQBnd1_qiclY8ZS2U5Oyo0wu1AZAaShwVF8ARIXTg95QaMU8dQzWCQZJvCwEauLMmYmo2w6gdkX6ZM0HKnox4s9ylWLb4O9Fd2GPYCOH2Zy7Y6Av0hl0MeOe5m6Wwj4sGggaU4pyA16UabUK3eFUOmE4UBBoXPQKwNB_3GA-MobeJykcMxet6lfMEVM-v61oW-s5xqvRW6w47vprPD0BsESrUeuS2SKB0O1tn-gVxHNK4kr4S79XRDhfeL5VF6QiYW49EBAByDWmf2zJ78JKyT3075OOhfnVac0xydOAnhXbO9MuCC_j5lI9fib9uVmH3UQ_6rQ1RoeUcLGwA-5cXgMCTnWY9rGsdjoyvjApqanNMIIM5PQ3P7mutrYU99Fy6vorFB3noFgg9XNdYIYogKPcyYiQq9EJ6B5EgA_SoDj7UOuv5E8hmYTHSc_tUpKXQNR1XEdaV5AFxIhF55-zZNb_Fmf1HaGmgfo2gtgMTGzS7NMn0R-OFztj3vBgcljauYwyOgWvb596K9elv5MUxPpo5FgiWMCd-BETC_Jct5hqEq_PF82vmfjdxY3J3A9Ha3JrbLdUpkZ0EI8Q2TYVXG69GUhnreW7bMxYbgPRlj3GIeFduFzbFU0Rg8-kOggzA4wexdCqGnlshaDNXi0txTQWmSYHLbTECsSeyiv1EpFZ7CXZyyCwmu6GiHGA-_FfhZqIJhN_xVZOCgd4I_WAy7amzfl26ByW057nNP8a79JjlmOqewa40dJSf8Q3SsFM0xgfkYDQo4psT3k8qwKXh6lLwFFnLBuZdYq5rhWQ1Acu6aK3hOMzAFBQ5TK8HJMrtwJMWb_0BZSNZV-4t6zZ8P31BrSgX-DZc-ELMdsxIMxvxh5VRpzTUWVKdqvgVL4HYbDF-zhEm0OBbu1xitIVbXrHQotxZOqNTWxyFmwZhnwLM-buw2OXwa50tASgGbnmXOLE3VTxjdnWkClPBOdERVssclTbAyFkqBfB6W_qq6imHjs0dHygW8Rt2jfuulIMF46OqWlZQGpGYSMHF_9HTYyvqnB1tXDJK69XpJtX3EnmRICoTiV9ZyS7THeful5nccStyMXtgrG602pFXpLtKb8avUPIrrquqyubtQM41Oxq30TUhRKV2A5TlrrMT9zyIkDJ-VLu5eOkYR-Otvy0DYAel_ciHm9gJY2V7CkiYjy1zgDkmjmluk1FppVSZVjFIwUtvv5EZC8U8450IJq3mTzjnovnWQMYlwa09P22OfKXxg7zx5nrrIQs3hgyTNuXSQ2O1eTC0NHYv5QJAx1y53fy0bdfhcjcOvURqzbefh-OM3I_WpwqY0dSeuCivyQbaLNE-ddlGZ6b3KEzDQ8z4kj62d3hA8q9ZYYKTmnbVC0itE-TehIidqlSPWqKu2fR3kD1Klqca2CEnSGqoTECnOGu_pTfq7NBIQjbmdsSInyU5c-LrQ-XsqGlJuRCMvA4SPYAhq3UQroGifQyYCaVCu1HHwPPWfY4UTkraSYC3tuFkt2M9UJ_Icx1N2VcB4gvioKI8zhAZFX9CXORRtCeHyRy6VthG03kD6Xyzdf75l3sdha4P6X4Kwb4rtcwRl2g-lyhgqAkvn_QVLD71e3C6fBU6byNWhEczeHMf68yfAcQWtuENz1-AxwrnqYWtj3LVL_rini_vTap6sRomqvfsvIm45YPzCkqkcfNfxKZbICHciHFG0PKDvRxaqVchuLrDTkVTg1NWnmsKGf0iXw5WJvWY-YMBcK3y9uKebF-7PdMAwu_seFWgkcUdt9xVGYhnf08GxIt6ZQ4ErnLZ-y_E96auun2Q1dglRI1smnEutYyh95tvEyTuacBUAy7zOTwa5QmrhLvZ6HS2lYye9rLH05TFUELEs4YGld1wl2RcIBr3T6p56VuB3J_TZYRnvwiqGr6kY-jR9gUBhpPUXArK-icjj6Pl34uN5AwYYOn8VdnwwYLap9ee8OAp38Y-dIpSjw-2tW9QiUCArQXnQXwxe4xIGxLWdrMCYKKQ-pKbDAphT22_T_0CUyOygt2-DRPGB6MimgO-JyOE5aQeIrH42zSKBYYrBMqgpIVZ6aaIOoP4pSySvKfldxA0T5g8R-ttPjy-kj_uON0LuS4npsUB1ch_5NVJtaLMERAvcGvsPB2ZV1xmMXSaRpFU-4UOqHjFcPUeHCTEFTVfQ58KIi6Bzcagpvi_ZP99eukXXy7zQ_jurdyzt1gEML668lR2Y8CDSnT8qT5BVawy3dElZKxVhbYqUiMLT_qisU6zgjjWffabWd0Gz4uZ4_wHLxMpTxLqZuol6Uv0jDjNdg67NV4Ipi6X66FJLFqRxgp4wTWzga8Y7xiCgzBJGWwVfMjHu3hMeKcrPoEpWxajyU8j5o81Qs5Mi4BkdMC7dkpuPuczgjwbrrMhzP_fUf0PVJfl7A6TTwZVLBfBaKIa4xTVmYcteb6zEgMwZSyVeFXkPK2Y1Gm2OXMv5d3fG1QwWqq_tBtdE52ESz0QmkmuqyIsXk9tZZZzfFrYFyzKkxPhtEgTSuo2PrtfGDQFXTaKEW4ZniCwNHm5wXrtij-hM0NpCzMTBzBLXkiDf0R6TtTQO-UBiGM7cPVrooYuITemqWgRNDIb5ECMayZEVN6xOR6MBWbnoydYjVwG9aGp1qVsjt46W1Ofn3JGah6JL76j0kiQCXrOUpSWS1FOc0keuou_G6pBMtPZPiaqWZnYw6v2n9hdICx4suHJaL_ljubR_FAhsw0WJD0r75oNyJvTsa1HhNSU1EjzaMWgpHXyI5gzAqJtMmxKiy0STAl659xayQaGqkzVlrh_V2Z8RpawTJ_15C8syqYQs3tEy_DooafNPLoZ6GtZG89Kd2o6JHrot2JcEnnuOWCg2HIS6pSucqvpLJXWgWf23SsCmCt-RwvN8RsCozFNnJcYjKB5y134asBsJguBn7ZMe8zZJwTwV9ieZs_gbQPkBZZiBwil7OKoVqtIogVNa0hrBdO_7F8TlzEmGQdwPoXNmWvNSrDlvObamW2za0_mxvaNx5xSmr1vO_gRyYqX37Qy2fc7LWnqOAWlYZZ3HzW4o-BpTdRWJ4D99-_ym7FsurIYhvf6ypxOWfHQBryUaH5jVYw-HwZK73SCyBx9WqUUB7QT0icdziHWxsq4hN9xVUSwbZ6DFRKlZd3fKiWBIcwW0z6wTI11JsPAnqYAmntfJHHjb3tDoyskLwg8lYv7dER6IAtAxyf0uiLLlRnRD2soxYPuc2Q0d65cL_yXCrY582Cv_tY692q5mp1bWOFBVUwd8UswOLZHNnBsxp4piFOTb0TMwqjGircV4KuZuO-O2esqWL62SLKouHYUkOq104uudyOifQI4z4WJggBYA00x3HreQZHPGUgz786kt12nRsEmC_eKfXq5ZBu9gDkppMzG3UGCNJpMFeWylgauU6wGJuMxufeLT49SL3ZJakjeyNJTt8CoLNunsAa7dCqCjmSQDdDgGGxnjXa5DDZyeIdrQiBaWHtMvyALXwYHNQ1JXDm2gj4C2VQF9UOomZewPyQxE1cOOKOx95HowqC1KnJUVhO0NoWSuCUgOJaCZTsof2aw7U8k9ATxukOUuIG7kt-FbG2kMAUhAONSaJXvuKkwfb5regWr0EJv2Yz14BN2gWTy5bCOTC0qtCi6PxjOk3LrMGAlm_Wal_xylD1JI9___JG4gGYar7DZqAndA4DljGME_9OjP5nnDg-wePJ8efqd-gwuVehuELMEIJCv_2jQrnqnRCslUgrU2HG-jOM5-AjnH9eybuuEyZoI9FHxeqAxHqo2mjnxP5jARNdMZpU_T9E3BR_p7PaP6S2UDR5v6ON6cYtfiWPl5XI1ZaJzd1tLo9-iaPuns2mrSNZrOfwA8CnkwOT1QEOhWcEXxE13MGkmVgY1aNbPaeF5CuSKhHkJijoLeUU2GZ3HFiLQBjj6NMol2SQPR5wQv0cjGZnBjzomSdeoXW9Sk2iCIIGND2qkzACg11f8TZN2w-uV_XuFTiAYzGNTPAlu3aU-_CMarAdqSjg-7KzTQlB-UwyDhO2FQqSG7J5GFNACqcTTif8kQKQvt6B5WrSqO8sIX50We-MaQh-dBYVDqc5aerKFySro9UIkIebAF5gC4mT_El6GTbQ3fX3vm_1jXQK1qm-Mo9usOeLRo2UY_SYimZoe4e5F2goxwWgO869-4eIN0qzaxbyhHwcBSt5udib9djFBh3bV-HSfKzMIKNwKGAM9ipu8V_Yf9bE6Gn0UR8cSKEqnC7JneP6HK25fhlcF8Q_w6_AocCLm7nAoWx5tD3NmP3zs6n2eGU3pe17dsst1lhbn3XEvndUEqzdKP5m6MLWmlZZVFPSY4ukN-yjw4EsE7V6nzhxdZhe4nH96bAGDLk69FRusemu64-oGKvkGJ5Spdf6dcCPTP_ddNTIvbBJzCcQg6628ykgURz1E5-pprI4-Gm8wKLFTO04YEQmW4Um29q-xl_SNqqM8xJwarvOvbhSbM1yCiNR7V9yvGsUi4Ph9FhLwbIB_Rptaer6IG96pAty2CYdML19PflgOy5mKQsA2aBwSqcD-GgwtQcCqWsFQJqm_DkpXkRdTaGvTiHokUCRSiWvAFsJvLCrxUnR7tWpBvFHuqA2GaD3xDFrt0ZyatnOFGAsEneI0F796ZqUI2ZmqBq-9gJotk1KquzlFxkg-ldB8MkG1KUfKChhMHit04LVMenfYTfT7O2eGkYqRbAGPuKo1FgJYLvlH4V1CkfZbTO9WdJiETbxxfOVWLlzOwiJKVFzSE7LmUM-5PrSX1YkUeZlZBFxHUfNuNtRldQahas3u1z3d7zhlxLNt6SOAuIB0f535ypT7iVR7xzzKsLUUI7W0zCAm8WvUwFlmwN0JYm6zBPALxzw-lC-1qA9Ximsc_zLvwEMBK0xkJgmEwr38vJo1ELniCQwo9QJ2ITmIx3Fk7ioMF8CaFG_QTytIBiaxBhfjX2dmBKTO1t4C3kAJnxvBOwgQ6JJ2vJTQir3XTNGeaJ6zNZ76LLL5L1FsHZ7fyuTtmFvwQXeLjYnw-ydOy9Fasa7lDWHzPNDOltRT54WIx7Hk-ygHR_O6E5PSsgSqTHNSiP0R2dQsgIuM4LF5FOWl0NBgKlIro3MHB9neS__DHBX1dUFDHEg-HZjcT6UlhIG42cLhHvYGdiEhagcRgkGy660R7SFqSVRu1vJDCPvnxGqZmVXLvzEDGAK6fQQfCylJXeNvHU8kaVMlUWYgw0XHb94OEtVDPK_ypPl4bpo7VjeK6UQL6p-Gqxy1d-ybymmvh98mtGiClgjVibZYUYndfa_iLwQ0KPLBJBXj1wbAQAH9OnUPoXB3JZBa3IC75XsINGNB-Oyd7_Kg-fU9UYpmE42oHLrry4jUZ1ssFlbDFUyAyOeRmElRuo30WxOKp_c0L1qsNcg3ifNeibgWXqZ1tabD0rLsoGxH9cnKsWCKZdMXv-DWKQiFAoSbWzoAk8HmGWaCGZB-e3juIGiJ_9Ql4XpeC-2Edyq9IUPHmTsEfC22zHrSFfFZylpB8x7La6Zasj2_o-2Vr4eZC5FDiQ56DkUj-gaNCrb--vhSS5bLU10giayT7UlIMf7k5U-emhZnqjMOkzBm0c5mmEG_ae2mZt5hTasxaOqEXKXImLmJ1RrMYsurMqkprj5_IcKBIIHB2RuW_GOkZnXj6O2ttqvPoGexOOnBA9SVE7M3CNfsMk07ATlJrpT0C1i2NRsoAt0I9jJ0kZ5wftP2uvNT2dGAlDSXRG6dsviZgqbOrumOv2uOUhMT0Gq9B3x0YFPkRYpyLmCM-1AQQZ0-S3enh3TFsfRmU468X5hqre7lpJqT86X8NnRQnUIYyCiCeBke5_AlF0iTKvUBcmgcxER1uiKYT2Dg0UHy1Jf_bQD51w6ksQunb4N2vBufAC8gMCWgp_BZjdQN7r0siT2pxorhb4q14bGI_1Nty8uZTzkTqYteBxnH5qXJ-NjdIPhcQe-yKVUrgPs-LOBUkKJA9IOY8DVWIek7CwVNXhSknxla2ZVOnXdvtcbdu-Y8SnWpnEgzSMrg6_TxMZTr6RZFmTGJKWOSG1MV3zQdNnxMdMDoTMqyOMTQZhNuXgll8zVeO07ppdqNePmqjHgXYyIP4rnjAjJtlSoaPrsZzvTmmMeMfi4Nu3m4EEa4P4QVX8-NreTQrMZKNU1-6KhG0JVbIJbia7gdq-xMlNazmn6cwW6yCRDSyIwAyrmrJO-B4AG6st7T5GpIo5YvK6EgN0FGTq1QEJocF3aPCVg4FATrZhfhmvLjl5d0SbMJCyhlMt5ilV6nXWegxKYy3DaXjilBckdsXNpasA0796pe5XeByJ8viy0bxHp8xzv8J4gIawQSLTKXRWIbrkzUvjefQqI9jZKavu1y5-iYl_RGi5AXraX6ALt_kbq_tfdKNFdJSvK3z04NDD9E5HPwceKYCwTcWiyS2qvWx7B5E0z9dq_ZxnGWwktBZK0tEOkztiDRpDj-yhzPOGZnNMbzFzHKByIZelScuQ6cBAThmZVlgwoWDaYm9KiUl0uxi4BM5-A7FiWemYwkTuF2KxwBTyNI5b6tgY6g3xYZNJJdqPjSGYDsFNIufqiMYKjflWAmkDIdh52YVf7fbWgMuHoaJ55pr-4B4Bm6rIaBBmRG-t2s7pKeWOjZrgh0gW01Kc6mQAKMwrj3dCL_98i0xNWqYSWPOMfc2hXNs0vfX7XqFMrvhyY4v1X2tZb6NcOjkFmQ_z_Sgw4wyAiAw52itBrCn46bOQKtRPPNEXoduq3p7claY1qv0XduDQnuWjbboNuaStZzQcsrF2dL3JfO6Dt3XBfeej2wcQnLnz_ahVlz5QrSP6PWRQ5pLvkt3_b820LxWIR1EPlsg3YtslVx761G4AJkzaO8DDKDEi2K-sxZGWVEFaYE9-WO_CYrvv5UZUVIAepAad2julrQcD5OUCaCa7WDH5qN8i-Bma6OPKPLKuNIS-vV5YNU2RBBV_k4Nv84vDU1tukJJeTL2J5yIopNkR477wCSXq9E6lKfYjY0K8MO6JF9ArM2yuaIzyxse9JH3JPAC0nm9tMqAwd5hYHJbqZOT_Bc8gATNl3DI39PFqdXQxHtqw_Wltn0DyHznOm2dJx1uE0OK7uDKxExIVXJWLwcPBx2G6gQp0Ylg5uGtxIkzISYqhieS6pgjONFyfXAYlWQkcEGKa18qq1nSWo1Z1ppFFbRsXaEEKwzTMQjiAfyJDv9XlZptpTBpDpCQoOqvN7DY5dfBrwb8na0Ky0AF0esGoQ9WAx3IsdEGDlzDmX_E_fjgXkwfnar482E07CppioqdB8l85MadLlxnhh66Vurz7WqBuZabZTqu_3WfPuTfeEDYLBA3IYZPL0-YkwJwzZHX2DnWkAYKKv3u35NjjZC33YKVPUf8dLvlknlN6hwEIi8LFiru1fNWzlZG25WdHfobeX002F-UyZcJMsbMltzH8suxfOXjGJYHLvrkYcuA_Z5K3V4hnmP_8KLRMRUWzmwyXGktaADco85veT2E9D9Jr-MdqyzkEEVPIpQaRcb-bZQpZwXIF_KUOfu2IOpfW0QsFWfhF_MVbcqogmWaSboioZhuswjHmfrnQUg-egTlYWl7bC3FakvBG_XaAY4O2aEkv2Tcs3Aq4rorWW8KwUBjU6jTNbkASVPIP5nh8aN9OFHpaUgcXUr4eqtKUHlqp16NPARam7T-LgrwmbUVG-GBkreAYG7UKGAukYcFSMacs6h5wx541M-bgne_2OLU21WaL9L8ZRjrMHg-OrERH_eiJ5RVuohD5pljDUBqOho44LHLR2j8762vwuqJ9pG7xufGkuFMp6HPAYO5xdGPIynooSC7CZCd-i1wAL_F8O0jGshRm_fn5xBQ6zZ4gZOF71ejfjY3Wkzhk5oHy48tJYp6-spHAs6xjZyu2iDkE-9o2u1V8TfMs4IPknDoJPJBhx2IyMNFbRRp3VfkMfDGVD79rVfjyvAZk1Vs57IjIfglyZhJNl3dpGSxhs-BUN61l9G1y9U9N80w__ztYVciXQ2A1cS8p1Y4FGO7eIchlgR5TM3MHaddHInqN9S6XeOi8OXNBQ1JG3XC9kl5EhJXkEGTSzu1_R_DFN88UNegWTayyAOcJLs-8FdKCR1y5CtYuRU191LY5A3CvK7STH8us-QKaP9H1OxZNnsZy-l_F1p51Bafcdyau1Xa7ybzVEXnsJMYaRvIw90jVSzHODmCX6he2rZKtjKvzc_d8qX8IGYD_PA6lXgtJarv3vJks4NECAxl9jxAfIh6LiKmXptufggu1vtDee-TR8EJuA33Is0EHYhky7CHv_VXyfQS--bB_zaJBW5DyPvoypwIpHxGsUYs1VqdiAIU9Nzfcdf_30uuAwbfB_KieFGDaEBcsFFWYtD8TGLtC1eQCw193YLQObCL0Tsbsg5hFNtJiZEUxenRE0ytMo-yh5mXyjnPm3uaZp557Ggb-raePIBlM2T0-qoQTFRGfKq1WAi8-Bm6eFJOzX3I7IMqUaaFf4Tjffs7cH9XnlWn0wSokpYxUWnT23nG5yOPyiybLN_y2e2PgviOEqpuA0bWs4naOM8Fb3uppYv6rOEd3PHJZusnFAzNvXmxxIdwUgdSjuVvfrRpZ0Kb-8J9s6tM2Wd34ejGNNfOhHDDFBjZWtHeLps9puwd1BAnpXkrUlKh2_pVnRO2yxDJtbOdWMaypZHHfrJZMrTbCFyEx7-l-yq-xcQFKDDXyPdwE5foYG57DFaOLfeAi0yip7BpIHkQYR9BJS85Os6i_e3U7hPFgdRZSe5oJ8UobBsb58iNR9UhTVTcz5DcBaXOVMTTMY90wzTd7VbDjjWTzrtgw_1iwD-v9NzJoXcPvx8b8-0Z5aHSmdcFK0mYc7-hu4uy_TPbtmYkzcpGKBV9Oi8L0Z4Le7R4XGPdjgwe6uHXIJycUV-WPgJ5VHcRbqQ0KphSW0WjpC8SiLF93-dwo3Vqh4WYeRh0WoATkTT086Gv40OmRF8SpGjsplIV3yYAeIFiv2rU-QfmJ0L2-jx8mjloyfRwVtOe-VZttQvw-MMh0GHg581UDpVlV2GDjgbWv4gJrh0uE71xcKBi6u-IBg2s2-xP43zXfCP7XigT9nJ06hucj_SXlVzf9apKXs6RO7hGupSuXJ3rObMF1oMTXpBNhcPe79iuTqZSI40Y_KcDrIpcUrK1ifdy-xDJXVzbe3rPwMSWU6k89nKs4MeG62Dsip6dBRPe8PLfWDGI6u3OyqzTPgDPttTdkR0XwEFGjy8pSZa9TgvqXRib2nClpOf3LtqoJqBRTl3wjbLuok0g5SWRdQw_v_jQBII1SsQCqNaub5M-BPLRyc5J-2P8jV4qszh5LB66o8aFAZ6mtEf74c-S9fpJNK2eFcfaCkHpSSDTEpG03iPjxtt1c82eKD1yqRNrae5_tMlVJ8ATJUIzCVz2omutbasuudE-jh22LkKY0RRNMXZn4rMLeSMWERPNtVFV0It7om3pCxpgplRdCoun4JBuIlG-jWJd_RhV_gihTk1iEm8xP1Gtj_Xn8qgLkWma49XCtHemGXuDlAgOJlnGjVVv2JyCP8qE_piV6Eiw7ISjfcCIWbAC13Wi39987Fsb6UoGOnWoVCK27k1AmUTr0l7WUZMW_01Q6wLOWiNqc7tc79_vhLZ7-uUBs7TswMOAFbs9Lz_Sddfhlt8o_ZNi0_Jp_BVcHme2Uf2bJlw7Ttu1x89Ldu78pQ9M6Ea7tEKsjnT0bDSsKcYISIGCAAwJpLZoshHlaGVXP-gDPLIMA9suEOFlzOmbco1zmgK9zwjzgkKrfol0IyJTGiXcIak10N_OJMUpYOoNPBG6k6tvUmoaD217ZdPh7F33iVpFLUA-hyefm0fZexG32NTu7BRKhEie79y6EUnEP3B317AyvbOZVHB6gULBU_kZTG8Xc9rYQK86WtGH_0g5WNgnr3iqM-aWKiailNnIiWJ--osea9koa2nM4jAU-I8Uq1eHicw9FR0EFqfZcMar-ZHQGmTcnsJIusQNTN9rBqCgI71u98qJHAqo3-sEK9yN_NDyEscO3_W91_j4PCbk4Ez5F7KwJfuIkd_ddFV1Cfc3OOUARYHZiRvD1NVvt6-dxtw6LQbwPHs4-oLWP-YN9dhMXQT8EOs5MZ7Mlnil02kbghVm2gHFVsBfT_0OXJNq-AM_ZLgSOhFG4Rw4_6wPpr3ejc1X-nIoogaOGoLP6ERaft-1x7HZe_5qtKkskNMlD_3W1olEUfcJiI-xLmYi5bhgYOQ9EL6r0LqUwl3osQJv7KH3e0fv6HEK3pFCKByhNr_hB6FfgJ90PIT9MQnANwQ1BN56nSPmZKQ8TUMaLThVKtX9zETaOdwOY09a4_pz4cNnKaEin7F_neQZVamrt06tG8PliKc-WdfkYAPiS-4TzSj8snpOogrsjLejeDmo-uuHLlbxA6Ex4wGzCGH1HTm5CV7f_OIkuCH1ztfiDwI1zCNypB6NAT_zybb_g39HgQR9QjuuFi9Sey3ND3SGe9hVvtOsVrjDmAFQzfmtm1oY-CZVxmxbi_vgB-exmcTWQ7OYZRLqS6349f53BtORhPIAMTJgWxXn0cxeMdDlgmGkxNsohz7qnWFVp4H7EMujYt-fMpABRueF7OR6mEqEH1tpmnXfCPP04o-IWLnB8Q7ExiWPdFQcej4IfdmQXFOQIILNDOLsfnblNfJ-0wNoXhBOMc1zWQuWUsgPjhEXXgVUnb6krb0xJHrLixhEkOi7vulR3J7sOH_yBXw6jXBcSjbEu3YeF4iVj1I1iTflGtBGUaHvyyeOCPCRfQ8FfDm8tygTGP7stp_ghB2A0u6LV_Dd7SmlqtuALBbkHzAnoJsuyjDapa50AgW7XpKfiGJAkXmWTcW1lpNjOV10eRnEmzAIxXRKJK6AO64aniwHuOoT3i-jZhJ8OhasBdGKTu583k1-KDhwN_pjMOrP7-2DzwhMX9g3cePg8nmZLm-Q8ltbL317sit37QWP6c8qVnuO5OmblRt-vID3OE0391lqgYcopCs2oR0QkO04RMNcHET6LySuODlGwAOoIIzFKuscAIy2rke4c5xRyjkNWuAsRbswJjE1S_vbRdx1LVw09oo8gwkRbKE2LgC16-7KvaM6T0--Y0AScxSKYin7uBu_tq2jZpAa3RXKXTdPBThyn8SNY0PsPlb7f4LCYPGd3ubwXTeauVflUB-oQ6lRerZW1fL9HNpEm2ftGaUtm6g-v-gujd-maEDAt5Sk-xs33PpqYRa9Cs4I1ye3H_Uuyzzm5uSdNV26fDMFlW3wl9q0Z5ulIMextDC6DynT8lUs9N6a8aBdM1cRL2krs86u-xsTQV0SFySpkU9RKqGByKd9CVmbbp6RybEu8LAGCX6-UU5EOC-fAoM5Aj8lzR9uY5Rhl0dXGvrsqkAutbHOTRoU1-pCspXuyJBHuPnHutexrNaeBOjQziRnV3B3n2gYu4AjT0WMx09nkjXzqsjPEI3q51nKAkcWmWQMFMr0wP2Xim7eEafnACGHjdhHWvZZR_Id6UDAO3j52JeteMBR2dLcVP1ek1hG_uXWayATxCPat6291Y36Bbmj9SeRJuFZK0tKNde-dODGXuv2dM5ILNcyh4bIniUyNXlVEKXVPq6w1ofdUl_fkKt8vuCaJoj-xlFCNrEgKhiaZZtdGc6PFY-CU_YH9Xb2LSmPeosVD62EfZaWIlOn7TWDHi2H--_9YCXIvbZa3ZuQWMftoDc1MTaRX2AWCMvkrQuLipr8KQ-iaRhXgtuVOOzG4wQKEHjRWeXxXhqHcDpcjiFFYcsBO3NOG21suEyVfIU7Xlu8aiCO5Sf48MptwTvFm5dre8u3Q5gtHm5_-aYC5VR-Va2WTSjb0sO64XaNtBAEy0Cok5mk-HAZ-Bky3VzCDVlapZdjutn2Xn_8niSTQj0TXM81LgsfZMqvAMfb0kuHnA7McfKFT9pnMljvArr-eNxsMMkJSHcwN9YtVWsF4dVxRLiQ8GL69cSb32WjxQ0EK2fdtQkJheh7dW32K9Mo8lumRrctbg7xknajE0eXpyKWUjWDcVRzNyXLQ5jERVfAklsiQ3cdNG6AMSLtB_n8NmkDjBMDNDmdqXq41k1UTswwwvu0H5yjdb2ngAO1SQ0mya4HSYX27UYQNMJM9JOzTCCoWX2nkomHTnXkbT_UkJDE-xsfTAHSfFvZ8CjaFTaxBn6UYOHur9syopw4usV-wTbQljY0CkndpVs6fyDx4QY5M0UmqIVQ2ieEvwJjR6QpheqTMX9R-PxU51qGUffgr7I3hoBcCz1mjOiAIy8sxphIuf5ghElM2Gb3ZBUTTjCYUonYXlN9ZECG7vlHCCovhRsBXO8zwge5G7sy9Rbm3TIr-gLCeO8WErJK3bQMoB3CbWRFGqE7Dp8iJyHc01xQlxZ7IDOq1Z6B8LqhxABCerzCv8ndZWU3u8wpOLoktrfG_z82E0ZSM-7btWZZ3GeonVXskaY5xDLeuV29XyrBDNoHISPJJ1w_DJu0gkByncubJPLG2sYV94NrKPMStrK-whisTytQF9uP0CZkE7m0IB-SImdLhJrhcSeOE-pTYVgbtolJHu0cK5rR5Dqeu578JaY9x3BB26vGZ6dRe2zFTq5ogByCmXSp3JDMZEI_UKl25UZRwzYwhebA2zAsvDShk82u7vBSgXcQnWF2Dai2AV5GW0curSavChT56fg2acFX9hj7IFpG-4GgtF07OaR6dvj249EDuH5F7dCrzDHsxeflZddowPTZzpP4xMkKjjivjUL9tQf4Vg3tKmaKXDDhN_d5lC8kN4yN8v5fUMH6OOOyA1Kh_W-YXEp2baeNJj2JQQp7pwx7PMFnmEY-P4XzrRPhpN1By2uhc9hNbw2Sv_2fZJEAcX6dhw52GwXGR9L7yOc-CsYhi3Afu83sfTtCtASf21RJlbjMrb4QmWE8GZnQqo0_YfHW7s8-uvBTrLqNAWmKJapo5ECeA_cN-Rc09J8YR1Mg79GJhNNWKngdKFuvCvK_28bAbpU7UykyqylQWy-boOJgMyf6dgBTMoETdoK9aygZwSslnAkXnj5yrh-eNn0wT4n4UBfVDP5IcjfLudENLRNRZMzI-98Cc4TB43355agGvb4Y-vaBmABRbQs9dNE0x0vePvyiTOJZRpk75w2-8t9EnrdSvYMSXblE_61iTbKblWfJDIbPLf6UCGwFy0XcoOgpNRbY4p_qOkjvyE-ZliJm7oVidM11nsKrPQFApTR8y_JvhPsgR49w8V_cHembuHTxrKjurlSwCG2GF1kDlYsN7JnJfjkh2Y6lwwtA_ZRFxCcCmVt6XyI9mP36hxdHT-txQ6L8C1EGQYAFXVtP9cyH6Kj7D6R_RFF0s_dzELUSe_KegRLECAyb_qCtrItHDcvyr5RSOnapCtR9LVEXgXIgUAiU0mYKFFrSXNarWtKr6Bl7ck4PEPO97YZUXDJcJYGQJc1uf6LDbuqsvvoCinr9TNVMCyvtmOayHEUSPnrW4YnH8aG8xFY79tpdtLE-ujMDO0T7ipBwPYN21WvJnKSTIqjT9UeG5iblj7N9sJpxjVjzbt1mo32XqaMMOQFbl8H-ewrRaTo4jklD-Xw7Bh-wZmtEUWcMTRfZ66Usl7nDrC0mEuV9K0Pm_a1Xz05JPwhrPL3B9eaJet76rDaqKecZ_OmQrpfzxvuPlrvfdkooFdO_YBQKDZfWz3-qmVIfaPKiK_oK4W1MNBdNoJqMAD7EN0UtZpGK81Z9t0APS5wshrK3XE0IWBs2gHsBKaSo1ZGJ3q95BvbVAbxE_NCPERiFzVPIJFn8DdWEbyr75PexPN4wG9Te8-8dXlbOedmhJxdpCX23VTNFJ0_VDHz4pzQpJ5U01D-HIPjo5jXW9TNtrIP7DwpRXEoAmUdw9Li8TXsjy4NlGCS3TJ3V9xfgJQ6orNZVOFHswPILksGVN9HcZp8nTbAhyhJgtkeL-5MTy1_wjiICL2c9CzukqUFwbd0mmOmBmcfXxuKWPmblq4KsukpmJE7GCY5WmZvHTJdX2PJTqatpyrx7wBo8IesU4qPy3Zh9MUpGQKpadCrzOWbOs9uWVQjvDcaB5v3L6G3afdYEkmlp5LH_jALTXCX9WhyV9V2dRjA6_GQk8QE2wpd3LvuEWRgfxd8K07l1HqI1-iShLxiVtF7Ed5Ea77zafB_CqafVM71fDHc_SjDJOFLnTS17XO1L1U5diXVOhZ2dZPZnuLFK2LpukfTV-qRlc1RIURq5tBM-noWvckmYsD7oIolRwJaN8-jU2jceepV-SXFTArDXKORjCRm1WNcXXUMkFgqQitqvmCkwupbMorE9GsnYzBpKHC16MV7aFq3a9BN7zHVlOc7Gm5Gs6UGMNNeTplIxCk35Apmtj-SMi-H4iZHIIUYdOmIim-0yElIquR6ulXw2HtkeV_rlPTJeqD2HmHJBJkzvzgKmMJpSVOxSSF2WCR6ncQKdutoMDmEnn8BVfJcaATXGMmPStpnbR5r2qRSuFpAhtoavOwHj5ou-DX4F9yAYGojPWQx1D9qJtq9-Xbj23ZdIX4jYhAMAV3hi1J_O5hJlGHJ77jFfraBPRbkkTfvcyZI4w1b_JDs5axnTedmtZLwWe_rP7JtoMMCeNyDsC6V3rw-_YfOD0tabZVIhAByQnzpLd2yAX_w-Gwl-qGrTn1fM8PFOP03JZ6jiARGQGnOscsJ1PCMsuFUoLzQTErQw98R8k2R3aDp3QRhvqFpsafhCnVKHAQJGdPEzaAv0MjZh8FBKzuk-ufYVTgXUyoqPzrciwaGIy2yI3XMXb7gErafbWHb5whhzc4-dCu-EAzZ-X-z83jKpoafO-pNfOiodGr8eCR5InKrORveGQdsyJuoOloTsSIyZt8tsaRoo9nLU7ndc5Zomi0zZPrsIAsnv2ym-JW2AezAZYo6VUg92HROZusMmNAXl1Wh9N_tQNqFlCKeEDf1Wd6Z-B3BXksWvBZwS43eXe1QbXxeKlSgDzEYJ4oFIB61jvDON-8-lRiu6oYtj8nIp2DLOnNzKDcTAPh6X8-mMcDEkAFfP0c8GVCh7uXq1hCRT5PPOFncqn_jqLgG2lMf2MVzBKbdCwS6Qck4se1osJ4yO6W9o9hv80niCmark1mMCBKmE-m-VQdRMhja3pYPrXA8kEpxObLBtALikOpR8mhTseFzhLYAAAHjrJn-tYLIpqYocCYf8UVm7wDZ0IhRQUKyiiAVL_IYyJCL67jvJrNI9_Oa2DVE3JcyDnUl45Sb8GjSc6PJaSYt03FbjIjHEOt9J9fkATRy_IG-hiox6l-8yeGPDHeBJQeZgkxs7oLhHIpTsu-nfABNbawHboz0DO88ePI8H3gkEnY3j3oBt0QWL8-R7SY2oNjY1S42R1jmvlu81ibV0m8JqrkFDjHWS2f3r12NnG9e0Rk_-8N2-WfBvL-Zustv_TArYwlu-_IWMZuQj2GSv5BKimxYQwaL3df2f4qmTYIKdLWuI-gFAnrIXtVRGzf8VRChviAC3uU1M6tJ7YFbNzRyB7XWPBwnXNWaqy9rH8W7PPwGjHAD1N89Rltw2nxmz4g64DgIkePRoUgREFSwJfcDodeOfBiv8mPWW30ZRGtVn7Gx6kHU9sRG6RM8f_MGXxKedXVzHmkOACF73FlFM7i1cegpqfWvd5iPHhksWGEaQ5Xf5JQPuvSybySvBKRUKZagFrv-dhSCCp1LspfKqYT1Pdy5x2DJ5xxECOUjwivGGqx3a4KNpEXXzuJpU1SeJMkqmodzwzI_EXB6ZbGDTHmZH-hYGNCUniJpXtvFCyBHyEAej_m-f0Iif07TSOLrJHodxV7f61zh1JIORbfCMh2uCj5qriWb8ldTnI0p7RJ0jbW8CLsG8ZO3rbd5u844Fxl-n-0bQAkqmj-q_hTe96Oj7HwpRwxhyn7-Z5TBl17I7uBQVROAkO91idg-xBRdcim_PK3dTQT9cgpSrrHuAfGpYCxuD8IEV9huchkNNlL2kD6PRPQBkeC3AmVYNF99KwMwUuwuS_2WPNiLX8sfBfaUQDJ1rUDDYg6wXLkTy7I-UP34GuLTIXHnunRlTmf5daS64Nilr52Z_8de0mmVJScDhNpTcdi9sBhZXEOOLrmUUvDJLwfiFH-XP6GTxMPDODvZeUfw_isXcvpp-up3Hx79kt_g_sE_38vYRE0L94V9sjJCLKEwPMEEYpLCfuxqRAH0ldY1Nw5K4hQMxjW3OW0MY9ngxIsqvuz9_d1YJa1vKHLlhR0o-xsQXNVt5iWTHHfnoIazSNmr2pBD5GtAZVF4XebO2optpJwXZQ-U4f0RogyU3opnyWDyAaZt6zEkRIrl7dZvIhffuuvwA28gqD4MKzyVJKaNYIqaxU6DnZgn9kBAQQauNEBjapckzw91aDKQCRibYcvrnxl0nsNC4Rp6BEa4pp0UtGFDU9Lw5h4nSMzGWNgXtifJPIVSgGDW2veLTtM1DZ504Y-oBjZPjJxs1Uej31YGfMX2PajlK-LnV8aQpXUZ4vlAzDc7f-4_RklXatM06AZx2FCJqotZzLDwz_a9NKzuw93mGBBbcKVLlmoUgfGaqnqp2xVFBpC5kt4wg7kHqH9XH7og-SCAQ-4IQngE41KxtBrQe6tgdcNa2PojJcMD0z3XNw_57mlefZmliK0BTDhX_l4yKyNTUugAzC3bj64kCDxQmEguhO833H1Hxe6JqeUVWa3mlY7BIRKRgfs2ZwDk2e4U6oyhXf5uakN1eRyUXvn75BYdAqbm5b-grhVNDTqy7Ez9VVSuJgDJfcWIV1P6el2difoy825zfluh36ibmyivOZRpV_5Edgt_XLs4Tmk3AbSGnI_7TlsFCRu5pVFieY9UflgUv47nYk7TJbWomWIOKKpFuAg3jzTprxWm2Y-N23EdW0GzNqxnUOsNf-O_nZPP1kwFakJ7UlEpopHR3udKLytVQKTjg6Lg6A1N1xCMjugHTXjEPmm67-eh8FM2Na5GjpoW_nKiW4Z3k0yqjJJPWhScItcbbDTSViK9v4ExiQR4F0NvLFJZOjipcfjQRPRw_GjdU455b3L9pM_7uGKxkQxnz66KXxB4GPqIaZkKfpXKTgKOV6MSomJ-T4hKOiyCPfCEIHqL6F4GkspUuCl0_U2Rof4i4cxe8VfWbJCPL-1uQE6lHUKNf9uvARNJhuz7mMWfIH8Pc62JofoHgZHKre1QgjExecc5QNPuFTJDnAADqFnYutlNnk7cmevc0LpTv5TGuO9adO965FxcPVaS264kXY_G67Bi7fY7btvDy3GUH2KIpCOKo9AA-4ofzqyYmgrifFX1IfxqMH3o0XSMy8GpwsTxJ42f_l20SitDNFgzkJwZAdN94DVa2oedyP87qqWcT5vpJqjQglSvxT5R7qZu4CIhULJ_lFagDVlefU9eAQfLagHWSJHp9yVt-Tbsf8Xom8SxOXqGDA37fZ3aYUuzhcwR5Ft5YupPUFLFQ04gClTQq4TWgi96GZLNfFw6CYkkh7b-p5qAGt_Cxz3TSyGQjobEk7XEbbDMbOnbo-dSGtMJEtoyP3tF37KP_0gQaUF8tH0bVKGHNDmRlwZZFg60B7yXnZRy8K3EtjxrPXgjTa__boKd_yhzXUtEZzpMqJXJ4GQG67hysR_WW5cG0LhluV8N_j9IzRpGro1qdSNwLvBe3ISJyLCxn3E0snKNL8a0U98b8u8DTKJ5HW4EvH6FjwE_Vq71kwztplkPd8YbP98mz0NBUtdCEZP0D9hdkP4v6iw9uGxOX2NxcUjAta0xO0QVvZqTTIenTsicnG5NiLduewOjsmdEGmU6AAr9VbiSt49CeiyI-ybXF3hcM6P4sSb-G6SBlzNwU08zSmAidz5b_fkHWGYsInNV3s0Y_u4eVCPRfEPfjQ0y5q6J-n_DjX63-Eal1OGsVX08tJ745f4oHUcKVxdTiZlGVGTblkdtKRund4AgkbcDajQnGAju1ozSEhtcqE2sMjLXMnBifYMUg6wsk-YCNnyH9VfhiOGjS-7OqWKaaCNaIVD_UCqfoV1xRgdk0QiUda02CcwVJx18W7bE1XKil5ajId_lMzGAMvXYe962rDTIO2QrYlewVG2joNICi6C_Iwu-CB-F0LVV1rSTdHQuDmjCf3wSDKr89qFx69SKWNPe3ZW2OhnNhZDj5nf-2qjvx6YeB9WLhWZO0wIjjIMoteiJgyzze6gNrH-GbT-K0fycDIfAvZuZZ3uYgnp6p3CK-74qaadtnXOj-z9svAkYLRGvw7iTVKt6MzED2l3sl9mSpgwGdZyDJ2f4Jbor-iSK0ZGm2doVMx_MJ0gPuUt0zhUGWAdkVOZS8WeoVeYK06AHC7Pc7HCJBUF-oHr6cP1A_87s08XhYeOMxhpDhcjF-qftGDEaqy-GV9eI8mUIeGKGSTOeaH7xZxdnS7MrBYVCkFu32gx8cDmGnc5HQrACMYAme9Po69G33vTjAUNclibLtRucLNzuVcDSmOpOfiCfw86Q-HzPnRqrYwwVhx2tIaYDNMJgdCaows8ET6rUQDDvibrhT_gQGgFvl4qjBp9RZ8PQ8LWsGrqV9UKFKi2PBy_B7C0E9vYMkapDeGRv68tqx05kHESe11EhLacrgd-etzBNcTdT3kQdintClv_2Atd1dWI54eBGJsol_7jahlzNiDoqePKnvexluz-dKp2bI4EBQv8R3YLD6s7Ep9S5G368qY2WMoDpTincLP3qZEtsjeONyzLArlSG3gGaYEDLBKoetOP6fYaPcKg7KZtpAm9GAwp7ROoaF5CyyXEQkQ2FBzRm_RsgCbMu3Pv0EQa6ji3yXwkJRvxyRWkn-BtQ5tDySJyj0s-OOixbkczi6vjuqumaH8ubYboOz-9X3r6SPAwEiupJzQewnGFgjHZB4yVaA8mFJWesQMg3JNQCXfb9V7aXuMWFdzc1IzznIdiEdZzB6XM7Z0QXFpDiaJuJ8N0KYHe_55EQe5WNKaCbNi43MNmmljyN2y82M7QXvE2Fdw5bVV6oQDE3syTk7Gccvln2WifP4HZQrYUiEdxk70qBAlTXXQwjtVLvJTQmPSdsGK2Xxg9ZtD1xoy98_9oqFwultlFwmfKI8NWoU-lYM4kr4rASQ4m720k_Gtq1scSn9oKZJyPDL8BuAmJeY5mdXfyUWHkxY5fdNJbW56qsxnoDyrAFj-bHwvZVsnKWWVHl7a9AZl5mPo8Q1Kjz0sRH8TobVUwgf6576jeioFF6UI7Xmnk2CX0jU_ghJ_f1qbqJj27jy2UFGGIslu0fMjoJTakyro5rgkbVT4eZ7Rf95aP2reZtPpkELRqC6Ly-mydLQ7V4u_JrU3w3JwHduV8oONqDrq_TpRhpoQ0NTkbtk88MdV1vrLFgdybP968aNp2LBLkXvyNdQF1EK1QGCe2d-QnWbPJRLc9Wvgh5cFSYfBgzXuJEt3kky-wJuujNjzU0-Q73jKn0UMWlaHTk7BYcURW-UpcBKLYRZLvRAjycAb_nveFMGl9t68QtrOwuXDV0zF-eQJgPXHPkfnTWEHwottjRubbIxJOzPaiGf6dKErNAIoK30tRUTegJJZHbCBeoszAt5NfGMkAWNTKT9CgRbrDMSsGkZJ6C8b5gm_K4AexP3ygXhfHMij_PLjVg0zOTsKM58pzwFDkRC3G-SUSVGyyGcOzsqL9lpXgzmVyMeS7HsLWg4K9YDf2A8j50qZVpN5b8V3dQ7iZHLaIo2m3Jc-WRVIS-ukAw1Uf-fVRLCrzo6O70WZaMpHrLmCvu98qr2YfYvQZMzVT1vLsFLcUr2kYoV2bMQY5-CKnLlzeXRB7L5OrS2FAFyYZvGr0BVM70fPXjRY0HnLMOHelT_oAIMy9kIqJ4jduxoCYJUuE13hRv3PQ95yLQeSh0Pr7Yn5XLMLjxD3-__6MrfSVyOeNcBUGIA38q88f8nisZTRLicS5g3xSM8SfVR6PrHdx1n5GHEkV-Rrm01Pkp9nsG8CIOOdP-ToEBfSSCIFVz3OKiUEMJA4UKd_U5qP8aocyC1cpRcV7ZDCMiM0epWLwp_pLOWb81Lr_4i75Yn_dSRNwDg5ao_FMeP6XFt72EDddfTQr3rFxCdfNTcl327odoEkOX5Lb5OoyQojBghsT6j5NIMlNbsAUl4-Ad_29wRPaLzUxlFIBuDG0AjlfdO4Wvpm5i_B3j6oJg9m_IacXwVmOaIapaP2v2F1TRiUOLorrSqYy-zClagIzoDvHrYAQ67ckbfB7dCpE-yU7AR3bEVPwgtTxPKgmVQA-S8FXPrgiPn_qnwpfkaD0CRMGI9Xkop2ECfgpjQbLDcZimkXlNWTSkpN1WgjQDa_8WooCCtTh5iqJta83T7v6nVUfES4yavjPrYNtGIg6HWxky3M30qjfXni2DdZcjrIjXp56g5jLVImjORTb7rcdZtRqPBmhPAjLeUybsCFs1ZGtaMVrx6mJUnC4-lGAi7W8x47mLBsSE_AQjguqh3gaD9kNrqGga0tDzEJBIe7HGj91Z76UqmGnqhSL8vgvYTg5SXOVDaLFu_5kPw2Rx483Kfi7XUrVRkYAsnKlEXzqoOh10U2OOX_OM0XR14obUhaJKWPGQkT1e4G0vb9JOsiTg-mEfh7c_LIm1dxnd1qsmfQYodXAjPvB0Za5R82pz0Thf7ortgzVjkPpMDnjggazXD48Cj9IBjUFyyheV9edXkD66O_bkwOAdDajCoW2MdhEoaaJnWBFxFF69tck1UibfWm_HRqWIR4dBenSEcqZaiylPaKm9U8sIpNU2LFOxLPZmeV1Vf8RSRPsIrAYgGqIlYaF49s_9FKrolSAkocbuBRMUdjiBpPvVBX2KExV07T3oh61xrIY_3ixaxh2cJlspHzvHZab2FLnqc_k2dK9wyZdc8U_NMDuaFUiREi2CuBuleSDaQ4bhnNNZ7fuXmkkalI3QnfdtcyPnzRgIBNxKlHNWL1VGfXoPS9ZrEsC96e4kXtuTNU7y4WQZagMxGbpPRrZdbc_o6eD-G19p7Hh0C39He8fGAJYU8b5Q9Ep7bLrzaqMLYBLByMpi40_C079PSGO0gfVBIwxlfxLsapnSGbSsOexYKNa1FM6eKUm32Z-cmYjBvmTfOVStKUDmc6JbvYrbW4uQBDLfm-iIVAKqsZAdycM4sjP7Xo4HU-kjLXNYjlgeZjXl8GVwP3jIisqOLTxvPzFVVf_OAO-s9ab-zftfO0nVDyQyZblD7glp4A1fhOTzXrN2uLfJkR-s_rCb1xWWQ6QSx1Kch55Q5Y6sNyad1CuhaO1C6jAmNPQXWjzSNedcBynu5yopKO_PsE97x59zPWWiS97-a6YlgDsNaAIV1i7FIPRrZHxWqsUfHWnL_uI77y_w2gBwe16Rk9QiWTqqIDQ--ojAJIa0MP4w8ZXZjBUHa9vf1PZUkMKctSd_171Y7pYZBmkGBCY7AZpLjCJh4yZTwTncAmAAkYLCfH7MNJ6iGTJWT5W4qWZ5t9SGcHrU0mExtrWdr5oqGfTz8c56--_5DvpeXCCpxIjNTl0IaPM9KuUYxE_JAvmPp8IVEiYOiQLww3GCgwBmcV-KZCpa0uEfhvwykamjKI_Mqa4mdlRpfrwKJBTwd8WgBU2N00pT5aAwFFpZ_o1vd8tSRonT0l2t2HVF5qpW1x_AT8Pl91BBJh8fgZfkaF8DXJ3SmLQyJMpJEbR89z3kpN2yB86YIlA_l4oZGWx-WujwDHuMXvOEzGeiynSBxZ5um34fE4uOaF1_qPwoVozVBEVR7OgF7AOBr_9unWgwsGHRFptwmWLmr2HCsRP4lOMkaxJOC_RR_xA2er1fl-0noLuMIhV-8B-Ht3gQSk3qwyyovqR55aHLnw2I5qtXj9dmRJ01-4TExfhPIwHTC6N_BCK9H8JkYtJEmRNsPwwzYuxYAWApCFGp79wCKYW34SW1fftILGkxL7-bZhuXcruPVTOWzCA4po7dkUpHSp27MUlQVctRqoXNvtZCsV2gxXR6FuBoL39LUNw-Y0_vf732l8Sm0JlxI8ZqzJZ-w16MXl03cUoG1K5hsf3c_j52XagzANFYLy14NfyYawHe1K7qx6j02pzN1qkyvBaedOKjMO4z9iEdr9DiDCDvzTnPSAjV1vDFcnmU3kzlvOy3v5efhlp6tTVsPiuL851v281wrfd-IZL6LDZYVonN1N6OXRaw8A372EtIrGHt_ETvvkcgfdDuvVcIIN3flMis1a-IafAk30tg5hmzjHxlRBktYe9MSuR5aVQJffnZldVWOvdf5tR_sE2mObBVsUgk66fE7nak-RgnCaChsgUZCQWrYcDArouAN43BD0E7DWcc-QIYtBjeSOU3MWpdnYdsBCeS_TGm6MRwX0Gak2WrbYX0m8p-mT3OPVlcTTwsela1twaASM9Nv-khmdjRQmoY8N9ch7Vgq4x8O3s0-lu9EpaYVRPmQ1csa6D0x38JY09o3mAEeKdV66-vUlgTnXrK48yPKgw7mQGFryY2xvoOAWlOJsrBIDu8x2HIbcuUSwLpEwB_ln6Rz1LH_0lN650EN86pw15ZJ4ZodcFLt4bAGE5snsTVRPsIXPbswsdqZaZVx80Hy9teXpZn4K3BDhZvul69w91y1XPI07MLgrDD9N_E00lqlAfV40fXjp6WKS3p77Yh78hJGTzfyzFtI22_6skZieFYK4PWM-qaZTFm1AXQ097zcpDmO5x4IkALLaELbmFkN3z_RwNJdypbG0o9FhmnAZY8R8w2HKFddx6uiztm6OhSUwEP0cGp2ncXtxo3TwsVKznTQcGB0XYLobKQnJzmCdIPbEfVOj6GQpPIX83bZfx3tbf6UX9bpYoTLyVqj_wurRnse_FkEdWUvrSGneBnxqxDtmB_lz_yVltYwZ04A2rezWBKzKxQFLnzZdk-fFIjGVqLOuVhXTOD74mOUINLBROgNMpejhkQMyWY_KVRr8H7jc4Nb_6Z4iWYWFUiiirnWNlPjSX-DUl2spoC9DC-jCf_Q8C-N8cF1X075XrPpWGidn5IMukyb3uksEEF6zYurozU8mjcw1f-KqDgCF6u0r4U7KN-aOQkP17D2eLHC5F_uRHgoLkVsiQgNyZ72J-KEZf5I6KhQnvP24lZaewUfy332CZHnAnN2wj2lrF7MIPsOtVbLpbn7hE4iQz1PKae2J-mDBcFvAJVWGwmOZUWBf261tu5KhZ4-YYtaez_mSYBXjSnGjArPwGA0AG0SA1mNo5Nhh0UFat-6OUe9b0eFjGFTO2Po85ZL_MjHnU8sYOIWPj-0EbagzhJM1EyXvpT3au08i9D0loJ5tTqiYqEGGpUtPEybn7iT0pNCk3BsZLAa3lpVNWzUCNo1-ow62ZYQEw3kbnrwjkeY4g7uHWVw0tk9r69ONRPIPlqAr6q3AJ0DGvb03zJmaP5n5i4LTFjhUuw03w4r0VXluEL7zLuUS2mEuHo8LizJ4fIvJKEv9ZPGIEBe8F58TZTGDgBpa-mJGay_HCXpj6a-r0Wlrh8CKdItmoDD_LeFkAwJ5NnFBfRrLcG-o4m4tDgExXI5WO4D0ODmYHWRTCmH4qInC2-VS_XolriOZ25owkWfQTC0xmnrOfX79uxJsAEgD-38YS7GsIVG7_TqOuBAGsNHl7Kt4BNPYfn2bz9OI2QDacMwqnFtCBGPzPczfMtPQEDvSBaUFL1r_mr72BpX4ZlWwRK7GidvFkWv6FWDhVgc_tJt-FkR8Imcoy7B5ZNKLjXsJIlz1xDlkuT-7sZ6jngTkhzz7silHBVPj_JI43NA13_hHk6Ggc4eO6UfcwxXFGZnYEbMxb4AYMCHwzeTp_rnLApvydtN_F5Wrq3hGhoPiy0EUV8820z9nKrZoxIprBMR73iW2R5wURlXWh5lFd9u7L-iKiD6TAwT3VWN9f5-jGp7WTgAs-u17mnNak5NFCzhJE_mj3D7g4n8Sb_cfv62Da9LLZAn_qbq_dpJNvqxHeSrko79vJ1mfWpAeLtIy9bPjIZljY6XWFmoYGbJ7AjAFyv94R2D2Z12OyZM8B6qshTMbu1S5r8EEwoEQRf56FnajtQpUd5Nv3_1_ZbyvGQRUEkNbAOXzn4jVKf-kXTtUfmTEVwcLiMvbNq5ii6Is_7a9JhQe0mMVOlnfaa7B-Hrn-9INVDtjdyTj_JUDkDDPUNfS8Zzwx7RcUBsPmMkAsFg4bQ7QP900xep9V0qiXurpUF0rfx6qhntNgLTESkilQ3KGTqsCadV2cZezaTisnLKrkna0dF9vxBtHRd7aCEceDnb3V1IWkYnZb5jc2vp380GblUbMYgI_IHx8d_61KDMNsi2kMcD5I0LFU5kUAoXXAtXBNy1K7bDUnCrvGyFdPk4VSG6gJYul49RbZOD8zybc5rDa4a8nS86exdjYGbi-mvoGx3E-4r9kaw2Ccr18VRi3RLorCOERyRq70SAEq9tb0q1nZFLvOamFkWOObQKTH4tn8YpG-GqgJBaVyVcgltg0kPCo-1L-fHomcH24rd0mRPhPDZgi73URAC2fKDBt1yitIGPg_fY3P0TsEIPDdp7sR-GgPajgEbola6Gqz5BJCiIfvfwWhL27HPKYO-m10cX_rPr5fJv6JtN4Iu2cZ7fUGoNJ2yCEEkczKfv0UhJ6VpxTWpQQbPSJ0LoG9RxGhkDgVN2hpvwSZ0wj6Z0I1uq-IBo2D9LFvrW-lkx7h90yJISNZDMHvaHiIu1fS_eF3hjyml-gzzwGqQeaxihZ_DBWRoA1DrCPksHYhCFCuuj5UwcV8q3LHoBl7te7XDgoQhGjGloY527MbO0Ssur7aPourHgO1j9ks8AUjQ2Z7Gl7o1nsD1m1tW3H-m8bGe44oBPvjPjO7Bzzx8VhRe7RJFpp4ql87bC5VYkBHzDpOUzvOTW6S3q-oXNrIEtbhRn2GaQtNEYZs9-YNBoLkrkeOiIvv34Rup16fJ2stTQUJwdXJioGRJ8h51ri4hw6CngK6yTaCNiYaalSr0nB1g15cvJhcrRiG8g6mFFK1JFear7r6hfjkTBje5iz8ktxktFxfzANrn9lwFxGg5bRwLZGjksPVOz94xJCG4i8WiLy_RQp0SIG0wjyEm4J3MwgzfbLA014qWmheOxxy0dSb935MzhCvD9xJ7nXL-1Bl-K8N6jeqr2yl1qwLop8A8NTC19INVAUODKwt-IbRJ6JPPEXX4uYlwB-OGECzoSz512OIzeUGy29CpCc-sPKO913PZ63W-fTxLIl6GnJEZGUwjzhLaSFJax6zke-JYNicvBdC38VPJ_6egvKZPAr566x92aQHRR98ZM-xSa6DaEWCkHEnlLemM2KXNz1HuNRA0dOEaJlhx0jyUDMejz1SMt-WPBI6zefWGpxifUsrQea5vBW8HOcBJlh2thwQmuC_77Ksp8q9Pqm_37a2JttyvvZGxhSoUvkNMIIHsHOqqPNxJXVf8pqXKiRqsohXwD1wF8P-RfjkPj54iU60chopNgyYHYNhNQQcKCGnsq9iHuPvcVpK79v81Qw-HRugvC0mM7d9gKYYwRHO6XvnKMu7V8wUrM-jEL9OQH78y44yCIRPNY54f9yYJdsST_YbVi6gHDcwYxTEq8VEA-bxK0GWfbAnIh4MyiAuIO7dzmq-MN0HSBtkMFDMeruwcf0aZIGmIGd7VCz-LCfrsUqPsSUwEfTuHl4dAQvNk3l-VRdVX0LkKT3AxodLTH8tCZx0tfRfndCJ4sBIjvSHYAmMBX27Go3rbC_SWZceulEIyRmFBISrA94lrD_HtNB5mzaz74ssm0fLbQrd_TxU8rD1EsxALU33XqVNqG8T-ilhK73E_zmumMFJdSk658_71DNmrf9nGXCNxUjJlXjUxUDfTOq9vAGMRvti9wIREwwd_aXKXReAcAc5ax0ubjb6vyOXeDEaE0VfglTIKikxmFCNMwgy2orNn6ZMka7_5lE567WS8XzCnO8K8QZo-SgpyhsALanwI3rCojA6IDwMz0eRkbHGuaNBC3HsfEWA9pulCtea_PkkROoXgQUGwnQjSVG3l34QFaUBYyjMrdk4LXi-HIOxcB3K1xp6Rsxvd7IzmPXGtinZbwvKGoqkYpLf6amrwy5nnr4ivdbI2b2mnz_VmNmecjHSZi41PG8KxjP2OTcANYaJEmJT1G_78UowUALGW8oNo_vNUWsSF7fFxxSsOaD2ZF5FU6m2Vtk0RropRGsxXmQKUAPADuD4iycDsRRVGhbUzDBaOu1mJliFY0hOmZSJX58KTkcSyHcYCrOZwU1Xwp91XIEFxyfsrDUrxLb-gDlGvbmVx07Sqk9hHWv5M9b8qc7xE6FmzWHhPv8oIycJXuaaYM2petNBQ41wHa-dvL9K0mEbZtsLK6o4ghLekMn__8e2cYv0GIaFtcsYg4DT5lyPmtmb0tGqFzuBH47l0Bj1h-vLUOWirBNqa8hIbvHBRoBI2gE3HiLW97bmPyk5D7Q8prqaFCKyFsdxd9iQIFbO6mKJa1sKi4ssrwNzU3UnippZwTiS-LDoArZZ9qRJ3jREYt3PuLtPqATGVyivz35AyFJXaOoU1XeGHPK_FI08Ab1fVFZcOhaDOMw5shg8p0iR5hMBftA24Dr1gA3JavHhow8pwC1SoWfFVntuKUUJsbZJFaBR_6vhj-QOpVoqWz8oUyJM4y_wkce6dcBbYcanQCLMg2aYRnd5lfHavSuNZ95V9rj9iFWS5-81FM00pb3GY9BvHMoAOCH-4W7r-PKj9J1FYcq61zvvCVandc0e_n9HOEwMNtBvyCht39JWVTyBnrFYy3vT6i2uZ9XskyvCiGYhe7mMbiAC0zaWA_2UpQqM6UmDlxgtFg_l-PDiqVN5MV_RLJymVginSTnbsKRCVTML-YItC4pPfixl1D6_i-Mz-IUqS-ncjH2ro4m6FE9iExkuDIbxp9RXaMnyxQZTU1aeHQuwYDtZCj1IwIIDTYgALxr-YQ3G8DuqwkJ4P3MtfcUEmd2FokND8aHXBnUUjUMOXRbbaPflha4nax4rfniH1EdJ2Mjm_OGUkYXNW9hYUcF6y7yKZbFeXw0UvvHLRYfDpqjyvi9fxvFKGaykUJ0aE1i5BhE92ZUAP_Me61fFy6x39G6C90z2iaS6kIckmKhZ4goVEIGhtgy0FTb_bABA-j0Rm1BABI3PELrkLNbfCGSc3dSimhM5WZeasZDKeM8uCWXd3hLLk80n_fj8WbKNsvb7tfvBEbO0W4tfjs-gNzlO7M28QURNldOWISJ5iu_a_BztnbcYI8HxIItJQyBf-7-GMYPgq3lNUQc1mVDn1pKZGDRUu3o7PKx95jbEzEua4DveAsKZNMNbwiBqeCq-ByPmkWKjN34CIIwS7bInbJ2hcBWqjsKAvOowUB9Xc5BmJ7RvPvszD-bGTe5-f35ptJ5Whrw-Zrz5kJgt63DcsHsF0YktX7ehqd193NBcbYrG777LW9fHD5hh0iV60menrm6jGBauFthZefm2G2ORQobdOEYGUJYwqUx1mFLXJK6-msDltegm9jslyyHyOaOXyK6V8i-MtAcwjBmeJoVJG56PS95i8e35xyx0q4Q0F5VtbLmZXmom3NhbQIiX4V7Vjbr8zQ9hoc_uWR0iWhnziOgqE0X4j63GF46SVIjjLk2kJ8Owpx4zUcxA4O9QG3zGZ5DuDMyY2QQo25-By9AllaRunRFBP1JvUR-iK3jnowkNEqN8eXA1TZkMSW7enVq9F_GyF8fbO3L2enAErz3aeolR5c0jWrU-BEuIpzJExTSkseHOjmnejf8XWXIDeCCMSsamdR6q_RrJh8q_p_ae1rejLEAiKQmyT5qksreQZs_4WEEcN7W2hKlqnuUdDmUO7rdgRJRL8AUA4y9CYSt4VkobI2DiGKOa26mip1H2BefHSjknnwLzev-d02at-1v-on3KJCGGSr-WdDIVIWK3zsq0Irpm6f5B1_YhxNX0UwjGEmAunVOrGguRtQ5ZgykRZ5Z0sySSS_v_MFJbrRnf9gd9zIFTqvZi5-VfhoIFt8nGMRN5qdZV8Fh2EnDYsVYlUWnJDeBS7HNhvlShbtzGG3oZEkfjxmYKgl5jyDIgoPue5lEOFIYLuLuSWehilEyEY4LvUnhFuf0LeWbEb4z0IEtKrl2NUqb09negbd-pSIg6-n7lwd_c6Rvfh2wCbP4y7njJrlHqIQm_FFYvXaP9bl_Fn9OKxvw7xSxeXuTX6lbzl4pXUZjS5reawGdNajz3fTHNjk73X0QLrlC4NdyFf_9MtyuTm63_d0r4j7wgL2OWrE0FBdGBqfk5ffkIQaUgOoW7mNnCfNmnu3KGUJUhUqe6q-9FATTiGxKdGxslY6Oj2xAUgZ-gbA6i-cmM5RdYCUKgrkVEbIaSUASI_8-mgp1gjjmsPgPLUG0_EbVSg9eknm_OpJPWeaqDRN8dnb6y30BZeyFnJRmaLMvOp4HAlZEQqzrBEh784rs0wl5REgCyAa3ExUSmKH6u-7mfJ8RIoCXpu4ulxNTrlIeI9u3bXXbgckZ8yFVKnBvoBBb_TUJBeMv_3uIFtwdrpI3kgYc6iHwM7Tr4CUJLP8r2hT4RB5dUqwX1JCaQVyLWCzRu1ubMjGMXHGH6MZ1egpi8LgXN-NYzjiLfBUFTAREEJBhZ4f8gaMw7p6J9XzjoGzSnruWUwRWX3y6qCxZT1ovimP3Q8DJM05ndNEOxlQhGTeOA1RH9jXX2VUJQoL2b8Y6aNPMDpwFX4xCil59deqOG-xH1Kqaw311osJbqL-jbl7ih_Zt1EBziEYqhmP46R4yrwc54QEbBMkSt0asMZ8uGis57e0WdmQ53G2EUpEvdoOALdheupXOg-j7rgy3-58O8awPiwLiU_TIAb6oqd1GfNMP49_Bl3EUuAExSWZIovK8E5x6mcusf-MQ65EYMRhpCFms_NqQRHyHGAQGO4tWockDStjwGRQTWARdRdeE8j_saIFcZsQjcSM8j5Z2yOR8bX_OJVDnVbVpAcEFQGtn3dqN_ifkGUprSRYG9Fr3wGhj34VrWP9N046l4Q9Nd4q94icIxDlMVmh4HjsErr8dCl8HcX9xbTHiQKeMRnWxKkfT5xwe96LeTteeHZFXrsSNRb6UsrNdnGjPgK766l4v02UXxxa_HTJiZH9nr-Yv03E2h9PTRQwn0Gx71Oj-9DiuEwx37zhi0qNAB1qAc07UBIbvH5rmcgIes6vPljCKkOmXE_NrYEA2w3S_fSKQ8Haywv_yNu8rTemk4tHFqAIuQ-X_9s9ZYZOHz-PO5DQrJhYhzYqvSk9s0j1pDTbKzwOaS9Od-YGbg8KYpDy0NkdJqvlUtu0xRfxVBLgETJ3EPY3KKoSCQv_S7-l4Rea5FpMbqckk1wqVbCxsi8TnDn1vRERzEu6nWnUfEf4GnhC_aZTM_XoaCneZniuxHJLCfro9dzoPzczm-CkGy50k02x8D2UHF9kfSusAxPIgQtFCtCLdie-J-8qsTB9i0Wjt8-y4iU0wR2ZLLSXyK93PHQQyI27pRWDNBaxQ4PTCACtx-lMuyu9RWx1JjnBvcGG1w11m4k0CleALNWRXRZqTFnlFHmqYxiTIxGEEO_OfdB1mJwJt61q_atkagcnh9j4woST9B0KSNX5WBRlPFlpw0J6Slx-2-eTwMfXjsCDdqVd-BVXoy6z08LtDqmb7u88cQKMqskxPV4krKcIlIpOyFr-AgJZTSm6vX4Rmep-YPiPaM0AySN8_m5LGujBwwOcnsxzvTplkW6TfEAXcQS0s6fsIqh6uyGhs08qv4uLkeLp7oezI985ALmPzykyecW5AgpTIhWy-84GZYUuQpERnc_bGzJmvni3fTiaZ1_QSw1d4lfy__Bm4UkjlFlgYyjaK0QQiQaCWeTu03d0LCIIZAtRnI2Y6NjEsOP65dwPSrcYEZfoCxBYHrTzJdK_FNy7yRpbKh2Y7VbyDn-obUwpRrJ8fJuaIhQdAS88z9UdPS_-oBVStd6Sitoh7DQsu8m6TD0BtyIBKq74uFZcAyyjtemLZOk5TGq2M5BZeYcbUsuD8WMdI0dZWyqYR3hd0M30-NYv7-1L5lIxySGIKOrIIY4JWCPs97ZFHpSq6cVnJn4GuYEhPXTybinh7pjNOnTAnAmUhXpjMPPdvGHMaPOgnMXANqVaBntZI-9jtDqt7NroTiSi63rkQKQo73PHLCJzEymCwUJTVlVfXScVK-JGWwtgqPSEEiQ5m6DN9CUV4rwvXYpM-_L3McQP66mX4-aG11-oLNp48_v9r2WU_VrwKIacXpL8V-ONDJqmdjN0RhBSkzVI-Kuh7RXnDEaLNemBGQAZHjuKJcEBdfYDAyUdqiCHrfyc8fCdz9-_JaSKSNjePcf_dLuKSAVt5l_nQyZ_I0v6weY8oSg0xGFGwlNGLW6olTGfRWLC61NODva3f9sLQ6i0dewh9tv9bzgsi2rPdkylH-y-TGDrScmHNgb7plrIW7PaibC20swcwJHQNZFYyBETihWj4aatJGWZaTEAVWx1gc7aCuNwd8vi8ItwvlotTkPlU5s5Zozg5vNbC-A09W1pE5xXpZLbigwnS7tQU1c2Zwtbqsx69HxqaJmdE25mtaosCcBsW2lmV6EUqi9VIMFDqJSDHXD6cBY7nmw4kP7o99sZ2qsJgZfCwoCnVf_jlMCsyGdKF4-VpRtnFdVxh8RnJEmRcZkOxsnPJcUaUS0vwtoLtc9lMkStcS1GfWiatZ-ZPzU2YOHux9TzchAVnJx94Ylns8ZTmmtCBpZZGDa5fLsP0eunbwuGbKzdZg4eal9p_qhevUfmst1dJZfoJfTXFRSsHvYWCYE4E_UPoKh_fG6z2wI75Ca9adQW2GszpUMvJj-0rXdYmF_cXUXP0FHhSvG-dnQW3xynchZ-1Y4dSDLeDAwRK0jVWc-Xp6QcsbCeJtHiN_mnA8gzI0-hy7FVpDPFeNPeIFhl1vNXvAkgMs-EGZrvDoXgQv2BDq8wEy7OdIcEWWL0aYQs9ceFOyGPhyppsQA2mKF605Vfz1hwuuUX0TNM0NS7unnqkoxcTAJY1kqMm5c0I7f7rdJxpLvyBDyF0KR79KYsE9OtcRj5ujaZgDgWNN5ZleX1Y-0mV_fbcEkIsIcurOOhWm55Lzjv8ZzRPt-_cSkTyjW6z7hwDX7wJxy55E-NVynnH4KLqN3yw38JY6wxxKm9nTWjqX1ur9aViqyh1f0FvfyLnnuulr9smRWQOnTLRbUjrw6AKjX-bTzSPiFPiHNnF55r4bmfHX8Jac6FiMDCgWdUcGR06YdwWoqXQAVAqqBbrv1I65vF8YmLh73-U0Xae_KCHF81pnGaQfRhRJY452KDWMrvNKRVPPGpHyfuNeKQgODS7w-ebSxWx_fbj6fCwnKPTkvOC_pmPi-7FcQA2Fb4EcdnCtEhMqcV7Wggaq38iMRbd_Zhqprz9MqqyPwcSvrOBqBCr77Mw61Fg0fIMXfAXEah1sjVny1k_B964_bmmzV2vJGnPsFrNjkNUIFstuEzBHYsyshkwwmFzd44UMXvTidCF8rGGz30Bw6VUzudyC7XYF3SmtXCD6ZIrVRlAk3WukTwZ7_9LspJikbyqFJNyAvAFbDlcBGLxPTBT1w4dmfBDSSueESPds4ejmBVidGw2j1b7pI7LT8GjNYnXSMwsQhLtgUIfN62ZArF4bLwf41NERkcT3VQPXJIftcsfCsGzDzOIekDHW0FwWq4NTUo723vpEtjV9317AzR3iBIooaBLYrRBYqoJ3Y5A2mA-SXXIWrI5f65pWMsG-J-81pvIYwwZ8SnW8juGT5EfyWScLBP8qJpAq_boXMfK7cUaBicaOi_Une25i0XwIIFdW7T334tIanHNYuW-6_7ItAhjr312rY41hksc-piPizC9grwAYyvLlxi9ksdIgEyrSfFiOkYZejR-Z_P6JnLg4KlYyHNCenBkB4VR03Gva17l0UIJ8ULFK2S0OCGZ5ykYCnLO_vxqNXW0r98VY_Q7yUs1yPDYtkkBy0kz_czKtGk30IEZeJFHYiheWcRpT7v_24Q6TzJtqImqXZWaRr1ijJuzOcRm2CX9WvHXWYwAth4iNexPCpbVBb7dJIzc9w1BdJkHsJ8dfm_ByIn7XKBYTdKOfjKVVm3qOQ-3haZg66QwJMLz6JPm4WhTFC-3D6tPRVmmPP_fbmI3L1gLlElSjOdbqrPSJe5m80gzf64ws6P9E42OXmqngaGgFTVXBL6CrfzO9Qt3U06-lFZPi3xi6CVzE71fHw8NWBwkF2XD4edpQVXOdvpsWV3LJX3omqetPPxdT6M6IZGJmxfmBthzmpx6PMpHzaG6bemyMUmmymGUwcPAVHz_xRAXOM_znL97kpZB9AqFnYBWiVGmM5zUvxGkeqrqdJvPJG3R5I7mU5Zo23CNlvrTAY0QtESLBbijm1OikSb45L8kMG6_V8pZg95o-4rT_REoFYdv8MgceKGiH3YyRnUgBRQ_w3nZ41flpltmhSar3zX-9uqSp-uPoE5UQ0j-Jjj6zwj08BbrnjD2m0fATSK9whQjRsL4kE-WyqCACibEBgBzwrMpeJKcDwCY6XHaM4suInHlN9Gh6W7MtKlra76VFwyjo9RePhcAV0AG2_hEx5u7gVfpTUn8Jqz77QXDwqwjgIbAfx-lfRtK7AVfjlsI4AEh8MU5KHvjw1YDvff3ltEPpnAU_qwX6bLF5nyMZ4HXW1-QjyKnwUi_-5glL2vmVLqFVDDwuSiuVZC2bnm_uphiO3qgc0RXs9viV4AICps-n19am6OFLqEa-AOvrmBI0cOYWxHzmX9ygHIFgK1iAj6-4vRVQPZNthFqsgTd-DW1txe7fZUkVdy0I-jd5sFczSQ89UzTpCPVh9ZDrBD2yw_iUgxNhmegoI7CWuyPOzIZn1Qv8VUMMsbgvx-NsoYQ3R2TtxCde_7vB6St0Ew-t0GwiBgq0_jyMm0WxwAQ0lV-FUYlOcnsGIXihZCI_oMhzQkIDj88RBBF-F8DeCaC6zi2t40q-vV3W-csUXZZtCK1dd8fOjiLKHf4WkjPIRXqkUzGsFLvLtKzJKN1w0TSx943q_azugD3_5t7aDs4Oc6fn49DP0iBmIYPQxZHI_KfqXg3mezWgKC0Y-JGI4WHuhQNr-dDobYGgCvqNvEg35UgFDNeh-LOq85wEfX-nIGRPcqt2IXBYcftTZ7c0hri6f2wBQY-07mwPPMZCcMcv_yClyrT8-Z8SZ_aMd3OfKhOXay8yKuC-siLUzpFymPIXLB7uzAx2DUVg-941v89v3Ave6voDdiHdP5MwZh3svoJ0YRaYVwteCEGoJNtRktF9L4ZlAXZA79xVdcA1tADyeu_8HD-ef2U1kIpIrWcGPFS6GMG2M0S63pwyNMHQieokwp088YV2I-pLSYVb-U3gml-SGK7Zii9vRX1J813rPpfNcR3kjPqsLRvEJYV5-CGuzm9vE5y1FVEJGkWX4kMXW9ExBTNX2haxJdxDAE03SCdNz0Iojt23jre8xdMDq9wcoAW24wR1MgaooeR2L71JsuxwG7WoiqtBRjV57j-eE7myTSAkwJywhx7bu0DnBf9Ifu5XQmLIhEJ6Chxn4EqxPD-9XWjFt59KQdHnAgvJNX0uOPmsTz7GrNp0HFV5qTDl6P_PaXmZcMU3BQ3t6TyDybTuugQeXscYM_prcs3KgGPZIcEiKkp0bVKjkm_LlvJblsvo-PWGxHxkQKxP-5ATdIF-gfqNi8yg9q66SJzU55lEB2_x93q7u2y5UxZ6XWfm7sRZDjdEUB4OvIbPp36vhBff6R1ji08imPRmDJb-EwlstIL1dW11DcA_UPA8IMdKWHOauUgKZtJdSb5d2kq_7PPpPUbKzS2LdO9PfVBCcpiJOvC8P0XkK2PCBYoVAKjUSTEHmqyBmF6bnIR7PsDWvL2GKULjVJT2bmVYC4acppnkwy7aI9aKsvlRBflmoEn15sSjyxXVhvQVGHVVBYNb9516AJARBqiclQzIMElKLeRlw5KAswP4L_0CZ2MgSpiUTxS8xg4tbjKvTQWvbc5ZBpF12qP7265FXyCjEIz62cXY22JPo3_OSQjnEidr-98fF9tOOO-VnMf_3S8m9A2Qm_2cx6qHZBpG3LVCuWl4XjBBtQ6Ql7QEnz9buRKBzTXuitNMbXLyYcrvQj_YzgjJHM20RUfML0o1-2_tMxLhY_Z4eZM2WvVP9mbkI_BGzSNEUDwcBMNn4BZuXAMvSwkXpsG3niE-PoMCuzBmka2dkRcC1LmPAuTYMxuOgIEwohFtz2BQrQkk8anzhnGjHfIz1pOAyjoHojNs05vwYXt-ocQiLWYeEpqj2f6N-tOt_5ycL70iKd5ljDWOtl-afB1N_wYrgWUlr3TWEdHwoLjq2ThLGCTuCHxidC92h-KzMxKSC6TxTYOomPRZYwYva-hXVEEqeXSCYYw7e0mnhb2Cfu7KyyyVlB2D0vtph1aXSqhpMAiOcbZwvYD1AqsmWPqLUGw4csbtblt98JQL8fX2_Krvo6nDXeDcYd27pvuLnudD4ED_c6TsNC7f6_YzLwkIPiWjrcuisA3A0WijhrHG49SohFOlUDRZDlKeKQHkBa8CUo6wiAso7YaZ2gRsJOM8-7b7HLCtxaWMeGVL-l_GcVgI9IYOLIFHiFxtgwLfNQJ5LEiUv5XKUu1zyCd5exKsfZOWBIcaOupGRVAzeL4sKdJaiwSc_N6TPKEVXZ9kLxowNjF99whXG92bdh0EO6lxspaG0_e9aiufMpanfy6fgnbXJobGa9f2JtZhLcucAZ9I8xPNnviWxegJi0L-4cqJ7KEiN0P_rNoU21840ZUHRa_nxQ6R0UHOo-FuoFGzE3U8pAhvWpAECWxwqZClcVJB5i19tEH-4HVfdzt6A6JmS5KJWRuBxuKxxpIsrKBlNpa9xjF3z7FyOYwIoJ3lN1GoGGj-0lcB9UvyfThPH-ZgP6X5sCVAobT2itX3JnJy_X4scu0O80UG6OJcW0RTIsLAu2Vf04tbdGOBvaSxuF7RnaeAJ31TdOJlIQBHGx2ar12pVyvtaIYI9Cs8gXiSGvZBVYVeOUmZ7ETr-j3A3AI8Vivx-NJM3fUtparTh9AgbuSf3NxzyR7HguMMjiAD1gAa3vuUqH_kL1agetomnCbIgXn4nIHp_lYYz7Alp7IO7_D_hPxvVFM2yWBr5APoYZBW08azlChM6Fg3naVjPRLA1akxG2vLFeFfWucjyAD2y2YlFE-c3S_TId_d8qN6SKN3W3IBVUz6BAuIPcHgTqyqaaqfU_0ghY4BaeWdxf66kgUXLzlT2DSCZVm0uwVzKdmLjU-DtNrWOlGi0HzjPYVZa60x-qFQu5pKPCERFPqaSQp2AmgT1ustVkvtzUGyFg26fZQyLuztP9rCM4YfznTrA05ueP5PxCypDzy0zwpMhuNrj8L1HwHhviwAVVJdlos4twW7c1on8IPqLtgmnKMmPgkkT1pztt26dQegKpD0yPmLnyULl4gChcDssQFjIQrIdS8WE065WmoRt0iro6bJzylrt3KyXuZhfDCnA92s0SXlLUhygbtV_AgH0pUokhiwdcsVhts1kl3RKEUHaY45zCd_5e61A6EzgyhGK_objoQJkuDAQUX3lzjlItvpBXLN8aJCb5YwLB9L7CNJr1Fq6_0PqebRsbxG8E-4jf4FL8hEbaWu37aK2yNB0h5QJyoDjLv775O7QQvkjalmx9nmZ5ojpdRHRnGk47uekDS-VWs7-ho6CcNALQ3RLClYL80-70hAJE8bwS8_cuI3SV4S7R2MJqoaXtSC3fRON8rEiQinYbPUY1ctCc0fswJ3pT_yRYA0kA2hrkeyChSt6RApwNVi9jpjyFg3q30Msztxfd88wJqHfUSCanywFYcPZf1cy8UXbfTM3KSEMentNnRX9B5VrfqqOok8H36VWuM5VDxZ8TuISnjKvmSGGZXCTi7bxBVH7j0HDxIPkG_FDJoFigjTTz40-IugUCCbxHYMqHnOl8Lro1NiWVEC-jZvbQ2BONNNJ4NC2B_8Cp0rFbXJZj3_0N4stBkoWcBIOO3Uww6z0yP4RgT9RG20igN41IdV3e04IITuDsKQWJZOiCtBqj5AePOglwcOLOxS3t1YwUFttGB2RUiVhoW-W0b2fDn88Fy6riGl1A0d-Kglk218dudPEqRFCaMciiS5ZgcywRfUh97o-refnhE5jHw37w6JsqUhfeW8WyQltH3rc5UOms5zOZMZykNRh5BkhRkM7agg4rso_3RUIjJO68hqN1RUXcNKvyoehuT8eOrTQBAyMlEvBxU_Kz-rNZiO885qu5bWFcNpw7euh13J42K6RumBjXrjmx1-JaGukr5A_0XR2f_JCPH58MdAZ7cDWN_ltK4uvbHtmvyFeVaIkCt5msgwwUDHZYuNTigLWWXHmKlB5m0JfOFRieIS9ClG12ba9JAvTDb8USoeRpdME7aILnjBSX5HQ6E0TmkVyhEpDOXgq-XWWwinHYT9vDIPekpEBbCpS17T-pzZX_8dRZkEJN2QADTfnA60E4_6ZOO1wVikuaaRq2oA_gl-7HdC7Wkx5NQSx-X-sSnrBRRa7Em3jTHDEuuO88EYchJjt7XZ0Uex_04kpThFjsg4hVkOhXiObN4BRfxjGANRJu3UCGnZ6eehOwWp6olS2NpwUucab4VciYNjKH2RfuNbilhk1aWq6DE6fkRM82IZlW_LNCi24vqss42uXD9J6WSqTCr0rPA3FdxZUzDDAq-4JXzkxL0zjaAUHtdRSuMAzxXH4GlVmIK7X7vHyGyT7LTnG6TKdwZCMGiiqFaBzx8TOHdyeDoaroObKq92FcNkOOXhIet4pOK2h2Hvuaz9aiTpHCgRHiOwy4WgW5BSpFEyASO21c7i_bFGoD72xETLXXXDTJAMeogiQdWE5p5FJpvr_K4f-y8YODSfdaNw2MB2dbk5pGtf5QZRMlBH--DxVMndZAUwvq3Z9TnrJ2-_YQUbj_DFTcd3YSqQxXcjDn6JdAf1C6nnZOh-11wmS7h_jIvgbCxt3JoeXdM0fRaFTyOulS7tTCmrzw5u6HlNXecjjV6y4Rr8HK7qSh0qTG7DcmXliTcsU2FBtbu8nUkqFvo_YZUrClQkFBKgvrEVguEu3ZEjSxJbi7ESYK-MXtKnt9MCWKpVNdXTREJnIAhM4Y_YMI6Eiz3jl3Pqt_qd6E1ZostletAw_rlzDDRjz3Ba0KVrBTMWqHfBMWeoSn5lSAXovgWLYHHXE72LBUtjpH0MEoTnrh6YmNBXdHp3y-iz_28h0JsuKAPb1QyG0Xe6LJDkQukckY9knPpoXUNTxp10DLzve17GYMiydJ3utHooCW8UgYyISf7YGXr46NyybyPV-2BOutykIt_lJLRzyMIz8Iwl9doOwT5kv_3QmZEevmFyGaka1VZVX94L8-vU6Tm-9YOsfHeR-cobe0MSxYeaTVWVGyi0swVnvNtqsAapg9gQCdaFRI8Y8WGi3jtePV66R2m8X6Jj90lARJbbHpasKuBF38yeVVpFv9fBo3Inmww56CBclCER-g0q1X5p8ummuGAzk2jvsoQoNr1AF1oKyPZyYYEhw7Bf3OmZEBhasQCCmQ691QDde7KS3I9ID6GYI41m0CP3iwzj2fVQLm3FsMhiNX7XCYGem3bIeEk8_YU-vhXeehIEVAekKdxL-M88-Uvu3wEjNTVQdqVrXMQzHpiZFDYtSmiarD2mbaTiIaPOAEkDcOs7l5XrDxbIhFxMQv9mT7_bVspJfpwqiO8tDjiR3W1sr0-DFkECjd39Webm7nPiTA8W_RhT_tQ_Qj4gP6Rv5tKdoxkL-CGwgKlkIPeUh6-Z8yzsSpZSz-EpZpm1noLA63-aDWe61AHeTIEIMOcIy7g3gT_h9rsSK1S2Usp0ey_RuhN8Ww5kCd4VyCxBumt1tfGrMSu6p8-kcx-rzUkkr-TTj44ziZMAB-v44noAIiyrZAaJdDypwVTBP4mgs5a71J7qfH7YlpmqJTzRmugSoinQpwF416f6zgR2xUWtVS_bclmvQZBcru4p6pmx0epgvQwyZNb2O7ecW0UY61je1ym91eLJxn8roIb1BJdM0bqgW91voPJh_9gwRdxuDHTJN7q1W0qS3kYhfhnnBZKKQosuDQbkQGqXA7KO4roXJgV26_j33ynYoirCUu_0VPGEwOJcnVP7aHf7vE6FuM5O2hjm8gZQyJJWXNEX-IpgjhIRCERv80Elq28sYEeVNa6F6jVUWGwoOIBwLZjABsqLuATOPIX_X6nJvVDY0b4MVfTMpXNuZN0hL7Ilsp-vxsc_7T3Nx6W1PkEQG14l5hj4Uzn8deX881b_jKtmfPR3bbAZ08JVPqbElmX3NyaH0YCiiqRAiCYnVS67we5qmOOaV7VMvkkdruTT6LOd73t8lfbM3XQaqzTA0jV2zOxAmg1JUQRtArR_jkh04SnU4kLfcCN8o2KlQThQrL5rBsOxceRQj4BcTJjlmrahDC12frLtUoAsZIGDh4-bwCRtdIgAb_FiFsVpyXPVa5BhTOSkMR6qn1EDygZ8RTkJ2qY2knGcAvJSGSbjJgifmfdjqGPusEUvcgA2RE0eeWBVWDx0z9ts4QqW7FX6V9YkUsmBmojZam47xvsBrqXBZf4VZXunx-twmabLBb0hcqMEYzrPSqlhSXPqajcNrO_t6PRAmQjETdAJ7kD27lkWKkRDjmvyd6BEVb3pp29cfHnViIqCl7sSWDtTvGZfWiNrvbIIihf9sBxlgdf_lbnHXHwMYBPl9Cxt3xigRnBLwmCdT1j0EBywkxnwArtdYU-MF6mQSvL3v4KPlKkNQ_5IceWu-ZcF7r8mECZyQ0THgwo_RFpwCCzuXHqJms2hZccJ3ZF8Z-s7a1w1l-L0qJrxFQHgi2rJvG1RNT8fe6AHBSuGbVBpI7jZkUbf8DMtMXpxtqDWkr-a3dHEX3vYTocxjM3e8YXPWdcHNMqf2xp6hBb7R1uqtTw9ND2p8Pf0O3JC_nP5UK6EpOjm4gwVmTT2YS8P9ghANEptQiEM9WUqwSNi5qSE5aNGyCYpuBH_uZcYwvV55DO6gR8RPkJzZGkbcm7UNRb-mXPQC1M0r072moIGXQmrH2XJpnL4k994zMPOQdeszsrgoob6V_CbFiKDUOaYHJRLTrhVhzoArKR1XEI28Yuy4hRkgQ7-caqZJxxVZf-VLINZjDBxIzLdZy7lFtdIpFXGNmrZaB0z2bGqaGm_mbid3jxKMHbnbzc1psg5mc3e0gZ7wacclSGsA2yxIW_ReOs-xBXKboXj5wugSGAbuAv8N-TBXqRJ1o_rc6Ur6Kn-_GqWlsaQKHk82ChtVq2lDM4iGJeBhqXNfIjhZ8-9a3eL_a-bEbBuQ6vHCJZRfffN6Brfct8AKGzgHohjWtZiSOkxCplb0uRwPpIlM3nosM08HZF8u2gSIiDPYbz0oKD270hkTs_i80v8usRNJM38uxBGfuYRsJAjM4cr-Q64a1QIs4sjbpvc1e8lCsx1uQAhlKVNxiM3cEcyR4N4V9n7p_viGGkvLemmmOrO-vwnRw7MwTRHhktd-P7bc-B3sYj-zcdt4_i_4IvQkTKhsPlS87P7kc5hH4dwoYN3wA3fFx6NBiWinRsHdAKWPyiRYvv3V1PfHgEFJGkJ2BqyocohAACsh6F0nintUQDobR5BD6I1j1qO1FeNeMBCErdKm3Oqoxh20DgvqdKdQZodPWrzcoQC6xFsm8WgvS1UCLWHGEJNgTCnAsTZ5M8DPALxNNe3Qd1loltY6aKcGbxeyGlHfgdE__o8xIzz5bELSLcsrljQTXBwyzdFw3wmndoaHU9NBSwijd33KJcGBYkihpXgK_GQDNWvHBJDoOrmZjwmBO_3qq8tAI-Od_VpCRv6ni1ZZwVKxNJZr9ttwmOQPypDvEO29qisjJ_mgh9ySERJbW0F2jICjk4mBOwUFBxiDQJ-zvYGSJ-YYZ98U-V-s18uBg-a0wjCyqt-9lzPsS_btEziQ4SzUigVEM72GkAV4RWkw_HOl6g0kuzlU9NzGPPjICUzcB9UbGWIpT_dXQGzjzP5jvVnf2hvH6GSRO_Ria3Wspg_09fBBfsCbFQMcQ5ucxVzkoox-OVHCQOVbOAiZLrwJ8k4jzLkSf5JupoqYLUmX2L5v9AKPb-BBAdNqZVdoTXLB_X-lN0ubTwAXDAyIUpkA7VepYYqkMErUeqLRO7MB-BbQFSp3822kuccqaYLNWSixg4Y6iMWXnqT5OIWEx1QuH0wVwJDZfDP17Wv_CT0hoktPN0SXdO8y-f5iCPSO_M2vftoWJbPgyBfEWgZnyCWCePkTY1c_tivhMwIRNzL0ZzQlRP3MgUiW9AEtGQVO99ZS_rdMyFSM8mblF-MMg9kOz82GBXx4Geo3nFka8K7Jh-gJqSg8NuJVCARbMmMvzf2Z4auUBFvF9NOrGx3X0pXJPzjmsfjENtIgolC69dFmw26z-2Fieadjcxw_XKxFQXATqDshW22MtiuZ3kxo0Ymg9j8R25uLzjxpCgMZ7LeE45Xi7ykw680fUzt8Oc1jhXri8LjMe9P5y02iAMyqzqhlKNVAUNk5R3HQ5hOzqDWRpPhQlZJrC2zM0HWu7zzTHHfpObfkWKEnW7Umej-nTLqeDshw1-YKITTeYlo1engJLaH-mBro4DMRXLp5pU4T1u4nMb-GM3KPf3iN2WTE9iUF2lMkL_M8W8D0L0hQI_OppBNNXnX7TeiAdio0LSfNy_7Rm17HWj--stssGRx98VFMGLbW9fwLAEDF4cbIDldL-xXnTVXEU8DqtJ4Q5_iIVW1RNROXeSPlRKqqaswEdo251AJgBc4BpHl2wFReZ0KiLg8Bk06a-vc16ZfEw2OPeU7w8PMrrPxvSEhbooq1cip4SPIunCvsrWD5fE-nIV6WuLwXr6YNLrXs8g9rpZoWNriJGALq7RXcvdx2aGTxQs-wuu3eAqFu_sRSQN9Oh8OzEY4L97LjtTUatSZcLiHMk3XJ_Dmqi82FSH1oHttRT26oBUbcS1r7f-revLGOaqIQOUHv2nIf8simoV6F1xOtmWwk6l7lkKPKBFV7A0b4GhIbjCfD58vFCOnmIeTFoZyFkhF8REwWK8EK9PyazMOeTOPse63qEflMVtoANsmcTS6Ui-wCr_RbpoEZIfSDvt2ypEiP7wOhOtDNJwa_GFF9rmwCe0CgjA0AluKbeeqFZ_hiqygAm6wAm7Bns5uRAu3BbyIjuPVIr8K7BezYQVNz6Bm1Y-38-TmUmXe9sdpmiseJgMjFkQ1unStpZS2Xg4_azZHd0NZZ-or8fst0JvxRy9ELWiarkSgwF5u0xsVxwLDw1cwy3q53L2U1GKkdUw9r_GPvvrwj4O4DOm04X3ddVXFVig9FIgcc-kFT72SAR_QaJUzfP9SoxItm0qXoIv4ij_F7fEva-ENQloFFmHqMbIcRvUNkogRYKcx49AiLePMk_QLGE-877IZcmYKm8iOPHDqgS-vIho2by7dSreBdlT5IC8vUUk4xvrucX_LV2HZ1IXsIFb4Bhi-b5BYmRyq-uaw7ssmdwZSPqpkC8Kj5uMWXx_EOa8cqftLLuIsN4yXNrqWRVe7MU1ev1rHYl_LpOF5DVxQGugijZnyYu6o1b_IpjKwZhZCg4El4_DyVSFLoZferlUgC0os8DXI6BWcYcGzehoZI6LYfmrSaUoxbl2Z5NphSWf1lT6HlAOKgx9LLge6OqFE2QqqTeSZN82JnxJgVNcXjhf2SME4gfQOWj9pIuS3T4oC4J3wE7LEDOQBSBNsQjjMIfXtwJOO3hgFnS_UOonpM6Sp7xuLaL0Wt7f-VMlZo5ctGyoaJviXSQlGPROwzDQM80jxRJMFLT0X79FJD_xoLJ8KWdfoYJJhtST2wBhTPvq06UEw4ZdtddYg_v8tlQ5Lz0zt0KpwgRYhcK-JAYXZSc-Lug1fzF2TV8aJj_55ZYFpHFTbtxANm00yaOnzPvWbjJdFzf8EwSsWLbr-IaNgEd57BK94KOMlQao_65RNlPb8O_hJ_EshB1_RFhAXB5Nzr8YjhXsgH2lT99y1tfMmhLh7U4kc3GElHx9r2z4fZ-b8VmqoE9y4MJ1cSsLrL2qQKRcKUIWQoCo0HHz6lG8O1pBoWYmLJ4v0NH9YcffPbR1GXZYPzfFZOz9R7W1TAAwxmkjllos2dKHpX8WYDch1oqBP9FfGX2Ws2OizkPNmhmiX0QcJ31xpykNC5pgZju53cmrnYr8F5YztS2YdioRB-G3HLCbu2ypgNptCf5JzeP5bzWanUfOhRix5QOVLV4iXCV5ZEHDwLXUYjpomWIRtcNsrt7bV4NNo7UQU3ax2yjQbc_YBhy5lGJJav1n9vQXpWCv0voyVvO_K8jMAT2ldFbxcNjVMR5QpaKdm-ZMDHakUC5QadAtBpJgViicPBXt7OxE9J89C88t06fQYcthc_adJw-WV9XfT5jWVtovNfFIbxwwvs-OpqDeCgvqxLiK_sujZG176QQpueXBGdRJIQEU9nI8w_zOpSYlnrRNG-RXujwV1JorJsnpqP15XK6aEDdmHFkGH0F-0k9BLEN3u1ApH_uiKrJkgBtZx7OUlFJSOA63jV_BmNXFClY31tPVfI42PlIsFVIWURkDvgJLdglY1HP5Da-OF8Q5cfluwb05Uc5WUzoj0ILSEwNjNXm8GTL27CA8mlzWQ59frQ-E4Wj-I2KflCP5eStwwIG_z6twkh1ESQSxoXITtUXfrLWlWKnboEWKG5Rrbi9TG1NWMPh_2XdLwODKQJ-241hv0AV1Iamq77oCXflVyHb2dmAMbLkvU3kleExT_htRc1QherLQZ3RGYvJbAIBLKJnmL0M8ISFHVik7Zto-u-vt8L9XsdopuMvkHfG2IgI1fassqQrh7I2VJ4GE0U7ZuKtI3VPVj7G1-q95Sm_DJSHSo1UZK-fy4JoA1X1WuHFQgCiTbZwnDop3MM0ZKmUHyGgkKY0xqQNZShGmJXgD7yZcwnswX6tTOIXXMbJy_lFs5zkT8Clv8cuaMjytvhPwS0V16Xr_yOytcBwcPSNctdbqcTocOflAshC1HvTSF3mMTI8WlqvAYwj4LFFxiCshvLmgxz1Jk2mtJNnrSfdgsvkY_Yxww7dZ0YejTytX_72tlpQ-nhG_dJgOayzUMto_kmEABhPP3mreaqlHgLrNjO5h05KU6AclqwJs7G61By3leRzZqjabkuFk1jDAWcYCqZVtch-iI2qD1ItdJca283Y_nEHkDRzgeZzJsK3-3s-MyzxArA-dfuRkzWIGbej8QMQfDe1PKY7YjqPBklLkgzFRkgtN58QJxrYlMP-UtMrr2JSz80J0UznfHyVi80o26vXhoHfaBeXhZQ23NFZFwyRLdiMSaycfoauzkBlpU2dLgFDKAp_9EDnaJNQT0MAHhwRGsLgsoOh-2NnC-4dC0Vt2WgDOO9utE3nyBNag24PPCR-hHbfSEsISxNdw8_LNQ8pZTA8NFKWNE_d8EbZlla8ri__4QMVowqZgFw4nTKXOJghkGMJd3Du7amu_e0ER5HrZtrYCVKZzO3MlrRs52UNkdhxU853N9auRVor1CPFqiW9sk8uAFRGaPKloeVfR6npBBaoyKQ_QV3CSIJ8_hcjm7AwSnVNEFsh1hiHKziyMwRr3t7wBg_CMEAtjtm__ho7g2ByCRIurtbYiczFXXIaNVA8dMmDlcbMd9Y-ewJWQbKDaA1eTt02RPnDvwKjeSIjZ6q0SAbtjac_PHlldu8_j63M9frMQxSQ_R2eOshimuLhCpX__TiemPlQJKuWf7hvntk8ciu3fEfVPncJMDhdjBkEUG_WJfq8xFOEuJpjpOly0pLrdMrzMv6d-JUIZKZaOoyUC95rfMlQBF-ogjyo7Jtt_LapE0rIad1xB960wE0X4d4fihw6-N0AWfkJQuNkoICBME5tlRpII6HpVV17GfM80e0Q_o0x6kR90SdWbXhVmeOvOr6szY3QhW6UQTD-yQHklPYQePnjOOcw22zpDs1Bq92uMLs54IuYMwBNjcw2lc3oZmY_mKUN3j_M0hUx9U7i0pnoEg4i_z4xcCLx5-Wvg8zrXVk6SacXsYWgZfC7m0-CAVlaGuin2UCOjvu_JXAf3diBEHekLYlXx2U4P3ZSxrkzVMimWC14qqNlJYnlZndZ5sj1uj30FwvqFP9R417W_gjWnHti6xF63MbQQXkY6zixok3jShZBqtmT3Wn8cv4m0iw9ib61Gt-SIOvgjp-j1Bu92_AQ86vsBEroUBUM5Tc1OT3Ww8BQns15MtEaM3L5Z3OiaRGT4RNKfqmvPVwNop7bcf3OZSPHLd20snMFtgTE6ZxcouFJM1A1YDfk1P4PPyA1XYdizEMaUXl0DQ2EZhkZ_8_2FmZok0UCtu1abqKe3rkYjB06rhXXE8OTxXGh0utB31vrYBZbxVWiJ4pnSVZMBCTsdUhoZsQ2kwFIfg17bS7kDNgoHVOLzHgqRUbfuWREQByXNNG3IE3jpTi-0zZmzCGjG_Oxv-Q-h0aAJVVLinq-dWrGyqxaG8OaAB7VN8d72nerd1nwd1X16j5WJ_DW-Dk7qHXk6lHELefJ3umuW8mnJWX4u90ShaiRs9ANRYqTpIt_NkiC3E1z9gUgFc-iBRkSgJt2fLk--1v9paoPLuFWEW9IAGNZGC6q4InnRL8tuBUUynxaBmUp3sebF_kTwqEvked8l97zx7AR4cFps7yqrpfLyR739HhHQUjm9l40wms9IoGukYoxUKNkHVJX-svNBgXecVLQ-xUnJ_xMZiT95RcU2eNvskXcoIKsSfxwHHvPljyplTVXak46xRSnmhdsOjLaeou1lcUV0-UwbQSCH7TYgQrO2ZWXBZYljQrr86RDNUTuOKWxJx1LeNoIqkosk01Bu6fyvhATkX8pxRvtcYIX_6ETl15W-RfsrhAkRhb3z_jxyu1P58UQWW_CKOgQ9RZuHmL97ewLACaTpUCxpHbBjymXN35BuGXRR3CjVwItqFtSASH1Jxc0urrOBlDGq3QmEywFa7wb0prAu9scLBvXav0cqwia3S041Ax_ZV38bx9hwn9kojtjtUs70WOyBb3A-RMiAJZIWyjBHrOqjxzsHQku_oOtTdmfegJ-lpQbWbk8suUF1m03ll4FGXCkdSaZgtIVF7hgNuK8-8WvLvBwGBxCShhjxPLaJRz4xVhzQ-uV4Gau5qIfO5rfWm_JsjOFqCT7yve9Xzm5PXF_Q1Rrry_wpqG4WYutxdQMEN5m47NMGG6Co0kPhbd2LgS0CXzPSoduZcXt-mK-sEWiwXxTOyRpxtVXYUG_WsmJ2nkyg5v4Zg7L6EVKY3Yvo8AAVqKrsnSCFmMlsjrHGJPUZGEG6d0Roy0Y4u2Nd2xy4Nxw7BXSpJC1GMSKBdB35exQ16sEQFgeMvV5wbNzK0DXLW-fh5ECRH7bYGfesiMURdiAjaemBcsgU7hlSzXgcJ-UiU9JT8JZiZSNx4eX0yhzUqcmOv7xtiuJblR0MNtBSF06Yi-3IVBFHPg8hp7RPJ9L2asioxpUW92kmInh94WrsbTh2TbiEqFIaZYf1WEB-G2-m3o4yvh5dYSVJaUbpD-pNaRwZ37JBSdSNa4igKt7T6sUX4UjryMBERbre2AKvHESlkcgXV8qhMFlcx1i-ayUHrnOmBSEdHYBCqaZ1yvK3hGRKyf70nffag-myfQtqdIkoC8Odoe6eu7qcsYbW95ehbfxmDwmKrBFwui7BSToC_OnETjOFUiA5TtlQKGDxEDMJC4wiINGKi4o3RsqjXQS5h_x1vXuo8o_aYMZRQooxyO5EuVdnTicBiFZAyd0XA58dsjuV877kM2BBIN_uzFbpJ3JA8_AH4SZ7rLJUsfAeZA3h0xwltjwEzSvYA3jpmi-ikdtBQkhDuMo_xOZ1Y2jOBlw2G0l9M-aX6k82Wgzzmh2mIoPmZcuJOL6rbLw_WEBzyLbxHwUyxrNkfjg3HP_39iBOwhb7aK1z_G8_r4Zv0S-EStcZ6VXM0PCJXHZka0RM-JidC7iu7emqPTI7mcOvoahP7bYngL3IHhkah6dl18qMWfWwVEGLT_kL5KxOHA8ozdCy7cJWX9SZPjtUIfb4WGZ9KKIFpm4EjYaSSwB4YkpnGJw5gPJbnzNa036vNBH1uxEWEiCHAyjR_Rmgl3mlo2v9zbp6qeq-Z4tq1RlZwRhq9rYquuhvMQprWnSFJF8_45NR-A97PRIJ9fImuV88B6N5Sx2pYZZYsSkVM2VRJpp7MyrUWnMM79KYnhxR-MnZLTmZainfyAbIv6KSID8E8Z8c0UAyGYBwVh6pFhcPQhV8xJkJrRkn20ABg-srM79LcnO4h0V8D8Bn7bN36pdQJ94KcTUQBphZVui0Jk5lvOG5EoTR9fzd7xSy-db06bNOuunYSoRoAMepJYe5mgAu3Pmv-yg2cbbbOnkvlS9T90ezYgfSy2WeQ-e3ARyXI6X6-pZDtuvhAtTIpc0N4UWFAyPTcrQvW4ZBr6wRQUjij68kZg6R2IAhDy2vkArJ8ay-l8Q5cDIMCQSdqil0-Nkcrc384Dda7431DKLNQnxZhzQ6jr0rHrjqQlWMxWcFWIny5GK6O7AAqJL1z8RI7-VguJQOaxUCIiPMk1j_omUkvctBw5CnfZZbeG7TYgGGr_GNTnpJlxDPPkx5og4F7t0sVesKIeMlTgQuLRmUTYQudOat4r6OJo9otyqm0x_RjpbqQZ1apBUBYxO7bHuNJewp8gjO0N5dLwVmM823zMELOnSnxJVYhOO6JmvwWygwWk6atAsKC1ykgnMWEF85hRFYHFLjtoIXIJa95DvcD8c10G1ZHwUF0muSHwozNyHS_wQMAsjIwuS-lJ8AXpxCEq6IiYwXl9juk-cB-8AU8hErmRdyvx1b0QCCU2Yz8IpXbC1_BHCIi4toIGRj6qmBhQNTCjgkHbsWcm6XDTQ5MP7PI6FnIENTYP2sLyXI15bHaVXYqRbw0DCVwxYl_YxgSVFmcM4IPBs367-BY4tz4YzTN9zOb8Cmxa2Fi0CA_cPFybdsYuqkehwcIguxDVcqFd6dhZAHqs0dldYYzUbQulQBfkMye-DYXJgoVGd2DM5RXYjSxjA0i7tQ74Og9Wh4J5-9DpPhDjA4AifYgatHoyVPrm0YStmzssOh9lTP3BFhZykjtdB9MYYGTpnVCbBinY72HhOIyMD7vXvq1J_tIxXyvDapJ5Ibjv0FmrPXWnLjn00nuerY9EAvAzgobeISacBUw9-OOP1cd9jRnF0Lxoyp1xOYz8vRQM--9XuT2xKoTsecbE8kmkSTrBsMxDSOcH2ujg_WR5bN9cwakdJLhd65Xy5R2zqiZeAYcEOK4qvoHCZ7Co5wcegbt45u3nvNw_ynJn6qyAU1y1x6ag9XZV0aTfgMl7M1PFt7M55dTDxjkYqVLyTRW6NwcZyYQ7PL0uwvNtww1YMYUssSKKCjC_BdXzj37bvzaMpjSnQVQjjwb06ce-aAL7S1daKRKenKKd4S1NixAIaK_yTWffmIqB-84fSLkYmuMDt6FS3mRJizFuMFjNTy1kl3IF255jgrBJYOkasxamaaa927qidDgUALTfiBJNKJ6O75CxjeeXDPMoPIMv5vqZNa2DTRplT3xtADOPfzMTAV-QJuGuB-jv-M3gOHOhzs2WvJh39obbPXsxkuSmcAxxrYYyly4BRseJxDa5J6zmfR06gzqfmVnpsIyj-xKe25B6lP-Dx25qZ3DVk0h3HEPhpU7QkoB9T_rKVmVoCLiTmqIv-ZLNVax1868HXdCk48YutIFgnfCe0xhPSOb2Xow4I8ljSRRVwZV8G7S_b_EwG4mjNs-dh86UIgJLetro7Jgkl_EqXK-4kDKDY_1i5VDO5lQbYQivxaFIVzbsnxR2x0NwkPR8PWPIUxTD67J4VKwAH3lwaqU09ymSlcuac7HYwERMqrjrjN53yHjmZ0nCv0UoadNZJHp_n_3XWOeVR46Oa2Vt1dkq6_M-u3k5pzoEfs5Z9OmW4V-nU9Z5LXrG9b0mqtgVenDM_GmqMrw4b-e4jfpxOBQnHP9PTPHqbyoAcYobJX-ntfoYmR1Zge3d-iI7DpHhqo7oDkOrlJE9PbMBCXORdkNmu76gk_graOTrJpaQYA0D7xCUaLZU6BIyr43XaCZfifEs4ZpPqZaJwAi_PKK4Ix1-fssZjtR8qvsh8Ymw16HzH1og7nND83Ir5bdIPaw8ZItkcLAOt2Nk1imgJkwx1eQoKpJvIljLmBdRn9wthvj2BvJJt5NV-Zk6eHPLoYpL-qUgy__OUZUQS3iaejLVemcx7StHn6zA5p6X7UJ2B0o6PKJr-KOoWozLgoUurhoiCvOrreTzurFevHIFb1BHCi3kcJm4e6xJmJ3eQS-GSGB_up8uymNA5EbYW_dsWjjBHWDFUGQH2E4UkCV7MDBWoo7WrLiRG-VewCwQz1TvCC_9GKlicOSY9eEGCrsbheTF9fhsVTsUQngLozTY22jOmDC07V_p5zmztlvs3UuAVBFD8IGpj813Oz8DwplW-sNYYhkxbNVjJ0PBAYGDcpeSktqcgfLnGxCJ1gqB0sr-fNYqJoQw4wffquLA8kfkppbyS1dnXbd5jw2B2haY_kZCf8hssdn2BaksHN3cJzLPOzdFKiBKn2qFUyuHkRwMJPC60pIzI-hCVdC9BmGCH_Ur-nWHpxW-iyEIQgMHHc2ZCoebyejGbSF0nANCEgYb0nSNJu_GRSptW7y6mC9dc7H-ArZIvF85a0DMAfBOKdLcRMQE13VYu805CeKATV8W5qymGvPG8UiZJ0xONVkMvIk1NnnsBqms1NzN4rw55bn9Rz9kLVobw9wxtXvhe0OrXtLG9tQAFspY9P-F152QIjplyCNUsHTj1vH8TmGJ7hjvVnC0veCT_O4yIPFW2yEe3haHdvFku85Bzl7-v5VBWVFN03tqjATepVJThyHUkqRLj8PE_8KxAwVKpyCL1EwumgK3_UmRd84NUHZ4NJlaSzi8gDoej1-A3Br8aLr9Z8KskrekNlOlTlz2dG1XPTpIIiBdJaxmfPtTEa-9wokLXEl9szcWtwwUtZMKu4NA469bnOc4FJPlaxEIFbE78u8D1J5-breEwzSy-J4s9dw_ws48jQN2tQbUZjy77rr2r8R3ZcLcutkQJrooK1mS_WdjXi0O-1OOMDgEXhIBqhkhzrh083_mx5-SdARSZbaqMOiF6Mu_1T8mgiAvhaDiihgVj325qourEVJmPmNkWMlyJ6oRK8a2DqFyBfocOM9beYTw3dXc5ZbTAPOGd1pIo4_sNFhHq4hnIE9bVkrR0SP3VyJ9oj_muQmvqS-6uFv2xqS70yuYiJRnql8viTP8JsghvMRTA_bbQ3sfjI9pDJ-K3RXQmI6H9txCQJ1_GB_pSgMAklB7ouHYXOpZKX-WpyikK6PPBGvSzVV2qZSez-6n--gFdIAtkPxwDrXkET6amVJUmt-MXU2E3Kedzo1zF3zSe7hGWW8QoYMXrVVl4-pK9fPy0XdufSZdTQNOS6R2oruY9qDBdSwfUZme-3JFid0LFB_-MzuF5Bwcn2bsLVvapB_GTJhitQLDwIPofzdnNijwXu8yaKkM31CsGjUfxQ2-XMq24_bSwyXzVAgLjmpocVdRx_zOckLBqEO83S1-TzQeyjvtK98DlZp1_MtUu6EbubxqliC9f9p4OgL6h7eqPft3Z6oPYXBU58mR-CbRKtv41so5lsxmuL6b6toFq2N8I9c3qLMskjRoKALDgdxkLcu2ychzWIAk97LgmzANiwR_Di98i1wsrNNibGZwbaDM_QzoPNNkHtOrp-M7sLosvjVGgOI6IV8SEDDsb2A65TCZgOnMmvoPtkqQlQbIYjHtK9KTcKCmErq6SBhreYaU1fGfaxMWUywOMFGtQRV0zUQWKSuAKsluvmdK7Fi6jtWIpsw1dCQ_eUgMYKbsCfXNMc3DJsgRoLXGgmCr3_jjUUhOSUB6qz_6t1-nNGaaadZ7BYuq3oDsGYQN39ar4xAtAsR6VHPytBAkmoJDV9KG_Ru5o_YYgUZNgoi6IIYM_SGRaGaXmtyRMQoAI3uO8VFB5h0LJe1yiUzBI9ppumqTq1psyDXjimDvNDOZQJ-DzccN4dBEpeJaD0KR-V_hJ84UuTYe17FmhfPUzvXyloViPutLt-BlJe9BlnODenNhR14B8oFv4KzY5m1GioF5ZiNhXCHeLIoleW2YoX8QHZyTqMil7j_FsXGg0Xlh-Hy8KZIzhfLuWZS5CPmUwmZBPz0_YAx5zks6pjBpB_uco68Np5RVEk6ap-uxAjjIaTQCd6DC2lAMawBC1k8HWV9SnzEM6sZCBnUaMfFwGz_rK5X3_VnI49w1bAoJvABiKRS7kVin3msUqIWLbqadSzeK5MyMFgSWzXgr6ObumowhNLjRovZe0WCPjQRLYf_GJySsnucesbNgOV-0ROYT1h-CdIOYsnWNE99QHAhVbaBsqaXbUtM6ba8XTGOC9SJ0Lnk1PAgWLUGzl7xPHDhWjgnzK4uCZdP31I3JCAbD2d-Hy4K5LpElECMeg0NxfXT7IJFTiHpvg2nlUZC5Uv0XPNXdO0oNo5phWs0hAT2l_4TotmLtq3VRCmlr0DhVSfkoH5-yziMP8TGW6eorwpoWjOkUI3mDD0_GpWXqqdRM549VCX3xyDQSFzs5K8alX8tmqYIzDWGThXIawUmd7ymSuw33WNTgmjA4FW1_j_xikYNTgHeoZTHYTsaVmh3HTR2pJx-PzcFFA_A_O4Kq_xo2ELMdzg56bW5BsPzbKIlIhErFns7OLKRADRvTPppYPfrWM1VkihWWuoe48QkyQKQKmotQUnBpcvrOXDWiO1C17GI1TmTGZmtG0Ntd00JYUlnAAwcUX7WEp2pe0E109sCvDq-CYCAM4z14ixexAaHFIGm61xtLXMuHa49XN_d_Tc9mXYMePEvts0tr8C8AcKZBTSmzEDxpmPuZr3AsmXnKmk9j_31iqTXAbWqJR4VH6c0i-56jBYdzzXbIRFcaItP-bGkh7BDqm5ssguXvMGEA06FilAo61PRf_pLd_1yPSYgMoo5dYFqdC0gLVgSKpXXu8BZ_XM_X0GTBEQrQFZnFDEXO4pUVz-4DGwZGzT3q3h0wY6qWDFKFwkbYU0jQQcrvH8mrRX3bPnkCvmthCdLZfpsoQ31XdkPKLPlgp9VIeN62-kUb2r4mxtcwilsHmQ6e8lxAr-R-WPWL-9R0ZVfk1RXlNBQAwNCMIAwOjd2nH6hQaOKow-QKvw";if(!e)return null;if(Ut&&Ut.sealed===e)return Ut;let t=null;try{t=Rr.parse(JSON.parse(Sn(e,um)))}catch{t=null}return Ut={sealed:e,bundle:t},Ut}function vn(){let e=wi();if(!e?.bundle)return null;if(e.runtime===void 0){let t=Date.now();try{e.runtime=$r(e.bundle,{signedAt:t,fetchedAt:t})}catch{e.runtime=null}}return e.runtime}function fm(){let e=wi();return e?.bundle?(e.keys??=new Set(e.bundle.filters.map(t=>X(t.slug))),e.keys):null}function En(e,t=!1){if(t||!e||e.length===0){let n=fm();return n?new Set(n):null}return new Set(e.map(n=>cm.test(n)?n:X(n)))}var Si=null;function Cr(e){Si=e}async function dm(e,t){let n=await ro();if(n.size>0)return ft(e,n.values(),t,n);let r=vn();return r?r.selectFor(e,"free",t?[...t]:void 0):null}var pm=/^(?:grep|rg|find|eslint|ruff|flake8|mypy|prettier|biome|black|stylelint)(?:\s|$)|^git\s+(?:diff|grep)\b/,mm=2048,hm=8192,gm=32*1024;function ym(e,t,n){let r=gn(e,{...t,keep_failures:!0,fold_passing:!1,mask_abs_paths:!1,transform:void 0,truncate_lines_at:void 0,max_lines:void 0,on_empty:void 0},{verbosity:"normal",smartCode:!1});if(r.trim().length===0)return ce(e);if(n!=="compact"&&n!=="minimal")return r;let s=r.endsWith(`
|
|
78
78
|
`)?`
|
|
79
|
-
`:"";return
|
|
79
|
+
`:"";return hn((s?r.slice(0,-1):r).split(`
|
|
80
80
|
`)).join(`
|
|
81
|
-
`)+s}async function Or(e,t,n,r={}){let s=Buffer.byteLength(t,"utf8"),{exitCode:o,yolo:i=!1,resolver:a,...l}=r,
|
|
81
|
+
`)+s}async function Or(e,t,n,r={}){let s=Buffer.byteLength(t,"utf8"),{exitCode:o,yolo:i=!1,resolver:a,...l}=r,u=Ye(Qo(e.startsWith("bash-tool: ")?e.slice(11):e)),c=o!=null&&o!==0&&!(o===1&&pm.test(wr(u)??u)),f=qo(a??Si??dm),d=null;for(let P of ei(e))if(d=await f(P,n),d)break;!d&&s>=mm&&!_r.test(e)&&(d=await f(`bash-tool: ${e}`,n));let p=xr(e.startsWith("bash-tool: ")?e.slice(11):e),g=d?.slug==="git-log"&&p!=null&&/^git\s+log(?:\s|$)/.test(Ye(p)),y=o==null&&(g?/^(?:fatal|error):/im.test(ce(t)):Yo(t)),m=d?.transform==="smart-read"&&s<=2048&&(t.endsWith(`
|
|
82
82
|
`)?t.slice(0,-1):t).split(`
|
|
83
|
-
`).length<=60,b=s<=16384&&p!=null&&/^(?:head|tail)(?:\s|$)|^sed\s+(?:(?:-[Eru]+|--(?:regexp-extended|unbuffered|sandbox))\s+)*(?:-[Enruse]*n[Enruse]*(?:\s|$)|--(?:quiet|silent)(?:\s|$))/.test(Ye(p)),w=d?.transform==="smart-read"&&s<=16384&&(l.verbosity??"normal")==="normal"&&l.smartCode!==!0,A=d?.slug==="read-tool"&&s<
|
|
83
|
+
`).length<=60,b=s<=16384&&p!=null&&/^(?:head|tail)(?:\s|$)|^sed\s+(?:(?:-[Eru]+|--(?:regexp-extended|unbuffered|sandbox))\s+)*(?:-[Enruse]*n[Enruse]*(?:\s|$)|--(?:quiet|silent)(?:\s|$))/.test(Ye(p)),w=d?.transform==="smart-read"&&s<=16384&&(l.verbosity??"normal")==="normal"&&l.smartCode!==!0,A=d?.slug==="read-tool"&&s<gm;if(!i&&(w||A||b||m&&l.smartCode!==!0))return{output:t,filterId:d?.slug??null,rawBytes:s,filteredBytes:s,debugBypass:c||y,droppedTail:null};if(!i&&d&&!d.preserve_exact&&(c||y)&&pi.test(u)){let P=gi(t,l.verbosity??"normal"),ie=P===null?s:Buffer.byteLength(P,"utf8");if(P!==null&&ie<s)return{output:P,filterId:d.slug,rawBytes:s,filteredBytes:ie,debugBypass:!0,droppedTail:t,failureSummary:!0}}if(!d||(c||y)&&d.preserve_exact&&!i)return{output:t,filterId:null,rawBytes:s,filteredBytes:s,debugBypass:c||y,...i?{droppedTail:null}:{}};let I=P=>{if(!i)return P.output!==t&&!P.droppedTail?{...P,droppedTail:t}:P;let ie=P.filteredBytes>s||s>0&&P.output.length===0?t:P.output,$t=!P.debugBypass&&!d?.preserve_exact?Er(ie,"minimal",P.filterId??""):ie,Is=Sr($t)===$t?$t:Sr(ie);return{...P,output:Is,filteredBytes:Buffer.byteLength(Is,"utf8"),droppedTail:null}};if(d.slug==="tsc"&&!c&&!y&&!li(e)){let P=ui(t);if(P!==null)return I({output:P,filterId:d.slug,rawBytes:s,filteredBytes:Buffer.byteLength(P,"utf8"),debugBypass:!1,droppedTail:null})}if(c||y){let P=i?gn(t,{...d,keep_failures:!0,transform:void 0,max_lines:void 0,truncate_lines_at:void 0,on_empty:void 0},{verbosity:"minimal",smartCode:!1}):d.strip_on_failure&&!d.preserve_exact?ym(t,d,l.verbosity):d.strip_ansi&&!d.preserve_exact?ce(t):t;!i&&d.transform&&d.transform_on_failure&&!d.preserve_exact&&(P=kr(d.transform,P.split(`
|
|
84
84
|
`),e).join(`
|
|
85
|
-
`)),!i&&l.verbosity==="minimal"&&d.transform!=="smart-read"&&(P=ai(P)),!i&&d.slug==="pytest"&&(l.verbosity==="compact"||l.verbosity==="minimal")&&/^={3,} test session starts ={3,}\r?$/m.test(P)&&/^={3,} FAILURES ={3,}\r?$/m.test(P)&&(P=P.replace(/^([=_])\1{2,} (.+?) \1{3,}(\r?)$/gm,"$2$3"));let ie=!i&&!d.preserve_exact&&s>=
|
|
85
|
+
`)),!i&&l.verbosity==="minimal"&&d.transform!=="smart-read"&&(P=ai(P)),!i&&d.slug==="pytest"&&(l.verbosity==="compact"||l.verbosity==="minimal")&&/^={3,} test session starts ={3,}\r?$/m.test(P)&&/^={3,} FAILURES ={3,}\r?$/m.test(P)&&(P=P.replace(/^([=_])\1{2,} (.+?) \1{3,}(\r?)$/gm,"$2$3"));let ie=!i&&!d.preserve_exact&&s>=hm?_o(P.split(`
|
|
86
86
|
`)).join(`
|
|
87
87
|
`):P,$t=ie.length<P.length;return I({output:ie,filterId:d.slug,rawBytes:s,filteredBytes:Buffer.byteLength(ie,"utf8"),debugBypass:!0,...$t?{droppedTail:t}:{}})}let L={...l,cmd:e,exitCode:o},{text:z,droppedTail:F}=br(t,d,i?{...L,verbosity:"minimal",...d.transform==="smart-read"?{smartCode:!0}:{}}:L),me=!i&&!d.preserve_exact?Er(z,l.verbosity,d.slug):z,Vn=d.on_empty&&me===d.on_empty&&!me.endsWith(`
|
|
88
88
|
`)?`${me}
|
|
89
|
-
`:me,Os=Buffer.byteLength(Vn,"utf8"),
|
|
90
|
-
`,{mode:384}),Em(n,384)}catch{return}}var Nm=/^[a-z0-9][a-z0-9._-]*$/i,Pm=/^[a-z][a-z-]+$/,Dm=/^[A-Za-z_][A-Za-z0-9_]*=/,Lm=new Set(["gh","glab","gup","hub","gist"]),Mm=/^(gh[a-z]_|github_pat_|gl(?:pat|rt|soat|imt|dt|ft|agent|oas)-|npm_|xox|sk-|sk_|eyj|a(?:kia|sia|gpa|ida|roa|npa)|aiza|hv[sb]\.)/i,Fm=24,Ii=new Set(["docker","podman","npm","pnpm","yarn","npx","bun","deno","cargo","rustup","go","pip","pip3","uv","poetry","brew","apt","apt-get","dnf","yum","pacman","kubectl","helm","terraform","aws","gcloud","az","systemctl","composer","bundle","gem","dotnet","prisma","tkr","rtk","token"]),Ni=new Set([...Ii,"git","gh","node","python","python3","bash","sh","zsh","psql","mysql","sqlite3","java","ruby","perl","rg","fd","jq","make","gradle","mvn","vitest","jest","tsc","esbuild","vite","webpack","playwright","rails","rake"]),jm=new Set([...Ni,"cd","cat","head","tail","ls","tree","find","grep","wc","nl","sort","cut","uniq","tr","diff","stat","file","du","df","ps","yq","pwd","which","echo","printf","seq","sed","awk","gawk","xargs","sleep","tar","zip","unzip","rsync","scp","ssh","curl","wget","dig","host","nslookup","ping","lsof","journalctl","iptables","ip6tables","open","md5","md5sum","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shasum","sudo","env","command","time","nodejs","bunx","pytest","mypy","dmypy","pyright","basedpyright","ruff","black","ty","gradlew","mvnw","mvnd","ninja","cmake","bazel","bazelisk","sbt","gcc","clang","gmake","swift","xcodebuild","pod","flutter","nx","turbo","next","eslint","prettier","biome","oxlint","golangci-lint","shellcheck","hadolint","yamllint","markdownlint","mdl","sqlfluff","rubocop","rspec","bundler","php","artisan","composer","phpunit","phpstan","pest","paratest","pint","mix","javap","jar","docker-compose","skopeo","oc","ecs","nomad","consul","packer","pulumi","tofu","ansible","ansible-playbook","vault","sops","vercel","netlify","wrangler","firebase","supabase","stripe","shopify","theme-check","redis-cli","liquibase","ollama","ast-grep","just","task","mise","trunk","pre-commit","jj","yadm","gt","quarto","act","jira","fail2ban-client","ctest","pio","platformio","reducer","restore","read-tool","grep-tool","glob-tool","bash-tool"]),Hm=new Map([["git",new Set(["status","diff","log","show","blame","ls-files","rev-parse","branch","fetch","pull","push","commit","checkout","switch","merge","rebase","stash","tag","remote","add","reset","restore","clean","grep"])],["gh",new Set(["pr","issue","run","repo","api"])]]),zm=new Set(["-C","-c"]);function Um(e){if(!/[\\/]/.test(e))return e;let t=e.split(/[\\/]/).filter(r=>r.length>0).pop()??"",n=t.toLowerCase().endsWith(".exe")?t.slice(0,-4):t;return Ni.has(n.toLowerCase())?n:""}function Bm(e,t,n){let r=0;for(;e==="git"&&r<n.length&&n[r].startsWith("-");)r+=zm.has(n[r])?2:1;let s=(n[r]??"").toLowerCase();return t.has(s)?`${e} ${s}`:e}function Oi(e){let t=e.toLowerCase();return t.startsWith("git")||Lm.has(t)}function Dr(e){let t=e.trim().split(/\s+/).filter(l=>l.length>0),n=0;for(;n<t.length&&Dm.test(t[n]??"");)n+=1;let r=Um(t[n]??"");if(!r||!Nm.test(r)||r.length>Fm)return"";let s=Hm.get(r.toLowerCase());if(s)return Bm(r.toLowerCase(),s,t.slice(n+1));if(Oi(r)||Mm.test(r)||Bt(r)!==r)return"";let o=t[n+1];return o&&Oi(o)?"":(o&&Ii.has(r.toLowerCase())&&Pm.test(o)?`${r} ${o}`:r).slice(0,64)}function Zm(e){return jm.has((e.split(" ")[0]??"").toLowerCase())}async function Pi(e){if(!e.telemetryOptIn)return;let t=Dr(e.cmd),n=t&&Bt(t)===t&&Zm(t)?t:"other",r=e.sessionId?e.sessionId.replace(/[^A-Za-z0-9._-]/g,"").slice(0,64):"";Tn("telemetry",{cmd:n,tokensSaved:Math.max(0,Math.round(e.tokensSaved)),...e.tokensRestored?{tokensRestored:Math.max(0,Math.round(e.tokensRestored))}:{},...e.rawTokens!=null?{rawTokens:Math.max(0,Math.round(e.rawTokens))}:{},optimized:e.optimized,...r?{sessionId:r}:{},...e.host?{host:e.host}:{}})}async function Di(e){if(Ko(e.filterId)||!(await
|
|
91
|
-
`).filter(
|
|
89
|
+
`:me,Os=Buffer.byteLength(Vn,"utf8"),au=Vn.trim().length===0&&t.trim().length>0&&(o!=null&&o!==0||yr(e));return t.trim().length>0&&(Os>=s||au)?I({output:t,filterId:d.slug,rawBytes:s,filteredBytes:s,debugBypass:!1,droppedTail:null}):I({output:Vn,filterId:d.slug,rawBytes:s,filteredBytes:Os,debugBypass:!1,droppedTail:F})}function mt(e=3e3){return new Promise(t=>{let n=[],r=process.stdin,s=!1,o=()=>{s||(s=!0,clearTimeout(a),r.off("data",i),r.pause(),r.unref?.(),t(Buffer.concat(n).toString("utf8")))},i=l=>{n.push(Buffer.isBuffer(l)?l:Buffer.from(l))},a=setTimeout(o,e);r.on("data",i).once("end",o).once("error",o),r.resume()})}function km(){let e=Number(process.env.TOKMIZER_OFFLINE_GRACE_MS);return Number.isFinite(e)&&e>0?e:6048e5}function vi(e,t=Date.now()){let n=e.lastHeartbeatOkAt;return typeof n=="number"&&t-n>km()}import{readFile as bm,writeFile as JS,mkdir as GS,chmod as WS,rm as VS,rename as KS,readdir as qS}from"node:fs/promises";import{join as _m}from"node:path";var xm="settings-cache.json",Ei=Mt.parse({}),ev=Mt.partial().extend({filters:Mt.shape.filters.removeDefault().partial().optional()});async function ht(){let e=null;try{let t=JSON.parse(await bm(_m(R(),xm),"utf8"));typeof t=="object"&&t!==null&&!Array.isArray(t)&&(e=t)}catch{}return e?Mt.parse({...Ei,...e}):Ei}var wm=[[/(\baws_(?:secret_access_key|session_token|access_key_id)\s+)\S+/gi,"$1[REDACTED]"],[/(\bsshpass\b[^;&|\n]{0,200}?\s-p\s*)\S+/g,"$1[REDACTED]"],[/(\bredis-cli\b[^;&|\n]{0,200}?\s(?:-a|--pass)\s+)\S+/g,"$1[REDACTED]"],[/(\bopenssl\b[^;&|\n]{0,200}?\s-k\s+)\S+/g,"$1[REDACTED]"],[/(\s-pass(?:in|out)?\s+(?:pass|env|file):)\S+/g,"$1[REDACTED]"],[/(https?:\/\/hooks\.slack\.com\/(?:services|workflows|triggers)\/)\S+/gi,"$1[REDACTED]"],[/(authorization\s*:\s*)([A-Za-z][A-Za-z0-9._-]*)\s+[^\s'"]+/gi,"$1$2 [REDACTED]"],[/(authorization\s*:\s*)[A-Za-z0-9._\-+/=]{8,}/gi,"$1[REDACTED]"],[/(bearer\s+)[A-Za-z0-9._\-+/=]{8,}/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-b|--cookie)[=\s]+['"]?)[^\s'";=]+=[^\s'";]+(?:\s*;\s*[^\s'";=]+=[^\s'";]+)*/gi,"$1[REDACTED]"],[/((?:^|[\s'"])(?:Set-)?Cookie\s*:\s*)[^\s'";=]+=[^\s'";]+(?:\s*;\s*[^\s'";=]+=[^\s'";]+)*/gi,"$1[REDACTED]"],[/(--?(?:password|passwd|passphrase|apipass|pass|pwd|token|api[-_]?key|secret|bearer|cookie|jwt)(?:-[a-z0-9]+)*[=\s]+)\S+/gi,"$1[REDACTED]"],[/((?:^|\s)-b[=\s]?['"]?)[^\s'"=]+=[^\s'"]+/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?[^\s:/'"]*:)(\/[^/\s'"][^\s'"]*|[^\s/'"0-9][^\s'"]*|[0-9][^\s'"]*[^\s'"0-9][^\s'"]*)/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?[^\s:/'"]*[^\s:/'"0-9][^\s:/'"]*:)(?:\/[^/\s'"]|[^\s/'"])[^\s'"]*/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?:)(?:\/[^/\s'"]|[^\s/'"])[^\s'"]*/gi,"$1[REDACTED]"],[/((?:[A-Za-z0-9]+-){0,8}(?:X-Api-Key|Private-Token|[A-Za-z0-9]+-(?:Token|Key|Auth|Secret))\s*:\s*)[^\s'"]+/gi,"$1[REDACTED]"],[/((?:^|[\s'"])(?:Set-)?Cookie\s*:\s*)[^\s'"]+/gi,"$1[REDACTED]"],[/(-i\s+)(\/[^\s]+|~\/[^\s]+|[A-Z]:\\[^\s]+)/g,"$1[REDACTED]"],[/([a-zA-Z][a-zA-Z0-9+.-]{0,31}:\/\/[^:/\s@]*:)[^\s@]+(@[^@/\s]+)/g,"$1[REDACTED]$2"],[/(AWS_(?:ACCESS_KEY_ID|SECRET_ACCESS_KEY|SESSION_TOKEN)\s*=\s*)\S+/g,"$1[REDACTED]"],[/(GOOGLE_APPLICATION_CREDENTIALS\s*=\s*)\S+/g,"$1[REDACTED]"],[/(AZURE_(?:CLIENT_SECRET|TENANT_ID|CLIENT_ID)\s*=\s*)\S+/g,"$1[REDACTED]"],[/(sk-(?:proj-)?[A-Za-z0-9_-]{20,})/g,"sk-[REDACTED]"],[/\b(OPENAI_API_KEY\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(ANTHROPIC_API_KEY\s*=\s*)\S+/g,"$1[REDACTED]"],[/(sk-ant-[A-Za-z0-9_-]{20,})/g,"sk-ant-[REDACTED]"],[/\b(GH(?:_|ITHUB_)?TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(GITLAB_TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(SLACK_(?:BOT_)?TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/(xox[bpsoa]-[A-Za-z0-9-]{10,})/g,"xox[REDACTED]"],[/(xapp-[A-Za-z0-9-]{10,})/g,"[REDACTED]"],[/(sk_(?:test|live)_[A-Za-z0-9]{16,})/g,"sk_[REDACTED]"],[/(gh[a-z])_[A-Za-z0-9]{20,}/g,"$1_[REDACTED]"],[/(github_pat)_[A-Za-z0-9_]{20,}/g,"$1_[REDACTED]"],[/(gl(?:pat|rt|soat|imt|dt|ft|agent|oas|cbt|ptt))-[A-Za-z0-9_-]{16,}/g,"$1-[REDACTED]"],[/(npm_[A-Za-z0-9_-]{20,})/g,"npm_[REDACTED]"],[/(?:AKIA|ASIA|AGPA|AIDA|AROA|ANPA)[0-9A-Z]{16,}/g,"[REDACTED_AWS_KEY]"],[/AIza[A-Za-z0-9_-]{35}/g,"[REDACTED_GOOGLE_KEY]"],[/hv[sb]\.[A-Za-z0-9_-]{20,}/g,"[REDACTED_VAULT_TOKEN]"],[/dop_v1_[A-Za-z0-9]{40,}/g,"[REDACTED]"],[/dckr_pat_[A-Za-z0-9_-]{20,}/g,"[REDACTED]"],[/pypi-[A-Za-z0-9_-]{16,}/g,"[REDACTED]"],[/rk_(?:live|test)_[A-Za-z0-9]{16,}/g,"[REDACTED]"],[/whsec_[A-Za-z0-9]{16,}/g,"[REDACTED]"],[/SG\.[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{20,}/g,"[REDACTED]"],[/(eyJ[A-Za-z0-9_-]{6,}(?:\.[A-Za-z0-9_-]{4,}){1,2})/g,"[REDACTED_JWT]"],[/-----BEGIN [A-Z ]*PRIVATE KEY-----(?:[\s\S]*?-----END[^\n]*-----|\r?\n[A-Za-z0-9+/=][A-Za-z0-9+/=\r\n]*)?/g,"[REDACTED_PEM]"],[/\b((?:--?)?[A-Za-z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|PASS|APIKEY|KEY|CRED|CREDS|CREDENTIAL|CREDENTIALS|AUTH|_PWD)[A-Za-z0-9_]*['"]?\s*=\s*)(?:"[^"]*"|'[^']*'|[^"'\s]\S*)/gi,"$1[REDACTED]"],[/\b([A-Za-z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|PASS|APIKEY|KEY|CRED|CREDS|CREDENTIAL|CREDENTIALS|_PWD)[A-Za-z0-9_]*['"]?\s*:\s*)(?:"[^"]*"|'[^']*'|[^\s'",}]+)/gi,"$1[REDACTED]"],[/((?:^|[\s'"{,])['"]?(?:[A-Za-z0-9_]+_)?auth['"]?\s*:\s*)(?:"[^"]*"|'[^']*'|[^\s'",}]+)/gi,"$1[REDACTED]"],[/(\bpwd\s*[=:]\s*)(?:"[^"]*"|'[^']*'|[^/~\s][^\s;'"]*)/gi,"$1[REDACTED]"],[/([=:]\s*["']?)[A-Za-z0-9_\-+/=]{40,}/g,"$1[REDACTED]"]];function Bt(e){let t=e;for(let[n,r]of wm)t=t.replace(n,r);return t}var fe="[tkr: secret masked]",nv=[[/(-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----)(?:\r?\n(?:[A-Za-z0-9+/=]{16,}|[A-Za-z-]+: [^\r\n]*|\r?(?=\n)))*(?:(?:\r?\n[A-Za-z0-9+/=]{1,15})?\r?\n-----END [A-Z0-9 ]*PRIVATE KEY-----)?/g,`$1${fe}`],[/(?<![A-Za-z0-9_])(gh[pousr])_[A-Za-z0-9]{36,255}(?![A-Za-z0-9])/g,`$1_${fe}`],[/(?<![A-Za-z0-9_])github_pat_[A-Za-z0-9_]{22,255}/g,`github_pat_${fe}`],[/(?<![A-Za-z0-9_])npm_[A-Za-z0-9]{36}(?![A-Za-z0-9])/g,`npm_${fe}`],[/(?<![A-Z0-9])(AKIA|ASIA)[A-Z0-9]{16}(?![A-Z0-9])/g,`$1${fe}`],[/(?<![A-Za-z0-9])(xox[abpors]-)[A-Za-z0-9-]{10,}/g,`$1${fe}`],[/(?<![A-Za-z0-9])((?:sk|rk)_live_)[A-Za-z0-9]{16,}/g,`$1${fe}`],[/(?<![A-Za-z0-9_-])(sk-(?:ant-|proj-))[A-Za-z0-9_-]{20,}/g,`$1${fe}`],[/(authorization["']?\s*[:=]\s*["']?bearer\s+)[A-Za-z0-9._~+/=-]{8,}/gi,`$1${fe}`],[/(?<![A-Za-z0-9+.-])([a-zA-Z][a-zA-Z0-9+.-]{0,31}:\/\/[^\s:/@]*:)[^\s@/]+(@[^\s@/]+)/g,`$1${fe}$2`]];import{join as Nr}from"node:path";import{appendFileSync as Ri,chmodSync as Em,existsSync as $i,mkdirSync as Tm,readFileSync as xv,renameSync as wv,rmdirSync as Sv,statSync as Ci,unlinkSync as vv,utimesSync as Ev,writeFileSync as Tv}from"node:fs";import{createHash as iv,randomUUID as Sm}from"node:crypto";import{readFile as Ti,writeFile as Ai,mkdir as vm}from"node:fs/promises";async function Ir(){try{let n=(await Ti(jt(),"utf8")).trim();if(/^[0-9a-f-]{36}$/i.test(n))return n}catch{}await vm(R(),{recursive:!0,mode:448});let e=Sm();try{return await Ai(jt(),e,{mode:384,flag:"wx"}),e}catch{try{let t=(await Ti(jt(),"utf8")).trim();if(/^[0-9a-f-]{36}$/i.test(t))return t}catch{}return await Ai(jt(),e,{mode:384}),e}}var Am=512*1024;function Pr(){return Nr(R(),"spool")}function Rm(e){return Nr(Pr(),`${e}.jsonl`)}var $m=1024*1024;function Cm(e){return Nr(Pr(),`${e}.dropped`)}function Om(e){try{let t=Cm(e);if($i(t)&&Ci(t).size>=$m)return;Ri(t,".",{mode:384})}catch{return}}function Tn(e,t){if(Ar())try{Tm(Pr(),{recursive:!0,mode:448});let n=Rm(e);if($i(n)&&Ci(n).size>=Am){Om(e);return}Ri(n,JSON.stringify(t)+`
|
|
90
|
+
`,{mode:384}),Em(n,384)}catch{return}}var Nm=/^[a-z0-9][a-z0-9._-]*$/i,Pm=/^[a-z][a-z-]+$/,Dm=/^[A-Za-z_][A-Za-z0-9_]*=/,Lm=new Set(["gh","glab","gup","hub","gist"]),Mm=/^(gh[a-z]_|github_pat_|gl(?:pat|rt|soat|imt|dt|ft|agent|oas)-|npm_|xox|sk-|sk_|eyj|a(?:kia|sia|gpa|ida|roa|npa)|aiza|hv[sb]\.)/i,Fm=24,Ii=new Set(["docker","podman","npm","pnpm","yarn","npx","bun","deno","cargo","rustup","go","pip","pip3","uv","poetry","brew","apt","apt-get","dnf","yum","pacman","kubectl","helm","terraform","aws","gcloud","az","systemctl","composer","bundle","gem","dotnet","prisma","tkr","rtk","token"]),Ni=new Set([...Ii,"git","gh","node","python","python3","bash","sh","zsh","psql","mysql","sqlite3","java","ruby","perl","rg","fd","jq","make","gradle","mvn","vitest","jest","tsc","esbuild","vite","webpack","playwright","rails","rake"]),jm=new Set([...Ni,"cd","cat","head","tail","ls","tree","find","grep","wc","nl","sort","cut","uniq","tr","diff","stat","file","du","df","ps","yq","pwd","which","echo","printf","seq","sed","awk","gawk","xargs","sleep","tar","zip","unzip","rsync","scp","ssh","curl","wget","dig","host","nslookup","ping","lsof","journalctl","iptables","ip6tables","open","md5","md5sum","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shasum","sudo","env","command","time","nodejs","bunx","pytest","mypy","dmypy","pyright","basedpyright","ruff","black","ty","gradlew","mvnw","mvnd","ninja","cmake","bazel","bazelisk","sbt","gcc","clang","gmake","swift","xcodebuild","pod","flutter","nx","turbo","next","eslint","prettier","biome","oxlint","golangci-lint","shellcheck","hadolint","yamllint","markdownlint","mdl","sqlfluff","rubocop","rspec","bundler","php","artisan","composer","phpunit","phpstan","pest","paratest","pint","mix","javap","jar","docker-compose","skopeo","oc","ecs","nomad","consul","packer","pulumi","tofu","ansible","ansible-playbook","vault","sops","vercel","netlify","wrangler","firebase","supabase","stripe","shopify","theme-check","redis-cli","liquibase","ollama","ast-grep","just","task","mise","trunk","pre-commit","jj","yadm","gt","quarto","act","jira","fail2ban-client","ctest","pio","platformio","reducer","restore","read-tool","grep-tool","glob-tool","bash-tool"]),Hm=new Map([["git",new Set(["status","diff","log","show","blame","ls-files","rev-parse","branch","fetch","pull","push","commit","checkout","switch","merge","rebase","stash","tag","remote","add","reset","restore","clean","grep"])],["gh",new Set(["pr","issue","run","repo","api"])]]),zm=new Set(["-C","-c"]);function Um(e){if(!/[\\/]/.test(e))return e;let t=e.split(/[\\/]/).filter(r=>r.length>0).pop()??"",n=t.toLowerCase().endsWith(".exe")?t.slice(0,-4):t;return Ni.has(n.toLowerCase())?n:""}function Bm(e,t,n){let r=0;for(;e==="git"&&r<n.length&&n[r].startsWith("-");)r+=zm.has(n[r])?2:1;let s=(n[r]??"").toLowerCase();return t.has(s)?`${e} ${s}`:e}function Oi(e){let t=e.toLowerCase();return t.startsWith("git")||Lm.has(t)}function Dr(e){let t=e.trim().split(/\s+/).filter(l=>l.length>0),n=0;for(;n<t.length&&Dm.test(t[n]??"");)n+=1;let r=Um(t[n]??"");if(!r||!Nm.test(r)||r.length>Fm)return"";let s=Hm.get(r.toLowerCase());if(s)return Bm(r.toLowerCase(),s,t.slice(n+1));if(Oi(r)||Mm.test(r)||Bt(r)!==r)return"";let o=t[n+1];return o&&Oi(o)?"":(o&&Ii.has(r.toLowerCase())&&Pm.test(o)?`${r} ${o}`:r).slice(0,64)}function Zm(e){return jm.has((e.split(" ")[0]??"").toLowerCase())}async function Pi(e){if(!e.telemetryOptIn)return;let t=Dr(e.cmd),n=t&&Bt(t)===t&&Zm(t)?t:"other",r=e.sessionId?e.sessionId.replace(/[^A-Za-z0-9._-]/g,"").slice(0,64):"";Tn("telemetry",{cmd:n,tokensSaved:Math.max(0,Math.round(e.tokensSaved)),...e.tokensRestored?{tokensRestored:Math.max(0,Math.round(e.tokensRestored))}:{},...e.rawTokens!=null?{rawTokens:Math.max(0,Math.round(e.rawTokens))}:{},optimized:e.optimized,...r?{sessionId:r}:{},...e.host?{host:e.host}:{}})}async function Di(e){if(Ko(e.filterId)||!(await ht()).telemetryOptIn)return;let t=Dr(e.cmd);!t||Bt(t)!==t||Tn("learn",{cmd:t,filterId:e.filterId==null?null:X(e.filterId),rawBytes:e.rawBytes,filteredBytes:e.filteredBytes})}import{appendFileSync as Gm,chmodSync as Wm,mkdirSync as Vm,readFileSync as zi,realpathSync as Km,renameSync as Ui,rmSync as Bi,statSync as Zi,writeFileSync as Lr}from"node:fs";import{basename as Mi,dirname as Ji,join as An,resolve as qm,sep as Kv}from"node:path";var Jm={"claude-code":"anthropic",codex:"openai",copilot:"openai","gemini-cli":"google",cursor:"anthropic",windsurf:"anthropic",cline:"anthropic",aider:"anthropic",shell:"anthropic"};function Li(e){return e?Jm[e]??"anthropic":"anthropic"}var Ym="stats.jsonl",Xm="stats-ledger.json",Fi=2*1024*1024,Qm=3e4,eh=3e4,th=new Set(["n","g","e"]),nh=256;function Gi(){return{n:0,nc:0,r:0,f:0,or:0,of:0,x:0,sn:0,sr:0,sf:0,mr:0,mf:0,rn:0,rb:0,tn:0,tr:0,tf:0,ox:0,t0:null,t1:null,cmds:{},prov:{},rl:{},fb:{}}}function rh(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return typeof n.t!="number"||!Number.isFinite(n.t)||n.t<0||n.t>864e10||typeof n.r!="number"||!Number.isSafeInteger(n.r)||n.r<0||typeof n.f!="number"||!Number.isSafeInteger(n.f)||n.f<0||n.r+n.f===0?null:{t:n.t,r:n.r,f:n.f,m:n.m===1,...typeof n.h=="string"?{h:n.h}:{},...typeof n.k=="string"?{k:n.k}:{},...typeof n.c=="string"&&n.c?{c:n.c}:{},...typeof n.p=="string"&&n.p?{p:n.p}:{},...typeof n.s=="string"&&n.s?{s:n.s}:{},...typeof n.o=="string"&&th.has(n.o)?{o:n.o}:{}}}catch{return null}}function sh(e,t){if(!t.c)return;let n=e.cmds[t.c]??{n:0,nc:0,r:0,f:0,sh:!1};n.n+=1,t.f<t.r&&(n.nc+=1,n.rr=(n.rr??0)+t.r,n.rf=(n.rf??0)+t.f),(t.k==="sh"||t.k==="restore")&&(n.sh=!0),t.h==="shell"&&t.k!=="restore"&&(n.tn=(n.tn??0)+1,n.tr=(n.tr??0)+t.r,n.tf=(n.tf??0)+t.f,t.f<t.r&&(n.tnc=(n.tnc??0)+1,n.trr=(n.trr??0)+t.r,n.trf=(n.trf??0)+t.f)),n.r+=t.r,n.f+=t.f,e.cmds[t.c]=n}function oh(e){return e.s==="b"?`b:${(e.c??"").split(" ")[0]||"other"}`:e.s?.startsWith("u:")?e.s:e.o==="n"?"n":"?"}function ih(e,t){let n=oh(t),r=e.rl[n]??{n:0,nc:0,r:0,f:0};if(r.n+=1,r.r+=t.r,r.f+=t.f,t.f<t.r&&(r.nc+=1),e.rl[n]=r,t.f>=t.r&&t.o){let s=`${t.o} ${t.c??""}`,o=e.fb[s]??{n:0,r:0};o.n+=1,o.r+=t.r,e.fb[s]=o}}function ah(e,t){if(t.m){e.mr+=t.r,e.mf+=t.f;return}if(e.t0=e.t0==null?t.t:Math.min(e.t0,t.t),e.t1=e.t1==null?t.t:Math.max(e.t1,t.t),t.k==="sh"&&t.r>eh){e.ox+=1;return}if(sh(e,t),t.k==="restore"?(e.rn+=1,e.rb+=t.f):ih(e,t),e.n+=1,e.or+=t.r,e.of+=t.f,t.f>t.r&&(e.x+=1),t.h==="shell"&&t.k!=="restore"&&(e.tn+=1,e.tr+=t.r,e.tf+=t.f),t.f<t.r){e.nc+=1,e.r+=t.r,e.f+=t.f,t.k==="sh"&&(e.sn+=1,e.sr+=t.r,e.sf+=t.f);let n=Li(t.h),r=e.prov[n]??{r:0,f:0};r.r+=t.r,r.f+=t.f,e.prov[n]=r}}function lh(e){let t=new Date(e*1e3);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}function Wi(e){return An(Ji(e),Xm)}function uh(e){let t=Wi(e),n;try{n=zi(t,"utf8")}catch{return{}}try{let r=JSON.parse(n);if(!r.days||typeof r.days!="object")throw new Error("invalid ledger");let s={};for(let[o,i]of Object.entries(r.days))!/^\d{4}-\d{2}-\d{2}$/.test(o)||!i||typeof i!="object"||(s[o]={...Gi(),...i});return s}catch{try{Ui(t,`${t}.corrupt-${Date.now()}`)}catch{}return{}}}function ji(e,t){let n=`${e}.tmp-${process.pid}`;Lr(n,t,{mode:384}),Ui(n,e)}function ch(e){try{return Lr(e,String(process.pid),{flag:"wx",mode:384}),!0}catch{}try{return Date.now()-Zi(e).mtimeMs<Qm?!1:(Bi(e,{force:!0}),Lr(e,String(process.pid),{flag:"wx",mode:384}),!0)}catch{return!1}}function fh(e,t=Fi,n=Fi/2){try{if(Zi(e).size<=t)return}catch{return}let r=`${e}.lock`;if(ch(r))try{let s=zi(e,"utf8").split(`
|
|
91
|
+
`).filter(u=>u.trim()!==""),o=s.length,i=0;for(;o>0;){let u=Buffer.byteLength(s[o-1])+1;if(i+u>n)break;i+=u,o-=1}let a=uh(e);for(let u of s.slice(0,o)){let c=rh(u);if(!c)continue;let f=lh(c.t),d=a[f]??Gi();ah(d,c),a[f]=d}let l=s.slice(o);ji(e,l.length?`${l.join(`
|
|
92
92
|
`)}
|
|
93
|
-
`:""),ji(Wi(e),JSON.stringify({v:1,days:a}))}catch{return}finally{Bi(r,{force:!0})}}function
|
|
94
|
-
`.includes(i)){if(o(),Hi(t)){t=[];continue}return t}n+=i,r=!0}return o(),Hi(t)?[]:t}function Ki(e){let t=
|
|
95
|
-
`;try{Vm(R(),{recursive:!0,mode:448}),Gm(n,m,{mode:384}),Wm(n,384),
|
|
96
|
-
`)}function fa(e){let t=
|
|
97
|
-
`),!0)}function D(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}async function $e(e){if(!va(e))return{};try{let t=ee(await
|
|
98
|
-
`)}function
|
|
99
|
-
`||o==="\r"||o==="$"&&e[s+1]==="(")return null;n+=o,r=!0}}return r&&t.push(n),t}var
|
|
100
|
-
`)}function Xr(e){let t=[],n=[];for(let r of e.split(/(?<=\n)/))/^\s*\[\[?\s*[A-Za-z0-9_"'-]/.test(r)&&n.length&&(t.push(n.join("")),n=[]),n.push(r);return n.length&&t.push(n.join("")),t}function Pn(e){return/^\s*\[\[hooks\]\]/.test(e)&&new RegExp(`^\\s*name\\s*=\\s*"${Pa}"\\s*$`,"m").test(e)}function Da(e){if(!Pn(e))return e;let t=e.split(/(?<=\n)/),n=1;for(;n<t.length&&!/^\s*(?:#.*)?\r?\n?$/.test(t[n]);)n++;for(;n<t.length&&/^\s*\r?\n?$/.test(t[n]);)n++;return t.slice(n).join("")}async function La(e,t){try{await
|
|
93
|
+
`:""),ji(Wi(e),JSON.stringify({v:1,days:a}))}catch{return}finally{Bi(r,{force:!0})}}function dh(e){let t=qm(e),n=t,r="";for(;;){try{return An(Km(n),r)}catch{}let s=Ji(n);if(s===n)return t;r=r?An(Mi(n),r):Mi(n),n=s}}var ph=new Set(["sudo","command","time","nice","nohup","env","stdbuf","timeout"]),mh=new Set(["-u","-g","-n","-s","-k"]),hh=/^[a-z0-9][a-z0-9._-]*$/i,gh=new Set(["git","npm","pnpm","yarn","npx","docker","kubectl","helm","cargo","go","brew","gh","pip","pip3","apt","apt-get","systemctl","terraform","aws","gcloud","az","bundle","rake","rails","prisma","poetry","uv","gem","composer"]),Vi=/^[A-Za-z_][A-Za-z0-9_]*=/;function Hi(e){return e.length===0||e[0]==="cd"||e.every(t=>Vi.test(t))}function yh(e){let t=[],n="",r=!1,s=null,o=()=>{r&&t.push(n),n="",r=!1};for(let i of e){if(s){i===s?s=null:n+=i;continue}if(i==="'"||i==='"'){s=i,r=!0;continue}if(i===" "||i===" "){o();continue}if(`|;&<>
|
|
94
|
+
`.includes(i)){if(o(),Hi(t)){t=[];continue}return t}n+=i,r=!0}return o(),Hi(t)?[]:t}function Ki(e){let t=yh(e).map(a=>a.replace(/^[({]+/,"")).filter(Boolean),n=0;for(;n<t.length;){let a=t[n];if(Vi.test(a)){n+=1;continue}if(ph.has(a)){for(n+=1;n<t.length;){let l=t[n];if(l.startsWith("-")){n+=mh.has(l)?2:1;continue}if(/^\d+(?:\.\d+)?[smhd]?$/.test(l)){n+=1;continue}break}continue}break}if(n>=t.length)return"";let r=t[n],s=r.includes("/")?r.slice(r.lastIndexOf("/")+1):r,o=t[n+1];return(o&&!o.startsWith("-")&&hh.test(o)&&gh.has(s.toLowerCase())?`${s} ${o}`:s).slice(0,24)}function kh(){return An(R(),Ym)}function qi(e,t,n=kh(),r=!1,s,o,i,a,l={}){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<0||t<0||e+t===0)return;let u=s?`,"h":${JSON.stringify(s)}`:"",c=o?`,"k":${JSON.stringify(o)}`:"",f=i?`,"c":${JSON.stringify(i.slice(0,24))}`:"",d=a?dh(a):"",p=d&&d.length<=nh?`,"p":${JSON.stringify(d)}`:"",g=l.s?`,"s":${JSON.stringify(l.s.slice(0,66))}`:"",y=l.o?`,"o":${JSON.stringify(l.o)}`:"",m=`{"t":${Math.floor(Date.now()/1e3)},"r":${e},"f":${t}${r?',"m":1':""}${u}${c}${f}${p}${g}${y}}
|
|
95
|
+
`;try{Vm(R(),{recursive:!0,mode:448}),Gm(n,m,{mode:384}),Wm(n,384),fh(n)}catch{return}}function Yi(e){let t=e.filterId==null?void 0:e.filterId.startsWith("user/")?`u:${e.filterId.slice(5)}`:"b",n=e.filteredBytes<e.rawBytes?void 0:e.filterId==null?"n":e.debugBypass?"e":"g";return{...t?{s:t}:{},...n?{o:n}:{}}}function Xi(e,t,n){let r=n!=null?Math.min(e,n):e,s=n!=null?Math.min(t,n):t;return{raw:r,filtered:s}}import{existsSync as JE,readFileSync as kg}from"node:fs";function bh(e){return e.charCodeAt(0)===65279?e.slice(1):e}function ee(e){return JSON.parse(bh(e))}import{join as bg}from"node:path";import _g from"node:os";import{readFile as og,writeFile as ig,rename as ag,mkdir as Sa,chmod as lg,stat as ug,unlink as cg}from"node:fs/promises";import{existsSync as va,lstatSync as fg,readlinkSync as dg,realpathSync as _a}from"node:fs";import{basename as pg,dirname as In,join as mg,resolve as xa}from"node:path";import{basename as _h}from"node:path";var xh={exec:"tkr-exec",processor:"tkr-processor",daemon:"tkr-daemon","shim-run":"tkr-shim"},wh={codex:"tkr-codex-hook",cursor:"tkr-cursor-hook",gemini:"tkr-gemini-hook",agent:"tkr-agent-hook",copilot:"tkr-copilot-hook",droid:"tkr-droid-hook",trae:"tkr-trae-hook",qwen:"tkr-qwen-hook",crush:"tkr-crush-hook",junie:"tkr-junie-hook",zcode:"tkr-zcode-hook",grok:"tkr-grok-hook",context:"tkr-context-hook","pre-tool-use":"pre-tool-use","post-tool-use":"post-tool-use","session-recap":"session-recap","session-start":"on-session-start","reducer-session-start":"reducer-session-start","reducer-prompt-submit":"reducer-prompt-submit","reducer-stop":"reducer-stop","command-expansion":"command-expansion"};function gt(e){let t=_h(e).replace(/\.(m?js|ts)$/,"");if(t==="tkr")return[];for(let[n,r]of Object.entries(xh))if(r===t)return[n];for(let[n,r]of Object.entries(wh))if(r===t)return["hook",n];return null}import{realpathSync as Qi}from"node:fs";import{delimiter as Sh,join as yt}from"node:path";import vh from"node:os";function Ae(){return!1}function Mr(e,t=process.execPath){let n=Ae()?gt(e):null;return n?[process.execPath,...n]:[t,e]}function ea(e,t){try{return Qi(e)===Qi(t)}catch{return!1}}function Fr(e=process.env.PATH??"",t=process.platform,n=process.execPath){let r=t==="win32"?"tkr.exe":"tkr";for(let s of e.split(t==="win32"?";":Sh)){if(!s||s.includes("node_modules"))continue;let o=yt(s,r);if(ea(o,n))return o}if(t!=="win32"){let s=vh.homedir();for(let o of[yt(s,".local","bin",r),yt(s,".local","share","tokmizer","current","dist","bin",r),yt("/opt/homebrew/bin",r),yt("/usr/local/bin",r),yt("/home/linuxbrew/.linuxbrew/bin",r)])if(ea(o,n))return o}return n}import Eh from"node:os";import{isAbsolute as Th,join as ta,resolve as na}from"node:path";function Rn(e=process.env,t=Eh.homedir()){let n=e.CLAUDE_CONFIG_DIR?.trim();if(!n)return ta(t,".claude");let r=n;return r==="~"?r=t:(r.startsWith("~/")||r.startsWith("~\\"))&&(r=ta(t,r.slice(2))),Th(r)?na(r):na(r)}import{accessSync as Ch,chmodSync as Oh,constants as Ih,existsSync as $n,mkdirSync as Nh,readdirSync as Ph,readFileSync as Dh,realpathSync as aa,renameSync as Lh,unlinkSync as Mh,writeFileSync as Fh}from"node:fs";import{basename as zr,dirname as Re,join as _e,sep as kt}from"node:path";import{rmSync as Ah,statSync as Rh}from"node:fs";import{join as ra}from"node:path";function sa(){return ra(R(),"shims")}function jr(){return ra(R(),"fail-open")}var $h=24*36e5;function de(e=Date.now()){try{if(e-Rh(jr()).mtimeMs<$h)return!0;Ah(jr(),{force:!0})}catch{}return!1}function oa(){return`[ -f ${Xe(jr())} ]`}function Xe(e){return`'${e.replace(/'/g,"'\\''")}'`}function ia(e){if(!e.startsWith("'")||!e.endsWith("'")||e.length<2)return null;let n=e.slice(1,-1).split("'\\''");return n.some(r=>r.includes("'"))?null:n.join("'")}var ua=1,Zt="tkr-shim.stable",ca=/^(?:0|[1-9]\d{0,5})\.(?:0|[1-9]\d{0,5})\.(?:0|[1-9]\d{0,5})$/;function jh(){return _e(R(),"bin","tkr-shim-launch")}function Hh(){return _e(R(),"bin","tkr-run")}function la(){return _e(Rn(),"plugins","cache","tokmizer","tokmizer")}function zh(e){let t=Re(Re(Re(e)));return ca.test(zr(t))&&zr(Re(t))==="tokmizer"?Re(t):null}function Ur(e){return/[\n\r]/.test(e)||e.includes(`${kt}_npx${kt}`)||e.includes(`${kt}.bun${kt}install${kt}cache${kt}`)}function Br(e){let t=e.match(/^(.*)[\\/]Cellar[\\/]([^\\/]+)[\\/][^\\/]+[\\/](.*)$/);if(!t)return e;let n=_e(t[1],"opt",t[2],t[3]);try{return aa(n)===aa(e)?n:e}catch{return e}}function Uh(e=process.execPath){return Ur(e)?"":Br(e)}function Bh(e,t=Ae()){if(t&>(e)){let s=Fr();return{single:Ur(s)?"":Br(s),js:"",cache:la(),node:""}}let n=Uh(),r=zh(e);return r?{single:"",js:"",cache:r,node:n}:{single:"",js:Ur(e)?"":Br(e),cache:la(),node:n}}function Zh(e){try{return Ch(e,Ih.X_OK),!0}catch{return!1}}function Jh(e){let t=null,n=-1,r;try{r=Ph(e)}catch{return null}for(let s of r){if(!ca.test(s))continue;let o=_e(e,s);if(!$n(_e(o,"dist","bin","tkr-shim.js"))||!$n(_e(o,"dist","bin",Zt)))continue;let[i,a,l]=s.split(".").map(Number),u=i*1e6+a*1e3+l;u>n&&(n=u,t=o)}return t}function Hr(e){return e.single&&Zh(e.single)||e.js&&$n(e.js)&&(zr(e.js)!=="tkr-shim.js"||$n(_e(Re(e.js),Zt)))?!0:e.cache!==""&&Jh(e.cache)!==null}function Gh(e,t){return["_tk_t=",`if [ -n "$_tk_j" ] && [ -f "${t}" ] && { [ "\${_tk_j##*/}" != tkr-shim.js ] || [ -f "\${_tk_j%/*}/${Zt}" ]; }; then _tk_t=${t}; fi`,'if [ -z "$_tk_t" ] && [ -n "$_tk_k" ] && [ -d "$_tk_k" ]; then'," _tk_b=-1",' for _tk_r in "$_tk_k"/*/; do'," _tk_v=${_tk_r%/}; _tk_v=${_tk_v##*/}"," case $_tk_v in *[!0-9.]*|.*|*.|*..*|0[0-9]*|*.0[0-9]*|*[0-9][0-9][0-9][0-9][0-9][0-9][0-9]*) continue ;; [0-9]*.[0-9]*.[0-9]*) ;; *) continue ;; esac"," case ${_tk_v#*.*.} in *.*) continue ;; esac",` [ -f "\${_tk_r}dist/bin/${e}" ] && [ -f "\${_tk_r}dist/bin/${Zt}" ] || continue`," _tk_1=${_tk_v%%.*}; _tk_2=${_tk_v#*.}; _tk_3=${_tk_2#*.}; _tk_2=${_tk_2%%.*}"," _tk_v=$((_tk_1 * 1000000 + _tk_2 * 1000 + _tk_3))",` if [ "$_tk_v" -gt "$_tk_b" ]; then _tk_b=$_tk_v; _tk_t=\${_tk_r}dist/bin/${e}; fi`," done","fi",'if [ -z "$_tk_t" ]; then',` _tk_d=${Xe(sa())}`," set -f; _tk_o=$IFS; IFS=:"," for _tk_e in $PATH; do"," case $_tk_e in /*/node_modules/*|*/node_modules) continue ;; /*) ;; *) continue ;; esac",' [ ! "$_tk_e" -ef "$_tk_d" ] || continue',' for _tk_g in "$_tk_e/../lib/node_modules/@tokmizer/plugin/dist/bin" "$_tk_e/../opt/tokmizer/libexec/lib/node_modules/@tokmizer/plugin/dist/bin"; do',` if [ -f "$_tk_g/${Zt}" ] && [ -f "$_tk_g/${e}" ]; then _tk_t=$_tk_g/${e}; break 2; fi`," done"," done"," IFS=$_tk_o; set +f","fi","_tk_x=",'if [ -n "$_tk_t" ]; then',' for _tk_x in "$_tk_n" "$(command -v node 2>/dev/null)" /opt/homebrew/bin/node /usr/local/bin/node /usr/bin/node ""; do',' [ -n "$_tk_x" ] && [ -x "$_tk_x" ] && break'," done","fi"]}function Wh(e){return["#!/bin/sh",`_tk_f=${ua}`,`_tk_s=${Xe(e.single)}`,`_tk_j=${Xe(e.js)}`,`_tk_k=${Xe(e.cache)}`,`_tk_n=${Xe(e.node)}`,'[ "$#" -gt 0 ] || exit 0',`if ! ${oa()}; then`,' if [ -n "$_tk_s" ] && [ -x "$_tk_s" ]; then exec "$_tk_s" exec "$@"; fi',...Gh("tkr-exec.js","${_tk_j%/*}/tkr-exec.js").map(t=>` ${t}`),' if [ -n "$_tk_t" ]; then'," _tk_r=${_tk_t%/*}",' if [ -f "$_tk_r/tkr-exec" ] && [ -s "$_tk_r/tkr-exec" ] && [ -x "$_tk_r/tkr-exec" ]; then exec "$_tk_r/tkr-exec" "$@"; fi',' if [ -n "$_tk_x" ] && [ -s "$_tk_t" ]; then exec "$_tk_x" "$_tk_t" "$@"; fi'," fi","fi",'exec "$@"',""].join(`
|
|
96
|
+
`)}function fa(e){let t=Hh(),n=Bh(_e(Re(e),"tkr-shim.js")),r=Kh(t);if(r&&r.format===ua&&Hr(r.target)&&JSON.stringify(r.target)===JSON.stringify(n))return t;if(!Hr(n))return r&&Hr(r.target)?t:null;let s=`${t}.${process.pid}.tmp`;try{return Nh(Re(t),{recursive:!0,mode:448}),Fh(s,Wh(n),{mode:493}),Oh(s,493),Lh(s,t),t}catch{try{Mh(s)}catch{}return null}}function Vh(e){let t=a=>{let l=e.match(new RegExp(`^${a}=(.*)$`,"m"));return l?a==="_tk_f"?l[1]:ia(l[1]):null},n=Number(t("_tk_f")),r=t("_tk_s"),s=t("_tk_j"),o=t("_tk_k"),i=t("_tk_n")??"";return!Number.isInteger(n)||r===null||s===null||o===null?null:{format:n,target:{single:r,js:s,cache:o,node:i}}}function Kh(e=jh()){try{return Vh(Dh(e,"utf8"))}catch{return null}}import{chmod as qh,lstat as da,mkdir as Yh,readFile as Jr,rename as Xh,rm as AE,unlink as pa,writeFile as Qh}from"node:fs/promises";import{createHash as ma}from"node:crypto";import{basename as eg,join as ha}from"node:path";var tg=".tkr-bak";function ga(){return ha(R(),"backup","config")}function Zr(e){let t=Wr(e),n=ma("sha256").update(t).digest("hex").slice(0,16),r=eg(t).replace(/[^A-Za-z0-9._-]/g,"_").slice(0,80);return ha(ga(),`${n}-${r}`)}function ya(e){return`${Zr(e)}.written`}function ka(e){return ma("sha256").update(e).digest("hex")}async function ng(e){try{return await da(e),!0}catch{return!1}}async function Gr(e,t){let n=`${e}.tmp-${process.pid}`;try{return await Yh(ga(),{recursive:!0,mode:448}),await Qh(n,t,{mode:384}),await qh(n,384),await Xh(n,e),!0}catch{return await pa(n).catch(()=>{}),!1}}async function rg(e,t){let n=`${e}${tg}`;try{if(!(await da(n)).isFile())return!1}catch{return!1}let r=!await ng(t);if(r&&!await Gr(t,await Jr(n,"utf8")))throw new Error("backup");return await pa(n).catch(()=>{}),r}async function sg(e,t){try{return(await Jr(ya(e),"utf8")).trim()===ka(t)}catch{return!1}}async function ba(e,t){let n=t;try{n===void 0&&(n=await Jr(e,"utf8"))}catch(r){return r.code==="ENOENT"}try{if(await rg(e,Zr(e)))return!0}catch{return!1}return await sg(e,n)?!0:Gr(Zr(e),n)}async function Cn(e,t,n){return!await ba(e,n)||!await On(e,t)?!1:(await Gr(ya(e),`${ka(t)}
|
|
97
|
+
`),!0)}function D(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}async function $e(e){if(!va(e))return{};try{let t=ee(await og(e,"utf8"));return D(t)?t:null}catch{return null}}function Wr(e){let t=xa(e);for(let n=0;n<32;n++){try{return _a(t)}catch{}try{if(!fg(t).isSymbolicLink())break;t=xa(In(t),dg(t))}catch{break}}try{return mg(_a(In(t)),pg(t))}catch{return t}}async function On(e,t){let n=Wr(e),r=`${n}.tmp-${process.pid}`;try{await Sa(In(n),{recursive:!0});let s=384;try{s=(await ug(n)).mode&511}catch{}return process.platform!=="win32"&&va(n)&&(s&128)===0?!1:(await ig(r,t,{mode:s}),await lg(r,s),await ag(r,n),!0)}catch{try{await cg(r)}catch{}return!1}}async function Ce(e,t){try{await Sa(In(e),{recursive:!0})}catch{return!1}return Cn(e,`${JSON.stringify(t,null,2)}
|
|
98
|
+
`)}function hg(e){let t=[],n="",r=!1;for(let s=0;s<e.length;s++){let o=e[s];if(o==="'"){let i=e.indexOf("'",s+1);if(i<0)return null;n+=e.slice(s+1,i),r=!0,s=i}else if(o==='"'){let i=e.indexOf('"',s+1);if(i<0)return null;let a=e.slice(s+1,i);if(/`|\$\(/.test(a))return null;n+=a,r=!0,s=i}else if(o==="\\"&&e[s+1]==="'")n+="'",r=!0,s++;else if(o===" "||o===" ")r&&t.push(n),n="",r=!1;else{if(o===";"||o==="&"||o==="|"||o==="`"||o===`
|
|
99
|
+
`||o==="\r"||o==="$"&&e[s+1]==="(")return null;n+=o,r=!0}}return r&&t.push(n),t}var gg=/^\s*\[ ! -[a-z] (?:'(?:[^']|'\\'')*'|"[^"]*") \] \|\| /,wa=/^[A-Za-z_][A-Za-z0-9_]*=/;function Vr(e){return(e.split(/[\\/]/).pop()??"").toLowerCase().replace(/\.(?:exe|cmd|bat|ps1|m?js|sh)$/,"")}function yg(e){if(typeof e!="string")return null;let t=e.replace(gg,""),n=hg(t);if(!n)return null;let r=0;for(;r<n.length&&wa.test(n[r]);)r++;if(n[r]==="exec"&&r++,r>=n.length||wa.test(n[r]))return null;let s=Vr(n[r]),o=n.slice(r+1);if(s==="sh"||s==="bash"){let i=o[0]!==void 0?Vr(o[0]):"";return/^tkr-hook(?:-launch)?$/.test(i)?{program:i,args:o.slice(2),launcherMark:o[1]??""}:{program:s,args:o}}return s==="node"?{program:o[0]!==void 0?Vr(o[0]):"node",args:o.slice(1)}:{program:s,args:o}}function bt(e,t){let n=yg(e);if(!n)return!1;if(n.launcherMark!==void 0)return n.launcherMark===t;if(n.program===t)return!0;if(n.program!=="tkr")return!1;let r=gt(t);return r?.length?r.every((s,o)=>n.args[o]===s):!1}function Nn(e,t,n,r){let s=i=>i!==n&&t(i),o=!1;for(let i=e.length-1;i>=0;i--){let a=e[i];if(!r){s(a)&&(e.splice(i,1),o=!0);continue}if(!D(a)||!Array.isArray(a.hooks))continue;let l=a.hooks.filter(u=>!s(u));l.length!==a.hooks.length&&(o=!0,l.length?a.hooks=l:e.splice(i,1))}return o}var xg="tkr-cursor-hook",Ea="preToolUse";function wg(){return bg(_g.homedir(),".cursor","hooks.json")}function Sg(e){return D(e)&&bt(e.command,xg)}function vg(e){let t=D(e.hooks)?e.hooks:{},n=Array.isArray(t[Ea])?t[Ea]:[];return{hooks:t,entries:n}}function Ta(){try{let e=ee(kg(wg(),"utf8"));return vg(e).entries.some(Sg)}catch{return!1}}import{existsSync as XE,readFileSync as Eg}from"node:fs";import{join as Tg}from"node:path";import Ag from"node:os";var Rg="tkr-gemini-hook",Aa="BeforeTool";function $g(){return Tg(process.env.GEMINI_CLI_HOME||Ag.homedir(),".gemini","settings.json")}function Cg(e){return D(e)&&bt(e.command,Rg)}function Og(e){return(Array.isArray(e.hooks)?e.hooks:[]).find(Cg)}function Ig(e){let t=D(e.hooks)?e.hooks:{},n=Array.isArray(t[Aa])?t[Aa]:[];return{hooks:t,groups:n}}function Ra(){try{let e=ee(Eg($g(),"utf8"));return Ig(e).groups.some(t=>Og(t)!=null)}catch{return!1}}import{dirname as AT,join as te}from"node:path";import Hg from"node:os";import{existsSync as iT,accessSync as aT,constants as lT,readFileSync as Ng}from"node:fs";var Pg='"rewrite", "--host"';function Dg(e){return e.includes(Pg)}function $a(e){try{return Dg(Ng(e,"utf8"))}catch{return!1}}import{readFile as Oa,mkdir as Lg}from"node:fs/promises";import{existsSync as Yr,readFileSync as Ia}from"node:fs";import{dirname as Mg,join as qr}from"node:path";import Na from"node:os";var Pa="tokmizer-rewrite",Jt="tokmizer-rewrite";function Gt(){return qr(process.env.VIBE_HOME||qr(Na.homedir(),".vibe"),"hooks.toml")}function Ca(e){return JSON.stringify(e)}function Fg(e){return["[[hooks]]",`name = ${Ca(Pa)}`,'type = "pre_tool"','match = "bash"',`command = ${Ca(e)}`,"timeout = 10.0","strict = false",'description = "Route shell commands through tokmizer."',""].join(`
|
|
100
|
+
`)}function Xr(e){let t=[],n=[];for(let r of e.split(/(?<=\n)/))/^\s*\[\[?\s*[A-Za-z0-9_"'-]/.test(r)&&n.length&&(t.push(n.join("")),n=[]),n.push(r);return n.length&&t.push(n.join("")),t}function Pn(e){return/^\s*\[\[hooks\]\]/.test(e)&&new RegExp(`^\\s*name\\s*=\\s*"${Pa}"\\s*$`,"m").test(e)}function Da(e){if(!Pn(e))return e;let t=e.split(/(?<=\n)/),n=1;for(;n<t.length&&!/^\s*(?:#.*)?\r?\n?$/.test(t[n]);)n++;for(;n<t.length&&/^\s*\r?\n?$/.test(t[n]);)n++;return t.slice(n).join("")}async function La(e,t){try{await Lg(Mg(e),{recursive:!0})}catch{return!1}return Cn(e,t)}function Ma(){try{return Xr(Ia(Gt(),"utf8")).some(Pn)}catch{return!1}}async function Fa(e){let t=Gt(),n="";try{Yr(t)&&(n=await Oa(t,"utf8"))}catch{return"error"}let r=Fg(e),s=Xr(n),o=s.filter(Pn);if(o.length===1&&o[0].trimEnd()===r.trimEnd())return"present";let i=s.map(Da).join("").trimEnd(),a=i?`${i}
|
|
101
101
|
|
|
102
102
|
${r}`:r;return await La(t,a)?o.length?"updated":"added":"error"}async function ja(){let e=Gt();if(!Yr(e))return"absent";let t;try{t=await Oa(e,"utf8")}catch{return"error"}let n=Xr(t);if(!n.some(Pn))return"absent";let r=n.map(Da).join("").trimEnd(),s=r?`${r}
|
|
103
|
-
`:"";return await La(e,s)?"removed":"error"}function Wt(){return qr(Na.homedir(),".gemini","config","hooks.json")}function jh(e){return{enabled:!0,PreToolUse:[{matcher:"run_command",hooks:[{type:"command",command:e,timeout:10}]}]}}function Ha(){try{let e=ee(Ia(Wt(),"utf8"));return D(e)&&D(e[Jt])}catch{return!1}}async function za(e){let t=Wt(),n=await $e(t);if(!n)return"error";let r=jh(e),s=n[Jt];return s!==void 0&&JSON.stringify(s)===JSON.stringify(r)?"present":(n[Jt]=r,await Ce(t,n)?s===void 0?"added":"updated":"error")}async function Ua(){let e=Wt();if(!Yr(e))return"absent";let t=await $e(e);return t?Jt in t?(delete t[Jt],await Ce(e,t)?"removed":"error"):"absent":"error"}var Vt=()=>Hh.homedir(),Qr=()=>process.env.XDG_CONFIG_HOME||te(Vt(),".config"),Ba=[{host:"opencode",label:"OpenCode",command:"setup-opencode",kind:"shim",files:()=>[{template:"opencode.js",target:te(Qr(),"opencode","plugins","tokmizer.js")}],next:"Restart OpenCode so it loads the plugin."},{host:"kilo",label:"Kilo Code",command:"setup-kilo",kind:"shim",files:()=>[{template:"kilo.js",target:te(Qr(),"kilo","plugin","tokmizer.js")}],next:"Restart Kilo Code (CLI or VS Code extension) so it loads the plugin."},{host:"amp",label:"Amp",command:"setup-amp",kind:"shim",files:()=>[{template:"amp.js",target:te(Qr(),"amp","plugins","tokmizer.js")}],next:"Reload plugins in Amp (or restart it), then check it with: amp plugins list"},{host:"vibe",label:"Mistral Vibe",command:"setup-vibe",kind:"hook",file:Gt,installed:Ma,ensure:Fa,remove:ja,next:"Restart Vibe so it reads hooks.toml."},{host:"antigravity",label:"Antigravity",command:"setup-antigravity",kind:"hook",file:Wt,installed:Ha,ensure:za,remove:Ua,next:"Restart Antigravity, then check it with /hooks."},{host:"openclaw",label:"OpenClaw",command:"setup-openclaw",kind:"shim",files:()=>{let e=te(Vt(),".openclaw","extensions","tokmizer");return["index.js","openclaw.plugin.json","package.json"].map(t=>({template:`openclaw/${t}`,target:te(e,t)}))},next:"Run: openclaw plugins enable tokmizer && openclaw gateway restart"},{host:"pi",label:"Pi",command:"setup-pi",kind:"shim",files:()=>[{template:"pi.js",target:te(process.env.PI_CODING_AGENT_DIR||te(Vt(),".pi","agent"),"extensions","tokmizer.js")}],next:"Restart Pi (or run /reload) so it loads the extension."},{host:"omp",label:"Oh My Pi",command:"setup-omp",kind:"shim",files:()=>[{template:"omp.js",target:te(Vt(),".omp","agent","extensions","tokmizer.js")}],next:"Restart omp so it loads the extension."},{host:"hermes",label:"Hermes",command:"setup-hermes",kind:"shim",files:()=>{let e=te(process.env.HERMES_HOME||te(Vt(),".hermes"),"plugins","tokmizer");return["__init__.py","plugin.yaml"].map(t=>({template:`hermes/${t}`,target:te(e,t)}))},next:"Run: hermes plugins enable tokmizer, then restart Hermes (needs Hermes v2026.8.16 or newer)."}];function Za(e){return e.kind==="hook"?e.installed():$a(e.files()[0].target)}import{existsSync as rs,readFileSync as Gh}from"node:fs";import{join as B}from"node:path";import Wh from"node:os";import{existsSync as zh,readFileSync as Uh}from"node:fs";function Dn(e,t){return D(e)&&bt(e.command,t)}function Ja(e){return e.path??(e.nested?["hooks"]:[])}function Ga(e,t){let n=e;for(let r of Ja(t))D(n[r])||(n[r]={}),n=n[r];return n}function Wa(e,t){let n=e;for(let s of Ja(t))n=D(n)?n[s]:void 0;if(!D(n))return[];let r=n[t.event];return Array.isArray(r)?r:[]}function Bh(e){return D(e)&&Array.isArray(e.hooks)?e.hooks:[]}function Va(e,t){return(t.matcher===void 0?e:e.flatMap(Bh)).filter(r=>Dn(r,t.mark))}function Ka(e,t){return Va(Wa(e,t),t).length>0}function es(e,t){try{let n=ee(Uh(e,"utf8"));return D(n)&&Ka(n,t)}catch{return!1}}function Zh(e,t,n){let r=Ga(e,t),s=Array.isArray(r[t.event])?r[t.event]:[];r[t.event]=s;let o=Va(s,t)[0],i=t.entry(n);if(o){let a=Nn(s,c=>Dn(c,t.mark),o,t.matcher!==void 0),l=Object.entries(i).filter(([c,u])=>JSON.stringify(o[c])!==JSON.stringify(u));if(!l.length&&!a)return"present";for(let[c,u]of l)o[c]=u;return"updated"}return s.push(t.matcher===void 0?i:{matcher:t.matcher,hooks:[i]}),"added"}function Jh(e,t){if(!Ka(e,t))return!1;let n=Ga(e,t),r=Wa(e,t),s=t.matcher===void 0?r.filter(o=>!Dn(o,t.mark)):r.map(o=>D(o)&&Array.isArray(o.hooks)?{...o,hooks:o.hooks.filter(i=>!Dn(i,t.mark))}:o).filter(o=>!D(o)||!Array.isArray(o.hooks)||o.hooks.length>0);return s.length?n[t.event]=s:delete n[t.event],!0}async function ts(e,t,n){let r=await $e(e);if(!r||t.prepare&&!t.prepare(r))return"error";let s=Zh(r,t,n);return s==="present"||await Ce(e,r)?s:"error"}async function Ln(e,t){if(!zh(e))return"absent";let n=await $e(e);return n?Jh(n,t)?await Ce(e,n)?"removed":"error":"absent":"error"}function pe(){return Wh.homedir()}function Qa(e){return e.version===void 0&&(e.version=1),e.version===1}function Vh(e,t,n){return Promise.all(e.map(r=>ts(r,t,n))).then(r=>r.includes("error")?"error":r.includes("updated")?"updated":r.includes("added")?"added":"present")}function Kh(e,t){return Promise.all(e.map(n=>Ln(n,t))).then(n=>n.includes("error")?"error":n.includes("removed")?"removed":"absent")}function Qe(e,t){return{...e,installed:()=>e.files().some(n=>es(n,t)),ensure:n=>Vh(e.files(),t,n),remove:()=>Kh(e.files(),t)}}var qh={mark:"tkr-copilot-hook",event:"PreToolUse",nested:!0,entry:e=>({type:"command",command:e,bash:e,powershell:e,timeout:10,timeoutSec:10}),prepare:Qa};function Yh(){return B(process.env.COPILOT_HOME||B(pe(),".copilot"),"hooks","tokmizer.json")}var Xh={mark:"tkr-trae-hook",event:"PreToolUse",nested:!0,matcher:"RunCommand",entry:e=>({type:"command",command:e,timeout:30}),prepare:Qa};function Qh(){let e=[B(pe(),".trae","hooks.json")];return rs(B(pe(),".trae-cn"))&&e.push(B(pe(),".trae-cn","hooks.json")),e}var ey={mark:"tkr-qwen-hook",event:"PreToolUse",nested:!0,matcher:"run_shell_command",entry:e=>({name:"tokmizer",type:"command",command:e,timeout:10})};function ty(){return B(process.env.QWEN_HOME||B(pe(),".qwen"),"settings.json")}var ny={mark:"tkr-crush-hook",event:"PreToolUse",nested:!0,entry:e=>({name:"tokmizer",matcher:"^bash$",command:e,timeout:10})};function ry(){return B(process.env.XDG_CONFIG_HOME||B(pe(),".config"),"crush","crush.json")}var sy={mark:"tkr-junie-hook",event:"PreToolUse",nested:!0,matcher:"^Bash$",entry:e=>({type:"command",command:e,timeout:10})};function oy(){return B(pe(),".junie","config.json")}function iy(e){return e.hooks===void 0&&(e.hooks={}),D(e.hooks)?(e.hooks.enabled===void 0&&(e.hooks.enabled=!0),e.hooks.events===void 0||D(e.hooks.events)):!1}var ay={mark:"tkr-zcode-hook",event:"PreToolUse",nested:!0,path:["hooks","events"],matcher:"Bash",entry:e=>({type:"command",command:e,timeoutMs:1e4}),prepare:iy};function ly(){return B(pe(),".zcode","cli","config.json")}var cy={mark:"tkr-grok-hook",event:"PreToolUse",nested:!0,matcher:"Bash",entry:e=>({type:"command",command:e,timeout:10})};function uy(){return B(pe(),".grok","hooks","tokmizer.json")}var fy="tkr-droid-hook",ss={mark:fy,event:"PreToolUse",nested:!1,matcher:"Execute",entry:e=>({type:"command",command:e,timeout:10})},dy={...ss,nested:!0};function ns(){return B(pe(),".factory")}function Mn(){return[{file:B(ns(),"hooks.json"),spec:ss},{file:B(ns(),"hooks","hooks.json"),spec:ss},{file:B(ns(),"settings.json"),spec:dy}]}function qa(e){try{let t=JSON.parse(Gh(e,"utf8"));return D(t)?t:null}catch{return null}}function Ya(e,t){let n=t?e?.hooks:e;return D(n)&&Array.isArray(n.PreToolUse)&&n.PreToolUse.length>0}function Xa(){let[e,t,n]=Mn(),r=rs(e.file)?e:rs(t.file)?t:null;return r&&Ya(qa(r.file),!1)?r:Ya(qa(n.file),!0)?n:r??e}var py={id:"droid",label:"Factory Droid",setup:"tkr setup-droid",bin:"tkr-droid-hook",restart:"Restart Droid, then check it with /hooks.",files:()=>[Xa().file],installed:()=>Mn().some(e=>es(e.file,e.spec)),ensure:async e=>{let t=Xa(),n=await ts(t.file,t.spec,e);return n==="error"||await Promise.all(Mn().filter(r=>r.file!==t.file).map(r=>Ln(r.file,r.spec))),n},remove:async()=>{let e=await Promise.all(Mn().map(t=>Ln(t.file,t.spec)));return e.includes("error")?"error":e.includes("removed")?"removed":"absent"}},el=[Qe({id:"copilot",label:"GitHub Copilot",setup:"tkr setup-copilot",bin:"tkr-copilot-hook",restart:"Restart VS Code or Copilot CLI so they load the new hook.",files:()=>[Yh()]},qh),py,Qe({id:"trae",label:"Trae",setup:"tkr setup-trae",bin:"tkr-trae-hook",restart:"Restart Trae so it loads the new hook.",files:Qh},Xh),Qe({id:"qwen-code",label:"Qwen Code",setup:"tkr setup-qwen",bin:"tkr-qwen-hook",restart:"Restart Qwen Code, then check it with /hooks.",files:()=>[ty()]},ey),Qe({id:"crush",label:"Crush",setup:"tkr setup-crush",bin:"tkr-crush-hook",restart:"Restart Crush so it loads the new hook.",files:()=>[ry()]},ny),Qe({id:"junie",label:"Junie CLI",setup:"tkr setup-junie",bin:"tkr-junie-hook",restart:"Restart Junie CLI so it loads the new hook.",files:()=>[oy()]},sy),Qe({id:"zcode",label:"ZCode",setup:"tkr setup-zcode",bin:"tkr-zcode-hook",restart:"Restart ZCode so it loads the new hook.",files:()=>[ly()]},ay),Qe({id:"grok",label:"Grok Build",setup:"tkr setup-grok",bin:"tkr-grok-hook",restart:"Restart Grok Build (1.0.4 or newer) so it loads the new hook.",files:()=>[uy()]},cy)];var my=[{host:"claude-code",vars:["CLAUDECODE","CLAUDE_CODE_ENTRYPOINT","CLAUDE_CODE","CLAUDE_CODE_VERSION","ANTHROPIC_CLAUDE_CODE"]},{host:"codex",vars:["CODEX_VERSION","CODEX_CLI","OPENAI_CODEX","CODEX_THREAD_ID","CODEX_SESSION_ID"]},{host:"cursor",vars:["CURSOR_AGENT","CURSOR_VERSION","CURSOR_TRACE_ID"]},{host:"cline",vars:["CLINE_VERSION","CLINE_API_KEY"]},{host:"aider",vars:["AIDER_VERSION","AIDER_MODEL"]},{host:"qwen-code",vars:["QWEN_CODE"]},{host:"gemini-cli",vars:["GEMINI_CLI","GEMINI_CLI_VERSION","GEMINI_API_KEY"]},{host:"windsurf",vars:["WINDSURF_VERSION","WINDSURF_USER"]},{host:"copilot",vars:["GITHUB_COPILOT_VERSION","COPILOT_INTEGRATION_ID"]},{host:"opencode",vars:[]},{host:"amp",vars:[]},{host:"vibe",vars:[]},{host:"antigravity",vars:[]},{host:"openclaw",vars:[]},{host:"pi",vars:[]},{host:"omp",vars:[]},{host:"hermes",vars:[]},{host:"crush",vars:["CRUSH"]},{host:"droid",vars:[]},{host:"trae",vars:[]},{host:"junie",vars:[]},{host:"zcode",vars:[]},{host:"grok",vars:[]},{host:"kilo",vars:[]}],VT=[...my.map(e=>e.host),"shell"];var KT={cursor:{installed:Ta,setup:"tkr setup-cursor"},"gemini-cli":{installed:Ra,setup:"tkr setup-gemini"},...Object.fromEntries(Ba.map(e=>[e.host,{installed:()=>Za(e),setup:`tkr ${e.command}`}])),...Object.fromEntries(el.map(e=>[e.id,{installed:e.installed,setup:e.setup}]))};function tl(e){return null}import{createConnection as Ry}from"node:net";import{spawn as $y}from"node:child_process";import{existsSync as ll,openSync as ls,closeSync as il,unlinkSync as us,writeFileSync as fs,mkdirSync as ds,readFileSync as cl,appendFileSync as Cy,rmSync as Oy,statSync as ul}from"node:fs";import{dirname as Iy,join as ps}from"node:path";import{fileURLToPath as Ny}from"node:url";var gy=k.object({id:k.string().min(1).max(64),op:k.literal("filter"),cmd:k.string().min(1).max(2048),plan:k.enum(["trial","smart","pro"]),allowed:k.array(k.string().min(1).max(64)).max(512).optional(),installId:k.string().min(1).max(64).optional()}),hy=k.object({id:k.string().min(1).max(64),op:k.literal("ping")}),yy=k.object({id:k.string().min(1).max(64),op:k.literal("shutdown"),installId:k.string().min(1).max(64)}),ky=k.object({id:k.string().min(1).max(64),op:k.literal("reload"),installId:k.string().min(1).max(64).optional()}),QT=k.discriminatedUnion("op",[gy,hy,yy,ky]),eA=k.object({id:k.string(),ok:k.literal(!0),data:k.unknown()}),tA=k.object({id:k.string(),ok:k.literal(!1),err:k.string(),retryAfterMs:k.number().int().nonnegative().optional()}),nl=k.object({filter:Te.nullable(),cacheHit:k.boolean().optional()}),Fn=`
|
|
104
|
-
`,
|
|
105
|
-
`,{mode:384})}catch{}}function jy(e){try{ds(R(),{recursive:!0,mode:448}),fs(ms(),String(Date.now()),{mode:384})}catch{}Fy(`spawn failed: ${e.message}`)}function Hy(){try{Oy(ms(),{force:!0})}catch{}}async function jn(e,t){return new Promise((n,r)=>{let s=Ry(e),o=a=>{if(s.removeAllListeners("connect"),s.removeAllListeners("error"),clearTimeout(i),a){try{s.destroy()}catch{}r(a)}else n(s)},i=setTimeout(()=>o(new Error("connect timeout")),t);s.once("connect",()=>o(null)),s.once("error",a=>o(a))})}function zy(){return process.env.TOKMIZER_DAEMON_BIN?process.env.TOKMIZER_DAEMON_BIN:Ny(new URL("../bin/tkr-daemon.js",import.meta.url))}async function
|
|
106
|
-
`).filter(a=>a.trim()!==""),s=[],o=0;for(let a=r.length-1;a>=0;a-=1){let l=r[a],
|
|
103
|
+
`:"";return await La(e,s)?"removed":"error"}function Wt(){return qr(Na.homedir(),".gemini","config","hooks.json")}function jg(e){return{enabled:!0,PreToolUse:[{matcher:"run_command",hooks:[{type:"command",command:e,timeout:10}]}]}}function Ha(){try{let e=ee(Ia(Wt(),"utf8"));return D(e)&&D(e[Jt])}catch{return!1}}async function za(e){let t=Wt(),n=await $e(t);if(!n)return"error";let r=jg(e),s=n[Jt];return s!==void 0&&JSON.stringify(s)===JSON.stringify(r)?"present":(n[Jt]=r,await Ce(t,n)?s===void 0?"added":"updated":"error")}async function Ua(){let e=Wt();if(!Yr(e))return"absent";let t=await $e(e);return t?Jt in t?(delete t[Jt],await Ce(e,t)?"removed":"error"):"absent":"error"}var Vt=()=>Hg.homedir(),Qr=()=>process.env.XDG_CONFIG_HOME||te(Vt(),".config"),Ba=[{host:"opencode",label:"OpenCode",command:"setup-opencode",kind:"shim",files:()=>[{template:"opencode.js",target:te(Qr(),"opencode","plugins","tokmizer.js")}],next:"Restart OpenCode so it loads the plugin."},{host:"kilo",label:"Kilo Code",command:"setup-kilo",kind:"shim",files:()=>[{template:"kilo.js",target:te(Qr(),"kilo","plugin","tokmizer.js")}],next:"Restart Kilo Code (CLI or VS Code extension) so it loads the plugin."},{host:"amp",label:"Amp",command:"setup-amp",kind:"shim",files:()=>[{template:"amp.js",target:te(Qr(),"amp","plugins","tokmizer.js")}],next:"Reload plugins in Amp (or restart it), then check it with: amp plugins list"},{host:"vibe",label:"Mistral Vibe",command:"setup-vibe",kind:"hook",file:Gt,installed:Ma,ensure:Fa,remove:ja,next:"Restart Vibe so it reads hooks.toml."},{host:"antigravity",label:"Antigravity",command:"setup-antigravity",kind:"hook",file:Wt,installed:Ha,ensure:za,remove:Ua,next:"Restart Antigravity, then check it with /hooks."},{host:"openclaw",label:"OpenClaw",command:"setup-openclaw",kind:"shim",files:()=>{let e=te(Vt(),".openclaw","extensions","tokmizer");return["index.js","openclaw.plugin.json","package.json"].map(t=>({template:`openclaw/${t}`,target:te(e,t)}))},next:"Run: openclaw plugins enable tokmizer && openclaw gateway restart"},{host:"pi",label:"Pi",command:"setup-pi",kind:"shim",files:()=>[{template:"pi.js",target:te(process.env.PI_CODING_AGENT_DIR||te(Vt(),".pi","agent"),"extensions","tokmizer.js")}],next:"Restart Pi (or run /reload) so it loads the extension."},{host:"omp",label:"Oh My Pi",command:"setup-omp",kind:"shim",files:()=>[{template:"omp.js",target:te(Vt(),".omp","agent","extensions","tokmizer.js")}],next:"Restart omp so it loads the extension."},{host:"hermes",label:"Hermes",command:"setup-hermes",kind:"shim",files:()=>{let e=te(process.env.HERMES_HOME||te(Vt(),".hermes"),"plugins","tokmizer");return["__init__.py","plugin.yaml"].map(t=>({template:`hermes/${t}`,target:te(e,t)}))},next:"Run: hermes plugins enable tokmizer, then restart Hermes (needs Hermes v2026.8.16 or newer)."}];function Za(e){return e.kind==="hook"?e.installed():$a(e.files()[0].target)}import{existsSync as rs,readFileSync as Gg}from"node:fs";import{join as B}from"node:path";import Wg from"node:os";import{existsSync as zg,readFileSync as Ug}from"node:fs";function Dn(e,t){return D(e)&&bt(e.command,t)}function Ja(e){return e.path??(e.nested?["hooks"]:[])}function Ga(e,t){let n=e;for(let r of Ja(t))D(n[r])||(n[r]={}),n=n[r];return n}function Wa(e,t){let n=e;for(let s of Ja(t))n=D(n)?n[s]:void 0;if(!D(n))return[];let r=n[t.event];return Array.isArray(r)?r:[]}function Bg(e){return D(e)&&Array.isArray(e.hooks)?e.hooks:[]}function Va(e,t){return(t.matcher===void 0?e:e.flatMap(Bg)).filter(r=>Dn(r,t.mark))}function Ka(e,t){return Va(Wa(e,t),t).length>0}function es(e,t){try{let n=ee(Ug(e,"utf8"));return D(n)&&Ka(n,t)}catch{return!1}}function Zg(e,t,n){let r=Ga(e,t),s=Array.isArray(r[t.event])?r[t.event]:[];r[t.event]=s;let o=Va(s,t)[0],i=t.entry(n);if(o){let a=Nn(s,u=>Dn(u,t.mark),o,t.matcher!==void 0),l=Object.entries(i).filter(([u,c])=>JSON.stringify(o[u])!==JSON.stringify(c));if(!l.length&&!a)return"present";for(let[u,c]of l)o[u]=c;return"updated"}return s.push(t.matcher===void 0?i:{matcher:t.matcher,hooks:[i]}),"added"}function Jg(e,t){if(!Ka(e,t))return!1;let n=Ga(e,t),r=Wa(e,t),s=t.matcher===void 0?r.filter(o=>!Dn(o,t.mark)):r.map(o=>D(o)&&Array.isArray(o.hooks)?{...o,hooks:o.hooks.filter(i=>!Dn(i,t.mark))}:o).filter(o=>!D(o)||!Array.isArray(o.hooks)||o.hooks.length>0);return s.length?n[t.event]=s:delete n[t.event],!0}async function ts(e,t,n){let r=await $e(e);if(!r||t.prepare&&!t.prepare(r))return"error";let s=Zg(r,t,n);return s==="present"||await Ce(e,r)?s:"error"}async function Ln(e,t){if(!zg(e))return"absent";let n=await $e(e);return n?Jg(n,t)?await Ce(e,n)?"removed":"error":"absent":"error"}function pe(){return Wg.homedir()}function Qa(e){return e.version===void 0&&(e.version=1),e.version===1}function Vg(e,t,n){return Promise.all(e.map(r=>ts(r,t,n))).then(r=>r.includes("error")?"error":r.includes("updated")?"updated":r.includes("added")?"added":"present")}function Kg(e,t){return Promise.all(e.map(n=>Ln(n,t))).then(n=>n.includes("error")?"error":n.includes("removed")?"removed":"absent")}function Qe(e,t){return{...e,installed:()=>e.files().some(n=>es(n,t)),ensure:n=>Vg(e.files(),t,n),remove:()=>Kg(e.files(),t)}}var qg={mark:"tkr-copilot-hook",event:"PreToolUse",nested:!0,entry:e=>({type:"command",command:e,bash:e,powershell:e,timeout:10,timeoutSec:10}),prepare:Qa};function Yg(){return B(process.env.COPILOT_HOME||B(pe(),".copilot"),"hooks","tokmizer.json")}var Xg={mark:"tkr-trae-hook",event:"PreToolUse",nested:!0,matcher:"RunCommand",entry:e=>({type:"command",command:e,timeout:30}),prepare:Qa};function Qg(){let e=[B(pe(),".trae","hooks.json")];return rs(B(pe(),".trae-cn"))&&e.push(B(pe(),".trae-cn","hooks.json")),e}var ey={mark:"tkr-qwen-hook",event:"PreToolUse",nested:!0,matcher:"run_shell_command",entry:e=>({name:"tokmizer",type:"command",command:e,timeout:10})};function ty(){return B(process.env.QWEN_HOME||B(pe(),".qwen"),"settings.json")}var ny={mark:"tkr-crush-hook",event:"PreToolUse",nested:!0,entry:e=>({name:"tokmizer",matcher:"^bash$",command:e,timeout:10})};function ry(){return B(process.env.XDG_CONFIG_HOME||B(pe(),".config"),"crush","crush.json")}var sy={mark:"tkr-junie-hook",event:"PreToolUse",nested:!0,matcher:"^Bash$",entry:e=>({type:"command",command:e,timeout:10})};function oy(){return B(pe(),".junie","config.json")}function iy(e){return e.hooks===void 0&&(e.hooks={}),D(e.hooks)?(e.hooks.enabled===void 0&&(e.hooks.enabled=!0),e.hooks.events===void 0||D(e.hooks.events)):!1}var ay={mark:"tkr-zcode-hook",event:"PreToolUse",nested:!0,path:["hooks","events"],matcher:"Bash",entry:e=>({type:"command",command:e,timeoutMs:1e4}),prepare:iy};function ly(){return B(pe(),".zcode","cli","config.json")}var uy={mark:"tkr-grok-hook",event:"PreToolUse",nested:!0,matcher:"Bash",entry:e=>({type:"command",command:e,timeout:10})};function cy(){return B(pe(),".grok","hooks","tokmizer.json")}var fy="tkr-droid-hook",ss={mark:fy,event:"PreToolUse",nested:!1,matcher:"Execute",entry:e=>({type:"command",command:e,timeout:10})},dy={...ss,nested:!0};function ns(){return B(pe(),".factory")}function Mn(){return[{file:B(ns(),"hooks.json"),spec:ss},{file:B(ns(),"hooks","hooks.json"),spec:ss},{file:B(ns(),"settings.json"),spec:dy}]}function qa(e){try{let t=JSON.parse(Gg(e,"utf8"));return D(t)?t:null}catch{return null}}function Ya(e,t){let n=t?e?.hooks:e;return D(n)&&Array.isArray(n.PreToolUse)&&n.PreToolUse.length>0}function Xa(){let[e,t,n]=Mn(),r=rs(e.file)?e:rs(t.file)?t:null;return r&&Ya(qa(r.file),!1)?r:Ya(qa(n.file),!0)?n:r??e}var py={id:"droid",label:"Factory Droid",setup:"tkr setup-droid",bin:"tkr-droid-hook",restart:"Restart Droid, then check it with /hooks.",files:()=>[Xa().file],installed:()=>Mn().some(e=>es(e.file,e.spec)),ensure:async e=>{let t=Xa(),n=await ts(t.file,t.spec,e);return n==="error"||await Promise.all(Mn().filter(r=>r.file!==t.file).map(r=>Ln(r.file,r.spec))),n},remove:async()=>{let e=await Promise.all(Mn().map(t=>Ln(t.file,t.spec)));return e.includes("error")?"error":e.includes("removed")?"removed":"absent"}},el=[Qe({id:"copilot",label:"GitHub Copilot",setup:"tkr setup-copilot",bin:"tkr-copilot-hook",restart:"Restart VS Code or Copilot CLI so they load the new hook.",files:()=>[Yg()]},qg),py,Qe({id:"trae",label:"Trae",setup:"tkr setup-trae",bin:"tkr-trae-hook",restart:"Restart Trae so it loads the new hook.",files:Qg},Xg),Qe({id:"qwen-code",label:"Qwen Code",setup:"tkr setup-qwen",bin:"tkr-qwen-hook",restart:"Restart Qwen Code, then check it with /hooks.",files:()=>[ty()]},ey),Qe({id:"crush",label:"Crush",setup:"tkr setup-crush",bin:"tkr-crush-hook",restart:"Restart Crush so it loads the new hook.",files:()=>[ry()]},ny),Qe({id:"junie",label:"Junie CLI",setup:"tkr setup-junie",bin:"tkr-junie-hook",restart:"Restart Junie CLI so it loads the new hook.",files:()=>[oy()]},sy),Qe({id:"zcode",label:"ZCode",setup:"tkr setup-zcode",bin:"tkr-zcode-hook",restart:"Restart ZCode so it loads the new hook.",files:()=>[ly()]},ay),Qe({id:"grok",label:"Grok Build",setup:"tkr setup-grok",bin:"tkr-grok-hook",restart:"Restart Grok Build (1.0.4 or newer) so it loads the new hook.",files:()=>[cy()]},uy)];var my=[{host:"claude-code",vars:["CLAUDECODE","CLAUDE_CODE_ENTRYPOINT","CLAUDE_CODE","CLAUDE_CODE_VERSION","ANTHROPIC_CLAUDE_CODE"]},{host:"codex",vars:["CODEX_VERSION","CODEX_CLI","OPENAI_CODEX","CODEX_THREAD_ID","CODEX_SESSION_ID"]},{host:"cursor",vars:["CURSOR_AGENT","CURSOR_VERSION","CURSOR_TRACE_ID"]},{host:"cline",vars:["CLINE_VERSION","CLINE_API_KEY"]},{host:"aider",vars:["AIDER_VERSION","AIDER_MODEL"]},{host:"qwen-code",vars:["QWEN_CODE"]},{host:"gemini-cli",vars:["GEMINI_CLI","GEMINI_CLI_VERSION","GEMINI_API_KEY"]},{host:"windsurf",vars:["WINDSURF_VERSION","WINDSURF_USER"]},{host:"copilot",vars:["GITHUB_COPILOT_VERSION","COPILOT_INTEGRATION_ID"]},{host:"opencode",vars:[]},{host:"amp",vars:[]},{host:"vibe",vars:[]},{host:"antigravity",vars:[]},{host:"openclaw",vars:[]},{host:"pi",vars:[]},{host:"omp",vars:[]},{host:"hermes",vars:[]},{host:"crush",vars:["CRUSH"]},{host:"droid",vars:[]},{host:"trae",vars:[]},{host:"junie",vars:[]},{host:"zcode",vars:[]},{host:"grok",vars:[]},{host:"kilo",vars:[]}],WT=[...my.map(e=>e.host),"shell"];var VT={cursor:{installed:Ta,setup:"tkr setup-cursor"},"gemini-cli":{installed:Ra,setup:"tkr setup-gemini"},...Object.fromEntries(Ba.map(e=>[e.host,{installed:()=>Za(e),setup:`tkr ${e.command}`}])),...Object.fromEntries(el.map(e=>[e.id,{installed:e.installed,setup:e.setup}]))};function tl(e){return null}import{createConnection as Ry}from"node:net";import{spawn as $y}from"node:child_process";import{existsSync as ll,openSync as ls,closeSync as il,unlinkSync as cs,writeFileSync as fs,mkdirSync as ds,readFileSync as ul,appendFileSync as Cy,rmSync as Oy,statSync as cl}from"node:fs";import{dirname as Iy,join as ps}from"node:path";import{fileURLToPath as Ny}from"node:url";var hy=k.object({id:k.string().min(1).max(64),op:k.literal("filter"),cmd:k.string().min(1).max(2048),plan:k.enum(["trial","smart","pro"]),allowed:k.array(k.string().min(1).max(64)).max(512).optional(),installId:k.string().min(1).max(64).optional()}),gy=k.object({id:k.string().min(1).max(64),op:k.literal("ping")}),yy=k.object({id:k.string().min(1).max(64),op:k.literal("shutdown"),installId:k.string().min(1).max(64)}),ky=k.object({id:k.string().min(1).max(64),op:k.literal("reload"),installId:k.string().min(1).max(64).optional()}),XT=k.discriminatedUnion("op",[hy,gy,yy,ky]),QT=k.object({id:k.string(),ok:k.literal(!0),data:k.unknown()}),eA=k.object({id:k.string(),ok:k.literal(!1),err:k.string(),retryAfterMs:k.number().int().nonnegative().optional()}),nl=k.object({filter:Te.nullable(),cacheHit:k.boolean().optional()}),Fn=`
|
|
104
|
+
`,tA=64*1024;function os(e){return JSON.stringify(e)+Fn}function*rl(e){let t=0;for(;;){let n=e.indexOf(Fn,t);if(n<0)return;yield e.slice(t,n),t=n+1}}function Kt(){return`${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}import by from"node:os";import{join as qt}from"node:path";import{existsSync as _y,statSync as xy,lstatSync as sl,unlinkSync as wy,mkdirSync as Sy,chmodSync as vy}from"node:fs";import{createHash as Ey}from"node:crypto";var is=100;function Ty(e){let t=Ey("sha256").update(R()).digest("hex").slice(0,8),n=qt(by.tmpdir(),`tkr-${e}-${t}`),r=qt(n,"d.sock");if(Buffer.byteLength(r)>is)throw new Error("Temporary directory path is too long for IPC");return ol(n,e),r}function Ay(e,t){try{let n=sl(e);return n.isDirectory()&&n.uid===t&&(n.mode&63)===0}catch{return!1}}function ol(e,t){Sy(e,{recursive:!0,mode:448});let n=sl(e);if(!n.isDirectory()||n.uid!==t)throw new Error("Unsafe IPC directory");vy(e,448)}function Yt(){if(process.platform==="win32")return{path:`\\\\.\\pipe\\tokmizer-${process.env.USERNAME??"tokmizer"}`,isPipe:!0};let e=typeof process.getuid=="function"?process.getuid():0,t=process.env.XDG_RUNTIME_DIR;if(t&&Ay(t,e)){let s=qt(t,`tokmizer-${e}.sock`);if(Buffer.byteLength(s)<=is)return{path:s,isPipe:!1}}let n=qt(R(),"run"),r=qt(n,"daemon.sock");return Buffer.byteLength(r)>is?{path:Ty(e),isPipe:!1}:(ol(n,e),{path:r,isPipe:!1})}async function as(){let{path:e,isPipe:t}=Yt();if(t||!_y(e))return;try{if(!xy(e).isSocket())return}catch{return}let n=await import("node:net");if(!await new Promise(s=>{let o=n.createConnection(e),i=a=>{o.removeAllListeners();try{o.destroy()}catch{}s(a)};o.once("connect",()=>i(!0)),o.once("error",a=>{let l=a.code;i(l!=="ECONNREFUSED"&&l!=="ENOENT")}),setTimeout(()=>i(!0),250)}))try{wy(e)}catch{}}var lA=5*6e4;var fl=500,Py=3e3,al=1,Dy=6e4,Ly=256*1024;function ms(){return ps(R(),"daemon.spawn.fail")}function hs(){return ps(R(),"daemon.log")}function My(){try{let e=Number(ul(ms(),"utf8"));return Number.isFinite(e)&&Date.now()-e<Dy}catch{return!1}}function Fy(e){try{ds(R(),{recursive:!0,mode:448});let t=hs();try{cl(t).size>Ly&&cs(t)}catch{}Cy(t,`${new Date().toISOString()} ${e}
|
|
105
|
+
`,{mode:384})}catch{}}function jy(e){try{ds(R(),{recursive:!0,mode:448}),fs(ms(),String(Date.now()),{mode:384})}catch{}Fy(`spawn failed: ${e.message}`)}function Hy(){try{Oy(ms(),{force:!0})}catch{}}async function jn(e,t){return new Promise((n,r)=>{let s=Ry(e),o=a=>{if(s.removeAllListeners("connect"),s.removeAllListeners("error"),clearTimeout(i),a){try{s.destroy()}catch{}r(a)}else n(s)},i=setTimeout(()=>o(new Error("connect timeout")),t);s.once("connect",()=>o(null)),s.once("error",a=>o(a))})}function zy(){return process.env.TOKMIZER_DAEMON_BIN?process.env.TOKMIZER_DAEMON_BIN:Ny(new URL("../bin/tkr-daemon.js",import.meta.url))}async function us(e,t=3e3){let n=Math.ceil(t/75),r=process.platform==="win32";for(let s=0;s<n;s++){if(r)try{return(await jn(e,75)).destroy(),!0}catch{}else if(ll(e))return!0;await new Promise(o=>setTimeout(o,75))}return!1}function Uy(e,t=Date.now()){try{if(t-cl(e).mtimeMs>1e4)return!0;let r=Number(ul(e,"utf8").trim());if(!Number.isInteger(r)||r<=0)return!1;try{return process.kill(r,0),!1}catch(s){return s.code==="ESRCH"}}catch{return!1}}async function By(e){let t=zy();if(!Ae()&&!ll(t))throw new Error(`tkr-daemon binary not found at ${t}`);let{path:n}=Yt(),r=process.platform==="win32"?R():Iy(n);try{ds(r,{recursive:!0,mode:448})}catch{}let s=ps(r,"daemon.spawn.lock"),o=null;try{o=ls(s,"wx"),fs(o,String(process.pid))}catch(i){if(i.code==="EEXIST"){if(!Uy(s)&&await us(n,5e3))return;try{cs(s)}catch{}try{o=ls(s,"wx"),fs(o,String(process.pid))}catch(l){if(l.code==="EEXIST"){await us(n,5e3);return}throw l}}else throw i}try{let i=null;try{i=ls(hs(),"a",384)}catch{}let[a,...l]=Mr(t);if($y(a,l,{detached:!0,stdio:["ignore","ignore",i??"ignore"],env:{...process.env,TOKMIZER_DAEMON_INSTALL_ID:e}}).unref(),i!==null)try{il(i)}catch{}if(!await us(n,3e3))throw new Error("tkr-daemon failed to bind socket within 3s")}finally{if(o!==null){try{il(o)}catch{}try{cs(s)}catch{}}}}async function Zy(e={}){let{path:t}=e.socketPath?{path:e.socketPath}:Yt(),n=await Ir();try{let r=await jn(t,fl);r.write(os({id:Kt(),op:"shutdown",installId:n})),await new Promise(s=>setTimeout(s,150));try{r.destroy()}catch{}return!0}catch{return!1}}async function Jy(e,t){let n=Date.now()+t;for(;Date.now()<n;){try{(await jn(e,250)).destroy()}catch{return!0}await new Promise(r=>setTimeout(r,100))}return!1}async function gs(e={}){let{path:t}=e.socketPath?{path:e.socketPath}:Yt(),n=await Ir(),r=null,s=0,o=!1;for(;s<=al;)try{r=await jn(t,fl),Hy();break}catch{if(s+=1,s>al)throw new Error(`tkr-daemon unreachable at ${t}`);if(My())throw new Error(`tkr-daemon spawn on cooldown (see ${hs()})`);await as();try{await By(n),o=!0}catch(c){throw jy(c),c}}if(!r)throw new Error("tkr-daemon: socket setup failed");let i=new Map,a="";r.setEncoding("utf8"),r.on("data",c=>{a+=c;let f=-1;for(let p=0;p<a.length;p++)a[p]===Fn&&(f=p);if(f<0)return;let d=[];for(let p of rl(a.slice(0,f+1)))d.push(p);a=a.slice(f+1);for(let p of d)if(p)try{let g=JSON.parse(p),y=i.get(g.id);if(!y)continue;clearTimeout(y.timer),i.delete(g.id),y.resolve(g)}catch{}}),r.on("close",()=>{for(let c of i.values())clearTimeout(c.timer),c.reject(new Error("daemon socket closed"));i.clear()}),r.on("error",()=>{});function l(c){return new Promise((f,d)=>{if(r.destroyed||!r.writable){d(new Error("daemon socket closed"));return}let p=setTimeout(()=>{i.delete(c.id),d(new Error(`daemon request timeout (${c.op})`))},Py);i.set(c.id,{resolve:f,reject:d,timer:p}),r.write(os(c))})}let u={filter:async(c,f,d)=>{let p=await l({id:Kt(),op:"filter",cmd:c.slice(0,2048),plan:f,...d&&d.length>0?{allowed:d.slice(0,512)}:{},installId:n});if(!p.ok)throw new Error(p.err);let g=nl.safeParse(p.data);return g.success?g.data.filter:null},ping:async()=>{let c=await l({id:Kt(),op:"ping"});if(!c.ok)throw new Error(c.err);return c.data},reload:async()=>{let c=await l({id:Kt(),op:"reload",installId:n});if(!c.ok)throw new Error(c.err);return c.data},close:()=>{try{r.destroy()}catch{}}};if(!e.skipVersionCheck&&!o){let c=!1;try{let f=await u.ping();if(f.version&&yi(zt,f.version))throw new Error(`newer daemon ${f.version} already running`);c=f.version!==zt}catch(f){throw u.close(),f}if(c){try{await Zy(e.socketPath?{socketPath:e.socketPath}:{})}catch{}u.close();let f=await Jy(t,2e3);if(await as(),!f)throw new Error("stale daemon still running after shutdown request");return gs({...e,skipVersionCheck:!0})}}return u}var _t=null,Xt=null;async function Gy(){if(_t)return _t;if(Xt)return Xt;let e=gs().then(t=>{if(Xt===e)return _t=t,t;try{t.close()}catch{}return null}).catch(()=>null);return Xt=e,e}var ys=null,ks=!1;async function Wy(){return ks||(ks=!0,ys=await xi()??vn()),ys}async function dl(e,t,n){let r=await Wy();if(!r)return null;let s=r.selectFor(e,t,n?[...n]:void 0);return!s||n&&!n.has(X(s.slug))?null:s}function Vy(e){return e?{...e,matchRegex:new RegExp(e.match_command)}:null}function pl(){Cr(async(e,t)=>{let r=t??En(void 0),s=await Gy();if(!s)return dl(e,"pro",r);try{let o=await s.filter(e,"pro",r?[...r]:void 0);return!o||r&&!r.has(X(o.slug))?null:Vy(o)}catch{return dl(e,"pro",r)}})}function ml(){if(Cr(null),_t)try{_t.close()}catch{}_t=null,Xt=null,ys=null,ks=!1}import{readFileSync as Ky}from"node:fs";import{join as qy}from"node:path";function hl(){try{return Ky(qy(R(),"yolo-mode"),"utf8")==="on"}catch{return!1}}import{appendFileSync as tk,chmodSync as nk,mkdirSync as rk,existsSync as sk,readFileSync as LA,rmSync as MA}from"node:fs";import{dirname as ok,join as ik}from"node:path";import{readFileSync as Yy,renameSync as Xy,statSync as Qy,writeFileSync as ek}from"node:fs";function gl(e,t,n){try{if(Qy(e).size<=t)return;let r=Yy(e,"utf8").split(`
|
|
106
|
+
`).filter(a=>a.trim()!==""),s=[],o=0;for(let a=r.length-1;a>=0;a-=1){let l=r[a],u=Buffer.byteLength(l)+1;if(o+u>n)break;s.push(l),o+=u}s.reverse();let i=`${e}.tmp-${process.pid}`;ek(i,s.length?`${s.join(`
|
|
107
107
|
`)}
|
|
108
108
|
`:"",{mode:384}),Xy(i,e)}catch{}}var ak="usage.jsonl";var yl=2*1024*1024;function lk(){return ik(R(),ak)}function ne(e,t,n=lk()){try{let r=ok(n);sk(r)||rk(r,{recursive:!0,mode:448});let s=e.replace(/[^A-Za-z0-9._-]/g,"").slice(0,64)||"unknown";tk(n,`{"t":${Math.floor(Date.now()/1e3)},"s":"${s}","o":${t?1:0}}
|
|
109
|
-
`,{mode:384}),nk(n,384),
|
|
109
|
+
`,{mode:384}),nk(n,384),gl(n,yl,yl/2)}catch{}}pn();import{spawnSync as Ll}from"node:child_process";import{existsSync as Oe,readFileSync as en,readdirSync as Un,statSync as Uk}from"node:fs";import{homedir as et,userInfo as Bk}from"node:os";import{fileURLToPath as Zk}from"node:url";import{dirname as Ml,join as C,resolve as Jk,win32 as Gk}from"node:path";import{execFileSync as $k}from"node:child_process";import{mkdirSync as Ck,readFileSync as wl,renameSync as Ok,statSync as Ik,writeFileSync as Nk}from"node:fs";import{join as Sl}from"node:path";import{closeSync as uk,openSync as ck,readSync as fk,readdirSync as dk,readFileSync as pk,statSync as bl}from"node:fs";import{homedir as mk}from"node:os";import{isAbsolute as hk,join as Hn,resolve as gk}from"node:path";var yk=/^[A-Za-z0-9._+@%:,/-]+$/,kk=new Set(["7f454c46","feedface","feedfacf","cefaedfe","cffaedfe","cafebabe","bebafeca"]),bk=32,_k=4*1024*1024;function _s(e){let t;try{t=ck(e,"r");let n=Buffer.alloc(4),r=fk(t,n,0,4,0);return r>=2&&n[0]===35&&n[1]===33?"#!":r===4?n.toString("hex"):null}catch{return null}finally{t!==void 0&&uk(t)}}function Qt(e,t=process.platform){try{let n=bl(e);if(!n.isFile())return!1;if(t==="win32")return!0;if((n.mode&73)===0)return!1;let r=_s(e);return r==="#!"||r!==null&&kk.has(r)}catch{return!1}}function xk(e){if(/\.[A-Za-z0-9]+$/.test(e))return[e];let t=(process.env.PATHEXT??".COM;.EXE;.BAT;.CMD").split(";").filter(Boolean);return[e,...t.map(n=>e+n.toLowerCase())]}function xt(e,t,n,r=process.platform){if(!yk.test(e))return!1;let s=r==="win32";if(e.includes("/"))return Qt(gk(t??process.cwd(),e),r);if(!n)return!1;let o=s?xk(e):[e];for(let i of n.split(s?";":":"))if(!(!i||!hk(i))){for(let a of o)if(Qt(Hn(i,a),r))return!0}return!1}var wk=/^eval \$'([^\s'()=]+) \(\) /,Sk=/^([^\s'"()=]+) \(\) \{$/,vk=/^alias -- ([^\s=]+)=(.*)$/,Ek=/^# (?:Shell Options|Aliases|Shopt|Check for |Shadow )/,Tk=/^export PATH=(.*)$/,Ak=/^(?:--colou?r(?:=\S+)?|-G)$/;function kl(e){return e.length>=2&&e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1).replace(/'\\''/g,"'"):e.length>=2&&e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function Rk(e,t){let n="";for(let r of e.split(`
|
|
110
110
|
`)){let s=Tk.exec(r);if(s&&n!=="# Functions"){let o=kl(s[1].trim());/[$`\\]/.test(o)||t.paths.push(o);continue}if(r.startsWith("# ")&&(n!=="# Functions"||Ek.test(r))){n=r;continue}if(n==="# Functions"){let o=wk.exec(r)??Sk.exec(r);o&&t.functions.add(o[1])}else if(n==="# Aliases"){let o=vk.exec(r);o&&t.aliases.set(o[1],kl(o[2].trim()))}}}function bs(e){return e?.code==="ENOENT"}function _l(e){let t={functions:new Set,aliases:new Map,paths:[],uncertain:!1},n=Hn(e||Hn(mk(),".claude"),"shell-snapshots"),r=[];try{for(let s of dk(n)){if(!s.startsWith("snapshot-")||!s.endsWith(".sh"))continue;let o=Hn(n,s);try{let i=bl(o);i.isFile()&&r.push({path:o,mtime:i.mtimeMs,size:i.size})}catch(i){bs(i)||(t.uncertain=!0)}}}catch(s){return bs(s)||(t.uncertain=!0),t}r=r.sort((s,o)=>o.mtime-s.mtime).slice(0,bk);for(let s of r)try{if(s.size>_k)throw new Error("snapshot too large");Rk(pk(s.path,"utf8"),t)}catch(o){bs(o)||(t.uncertain=!0)}return t}function xl(e,t){if(t.uncertain||t.functions.has(e))return!0;let n=t.aliases.get(e);if(n===void 0)return!1;let r=n.trim().split(/\s+/);return r[0]!==e||!r.slice(1).every(s=>Ak.test(s))}var Pk="exec-probe.json",Dk=6e4;function Lk(){return Sl(R(),Pk)}function Mk(e){try{let t=ee(wl(e,"utf8"));if(t==null||typeof t!="object")return null;let n=t;return typeof n.key!="string"||typeof n.ok!="boolean"?null:{key:n.key,ok:n.ok,at:typeof n.at=="number"?n.at:0,skipped:typeof n.skipped=="number"&&n.skipped>=0?n.skipped:0}}catch{return null}}function Fk(e,t){try{Ck(Sl(e,".."),{recursive:!0,mode:448});let n=`${e}.${process.pid}.tmp`;Nk(n,JSON.stringify(t),{mode:384}),Ok(n,e)}catch{}}function jk(e){try{return $k(e,["--native-check"],{encoding:"utf8",timeout:2e3,maxBuffer:1024,stdio:["ignore","pipe","ignore"],windowsHide:!0}).startsWith("tokmizer-native ")}catch{return!1}}function Hk(e,t){try{let r=wl(e,"utf8").split(`
|
|
111
|
-
`,1)[0].slice(2).trim().split(/\s+/),s=r[0]??"";return s==="/usr/bin/env"?xt(r[1]??"",void 0,t):Qt(s)}catch{return!1}}function zk(e,t,n){try{let r=Ik(e);return[e,r.size,r.mtimeMs,r.ino,r.mode,t?n??"":""].join("|")}catch{return`${e}|missing`}}function xs(e,t=process.platform,n=process.env.PATH,r=Lk(),s=Date.now()){let o=t!=="win32"&&_s(e)==="#!",i=zk(e,o,n),a=Mk(r);if(a?.key===i&&(a.ok||s-a.at<Dk))return a.ok;let l=Qt(e,t)&&(o?Hk(e,n):jk(e));return Fk(r,{key:i,ok:l,at:s,skipped:(a?.skipped??0)+(l?0:1)}),l}var Wk=new Set(["tkr","tkr-exec","token","claude","cd","export","source","echo","mkdir","rm","mv","cp","chmod","ln","true","false",":","test","[","exit","return","nohup","sudo","doas","env"]),Vk=new Set(["for","while","until","if","then","else","elif","fi","do","done","case","esac","select","function","time","coproc","in","!","[[","]]","{","}",".","declare","typeset","local","readonly","unset","set","shift","trap","wait","read","eval","exec","break","continue","pushd","popd","dirs","alias","unalias","hash","ulimit","umask","getopts","let","shopt","builtin","command","compgen","complete","disown","suspend","jobs","fg","bg","kill","history","fc","bind","enable","caller","type","printf","pwd","times","logout","mapfile","readarray","help","which","print","whence","where","autoload","zmodload","setopt","unsetopt","emulate","noglob","rehash","functions","bindkey","zle","vared","sched","limit","unlimit","zstyle","zparseopts","ttyctl"]),vl=new Set(["sh","bash","zsh","dash","ksh","fish","python","python3","python2","node","ruby","perl","php","awk","sed","deno","bun"]),El="(?:dev|start|serve|watch|preview)",Kk=new RegExp(`^(?:\\S*/)?(?:bun\\s+(?:install|i|add|remove|rm|update|outdated|audit|test|build|pm|x)(?:\\s|$)|bun\\s+run\\s+(?!${El}(?:\\s|$))[A-Za-z0-9:_-]+(?:\\s|$)|deno\\s+(?:test|lint|fmt|check|compile|install|info|doc|bench|outdated)(?:\\s|$)|deno\\s+task\\s+(?!${El}(?:\\s|$))[A-Za-z0-9:_-]+(?:\\s|$)|php\\s+-l(?:\\s|$)|php\\s+(?:\\S*/)?(?:phpunit|pest|paratest|phpstan|pint|ecs|php-cs-fixer|psalm|rector|run-tests\\.php)(?:\\s|$)|php\\s+artisan\\s+(?!(?:serve|tinker|queue:work|queue:listen|horizon|octane:start|reverb:start|schedule:work|pail|dev)(?:\\s|$))\\S)`),qk=/(?:^|\s)--watch(?:\s|=|$)/;function Yk(e){return Kk.test(e)&&!qk.test(e)}var Xk=/^((?:\S*\/)?(sh|bash|zsh|dash|ksh|fish)\s+(-[elux]*c[elux]*)\s+)(['"])/,Qk=/[()$]|(?:^|[;&|\n]\s*)(?:and|or|not|begin|end|if|else|switch|case|while|for|function|return)(?:\s|;|$)/,Fl=3;function jl(e){let t=Xk.exec(e);if(!t)return null;let n=t[2]==="fish";if(n&&t[3]!=="-c")return null;let r=t[4],s=t[1].length+1,o=e.indexOf(r,s);if(o<=s)return null;let i=e.slice(o+1);if(i&&!/^\s/.test(i))return null;let a=e.slice(s,o);return r==='"'&&/[$`\\!]/.test(a)||n&&Qk.test(a)?null:{script:a,start:s,end:o,quote:r}}var eb=new Set(["cd","export","set","unset","source",".","true",":","pushd","popd"]);function tb(e){return Es(e).filter(n=>{if(n.kind!=="cmd"||n.unsafe)return!1;let r=zl(n.text);return r!==""&&!eb.has(r)&&!vs.test(r)}).length>1}function nb(e,t,n,r,s){if(n>=Fl)return null;let o=jl(e);if(!o)return null;let{script:i,start:a,end:l,quote:
|
|
112
|
-
`||a==="|"){i(a,1);continue}}r+=a,s+=1}return o(),n}function zl(e){return e.trim().split(/\s+/)[0]??""}function oe(e,t=process.platform){try{let n=Ml(Zk(import.meta.url)),r=t==="win32",s=e&&e!=="claude-code"&&e!=="codex"&&!r?`TOKMIZER_HOST=${e} `:"";if(r&&(!e||e==="claude-code")){let l=C(n,"..","bin","tkr-exec.exe");if(Oe(l))return xs(l,t)?`'${l.replace(/\\/g,"/").replace(/'/g,"'\\''")}'`:null}let o=C(n,"..","bin","tkr-exec"),i=!r&&Oe(o);if(i&&!xs(o,t))return null;if(!r&&process.env.TOKMIZER_STABLE_RUN!=="0"){let l=fa(C(n,"..","bin","tkr-exec.js"));if(l&&(i||Oe(C(n,"..","bin","tkr-exec.js"))))return`${s}'${l.replace(/'/g,"'\\''")}'`}if(i)return`${s}'${o.replace(/'/g,"'\\''")}'`;if(Ae()){let l=r?process.execPath.replace(/\\/g,"/"):process.execPath;return`${s}'${l.replace(/'/g,"'\\''")}' exec`}let a=C(n,"..","bin","tkr-exec.js");return Oe(a)?`${s}node '${a.replace(/'/g,"'\\''")}'`:null}catch{return null}}function pb(e,t="tkr-exec",n=()=>!0,r){return Ul(e,t,0,n,r)}var mb=new Set(["{","for","while","until","if","case","select"]),
|
|
111
|
+
`,1)[0].slice(2).trim().split(/\s+/),s=r[0]??"";return s==="/usr/bin/env"?xt(r[1]??"",void 0,t):Qt(s)}catch{return!1}}function zk(e,t,n){try{let r=Ik(e);return[e,r.size,r.mtimeMs,r.ino,r.mode,t?n??"":""].join("|")}catch{return`${e}|missing`}}function xs(e,t=process.platform,n=process.env.PATH,r=Lk(),s=Date.now()){let o=t!=="win32"&&_s(e)==="#!",i=zk(e,o,n),a=Mk(r);if(a?.key===i&&(a.ok||s-a.at<Dk))return a.ok;let l=Qt(e,t)&&(o?Hk(e,n):jk(e));return Fk(r,{key:i,ok:l,at:s,skipped:(a?.skipped??0)+(l?0:1)}),l}var Wk=new Set(["tkr","tkr-exec","token","claude","cd","export","source","echo","mkdir","rm","mv","cp","chmod","ln","true","false",":","test","[","exit","return","nohup","sudo","doas","env"]),Vk=new Set(["for","while","until","if","then","else","elif","fi","do","done","case","esac","select","function","time","coproc","in","!","[[","]]","{","}",".","declare","typeset","local","readonly","unset","set","shift","trap","wait","read","eval","exec","break","continue","pushd","popd","dirs","alias","unalias","hash","ulimit","umask","getopts","let","shopt","builtin","command","compgen","complete","disown","suspend","jobs","fg","bg","kill","history","fc","bind","enable","caller","type","printf","pwd","times","logout","mapfile","readarray","help","which","print","whence","where","autoload","zmodload","setopt","unsetopt","emulate","noglob","rehash","functions","bindkey","zle","vared","sched","limit","unlimit","zstyle","zparseopts","ttyctl"]),vl=new Set(["sh","bash","zsh","dash","ksh","fish","python","python3","python2","node","ruby","perl","php","awk","sed","deno","bun"]),El="(?:dev|start|serve|watch|preview)",Kk=new RegExp(`^(?:\\S*/)?(?:bun\\s+(?:install|i|add|remove|rm|update|outdated|audit|test|build|pm|x)(?:\\s|$)|bun\\s+run\\s+(?!${El}(?:\\s|$))[A-Za-z0-9:_-]+(?:\\s|$)|deno\\s+(?:test|lint|fmt|check|compile|install|info|doc|bench|outdated)(?:\\s|$)|deno\\s+task\\s+(?!${El}(?:\\s|$))[A-Za-z0-9:_-]+(?:\\s|$)|php\\s+-l(?:\\s|$)|php\\s+(?:\\S*/)?(?:phpunit|pest|paratest|phpstan|pint|ecs|php-cs-fixer|psalm|rector|run-tests\\.php)(?:\\s|$)|php\\s+artisan\\s+(?!(?:serve|tinker|queue:work|queue:listen|horizon|octane:start|reverb:start|schedule:work|pail|dev)(?:\\s|$))\\S)`),qk=/(?:^|\s)--watch(?:\s|=|$)/;function Yk(e){return Kk.test(e)&&!qk.test(e)}var Xk=/^((?:\S*\/)?(sh|bash|zsh|dash|ksh|fish)\s+(-[elux]*c[elux]*)\s+)(['"])/,Qk=/[()$]|(?:^|[;&|\n]\s*)(?:and|or|not|begin|end|if|else|switch|case|while|for|function|return)(?:\s|;|$)/,Fl=3;function jl(e){let t=Xk.exec(e);if(!t)return null;let n=t[2]==="fish";if(n&&t[3]!=="-c")return null;let r=t[4],s=t[1].length+1,o=e.indexOf(r,s);if(o<=s)return null;let i=e.slice(o+1);if(i&&!/^\s/.test(i))return null;let a=e.slice(s,o);return r==='"'&&/[$`\\!]/.test(a)||n&&Qk.test(a)?null:{script:a,start:s,end:o,quote:r}}var eb=new Set(["cd","export","set","unset","source",".","true",":","pushd","popd"]);function tb(e){return Es(e).filter(n=>{if(n.kind!=="cmd"||n.unsafe)return!1;let r=zl(n.text);return r!==""&&!eb.has(r)&&!vs.test(r)}).length>1}function nb(e,t,n,r,s){if(n>=Fl)return null;let o=jl(e);if(!o)return null;let{script:i,start:a,end:l,quote:u}=o,c=[],f=Ul(i,t,n+1,r,y=>c.push(y));if(f===i||u==='"'&&/["$`]/.test(f))return null;let d=u==="'"?f.replace(/'/g,"'\\''"):f,p=`${e.slice(0,a)}${d}${e.slice(l)}`,g=tb(i);if(s)for(let y of g?[e,...c]:c)s(y);return g?`${t} ${p}`:p}var Tl=/(?:^|\s)(?:--follow|-[0-9a-zA-Z]*f[a-zA-Z]*)(?:\s|=|$)/,rb=/(?:^|\s)(?:--follow|-[0-9a-zA-Z]*[fF][a-zA-Z]*)(?:\s|=|$)/,sb=new Set(["docker","podman","kubectl","nerdctl","docker-compose","stern","flyctl"]),Al=new Set(["npm","pnpm","yarn","bun"]),Rl=/^(?:dev|start|serve|preview|watch)(?::\S*)?$/,ob=new Set(["--filter","-F","--dir","-C","--prefix","--workspace","-w","--cwd"]),$l=new Set(["npx","pnpx","bunx"]),ib=new Set(["nodemon","top","htop","btop","watch"]),ab=new Set(["tsc","vitest","jest","webpack","rollup","esbuild","tsup","babel","sass","tailwindcss","mocha","swc","parcel","nest"]),lb=/(?:^|\s)--watch(?:All)?(?:\s|=(?!false(?:\s|$))|$)/,Cl=/(?:^|\s)-w(?:\s|$)/;function ub(e){let t=e.map(i=>i.replace(/['"]/g,""));for(;t.length>1&&(t[0]==="env"||/^[A-Za-z_][A-Za-z0-9_]*=/.test(t[0]));)t=t.slice(1);let n=wt(t[0]??"");if($l.has(n)||Al.has(n)&&(t[1]==="exec"||t[1]==="dlx"))t=t.slice($l.has(n)?1:2).filter((i,a,l)=>!(i.startsWith("-")&&l.slice(0,a).every(u=>u.startsWith("-")))),n=wt(t[0]??"");else if(Al.has(n)){let i=t.slice(1).filter((l,u,c)=>!l.startsWith("-")&&!ob.has(c[u-1]??""));i[0]==="workspace"&&i.splice(0,2);let a=i[0]==="run"||i[0]==="run-script"?i[1]:i[0];return a!==void 0&&Rl.test(a)}let r=t.slice(1),s=r.join(" "),o=r.find(i=>!i.startsWith("-"));if(ib.has(n)||lb.test(s)||ab.has(n)&&Cl.test(s))return!0;switch(n){case"next":return o==="dev"||o==="start";case"vite":return!r.includes("build")&&!r.includes("optimize");case"vitest":return o==="watch"||o==="dev";case"cargo":case"dotnet":return o==="watch";case"turbo":{let i=o==="run"?r.filter(a=>!a.startsWith("-"))[1]:o;return i!==void 0&&Rl.test(i)}case"nx":{let i=o==="run"?r.filter(a=>!a.startsWith("-"))[1]?.split(":")[1]:o;return i!==void 0&&/^(?:serve|dev|start|watch)$/.test(i)}case"ping":return!r.some(i=>/^-[a-zA-Z]*c/.test(i));case"docker":case"podman":case"nerdctl":case"docker-compose":{let i=n==="docker-compose"?r:o==="compose"?r.slice(r.indexOf("compose")+1):null;return i?i.includes("up")&&!i.some(a=>a==="--detach"||/^-[a-zA-Z]*d[a-zA-Z]*$/.test(a)):o==="stats"&&!r.includes("--no-stream")||o==="events"}case"kubectl":return o==="port-forward"||(o==="get"||o==="rollout")&&Cl.test(s)||/(?:^|\s)--watch-only(?:\s|=|$)/.test(s);default:return!1}}function cb(e,t){let n=wt(t);return n==="tail"?rb.test(e):n==="journalctl"?Tl.test(e):n==="stern"||sb.has(n)&&/\blogs?\b/.test(e)&&Tl.test(e)?!0:ub(e.split(/\s+/))}var vs=/^[A-Za-z_][A-Za-z0-9_]*\+?=/,fb=/^[A-Za-z_][A-Za-z0-9_-]*\s*\(\s*\)/,db=/(?:^|[;&|\n({])\s*(?:[A-Za-z_][A-Za-z0-9_-]*\s*\(\s*\)|function\s+[A-Za-z_])/;function wt(e){let t=e.lastIndexOf("/");return t===-1?e:e.slice(t+1)}function Hl(e){let t=new Array(e.length).fill(!1),n=[],r=0;for(;r<e.length;){let s=e[r],o=e[r+1],i=n[n.length-1];if(i==="'"){s==="'"&&n.pop(),r+=1;continue}if(s==="\\"){if(o===void 0)return null;r+=2;continue}if(i==="$'"){s==="'"&&n.pop(),r+=1;continue}if(s==="$"&&(o==="("||o==="{")){n.push(o==="("?")":"}"),r+=2;continue}if(s==="`"){i==="`"?n.pop():n.push("`"),r+=1;continue}if(i==='"'){s==='"'&&n.pop(),r+=1;continue}if(s==="$"&&o==="'"){n.push("$'"),r+=2;continue}if(s==="'"||s==='"'){n.push(s),r+=1;continue}if(s==="("||s==="{"&&i==="}"){n.push(s==="("?")":"}"),r+=1;continue}if(s===i){n.pop(),r+=1;continue}if(s===")"&&i===void 0)return null;t[r]=i===void 0,r+=1}return n.length===0?t:null}function ws(e){let t=Hl(e);if(!t)return!0;for(let n=0;n<e.length;n++)if(t[n]&&e[n]===">")return!0;return!1}function Es(e){let t=Hl(e);if(!t)return[{kind:"cmd",text:e,unsafe:!0}];let n=[],r="",s=0,o=()=>{r.length>0&&(n.push({kind:"cmd",text:r}),r="")},i=(a,l)=>{o(),n.push({kind:"sep",text:a}),s+=l};for(;s<e.length;){let a=e[s],l=e[s+1];if(t[s]){if(a===">"&&l==="|"){r+=">|",s+=2;continue}if(a==="&"&&l==="&"){i("&&",2);continue}if(a==="&"&&l!==">"){let u=r.trimEnd(),c=u[u.length-1];if(c!==">"&&c!=="<"&&c!=="&"){i("&",1);continue}}if(a==="|"&&l==="|"){i("||",2);continue}if(a==="|"&&l==="&"){i("|&",2);continue}if(a===";"&&l===";"){let u=e[s+2]==="&";i(u?";;&":";;",u?3:2);continue}if(a===";"||a===`
|
|
112
|
+
`||a==="|"){i(a,1);continue}}r+=a,s+=1}return o(),n}function zl(e){return e.trim().split(/\s+/)[0]??""}function oe(e,t=process.platform){try{let n=Ml(Zk(import.meta.url)),r=t==="win32",s=e&&e!=="claude-code"&&e!=="codex"&&!r?`TOKMIZER_HOST=${e} `:"";if(r&&(!e||e==="claude-code")){let l=C(n,"..","bin","tkr-exec.exe");if(Oe(l))return xs(l,t)?`'${l.replace(/\\/g,"/").replace(/'/g,"'\\''")}'`:null}let o=C(n,"..","bin","tkr-exec"),i=!r&&Oe(o);if(i&&!xs(o,t))return null;if(!r&&process.env.TOKMIZER_STABLE_RUN!=="0"){let l=fa(C(n,"..","bin","tkr-exec.js"));if(l&&(i||Oe(C(n,"..","bin","tkr-exec.js"))))return`${s}'${l.replace(/'/g,"'\\''")}'`}if(i)return`${s}'${o.replace(/'/g,"'\\''")}'`;if(Ae()){let l=r?process.execPath.replace(/\\/g,"/"):process.execPath;return`${s}'${l.replace(/'/g,"'\\''")}' exec`}let a=C(n,"..","bin","tkr-exec.js");return Oe(a)?`${s}node '${a.replace(/'/g,"'\\''")}'`:null}catch{return null}}function pb(e,t="tkr-exec",n=()=>!0,r){return Ul(e,t,0,n,r)}var mb=new Set(["{","for","while","until","if","case","select"]),hb=new Set(["}","done","fi","esac"]),gb=new Set(["then","do","else","elif","!","time","{","if","while","until"]);function yb(e,t){let n=e[t+1];return ws(e[t].text)||n?.kind==="sep"&&(n.text==="|"||n.text==="|&")}function kb(e){let t=new Set,n=[];for(let r=0;r<e.length;r++){let s=e[r];if(!(s.kind!=="cmd"||s.unsafe))for(let o of s.text.trim().split(/\s+/)){if(hb.has(o)){let i=n.pop();if(i!==void 0&&yb(e,r))for(let a=i;a<=r;a++)t.add(a);continue}if(mb.has(o)&&n.push(r),!gb.has(o))break}}return t}function Ul(e,t,n,r,s){if(e.includes("<<")||db.test(e))return e;let o=Es(e),i=kb(o),a=[];for(let l=0;l<o.length;l++){let u=o[l];if(u.kind==="sep"||u.unsafe||i.has(l)){a.push(u.text);continue}let c=u.text.trim();if(!c){a.push(u.text);continue}let f=zl(c),d=o[l+1],p=d?.kind==="sep"&&(d.text==="|"||d.text==="|&"),g=d?.kind==="sep"&&d.text==="&",y=!p&&!g&&!ws(u.text)&&!u.text.includes("<(")&&!u.text.includes(">(")?nb(c,t,n,r,s):null;if(y!==null){a.push(`${u.text.match(/^\s*/)?.[0]??""}${y}${u.text.slice(u.text.trimEnd().length)}`);continue}if(c===t||c.startsWith(t)&&/^\s/.test(c.slice(t.length))||Wk.has(f)||Vk.has(f)||(vl.has(f)||vl.has(wt(f)))&&!Yk(c)||vs.test(f)||f.startsWith("(")||f.startsWith("#")||f.startsWith("<")||f.startsWith(">")||fb.test(c)||cb(c,f)||f.endsWith(")")||p||g||ws(u.text)||u.text.includes("<(")||u.text.includes(">(")||f==="node"&&c.includes("tkr-exec.js")||!r(f,c)){a.push(u.text);continue}let m=u.text.match(/^\s*/)?.[0]??"",b=u.text.slice(u.text.trimEnd().length);s?.(c),a.push(`${m}${t} ${c}${b}`)}return a.join("")}var bb=new Set(["command","workdir","timeout_ms","yield_time_ms","max_output_tokens","shell","login","tty","description"]),_b=new Set(["cd","cat","head","tail","ls","tree","find","grep","rg","wc","nl","sort","cut","diff","stat","file","du","df","ps","jq","yq","pwd","which"]),xb=new Set(["log","diff","show","status","blame","ls-files","rev-parse","describe","shortlog"]),wb={find:/^-(?:delete|exec|execdir|ok|okdir|fprint|fls)/,sort:/^(?:-[^-]*o|--output|--compress-program)/,rg:/^(?:--pre|--hostname-bin|-[^-]*z|--search-zip)/,yq:/^(?:-[^-]*[is]|--inplace|--split-exp)/,file:/^(?:-C|--compile)/,tree:/^(?:-o|--output|-R$|-H$)/,git:/^(?:--output|--ext-diff|--textconv|-c$|--exec-path|--git-dir|--work-tree)/,eslint:/^--fix/},zn=["test","run test","run build","run lint","run typecheck"],Sb={npm:new Set(zn),pnpm:new Set([...zn,"build","lint","typecheck"]),yarn:new Set([...zn,"build","lint","typecheck"]),bun:new Set(zn),cargo:new Set(["test","build","check","clippy"]),go:new Set(["test","build","vet"]),mvn:new Set(["test","compile","verify"]),gradle:new Set(["test","build","check"]),dotnet:new Set(["test","build"])},vb=new Set(["pytest","tsc","vitest","jest","eslint","mypy"]);function Bl(e,t,n=0){if(/\$|`|<\(|>\(|\\\r?\n/.test(e)||/>/.test(e.replace(/2>&1|[12]?>\s*\/dev\/null/g,"")))return!1;for(let r of Es(e)){if(r.kind==="sep")continue;if(r.unsafe)return!1;let s=n<Fl?jl(r.text.trim()):null;if(s){if(!Bl(s.script,t,n+1))return!1;continue}let o=r.text.trim().split(/\s+/).filter(Boolean).map(u=>u.replace(/['"\\]/g,""));if(o.length===0)continue;if(o.some(u=>vs.test(u)))return!1;let i=wt(o[0]);if(i!==o[0])return!1;let a=wb[i];if(a&&o.slice(1).some(u=>a.test(u)))return!1;if((i==="git"?xb.has(o[1]??""):_b.has(i))||t&&vb.has(i))continue;let l=t?Sb[i]:void 0;if(!(l&&(l.has(o[1]??"")||o[1]==="run"&&l.has(`run ${o[2]??""}`))))return!1}return!0}function Zl(e,t,n=oe(t),r=ne,s=Bn(),o=process.env.PATH,i=Ts){if(!H(e)||e.tool_name!=="Bash"||t==="claude-code"&&Tb(i()))return null;let a=e.tool_input;if(!H(a)||a.run_in_background)return null;let l=a.command;if(typeof l!="string"||!l||t==="codex"&&Object.keys(a).some(y=>!bb.has(y)))return null;let u=typeof e.cwd=="string"&&e.cwd?e.cwd:a.workdir,c=typeof u=="string"&&u?u:void 0,f=typeof e.session_id=="string"&&e.session_id?e.session_id:"unknown",d=typeof e.permission_mode=="string"?e.permission_mode:void 0,p=Ql(l,{host:t,sessionId:f,cwd:c,claudeDirs:s,pathEnv:o,permissionMode:d},n,r);if(!p)return null;let g={...a,command:p.command};return JSON.stringify({hookSpecificOutput:t==="codex"?{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:g}:p.allowedBy?{hookEventName:"PreToolUse",permissionDecision:"allow",permissionDecisionReason:`Tokmizer: allowed by your rule ${p.allowedBy}`,updatedInput:g}:p.ask?{hookEventName:"PreToolUse",permissionDecision:"ask",permissionDecisionReason:"Tokmizer shortens this command's output; nothing else changes.",updatedInput:g}:{hookEventName:"PreToolUse",updatedInput:g}})}var Eb=/(?:^|\s)--(?:disallowedTools|disallowed-tools|settings|setting-sources)(?:[=\s]|$)/;function Ts(e=process.env,t=process.platform){let n=Number(e.CLAUDE_PID)||process.ppid;if(t==="win32"||!Number.isInteger(n)||n<=1)return null;try{let r=Ll("ps",["-ww","-o","args=","-p",String(n)],{encoding:"utf8",timeout:2e3});return r.status===0&&r.stdout.trim()?r.stdout:null}catch{return null}}function Tb(e){return e===null||Eb.test(e)}function Ab(e,t){if(!Oe(e))return"missing";try{let n=en(e,"utf8").replace(/^\uFEFF/,"");return n.trim()===""?{}:JSON.parse(t?Jl(n):n)}catch{return"unreadable"}}function Jl(e){let t="",n=!1;for(let r=0;r<e.length;r++){let s=e[r];if(n){t+=s,s==="\\"?t+=e[++r]??"":s==='"'&&(n=!1);continue}if(s==='"')n=!0,t+=s;else if(s==="/"&&e[r+1]==="/"){for(;r<e.length&&e[r]!==`
|
|
113
113
|
`;)r++;t+=`
|
|
114
|
-
`}else if(s==="/"&&e[r+1]==="*"){if(r=e.indexOf("*/",r+2),r===-1)return"";r+=1}else t+=s}return t.replace(/,(\s*[}\]])/g,"$1")}function St(e){let t=[],n=Jk(e);for(;;){t.push(n);let r=Ml(n);if(r===n)return t;n=r}}function Rb(){let e=process.platform==="darwin"?"/Library/Application Support/ClaudeCode":process.platform==="win32"?"C:\\Program Files\\ClaudeCode":"/etc/claude-code",t=[C(e,"managed-settings.json")];try{for(let n of Un(C(e,"managed-settings.d")))n.endsWith(".json")&&t.push(C(e,"managed-settings.d",n))}catch{return t}return t}function $b(){try{return Bk().username}catch{return""}}function Cb(e){return e.error?e.error.code==="ETIMEDOUT":e.status!==1}var Ob=5*6e4,Ol=new Map;function Gl(e,t){let n=Ol.get(e);if(n&&Date.now()-n.at<Ob)return n.value;let r=["HKLM","HKCU"].some(s=>Cb(Ll(e,["query",`${s}\\SOFTWARE\\Policies\\ClaudeCode`,"/v","Settings"],{cwd:t,stdio:"ignore",timeout:2e3,windowsHide:!0})));return Ol.set(e,{at:Date.now(),value:r}),r}function Ib(){let e=process.env.SystemRoot||"C:\\Windows";return Gl(Gk.join(e,"System32","reg.exe"),e)}var Il="/mnt/c/Windows/System32/reg.exe";function Nb(e){return!process.env.WSL_DISTRO_NAME&&!e("/proc/sys/fs/binfmt_misc/WSLInterop")?!1:e("/mnt/c/Program Files/ClaudeCode")?!0:e(Il)&&Gl(Il,"/mnt/c/Windows")}function Pb(e=process.platform,t=Oe,n=Ib,r=$b(),s=()=>Nb(t)){if(e==="darwin"){let o="/Library/Managed Preferences";return t(C(o,"com.anthropic.claudecode.plist"))||r!==""&&t(C(o,r,"com.anthropic.claudecode.plist"))}return e==="win32"?n():e==="linux"&&s()}function nn(e,t,n,r){let s=[];for(let o of e){let i=Ab(o,t);if(i!=="missing"&&(i==="unreadable"||!H(i)||!n(i,s)))return"unreadable"}return{matchers:s,complete:r}}function tn(e){return e===void 0?[]:Array.isArray(e)?e.filter(t=>typeof t=="string"):null}function Bn(){return{projectDir:process.env.CLAUDE_PROJECT_DIR,configDir:process.env.CLAUDE_CONFIG_DIR?.trim()?Rn():void 0}}function Db(e,t){let n=b=>[C(b,"settings.json"),C(b,"settings.local.json")],r=b=>n(C(b,".claude")),s=C(et(),".claude"),o=t.configDir||s;if(Pb())return"unreadable";let a=[[[...[...new Set([C(o,"remote-settings.json"),C(s,"remote-settings.json")])],...Rb()],"managed"],[[C(o,"settings.json")],"loaded"],[[C(o,"settings.local.json")],"loadedLocal"],[t.configDir?n(s):[],"extra"],[t.projectDir?r(t.projectDir):[],"project"],[St(e).flatMap(r),"extra"]],l=[],c={managed:[],loaded:[],loadedLocal:[],project:[],extra:[]},u={managed:!1,loaded:!1,loadedLocal:!1,project:!1,extra:!1},f=!1,d="managed",p=(b,w)=>{let A=b.permissions;if(d==="managed"&&(b.allowManagedPermissionRulesOnly===!0||H(A)&&A.allowManagedPermissionRulesOnly===!0)&&(f=!0),A===void 0)return!0;if(!H(A))return!1;for(let I of["deny","ask","allow"]){let L=tn(A[I]);if(!L)return!1;for(let z of L){let F=/^\s*Bash\s*(?:\(([\s\S]*)\))?\s*$/.exec(z);if(F)if(I!=="allow")w.push(tt((F[1]??"*").replace(/:\*$/," *")));else if(F[1]===void 0||F[1].trim()==="*")u[d]=!0;else{l.push(tt(F[1].replace(/:\*$/," *")));let me=t_(F[1]);me&&c[d].push({rule:z.trim(),matches:me})}}}return!0},h=[];for(let[b,w]of a){d=w;let A=nn(b,!1,p,!0);if(A==="unreadable")return"unreadable";h.push(...A.matchers)}let y=u.managed||(u.loaded||u.loadedLocal)&&!f,m=[...c.managed,...f?[]:c.loaded];return{matchers:[...h,...y?[]:l],complete:!0,allow:l,allowsEverything:y,guards:h,trustedAllow:m}}function Lb(e){let t=[C(et(),".cursor","cli-config.json"),...St(e).map(n=>C(n,".cursor","cli.json"))];return nn(t,!0,(n,r)=>{let s=n.permissions;if(s===void 0)return!0;if(!H(s))return!1;let o=tn(s.deny);if(!o)return!1;for(let i of o){let a=/^\s*Shell\s*(?:\(([\s\S]*)\))?\s*$/.exec(i);if(!a)continue;let l=a[1]??"*",c=l.indexOf(":");r.push(tt(c===-1?`${l} *`:`${l.slice(0,c)} ${l.slice(c+1)}`))}return!0},!1)}function Mb(){return process.platform==="darwin"?"/Library/Application Support/GeminiCli":process.platform==="win32"?"C:\\ProgramData\\gemini-cli":"/etc/gemini-cli"}var Wl=/^\s*(?:run_shell_command|ShellTool)\s*(?:\(([\s\S]*)\))?\s*$/;function Fb(e,t){let n=e.tools;if(n!==void 0&&!H(n))return!1;let r=[tn(e.excludeTools),tn(H(n)?n.exclude:void 0)];for(let s of r){if(!s)return!1;for(let o of s){let i=Wl.exec(o);i&&t.push(tt(i[1]===void 0?"*":`${i[1]}*`))}}return!0}function Nl(e){try{return JSON.parse(e)}catch{return null}}function jb(e){let t=e.trim();if(t.startsWith('"""')||t.startsWith("'''"))return null;if(t.startsWith("[")){if(!/\]\s*(?:#.*)?$/.test(t))return null;let n=[];for(let r of t.matchAll(/"((?:\\.|[^"\\])*)"|'([^']*)'/g)){let s=r[2]??Nl(`"${r[1]}"`);if(s===null)return null;n.push(s)}return n}if(t.startsWith('"')){let n=/^"((?:\\.|[^"\\])*)"/.exec(t);return n?Nl(`"${n[1]}"`):null}if(t.startsWith("'")){let n=/^'([^']*)'/.exec(t);return n?n[1]:null}return t.replace(/\s*#.*$/,"")}function Hb(e,t){for(let n of e.split(/^\s*\[\[\s*rule\s*\]\]\s*$/m).slice(1)){let r={};for(let l of n.split(/\r?\n/)){if(/^\s*\[/.test(l))break;let c=/^\s*([A-Za-z_]+)\s*=\s*(.*)$/.exec(l);if(!c)continue;let u=jb(c[2]);if(u===null)return!1;r[c[1]]=u}let s=r.decision;if(s!=="deny"&&s!=="ask_user"||!(r.toolName===void 0?["*"]:[r.toolName].flat()).some(l=>l==="*"||Wl.test(l)))continue;let i=r.commandPrefix===void 0?[]:[r.commandPrefix].flat(),a=[r.commandRegex,r.argsPattern].flat().filter(l=>typeof l=="string");if(i.length===0&&a.length===0){t.push(()=>!0);continue}for(let l of i)t.push(tt(`${l}*`));for(let l of a){let c;try{c=new RegExp(l)}catch{return!1}t.push(u=>c.test(JSON.stringify({command:u}))||Zn(c,u))}}return!0}function Pl(e){try{return Un(e).filter(t=>t.endsWith(".toml")).map(t=>C(e,t))}catch{return[]}}function zb(e){let t=Mb(),n=[C(t,"system-defaults.json"),C(t,"settings.json"),process.env.GEMINI_CLI_SYSTEM_SETTINGS_PATH,process.env.GEMINI_CLI_SYSTEM_DEFAULTS_PATH,C(et(),".gemini","settings.json"),...St(e).map(s=>C(s,".gemini","settings.json"))].filter(s=>!!s),r=nn(n,!0,Fb,!1);if(r==="unreadable")return r;for(let s of[...Pl(C(et(),".gemini","policies")),...Pl(C(t,"policies"))]){let o;try{o=en(s,"utf8")}catch{return"unreadable"}if(!Hb(o,r.matchers))return"unreadable"}return r}function Ss(e,t){if(e===void 0)return!0;if(typeof e=="string")return e!=="allow"&&t.push(()=>!0),!0;if(!H(e))return!1;for(let n of["bash","shell","*"]){let r=e[n];if(r!==void 0){if(typeof r=="string"){r!=="allow"&&t.push(()=>!0);continue}if(!H(r))return!1;for(let[s,o]of Object.entries(r))o!=="allow"&&t.push(tt(s.replace(/\?/g,"*")))}}return!0}function Dl(e,t){if(e.permissions!==void 0||!Ss(e.permission,t))return!1;for(let n of["agent","agents","mode"]){let r=e[n];if(r!==void 0){if(!H(r))return!1;for(let s of Object.values(r))if(H(s)&&(s.permissions!==void 0||!Ss(s.permission,t)))return!1}}return!0}function Ub(e){for(let t of e)for(let n of["agent","agents","mode","modes"]){let r;try{r=Un(C(t,n))}catch{continue}for(let s of r)try{if(s.endsWith(".md")&&/permission/i.test(en(C(t,n,s),"utf8")))return!0}catch{return!0}}return!1}function Bb(e){let t=C(process.env.XDG_CONFIG_HOME||C(et(),".config"),"opencode"),n=St(e),r=[t,...n.map(a=>C(a,".opencode"))];if(Ub(r))return"unreadable";let s=["opencode.json","opencode.jsonc","config.json"],o=[...s.map(a=>C(t,a)),process.env.OPENCODE_CONFIG,...n.flatMap(a=>[...s.slice(0,2).map(l=>C(a,l)),...s.slice(0,2).map(l=>C(a,".opencode",l))])].filter(a=>!!a),i=nn(o,!0,Dl,!0);if(i==="unreadable")return i;for(let a of[process.env.OPENCODE_CONFIG_CONTENT,process.env.OPENCODE_PERMISSION]){if(!a)continue;let l;try{l=JSON.parse(Jl(a))}catch{return"unreadable"}if(!(a===process.env.OPENCODE_PERMISSION?Ss(l,i.matchers):H(l)&&Dl(l,i.matchers)))return"unreadable"}return i}function Zb(){return nn([C(et(),".gemini","antigravity-cli","settings.json")],!0,(e,t)=>{let n=e.permissions;if(n===void 0)return!0;if(!H(n))return!1;for(let r of["deny","ask"]){let s=tn(n[r]);if(!s)return!1;for(let o of s){let i=/^\s*command\s*\(([\s\S]*)\)\s*$/.exec(o);if(!i)continue;let a=i[1].trim();if(!a.startsWith("regex:")){t.push(tt(a==="*"?"*":`${a} *`));continue}let l;try{l=new RegExp(a.slice(6))}catch{return!1}t.push(c=>Zn(l,c))}}return!0},!1)}function Jb(e){let t=[],n=/\s+|#[^\n]*|("(?:[^"\\\n]|\\.)*"|'(?:[^'\\\n]|\\.)*')|([A-Za-z_][A-Za-z0-9_]*|[()[\],=])|(.)/gy;for(let r=n.exec(e);r&&r[0];r=n.exec(e)){if(r[3]!==void 0)return null;(r[1]!==void 0||r[2]!==void 0)&&t.push(r[1]??r[2])}return t}function Vl(e,t){let n=e[t.i++];if(n===void 0)return;if(/^["']/.test(n))try{return n.startsWith('"')?JSON.parse(n):JSON.parse(`"${n.slice(1,-1).replace(/\\'/g,"'").replace(/"/g,'\\"')}"`)}catch{return}if(n!=="[")return/^[A-Za-z_]/.test(n)?null:void 0;let r=[];for(;e[t.i]!=="]";){let s=Vl(e,t);if(s===void 0)return;if(r.push(s),e[t.i]===",")t.i++;else if(e[t.i]!=="]")return}return t.i++,r}function Kl(e){if(!Array.isArray(e)||e.length===0)return null;let t=[];for(let r of e){let s=typeof r=="string"?[r]:Array.isArray(r)?r:null;if(!s||s.length===0||!s.every(o=>typeof o=="string"&&o!==""))return null;t.push(`(?:${s.map(As).join("|")})`)}let n=new RegExp(`^${t.join(" ")}(?= |$)`);return r=>Zn(n,r)}function Gb(e,t){let n=Jb(e);if(!n)return!1;for(let r=0;r<n.length;r++){if(n[r]!=="prefix_rule"||n[r+1]!=="(")continue;let s={i:r+2},o={};for(;n[s.i]!==")";){let l=n[s.i];if(!l||!/^[A-Za-z_]/.test(l)||n[s.i+1]!=="="||(s.i+=2,o[l]=Vl(n,s),o[l]===void 0&&(l==="pattern"||l==="decision")))return!1;if(n[s.i]===",")s.i++;else if(n[s.i]!==")")return!1}r=s.i;let i="decision"in o?o.decision:"allow";if(i!=="allow"&&i!=="prompt"&&i!=="forbidden")return!1;let a=Kl(o.pattern);if(!a)return!1;i!=="allow"&&t.push(a)}return!0}function Wb(e){if(!Oe(e))return[];try{return Un(e).filter(t=>t.endsWith(".rules")).sort().map(t=>C(e,t))}catch{return"unreadable"}}function Vb(){return process.platform==="win32"?C(process.env.ProgramData||"C:\\ProgramData","OpenAI","Codex","requirements.toml"):"/etc/codex/requirements.toml"}function Kb(e){if(!(!H(e)||Object.keys(e).length!==1)){if(typeof e.token=="string")return e.token;if(Array.isArray(e.any_of)&&e.any_of.every(t=>typeof t=="string"))return e.any_of}}function qb(e,t){let n;try{n=Dt(e)}catch{return!1}if(n.rules===void 0)return!0;if(!H(n.rules))return!1;let r=n.rules.prefix_rules;if(r===void 0)return!0;if(!Array.isArray(r))return!1;for(let s of r){if(!H(s)||!Array.isArray(s.pattern)||s.decision!=="prompt"&&s.decision!=="forbidden")return!1;let o=s.pattern.map(Kb);if(o.some(a=>a===void 0))return!1;let i=Kl(o);if(!i)return!1;t.push(i)}return!0}function Yb(e){let t=process.env.CODEX_HOME||C(et(),".codex"),n=[C(t,"rules"),...St(e).map(o=>C(o,".codex","rules"))],r=[],s=null;try{s=en(Vb(),"utf8")}catch(o){let i=o.code;if(i!=="ENOENT"&&i!=="ENOTDIR")return"unreadable"}if(s!==null&&!qb(s,r))return"unreadable";for(let o of[...new Set(n)]){let i=Wb(o);if(i==="unreadable")return"unreadable";for(let a of i){let l;try{l=en(a,"utf8")}catch{return"unreadable"}if(!Gb(l,r))return"unreadable"}}return{matchers:r,complete:!1}}function H(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function As(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Xb(e){let t=e.trim().replace(/\s+/g," "),n=t.endsWith(" *")&&t.length>2,r=(n?t.slice(0,-2):t).split("*").map(As).join("[\\s\\S]*");return new RegExp(`^${r}${n?"(?: [\\s\\S]*)?":""}(?= |$)`)}var Qb=512;function e_(e){let t=e.replace(/['"\\]/g,"").split(/[\s;&|(){}<>`$]+/).filter(Boolean);return[t,t.map(wt)]}function Zn(e,t){if(e.test(t)||e.test(t.trim().replace(/\s+/g," ")))return!0;for(let n of e_(t)){if(n.length>Qb)return!0;for(let r=0;r<n.length;r++)if(e.test(n.slice(r).join(" ")))return!0}return!1}function tt(e){let t=Xb(e);return n=>Zn(t,n)}function t_(e){let t=e.trim().replace(/:\*$/," *"),n=t.endsWith(" *"),r=n?t.slice(0,-2):t;if(!r||r.includes("*")||/\s\s|[^\S ]|^ | $/.test(r))return null;let s=new RegExp(`^${As(r)}${n?"(?: [\\s\\S]*)?":""}$`);return o=>s.test(o)}var n_={"claude-code":Db,cursor:Lb,"gemini-cli":zb,opencode:Bb,antigravity:Zb,codex:Yb},r_=new Set(["codex"]),ql=/(?:^|[\s=:/~])\.(?:git|claude|vscode|idea|husky)(?=[/\s;|&)]|$)|(?:^|[\s=:/~])\.(?:bashrc|bash_profile|bash_login|bash_logout|profile|zshrc|zprofile|zshenv|zlogin|zlogout|gitconfig|gitmodules|ripgreprc|mcp\.json)(?![A-Za-z0-9_])/;function s_(e,t,n){let r=n_[e];return r?r(t??process.cwd(),n):{matchers:[],complete:!1}}function o_(e,t,n){return e==="unreadable"||ql.test(t.replace(/['"\\]/g,""))||e.matchers.some(r=>r(t))?!1:e.complete||Bl(t,!r_.has(n))}var Yl=new Set(["default","acceptEdits","dontAsk"]);function Xl(e,t){return t.host!=="claude-code"||t.permissionMode==="bypassPermissions"?!0:e!=="unreadable"&&e.allowsEverything===!0&&Yl.has(t.permissionMode??"")}var i_=/(?:^|[\s/])git(?:\.exe|\.real|-[a-z][\w-]*)?(?=\s|$)/;function a_(e){if(!e)return!1;try{for(let t of St(e)){let n=C(t,".git");if(Oe(n))return Uk(n).isFile()}}catch{return!0}return!1}function l_(e,t){let n="pathEnv"in e?e.pathEnv:process.env.PATH,r,s;return(o,i)=>e.host!=="claude-code"?xt(o,e.cwd,n):i!==void 0&&i_.test(i)&&(s??=a_(e.cwd))||(r??=_l(t.configDir),!xt(o,e.cwd,n)&&!r.paths.some(a=>xt(o,e.cwd,a)))?!1:o.includes("/")||!xl(o,r)}var c_=/^[^\s;&|<>()$`\\{}*?[\]~#!]+(?: [^\s;&|<>()$`\\{}*?[\]~#!]+)*$/;function u_(e,t,n){return n.host!=="claude-code"||e==="unreadable"||Xl(e,n)||!Yl.has(n.permissionMode??"")||!c_.test(t)||ql.test(t.replace(/['"]/g,""))||(e.guards??[]).some(r=>r(t))?null:(e.trustedAllow??[]).find(r=>r.matches(t))?.rule??null}var f_=65536,d_=/^(?:[A-Za-z_][A-Za-z0-9_]*=\S*\s+)*(?:(?:npx|bunx|pnpm\s+exec|yarn\s+exec|uv\s+run|poetry\s+run)\s+)?(?:\.\/)?(?:ctest|gradlew|gradle|mvnw|mvnd|mvn|make|cmake|sbt|phpstan|phpunit|pest|pytest|py\.test|tox|nox|vitest|jest|mocha|playwright\s+test|tsc|(?:cargo|go)\s+(?:build|test|check|clippy|vet)|(?:bun|deno)\s+(?:test|check|lint|install)|(?:npm|pnpm|yarn)\s+(?:test|t|ci|install|run\s+\S+)|dotnet\s+(?:build|test)|swift\s+(?:build|test)|composer\s+(?:install|update|test))(?:\s|$)/;function p_(e,t){return t.host==="claude-code"&&t.permissionMode==="default"&&d_.test(e.trim())}function Ql(e,t,n,r){if(!n||e.length>f_||/["\\$`;&|<>(){}]|'\\''/.test(n))return null;let s=t.claudeDirs??Bn(),o=s_(t.host,t.cwd,s),i=u_(o,e,t),a=i||o_(o,e,t.host)?pb(e,n,l_(t,s)):e;return a!==e&&o!=="unreadable"&&(i?(o.guards??[]).some(l=>l(a)):o.matchers.some(l=>l(a))||(o.allow??[]).some(l=>l(a)&&!l(e)))&&(a=e),r(t.sessionId,a!==e),a===e?null:i?{command:a,allowedBy:i}:Xl(o,t)?{command:a}:o!=="unreadable"&&p_(e,t)&&!(o.allow??[]).some(l=>l(e))&&!(o.trustedAllow??[]).some(l=>l.matches(e))?{command:a,ask:!0}:null}function Ie(e,t,n,r){let s=Ql(e,t,n,r);return s&&!s.ask?s.command:null}function J(e,t){let n=e[t];return typeof n=="string"&&n?n:null}function rn(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function m_(e){return J(e,"prompt_id")||J(e,"scratchpad_dir")?!0:rn(e.effort)}function g_(e){return J(e,"tool_use_id")?.startsWith("toolu_")===!0||/^claude/i.test(J(e,"model")??"")}var h_=new Set(["BeforeTool","AfterTool","BeforeAgent","AfterAgent","BeforeModel","AfterModel","BeforeToolSelection"]),y_=new Set(["preToolUse","postToolUse","beforeShellExecution","afterShellExecution","beforeSubmitPrompt","sessionStart","sessionEnd","stop"]),k_=new Set(["pre_tool","post_tool"]),b_=new Set(["before_tool_call","after_tool_call"]),__=new Set(["runTerminalCommand","run_in_terminal"]),x_=[["codex",e=>J(e,"turn_id")!==null],["claude-code",m_],["cursor",e=>J(e,"cursor_version")!==null||J(e,"generation_id")!==null||J(e,"conversation_id")!==null||Array.isArray(e.workspace_roots)||y_.has(J(e,"hook_event_name")??"")],["gemini-cli",e=>h_.has(J(e,"hook_event_name")??"")],["qwen-code",e=>e.hook_event_name==="PreToolUse"&&e.tool_name==="run_shell_command"],["vibe",e=>k_.has(J(e,"hook_event_name")??"")],["antigravity",e=>rn(e.toolCall)],["copilot",e=>J(e,"toolName")!==null&&"toolArgs"in e||__.has(J(e,"tool_name")??"")],["grok",e=>e.toolName==="run_terminal_command"||e.tool_name==="run_terminal_command"||rn(e.toolInput)&&!("toolArgs"in e)],["droid",e=>e.tool_name==="Execute"],["trae",e=>e.tool_name==="RunCommand"],["crush",e=>e.hook_event_name===void 0&&J(e,"event")!==null&&!b_.has(J(e,"event"))]],w_=new Set(["codex","antigravity"]);function Rs(e){return rn(e)?x_.filter(([,t])=>t(e)).map(([t])=>t):[]}function ec(e,t){if(!rn(e))return null;let n=Rs(e);return n.length>1?null:n.length===1?n[0]:g_(e)&&w_.has(t)?"claude-code":t==="codex"?null:t}var $s=JSON.stringify({permission:"allow"});function tc(e,t=oe("cursor"),n=ne){if(e.tool_name!=="Shell")return $s;let r=e.tool_input??{},s=r.command;if(typeof s!="string"||!s)return $s;let o=typeof r.working_directory=="string"?r.working_directory:void 0,i=Ie(s,{host:"cursor",sessionId:e.conversation_id??"unknown",cwd:o},de()?null:t,n);return i?JSON.stringify({permission:"allow",updated_input:{...r,command:i}}):$s}var Jn="{}";function nc(e,t=oe("gemini-cli"),n=ne){if(e.hook_event_name!=="BeforeTool"||e.tool_name!=="run_shell_command")return Jn;let r=e.tool_input??{};if(r.is_background)return Jn;let s=r.command;if(typeof s!="string"||!s)return Jn;let o=typeof e.cwd=="string"?e.cwd:void 0,i=Ie(s,{host:"gemini-cli",sessionId:e.session_id??"unknown",cwd:o},de()?null:t,n);return i?JSON.stringify({hookSpecificOutput:{tool_input:{command:i}}}):Jn}function Et(e,t,n="unknown",r=oe(t),s=ne){return e?Ie(e,{host:t,sessionId:n},de()?null:r,s):null}var S_=new Set(["bash","file_system.bash"]),Cs=JSON.stringify({decision:"allow"});function rc(e,t=(n,r)=>Et(n,"vibe",r)){if(!D(e)||e.hook_event_name!=="pre_tool"||typeof e.tool_name!="string"||!S_.has(e.tool_name))return"";let n=e.tool_input;if(!D(n)||typeof n.command!="string"||!n.command)return"";let r=t(n.command,typeof e.session_id=="string"?e.session_id:"unknown");return r?JSON.stringify({hook_specific_output:{tool_input:{...n,command:r}}}):""}function sc(e,t=(n,r)=>Et(n,"antigravity",r)){if(!D(e)||!D(e.toolCall)||e.toolCall.name!=="run_command")return Cs;let n=e.toolCall.args;if(!D(n)||typeof n.CommandLine!="string"||!n.CommandLine)return Cs;let r=t(n.CommandLine,typeof e.conversationId=="string"?e.conversationId:"unknown");return r?JSON.stringify({decision:"allow",overwrite:{CommandLine:r}}):Cs}var xe="{}",v_=new Set(["runTerminalCommand","run_in_terminal","Bash","bash"]),E_=["run_in_background","is_background","isBackground"];function Gn(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function T_(e){let t=e.session_id??e.sessionId;return typeof t=="string"&&t?t:"unknown"}function A_(e,t){let n=e.cwd??t.cwd??t.workdir??t.working_directory;return typeof n=="string"&&n?n:void 0}function Wn(e,t,n,r,s){if(!Gn(t)||E_.some(i=>t[i]===!0))return null;let o=t.command;return typeof o!="string"||!o?null:Ie(o,{host:e,sessionId:T_(n),cwd:A_(n,t)},de()?null:r,s)}function At(e,t){return JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",updatedInput:{...e,command:t}}})}function R_(e){if(Gn(e))return e;if(typeof e!="string")return null;try{let t=JSON.parse(e);return Gn(t)?t:null}catch{return null}}function $_(e,t,n){if(typeof e.tool_name=="string"){if(!v_.has(e.tool_name))return xe;let o=e.tool_input,i=Wn("copilot",o,e,t,n);return i?At(o,i):xe}if(e.toolName!=="bash")return xe;let r=R_(e.toolArgs),s=Wn("copilot",r,e,t,n);return s?JSON.stringify({modifiedArgs:{...r,command:s}}):xe}function Tt(e,t,n){return(r,s,o)=>{if(r.tool_name!==t)return xe;let i=r.tool_input,a=Wn(e,i,r,s,o);return a?n(i,a):xe}}var C_=new Set(["run_terminal_command","Bash","bash"]);function O_(e,t,n){let r=e.toolName??e.tool_name;if(typeof r!="string"||!C_.has(r))return xe;let s=e.toolInput??e.tool_input,o=Wn("grok",s,e,t,n);return o?At(s,o):xe}var I_={copilot:$_,droid:Tt("droid","Execute",At),trae:Tt("trae","RunCommand",At),"qwen-code":Tt("qwen-code","run_shell_command",At),crush:Tt("crush","bash",(e,t)=>JSON.stringify({updated_input:{command:t}})),junie:Tt("junie","Bash",(e,t)=>JSON.stringify({updatedInput:{...e,command:t}})),zcode:Tt("zcode","Bash",At),grok:O_};function oc(e,t,n=oe(e),r=ne){return Gn(t)?I_[e](t,n,r):xe}function Rt(e){return de()?null:oe(e)}function N_(e,t,n={}){let r=n.recordUsage??ne;switch(e){case"claude-code":case"codex":return t.hook_event_name!==void 0&&t.hook_event_name!=="PreToolUse"?"":Zl(t,e,Rt(e),r,n.claudeDirs??Bn(),n.pathEnv??process.env.PATH,n.launchArgs??Ts)??"";case"cursor":return tc(t,Rt(e),r);case"gemini-cli":return nc(t,Rt(e),r);case"vibe":return rc(t,(s,o)=>Et(s,"vibe",o,Rt(e),r));case"antigravity":return sc(t,(s,o)=>Et(s,"antigravity",o,Rt(e),r));default:return oc(e,t,Rt(e),r)}}function vt(e,t,n={}){let r=ec(e,t);return r?N_(r,e,n):n.fallback??""}var P_=new Set(["shell","bash","exec","run_shell_command","execute_shell_command"]);async function D_(e){if(e.event!=="after_tool_call")return{action:"continue"};if(!P_.has(e.tool))return{action:"continue"};let t=typeof e.command=="string"?e.command:Array.isArray(e.args)&&e.args.every(b=>typeof b=="string")?e.args.join(" "):"";if(!t)return{action:"continue"};let n=typeof e.stdout=="string"?e.stdout:"",r=typeof e.stderr=="string"?e.stderr:"",s=gl();if(!n&&(!s||!r))return{action:"continue"};let o=await gt();if(!o.enabled)return{action:"continue"};let i=await Ht();if(!i||!i.token)return{action:"continue"};pl();let a=En(i.allowedFilters,vi(i)),l=new Set(o.filters.disabled.map(X)),c=a&&l.size>0?new Set([...a].filter(b=>!l.has(b))):a,u,f=null;try{u=await Or(t,n,c,{verbosity:o.outputVerbosity,yolo:s,exitCode:e.exit_code}),s&&r&&(f=await Or(t,r,c,{verbosity:o.outputVerbosity,yolo:s,exitCode:e.exit_code}))}finally{ml()}let d=u.filteredBytes<u.rawBytes||f!=null&&f.filteredBytes<f.rawBytes,p=f?.output??r,h=p?u.output?`${u.output}
|
|
115
|
-
${p}`:p:
|
|
116
|
-
`),t}}async function
|
|
114
|
+
`}else if(s==="/"&&e[r+1]==="*"){if(r=e.indexOf("*/",r+2),r===-1)return"";r+=1}else t+=s}return t.replace(/,(\s*[}\]])/g,"$1")}function St(e){let t=[],n=Jk(e);for(;;){t.push(n);let r=Ml(n);if(r===n)return t;n=r}}function Rb(){let e=process.platform==="darwin"?"/Library/Application Support/ClaudeCode":process.platform==="win32"?"C:\\Program Files\\ClaudeCode":"/etc/claude-code",t=[C(e,"managed-settings.json")];try{for(let n of Un(C(e,"managed-settings.d")))n.endsWith(".json")&&t.push(C(e,"managed-settings.d",n))}catch{return t}return t}function $b(){try{return Bk().username}catch{return""}}function Cb(e){return e.error?e.error.code==="ETIMEDOUT":e.status!==1}var Ob=5*6e4,Ol=new Map;function Gl(e,t){let n=Ol.get(e);if(n&&Date.now()-n.at<Ob)return n.value;let r=["HKLM","HKCU"].some(s=>Cb(Ll(e,["query",`${s}\\SOFTWARE\\Policies\\ClaudeCode`,"/v","Settings"],{cwd:t,stdio:"ignore",timeout:2e3,windowsHide:!0})));return Ol.set(e,{at:Date.now(),value:r}),r}function Ib(){let e=process.env.SystemRoot||"C:\\Windows";return Gl(Gk.join(e,"System32","reg.exe"),e)}var Il="/mnt/c/Windows/System32/reg.exe";function Nb(e){return!process.env.WSL_DISTRO_NAME&&!e("/proc/sys/fs/binfmt_misc/WSLInterop")?!1:e("/mnt/c/Program Files/ClaudeCode")?!0:e(Il)&&Gl(Il,"/mnt/c/Windows")}function Pb(e=process.platform,t=Oe,n=Ib,r=$b(),s=()=>Nb(t)){if(e==="darwin"){let o="/Library/Managed Preferences";return t(C(o,"com.anthropic.claudecode.plist"))||r!==""&&t(C(o,r,"com.anthropic.claudecode.plist"))}return e==="win32"?n():e==="linux"&&s()}function nn(e,t,n,r){let s=[];for(let o of e){let i=Ab(o,t);if(i!=="missing"&&(i==="unreadable"||!H(i)||!n(i,s)))return"unreadable"}return{matchers:s,complete:r}}function tn(e){return e===void 0?[]:Array.isArray(e)?e.filter(t=>typeof t=="string"):null}function Bn(){return{projectDir:process.env.CLAUDE_PROJECT_DIR,configDir:process.env.CLAUDE_CONFIG_DIR?.trim()?Rn():void 0}}function Db(e,t){let n=b=>[C(b,"settings.json"),C(b,"settings.local.json")],r=b=>n(C(b,".claude")),s=C(et(),".claude"),o=t.configDir||s;if(Pb())return"unreadable";let a=[[[...[...new Set([C(o,"remote-settings.json"),C(s,"remote-settings.json")])],...Rb()],"managed"],[[C(o,"settings.json")],"loaded"],[[C(o,"settings.local.json")],"loadedLocal"],[t.configDir?n(s):[],"extra"],[t.projectDir?r(t.projectDir):[],"project"],[St(e).flatMap(r),"extra"]],l=[],u={managed:[],loaded:[],loadedLocal:[],project:[],extra:[]},c={managed:!1,loaded:!1,loadedLocal:!1,project:!1,extra:!1},f=!1,d="managed",p=(b,w)=>{let A=b.permissions;if(d==="managed"&&(b.allowManagedPermissionRulesOnly===!0||H(A)&&A.allowManagedPermissionRulesOnly===!0)&&(f=!0),A===void 0)return!0;if(!H(A))return!1;for(let I of["deny","ask","allow"]){let L=tn(A[I]);if(!L)return!1;for(let z of L){let F=/^\s*Bash\s*(?:\(([\s\S]*)\))?\s*$/.exec(z);if(F)if(I!=="allow")w.push(tt((F[1]??"*").replace(/:\*$/," *")));else if(F[1]===void 0||F[1].trim()==="*")c[d]=!0;else{l.push(tt(F[1].replace(/:\*$/," *")));let me=t_(F[1]);me&&u[d].push({rule:z.trim(),matches:me})}}}return!0},g=[];for(let[b,w]of a){d=w;let A=nn(b,!1,p,!0);if(A==="unreadable")return"unreadable";g.push(...A.matchers)}let y=c.managed||(c.loaded||c.loadedLocal)&&!f,m=[...u.managed,...f?[]:u.loaded];return{matchers:[...g,...y?[]:l],complete:!0,allow:l,allowsEverything:y,guards:g,trustedAllow:m}}function Lb(e){let t=[C(et(),".cursor","cli-config.json"),...St(e).map(n=>C(n,".cursor","cli.json"))];return nn(t,!0,(n,r)=>{let s=n.permissions;if(s===void 0)return!0;if(!H(s))return!1;let o=tn(s.deny);if(!o)return!1;for(let i of o){let a=/^\s*Shell\s*(?:\(([\s\S]*)\))?\s*$/.exec(i);if(!a)continue;let l=a[1]??"*",u=l.indexOf(":");r.push(tt(u===-1?`${l} *`:`${l.slice(0,u)} ${l.slice(u+1)}`))}return!0},!1)}function Mb(){return process.platform==="darwin"?"/Library/Application Support/GeminiCli":process.platform==="win32"?"C:\\ProgramData\\gemini-cli":"/etc/gemini-cli"}var Wl=/^\s*(?:run_shell_command|ShellTool)\s*(?:\(([\s\S]*)\))?\s*$/;function Fb(e,t){let n=e.tools;if(n!==void 0&&!H(n))return!1;let r=[tn(e.excludeTools),tn(H(n)?n.exclude:void 0)];for(let s of r){if(!s)return!1;for(let o of s){let i=Wl.exec(o);i&&t.push(tt(i[1]===void 0?"*":`${i[1]}*`))}}return!0}function Nl(e){try{return JSON.parse(e)}catch{return null}}function jb(e){let t=e.trim();if(t.startsWith('"""')||t.startsWith("'''"))return null;if(t.startsWith("[")){if(!/\]\s*(?:#.*)?$/.test(t))return null;let n=[];for(let r of t.matchAll(/"((?:\\.|[^"\\])*)"|'([^']*)'/g)){let s=r[2]??Nl(`"${r[1]}"`);if(s===null)return null;n.push(s)}return n}if(t.startsWith('"')){let n=/^"((?:\\.|[^"\\])*)"/.exec(t);return n?Nl(`"${n[1]}"`):null}if(t.startsWith("'")){let n=/^'([^']*)'/.exec(t);return n?n[1]:null}return t.replace(/\s*#.*$/,"")}function Hb(e,t){for(let n of e.split(/^\s*\[\[\s*rule\s*\]\]\s*$/m).slice(1)){let r={};for(let l of n.split(/\r?\n/)){if(/^\s*\[/.test(l))break;let u=/^\s*([A-Za-z_]+)\s*=\s*(.*)$/.exec(l);if(!u)continue;let c=jb(u[2]);if(c===null)return!1;r[u[1]]=c}let s=r.decision;if(s!=="deny"&&s!=="ask_user"||!(r.toolName===void 0?["*"]:[r.toolName].flat()).some(l=>l==="*"||Wl.test(l)))continue;let i=r.commandPrefix===void 0?[]:[r.commandPrefix].flat(),a=[r.commandRegex,r.argsPattern].flat().filter(l=>typeof l=="string");if(i.length===0&&a.length===0){t.push(()=>!0);continue}for(let l of i)t.push(tt(`${l}*`));for(let l of a){let u;try{u=new RegExp(l)}catch{return!1}t.push(c=>u.test(JSON.stringify({command:c}))||Zn(u,c))}}return!0}function Pl(e){try{return Un(e).filter(t=>t.endsWith(".toml")).map(t=>C(e,t))}catch{return[]}}function zb(e){let t=Mb(),n=[C(t,"system-defaults.json"),C(t,"settings.json"),process.env.GEMINI_CLI_SYSTEM_SETTINGS_PATH,process.env.GEMINI_CLI_SYSTEM_DEFAULTS_PATH,C(et(),".gemini","settings.json"),...St(e).map(s=>C(s,".gemini","settings.json"))].filter(s=>!!s),r=nn(n,!0,Fb,!1);if(r==="unreadable")return r;for(let s of[...Pl(C(et(),".gemini","policies")),...Pl(C(t,"policies"))]){let o;try{o=en(s,"utf8")}catch{return"unreadable"}if(!Hb(o,r.matchers))return"unreadable"}return r}function Ss(e,t){if(e===void 0)return!0;if(typeof e=="string")return e!=="allow"&&t.push(()=>!0),!0;if(!H(e))return!1;for(let n of["bash","shell","*"]){let r=e[n];if(r!==void 0){if(typeof r=="string"){r!=="allow"&&t.push(()=>!0);continue}if(!H(r))return!1;for(let[s,o]of Object.entries(r))o!=="allow"&&t.push(tt(s.replace(/\?/g,"*")))}}return!0}function Dl(e,t){if(e.permissions!==void 0||!Ss(e.permission,t))return!1;for(let n of["agent","agents","mode"]){let r=e[n];if(r!==void 0){if(!H(r))return!1;for(let s of Object.values(r))if(H(s)&&(s.permissions!==void 0||!Ss(s.permission,t)))return!1}}return!0}function Ub(e){for(let t of e)for(let n of["agent","agents","mode","modes"]){let r;try{r=Un(C(t,n))}catch{continue}for(let s of r)try{if(s.endsWith(".md")&&/permission/i.test(en(C(t,n,s),"utf8")))return!0}catch{return!0}}return!1}function Bb(e){let t=C(process.env.XDG_CONFIG_HOME||C(et(),".config"),"opencode"),n=St(e),r=[t,...n.map(a=>C(a,".opencode"))];if(Ub(r))return"unreadable";let s=["opencode.json","opencode.jsonc","config.json"],o=[...s.map(a=>C(t,a)),process.env.OPENCODE_CONFIG,...n.flatMap(a=>[...s.slice(0,2).map(l=>C(a,l)),...s.slice(0,2).map(l=>C(a,".opencode",l))])].filter(a=>!!a),i=nn(o,!0,Dl,!0);if(i==="unreadable")return i;for(let a of[process.env.OPENCODE_CONFIG_CONTENT,process.env.OPENCODE_PERMISSION]){if(!a)continue;let l;try{l=JSON.parse(Jl(a))}catch{return"unreadable"}if(!(a===process.env.OPENCODE_PERMISSION?Ss(l,i.matchers):H(l)&&Dl(l,i.matchers)))return"unreadable"}return i}function Zb(){return nn([C(et(),".gemini","antigravity-cli","settings.json")],!0,(e,t)=>{let n=e.permissions;if(n===void 0)return!0;if(!H(n))return!1;for(let r of["deny","ask"]){let s=tn(n[r]);if(!s)return!1;for(let o of s){let i=/^\s*command\s*\(([\s\S]*)\)\s*$/.exec(o);if(!i)continue;let a=i[1].trim();if(!a.startsWith("regex:")){t.push(tt(a==="*"?"*":`${a} *`));continue}let l;try{l=new RegExp(a.slice(6))}catch{return!1}t.push(u=>Zn(l,u))}}return!0},!1)}function Jb(e){let t=[],n=/\s+|#[^\n]*|("(?:[^"\\\n]|\\.)*"|'(?:[^'\\\n]|\\.)*')|([A-Za-z_][A-Za-z0-9_]*|[()[\],=])|(.)/gy;for(let r=n.exec(e);r&&r[0];r=n.exec(e)){if(r[3]!==void 0)return null;(r[1]!==void 0||r[2]!==void 0)&&t.push(r[1]??r[2])}return t}function Vl(e,t){let n=e[t.i++];if(n===void 0)return;if(/^["']/.test(n))try{return n.startsWith('"')?JSON.parse(n):JSON.parse(`"${n.slice(1,-1).replace(/\\'/g,"'").replace(/"/g,'\\"')}"`)}catch{return}if(n!=="[")return/^[A-Za-z_]/.test(n)?null:void 0;let r=[];for(;e[t.i]!=="]";){let s=Vl(e,t);if(s===void 0)return;if(r.push(s),e[t.i]===",")t.i++;else if(e[t.i]!=="]")return}return t.i++,r}function Kl(e){if(!Array.isArray(e)||e.length===0)return null;let t=[];for(let r of e){let s=typeof r=="string"?[r]:Array.isArray(r)?r:null;if(!s||s.length===0||!s.every(o=>typeof o=="string"&&o!==""))return null;t.push(`(?:${s.map(As).join("|")})`)}let n=new RegExp(`^${t.join(" ")}(?= |$)`);return r=>Zn(n,r)}function Gb(e,t){let n=Jb(e);if(!n)return!1;for(let r=0;r<n.length;r++){if(n[r]!=="prefix_rule"||n[r+1]!=="(")continue;let s={i:r+2},o={};for(;n[s.i]!==")";){let l=n[s.i];if(!l||!/^[A-Za-z_]/.test(l)||n[s.i+1]!=="="||(s.i+=2,o[l]=Vl(n,s),o[l]===void 0&&(l==="pattern"||l==="decision")))return!1;if(n[s.i]===",")s.i++;else if(n[s.i]!==")")return!1}r=s.i;let i="decision"in o?o.decision:"allow";if(i!=="allow"&&i!=="prompt"&&i!=="forbidden")return!1;let a=Kl(o.pattern);if(!a)return!1;i!=="allow"&&t.push(a)}return!0}function Wb(e){if(!Oe(e))return[];try{return Un(e).filter(t=>t.endsWith(".rules")).sort().map(t=>C(e,t))}catch{return"unreadable"}}function Vb(){return process.platform==="win32"?C(process.env.ProgramData||"C:\\ProgramData","OpenAI","Codex","requirements.toml"):"/etc/codex/requirements.toml"}function Kb(e){if(!(!H(e)||Object.keys(e).length!==1)){if(typeof e.token=="string")return e.token;if(Array.isArray(e.any_of)&&e.any_of.every(t=>typeof t=="string"))return e.any_of}}function qb(e,t){let n;try{n=Dt(e)}catch{return!1}if(n.rules===void 0)return!0;if(!H(n.rules))return!1;let r=n.rules.prefix_rules;if(r===void 0)return!0;if(!Array.isArray(r))return!1;for(let s of r){if(!H(s)||!Array.isArray(s.pattern)||s.decision!=="prompt"&&s.decision!=="forbidden")return!1;let o=s.pattern.map(Kb);if(o.some(a=>a===void 0))return!1;let i=Kl(o);if(!i)return!1;t.push(i)}return!0}function Yb(e){let t=process.env.CODEX_HOME||C(et(),".codex"),n=[C(t,"rules"),...St(e).map(o=>C(o,".codex","rules"))],r=[],s=null;try{s=en(Vb(),"utf8")}catch(o){let i=o.code;if(i!=="ENOENT"&&i!=="ENOTDIR")return"unreadable"}if(s!==null&&!qb(s,r))return"unreadable";for(let o of[...new Set(n)]){let i=Wb(o);if(i==="unreadable")return"unreadable";for(let a of i){let l;try{l=en(a,"utf8")}catch{return"unreadable"}if(!Gb(l,r))return"unreadable"}}return{matchers:r,complete:!1}}function H(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function As(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Xb(e){let t=e.trim().replace(/\s+/g," "),n=t.endsWith(" *")&&t.length>2,r=(n?t.slice(0,-2):t).split("*").map(As).join("[\\s\\S]*");return new RegExp(`^${r}${n?"(?: [\\s\\S]*)?":""}(?= |$)`)}var Qb=512;function e_(e){let t=e.replace(/['"\\]/g,"").split(/[\s;&|(){}<>`$]+/).filter(Boolean);return[t,t.map(wt)]}function Zn(e,t){if(e.test(t)||e.test(t.trim().replace(/\s+/g," ")))return!0;for(let n of e_(t)){if(n.length>Qb)return!0;for(let r=0;r<n.length;r++)if(e.test(n.slice(r).join(" ")))return!0}return!1}function tt(e){let t=Xb(e);return n=>Zn(t,n)}function t_(e){let t=e.trim().replace(/:\*$/," *"),n=t.endsWith(" *"),r=n?t.slice(0,-2):t;if(!r||r.includes("*")||/\s\s|[^\S ]|^ | $/.test(r))return null;let s=new RegExp(`^${As(r)}${n?"(?: [\\s\\S]*)?":""}$`);return o=>s.test(o)}var n_={"claude-code":Db,cursor:Lb,"gemini-cli":zb,opencode:Bb,antigravity:Zb,codex:Yb},r_=new Set(["codex"]),ql=/(?:^|[\s=:/~])\.(?:git|claude|vscode|idea|husky)(?=[/\s;|&)]|$)|(?:^|[\s=:/~])\.(?:bashrc|bash_profile|bash_login|bash_logout|profile|zshrc|zprofile|zshenv|zlogin|zlogout|gitconfig|gitmodules|ripgreprc|mcp\.json)(?![A-Za-z0-9_])/;function s_(e,t,n){let r=n_[e];return r?r(t??process.cwd(),n):{matchers:[],complete:!1}}function o_(e,t,n){return e==="unreadable"||ql.test(t.replace(/['"\\]/g,""))||e.matchers.some(r=>r(t))?!1:e.complete||Bl(t,!r_.has(n))}var Yl=new Set(["default","acceptEdits","dontAsk"]);function Xl(e,t){return t.host!=="claude-code"||t.permissionMode==="bypassPermissions"?!0:e!=="unreadable"&&e.allowsEverything===!0&&Yl.has(t.permissionMode??"")}var i_=/(?:^|[\s/])git(?:\.exe|\.real|-[a-z][\w-]*)?(?=\s|$)/;function a_(e){if(!e)return!1;try{for(let t of St(e)){let n=C(t,".git");if(Oe(n))return Uk(n).isFile()}}catch{return!0}return!1}function l_(e,t){let n="pathEnv"in e?e.pathEnv:process.env.PATH,r,s;return(o,i)=>e.host!=="claude-code"?xt(o,e.cwd,n):i!==void 0&&i_.test(i)&&(s??=a_(e.cwd))||(r??=_l(t.configDir),!xt(o,e.cwd,n)&&!r.paths.some(a=>xt(o,e.cwd,a)))?!1:o.includes("/")||!xl(o,r)}var u_=/^[^\s;&|<>()$`\\{}*?[\]~#!]+(?: [^\s;&|<>()$`\\{}*?[\]~#!]+)*$/;function c_(e,t,n){return n.host!=="claude-code"||e==="unreadable"||Xl(e,n)||!Yl.has(n.permissionMode??"")||!u_.test(t)||ql.test(t.replace(/['"]/g,""))||(e.guards??[]).some(r=>r(t))?null:(e.trustedAllow??[]).find(r=>r.matches(t))?.rule??null}var f_=65536,d_=/^(?:[A-Za-z_][A-Za-z0-9_]*=\S*\s+)*(?:(?:npx|bunx|pnpm\s+exec|yarn\s+exec|uv\s+run|poetry\s+run)\s+)?(?:\.\/)?(?:ctest|gradlew|gradle|mvnw|mvnd|mvn|make|cmake|sbt|phpstan|phpunit|pest|pytest|py\.test|tox|nox|vitest|jest|mocha|playwright\s+test|tsc|(?:cargo|go)\s+(?:build|test|check|clippy|vet)|(?:bun|deno)\s+(?:test|check|lint|install)|(?:npm|pnpm|yarn)\s+(?:test|t|ci|install|run\s+\S+)|dotnet\s+(?:build|test)|swift\s+(?:build|test)|composer\s+(?:install|update|test))(?:\s|$)/;function p_(e,t){return t.host==="claude-code"&&t.permissionMode==="default"&&d_.test(e.trim())}function Ql(e,t,n,r){if(!n||e.length>f_||/["\\$`;&|<>(){}]|'\\''/.test(n))return null;let s=t.claudeDirs??Bn(),o=s_(t.host,t.cwd,s),i=c_(o,e,t),a=i||o_(o,e,t.host)?pb(e,n,l_(t,s)):e;return a!==e&&o!=="unreadable"&&(i?(o.guards??[]).some(l=>l(a)):o.matchers.some(l=>l(a))||(o.allow??[]).some(l=>l(a)&&!l(e)))&&(a=e),r(t.sessionId,a!==e),a===e?null:i?{command:a,allowedBy:i}:Xl(o,t)?{command:a}:o!=="unreadable"&&p_(e,t)&&!(o.allow??[]).some(l=>l(e))&&!(o.trustedAllow??[]).some(l=>l.matches(e))?{command:a,ask:!0}:null}function Ie(e,t,n,r){let s=Ql(e,t,n,r);return s&&!s.ask?s.command:null}function J(e,t){let n=e[t];return typeof n=="string"&&n?n:null}function rn(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function m_(e){return J(e,"prompt_id")||J(e,"scratchpad_dir")?!0:rn(e.effort)}function h_(e){return J(e,"tool_use_id")?.startsWith("toolu_")===!0||/^claude/i.test(J(e,"model")??"")}var g_=new Set(["BeforeTool","AfterTool","BeforeAgent","AfterAgent","BeforeModel","AfterModel","BeforeToolSelection"]),y_=new Set(["preToolUse","postToolUse","beforeShellExecution","afterShellExecution","beforeSubmitPrompt","sessionStart","sessionEnd","stop"]),k_=new Set(["pre_tool","post_tool"]),b_=new Set(["before_tool_call","after_tool_call"]),__=new Set(["runTerminalCommand","run_in_terminal"]),x_=[["codex",e=>J(e,"turn_id")!==null],["claude-code",m_],["cursor",e=>J(e,"cursor_version")!==null||J(e,"generation_id")!==null||J(e,"conversation_id")!==null||Array.isArray(e.workspace_roots)||y_.has(J(e,"hook_event_name")??"")],["gemini-cli",e=>g_.has(J(e,"hook_event_name")??"")],["qwen-code",e=>e.hook_event_name==="PreToolUse"&&e.tool_name==="run_shell_command"],["vibe",e=>k_.has(J(e,"hook_event_name")??"")],["antigravity",e=>rn(e.toolCall)],["copilot",e=>J(e,"toolName")!==null&&"toolArgs"in e||__.has(J(e,"tool_name")??"")],["grok",e=>e.toolName==="run_terminal_command"||e.tool_name==="run_terminal_command"||rn(e.toolInput)&&!("toolArgs"in e)],["droid",e=>e.tool_name==="Execute"],["trae",e=>e.tool_name==="RunCommand"],["crush",e=>e.hook_event_name===void 0&&J(e,"event")!==null&&!b_.has(J(e,"event"))]],w_=new Set(["codex","antigravity"]);function Rs(e){return rn(e)?x_.filter(([,t])=>t(e)).map(([t])=>t):[]}function eu(e,t){if(!rn(e))return null;let n=Rs(e);return n.length>1?null:n.length===1?n[0]:h_(e)&&w_.has(t)?"claude-code":t==="codex"?null:t}var $s=JSON.stringify({permission:"allow"});function tu(e,t=oe("cursor"),n=ne){if(e.tool_name!=="Shell")return $s;let r=e.tool_input??{},s=r.command;if(typeof s!="string"||!s)return $s;let o=typeof r.working_directory=="string"?r.working_directory:void 0,i=Ie(s,{host:"cursor",sessionId:e.conversation_id??"unknown",cwd:o},de()?null:t,n);return i?JSON.stringify({permission:"allow",updated_input:{...r,command:i}}):$s}var Jn="{}";function nu(e,t=oe("gemini-cli"),n=ne){if(e.hook_event_name!=="BeforeTool"||e.tool_name!=="run_shell_command")return Jn;let r=e.tool_input??{};if(r.is_background)return Jn;let s=r.command;if(typeof s!="string"||!s)return Jn;let o=typeof e.cwd=="string"?e.cwd:void 0,i=Ie(s,{host:"gemini-cli",sessionId:e.session_id??"unknown",cwd:o},de()?null:t,n);return i?JSON.stringify({hookSpecificOutput:{tool_input:{command:i}}}):Jn}function Et(e,t,n="unknown",r=oe(t),s=ne){return e?Ie(e,{host:t,sessionId:n},de()?null:r,s):null}var S_=new Set(["bash","file_system.bash"]),Cs=JSON.stringify({decision:"allow"});function ru(e,t=(n,r)=>Et(n,"vibe",r)){if(!D(e)||e.hook_event_name!=="pre_tool"||typeof e.tool_name!="string"||!S_.has(e.tool_name))return"";let n=e.tool_input;if(!D(n)||typeof n.command!="string"||!n.command)return"";let r=t(n.command,typeof e.session_id=="string"?e.session_id:"unknown");return r?JSON.stringify({hook_specific_output:{tool_input:{...n,command:r}}}):""}function su(e,t=(n,r)=>Et(n,"antigravity",r)){if(!D(e)||!D(e.toolCall)||e.toolCall.name!=="run_command")return Cs;let n=e.toolCall.args;if(!D(n)||typeof n.CommandLine!="string"||!n.CommandLine)return Cs;let r=t(n.CommandLine,typeof e.conversationId=="string"?e.conversationId:"unknown");return r?JSON.stringify({decision:"allow",overwrite:{CommandLine:r}}):Cs}var xe="{}",v_=new Set(["runTerminalCommand","run_in_terminal","Bash","bash"]),E_=["run_in_background","is_background","isBackground"];function Gn(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function T_(e){let t=e.session_id??e.sessionId;return typeof t=="string"&&t?t:"unknown"}function A_(e,t){let n=e.cwd??t.cwd??t.workdir??t.working_directory;return typeof n=="string"&&n?n:void 0}function Wn(e,t,n,r,s){if(!Gn(t)||E_.some(i=>t[i]===!0))return null;let o=t.command;return typeof o!="string"||!o?null:Ie(o,{host:e,sessionId:T_(n),cwd:A_(n,t)},de()?null:r,s)}function At(e,t){return JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",updatedInput:{...e,command:t}}})}function R_(e){if(Gn(e))return e;if(typeof e!="string")return null;try{let t=JSON.parse(e);return Gn(t)?t:null}catch{return null}}function $_(e,t,n){if(typeof e.tool_name=="string"){if(!v_.has(e.tool_name))return xe;let o=e.tool_input,i=Wn("copilot",o,e,t,n);return i?At(o,i):xe}if(e.toolName!=="bash")return xe;let r=R_(e.toolArgs),s=Wn("copilot",r,e,t,n);return s?JSON.stringify({modifiedArgs:{...r,command:s}}):xe}function Tt(e,t,n){return(r,s,o)=>{if(r.tool_name!==t)return xe;let i=r.tool_input,a=Wn(e,i,r,s,o);return a?n(i,a):xe}}var C_=new Set(["run_terminal_command","Bash","bash"]);function O_(e,t,n){let r=e.toolName??e.tool_name;if(typeof r!="string"||!C_.has(r))return xe;let s=e.toolInput??e.tool_input,o=Wn("grok",s,e,t,n);return o?At(s,o):xe}var I_={copilot:$_,droid:Tt("droid","Execute",At),trae:Tt("trae","RunCommand",At),"qwen-code":Tt("qwen-code","run_shell_command",At),crush:Tt("crush","bash",(e,t)=>JSON.stringify({updated_input:{command:t}})),junie:Tt("junie","Bash",(e,t)=>JSON.stringify({updatedInput:{...e,command:t}})),zcode:Tt("zcode","Bash",At),grok:O_};function ou(e,t,n=oe(e),r=ne){return Gn(t)?I_[e](t,n,r):xe}function Rt(e){return de()?null:oe(e)}function N_(e,t,n={}){let r=n.recordUsage??ne;switch(e){case"claude-code":case"codex":return t.hook_event_name!==void 0&&t.hook_event_name!=="PreToolUse"?"":Zl(t,e,Rt(e),r,n.claudeDirs??Bn(),n.pathEnv??process.env.PATH,n.launchArgs??Ts)??"";case"cursor":return tu(t,Rt(e),r);case"gemini-cli":return nu(t,Rt(e),r);case"vibe":return ru(t,(s,o)=>Et(s,"vibe",o,Rt(e),r));case"antigravity":return su(t,(s,o)=>Et(s,"antigravity",o,Rt(e),r));default:return ou(e,t,Rt(e),r)}}function vt(e,t,n={}){let r=eu(e,t);return r?N_(r,e,n):n.fallback??""}var P_=new Set(["shell","bash","exec","run_shell_command","execute_shell_command"]);async function D_(e){if(e.event!=="after_tool_call")return{action:"continue"};if(!P_.has(e.tool))return{action:"continue"};let t=typeof e.command=="string"?e.command:Array.isArray(e.args)&&e.args.every(b=>typeof b=="string")?e.args.join(" "):"";if(!t)return{action:"continue"};let n=typeof e.stdout=="string"?e.stdout:"",r=typeof e.stderr=="string"?e.stderr:"",s=hl();if(!n&&(!s||!r))return{action:"continue"};let o=await ht();if(!o.enabled)return{action:"continue"};let i=await Ht();if(!i||!i.token)return{action:"continue"};pl();let a=En(i.allowedFilters,vi(i)),l=new Set(o.filters.disabled.map(X)),u=a&&l.size>0?new Set([...a].filter(b=>!l.has(b))):a,c,f=null;try{c=await Or(t,n,u,{verbosity:o.outputVerbosity,yolo:s,exitCode:e.exit_code}),s&&r&&(f=await Or(t,r,u,{verbosity:o.outputVerbosity,yolo:s,exitCode:e.exit_code}))}finally{ml()}let d=c.filteredBytes<c.rawBytes||f!=null&&f.filteredBytes<f.rawBytes,p=f?.output??r,g=p?c.output?`${c.output}
|
|
115
|
+
${p}`:p:c.output,y=Buffer.byteLength(n,"utf8")+Buffer.byteLength(r,"utf8"),m=Xi(y,d?Buffer.byteLength(g,"utf8"):y,tl("codex"));return qi(m.raw,m.filtered,void 0,!1,"codex","sh",Ki(t),process.cwd(),Yi(c)),await Di({cmd:t,filterId:c.filterId,rawBytes:c.rawBytes,filteredBytes:c.filteredBytes}),await Pi({cmd:t,tokensSaved:Math.max(0,Math.round((m.raw-m.filtered)/4)),rawTokens:Math.round(m.raw/4),optimized:c.filterId!=null,telemetryOptIn:o.telemetryOptIn,host:"codex"}),d?{action:"replace_output",replacement:g,reason:"tokmizer"}:{action:"continue"}}var L_=new Set(["before_tool_call","after_tool_call"]);async function M_(e){let t=JSON.stringify({action:"continue"});if(!e)return t;let n;try{n=JSON.parse(e)}catch{return t}if(n==null||typeof n!="object"||Array.isArray(n))return t;if(n.hook_event_name!==void 0||!L_.has(n.event)&&Rs(n).length>0)return vt(n,"codex");try{return JSON.stringify(await D_(n))}catch(r){return process.stderr.write(`tkr-codex: ${r.message}
|
|
116
|
+
`),t}}async function iu(){let e=await M_(await mt());e&&process.stdout.write(e)}iu().catch(e=>{process.stderr.write(`tkr-codex-hook: ${e.message}
|
|
117
117
|
`),process.stdout.write(JSON.stringify({action:"continue"})),process.exit(0)});
|
|
118
118
|
/*! Bundled license information:
|
|
119
119
|
|