logixlysia 4.2.7 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +10 -10
- package/dist/index.d.cts +1 -17
- package/dist/index.d.ts +1 -17
- package/dist/index.js +12 -12
- package/package.json +5 -16
package/dist/index.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
var
|
|
1
|
+
var X=require("node:module");var j=Object.create;var{getPrototypeOf:z,defineProperty:c,getOwnPropertyNames:N,getOwnPropertyDescriptor:J}=Object,q=Object.prototype.hasOwnProperty;var x=(o,r,t)=>{t=o!=null?j(z(o)):{};let e=r||!o||!o.__esModule?c(t,"default",{value:o,enumerable:!0}):t;for(let n of N(o))if(!q.call(e,n))c(e,n,{get:()=>o[n],enumerable:!0});return e},U=new WeakMap,K=(o)=>{var r=U.get(o),t;if(r)return r;if(r=c({},"__esModule",{value:!0}),o&&typeof o==="object"||typeof o==="function")N(o).map((e)=>!q.call(r,e)&&c(r,e,{get:()=>o[e],enumerable:!(t=J(o,e))||t.enumerable}));return U.set(o,r),r};var Q=(o,r)=>{for(var t in r)c(o,t,{get:r[t],enumerable:!0,configurable:!0,set:(e)=>r[t]=()=>e})};var io={};Q(io,{logToTransports:()=>u,handleHttpError:()=>L,default:()=>_,createLogger:()=>d});module.exports=K(io);var Y=require("elysia");var M=(o,r)=>{let t=Math.max(0,(r-o.length)/2),e=" ".repeat(t);return`${e}${o}${e}`.padEnd(r)};function b(o,r){let t=o?.hostname??"localhost",e=o?.port??3000,n=o?.protocol??"http";if(r?.config?.startupMessageFormat!=="simple"){let a=`\uD83E\uDD8A Elysia is running at ${n}://${t}:${e}`,m=Math.max(22,a.length)+4,D="─".repeat(m),S=M("",m);console.log(`
|
|
2
2
|
┌${D}┐
|
|
3
|
-
│${
|
|
4
|
-
│${
|
|
5
|
-
│${
|
|
6
|
-
│${
|
|
7
|
-
│${
|
|
3
|
+
│${S}│
|
|
4
|
+
│${M("Elysia with Logixlysia",m)}│
|
|
5
|
+
│${S}│
|
|
6
|
+
│${M(a,m)}│
|
|
7
|
+
│${S}│
|
|
8
8
|
└${D}┘
|
|
9
|
-
`)}else console.log(`\uD83E\uDD8A Elysia is running at ${n}://${t}:${e}`)}var f=x(require("chalk")),
|
|
10
|
-
`;await
|
|
9
|
+
`)}else console.log(`\uD83E\uDD8A Elysia is running at ${n}://${t}:${e}`)}var f=x(require("chalk")),B=require("elysia");function T(o){if(typeof o==="number")return o;return B.StatusMap[o]||500}function v(o,r){let t=o.toString();if(!r)return t;if(o>=500)return f.default.red(t);if(o>=400)return f.default.yellow(t);if(o>=300)return f.default.cyan(t);if(o>=200)return f.default.green(t);return f.default.white(t)}var C=x(require("chalk"));var g=x(require("chalk")),$={INFO:g.default.bgGreen.black,WARNING:g.default.bgYellow.black,ERROR:g.default.bgRed.black},F={GET:g.default.green,POST:g.default.yellow,PUT:g.default.blue,PATCH:g.default.magentaBright,DELETE:g.default.red,HEAD:g.default.cyan,OPTIONS:g.default.magenta};var P=x(require("chalk")),Z=[{unit:"s",threshold:1e9,decimalPlaces:2},{unit:"ms",threshold:1e6,decimalPlaces:0},{unit:"µs",threshold:1000,decimalPlaces:0},{unit:"ns",threshold:1,decimalPlaces:0}];function E(o,r){let t=Number(process.hrtime.bigint()-o);for(let{unit:e,threshold:n,decimalPlaces:s}of Z)if(t>=n){let a=`${(t/n).toFixed(s)}${e}`.padStart(8).padEnd(16);return r?P.default.gray(a):a}return r?P.default.gray("0ns".padStart(8).padEnd(16)):"0ns".padStart(8).padEnd(16)}function O(o,r){let t=o.toUpperCase();return r?$[t]?.(t.padEnd(7))||t:t.padEnd(7)}function y(o,r){let t=F[o];return r&&t?t(o.padEnd(7)):o.padEnd(7)}function R(o){try{return new URL(o.url).pathname}catch{return}}var l=(o)=>o.toString().padStart(2,"0");function V(o){let r=o.getFullYear(),t=l(o.getMonth()+1),e=l(o.getDate()),n=l(o.getHours()),s=l(o.getMinutes()),i=l(o.getSeconds()),a=o.getMilliseconds().toString().padStart(3,"0");return`${r}-${t}-${e} ${n}:${s}:${i}.${a}`}function oo(o,r){let t={yyyy:o.getFullYear(),yy:o.getFullYear().toString().slice(-2),mm:l(o.getMonth()+1),dd:l(o.getDate()),HH:l(o.getHours()),MM:l(o.getMinutes()),ss:l(o.getSeconds()),SSS:l(o.getMilliseconds()),Z:-o.getTimezoneOffset()/60};return r.replace(/yyyy|yy|mm|dd|HH|MM|ss|SSS|Z/g,(e)=>(t[e]??"").toString())}function w(o,r){if(!r||!r.translateTime)return o.toISOString();if(r.translateTime===!0||r.translateTime==="SYS:STANDARD")return V(o);return oo(o,r.translateTime)}var ro="\uD83E\uDD8A {now} {level} {duration} {method} {pathname} {status} {message} {ip}";function to(o,r){if(r?.config?.useColors!==void 0)return r.config.useColors&&process.env.NO_COLOR===void 0;return o&&process.env.NO_COLOR===void 0}function p(o,r,t,e,n,s=!0){let i=to(s,n),a=new Date,m={now:i?C.default.bgYellow(C.default.black(w(a,n?.config?.timestamp))):w(a,n?.config?.timestamp),epoch:Math.floor(a.getTime()/1000).toString(),level:O(o,s),duration:E(e.beforeTime,s),method:y(r.method,s),pathname:R(r),status:v(t.status||200,s),message:t.message||"",ip:n?.config?.ip&&r.headers.get("x-forwarded-for")?`IP: ${r.headers.get("x-forwarded-for")}`:""};return(n?.config?.customLogFormat||ro).replace(/{(\w+)}/g,(S,H)=>{if(H in m)return m[H]||"";return""})}async function u(o,r,t,e,n){if(!n?.config?.transports||n.config.transports.length===0)return;let s=p(o,r,t,e,n,!1),i=n.config.transports.map((a)=>a.log(o,s,{request:r,data:t,store:e}));await Promise.all(i)}var I=require("node:fs"),G=require("node:path");var A=new Set;async function eo(o){let r=G.dirname(o);if(!A.has(r))await I.promises.mkdir(r,{recursive:!0}),A.add(r)}async function h(o,r,t,e,n,s){await eo(o);let i=`${p(r,t,e,n,s,!1)}
|
|
10
|
+
`;await I.promises.appendFile(o,i,{flag:"a"})}var k=(o,r)=>Array.isArray(o)?o.includes(r):o===r;function W(o,r,t,e){let n=e?.config?.logFilter;if(!n)return!0;return(!n.level||k(n.level,o))&&(!n.status||k(n.status,r))&&(!n.method||k(n.method,t))}function L(o,r,t,e){let n=r.status||500;console.error(p("ERROR",o,{status:n},t,e));let s=[];if(e?.config?.logFilePath)s.push(h(e.config.logFilePath,"ERROR",o,{status:n},t,e))}function no(){let o=process.memoryUsage().heapUsed/1024/1024,r=process.cpuUsage();return{memoryUsage:o,cpuUsage:r.user/1e6}}async function so(o,r,t,e,n){if(!W(o,t.status||200,r.method,n))return;if(!t.metrics)t.metrics=no();if(o==="ERROR"&&!t.stack)t.stack=new Error(`Error: ${t.message||"Unknown error"}`).stack;let s=p(o,r,t,e,n,!0);console.log(s);let i=[];if(n?.config?.logFilePath)i.push(h(n.config.logFilePath,o,r,t,e,n));if(n?.config?.transports?.length)i.push(u(o,r,t,e,n));await Promise.all(i)}function d(o){return{log:(r,t,e,n)=>so(r,t,e,n,o),handleHttpError:(r,t,e)=>L(r,t,e,o),customLogFormat:o?.config?.customLogFormat}}function _(o){let r=d(o);return new Y.Elysia({name:"Logixlysia"}).onStart((t)=>{if(o?.config?.showStartupMessage??!0)b(t.server,o)}).onRequest((t)=>{t.store={beforeTime:process.hrtime.bigint()}}).onAfterHandle({as:"global"},({request:t,set:e,store:n})=>{let s=T(e.status||200);r.log("INFO",t,{status:s,message:String(e.headers?.["x-message"]||"")},n)}).onError({as:"global"},({request:t,error:e,set:n,store:s})=>{let i=T(n.status||500);r.handleHttpError(t,{...e,status:i},s)})}
|
|
11
11
|
|
|
12
|
-
//# debugId=
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9leHRlbnNpb25zL3N0YXJ0LXNlcnZlci50cyIsICIuLi9zcmMvaGVscGVycy9zdGF0dXMudHMiLCAiLi4vc3JjL2xvZ2dlci9idWlsZC1sb2ctbWVzc2FnZS50cyIsICIuLi9zcmMvaGVscGVycy9jb2xvci1tYXBwaW5nLnRzIiwgIi4uL3NyYy9oZWxwZXJzL2R1cmF0aW9uLnRzIiwgIi4uL3NyYy9oZWxwZXJzL2xvZy50cyIsICIuLi9zcmMvaGVscGVycy9tZXRob2QudHMiLCAiLi4vc3JjL2hlbHBlcnMvcGF0aC50cyIsICIuLi9zcmMvaGVscGVycy90aW1lc3RhbXAudHMiLCAiLi4vc3JjL291dHB1dC9jb25zb2xlLnRzIiwgIi4uL3NyYy9vdXRwdXQvZmlsZS50cyIsICIuLi9zcmMvbG9nZ2VyL2ZpbHRlci50cyIsICIuLi9zcmMvbG9nZ2VyL2hhbmRsZS1odHRwLWVycm9yLnRzIiwgIi4uL3NyYy9sb2dnZXIvY3JlYXRlLWxvZ2dlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICJpbXBvcnQgeyBFbHlzaWEgfSBmcm9tICdlbHlzaWEnXG5cbmltcG9ydCB7IHN0YXJ0U2VydmVyIH0gZnJvbSAnLi9leHRlbnNpb25zJ1xuaW1wb3J0IHsgZ2V0U3RhdHVzQ29kZSB9IGZyb20gJy4vaGVscGVycy9zdGF0dXMnXG5pbXBvcnQgdHlwZSB7IEh0dHBFcnJvciwgT3B0aW9ucywgU2VydmVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxvZ2l4bHlzaWEob3B0aW9ucz86IE9wdGlvbnMpOiBFbHlzaWEge1xuICBjb25zdCBsb2cgPSBjcmVhdGVMb2dnZXIob3B0aW9ucylcblxuICByZXR1cm4gbmV3IEVseXNpYSh7XG4gICAgbmFtZTogJ0xvZ2l4bHlzaWEnXG4gIH0pXG4gICAgLm9uU3RhcnQoY3R4ID0+IHtcbiAgICAgIGNvbnN0IHNob3dTdGFydHVwTWVzc2FnZSA9IG9wdGlvbnM/LmNvbmZpZz8uc2hvd1N0YXJ0dXBNZXNzYWdlID8/IHRydWVcbiAgICAgIGlmIChzaG93U3RhcnR1cE1lc3NhZ2UpIHtcbiAgICAgICAgc3RhcnRTZXJ2ZXIoY3R4LnNlcnZlciBhcyBTZXJ2ZXIsIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfSlcbiAgICAub25SZXF1ZXN0KGN0eCA9PiB7XG4gICAgICBjdHguc3RvcmUgPSB7IGJlZm9yZVRpbWU6IHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCgpIH1cbiAgICB9KVxuICAgIC5vbkFmdGVySGFuZGxlKHsgYXM6ICdnbG9iYWwnIH0sICh7IHJlcXVlc3QsIHNldCwgc3RvcmUgfSkgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzQ29kZShzZXQuc3RhdHVzIHx8IDIwMClcbiAgICAgIGxvZy5sb2coXG4gICAgICAgICdJTkZPJyxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAge1xuICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICBtZXNzYWdlOiBTdHJpbmcoc2V0LmhlYWRlcnM/LlsneC1tZXNzYWdlJ10gfHwgJycpXG4gICAgICAgIH0sXG4gICAgICAgIHN0b3JlIGFzIHsgYmVmb3JlVGltZTogYmlnaW50IH1cbiAgICAgIClcbiAgICB9KVxuICAgIC5vbkVycm9yKHsgYXM6ICdnbG9iYWwnIH0sICh7IHJlcXVlc3QsIGVycm9yLCBzZXQsIHN0b3JlIH0pID0+IHtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1c0NvZGUoc2V0LnN0YXR1cyB8fCA1MDApXG4gICAgICBsb2cuaGFuZGxlSHR0cEVycm9yKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7IC4uLmVycm9yLCBzdGF0dXMgfSBhcyBIdHRwRXJyb3IsXG4gICAgICAgIHN0b3JlIGFzIHsgYmVmb3JlVGltZTogYmlnaW50IH1cbiAgICAgIClcbiAgICB9KVxufVxuXG5leHBvcnQgeyBjcmVhdGVMb2dnZXIsIGhhbmRsZUh0dHBFcnJvciB9IGZyb20gJy4vbG9nZ2VyJ1xuZXhwb3J0IHsgbG9nVG9UcmFuc3BvcnRzIH0gZnJvbSAnLi9vdXRwdXQnXG4iLAogICAgImltcG9ydCB0eXBlIHsgT3B0aW9ucywgU2VydmVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcydcblxuY29uc3QgY3JlYXRlQm94VGV4dCA9ICh0ZXh0OiBzdHJpbmcsIHdpZHRoOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBwYWRkaW5nTGVuZ3RoID0gTWF0aC5tYXgoMCwgKHdpZHRoIC0gdGV4dC5sZW5ndGgpIC8gMilcbiAgY29uc3QgcGFkZGluZyA9ICcgJy5yZXBlYXQocGFkZGluZ0xlbmd0aClcbiAgcmV0dXJuIGAke3BhZGRpbmd9JHt0ZXh0fSR7cGFkZGluZ31gLnBhZEVuZCh3aWR0aClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRTZXJ2ZXIoY29uZmlnOiBTZXJ2ZXIsIG9wdGlvbnM/OiBPcHRpb25zKTogdm9pZCB7XG4gIGNvbnN0IHsgaG9zdG5hbWUsIHBvcnQsIHByb3RvY29sIH0gPSBjb25maWdcbiAgY29uc3Qgc2hvd0Jhbm5lciA9IG9wdGlvbnM/LmNvbmZpZz8uc3RhcnR1cE1lc3NhZ2VGb3JtYXQgIT09ICdzaW1wbGUnXG5cbiAgaWYgKHNob3dCYW5uZXIpIHtcbiAgICBjb25zdCBFTFlTSUFfVkVSU0lPTiA9IGltcG9ydC5tZXRhLnJlcXVpcmUoJ2VseXNpYS9wYWNrYWdlLmpzb24nKS52ZXJzaW9uXG4gICAgY29uc3QgdGl0bGUgPSBgRWx5c2lhIHYke0VMWVNJQV9WRVJTSU9OfWBcbiAgICBjb25zdCBtZXNzYWdlID0gYPCfpoogRWx5c2lhIGlzIHJ1bm5pbmcgYXQgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfToke3BvcnR9YFxuICAgIGNvbnN0IGJveFdpZHRoID0gTWF0aC5tYXgodGl0bGUubGVuZ3RoLCBtZXNzYWdlLmxlbmd0aCkgKyA0XG4gICAgY29uc3QgYm9yZGVyID0gJ+KUgCcucmVwZWF0KGJveFdpZHRoKVxuICAgIGNvbnN0IGVtcHR5TGluZSA9IGNyZWF0ZUJveFRleHQoJycsIGJveFdpZHRoKVxuXG4gICAgY29uc29sZS5sb2coYFxuICAgICAg4pSMJHtib3JkZXJ94pSQXG4gICAgICDilIIke2VtcHR5TGluZX3ilIJcbiAgICAgIOKUgiR7Y3JlYXRlQm94VGV4dCh0aXRsZSwgYm94V2lkdGgpfeKUglxuICAgICAg4pSCJHtlbXB0eUxpbmV94pSCXG4gICAgICDilIIke2NyZWF0ZUJveFRleHQobWVzc2FnZSwgYm94V2lkdGgpfeKUglxuICAgICAg4pSCJHtlbXB0eUxpbmV94pSCXG4gICAgICDilJQke2JvcmRlcn3ilJhcbiAgICBgKVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKGDwn6aKIEVseXNpYSBpcyBydW5uaW5nIGF0ICR7cHJvdG9jb2x9Oi8vJHtob3N0bmFtZX06JHtwb3J0fWApXG4gIH1cbn1cbiIsCiAgICAiaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJ1xuaW1wb3J0IHsgU3RhdHVzTWFwIH0gZnJvbSAnZWx5c2lhJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzQ29kZShzdGF0dXM6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh0eXBlb2Ygc3RhdHVzID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBzdGF0dXNcbiAgfVxuICByZXR1cm4gKFN0YXR1c01hcCBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KVtzdGF0dXNdIHx8IDUwMFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGF0dXNTdHJpbmcoXG4gIHN0YXR1czogbnVtYmVyLFxuICB1c2VDb2xvcnM6IGJvb2xlYW5cbik6IHN0cmluZyB7XG4gIGNvbnN0IHN0YXR1c1N0ciA9IHN0YXR1cy50b1N0cmluZygpXG4gIGlmICghdXNlQ29sb3JzKSB7XG4gICAgcmV0dXJuIHN0YXR1c1N0clxuICB9XG5cbiAgaWYgKHN0YXR1cyA+PSA1MDApIHtcbiAgICByZXR1cm4gY2hhbGsucmVkKHN0YXR1c1N0cilcbiAgfVxuICBpZiAoc3RhdHVzID49IDQwMCkge1xuICAgIHJldHVybiBjaGFsay55ZWxsb3coc3RhdHVzU3RyKVxuICB9XG4gIGlmIChzdGF0dXMgPj0gMzAwKSB7XG4gICAgcmV0dXJuIGNoYWxrLmN5YW4oc3RhdHVzU3RyKVxuICB9XG4gIGlmIChzdGF0dXMgPj0gMjAwKSB7XG4gICAgcmV0dXJuIGNoYWxrLmdyZWVuKHN0YXR1c1N0cilcbiAgfVxuICByZXR1cm4gY2hhbGsud2hpdGUoc3RhdHVzU3RyKVxufVxuIiwKICAgICJpbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnXG5cbmltcG9ydCB7XG4gIGR1cmF0aW9uU3RyaW5nLFxuICBmb3JtYXRUaW1lc3RhbXAsXG4gIGxvZ1N0cmluZyxcbiAgbWV0aG9kU3RyaW5nLFxuICBwYXRoU3RyaW5nLFxuICBzdGF0dXNTdHJpbmdcbn0gZnJvbSAnLi4vaGVscGVycydcbmltcG9ydCB0eXBlIHtcbiAgTG9nQ29tcG9uZW50cyxcbiAgTG9nRGF0YSxcbiAgTG9nTGV2ZWwsXG4gIE9wdGlvbnMsXG4gIFJlcXVlc3RJbmZvLFxuICBTdG9yZURhdGFcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcydcblxuY29uc3QgZGVmYXVsdExvZ0Zvcm1hdCA9XG4gICfwn6aKIHtub3d9IHtsZXZlbH0ge2R1cmF0aW9ufSB7bWV0aG9kfSB7cGF0aG5hbWV9IHtzdGF0dXN9IHttZXNzYWdlfSB7aXB9J1xuXG5mdW5jdGlvbiBzaG91bGRVc2VDb2xvcnModXNlQ29sb3JzOiBib29sZWFuLCBvcHRpb25zPzogT3B0aW9ucyk6IGJvb2xlYW4ge1xuICBpZiAob3B0aW9ucz8uY29uZmlnPy51c2VDb2xvcnMgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBvcHRpb25zLmNvbmZpZy51c2VDb2xvcnMgJiYgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPT09IHVuZGVmaW5lZFxuICB9XG4gIHJldHVybiB1c2VDb2xvcnMgJiYgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPT09IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRMb2dNZXNzYWdlKFxuICBsZXZlbDogTG9nTGV2ZWwsXG4gIHJlcXVlc3Q6IFJlcXVlc3RJbmZvLFxuICBkYXRhOiBMb2dEYXRhLFxuICBzdG9yZTogU3RvcmVEYXRhLFxuICBvcHRpb25zPzogT3B0aW9ucyxcbiAgdXNlQ29sb3JzID0gdHJ1ZVxuKTogc3RyaW5nIHtcbiAgY29uc3QgYWN0dWFsbHlVc2VDb2xvcnMgPSBzaG91bGRVc2VDb2xvcnModXNlQ29sb3JzLCBvcHRpb25zKVxuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpXG4gIGNvbnN0IGNvbXBvbmVudHM6IExvZ0NvbXBvbmVudHMgPSB7XG4gICAgbm93OiBhY3R1YWxseVVzZUNvbG9yc1xuICAgICAgPyBjaGFsay5iZ1llbGxvdyhcbiAgICAgICAgICBjaGFsay5ibGFjayhmb3JtYXRUaW1lc3RhbXAobm93LCBvcHRpb25zPy5jb25maWc/LnRpbWVzdGFtcCkpXG4gICAgICAgIClcbiAgICAgIDogZm9ybWF0VGltZXN0YW1wKG5vdywgb3B0aW9ucz8uY29uZmlnPy50aW1lc3RhbXApLFxuICAgIGVwb2NoOiBNYXRoLmZsb29yKG5vdy5nZXRUaW1lKCkgLyAxMDAwKS50b1N0cmluZygpLFxuICAgIGxldmVsOiBsb2dTdHJpbmcobGV2ZWwsIHVzZUNvbG9ycyksXG4gICAgZHVyYXRpb246IGR1cmF0aW9uU3RyaW5nKHN0b3JlLmJlZm9yZVRpbWUsIHVzZUNvbG9ycyksXG4gICAgbWV0aG9kOiBtZXRob2RTdHJpbmcocmVxdWVzdC5tZXRob2QsIHVzZUNvbG9ycyksXG4gICAgcGF0aG5hbWU6IHBhdGhTdHJpbmcocmVxdWVzdCksXG4gICAgc3RhdHVzOiBzdGF0dXNTdHJpbmcoZGF0YS5zdGF0dXMgfHwgMjAwLCB1c2VDb2xvcnMpLFxuICAgIG1lc3NhZ2U6IGRhdGEubWVzc2FnZSB8fCAnJyxcbiAgICBpcDpcbiAgICAgIG9wdGlvbnM/LmNvbmZpZz8uaXAgJiYgcmVxdWVzdC5oZWFkZXJzLmdldCgneC1mb3J3YXJkZWQtZm9yJylcbiAgICAgICAgPyBgSVA6ICR7cmVxdWVzdC5oZWFkZXJzLmdldCgneC1mb3J3YXJkZWQtZm9yJyl9YFxuICAgICAgICA6ICcnXG4gIH1cblxuICBjb25zdCBsb2dGb3JtYXQgPSBvcHRpb25zPy5jb25maWc/LmN1c3RvbUxvZ0Zvcm1hdCB8fCBkZWZhdWx0TG9nRm9ybWF0XG5cbiAgcmV0dXJuIGxvZ0Zvcm1hdC5yZXBsYWNlKC97KFxcdyspfS9nLCAoXywga2V5OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoa2V5IGluIGNvbXBvbmVudHMpIHtcbiAgICAgIHJldHVybiBjb21wb25lbnRzW2tleSBhcyBrZXlvZiBMb2dDb21wb25lbnRzXSB8fCAnJ1xuICAgIH1cbiAgICByZXR1cm4gJydcbiAgfSlcbn1cbiIsCiAgICAiaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJ1xuXG5pbXBvcnQgdHlwZSB7IENvbG9yTWFwIH0gZnJvbSAnLi4vaW50ZXJmYWNlcydcblxuZXhwb3J0IGNvbnN0IExvZ0xldmVsQ29sb3JNYXA6IENvbG9yTWFwID0ge1xuICBJTkZPOiBjaGFsay5iZ0dyZWVuLmJsYWNrLFxuICBXQVJOSU5HOiBjaGFsay5iZ1llbGxvdy5ibGFjayxcbiAgRVJST1I6IGNoYWxrLmJnUmVkLmJsYWNrXG59XG5cbmV4cG9ydCBjb25zdCBIdHRwTWV0aG9kQ29sb3JNYXA6IENvbG9yTWFwID0ge1xuICBHRVQ6IGNoYWxrLmdyZWVuLFxuICBQT1NUOiBjaGFsay55ZWxsb3csXG4gIFBVVDogY2hhbGsuYmx1ZSxcbiAgUEFUQ0g6IGNoYWxrLm1hZ2VudGFCcmlnaHQsXG4gIERFTEVURTogY2hhbGsucmVkLFxuICBIRUFEOiBjaGFsay5jeWFuLFxuICBPUFRJT05TOiBjaGFsay5tYWdlbnRhXG59XG4iLAogICAgImltcG9ydCBjaGFsayBmcm9tICdjaGFsaydcblxuY29uc3QgdGltZVVuaXRzID0gW1xuICB7IHVuaXQ6ICdzJywgdGhyZXNob2xkOiAxZTksIGRlY2ltYWxQbGFjZXM6IDIgfSxcbiAgeyB1bml0OiAnbXMnLCB0aHJlc2hvbGQ6IDFlNiwgZGVjaW1hbFBsYWNlczogMCB9LFxuICB7IHVuaXQ6ICfCtXMnLCB0aHJlc2hvbGQ6IDFlMywgZGVjaW1hbFBsYWNlczogMCB9LFxuICB7IHVuaXQ6ICducycsIHRocmVzaG9sZDogMSwgZGVjaW1hbFBsYWNlczogMCB9XG5dXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGR1cmF0aW9uU3RyaW5nKFxuICBiZWZvcmVUaW1lOiBiaWdpbnQsXG4gIHVzZUNvbG9yczogYm9vbGVhblxuKTogc3RyaW5nIHtcbiAgY29uc3QgbmFub3NlY29uZHMgPSBOdW1iZXIocHJvY2Vzcy5ocnRpbWUuYmlnaW50KCkgLSBiZWZvcmVUaW1lKVxuXG4gIGZvciAoY29uc3QgeyB1bml0LCB0aHJlc2hvbGQsIGRlY2ltYWxQbGFjZXMgfSBvZiB0aW1lVW5pdHMpIHtcbiAgICBpZiAobmFub3NlY29uZHMgPj0gdGhyZXNob2xkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IChuYW5vc2Vjb25kcyAvIHRocmVzaG9sZCkudG9GaXhlZChkZWNpbWFsUGxhY2VzKVxuICAgICAgY29uc3QgdGltZVN0ciA9IGAke3ZhbHVlfSR7dW5pdH1gLnBhZFN0YXJ0KDgpLnBhZEVuZCgxNilcbiAgICAgIHJldHVybiB1c2VDb2xvcnMgPyBjaGFsay5ncmF5KHRpbWVTdHIpIDogdGltZVN0clxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1c2VDb2xvcnNcbiAgICA/IGNoYWxrLmdyYXkoJzBucycucGFkU3RhcnQoOCkucGFkRW5kKDE2KSlcbiAgICA6ICcwbnMnLnBhZFN0YXJ0KDgpLnBhZEVuZCgxNilcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBMb2dMZXZlbCB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBMb2dMZXZlbENvbG9yTWFwIH0gZnJvbSAnLi9jb2xvci1tYXBwaW5nJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb2dTdHJpbmcobGV2ZWw6IExvZ0xldmVsLCB1c2VDb2xvcnM6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBjb25zdCBsZXZlbFN0ciA9IGxldmVsLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIHVzZUNvbG9yc1xuICAgID8gTG9nTGV2ZWxDb2xvck1hcFtsZXZlbFN0cl0/LihsZXZlbFN0ci5wYWRFbmQoNykpIHx8IGxldmVsU3RyXG4gICAgOiBsZXZlbFN0ci5wYWRFbmQoNylcbn1cbiIsCiAgICAiaW1wb3J0IHsgSHR0cE1ldGhvZENvbG9yTWFwIH0gZnJvbSAnLi9jb2xvci1tYXBwaW5nJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXRob2RTdHJpbmcoXG4gIG1ldGhvZDogc3RyaW5nLFxuICB1c2VDb2xvcnM6IGJvb2xlYW5cbik6IHN0cmluZyB7XG4gIGNvbnN0IGNvbG9yRnVuY3Rpb24gPSBIdHRwTWV0aG9kQ29sb3JNYXBbbWV0aG9kXVxuICByZXR1cm4gdXNlQ29sb3JzICYmIGNvbG9yRnVuY3Rpb25cbiAgICA/IGNvbG9yRnVuY3Rpb24obWV0aG9kLnBhZEVuZCg3KSlcbiAgICA6IG1ldGhvZC5wYWRFbmQoNylcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBSZXF1ZXN0SW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhdGhTdHJpbmcoXG4gIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mb1xuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFVSTChyZXF1ZXN0SW5mby51cmwpLnBhdGhuYW1lXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7IFRpbWVzdGFtcENvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbi8vIGNvbnN0IERFRkFVTFRfVElNRVNUQU1QX0ZPUk1BVCA9ICd5eXl5LW1tLWRkIEhIOk1NOnNzJ1xuY29uc3QgU1lTX1RJTUUgPSAnU1lTOlNUQU5EQVJEJ1xuXG5jb25zdCBwYWQgPSAobjogbnVtYmVyKTogc3RyaW5nID0+IG4udG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpXG5cbmZ1bmN0aW9uIGZvcm1hdFN5c3RlbVRpbWUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKClcbiAgY29uc3QgbW9udGggPSBwYWQoZGF0ZS5nZXRNb250aCgpICsgMSlcbiAgY29uc3QgZGF5ID0gcGFkKGRhdGUuZ2V0RGF0ZSgpKVxuICBjb25zdCBob3VycyA9IHBhZChkYXRlLmdldEhvdXJzKCkpXG4gIGNvbnN0IG1pbnV0ZXMgPSBwYWQoZGF0ZS5nZXRNaW51dGVzKCkpXG4gIGNvbnN0IHNlY29uZHMgPSBwYWQoZGF0ZS5nZXRTZWNvbmRzKCkpXG4gIGNvbnN0IG1zID0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDMsICcwJylcblxuICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9ICR7aG91cnN9OiR7bWludXRlc306JHtzZWNvbmRzfS4ke21zfWBcbn1cblxuZnVuY3Rpb24gZm9ybWF0Q3VzdG9tVGltZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHRva2VuczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSA9IHtcbiAgICB5eXl5OiBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgeXk6IGRhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpLnNsaWNlKC0yKSxcbiAgICBtbTogcGFkKGRhdGUuZ2V0TW9udGgoKSArIDEpLFxuICAgIGRkOiBwYWQoZGF0ZS5nZXREYXRlKCkpLFxuICAgIEhIOiBwYWQoZGF0ZS5nZXRIb3VycygpKSxcbiAgICBNTTogcGFkKGRhdGUuZ2V0TWludXRlcygpKSxcbiAgICBzczogcGFkKGRhdGUuZ2V0U2Vjb25kcygpKSxcbiAgICBTU1M6IHBhZChkYXRlLmdldE1pbGxpc2Vjb25kcygpKSxcbiAgICBaOiAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIC8gNjBcbiAgfVxuXG4gIHJldHVybiBmb3JtYXQucmVwbGFjZSgveXl5eXx5eXxtbXxkZHxISHxNTXxzc3xTU1N8Wi9nLCBtYXRjaCA9PlxuICAgICh0b2tlbnNbbWF0Y2hdID8/ICcnKS50b1N0cmluZygpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRpbWVzdGFtcChkYXRlOiBEYXRlLCBjb25maWc/OiBUaW1lc3RhbXBDb25maWcpOiBzdHJpbmcge1xuICBpZiAoIWNvbmZpZyB8fCAhY29uZmlnLnRyYW5zbGF0ZVRpbWUpIHtcbiAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpXG4gIH1cblxuICBpZiAoY29uZmlnLnRyYW5zbGF0ZVRpbWUgPT09IHRydWUgfHwgY29uZmlnLnRyYW5zbGF0ZVRpbWUgPT09IFNZU19USU1FKSB7XG4gICAgcmV0dXJuIGZvcm1hdFN5c3RlbVRpbWUoZGF0ZSlcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRDdXN0b21UaW1lKGRhdGUsIGNvbmZpZy50cmFuc2xhdGVUaW1lKVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7XG4gIExvZ0RhdGEsXG4gIExvZ0xldmVsLFxuICBPcHRpb25zLFxuICBSZXF1ZXN0SW5mbyxcbiAgU3RvcmVEYXRhXG59IGZyb20gJy4uL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBidWlsZExvZ01lc3NhZ2UgfSBmcm9tICcuLi9sb2dnZXIvYnVpbGQtbG9nLW1lc3NhZ2UnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dUb1RyYW5zcG9ydHMoXG4gIGxldmVsOiBMb2dMZXZlbCxcbiAgcmVxdWVzdDogUmVxdWVzdEluZm8sXG4gIGRhdGE6IExvZ0RhdGEsXG4gIHN0b3JlOiBTdG9yZURhdGEsXG4gIG9wdGlvbnM/OiBPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFvcHRpb25zPy5jb25maWc/LnRyYW5zcG9ydHMgfHwgb3B0aW9ucy5jb25maWcudHJhbnNwb3J0cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IG1lc3NhZ2UgPSBidWlsZExvZ01lc3NhZ2UobGV2ZWwsIHJlcXVlc3QsIGRhdGEsIHN0b3JlLCBvcHRpb25zLCBmYWxzZSlcblxuICBjb25zdCBwcm9taXNlcyA9IG9wdGlvbnMuY29uZmlnLnRyYW5zcG9ydHMubWFwKHRyYW5zcG9ydCA9PlxuICAgIHRyYW5zcG9ydC5sb2cobGV2ZWwsIG1lc3NhZ2UsIHsgcmVxdWVzdCwgZGF0YSwgc3RvcmUgfSlcbiAgKVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxufVxuIiwKICAgICJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5pbXBvcnQgdHlwZSB7XG4gIExvZ0RhdGEsXG4gIExvZ0xldmVsLFxuICBPcHRpb25zLFxuICBSZXF1ZXN0SW5mbyxcbiAgU3RvcmVEYXRhXG59IGZyb20gJy4uL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBidWlsZExvZ01lc3NhZ2UgfSBmcm9tICcuLi9sb2dnZXIvYnVpbGQtbG9nLW1lc3NhZ2UnXG5cbmNvbnN0IGRpckNhY2hlID0gbmV3IFNldDxzdHJpbmc+KClcblxuYXN5bmMgZnVuY3Rpb24gZW5zdXJlRGlyZWN0b3J5RXhpc3RzKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZGlyID0gZGlybmFtZShmaWxlUGF0aClcbiAgaWYgKCFkaXJDYWNoZS5oYXMoZGlyKSkge1xuICAgIGF3YWl0IGZzLm1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICBkaXJDYWNoZS5hZGQoZGlyKVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dUb0ZpbGUoXG4gIGZpbGVQYXRoOiBzdHJpbmcsXG4gIGxldmVsOiBMb2dMZXZlbCxcbiAgcmVxdWVzdDogUmVxdWVzdEluZm8sXG4gIGRhdGE6IExvZ0RhdGEsXG4gIHN0b3JlOiBTdG9yZURhdGEsXG4gIG9wdGlvbnM/OiBPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZW5zdXJlRGlyZWN0b3J5RXhpc3RzKGZpbGVQYXRoKVxuICBjb25zdCBsb2dNZXNzYWdlID0gYCR7YnVpbGRMb2dNZXNzYWdlKGxldmVsLCByZXF1ZXN0LCBkYXRhLCBzdG9yZSwgb3B0aW9ucywgZmFsc2UpfVxcbmBcbiAgYXdhaXQgZnMuYXBwZW5kRmlsZShmaWxlUGF0aCwgbG9nTWVzc2FnZSwgeyBmbGFnOiAnYScgfSlcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBMb2dMZXZlbCwgT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbmNvbnN0IGNoZWNrRmlsdGVyID0gKGZpbHRlclZhbHVlOiB1bmtub3duLCB2YWx1ZTogdW5rbm93bikgPT5cbiAgQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZSlcbiAgICA/IGZpbHRlclZhbHVlLmluY2x1ZGVzKHZhbHVlKVxuICAgIDogZmlsdGVyVmFsdWUgPT09IHZhbHVlXG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJMb2coXG4gIGxvZ0xldmVsOiBMb2dMZXZlbCxcbiAgc3RhdHVzOiBudW1iZXIsXG4gIG1ldGhvZDogc3RyaW5nLFxuICBvcHRpb25zPzogT3B0aW9uc1xuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGZpbHRlciA9IG9wdGlvbnM/LmNvbmZpZz8ubG9nRmlsdGVyXG4gIGlmICghZmlsdGVyKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgKCFmaWx0ZXIubGV2ZWwgfHwgY2hlY2tGaWx0ZXIoZmlsdGVyLmxldmVsLCBsb2dMZXZlbCkpICYmXG4gICAgKCFmaWx0ZXIuc3RhdHVzIHx8IGNoZWNrRmlsdGVyKGZpbHRlci5zdGF0dXMsIHN0YXR1cykpICYmXG4gICAgKCFmaWx0ZXIubWV0aG9kIHx8IGNoZWNrRmlsdGVyKGZpbHRlci5tZXRob2QsIG1ldGhvZCkpXG4gIClcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBIdHRwRXJyb3IsIE9wdGlvbnMsIFJlcXVlc3RJbmZvLCBTdG9yZURhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgbG9nVG9GaWxlIH0gZnJvbSAnLi4vb3V0cHV0J1xuaW1wb3J0IHsgYnVpbGRMb2dNZXNzYWdlIH0gZnJvbSAnLi9idWlsZC1sb2ctbWVzc2FnZSdcblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUh0dHBFcnJvcihcbiAgcmVxdWVzdDogUmVxdWVzdEluZm8sXG4gIGVycm9yOiBIdHRwRXJyb3IsXG4gIHN0b3JlOiBTdG9yZURhdGEsXG4gIG9wdGlvbnM/OiBPcHRpb25zXG4pOiB2b2lkIHtcbiAgY29uc3Qgc3RhdHVzQ29kZSA9IGVycm9yLnN0YXR1cyB8fCA1MDBcbiAgY29uc29sZS5lcnJvcihcbiAgICBidWlsZExvZ01lc3NhZ2UoJ0VSUk9SJywgcmVxdWVzdCwgeyBzdGF0dXM6IHN0YXR1c0NvZGUgfSwgc3RvcmUsIG9wdGlvbnMpXG4gIClcblxuICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW11cblxuICBpZiAob3B0aW9ucz8uY29uZmlnPy5sb2dGaWxlUGF0aCkge1xuICAgIHByb21pc2VzLnB1c2goXG4gICAgICBsb2dUb0ZpbGUoXG4gICAgICAgIG9wdGlvbnMuY29uZmlnLmxvZ0ZpbGVQYXRoLFxuICAgICAgICAnRVJST1InLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7IHN0YXR1czogc3RhdHVzQ29kZSB9LFxuICAgICAgICBzdG9yZSxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgKVxuICAgIClcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7XG4gIExvZ0RhdGEsXG4gIExvZ0xldmVsLFxuICBMb2dnZXIsXG4gIE9wdGlvbnMsXG4gIFJlcXVlc3RJbmZvLFxuICBTdG9yZURhdGFcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcydcbmltcG9ydCB7IGxvZ1RvRmlsZSwgbG9nVG9UcmFuc3BvcnRzIH0gZnJvbSAnLi4vb3V0cHV0J1xuaW1wb3J0IHsgYnVpbGRMb2dNZXNzYWdlIH0gZnJvbSAnLi9idWlsZC1sb2ctbWVzc2FnZSdcbmltcG9ydCB7IGZpbHRlckxvZyB9IGZyb20gJy4vZmlsdGVyJ1xuaW1wb3J0IHsgaGFuZGxlSHR0cEVycm9yIH0gZnJvbSAnLi9oYW5kbGUtaHR0cC1lcnJvcidcblxuZnVuY3Rpb24gZ2V0TWV0cmljcygpOiBMb2dEYXRhWydtZXRyaWNzJ10ge1xuICBjb25zdCBtZW1vcnlVc2FnZSA9IHByb2Nlc3MubWVtb3J5VXNhZ2UoKS5oZWFwVXNlZCAvIDEwMjQgLyAxMDI0IC8vIE1CXG4gIGNvbnN0IGNwdVVzYWdlID0gcHJvY2Vzcy5jcHVVc2FnZSgpXG5cbiAgcmV0dXJuIHtcbiAgICBtZW1vcnlVc2FnZSxcbiAgICBjcHVVc2FnZTogY3B1VXNhZ2UudXNlciAvIDEwMDAwMDAgLy8gY29udmVydCB0byBzZWNvbmRzXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9nKFxuICBsZXZlbDogTG9nTGV2ZWwsXG4gIHJlcXVlc3Q6IFJlcXVlc3RJbmZvLFxuICBkYXRhOiBMb2dEYXRhLFxuICBzdG9yZTogU3RvcmVEYXRhLFxuICBvcHRpb25zPzogT3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghZmlsdGVyTG9nKGxldmVsLCBkYXRhLnN0YXR1cyB8fCAyMDAsIHJlcXVlc3QubWV0aG9kLCBvcHRpb25zKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gQWRkIG1ldHJpY3MgaWYgbm90IHByb3ZpZGVkXG4gIGlmICghZGF0YS5tZXRyaWNzKSB7XG4gICAgZGF0YS5tZXRyaWNzID0gZ2V0TWV0cmljcygpXG4gIH1cblxuICAvLyBBZGQgc3RhY2sgdHJhY2UgZm9yIGVycm9yc1xuICBpZiAobGV2ZWwgPT09ICdFUlJPUicgJiYgIWRhdGEuc3RhY2spIHtcbiAgICBkYXRhLnN0YWNrID0gbmV3IEVycm9yKGBFcnJvcjogJHtkYXRhLm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InfWApLnN0YWNrXG4gIH1cblxuICBjb25zdCBsb2dNZXNzYWdlID0gYnVpbGRMb2dNZXNzYWdlKGxldmVsLCByZXF1ZXN0LCBkYXRhLCBzdG9yZSwgb3B0aW9ucywgdHJ1ZSlcbiAgY29uc29sZS5sb2cobG9nTWVzc2FnZSlcblxuICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW11cblxuICBpZiAob3B0aW9ucz8uY29uZmlnPy5sb2dGaWxlUGF0aCkge1xuICAgIHByb21pc2VzLnB1c2goXG4gICAgICBsb2dUb0ZpbGUoXG4gICAgICAgIG9wdGlvbnMuY29uZmlnLmxvZ0ZpbGVQYXRoLFxuICAgICAgICBsZXZlbCxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIG9wdGlvbnNcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBpZiAob3B0aW9ucz8uY29uZmlnPy50cmFuc3BvcnRzPy5sZW5ndGgpIHtcbiAgICBwcm9taXNlcy5wdXNoKGxvZ1RvVHJhbnNwb3J0cyhsZXZlbCwgcmVxdWVzdCwgZGF0YSwgc3RvcmUsIG9wdGlvbnMpKVxuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2dnZXIob3B0aW9ucz86IE9wdGlvbnMpOiBMb2dnZXIge1xuICByZXR1cm4ge1xuICAgIGxvZzogKGxldmVsLCByZXF1ZXN0LCBkYXRhLCBzdG9yZSkgPT5cbiAgICAgIGxvZyhsZXZlbCwgcmVxdWVzdCwgZGF0YSwgc3RvcmUsIG9wdGlvbnMpLFxuICAgIGhhbmRsZUh0dHBFcnJvcjogKHJlcXVlc3QsIGVycm9yLCBzdG9yZSkgPT5cbiAgICAgIGhhbmRsZUh0dHBFcnJvcihyZXF1ZXN0LCBlcnJvciwgc3RvcmUsIG9wdGlvbnMpLFxuICAgIGN1c3RvbUxvZ0Zvcm1hdDogb3B0aW9ucz8uY29uZmlnPy5jdXN0b21Mb2dGb3JtYXRcbiAgfVxufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIm96QkFBdUIsSUFBdkIsb0JDRUEsSUFBTSxFQUFnQixDQUFDLEVBQWMsSUFBMEIsQ0FDN0QsSUFBTSxFQUFnQixLQUFLLElBQUksR0FBSSxFQUFRLEVBQUssUUFBVSxDQUFDLEVBQ3JELEVBQVUsSUFBSSxPQUFPLENBQWEsRUFDeEMsTUFBTyxHQUFHLElBQVUsSUFBTyxJQUFVLE9BQU8sQ0FBSyxHQUduRCxTQUF3QixDQUFXLENBQUMsRUFBZ0IsRUFBeUIsQ0FDM0UsSUFBUSxXQUFVLE9BQU0sWUFBYSxFQUdyQyxHQUZtQixHQUFTLFFBQVEsdUJBQXlCLFNBRTdDLENBRWQsSUFBTSxFQUFRLFdBRFMsWUFBWSxRQUFRLHFCQUFxQixFQUFFLFVBRTVELEVBQVUscUNBQTBCLE9BQWMsS0FBWSxJQUM5RCxFQUFXLEtBQUssSUFBSSxFQUFNLE9BQVEsRUFBUSxNQUFNLEVBQUksRUFDcEQsRUFBUyxJQUFHLE9BQU8sQ0FBUSxFQUMzQixFQUFZLEVBQWMsR0FBSSxDQUFRLEVBRTVDLFFBQVEsSUFBSTtBQUFBLFNBQ1I7QUFBQSxTQUNBO0FBQUEsU0FDQSxFQUFjLEVBQU8sQ0FBUTtBQUFBLFNBQzdCO0FBQUEsU0FDQSxFQUFjLEVBQVMsQ0FBUTtBQUFBLFNBQy9CO0FBQUEsU0FDQTtBQUFBLEtBQ0gsRUFFRCxhQUFRLElBQUkscUNBQTBCLE9BQWMsS0FBWSxHQUFNLEVDOUJ4RCxJQUFsQixzQkFDQSxvQkFFTyxTQUFTLENBQWEsQ0FBQyxFQUFpQyxDQUM3RCxHQUFJLE9BQU8sSUFBVyxTQUNwQixPQUFPLEVBRVQsT0FBUSxZQUFxQyxJQUFXLElBRzFELFNBQXdCLENBQVksQ0FDbEMsRUFDQSxFQUNRLENBQ1IsSUFBTSxFQUFZLEVBQU8sU0FBUyxFQUNsQyxJQUFLLEVBQ0gsT0FBTyxFQUdULEdB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SUFBSSxNQUFNLFVBQVUsRUFBSyxTQUFXLGlCQUFpQixFQUFFLE1BR3RFLElBQU0sRUFBYSxFQUFnQixFQUFPLEVBQVMsRUFBTSxFQUFPLEVBQVMsRUFBSSxFQUM3RSxRQUFRLElBQUksQ0FBVSxFQUV0QixJQUFNLEVBQTRCLENBQUMsRUFFbkMsR0FBSSxHQUFTLFFBQVEsWUFDbkIsRUFBUyxLQUNQLEVBQ0UsRUFBUSxPQUFPLFlBQ2YsRUFDQSxFQUNBLEVBQ0EsRUFDQSxDQUNGLENBQ0YsRUFHRixHQUFJLEdBQVMsUUFBUSxZQUFZLE9BQy9CLEVBQVMsS0FBSyxFQUFnQixFQUFPLEVBQVMsRUFBTSxFQUFPLENBQU8sQ0FBQyxFQUdyRSxNQUFNLFFBQVEsSUFBSSxDQUFRLEVBR3JCLFNBQVMsQ0FBWSxDQUFDLEVBQTJCLENBQ3RELE1BQU8sQ0FDTCxJQUFLLENBQUMsRUFBTyxFQUFTLEVBQU0sSUFDMUIsR0FBSSxFQUFPLEVBQVMsRUFBTSxFQUFPLENBQU8sRUFDMUMsZ0JBQWlCLENBQUMsRUFBUyxFQUFPLElBQ2hDLEVBQWdCLEVBQVMsRUFBTyxFQUFPLENBQU8sRUFDaEQsZ0JBQWlCLEdBQVMsUUFBUSxlQUNwQyxFZHJFRixTQUF3QixDQUFVLENBQUMsRUFBMkIsQ0FDNUQsSUFBTSxFQUFNLEVBQWEsQ0FBTyxFQUVoQyxPQUFPLElBQUksU0FBTyxDQUNoQixLQUFNLFlBQ1IsQ0FBQyxFQUNFLFFBQVEsS0FBTyxDQUVkLEdBRDJCLEdBQVMsUUFBUSxvQkFBc0IsR0FFaEUsRUFBWSxFQUFJLE9BQWtCLENBQU8sRUFFNUMsRUFDQSxVQUFVLEtBQU8sQ0FDaEIsRUFBSSxNQUFRLENBQUUsV0FBWSxRQUFRLE9BQU8sT0FBTyxDQUFFLEVBQ25ELEVBQ0EsY0FBYyxDQUFFLEdBQUksUUFBUyxFQUFHLEVBQUcsVUFBUyxNQUFLLFdBQVksQ0FDNUQsSUFBTSxFQUFTLEVBQWMsRUFBSSxRQUFVLEdBQUcsRUFDOUMsRUFBSSxJQUNGLE9BQ0EsRUFDQSxDQUNFLFNBQ0EsUUFBUyxPQUFPLEVBQUksVUFBVSxjQUFnQixFQUFFLENBQ2xELEVBQ0EsQ0FDRixFQUNELEVBQ0EsUUFBUSxDQUFFLEdBQUksUUFBUyxFQUFHLEVBQUcsVUFBUyxRQUFPLE1BQUssV0FBWSxDQUM3RCxJQUFNLEVBQVMsRUFBYyxFQUFJLFFBQVUsR0FBRyxFQUM5QyxFQUFJLGdCQUNGLEVBQ0EsSUFBSyxFQUFPLFFBQU8sRUFDbkIsQ0FDRixFQUNEIiwKICAiZGVidWdJZCI6ICJBNEI2NUI4QUU0QUVFQUQ3NjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
|
|
12
|
+
//# debugId=6427CC7A4363BA1F64756E2164756E21
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9leHRlbnNpb25zL3N0YXJ0LXNlcnZlci50cyIsICIuLi9zcmMvaGVscGVycy9zdGF0dXMudHMiLCAiLi4vc3JjL2xvZ2dlci9idWlsZC1sb2ctbWVzc2FnZS50cyIsICIuLi9zcmMvaGVscGVycy9jb2xvci1tYXBwaW5nLnRzIiwgIi4uL3NyYy9oZWxwZXJzL2R1cmF0aW9uLnRzIiwgIi4uL3NyYy9oZWxwZXJzL2xvZy50cyIsICIuLi9zcmMvaGVscGVycy9tZXRob2QudHMiLCAiLi4vc3JjL2hlbHBlcnMvcGF0aC50cyIsICIuLi9zcmMvaGVscGVycy90aW1lc3RhbXAudHMiLCAiLi4vc3JjL291dHB1dC9jb25zb2xlLnRzIiwgIi4uL3NyYy9vdXRwdXQvZmlsZS50cyIsICIuLi9zcmMvbG9nZ2VyL2ZpbHRlci50cyIsICIuLi9zcmMvbG9nZ2VyL2hhbmRsZS1odHRwLWVycm9yLnRzIiwgIi4uL3NyYy9sb2dnZXIvY3JlYXRlLWxvZ2dlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICJpbXBvcnQgeyBFbHlzaWEgfSBmcm9tICdlbHlzaWEnXG5cbmltcG9ydCB7IHN0YXJ0U2VydmVyIH0gZnJvbSAnLi9leHRlbnNpb25zJ1xuaW1wb3J0IHsgZ2V0U3RhdHVzQ29kZSB9IGZyb20gJy4vaGVscGVycy9zdGF0dXMnXG5pbXBvcnQgdHlwZSB7IEh0dHBFcnJvciwgT3B0aW9ucywgU2VydmVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxvZ2l4bHlzaWEob3B0aW9ucz86IE9wdGlvbnMpOiBFbHlzaWEge1xuICBjb25zdCBsb2cgPSBjcmVhdGVMb2dnZXIob3B0aW9ucylcblxuICByZXR1cm4gbmV3IEVseXNpYSh7XG4gICAgbmFtZTogJ0xvZ2l4bHlzaWEnXG4gIH0pXG4gICAgLm9uU3RhcnQoY3R4ID0+IHtcbiAgICAgIGNvbnN0IHNob3dTdGFydHVwTWVzc2FnZSA9IG9wdGlvbnM/LmNvbmZpZz8uc2hvd1N0YXJ0dXBNZXNzYWdlID8/IHRydWVcbiAgICAgIGlmIChzaG93U3RhcnR1cE1lc3NhZ2UpIHtcbiAgICAgICAgc3RhcnRTZXJ2ZXIoY3R4LnNlcnZlciBhcyBTZXJ2ZXIsIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfSlcbiAgICAub25SZXF1ZXN0KGN0eCA9PiB7XG4gICAgICBjdHguc3RvcmUgPSB7IGJlZm9yZVRpbWU6IHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCgpIH1cbiAgICB9KVxuICAgIC5vbkFmdGVySGFuZGxlKHsgYXM6ICdnbG9iYWwnIH0sICh7IHJlcXVlc3QsIHNldCwgc3RvcmUgfSkgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzQ29kZShzZXQuc3RhdHVzIHx8IDIwMClcbiAgICAgIGxvZy5sb2coXG4gICAgICAgICdJTkZPJyxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAge1xuICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICBtZXNzYWdlOiBTdHJpbmcoc2V0LmhlYWRlcnM/LlsneC1tZXNzYWdlJ10gfHwgJycpXG4gICAgICAgIH0sXG4gICAgICAgIHN0b3JlIGFzIHsgYmVmb3JlVGltZTogYmlnaW50IH1cbiAgICAgIClcbiAgICB9KVxuICAgIC5vbkVycm9yKHsgYXM6ICdnbG9iYWwnIH0sICh7IHJlcXVlc3QsIGVycm9yLCBzZXQsIHN0b3JlIH0pID0+IHtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1c0NvZGUoc2V0LnN0YXR1cyB8fCA1MDApXG4gICAgICBsb2cuaGFuZGxlSHR0cEVycm9yKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7IC4uLmVycm9yLCBzdGF0dXMgfSBhcyBIdHRwRXJyb3IsXG4gICAgICAgIHN0b3JlIGFzIHsgYmVmb3JlVGltZTogYmlnaW50IH1cbiAgICAgIClcbiAgICB9KVxufVxuXG5leHBvcnQgeyBjcmVhdGVMb2dnZXIsIGhhbmRsZUh0dHBFcnJvciB9IGZyb20gJy4vbG9nZ2VyJ1xuZXhwb3J0IHsgbG9nVG9UcmFuc3BvcnRzIH0gZnJvbSAnLi9vdXRwdXQnXG5leHBvcnQgdHlwZSB7XG4gIExvZ2dlcixcbiAgTG9nTGV2ZWwsXG4gIExvZ0RhdGEsXG4gIFJlcXVlc3RJbmZvLFxuICBTdG9yZURhdGEsXG4gIEh0dHBFcnJvcixcbiAgVHJhbnNwb3J0LFxuICBPcHRpb25zXG59IGZyb20gJy4vaW50ZXJmYWNlcydcbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBPcHRpb25zLCBTZXJ2ZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzJ1xuXG5jb25zdCBjcmVhdGVCb3hUZXh0ID0gKHRleHQ6IHN0cmluZywgd2lkdGg6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHBhZGRpbmdMZW5ndGggPSBNYXRoLm1heCgwLCAod2lkdGggLSB0ZXh0Lmxlbmd0aCkgLyAyKVxuICBjb25zdCBwYWRkaW5nID0gJyAnLnJlcGVhdChwYWRkaW5nTGVuZ3RoKVxuICByZXR1cm4gYCR7cGFkZGluZ30ke3RleHR9JHtwYWRkaW5nfWAucGFkRW5kKHdpZHRoKVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydFNlcnZlcihjb25maWc6IFNlcnZlciwgb3B0aW9ucz86IE9wdGlvbnMpOiB2b2lkIHtcbiAgY29uc3QgaG9zdG5hbWUgPSBjb25maWc/Lmhvc3RuYW1lID8/ICdsb2NhbGhvc3QnXG4gIGNvbnN0IHBvcnQgPSBjb25maWc/LnBvcnQgPz8gMzAwMFxuICBjb25zdCBwcm90b2NvbCA9IGNvbmZpZz8ucHJvdG9jb2wgPz8gJ2h0dHAnXG4gIGNvbnN0IHNob3dCYW5uZXIgPSBvcHRpb25zPy5jb25maWc/LnN0YXJ0dXBNZXNzYWdlRm9ybWF0ICE9PSAnc2ltcGxlJ1xuXG4gIGlmIChzaG93QmFubmVyKSB7XG4gICAgY29uc3QgdGl0bGUgPSAnRWx5c2lhIHdpdGggTG9naXhseXNpYSdcbiAgICBjb25zdCBtZXNzYWdlID0gYPCfpoogRWx5c2lhIGlzIHJ1bm5pbmcgYXQgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfToke3BvcnR9YFxuICAgIGNvbnN0IGJveFdpZHRoID0gTWF0aC5tYXgodGl0bGUubGVuZ3RoLCBtZXNzYWdlLmxlbmd0aCkgKyA0XG4gICAgY29uc3QgYm9yZGVyID0gJ+KUgCcucmVwZWF0KGJveFdpZHRoKVxuICAgIGNvbnN0IGVtcHR5TGluZSA9IGNyZWF0ZUJveFRleHQoJycsIGJveFdpZHRoKVxuXG4gICAgY29uc29sZS5sb2coYFxuICAgICAg4pSMJHtib3JkZXJ94pSQXG4gICAgICDilIIke2VtcHR5TGluZX3ilIJcbiAgICAgIOKUgiR7Y3JlYXRlQm94VGV4dCh0aXRsZSwgYm94V2lkdGgpfeKUglxuICAgICAg4pSCJHtlbXB0eUxpbmV94pSCXG4gICAgICDilIIke2NyZWF0ZUJveFRleHQobWVzc2FnZSwgYm94V2lkdGgpfeKUglxuICAgICAg4pSCJHtlbXB0eUxpbmV94pSCXG4gICAgICDilJQke2JvcmRlcn3ilJhcbiAgICBgKVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKGDwn6aKIEVseXNpYSBpcyBydW5uaW5nIGF0ICR7cHJvdG9jb2x9Oi8vJHtob3N0bmFtZX06JHtwb3J0fWApXG4gIH1cbn1cbiIsCiAgICAiaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJ1xuaW1wb3J0IHsgU3RhdHVzTWFwIH0gZnJvbSAnZWx5c2lhJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzQ29kZShzdGF0dXM6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh0eXBlb2Ygc3RhdHVzID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBzdGF0dXNcbiAgfVxuICByZXR1cm4gKFN0YXR1c01hcCBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KVtzdGF0dXNdIHx8IDUwMFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGF0dXNTdHJpbmcoXG4gIHN0YXR1czogbnVtYmVyLFxuICB1c2VDb2xvcnM6IGJvb2xlYW5cbik6IHN0cmluZyB7XG4gIGNvbnN0IHN0YXR1c1N0ciA9IHN0YXR1cy50b1N0cmluZygpXG4gIGlmICghdXNlQ29sb3JzKSB7XG4gICAgcmV0dXJuIHN0YXR1c1N0clxuICB9XG5cbiAgaWYgKHN0YXR1cyA+PSA1MDApIHtcbiAgICByZXR1cm4gY2hhbGsucmVkKHN0YXR1c1N0cilcbiAgfVxuICBpZiAoc3RhdHVzID49IDQwMCkge1xuICAgIHJldHVybiBjaGFsay55ZWxsb3coc3RhdHVzU3RyKVxuICB9XG4gIGlmIChzdGF0dXMgPj0gMzAwKSB7XG4gICAgcmV0dXJuIGNoYWxrLmN5YW4oc3RhdHVzU3RyKVxuICB9XG4gIGlmIChzdGF0dXMgPj0gMjAwKSB7XG4gICAgcmV0dXJuIGNoYWxrLmdyZWVuKHN0YXR1c1N0cilcbiAgfVxuICByZXR1cm4gY2hhbGsud2hpdGUoc3RhdHVzU3RyKVxufVxuIiwKICAgICJpbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnXG5cbmltcG9ydCB7XG4gIGR1cmF0aW9uU3RyaW5nLFxuICBmb3JtYXRUaW1lc3RhbXAsXG4gIGxvZ1N0cmluZyxcbiAgbWV0aG9kU3RyaW5nLFxuICBwYXRoU3RyaW5nLFxuICBzdGF0dXNTdHJpbmdcbn0gZnJvbSAnLi4vaGVscGVycydcbmltcG9ydCB0eXBlIHtcbiAgTG9nQ29tcG9uZW50cyxcbiAgTG9nRGF0YSxcbiAgTG9nTGV2ZWwsXG4gIE9wdGlvbnMsXG4gIFJlcXVlc3RJbmZvLFxuICBTdG9yZURhdGFcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcydcblxuY29uc3QgZGVmYXVsdExvZ0Zvcm1hdCA9XG4gICfwn6aKIHtub3d9IHtsZXZlbH0ge2R1cmF0aW9ufSB7bWV0aG9kfSB7cGF0aG5hbWV9IHtzdGF0dXN9IHttZXNzYWdlfSB7aXB9J1xuXG5mdW5jdGlvbiBzaG91bGRVc2VDb2xvcnModXNlQ29sb3JzOiBib29sZWFuLCBvcHRpb25zPzogT3B0aW9ucyk6IGJvb2xlYW4ge1xuICBpZiAob3B0aW9ucz8uY29uZmlnPy51c2VDb2xvcnMgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBvcHRpb25zLmNvbmZpZy51c2VDb2xvcnMgJiYgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPT09IHVuZGVmaW5lZFxuICB9XG4gIHJldHVybiB1c2VDb2xvcnMgJiYgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPT09IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRMb2dNZXNzYWdlKFxuICBsZXZlbDogTG9nTGV2ZWwsXG4gIHJlcXVlc3Q6IFJlcXVlc3RJbmZvLFxuICBkYXRhOiBMb2dEYXRhLFxuICBzdG9yZTogU3RvcmVEYXRhLFxuICBvcHRpb25zPzogT3B0aW9ucyxcbiAgdXNlQ29sb3JzID0gdHJ1ZVxuKTogc3RyaW5nIHtcbiAgY29uc3QgYWN0dWFsbHlVc2VDb2xvcnMgPSBzaG91bGRVc2VDb2xvcnModXNlQ29sb3JzLCBvcHRpb25zKVxuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpXG4gIGNvbnN0IGNvbXBvbmVudHM6IExvZ0NvbXBvbmVudHMgPSB7XG4gICAgbm93OiBhY3R1YWxseVVzZUNvbG9yc1xuICAgICAgPyBjaGFsay5iZ1llbGxvdyhcbiAgICAgICAgICBjaGFsay5ibGFjayhmb3JtYXRUaW1lc3RhbXAobm93LCBvcHRpb25zPy5jb25maWc/LnRpbWVzdGFtcCkpXG4gICAgICAgIClcbiAgICAgIDogZm9ybWF0VGltZXN0YW1wKG5vdywgb3B0aW9ucz8uY29uZmlnPy50aW1lc3RhbXApLFxuICAgIGVwb2NoOiBNYXRoLmZsb29yKG5vdy5nZXRUaW1lKCkgLyAxMDAwKS50b1N0cmluZygpLFxuICAgIGxldmVsOiBsb2dTdHJpbmcobGV2ZWwsIHVzZUNvbG9ycyksXG4gICAgZHVyYXRpb246IGR1cmF0aW9uU3RyaW5nKHN0b3JlLmJlZm9yZVRpbWUsIHVzZUNvbG9ycyksXG4gICAgbWV0aG9kOiBtZXRob2RTdHJpbmcocmVxdWVzdC5tZXRob2QsIHVzZUNvbG9ycyksXG4gICAgcGF0aG5hbWU6IHBhdGhTdHJpbmcocmVxdWVzdCksXG4gICAgc3RhdHVzOiBzdGF0dXNTdHJpbmcoZGF0YS5zdGF0dXMgfHwgMjAwLCB1c2VDb2xvcnMpLFxuICAgIG1lc3NhZ2U6IGRhdGEubWVzc2FnZSB8fCAnJyxcbiAgICBpcDpcbiAgICAgIG9wdGlvbnM/LmNvbmZpZz8uaXAgJiYgcmVxdWVzdC5oZWFkZXJzLmdldCgneC1mb3J3YXJkZWQtZm9yJylcbiAgICAgICAgPyBgSVA6ICR7cmVxdWVzdC5oZWFkZXJzLmdldCgneC1mb3J3YXJkZWQtZm9yJyl9YFxuICAgICAgICA6ICcnXG4gIH1cblxuICBjb25zdCBsb2dGb3JtYXQgPSBvcHRpb25zPy5jb25maWc/LmN1c3RvbUxvZ0Zvcm1hdCB8fCBkZWZhdWx0TG9nRm9ybWF0XG5cbiAgcmV0dXJuIGxvZ0Zvcm1hdC5yZXBsYWNlKC97KFxcdyspfS9nLCAoXywga2V5OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoa2V5IGluIGNvbXBvbmVudHMpIHtcbiAgICAgIHJldHVybiBjb21wb25lbnRzW2tleSBhcyBrZXlvZiBMb2dDb21wb25lbnRzXSB8fCAnJ1xuICAgIH1cbiAgICByZXR1cm4gJydcbiAgfSlcbn1cbiIsCiAgICAiaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJ1xuXG5pbXBvcnQgdHlwZSB7IENvbG9yTWFwIH0gZnJvbSAnLi4vaW50ZXJmYWNlcydcblxuZXhwb3J0IGNvbnN0IExvZ0xldmVsQ29sb3JNYXA6IENvbG9yTWFwID0ge1xuICBJTkZPOiBjaGFsay5iZ0dyZWVuLmJsYWNrLFxuICBXQVJOSU5HOiBjaGFsay5iZ1llbGxvdy5ibGFjayxcbiAgRVJST1I6IGNoYWxrLmJnUmVkLmJsYWNrXG59XG5cbmV4cG9ydCBjb25zdCBIdHRwTWV0aG9kQ29sb3JNYXA6IENvbG9yTWFwID0ge1xuICBHRVQ6IGNoYWxrLmdyZWVuLFxuICBQT1NUOiBjaGFsay55ZWxsb3csXG4gIFBVVDogY2hhbGsuYmx1ZSxcbiAgUEFUQ0g6IGNoYWxrLm1hZ2VudGFCcmlnaHQsXG4gIERFTEVURTogY2hhbGsucmVkLFxuICBIRUFEOiBjaGFsay5jeWFuLFxuICBPUFRJT05TOiBjaGFsay5tYWdlbnRhXG59XG4iLAogICAgImltcG9ydCBjaGFsayBmcm9tICdjaGFsaydcblxuY29uc3QgdGltZVVuaXRzID0gW1xuICB7IHVuaXQ6ICdzJywgdGhyZXNob2xkOiAxZTksIGRlY2ltYWxQbGFjZXM6IDIgfSxcbiAgeyB1bml0OiAnbXMnLCB0aHJlc2hvbGQ6IDFlNiwgZGVjaW1hbFBsYWNlczogMCB9LFxuICB7IHVuaXQ6ICfCtXMnLCB0aHJlc2hvbGQ6IDFlMywgZGVjaW1hbFBsYWNlczogMCB9LFxuICB7IHVuaXQ6ICducycsIHRocmVzaG9sZDogMSwgZGVjaW1hbFBsYWNlczogMCB9XG5dXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGR1cmF0aW9uU3RyaW5nKFxuICBiZWZvcmVUaW1lOiBiaWdpbnQsXG4gIHVzZUNvbG9yczogYm9vbGVhblxuKTogc3RyaW5nIHtcbiAgY29uc3QgbmFub3NlY29uZHMgPSBOdW1iZXIocHJvY2Vzcy5ocnRpbWUuYmlnaW50KCkgLSBiZWZvcmVUaW1lKVxuXG4gIGZvciAoY29uc3QgeyB1bml0LCB0aHJlc2hvbGQsIGRlY2ltYWxQbGFjZXMgfSBvZiB0aW1lVW5pdHMpIHtcbiAgICBpZiAobmFub3NlY29uZHMgPj0gdGhyZXNob2xkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IChuYW5vc2Vjb25kcyAvIHRocmVzaG9sZCkudG9GaXhlZChkZWNpbWFsUGxhY2VzKVxuICAgICAgY29uc3QgdGltZVN0ciA9IGAke3ZhbHVlfSR7dW5pdH1gLnBhZFN0YXJ0KDgpLnBhZEVuZCgxNilcbiAgICAgIHJldHVybiB1c2VDb2xvcnMgPyBjaGFsay5ncmF5KHRpbWVTdHIpIDogdGltZVN0clxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1c2VDb2xvcnNcbiAgICA/IGNoYWxrLmdyYXkoJzBucycucGFkU3RhcnQoOCkucGFkRW5kKDE2KSlcbiAgICA6ICcwbnMnLnBhZFN0YXJ0KDgpLnBhZEVuZCgxNilcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBMb2dMZXZlbCB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBMb2dMZXZlbENvbG9yTWFwIH0gZnJvbSAnLi9jb2xvci1tYXBwaW5nJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb2dTdHJpbmcobGV2ZWw6IExvZ0xldmVsLCB1c2VDb2xvcnM6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBjb25zdCBsZXZlbFN0ciA9IGxldmVsLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIHVzZUNvbG9yc1xuICAgID8gTG9nTGV2ZWxDb2xvck1hcFtsZXZlbFN0cl0/LihsZXZlbFN0ci5wYWRFbmQoNykpIHx8IGxldmVsU3RyXG4gICAgOiBsZXZlbFN0ci5wYWRFbmQoNylcbn1cbiIsCiAgICAiaW1wb3J0IHsgSHR0cE1ldGhvZENvbG9yTWFwIH0gZnJvbSAnLi9jb2xvci1tYXBwaW5nJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXRob2RTdHJpbmcoXG4gIG1ldGhvZDogc3RyaW5nLFxuICB1c2VDb2xvcnM6IGJvb2xlYW5cbik6IHN0cmluZyB7XG4gIGNvbnN0IGNvbG9yRnVuY3Rpb24gPSBIdHRwTWV0aG9kQ29sb3JNYXBbbWV0aG9kXVxuICByZXR1cm4gdXNlQ29sb3JzICYmIGNvbG9yRnVuY3Rpb25cbiAgICA/IGNvbG9yRnVuY3Rpb24obWV0aG9kLnBhZEVuZCg3KSlcbiAgICA6IG1ldGhvZC5wYWRFbmQoNylcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBSZXF1ZXN0SW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhdGhTdHJpbmcoXG4gIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mb1xuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFVSTChyZXF1ZXN0SW5mby51cmwpLnBhdGhuYW1lXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7IFRpbWVzdGFtcENvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbi8vIGNvbnN0IERFRkFVTFRfVElNRVNUQU1QX0ZPUk1BVCA9ICd5eXl5LW1tLWRkIEhIOk1NOnNzJ1xuY29uc3QgU1lTX1RJTUUgPSAnU1lTOlNUQU5EQVJEJ1xuXG5jb25zdCBwYWQgPSAobjogbnVtYmVyKTogc3RyaW5nID0+IG4udG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpXG5cbmZ1bmN0aW9uIGZvcm1hdFN5c3RlbVRpbWUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKClcbiAgY29uc3QgbW9udGggPSBwYWQoZGF0ZS5nZXRNb250aCgpICsgMSlcbiAgY29uc3QgZGF5ID0gcGFkKGRhdGUuZ2V0RGF0ZSgpKVxuICBjb25zdCBob3VycyA9IHBhZChkYXRlLmdldEhvdXJzKCkpXG4gIGNvbnN0IG1pbnV0ZXMgPSBwYWQoZGF0ZS5nZXRNaW51dGVzKCkpXG4gIGNvbnN0IHNlY29uZHMgPSBwYWQoZGF0ZS5nZXRTZWNvbmRzKCkpXG4gIGNvbnN0IG1zID0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDMsICcwJylcblxuICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9ICR7aG91cnN9OiR7bWludXRlc306JHtzZWNvbmRzfS4ke21zfWBcbn1cblxuZnVuY3Rpb24gZm9ybWF0Q3VzdG9tVGltZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHRva2VuczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSA9IHtcbiAgICB5eXl5OiBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgeXk6IGRhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpLnNsaWNlKC0yKSxcbiAgICBtbTogcGFkKGRhdGUuZ2V0TW9udGgoKSArIDEpLFxuICAgIGRkOiBwYWQoZGF0ZS5nZXREYXRlKCkpLFxuICAgIEhIOiBwYWQoZGF0ZS5nZXRIb3VycygpKSxcbiAgICBNTTogcGFkKGRhdGUuZ2V0TWludXRlcygpKSxcbiAgICBzczogcGFkKGRhdGUuZ2V0U2Vjb25kcygpKSxcbiAgICBTU1M6IHBhZChkYXRlLmdldE1pbGxpc2Vjb25kcygpKSxcbiAgICBaOiAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIC8gNjBcbiAgfVxuXG4gIHJldHVybiBmb3JtYXQucmVwbGFjZSgveXl5eXx5eXxtbXxkZHxISHxNTXxzc3xTU1N8Wi9nLCBtYXRjaCA9PlxuICAgICh0b2tlbnNbbWF0Y2hdID8/ICcnKS50b1N0cmluZygpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRpbWVzdGFtcChkYXRlOiBEYXRlLCBjb25maWc/OiBUaW1lc3RhbXBDb25maWcpOiBzdHJpbmcge1xuICBpZiAoIWNvbmZpZyB8fCAhY29uZmlnLnRyYW5zbGF0ZVRpbWUpIHtcbiAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpXG4gIH1cblxuICBpZiAoY29uZmlnLnRyYW5zbGF0ZVRpbWUgPT09IHRydWUgfHwgY29uZmlnLnRyYW5zbGF0ZVRpbWUgPT09IFNZU19USU1FKSB7XG4gICAgcmV0dXJuIGZvcm1hdFN5c3RlbVRpbWUoZGF0ZSlcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRDdXN0b21UaW1lKGRhdGUsIGNvbmZpZy50cmFuc2xhdGVUaW1lKVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7XG4gIExvZ0RhdGEsXG4gIExvZ0xldmVsLFxuICBPcHRpb25zLFxuICBSZXF1ZXN0SW5mbyxcbiAgU3RvcmVEYXRhXG59IGZyb20gJy4uL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBidWlsZExvZ01lc3NhZ2UgfSBmcm9tICcuLi9sb2dnZXIvYnVpbGQtbG9nLW1lc3NhZ2UnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dUb1RyYW5zcG9ydHMoXG4gIGxldmVsOiBMb2dMZXZlbCxcbiAgcmVxdWVzdDogUmVxdWVzdEluZm8sXG4gIGRhdGE6IExvZ0RhdGEsXG4gIHN0b3JlOiBTdG9yZURhdGEsXG4gIG9wdGlvbnM/OiBPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFvcHRpb25zPy5jb25maWc/LnRyYW5zcG9ydHMgfHwgb3B0aW9ucy5jb25maWcudHJhbnNwb3J0cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IG1lc3NhZ2UgPSBidWlsZExvZ01lc3NhZ2UobGV2ZWwsIHJlcXVlc3QsIGRhdGEsIHN0b3JlLCBvcHRpb25zLCBmYWxzZSlcblxuICBjb25zdCBwcm9taXNlcyA9IG9wdGlvbnMuY29uZmlnLnRyYW5zcG9ydHMubWFwKHRyYW5zcG9ydCA9PlxuICAgIHRyYW5zcG9ydC5sb2cobGV2ZWwsIG1lc3NhZ2UsIHsgcmVxdWVzdCwgZGF0YSwgc3RvcmUgfSlcbiAgKVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxufVxuIiwKICAgICJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5pbXBvcnQgdHlwZSB7XG4gIExvZ0RhdGEsXG4gIExvZ0xldmVsLFxuICBPcHRpb25zLFxuICBSZXF1ZXN0SW5mbyxcbiAgU3RvcmVEYXRhXG59IGZyb20gJy4uL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBidWlsZExvZ01lc3NhZ2UgfSBmcm9tICcuLi9sb2dnZXIvYnVpbGQtbG9nLW1lc3NhZ2UnXG5cbmNvbnN0IGRpckNhY2hlID0gbmV3IFNldDxzdHJpbmc+KClcblxuYXN5bmMgZnVuY3Rpb24gZW5zdXJlRGlyZWN0b3J5RXhpc3RzKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZGlyID0gZGlybmFtZShmaWxlUGF0aClcbiAgaWYgKCFkaXJDYWNoZS5oYXMoZGlyKSkge1xuICAgIGF3YWl0IGZzLm1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICBkaXJDYWNoZS5hZGQoZGlyKVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dUb0ZpbGUoXG4gIGZpbGVQYXRoOiBzdHJpbmcsXG4gIGxldmVsOiBMb2dMZXZlbCxcbiAgcmVxdWVzdDogUmVxdWVzdEluZm8sXG4gIGRhdGE6IExvZ0RhdGEsXG4gIHN0b3JlOiBTdG9yZURhdGEsXG4gIG9wdGlvbnM/OiBPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZW5zdXJlRGlyZWN0b3J5RXhpc3RzKGZpbGVQYXRoKVxuICBjb25zdCBsb2dNZXNzYWdlID0gYCR7YnVpbGRMb2dNZXNzYWdlKGxldmVsLCByZXF1ZXN0LCBkYXRhLCBzdG9yZSwgb3B0aW9ucywgZmFsc2UpfVxcbmBcbiAgYXdhaXQgZnMuYXBwZW5kRmlsZShmaWxlUGF0aCwgbG9nTWVzc2FnZSwgeyBmbGFnOiAnYScgfSlcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBMb2dMZXZlbCwgT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbmNvbnN0IGNoZWNrRmlsdGVyID0gKGZpbHRlclZhbHVlOiB1bmtub3duLCB2YWx1ZTogdW5rbm93bikgPT5cbiAgQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZSlcbiAgICA/IGZpbHRlclZhbHVlLmluY2x1ZGVzKHZhbHVlKVxuICAgIDogZmlsdGVyVmFsdWUgPT09IHZhbHVlXG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJMb2coXG4gIGxvZ0xldmVsOiBMb2dMZXZlbCxcbiAgc3RhdHVzOiBudW1iZXIsXG4gIG1ldGhvZDogc3RyaW5nLFxuICBvcHRpb25zPzogT3B0aW9uc1xuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGZpbHRlciA9IG9wdGlvbnM/LmNvbmZpZz8ubG9nRmlsdGVyXG4gIGlmICghZmlsdGVyKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgKCFmaWx0ZXIubGV2ZWwgfHwgY2hlY2tGaWx0ZXIoZmlsdGVyLmxldmVsLCBsb2dMZXZlbCkpICYmXG4gICAgKCFmaWx0ZXIuc3RhdHVzIHx8IGNoZWNrRmlsdGVyKGZpbHRlci5zdGF0dXMsIHN0YXR1cykpICYmXG4gICAgKCFmaWx0ZXIubWV0aG9kIHx8IGNoZWNrRmlsdGVyKGZpbHRlci5tZXRob2QsIG1ldGhvZCkpXG4gIClcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBIdHRwRXJyb3IsIE9wdGlvbnMsIFJlcXVlc3RJbmZvLCBTdG9yZURhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgbG9nVG9GaWxlIH0gZnJvbSAnLi4vb3V0cHV0J1xuaW1wb3J0IHsgYnVpbGRMb2dNZXNzYWdlIH0gZnJvbSAnLi9idWlsZC1sb2ctbWVzc2FnZSdcblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUh0dHBFcnJvcihcbiAgcmVxdWVzdDogUmVxdWVzdEluZm8sXG4gIGVycm9yOiBIdHRwRXJyb3IsXG4gIHN0b3JlOiBTdG9yZURhdGEsXG4gIG9wdGlvbnM/OiBPcHRpb25zXG4pOiB2b2lkIHtcbiAgY29uc3Qgc3RhdHVzQ29kZSA9IGVycm9yLnN0YXR1cyB8fCA1MDBcbiAgY29uc29sZS5lcnJvcihcbiAgICBidWlsZExvZ01lc3NhZ2UoJ0VSUk9SJywgcmVxdWVzdCwgeyBzdGF0dXM6IHN0YXR1c0NvZGUgfSwgc3RvcmUsIG9wdGlvbnMpXG4gIClcblxuICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW11cblxuICBpZiAob3B0aW9ucz8uY29uZmlnPy5sb2dGaWxlUGF0aCkge1xuICAgIHByb21pc2VzLnB1c2goXG4gICAgICBsb2dUb0ZpbGUoXG4gICAgICAgIG9wdGlvbnMuY29uZmlnLmxvZ0ZpbGVQYXRoLFxuICAgICAgICAnRVJST1InLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7IHN0YXR1czogc3RhdHVzQ29kZSB9LFxuICAgICAgICBzdG9yZSxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgKVxuICAgIClcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7XG4gIExvZ0RhdGEsXG4gIExvZ0xldmVsLFxuICBMb2dnZXIsXG4gIE9wdGlvbnMsXG4gIFJlcXVlc3RJbmZvLFxuICBTdG9yZURhdGFcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcydcbmltcG9ydCB7IGxvZ1RvRmlsZSwgbG9nVG9UcmFuc3BvcnRzIH0gZnJvbSAnLi4vb3V0cHV0J1xuaW1wb3J0IHsgYnVpbGRMb2dNZXNzYWdlIH0gZnJvbSAnLi9idWlsZC1sb2ctbWVzc2FnZSdcbmltcG9ydCB7IGZpbHRlckxvZyB9IGZyb20gJy4vZmlsdGVyJ1xuaW1wb3J0IHsgaGFuZGxlSHR0cEVycm9yIH0gZnJvbSAnLi9oYW5kbGUtaHR0cC1lcnJvcidcblxuZnVuY3Rpb24gZ2V0TWV0cmljcygpOiBMb2dEYXRhWydtZXRyaWNzJ10ge1xuICBjb25zdCBtZW1vcnlVc2FnZSA9IHByb2Nlc3MubWVtb3J5VXNhZ2UoKS5oZWFwVXNlZCAvIDEwMjQgLyAxMDI0IC8vIE1CXG4gIGNvbnN0IGNwdVVzYWdlID0gcHJvY2Vzcy5jcHVVc2FnZSgpXG5cbiAgcmV0dXJuIHtcbiAgICBtZW1vcnlVc2FnZSxcbiAgICBjcHVVc2FnZTogY3B1VXNhZ2UudXNlciAvIDEwMDAwMDAgLy8gY29udmVydCB0byBzZWNvbmRzXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9nKFxuICBsZXZlbDogTG9nTGV2ZWwsXG4gIHJlcXVlc3Q6IFJlcXVlc3RJbmZvLFxuICBkYXRhOiBMb2dEYXRhLFxuICBzdG9yZTogU3RvcmVEYXRhLFxuICBvcHRpb25zPzogT3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghZmlsdGVyTG9nKGxldmVsLCBkYXRhLnN0YXR1cyB8fCAyMDAsIHJlcXVlc3QubWV0aG9kLCBvcHRpb25zKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gQWRkIG1ldHJpY3MgaWYgbm90IHByb3ZpZGVkXG4gIGlmICghZGF0YS5tZXRyaWNzKSB7XG4gICAgZGF0YS5tZXRyaWNzID0gZ2V0TWV0cmljcygpXG4gIH1cblxuICAvLyBBZGQgc3RhY2sgdHJhY2UgZm9yIGVycm9yc1xuICBpZiAobGV2ZWwgPT09ICdFUlJPUicgJiYgIWRhdGEuc3RhY2spIHtcbiAgICBkYXRhLnN0YWNrID0gbmV3IEVycm9yKGBFcnJvcjogJHtkYXRhLm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InfWApLnN0YWNrXG4gIH1cblxuICBjb25zdCBsb2dNZXNzYWdlID0gYnVpbGRMb2dNZXNzYWdlKGxldmVsLCByZXF1ZXN0LCBkYXRhLCBzdG9yZSwgb3B0aW9ucywgdHJ1ZSlcbiAgY29uc29sZS5sb2cobG9nTWVzc2FnZSlcblxuICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW11cblxuICBpZiAob3B0aW9ucz8uY29uZmlnPy5sb2dGaWxlUGF0aCkge1xuICAgIHByb21pc2VzLnB1c2goXG4gICAgICBsb2dUb0ZpbGUoXG4gICAgICAgIG9wdGlvbnMuY29uZmlnLmxvZ0ZpbGVQYXRoLFxuICAgICAgICBsZXZlbCxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIG9wdGlvbnNcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBpZiAob3B0aW9ucz8uY29uZmlnPy50cmFuc3BvcnRzPy5sZW5ndGgpIHtcbiAgICBwcm9taXNlcy5wdXNoKGxvZ1RvVHJhbnNwb3J0cyhsZXZlbCwgcmVxdWVzdCwgZGF0YSwgc3RvcmUsIG9wdGlvbnMpKVxuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2dnZXIob3B0aW9ucz86IE9wdGlvbnMpOiBMb2dnZXIge1xuICByZXR1cm4ge1xuICAgIGxvZzogKGxldmVsLCByZXF1ZXN0LCBkYXRhLCBzdG9yZSkgPT5cbiAgICAgIGxvZyhsZXZlbCwgcmVxdWVzdCwgZGF0YSwgc3RvcmUsIG9wdGlvbnMpLFxuICAgIGhhbmRsZUh0dHBFcnJvcjogKHJlcXVlc3QsIGVycm9yLCBzdG9yZSkgPT5cbiAgICAgIGhhbmRsZUh0dHBFcnJvcihyZXF1ZXN0LCBlcnJvciwgc3RvcmUsIG9wdGlvbnMpLFxuICAgIGN1c3RvbUxvZ0Zvcm1hdDogb3B0aW9ucz8uY29uZmlnPy5jdXN0b21Mb2dGb3JtYXRcbiAgfVxufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIm96QkFBdUIsSUFBdkIsb0JDRUEsSUFBTSxFQUFnQixDQUFDLEVBQWMsSUFBMEIsQ0FDN0QsSUFBTSxFQUFnQixLQUFLLElBQUksR0FBSSxFQUFRLEVBQUssUUFBVSxDQUFDLEVBQ3JELEVBQVUsSUFBSSxPQUFPLENBQWEsRUFDeEMsTUFBTyxHQUFHLElBQVUsSUFBTyxJQUFVLE9BQU8sQ0FBSyxHQUduRCxTQUF3QixDQUFXLENBQUMsRUFBZ0IsRUFBeUIsQ0FDM0UsSUFBTSxFQUFXLEdBQVEsVUFBWSxZQUMvQixFQUFPLEdBQVEsTUFBUSxLQUN2QixFQUFXLEdBQVEsVUFBWSxPQUdyQyxHQUZtQixHQUFTLFFBQVEsdUJBQXlCLFNBRTdDLENBRWQsSUFBTSxFQUFVLHFDQUEwQixPQUFjLEtBQVksSUFDOUQsRUFBVyxLQUFLLElBQUksR0FBYyxFQUFRLE1BQU0sRUFBSSxFQUNwRCxFQUFTLElBQUcsT0FBTyxDQUFRLEVBQzNCLEVBQVksRUFBYyxHQUFJLENBQVEsRUFFNUMsUUFBUSxJQUFJO0FBQUEsU0FDUjtBQUFBLFNBQ0E7QUFBQSxTQUNBLEVBVFUseUJBU1csQ0FBUTtBQUFBLFNBQzdCO0FBQUEsU0FDQSxFQUFjLEVBQVMsQ0FBUTtBQUFBLFNBQy9CO0FBQUEsU0FDQTtBQUFBLEtBQ0gsRUFFRCxhQUFRLElBQUkscUNBQTBCLE9BQWMsS0FBWSxHQUFNLEVDL0J4RCxJQUFsQixzQkFDQSxvQkFFTyxTQUFTLENBQWEs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QSxFQUNBLEVBQ0EsRUFDZSxDQUNmLElBQUssRUFBVSxFQUFPLEVBQUssUUFBVSxJQUFLLEVBQVEsT0FBUSxDQUFPLEVBQy9ELE9BSUYsSUFBSyxFQUFLLFFBQ1IsRUFBSyxRQUFVLEdBQVcsRUFJNUIsR0FBSSxJQUFVLFVBQVksRUFBSyxNQUM3QixFQUFLLE1BQVEsSUFBSSxNQUFNLFVBQVUsRUFBSyxTQUFXLGlCQUFpQixFQUFFLE1BR3RFLElBQU0sRUFBYSxFQUFnQixFQUFPLEVBQVMsRUFBTSxFQUFPLEVBQVMsRUFBSSxFQUM3RSxRQUFRLElBQUksQ0FBVSxFQUV0QixJQUFNLEVBQTRCLENBQUMsRUFFbkMsR0FBSSxHQUFTLFFBQVEsWUFDbkIsRUFBUyxLQUNQLEVBQ0UsRUFBUSxPQUFPLFlBQ2YsRUFDQSxFQUNBLEVBQ0EsRUFDQSxDQUNGLENBQ0YsRUFHRixHQUFJLEdBQVMsUUFBUSxZQUFZLE9BQy9CLEVBQVMsS0FBSyxFQUFnQixFQUFPLEVBQVMsRUFBTSxFQUFPLENBQU8sQ0FBQyxFQUdyRSxNQUFNLFFBQVEsSUFBSSxDQUFRLEVBR3JCLFNBQVMsQ0FBWSxDQUFDLEVBQTJCLENBQ3RELE1BQU8sQ0FDTCxJQUFLLENBQUMsRUFBTyxFQUFTLEVBQU0sSUFDMUIsR0FBSSxFQUFPLEVBQVMsRUFBTSxFQUFPLENBQU8sRUFDMUMsZ0JBQWlCLENBQUMsRUFBUyxFQUFPLElBQ2hDLEVBQWdCLEVBQVMsRUFBTyxFQUFPLENBQU8sRUFDaEQsZ0JBQWlCLEdBQVMsUUFBUSxlQUNwQyxFZHJFRixTQUF3QixDQUFVLENBQUMsRUFBMkIsQ0FDNUQsSUFBTSxFQUFNLEVBQWEsQ0FBTyxFQUVoQyxPQUFPLElBQUksU0FBTyxDQUNoQixLQUFNLFlBQ1IsQ0FBQyxFQUNFLFFBQVEsS0FBTyxDQUVkLEdBRDJCLEdBQVMsUUFBUSxvQkFBc0IsR0FFaEUsRUFBWSxFQUFJLE9BQWtCLENBQU8sRUFFNUMsRUFDQSxVQUFVLEtBQU8sQ0FDaEIsRUFBSSxNQUFRLENBQUUsV0FBWSxRQUFRLE9BQU8sT0FBTyxDQUFFLEVBQ25ELEVBQ0EsY0FBYyxDQUFFLEdBQUksUUFBUyxFQUFHLEVBQUcsVUFBUyxNQUFLLFdBQVksQ0FDNUQsSUFBTSxFQUFTLEVBQWMsRUFBSSxRQUFVLEdBQUcsRUFDOUMsRUFBSSxJQUNGLE9BQ0EsRUFDQSxDQUNFLFNBQ0EsUUFBUyxPQUFPLEVBQUksVUFBVSxjQUFnQixFQUFFLENBQ2xELEVBQ0EsQ0FDRixFQUNELEVBQ0EsUUFBUSxDQUFFLEdBQUksUUFBUyxFQUFHLEVBQUcsVUFBUyxRQUFPLE1BQUssV0FBWSxDQUM3RCxJQUFNLEVBQVMsRUFBYyxFQUFJLFFBQVUsR0FBRyxFQUM5QyxFQUFJLGdCQUNGLEVBQ0EsSUFBSyxFQUFPLFFBQU8sRUFDbkIsQ0FDRixFQUNEIiwKICAiZGVidWdJZCI6ICI2NDI3Q0M3QTQzNjNCQTFGNjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { Elysia } from "elysia";
|
|
2
|
-
|
|
3
|
-
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/interfaces/index.d.ts
|
|
4
2
|
interface RequestInfo {
|
|
5
3
|
headers: {
|
|
6
4
|
get: (key: string) => string | null
|
|
@@ -65,22 +63,8 @@ interface Options {
|
|
|
65
63
|
timestamp?: TimestampConfig
|
|
66
64
|
};
|
|
67
65
|
}
|
|
68
|
-
|
|
69
|
-
//#endregion
|
|
70
|
-
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/logger/create-logger.d.ts
|
|
71
66
|
declare function createLogger(options?: Options): Logger;
|
|
72
|
-
|
|
73
|
-
//#endregion
|
|
74
|
-
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/logger/handle-http-error.d.ts
|
|
75
67
|
declare function handleHttpError(request: RequestInfo, error: HttpError, store: StoreData, options?: Options): void;
|
|
76
|
-
|
|
77
|
-
//#endregion
|
|
78
|
-
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/output/console.d.ts
|
|
79
68
|
declare function logToTransports(level: LogLevel, request: RequestInfo, data: LogData, store: StoreData, options?: Options): Promise<void>;
|
|
80
|
-
|
|
81
|
-
//#endregion
|
|
82
|
-
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/index.d.ts
|
|
83
69
|
declare function logixlysia(options?: Options): Elysia;
|
|
84
|
-
|
|
85
|
-
//#endregion
|
|
86
|
-
export { createLogger, logixlysia as default, handleHttpError, logToTransports };
|
|
70
|
+
export { logToTransports, handleHttpError, logixlysia as default, createLogger, Transport, StoreData, RequestInfo, Options, Logger, LogLevel, LogData, HttpError };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { Elysia } from "elysia";
|
|
2
|
-
|
|
3
|
-
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/interfaces/index.d.ts
|
|
4
2
|
interface RequestInfo {
|
|
5
3
|
headers: {
|
|
6
4
|
get: (key: string) => string | null
|
|
@@ -65,22 +63,8 @@ interface Options {
|
|
|
65
63
|
timestamp?: TimestampConfig
|
|
66
64
|
};
|
|
67
65
|
}
|
|
68
|
-
|
|
69
|
-
//#endregion
|
|
70
|
-
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/logger/create-logger.d.ts
|
|
71
66
|
declare function createLogger(options?: Options): Logger;
|
|
72
|
-
|
|
73
|
-
//#endregion
|
|
74
|
-
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/logger/handle-http-error.d.ts
|
|
75
67
|
declare function handleHttpError(request: RequestInfo, error: HttpError, store: StoreData, options?: Options): void;
|
|
76
|
-
|
|
77
|
-
//#endregion
|
|
78
|
-
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/output/console.d.ts
|
|
79
68
|
declare function logToTransports(level: LogLevel, request: RequestInfo, data: LogData, store: StoreData, options?: Options): Promise<void>;
|
|
80
|
-
|
|
81
|
-
//#endregion
|
|
82
|
-
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/index.d.ts
|
|
83
69
|
declare function logixlysia(options?: Options): Elysia;
|
|
84
|
-
|
|
85
|
-
//#endregion
|
|
86
|
-
export { createLogger, logixlysia as default, handleHttpError, logToTransports };
|
|
70
|
+
export { logToTransports, handleHttpError, logixlysia as default, createLogger, Transport, StoreData, RequestInfo, Options, Logger, LogLevel, LogData, HttpError };
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import{Elysia as z}from"elysia";var
|
|
2
|
-
┌${
|
|
3
|
-
│${
|
|
4
|
-
│${
|
|
5
|
-
│${
|
|
6
|
-
│${
|
|
7
|
-
│${
|
|
8
|
-
└${
|
|
9
|
-
`)}else console.log(`\uD83E\uDD8A Elysia is running at ${e}://${t}:${n}`)}import
|
|
10
|
-
`;await k.appendFile(o,i,{flag:"a"})}var
|
|
1
|
+
import{Elysia as z}from"elysia";var w=(o,r)=>{let t=Math.max(0,(r-o.length)/2),n=" ".repeat(t);return`${n}${o}${n}`.padEnd(r)};function h(o,r){let t=o?.hostname??"localhost",n=o?.port??3000,e=o?.protocol??"http";if(r?.config?.startupMessageFormat!=="simple"){let a=`\uD83E\uDD8A Elysia is running at ${e}://${t}:${n}`,m=Math.max(22,a.length)+4,R="─".repeat(m),u=w("",m);console.log(`
|
|
2
|
+
┌${R}┐
|
|
3
|
+
│${u}│
|
|
4
|
+
│${w("Elysia with Logixlysia",m)}│
|
|
5
|
+
│${u}│
|
|
6
|
+
│${w(a,m)}│
|
|
7
|
+
│${u}│
|
|
8
|
+
└${R}┘
|
|
9
|
+
`)}else console.log(`\uD83E\uDD8A Elysia is running at ${e}://${t}:${n}`)}import f from"chalk";import{StatusMap as U}from"elysia";function D(o){if(typeof o==="number")return o;return U[o]||500}function L(o,r){let t=o.toString();if(!r)return t;if(o>=500)return f.red(t);if(o>=400)return f.yellow(t);if(o>=300)return f.cyan(t);if(o>=200)return f.green(t);return f.white(t)}import C from"chalk";import l from"chalk";var M={INFO:l.bgGreen.black,WARNING:l.bgYellow.black,ERROR:l.bgRed.black},T={GET:l.green,POST:l.yellow,PUT:l.blue,PATCH:l.magentaBright,DELETE:l.red,HEAD:l.cyan,OPTIONS:l.magenta};import P from"chalk";var N=[{unit:"s",threshold:1e9,decimalPlaces:2},{unit:"ms",threshold:1e6,decimalPlaces:0},{unit:"µs",threshold:1000,decimalPlaces:0},{unit:"ns",threshold:1,decimalPlaces:0}];function d(o,r){let t=Number(process.hrtime.bigint()-o);for(let{unit:n,threshold:e,decimalPlaces:s}of N)if(t>=e){let a=`${(t/e).toFixed(s)}${n}`.padStart(8).padEnd(16);return r?P.gray(a):a}return r?P.gray("0ns".padStart(8).padEnd(16)):"0ns".padStart(8).padEnd(16)}function S(o,r){let t=o.toUpperCase();return r?M[t]?.(t.padEnd(7))||t:t.padEnd(7)}function x(o,r){let t=T[o];return r&&t?t(o.padEnd(7)):o.padEnd(7)}function b(o){try{return new URL(o.url).pathname}catch{return}}var g=(o)=>o.toString().padStart(2,"0");function q(o){let r=o.getFullYear(),t=g(o.getMonth()+1),n=g(o.getDate()),e=g(o.getHours()),s=g(o.getMinutes()),i=g(o.getSeconds()),a=o.getMilliseconds().toString().padStart(3,"0");return`${r}-${t}-${n} ${e}:${s}:${i}.${a}`}function B(o,r){let t={yyyy:o.getFullYear(),yy:o.getFullYear().toString().slice(-2),mm:g(o.getMonth()+1),dd:g(o.getDate()),HH:g(o.getHours()),MM:g(o.getMinutes()),ss:g(o.getSeconds()),SSS:g(o.getMilliseconds()),Z:-o.getTimezoneOffset()/60};return r.replace(/yyyy|yy|mm|dd|HH|MM|ss|SSS|Z/g,(n)=>(t[n]??"").toString())}function v(o,r){if(!r||!r.translateTime)return o.toISOString();if(r.translateTime===!0||r.translateTime==="SYS:STANDARD")return q(o);return B(o,r.translateTime)}var A="\uD83E\uDD8A {now} {level} {duration} {method} {pathname} {status} {message} {ip}";function G(o,r){if(r?.config?.useColors!==void 0)return r.config.useColors&&process.env.NO_COLOR===void 0;return o&&process.env.NO_COLOR===void 0}function p(o,r,t,n,e,s=!0){let i=G(s,e),a=new Date,m={now:i?C.bgYellow(C.black(v(a,e?.config?.timestamp))):v(a,e?.config?.timestamp),epoch:Math.floor(a.getTime()/1000).toString(),level:S(o,s),duration:d(n.beforeTime,s),method:x(r.method,s),pathname:b(r),status:L(t.status||200,s),message:t.message||"",ip:e?.config?.ip&&r.headers.get("x-forwarded-for")?`IP: ${r.headers.get("x-forwarded-for")}`:""};return(e?.config?.customLogFormat||A).replace(/{(\w+)}/g,(u,F)=>{if(F in m)return m[F]||"";return""})}async function E(o,r,t,n,e){if(!e?.config?.transports||e.config.transports.length===0)return;let s=p(o,r,t,n,e,!1),i=e.config.transports.map((a)=>a.log(o,s,{request:r,data:t,store:n}));await Promise.all(i)}import{promises as k}from"node:fs";import{dirname as W}from"node:path";var I=new Set;async function Y(o){let r=W(o);if(!I.has(r))await k.mkdir(r,{recursive:!0}),I.add(r)}async function c(o,r,t,n,e,s){await Y(o);let i=`${p(r,t,n,e,s,!1)}
|
|
10
|
+
`;await k.appendFile(o,i,{flag:"a"})}var $=(o,r)=>Array.isArray(o)?o.includes(r):o===r;function H(o,r,t,n){let e=n?.config?.logFilter;if(!e)return!0;return(!e.level||$(e.level,o))&&(!e.status||$(e.status,r))&&(!e.method||$(e.method,t))}function O(o,r,t,n){let e=r.status||500;console.error(p("ERROR",o,{status:e},t,n));let s=[];if(n?.config?.logFilePath)s.push(c(n.config.logFilePath,"ERROR",o,{status:e},t,n))}function _(){let o=process.memoryUsage().heapUsed/1024/1024,r=process.cpuUsage();return{memoryUsage:o,cpuUsage:r.user/1e6}}async function j(o,r,t,n,e){if(!H(o,t.status||200,r.method,e))return;if(!t.metrics)t.metrics=_();if(o==="ERROR"&&!t.stack)t.stack=new Error(`Error: ${t.message||"Unknown error"}`).stack;let s=p(o,r,t,n,e,!0);console.log(s);let i=[];if(e?.config?.logFilePath)i.push(c(e.config.logFilePath,o,r,t,n,e));if(e?.config?.transports?.length)i.push(E(o,r,t,n,e));await Promise.all(i)}function y(o){return{log:(r,t,n,e)=>j(r,t,n,e,o),handleHttpError:(r,t,n)=>O(r,t,n,o),customLogFormat:o?.config?.customLogFormat}}function J(o){let r=y(o);return new z({name:"Logixlysia"}).onStart((t)=>{if(o?.config?.showStartupMessage??!0)h(t.server,o)}).onRequest((t)=>{t.store={beforeTime:process.hrtime.bigint()}}).onAfterHandle({as:"global"},({request:t,set:n,store:e})=>{let s=D(n.status||200);r.log("INFO",t,{status:s,message:String(n.headers?.["x-message"]||"")},e)}).onError({as:"global"},({request:t,error:n,set:e,store:s})=>{let i=D(e.status||500);r.handleHttpError(t,{...n,status:i},s)})}export{E as logToTransports,O as handleHttpError,J as default,y as createLogger};
|
|
11
11
|
|
|
12
|
-
//# debugId=
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9leHRlbnNpb25zL3N0YXJ0LXNlcnZlci50cyIsICIuLi9zcmMvaGVscGVycy9zdGF0dXMudHMiLCAiLi4vc3JjL2xvZ2dlci9idWlsZC1sb2ctbWVzc2FnZS50cyIsICIuLi9zcmMvaGVscGVycy9jb2xvci1tYXBwaW5nLnRzIiwgIi4uL3NyYy9oZWxwZXJzL2R1cmF0aW9uLnRzIiwgIi4uL3NyYy9oZWxwZXJzL2xvZy50cyIsICIuLi9zcmMvaGVscGVycy9tZXRob2QudHMiLCAiLi4vc3JjL2hlbHBlcnMvcGF0aC50cyIsICIuLi9zcmMvaGVscGVycy90aW1lc3RhbXAudHMiLCAiLi4vc3JjL291dHB1dC9jb25zb2xlLnRzIiwgIi4uL3NyYy9vdXRwdXQvZmlsZS50cyIsICIuLi9zcmMvbG9nZ2VyL2ZpbHRlci50cyIsICIuLi9zcmMvbG9nZ2VyL2hhbmRsZS1odHRwLWVycm9yLnRzIiwgIi4uL3NyYy9sb2dnZXIvY3JlYXRlLWxvZ2dlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICJpbXBvcnQgeyBFbHlzaWEgfSBmcm9tICdlbHlzaWEnXG5cbmltcG9ydCB7IHN0YXJ0U2VydmVyIH0gZnJvbSAnLi9leHRlbnNpb25zJ1xuaW1wb3J0IHsgZ2V0U3RhdHVzQ29kZSB9IGZyb20gJy4vaGVscGVycy9zdGF0dXMnXG5pbXBvcnQgdHlwZSB7IEh0dHBFcnJvciwgT3B0aW9ucywgU2VydmVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxvZ2l4bHlzaWEob3B0aW9ucz86IE9wdGlvbnMpOiBFbHlzaWEge1xuICBjb25zdCBsb2cgPSBjcmVhdGVMb2dnZXIob3B0aW9ucylcblxuICByZXR1cm4gbmV3IEVseXNpYSh7XG4gICAgbmFtZTogJ0xvZ2l4bHlzaWEnXG4gIH0pXG4gICAgLm9uU3RhcnQoY3R4ID0+IHtcbiAgICAgIGNvbnN0IHNob3dTdGFydHVwTWVzc2FnZSA9IG9wdGlvbnM/LmNvbmZpZz8uc2hvd1N0YXJ0dXBNZXNzYWdlID8/IHRydWVcbiAgICAgIGlmIChzaG93U3RhcnR1cE1lc3NhZ2UpIHtcbiAgICAgICAgc3RhcnRTZXJ2ZXIoY3R4LnNlcnZlciBhcyBTZXJ2ZXIsIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfSlcbiAgICAub25SZXF1ZXN0KGN0eCA9PiB7XG4gICAgICBjdHguc3RvcmUgPSB7IGJlZm9yZVRpbWU6IHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCgpIH1cbiAgICB9KVxuICAgIC5vbkFmdGVySGFuZGxlKHsgYXM6ICdnbG9iYWwnIH0sICh7IHJlcXVlc3QsIHNldCwgc3RvcmUgfSkgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzQ29kZShzZXQuc3RhdHVzIHx8IDIwMClcbiAgICAgIGxvZy5sb2coXG4gICAgICAgICdJTkZPJyxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAge1xuICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICBtZXNzYWdlOiBTdHJpbmcoc2V0LmhlYWRlcnM/LlsneC1tZXNzYWdlJ10gfHwgJycpXG4gICAgICAgIH0sXG4gICAgICAgIHN0b3JlIGFzIHsgYmVmb3JlVGltZTogYmlnaW50IH1cbiAgICAgIClcbiAgICB9KVxuICAgIC5vbkVycm9yKHsgYXM6ICdnbG9iYWwnIH0sICh7IHJlcXVlc3QsIGVycm9yLCBzZXQsIHN0b3JlIH0pID0+IHtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1c0NvZGUoc2V0LnN0YXR1cyB8fCA1MDApXG4gICAgICBsb2cuaGFuZGxlSHR0cEVycm9yKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7IC4uLmVycm9yLCBzdGF0dXMgfSBhcyBIdHRwRXJyb3IsXG4gICAgICAgIHN0b3JlIGFzIHsgYmVmb3JlVGltZTogYmlnaW50IH1cbiAgICAgIClcbiAgICB9KVxufVxuXG5leHBvcnQgeyBjcmVhdGVMb2dnZXIsIGhhbmRsZUh0dHBFcnJvciB9IGZyb20gJy4vbG9nZ2VyJ1xuZXhwb3J0IHsgbG9nVG9UcmFuc3BvcnRzIH0gZnJvbSAnLi9vdXRwdXQnXG4iLAogICAgImltcG9ydCB0eXBlIHsgT3B0aW9ucywgU2VydmVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcydcblxuY29uc3QgY3JlYXRlQm94VGV4dCA9ICh0ZXh0OiBzdHJpbmcsIHdpZHRoOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBwYWRkaW5nTGVuZ3RoID0gTWF0aC5tYXgoMCwgKHdpZHRoIC0gdGV4dC5sZW5ndGgpIC8gMilcbiAgY29uc3QgcGFkZGluZyA9ICcgJy5yZXBlYXQocGFkZGluZ0xlbmd0aClcbiAgcmV0dXJuIGAke3BhZGRpbmd9JHt0ZXh0fSR7cGFkZGluZ31gLnBhZEVuZCh3aWR0aClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRTZXJ2ZXIoY29uZmlnOiBTZXJ2ZXIsIG9wdGlvbnM/OiBPcHRpb25zKTogdm9pZCB7XG4gIGNvbnN0IHsgaG9zdG5hbWUsIHBvcnQsIHByb3RvY29sIH0gPSBjb25maWdcbiAgY29uc3Qgc2hvd0Jhbm5lciA9IG9wdGlvbnM/LmNvbmZpZz8uc3RhcnR1cE1lc3NhZ2VGb3JtYXQgIT09ICdzaW1wbGUnXG5cbiAgaWYgKHNob3dCYW5uZXIpIHtcbiAgICBjb25zdCBFTFlTSUFfVkVSU0lPTiA9IGltcG9ydC5tZXRhLnJlcXVpcmUoJ2VseXNpYS9wYWNrYWdlLmpzb24nKS52ZXJzaW9uXG4gICAgY29uc3QgdGl0bGUgPSBgRWx5c2lhIHYke0VMWVNJQV9WRVJTSU9OfWBcbiAgICBjb25zdCBtZXNzYWdlID0gYPCfpoogRWx5c2lhIGlzIHJ1bm5pbmcgYXQgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfToke3BvcnR9YFxuICAgIGNvbnN0IGJveFdpZHRoID0gTWF0aC5tYXgodGl0bGUubGVuZ3RoLCBtZXNzYWdlLmxlbmd0aCkgKyA0XG4gICAgY29uc3QgYm9yZGVyID0gJ+KUgCcucmVwZWF0KGJveFdpZHRoKVxuICAgIGNvbnN0IGVtcHR5TGluZSA9IGNyZWF0ZUJveFRleHQoJycsIGJveFdpZHRoKVxuXG4gICAgY29uc29sZS5sb2coYFxuICAgICAg4pSMJHtib3JkZXJ94pSQXG4gICAgICDilIIke2VtcHR5TGluZX3ilIJcbiAgICAgIOKUgiR7Y3JlYXRlQm94VGV4dCh0aXRsZSwgYm94V2lkdGgpfeKUglxuICAgICAg4pSCJHtlbXB0eUxpbmV94pSCXG4gICAgICDilIIke2NyZWF0ZUJveFRleHQobWVzc2FnZSwgYm94V2lkdGgpfeKUglxuICAgICAg4pSCJHtlbXB0eUxpbmV94pSCXG4gICAgICDilJQke2JvcmRlcn3ilJhcbiAgICBgKVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKGDwn6aKIEVseXNpYSBpcyBydW5uaW5nIGF0ICR7cHJvdG9jb2x9Oi8vJHtob3N0bmFtZX06JHtwb3J0fWApXG4gIH1cbn1cbiIsCiAgICAiaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJ1xuaW1wb3J0IHsgU3RhdHVzTWFwIH0gZnJvbSAnZWx5c2lhJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzQ29kZShzdGF0dXM6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh0eXBlb2Ygc3RhdHVzID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBzdGF0dXNcbiAgfVxuICByZXR1cm4gKFN0YXR1c01hcCBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KVtzdGF0dXNdIHx8IDUwMFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGF0dXNTdHJpbmcoXG4gIHN0YXR1czogbnVtYmVyLFxuICB1c2VDb2xvcnM6IGJvb2xlYW5cbik6IHN0cmluZyB7XG4gIGNvbnN0IHN0YXR1c1N0ciA9IHN0YXR1cy50b1N0cmluZygpXG4gIGlmICghdXNlQ29sb3JzKSB7XG4gICAgcmV0dXJuIHN0YXR1c1N0clxuICB9XG5cbiAgaWYgKHN0YXR1cyA+PSA1MDApIHtcbiAgICByZXR1cm4gY2hhbGsucmVkKHN0YXR1c1N0cilcbiAgfVxuICBpZiAoc3RhdHVzID49IDQwMCkge1xuICAgIHJldHVybiBjaGFsay55ZWxsb3coc3RhdHVzU3RyKVxuICB9XG4gIGlmIChzdGF0dXMgPj0gMzAwKSB7XG4gICAgcmV0dXJuIGNoYWxrLmN5YW4oc3RhdHVzU3RyKVxuICB9XG4gIGlmIChzdGF0dXMgPj0gMjAwKSB7XG4gICAgcmV0dXJuIGNoYWxrLmdyZWVuKHN0YXR1c1N0cilcbiAgfVxuICByZXR1cm4gY2hhbGsud2hpdGUoc3RhdHVzU3RyKVxufVxuIiwKICAgICJpbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnXG5cbmltcG9ydCB7XG4gIGR1cmF0aW9uU3RyaW5nLFxuICBmb3JtYXRUaW1lc3RhbXAsXG4gIGxvZ1N0cmluZyxcbiAgbWV0aG9kU3RyaW5nLFxuICBwYXRoU3RyaW5nLFxuICBzdGF0dXNTdHJpbmdcbn0gZnJvbSAnLi4vaGVscGVycydcbmltcG9ydCB0eXBlIHtcbiAgTG9nQ29tcG9uZW50cyxcbiAgTG9nRGF0YSxcbiAgTG9nTGV2ZWwsXG4gIE9wdGlvbnMsXG4gIFJlcXVlc3RJbmZvLFxuICBTdG9yZURhdGFcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcydcblxuY29uc3QgZGVmYXVsdExvZ0Zvcm1hdCA9XG4gICfwn6aKIHtub3d9IHtsZXZlbH0ge2R1cmF0aW9ufSB7bWV0aG9kfSB7cGF0aG5hbWV9IHtzdGF0dXN9IHttZXNzYWdlfSB7aXB9J1xuXG5mdW5jdGlvbiBzaG91bGRVc2VDb2xvcnModXNlQ29sb3JzOiBib29sZWFuLCBvcHRpb25zPzogT3B0aW9ucyk6IGJvb2xlYW4ge1xuICBpZiAob3B0aW9ucz8uY29uZmlnPy51c2VDb2xvcnMgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBvcHRpb25zLmNvbmZpZy51c2VDb2xvcnMgJiYgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPT09IHVuZGVmaW5lZFxuICB9XG4gIHJldHVybiB1c2VDb2xvcnMgJiYgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPT09IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRMb2dNZXNzYWdlKFxuICBsZXZlbDogTG9nTGV2ZWwsXG4gIHJlcXVlc3Q6IFJlcXVlc3RJbmZvLFxuICBkYXRhOiBMb2dEYXRhLFxuICBzdG9yZTogU3RvcmVEYXRhLFxuICBvcHRpb25zPzogT3B0aW9ucyxcbiAgdXNlQ29sb3JzID0gdHJ1ZVxuKTogc3RyaW5nIHtcbiAgY29uc3QgYWN0dWFsbHlVc2VDb2xvcnMgPSBzaG91bGRVc2VDb2xvcnModXNlQ29sb3JzLCBvcHRpb25zKVxuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpXG4gIGNvbnN0IGNvbXBvbmVudHM6IExvZ0NvbXBvbmVudHMgPSB7XG4gICAgbm93OiBhY3R1YWxseVVzZUNvbG9yc1xuICAgICAgPyBjaGFsay5iZ1llbGxvdyhcbiAgICAgICAgICBjaGFsay5ibGFjayhmb3JtYXRUaW1lc3RhbXAobm93LCBvcHRpb25zPy5jb25maWc/LnRpbWVzdGFtcCkpXG4gICAgICAgIClcbiAgICAgIDogZm9ybWF0VGltZXN0YW1wKG5vdywgb3B0aW9ucz8uY29uZmlnPy50aW1lc3RhbXApLFxuICAgIGVwb2NoOiBNYXRoLmZsb29yKG5vdy5nZXRUaW1lKCkgLyAxMDAwKS50b1N0cmluZygpLFxuICAgIGxldmVsOiBsb2dTdHJpbmcobGV2ZWwsIHVzZUNvbG9ycyksXG4gICAgZHVyYXRpb246IGR1cmF0aW9uU3RyaW5nKHN0b3JlLmJlZm9yZVRpbWUsIHVzZUNvbG9ycyksXG4gICAgbWV0aG9kOiBtZXRob2RTdHJpbmcocmVxdWVzdC5tZXRob2QsIHVzZUNvbG9ycyksXG4gICAgcGF0aG5hbWU6IHBhdGhTdHJpbmcocmVxdWVzdCksXG4gICAgc3RhdHVzOiBzdGF0dXNTdHJpbmcoZGF0YS5zdGF0dXMgfHwgMjAwLCB1c2VDb2xvcnMpLFxuICAgIG1lc3NhZ2U6IGRhdGEubWVzc2FnZSB8fCAnJyxcbiAgICBpcDpcbiAgICAgIG9wdGlvbnM/LmNvbmZpZz8uaXAgJiYgcmVxdWVzdC5oZWFkZXJzLmdldCgneC1mb3J3YXJkZWQtZm9yJylcbiAgICAgICAgPyBgSVA6ICR7cmVxdWVzdC5oZWFkZXJzLmdldCgneC1mb3J3YXJkZWQtZm9yJyl9YFxuICAgICAgICA6ICcnXG4gIH1cblxuICBjb25zdCBsb2dGb3JtYXQgPSBvcHRpb25zPy5jb25maWc/LmN1c3RvbUxvZ0Zvcm1hdCB8fCBkZWZhdWx0TG9nRm9ybWF0XG5cbiAgcmV0dXJuIGxvZ0Zvcm1hdC5yZXBsYWNlKC97KFxcdyspfS9nLCAoXywga2V5OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoa2V5IGluIGNvbXBvbmVudHMpIHtcbiAgICAgIHJldHVybiBjb21wb25lbnRzW2tleSBhcyBrZXlvZiBMb2dDb21wb25lbnRzXSB8fCAnJ1xuICAgIH1cbiAgICByZXR1cm4gJydcbiAgfSlcbn1cbiIsCiAgICAiaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJ1xuXG5pbXBvcnQgdHlwZSB7IENvbG9yTWFwIH0gZnJvbSAnLi4vaW50ZXJmYWNlcydcblxuZXhwb3J0IGNvbnN0IExvZ0xldmVsQ29sb3JNYXA6IENvbG9yTWFwID0ge1xuICBJTkZPOiBjaGFsay5iZ0dyZWVuLmJsYWNrLFxuICBXQVJOSU5HOiBjaGFsay5iZ1llbGxvdy5ibGFjayxcbiAgRVJST1I6IGNoYWxrLmJnUmVkLmJsYWNrXG59XG5cbmV4cG9ydCBjb25zdCBIdHRwTWV0aG9kQ29sb3JNYXA6IENvbG9yTWFwID0ge1xuICBHRVQ6IGNoYWxrLmdyZWVuLFxuICBQT1NUOiBjaGFsay55ZWxsb3csXG4gIFBVVDogY2hhbGsuYmx1ZSxcbiAgUEFUQ0g6IGNoYWxrLm1hZ2VudGFCcmlnaHQsXG4gIERFTEVURTogY2hhbGsucmVkLFxuICBIRUFEOiBjaGFsay5jeWFuLFxuICBPUFRJT05TOiBjaGFsay5tYWdlbnRhXG59XG4iLAogICAgImltcG9ydCBjaGFsayBmcm9tICdjaGFsaydcblxuY29uc3QgdGltZVVuaXRzID0gW1xuICB7IHVuaXQ6ICdzJywgdGhyZXNob2xkOiAxZTksIGRlY2ltYWxQbGFjZXM6IDIgfSxcbiAgeyB1bml0OiAnbXMnLCB0aHJlc2hvbGQ6IDFlNiwgZGVjaW1hbFBsYWNlczogMCB9LFxuICB7IHVuaXQ6ICfCtXMnLCB0aHJlc2hvbGQ6IDFlMywgZGVjaW1hbFBsYWNlczogMCB9LFxuICB7IHVuaXQ6ICducycsIHRocmVzaG9sZDogMSwgZGVjaW1hbFBsYWNlczogMCB9XG5dXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGR1cmF0aW9uU3RyaW5nKFxuICBiZWZvcmVUaW1lOiBiaWdpbnQsXG4gIHVzZUNvbG9yczogYm9vbGVhblxuKTogc3RyaW5nIHtcbiAgY29uc3QgbmFub3NlY29uZHMgPSBOdW1iZXIocHJvY2Vzcy5ocnRpbWUuYmlnaW50KCkgLSBiZWZvcmVUaW1lKVxuXG4gIGZvciAoY29uc3QgeyB1bml0LCB0aHJlc2hvbGQsIGRlY2ltYWxQbGFjZXMgfSBvZiB0aW1lVW5pdHMpIHtcbiAgICBpZiAobmFub3NlY29uZHMgPj0gdGhyZXNob2xkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IChuYW5vc2Vjb25kcyAvIHRocmVzaG9sZCkudG9GaXhlZChkZWNpbWFsUGxhY2VzKVxuICAgICAgY29uc3QgdGltZVN0ciA9IGAke3ZhbHVlfSR7dW5pdH1gLnBhZFN0YXJ0KDgpLnBhZEVuZCgxNilcbiAgICAgIHJldHVybiB1c2VDb2xvcnMgPyBjaGFsay5ncmF5KHRpbWVTdHIpIDogdGltZVN0clxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1c2VDb2xvcnNcbiAgICA/IGNoYWxrLmdyYXkoJzBucycucGFkU3RhcnQoOCkucGFkRW5kKDE2KSlcbiAgICA6ICcwbnMnLnBhZFN0YXJ0KDgpLnBhZEVuZCgxNilcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBMb2dMZXZlbCB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBMb2dMZXZlbENvbG9yTWFwIH0gZnJvbSAnLi9jb2xvci1tYXBwaW5nJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb2dTdHJpbmcobGV2ZWw6IExvZ0xldmVsLCB1c2VDb2xvcnM6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBjb25zdCBsZXZlbFN0ciA9IGxldmVsLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIHVzZUNvbG9yc1xuICAgID8gTG9nTGV2ZWxDb2xvck1hcFtsZXZlbFN0cl0/LihsZXZlbFN0ci5wYWRFbmQoNykpIHx8IGxldmVsU3RyXG4gICAgOiBsZXZlbFN0ci5wYWRFbmQoNylcbn1cbiIsCiAgICAiaW1wb3J0IHsgSHR0cE1ldGhvZENvbG9yTWFwIH0gZnJvbSAnLi9jb2xvci1tYXBwaW5nJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXRob2RTdHJpbmcoXG4gIG1ldGhvZDogc3RyaW5nLFxuICB1c2VDb2xvcnM6IGJvb2xlYW5cbik6IHN0cmluZyB7XG4gIGNvbnN0IGNvbG9yRnVuY3Rpb24gPSBIdHRwTWV0aG9kQ29sb3JNYXBbbWV0aG9kXVxuICByZXR1cm4gdXNlQ29sb3JzICYmIGNvbG9yRnVuY3Rpb25cbiAgICA/IGNvbG9yRnVuY3Rpb24obWV0aG9kLnBhZEVuZCg3KSlcbiAgICA6IG1ldGhvZC5wYWRFbmQoNylcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBSZXF1ZXN0SW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhdGhTdHJpbmcoXG4gIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mb1xuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFVSTChyZXF1ZXN0SW5mby51cmwpLnBhdGhuYW1lXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7IFRpbWVzdGFtcENvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbi8vIGNvbnN0IERFRkFVTFRfVElNRVNUQU1QX0ZPUk1BVCA9ICd5eXl5LW1tLWRkIEhIOk1NOnNzJ1xuY29uc3QgU1lTX1RJTUUgPSAnU1lTOlNUQU5EQVJEJ1xuXG5jb25zdCBwYWQgPSAobjogbnVtYmVyKTogc3RyaW5nID0+IG4udG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpXG5cbmZ1bmN0aW9uIGZvcm1hdFN5c3RlbVRpbWUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKClcbiAgY29uc3QgbW9udGggPSBwYWQoZGF0ZS5nZXRNb250aCgpICsgMSlcbiAgY29uc3QgZGF5ID0gcGFkKGRhdGUuZ2V0RGF0ZSgpKVxuICBjb25zdCBob3VycyA9IHBhZChkYXRlLmdldEhvdXJzKCkpXG4gIGNvbnN0IG1pbnV0ZXMgPSBwYWQoZGF0ZS5nZXRNaW51dGVzKCkpXG4gIGNvbnN0IHNlY29uZHMgPSBwYWQoZGF0ZS5nZXRTZWNvbmRzKCkpXG4gIGNvbnN0IG1zID0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDMsICcwJylcblxuICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9ICR7aG91cnN9OiR7bWludXRlc306JHtzZWNvbmRzfS4ke21zfWBcbn1cblxuZnVuY3Rpb24gZm9ybWF0Q3VzdG9tVGltZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHRva2VuczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSA9IHtcbiAgICB5eXl5OiBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgeXk6IGRhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpLnNsaWNlKC0yKSxcbiAgICBtbTogcGFkKGRhdGUuZ2V0TW9udGgoKSArIDEpLFxuICAgIGRkOiBwYWQoZGF0ZS5nZXREYXRlKCkpLFxuICAgIEhIOiBwYWQoZGF0ZS5nZXRIb3VycygpKSxcbiAgICBNTTogcGFkKGRhdGUuZ2V0TWludXRlcygpKSxcbiAgICBzczogcGFkKGRhdGUuZ2V0U2Vjb25kcygpKSxcbiAgICBTU1M6IHBhZChkYXRlLmdldE1pbGxpc2Vjb25kcygpKSxcbiAgICBaOiAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIC8gNjBcbiAgfVxuXG4gIHJldHVybiBmb3JtYXQucmVwbGFjZSgveXl5eXx5eXxtbXxkZHxISHxNTXxzc3xTU1N8Wi9nLCBtYXRjaCA9PlxuICAgICh0b2tlbnNbbWF0Y2hdID8/ICcnKS50b1N0cmluZygpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRpbWVzdGFtcChkYXRlOiBEYXRlLCBjb25maWc/OiBUaW1lc3RhbXBDb25maWcpOiBzdHJpbmcge1xuICBpZiAoIWNvbmZpZyB8fCAhY29uZmlnLnRyYW5zbGF0ZVRpbWUpIHtcbiAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpXG4gIH1cblxuICBpZiAoY29uZmlnLnRyYW5zbGF0ZVRpbWUgPT09IHRydWUgfHwgY29uZmlnLnRyYW5zbGF0ZVRpbWUgPT09IFNZU19USU1FKSB7XG4gICAgcmV0dXJuIGZvcm1hdFN5c3RlbVRpbWUoZGF0ZSlcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRDdXN0b21UaW1lKGRhdGUsIGNvbmZpZy50cmFuc2xhdGVUaW1lKVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7XG4gIExvZ0RhdGEsXG4gIExvZ0xldmVsLFxuICBPcHRpb25zLFxuICBSZXF1ZXN0SW5mbyxcbiAgU3RvcmVEYXRhXG59IGZyb20gJy4uL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBidWlsZExvZ01lc3NhZ2UgfSBmcm9tICcuLi9sb2dnZXIvYnVpbGQtbG9nLW1lc3NhZ2UnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dUb1RyYW5zcG9ydHMoXG4gIGxldmVsOiBMb2dMZXZlbCxcbiAgcmVxdWVzdDogUmVxdWVzdEluZm8sXG4gIGRhdGE6IExvZ0RhdGEsXG4gIHN0b3JlOiBTdG9yZURhdGEsXG4gIG9wdGlvbnM/OiBPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFvcHRpb25zPy5jb25maWc/LnRyYW5zcG9ydHMgfHwgb3B0aW9ucy5jb25maWcudHJhbnNwb3J0cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IG1lc3NhZ2UgPSBidWlsZExvZ01lc3NhZ2UobGV2ZWwsIHJlcXVlc3QsIGRhdGEsIHN0b3JlLCBvcHRpb25zLCBmYWxzZSlcblxuICBjb25zdCBwcm9taXNlcyA9IG9wdGlvbnMuY29uZmlnLnRyYW5zcG9ydHMubWFwKHRyYW5zcG9ydCA9PlxuICAgIHRyYW5zcG9ydC5sb2cobGV2ZWwsIG1lc3NhZ2UsIHsgcmVxdWVzdCwgZGF0YSwgc3RvcmUgfSlcbiAgKVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxufVxuIiwKICAgICJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5pbXBvcnQgdHlwZSB7XG4gIExvZ0RhdGEsXG4gIExvZ0xldmVsLFxuICBPcHRpb25zLFxuICBSZXF1ZXN0SW5mbyxcbiAgU3RvcmVEYXRhXG59IGZyb20gJy4uL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBidWlsZExvZ01lc3NhZ2UgfSBmcm9tICcuLi9sb2dnZXIvYnVpbGQtbG9nLW1lc3NhZ2UnXG5cbmNvbnN0IGRpckNhY2hlID0gbmV3IFNldDxzdHJpbmc+KClcblxuYXN5bmMgZnVuY3Rpb24gZW5zdXJlRGlyZWN0b3J5RXhpc3RzKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZGlyID0gZGlybmFtZShmaWxlUGF0aClcbiAgaWYgKCFkaXJDYWNoZS5oYXMoZGlyKSkge1xuICAgIGF3YWl0IGZzLm1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICBkaXJDYWNoZS5hZGQoZGlyKVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dUb0ZpbGUoXG4gIGZpbGVQYXRoOiBzdHJpbmcsXG4gIGxldmVsOiBMb2dMZXZlbCxcbiAgcmVxdWVzdDogUmVxdWVzdEluZm8sXG4gIGRhdGE6IExvZ0RhdGEsXG4gIHN0b3JlOiBTdG9yZURhdGEsXG4gIG9wdGlvbnM/OiBPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZW5zdXJlRGlyZWN0b3J5RXhpc3RzKGZpbGVQYXRoKVxuICBjb25zdCBsb2dNZXNzYWdlID0gYCR7YnVpbGRMb2dNZXNzYWdlKGxldmVsLCByZXF1ZXN0LCBkYXRhLCBzdG9yZSwgb3B0aW9ucywgZmFsc2UpfVxcbmBcbiAgYXdhaXQgZnMuYXBwZW5kRmlsZShmaWxlUGF0aCwgbG9nTWVzc2FnZSwgeyBmbGFnOiAnYScgfSlcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBMb2dMZXZlbCwgT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbmNvbnN0IGNoZWNrRmlsdGVyID0gKGZpbHRlclZhbHVlOiB1bmtub3duLCB2YWx1ZTogdW5rbm93bikgPT5cbiAgQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZSlcbiAgICA/IGZpbHRlclZhbHVlLmluY2x1ZGVzKHZhbHVlKVxuICAgIDogZmlsdGVyVmFsdWUgPT09IHZhbHVlXG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJMb2coXG4gIGxvZ0xldmVsOiBMb2dMZXZlbCxcbiAgc3RhdHVzOiBudW1iZXIsXG4gIG1ldGhvZDogc3RyaW5nLFxuICBvcHRpb25zPzogT3B0aW9uc1xuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGZpbHRlciA9IG9wdGlvbnM/LmNvbmZpZz8ubG9nRmlsdGVyXG4gIGlmICghZmlsdGVyKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgKCFmaWx0ZXIubGV2ZWwgfHwgY2hlY2tGaWx0ZXIoZmlsdGVyLmxldmVsLCBsb2dMZXZlbCkpICYmXG4gICAgKCFmaWx0ZXIuc3RhdHVzIHx8IGNoZWNrRmlsdGVyKGZpbHRlci5zdGF0dXMsIHN0YXR1cykpICYmXG4gICAgKCFmaWx0ZXIubWV0aG9kIHx8IGNoZWNrRmlsdGVyKGZpbHRlci5tZXRob2QsIG1ldGhvZCkpXG4gIClcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBIdHRwRXJyb3IsIE9wdGlvbnMsIFJlcXVlc3RJbmZvLCBTdG9yZURhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgbG9nVG9GaWxlIH0gZnJvbSAnLi4vb3V0cHV0J1xuaW1wb3J0IHsgYnVpbGRMb2dNZXNzYWdlIH0gZnJvbSAnLi9idWlsZC1sb2ctbWVzc2FnZSdcblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUh0dHBFcnJvcihcbiAgcmVxdWVzdDogUmVxdWVzdEluZm8sXG4gIGVycm9yOiBIdHRwRXJyb3IsXG4gIHN0b3JlOiBTdG9yZURhdGEsXG4gIG9wdGlvbnM/OiBPcHRpb25zXG4pOiB2b2lkIHtcbiAgY29uc3Qgc3RhdHVzQ29kZSA9IGVycm9yLnN0YXR1cyB8fCA1MDBcbiAgY29uc29sZS5lcnJvcihcbiAgICBidWlsZExvZ01lc3NhZ2UoJ0VSUk9SJywgcmVxdWVzdCwgeyBzdGF0dXM6IHN0YXR1c0NvZGUgfSwgc3RvcmUsIG9wdGlvbnMpXG4gIClcblxuICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW11cblxuICBpZiAob3B0aW9ucz8uY29uZmlnPy5sb2dGaWxlUGF0aCkge1xuICAgIHByb21pc2VzLnB1c2goXG4gICAgICBsb2dUb0ZpbGUoXG4gICAgICAgIG9wdGlvbnMuY29uZmlnLmxvZ0ZpbGVQYXRoLFxuICAgICAgICAnRVJST1InLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7IHN0YXR1czogc3RhdHVzQ29kZSB9LFxuICAgICAgICBzdG9yZSxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgKVxuICAgIClcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7XG4gIExvZ0RhdGEsXG4gIExvZ0xldmVsLFxuICBMb2dnZXIsXG4gIE9wdGlvbnMsXG4gIFJlcXVlc3RJbmZvLFxuICBTdG9yZURhdGFcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcydcbmltcG9ydCB7IGxvZ1RvRmlsZSwgbG9nVG9UcmFuc3BvcnRzIH0gZnJvbSAnLi4vb3V0cHV0J1xuaW1wb3J0IHsgYnVpbGRMb2dNZXNzYWdlIH0gZnJvbSAnLi9idWlsZC1sb2ctbWVzc2FnZSdcbmltcG9ydCB7IGZpbHRlckxvZyB9IGZyb20gJy4vZmlsdGVyJ1xuaW1wb3J0IHsgaGFuZGxlSHR0cEVycm9yIH0gZnJvbSAnLi9oYW5kbGUtaHR0cC1lcnJvcidcblxuZnVuY3Rpb24gZ2V0TWV0cmljcygpOiBMb2dEYXRhWydtZXRyaWNzJ10ge1xuICBjb25zdCBtZW1vcnlVc2FnZSA9IHByb2Nlc3MubWVtb3J5VXNhZ2UoKS5oZWFwVXNlZCAvIDEwMjQgLyAxMDI0IC8vIE1CXG4gIGNvbnN0IGNwdVVzYWdlID0gcHJvY2Vzcy5jcHVVc2FnZSgpXG5cbiAgcmV0dXJuIHtcbiAgICBtZW1vcnlVc2FnZSxcbiAgICBjcHVVc2FnZTogY3B1VXNhZ2UudXNlciAvIDEwMDAwMDAgLy8gY29udmVydCB0byBzZWNvbmRzXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9nKFxuICBsZXZlbDogTG9nTGV2ZWwsXG4gIHJlcXVlc3Q6IFJlcXVlc3RJbmZvLFxuICBkYXRhOiBMb2dEYXRhLFxuICBzdG9yZTogU3RvcmVEYXRhLFxuICBvcHRpb25zPzogT3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghZmlsdGVyTG9nKGxldmVsLCBkYXRhLnN0YXR1cyB8fCAyMDAsIHJlcXVlc3QubWV0aG9kLCBvcHRpb25zKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gQWRkIG1ldHJpY3MgaWYgbm90IHByb3ZpZGVkXG4gIGlmICghZGF0YS5tZXRyaWNzKSB7XG4gICAgZGF0YS5tZXRyaWNzID0gZ2V0TWV0cmljcygpXG4gIH1cblxuICAvLyBBZGQgc3RhY2sgdHJhY2UgZm9yIGVycm9yc1xuICBpZiAobGV2ZWwgPT09ICdFUlJPUicgJiYgIWRhdGEuc3RhY2spIHtcbiAgICBkYXRhLnN0YWNrID0gbmV3IEVycm9yKGBFcnJvcjogJHtkYXRhLm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InfWApLnN0YWNrXG4gIH1cblxuICBjb25zdCBsb2dNZXNzYWdlID0gYnVpbGRMb2dNZXNzYWdlKGxldmVsLCByZXF1ZXN0LCBkYXRhLCBzdG9yZSwgb3B0aW9ucywgdHJ1ZSlcbiAgY29uc29sZS5sb2cobG9nTWVzc2FnZSlcblxuICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW11cblxuICBpZiAob3B0aW9ucz8uY29uZmlnPy5sb2dGaWxlUGF0aCkge1xuICAgIHByb21pc2VzLnB1c2goXG4gICAgICBsb2dUb0ZpbGUoXG4gICAgICAgIG9wdGlvbnMuY29uZmlnLmxvZ0ZpbGVQYXRoLFxuICAgICAgICBsZXZlbCxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIG9wdGlvbnNcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBpZiAob3B0aW9ucz8uY29uZmlnPy50cmFuc3BvcnRzPy5sZW5ndGgpIHtcbiAgICBwcm9taXNlcy5wdXNoKGxvZ1RvVHJhbnNwb3J0cyhsZXZlbCwgcmVxdWVzdCwgZGF0YSwgc3RvcmUsIG9wdGlvbnMpKVxuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2dnZXIob3B0aW9ucz86IE9wdGlvbnMpOiBMb2dnZXIge1xuICByZXR1cm4ge1xuICAgIGxvZzogKGxldmVsLCByZXF1ZXN0LCBkYXRhLCBzdG9yZSkgPT5cbiAgICAgIGxvZyhsZXZlbCwgcmVxdWVzdCwgZGF0YSwgc3RvcmUsIG9wdGlvbnMpLFxuICAgIGhhbmRsZUh0dHBFcnJvcjogKHJlcXVlc3QsIGVycm9yLCBzdG9yZSkgPT5cbiAgICAgIGhhbmRsZUh0dHBFcnJvcihyZXF1ZXN0LCBlcnJvciwgc3RvcmUsIG9wdGlvbnMpLFxuICAgIGN1c3RvbUxvZ0Zvcm1hdDogb3B0aW9ucz8uY29uZmlnPy5jdXN0b21Mb2dGb3JtYXRcbiAgfVxufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIkFBQUEsaUJBQVMsZUNFVCxJQUFNLEVBQWdCLENBQUMsRUFBYyxJQUEwQixDQUM3RCxJQUFNLEVBQWdCLEtBQUssSUFBSSxHQUFJLEVBQVEsRUFBSyxRQUFVLENBQUMsRUFDckQsRUFBVSxJQUFJLE9BQU8sQ0FBYSxFQUN4QyxNQUFPLEdBQUcsSUFBVSxJQUFPLElBQVUsT0FBTyxDQUFLLEdBR25ELFNBQXdCLENBQVcsQ0FBQyxFQUFnQixFQUF5QixDQUMzRSxJQUFRLFdBQVUsT0FBTSxZQUFhLEVBR3JDLEdBRm1CLEdBQVMsUUFBUSx1QkFBeUIsU0FFN0MsQ0FFZCxJQUFNLEVBQVEsV0FEUyxZQUFZLFFBQVEscUJBQXFCLEVBQUUsVUFFNUQsRUFBVSxxQ0FBMEIsT0FBYyxLQUFZLElBQzlELEVBQVcsS0FBSyxJQUFJLEVBQU0sT0FBUSxFQUFRLE1BQU0sRUFBSSxFQUNwRCxFQUFTLElBQUcsT0FBTyxDQUFRLEVBQzNCLEVBQVksRUFBYyxHQUFJLENBQVEsRUFFNUMsUUFBUSxJQUFJO0FBQUEsU0FDUjtBQUFBLFNBQ0E7QUFBQSxTQUNBLEVBQWMsRUFBTyxDQUFRO0FBQUEsU0FDN0I7QUFBQSxTQUNBLEVBQWMsRUFBUyxDQUFRO0FBQUEsU0FDL0I7QUFBQSxTQUNBO0FBQUEsS0FDSCxFQUVELGFBQVEsSUFBSSxxQ0FBMEIsT0FBYyxLQUFZLEdBQU0sRUM5QjFFLHFCQUNBLG9CQUFTLGVBRUYsU0FBUyxDQUFhLENBQUMsRUFBaUMsQ0FDN0QsR0FBSSxPQUFPLElBQVcsU0FDcEIsT0FBTyxFQUVULE9BQVEsRUFBcUMsSUFBVyxJQUcxRCxTQUF3QixDQUFZLENBQ2xDLEVBQ0EsRUFDUSxDQUNSLElBQU0sRUFBWSxFQUFPLFNBQVMsRUFDbEMsSUFBSyxFQUNILE9BQU8sRUFHVCxHQUFJLEdB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QU0sVUFBVSxFQUFLLFNBQVcsaUJBQWlCLEVBQUUsTUFHdEUsSUFBTSxFQUFhLEVBQWdCLEVBQU8sRUFBUyxFQUFNLEVBQU8sRUFBUyxFQUFJLEVBQzdFLFFBQVEsSUFBSSxDQUFVLEVBRXRCLElBQU0sRUFBNEIsQ0FBQyxFQUVuQyxHQUFJLEdBQVMsUUFBUSxZQUNuQixFQUFTLEtBQ1AsRUFDRSxFQUFRLE9BQU8sWUFDZixFQUNBLEVBQ0EsRUFDQSxFQUNBLENBQ0YsQ0FDRixFQUdGLEdBQUksR0FBUyxRQUFRLFlBQVksT0FDL0IsRUFBUyxLQUFLLEVBQWdCLEVBQU8sRUFBUyxFQUFNLEVBQU8sQ0FBTyxDQUFDLEVBR3JFLE1BQU0sUUFBUSxJQUFJLENBQVEsRUFHckIsU0FBUyxDQUFZLENBQUMsRUFBMkIsQ0FDdEQsTUFBTyxDQUNMLElBQUssQ0FBQyxFQUFPLEVBQVMsRUFBTSxJQUMxQixFQUFJLEVBQU8sRUFBUyxFQUFNLEVBQU8sQ0FBTyxFQUMxQyxnQkFBaUIsQ0FBQyxFQUFTLEVBQU8sSUFDaEMsRUFBZ0IsRUFBUyxFQUFPLEVBQU8sQ0FBTyxFQUNoRCxnQkFBaUIsR0FBUyxRQUFRLGVBQ3BDLEVkckVGLFNBQXdCLENBQVUsQ0FBQyxFQUEyQixDQUM1RCxJQUFNLEVBQU0sRUFBYSxDQUFPLEVBRWhDLE9BQU8sSUFBSSxFQUFPLENBQ2hCLEtBQU0sWUFDUixDQUFDLEVBQ0UsUUFBUSxLQUFPLENBRWQsR0FEMkIsR0FBUyxRQUFRLG9CQUFzQixHQUVoRSxFQUFZLEVBQUksT0FBa0IsQ0FBTyxFQUU1QyxFQUNBLFVBQVUsS0FBTyxDQUNoQixFQUFJLE1BQVEsQ0FBRSxXQUFZLFFBQVEsT0FBTyxPQUFPLENBQUUsRUFDbkQsRUFDQSxjQUFjLENBQUUsR0FBSSxRQUFTLEVBQUcsRUFBRyxVQUFTLE1BQUssV0FBWSxDQUM1RCxJQUFNLEVBQVMsRUFBYyxFQUFJLFFBQVUsR0FBRyxFQUM5QyxFQUFJLElBQ0YsT0FDQSxFQUNBLENBQ0UsU0FDQSxRQUFTLE9BQU8sRUFBSSxVQUFVLGNBQWdCLEVBQUUsQ0FDbEQsRUFDQSxDQUNGLEVBQ0QsRUFDQSxRQUFRLENBQUUsR0FBSSxRQUFTLEVBQUcsRUFBRyxVQUFTLFFBQU8sTUFBSyxXQUFZLENBQzdELElBQU0sRUFBUyxFQUFjLEVBQUksUUFBVSxHQUFHLEVBQzlDLEVBQUksZ0JBQ0YsRUFDQSxJQUFLLEVBQU8sUUFBTyxFQUNuQixDQUNGLEVBQ0QiLAogICJkZWJ1Z0lkIjogIkIzOEVDNjVENDFERDUwRkI2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|
|
12
|
+
//# debugId=A8A4E208CE07B51E64756E2164756E21
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9leHRlbnNpb25zL3N0YXJ0LXNlcnZlci50cyIsICIuLi9zcmMvaGVscGVycy9zdGF0dXMudHMiLCAiLi4vc3JjL2xvZ2dlci9idWlsZC1sb2ctbWVzc2FnZS50cyIsICIuLi9zcmMvaGVscGVycy9jb2xvci1tYXBwaW5nLnRzIiwgIi4uL3NyYy9oZWxwZXJzL2R1cmF0aW9uLnRzIiwgIi4uL3NyYy9oZWxwZXJzL2xvZy50cyIsICIuLi9zcmMvaGVscGVycy9tZXRob2QudHMiLCAiLi4vc3JjL2hlbHBlcnMvcGF0aC50cyIsICIuLi9zcmMvaGVscGVycy90aW1lc3RhbXAudHMiLCAiLi4vc3JjL291dHB1dC9jb25zb2xlLnRzIiwgIi4uL3NyYy9vdXRwdXQvZmlsZS50cyIsICIuLi9zcmMvbG9nZ2VyL2ZpbHRlci50cyIsICIuLi9zcmMvbG9nZ2VyL2hhbmRsZS1odHRwLWVycm9yLnRzIiwgIi4uL3NyYy9sb2dnZXIvY3JlYXRlLWxvZ2dlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICJpbXBvcnQgeyBFbHlzaWEgfSBmcm9tICdlbHlzaWEnXG5cbmltcG9ydCB7IHN0YXJ0U2VydmVyIH0gZnJvbSAnLi9leHRlbnNpb25zJ1xuaW1wb3J0IHsgZ2V0U3RhdHVzQ29kZSB9IGZyb20gJy4vaGVscGVycy9zdGF0dXMnXG5pbXBvcnQgdHlwZSB7IEh0dHBFcnJvciwgT3B0aW9ucywgU2VydmVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxvZ2l4bHlzaWEob3B0aW9ucz86IE9wdGlvbnMpOiBFbHlzaWEge1xuICBjb25zdCBsb2cgPSBjcmVhdGVMb2dnZXIob3B0aW9ucylcblxuICByZXR1cm4gbmV3IEVseXNpYSh7XG4gICAgbmFtZTogJ0xvZ2l4bHlzaWEnXG4gIH0pXG4gICAgLm9uU3RhcnQoY3R4ID0+IHtcbiAgICAgIGNvbnN0IHNob3dTdGFydHVwTWVzc2FnZSA9IG9wdGlvbnM/LmNvbmZpZz8uc2hvd1N0YXJ0dXBNZXNzYWdlID8/IHRydWVcbiAgICAgIGlmIChzaG93U3RhcnR1cE1lc3NhZ2UpIHtcbiAgICAgICAgc3RhcnRTZXJ2ZXIoY3R4LnNlcnZlciBhcyBTZXJ2ZXIsIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfSlcbiAgICAub25SZXF1ZXN0KGN0eCA9PiB7XG4gICAgICBjdHguc3RvcmUgPSB7IGJlZm9yZVRpbWU6IHByb2Nlc3MuaHJ0aW1lLmJpZ2ludCgpIH1cbiAgICB9KVxuICAgIC5vbkFmdGVySGFuZGxlKHsgYXM6ICdnbG9iYWwnIH0sICh7IHJlcXVlc3QsIHNldCwgc3RvcmUgfSkgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzQ29kZShzZXQuc3RhdHVzIHx8IDIwMClcbiAgICAgIGxvZy5sb2coXG4gICAgICAgICdJTkZPJyxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAge1xuICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICBtZXNzYWdlOiBTdHJpbmcoc2V0LmhlYWRlcnM/LlsneC1tZXNzYWdlJ10gfHwgJycpXG4gICAgICAgIH0sXG4gICAgICAgIHN0b3JlIGFzIHsgYmVmb3JlVGltZTogYmlnaW50IH1cbiAgICAgIClcbiAgICB9KVxuICAgIC5vbkVycm9yKHsgYXM6ICdnbG9iYWwnIH0sICh7IHJlcXVlc3QsIGVycm9yLCBzZXQsIHN0b3JlIH0pID0+IHtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1c0NvZGUoc2V0LnN0YXR1cyB8fCA1MDApXG4gICAgICBsb2cuaGFuZGxlSHR0cEVycm9yKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7IC4uLmVycm9yLCBzdGF0dXMgfSBhcyBIdHRwRXJyb3IsXG4gICAgICAgIHN0b3JlIGFzIHsgYmVmb3JlVGltZTogYmlnaW50IH1cbiAgICAgIClcbiAgICB9KVxufVxuXG5leHBvcnQgeyBjcmVhdGVMb2dnZXIsIGhhbmRsZUh0dHBFcnJvciB9IGZyb20gJy4vbG9nZ2VyJ1xuZXhwb3J0IHsgbG9nVG9UcmFuc3BvcnRzIH0gZnJvbSAnLi9vdXRwdXQnXG5leHBvcnQgdHlwZSB7XG4gIExvZ2dlcixcbiAgTG9nTGV2ZWwsXG4gIExvZ0RhdGEsXG4gIFJlcXVlc3RJbmZvLFxuICBTdG9yZURhdGEsXG4gIEh0dHBFcnJvcixcbiAgVHJhbnNwb3J0LFxuICBPcHRpb25zXG59IGZyb20gJy4vaW50ZXJmYWNlcydcbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBPcHRpb25zLCBTZXJ2ZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzJ1xuXG5jb25zdCBjcmVhdGVCb3hUZXh0ID0gKHRleHQ6IHN0cmluZywgd2lkdGg6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHBhZGRpbmdMZW5ndGggPSBNYXRoLm1heCgwLCAod2lkdGggLSB0ZXh0Lmxlbmd0aCkgLyAyKVxuICBjb25zdCBwYWRkaW5nID0gJyAnLnJlcGVhdChwYWRkaW5nTGVuZ3RoKVxuICByZXR1cm4gYCR7cGFkZGluZ30ke3RleHR9JHtwYWRkaW5nfWAucGFkRW5kKHdpZHRoKVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydFNlcnZlcihjb25maWc6IFNlcnZlciwgb3B0aW9ucz86IE9wdGlvbnMpOiB2b2lkIHtcbiAgY29uc3QgaG9zdG5hbWUgPSBjb25maWc/Lmhvc3RuYW1lID8/ICdsb2NhbGhvc3QnXG4gIGNvbnN0IHBvcnQgPSBjb25maWc/LnBvcnQgPz8gMzAwMFxuICBjb25zdCBwcm90b2NvbCA9IGNvbmZpZz8ucHJvdG9jb2wgPz8gJ2h0dHAnXG4gIGNvbnN0IHNob3dCYW5uZXIgPSBvcHRpb25zPy5jb25maWc/LnN0YXJ0dXBNZXNzYWdlRm9ybWF0ICE9PSAnc2ltcGxlJ1xuXG4gIGlmIChzaG93QmFubmVyKSB7XG4gICAgY29uc3QgdGl0bGUgPSAnRWx5c2lhIHdpdGggTG9naXhseXNpYSdcbiAgICBjb25zdCBtZXNzYWdlID0gYPCfpoogRWx5c2lhIGlzIHJ1bm5pbmcgYXQgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfToke3BvcnR9YFxuICAgIGNvbnN0IGJveFdpZHRoID0gTWF0aC5tYXgodGl0bGUubGVuZ3RoLCBtZXNzYWdlLmxlbmd0aCkgKyA0XG4gICAgY29uc3QgYm9yZGVyID0gJ+KUgCcucmVwZWF0KGJveFdpZHRoKVxuICAgIGNvbnN0IGVtcHR5TGluZSA9IGNyZWF0ZUJveFRleHQoJycsIGJveFdpZHRoKVxuXG4gICAgY29uc29sZS5sb2coYFxuICAgICAg4pSMJHtib3JkZXJ94pSQXG4gICAgICDilIIke2VtcHR5TGluZX3ilIJcbiAgICAgIOKUgiR7Y3JlYXRlQm94VGV4dCh0aXRsZSwgYm94V2lkdGgpfeKUglxuICAgICAg4pSCJHtlbXB0eUxpbmV94pSCXG4gICAgICDilIIke2NyZWF0ZUJveFRleHQobWVzc2FnZSwgYm94V2lkdGgpfeKUglxuICAgICAg4pSCJHtlbXB0eUxpbmV94pSCXG4gICAgICDilJQke2JvcmRlcn3ilJhcbiAgICBgKVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKGDwn6aKIEVseXNpYSBpcyBydW5uaW5nIGF0ICR7cHJvdG9jb2x9Oi8vJHtob3N0bmFtZX06JHtwb3J0fWApXG4gIH1cbn1cbiIsCiAgICAiaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJ1xuaW1wb3J0IHsgU3RhdHVzTWFwIH0gZnJvbSAnZWx5c2lhJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzQ29kZShzdGF0dXM6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh0eXBlb2Ygc3RhdHVzID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBzdGF0dXNcbiAgfVxuICByZXR1cm4gKFN0YXR1c01hcCBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KVtzdGF0dXNdIHx8IDUwMFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGF0dXNTdHJpbmcoXG4gIHN0YXR1czogbnVtYmVyLFxuICB1c2VDb2xvcnM6IGJvb2xlYW5cbik6IHN0cmluZyB7XG4gIGNvbnN0IHN0YXR1c1N0ciA9IHN0YXR1cy50b1N0cmluZygpXG4gIGlmICghdXNlQ29sb3JzKSB7XG4gICAgcmV0dXJuIHN0YXR1c1N0clxuICB9XG5cbiAgaWYgKHN0YXR1cyA+PSA1MDApIHtcbiAgICByZXR1cm4gY2hhbGsucmVkKHN0YXR1c1N0cilcbiAgfVxuICBpZiAoc3RhdHVzID49IDQwMCkge1xuICAgIHJldHVybiBjaGFsay55ZWxsb3coc3RhdHVzU3RyKVxuICB9XG4gIGlmIChzdGF0dXMgPj0gMzAwKSB7XG4gICAgcmV0dXJuIGNoYWxrLmN5YW4oc3RhdHVzU3RyKVxuICB9XG4gIGlmIChzdGF0dXMgPj0gMjAwKSB7XG4gICAgcmV0dXJuIGNoYWxrLmdyZWVuKHN0YXR1c1N0cilcbiAgfVxuICByZXR1cm4gY2hhbGsud2hpdGUoc3RhdHVzU3RyKVxufVxuIiwKICAgICJpbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnXG5cbmltcG9ydCB7XG4gIGR1cmF0aW9uU3RyaW5nLFxuICBmb3JtYXRUaW1lc3RhbXAsXG4gIGxvZ1N0cmluZyxcbiAgbWV0aG9kU3RyaW5nLFxuICBwYXRoU3RyaW5nLFxuICBzdGF0dXNTdHJpbmdcbn0gZnJvbSAnLi4vaGVscGVycydcbmltcG9ydCB0eXBlIHtcbiAgTG9nQ29tcG9uZW50cyxcbiAgTG9nRGF0YSxcbiAgTG9nTGV2ZWwsXG4gIE9wdGlvbnMsXG4gIFJlcXVlc3RJbmZvLFxuICBTdG9yZURhdGFcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcydcblxuY29uc3QgZGVmYXVsdExvZ0Zvcm1hdCA9XG4gICfwn6aKIHtub3d9IHtsZXZlbH0ge2R1cmF0aW9ufSB7bWV0aG9kfSB7cGF0aG5hbWV9IHtzdGF0dXN9IHttZXNzYWdlfSB7aXB9J1xuXG5mdW5jdGlvbiBzaG91bGRVc2VDb2xvcnModXNlQ29sb3JzOiBib29sZWFuLCBvcHRpb25zPzogT3B0aW9ucyk6IGJvb2xlYW4ge1xuICBpZiAob3B0aW9ucz8uY29uZmlnPy51c2VDb2xvcnMgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBvcHRpb25zLmNvbmZpZy51c2VDb2xvcnMgJiYgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPT09IHVuZGVmaW5lZFxuICB9XG4gIHJldHVybiB1c2VDb2xvcnMgJiYgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPT09IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRMb2dNZXNzYWdlKFxuICBsZXZlbDogTG9nTGV2ZWwsXG4gIHJlcXVlc3Q6IFJlcXVlc3RJbmZvLFxuICBkYXRhOiBMb2dEYXRhLFxuICBzdG9yZTogU3RvcmVEYXRhLFxuICBvcHRpb25zPzogT3B0aW9ucyxcbiAgdXNlQ29sb3JzID0gdHJ1ZVxuKTogc3RyaW5nIHtcbiAgY29uc3QgYWN0dWFsbHlVc2VDb2xvcnMgPSBzaG91bGRVc2VDb2xvcnModXNlQ29sb3JzLCBvcHRpb25zKVxuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpXG4gIGNvbnN0IGNvbXBvbmVudHM6IExvZ0NvbXBvbmVudHMgPSB7XG4gICAgbm93OiBhY3R1YWxseVVzZUNvbG9yc1xuICAgICAgPyBjaGFsay5iZ1llbGxvdyhcbiAgICAgICAgICBjaGFsay5ibGFjayhmb3JtYXRUaW1lc3RhbXAobm93LCBvcHRpb25zPy5jb25maWc/LnRpbWVzdGFtcCkpXG4gICAgICAgIClcbiAgICAgIDogZm9ybWF0VGltZXN0YW1wKG5vdywgb3B0aW9ucz8uY29uZmlnPy50aW1lc3RhbXApLFxuICAgIGVwb2NoOiBNYXRoLmZsb29yKG5vdy5nZXRUaW1lKCkgLyAxMDAwKS50b1N0cmluZygpLFxuICAgIGxldmVsOiBsb2dTdHJpbmcobGV2ZWwsIHVzZUNvbG9ycyksXG4gICAgZHVyYXRpb246IGR1cmF0aW9uU3RyaW5nKHN0b3JlLmJlZm9yZVRpbWUsIHVzZUNvbG9ycyksXG4gICAgbWV0aG9kOiBtZXRob2RTdHJpbmcocmVxdWVzdC5tZXRob2QsIHVzZUNvbG9ycyksXG4gICAgcGF0aG5hbWU6IHBhdGhTdHJpbmcocmVxdWVzdCksXG4gICAgc3RhdHVzOiBzdGF0dXNTdHJpbmcoZGF0YS5zdGF0dXMgfHwgMjAwLCB1c2VDb2xvcnMpLFxuICAgIG1lc3NhZ2U6IGRhdGEubWVzc2FnZSB8fCAnJyxcbiAgICBpcDpcbiAgICAgIG9wdGlvbnM/LmNvbmZpZz8uaXAgJiYgcmVxdWVzdC5oZWFkZXJzLmdldCgneC1mb3J3YXJkZWQtZm9yJylcbiAgICAgICAgPyBgSVA6ICR7cmVxdWVzdC5oZWFkZXJzLmdldCgneC1mb3J3YXJkZWQtZm9yJyl9YFxuICAgICAgICA6ICcnXG4gIH1cblxuICBjb25zdCBsb2dGb3JtYXQgPSBvcHRpb25zPy5jb25maWc/LmN1c3RvbUxvZ0Zvcm1hdCB8fCBkZWZhdWx0TG9nRm9ybWF0XG5cbiAgcmV0dXJuIGxvZ0Zvcm1hdC5yZXBsYWNlKC97KFxcdyspfS9nLCAoXywga2V5OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoa2V5IGluIGNvbXBvbmVudHMpIHtcbiAgICAgIHJldHVybiBjb21wb25lbnRzW2tleSBhcyBrZXlvZiBMb2dDb21wb25lbnRzXSB8fCAnJ1xuICAgIH1cbiAgICByZXR1cm4gJydcbiAgfSlcbn1cbiIsCiAgICAiaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJ1xuXG5pbXBvcnQgdHlwZSB7IENvbG9yTWFwIH0gZnJvbSAnLi4vaW50ZXJmYWNlcydcblxuZXhwb3J0IGNvbnN0IExvZ0xldmVsQ29sb3JNYXA6IENvbG9yTWFwID0ge1xuICBJTkZPOiBjaGFsay5iZ0dyZWVuLmJsYWNrLFxuICBXQVJOSU5HOiBjaGFsay5iZ1llbGxvdy5ibGFjayxcbiAgRVJST1I6IGNoYWxrLmJnUmVkLmJsYWNrXG59XG5cbmV4cG9ydCBjb25zdCBIdHRwTWV0aG9kQ29sb3JNYXA6IENvbG9yTWFwID0ge1xuICBHRVQ6IGNoYWxrLmdyZWVuLFxuICBQT1NUOiBjaGFsay55ZWxsb3csXG4gIFBVVDogY2hhbGsuYmx1ZSxcbiAgUEFUQ0g6IGNoYWxrLm1hZ2VudGFCcmlnaHQsXG4gIERFTEVURTogY2hhbGsucmVkLFxuICBIRUFEOiBjaGFsay5jeWFuLFxuICBPUFRJT05TOiBjaGFsay5tYWdlbnRhXG59XG4iLAogICAgImltcG9ydCBjaGFsayBmcm9tICdjaGFsaydcblxuY29uc3QgdGltZVVuaXRzID0gW1xuICB7IHVuaXQ6ICdzJywgdGhyZXNob2xkOiAxZTksIGRlY2ltYWxQbGFjZXM6IDIgfSxcbiAgeyB1bml0OiAnbXMnLCB0aHJlc2hvbGQ6IDFlNiwgZGVjaW1hbFBsYWNlczogMCB9LFxuICB7IHVuaXQ6ICfCtXMnLCB0aHJlc2hvbGQ6IDFlMywgZGVjaW1hbFBsYWNlczogMCB9LFxuICB7IHVuaXQ6ICducycsIHRocmVzaG9sZDogMSwgZGVjaW1hbFBsYWNlczogMCB9XG5dXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGR1cmF0aW9uU3RyaW5nKFxuICBiZWZvcmVUaW1lOiBiaWdpbnQsXG4gIHVzZUNvbG9yczogYm9vbGVhblxuKTogc3RyaW5nIHtcbiAgY29uc3QgbmFub3NlY29uZHMgPSBOdW1iZXIocHJvY2Vzcy5ocnRpbWUuYmlnaW50KCkgLSBiZWZvcmVUaW1lKVxuXG4gIGZvciAoY29uc3QgeyB1bml0LCB0aHJlc2hvbGQsIGRlY2ltYWxQbGFjZXMgfSBvZiB0aW1lVW5pdHMpIHtcbiAgICBpZiAobmFub3NlY29uZHMgPj0gdGhyZXNob2xkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IChuYW5vc2Vjb25kcyAvIHRocmVzaG9sZCkudG9GaXhlZChkZWNpbWFsUGxhY2VzKVxuICAgICAgY29uc3QgdGltZVN0ciA9IGAke3ZhbHVlfSR7dW5pdH1gLnBhZFN0YXJ0KDgpLnBhZEVuZCgxNilcbiAgICAgIHJldHVybiB1c2VDb2xvcnMgPyBjaGFsay5ncmF5KHRpbWVTdHIpIDogdGltZVN0clxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1c2VDb2xvcnNcbiAgICA/IGNoYWxrLmdyYXkoJzBucycucGFkU3RhcnQoOCkucGFkRW5kKDE2KSlcbiAgICA6ICcwbnMnLnBhZFN0YXJ0KDgpLnBhZEVuZCgxNilcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBMb2dMZXZlbCB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBMb2dMZXZlbENvbG9yTWFwIH0gZnJvbSAnLi9jb2xvci1tYXBwaW5nJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb2dTdHJpbmcobGV2ZWw6IExvZ0xldmVsLCB1c2VDb2xvcnM6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBjb25zdCBsZXZlbFN0ciA9IGxldmVsLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIHVzZUNvbG9yc1xuICAgID8gTG9nTGV2ZWxDb2xvck1hcFtsZXZlbFN0cl0/LihsZXZlbFN0ci5wYWRFbmQoNykpIHx8IGxldmVsU3RyXG4gICAgOiBsZXZlbFN0ci5wYWRFbmQoNylcbn1cbiIsCiAgICAiaW1wb3J0IHsgSHR0cE1ldGhvZENvbG9yTWFwIH0gZnJvbSAnLi9jb2xvci1tYXBwaW5nJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXRob2RTdHJpbmcoXG4gIG1ldGhvZDogc3RyaW5nLFxuICB1c2VDb2xvcnM6IGJvb2xlYW5cbik6IHN0cmluZyB7XG4gIGNvbnN0IGNvbG9yRnVuY3Rpb24gPSBIdHRwTWV0aG9kQ29sb3JNYXBbbWV0aG9kXVxuICByZXR1cm4gdXNlQ29sb3JzICYmIGNvbG9yRnVuY3Rpb25cbiAgICA/IGNvbG9yRnVuY3Rpb24obWV0aG9kLnBhZEVuZCg3KSlcbiAgICA6IG1ldGhvZC5wYWRFbmQoNylcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBSZXF1ZXN0SW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhdGhTdHJpbmcoXG4gIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mb1xuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFVSTChyZXF1ZXN0SW5mby51cmwpLnBhdGhuYW1lXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7IFRpbWVzdGFtcENvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbi8vIGNvbnN0IERFRkFVTFRfVElNRVNUQU1QX0ZPUk1BVCA9ICd5eXl5LW1tLWRkIEhIOk1NOnNzJ1xuY29uc3QgU1lTX1RJTUUgPSAnU1lTOlNUQU5EQVJEJ1xuXG5jb25zdCBwYWQgPSAobjogbnVtYmVyKTogc3RyaW5nID0+IG4udG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpXG5cbmZ1bmN0aW9uIGZvcm1hdFN5c3RlbVRpbWUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKClcbiAgY29uc3QgbW9udGggPSBwYWQoZGF0ZS5nZXRNb250aCgpICsgMSlcbiAgY29uc3QgZGF5ID0gcGFkKGRhdGUuZ2V0RGF0ZSgpKVxuICBjb25zdCBob3VycyA9IHBhZChkYXRlLmdldEhvdXJzKCkpXG4gIGNvbnN0IG1pbnV0ZXMgPSBwYWQoZGF0ZS5nZXRNaW51dGVzKCkpXG4gIGNvbnN0IHNlY29uZHMgPSBwYWQoZGF0ZS5nZXRTZWNvbmRzKCkpXG4gIGNvbnN0IG1zID0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDMsICcwJylcblxuICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9ICR7aG91cnN9OiR7bWludXRlc306JHtzZWNvbmRzfS4ke21zfWBcbn1cblxuZnVuY3Rpb24gZm9ybWF0Q3VzdG9tVGltZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHRva2VuczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSA9IHtcbiAgICB5eXl5OiBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgeXk6IGRhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpLnNsaWNlKC0yKSxcbiAgICBtbTogcGFkKGRhdGUuZ2V0TW9udGgoKSArIDEpLFxuICAgIGRkOiBwYWQoZGF0ZS5nZXREYXRlKCkpLFxuICAgIEhIOiBwYWQoZGF0ZS5nZXRIb3VycygpKSxcbiAgICBNTTogcGFkKGRhdGUuZ2V0TWludXRlcygpKSxcbiAgICBzczogcGFkKGRhdGUuZ2V0U2Vjb25kcygpKSxcbiAgICBTU1M6IHBhZChkYXRlLmdldE1pbGxpc2Vjb25kcygpKSxcbiAgICBaOiAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIC8gNjBcbiAgfVxuXG4gIHJldHVybiBmb3JtYXQucmVwbGFjZSgveXl5eXx5eXxtbXxkZHxISHxNTXxzc3xTU1N8Wi9nLCBtYXRjaCA9PlxuICAgICh0b2tlbnNbbWF0Y2hdID8/ICcnKS50b1N0cmluZygpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRpbWVzdGFtcChkYXRlOiBEYXRlLCBjb25maWc/OiBUaW1lc3RhbXBDb25maWcpOiBzdHJpbmcge1xuICBpZiAoIWNvbmZpZyB8fCAhY29uZmlnLnRyYW5zbGF0ZVRpbWUpIHtcbiAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpXG4gIH1cblxuICBpZiAoY29uZmlnLnRyYW5zbGF0ZVRpbWUgPT09IHRydWUgfHwgY29uZmlnLnRyYW5zbGF0ZVRpbWUgPT09IFNZU19USU1FKSB7XG4gICAgcmV0dXJuIGZvcm1hdFN5c3RlbVRpbWUoZGF0ZSlcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRDdXN0b21UaW1lKGRhdGUsIGNvbmZpZy50cmFuc2xhdGVUaW1lKVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7XG4gIExvZ0RhdGEsXG4gIExvZ0xldmVsLFxuICBPcHRpb25zLFxuICBSZXF1ZXN0SW5mbyxcbiAgU3RvcmVEYXRhXG59IGZyb20gJy4uL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBidWlsZExvZ01lc3NhZ2UgfSBmcm9tICcuLi9sb2dnZXIvYnVpbGQtbG9nLW1lc3NhZ2UnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dUb1RyYW5zcG9ydHMoXG4gIGxldmVsOiBMb2dMZXZlbCxcbiAgcmVxdWVzdDogUmVxdWVzdEluZm8sXG4gIGRhdGE6IExvZ0RhdGEsXG4gIHN0b3JlOiBTdG9yZURhdGEsXG4gIG9wdGlvbnM/OiBPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFvcHRpb25zPy5jb25maWc/LnRyYW5zcG9ydHMgfHwgb3B0aW9ucy5jb25maWcudHJhbnNwb3J0cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IG1lc3NhZ2UgPSBidWlsZExvZ01lc3NhZ2UobGV2ZWwsIHJlcXVlc3QsIGRhdGEsIHN0b3JlLCBvcHRpb25zLCBmYWxzZSlcblxuICBjb25zdCBwcm9taXNlcyA9IG9wdGlvbnMuY29uZmlnLnRyYW5zcG9ydHMubWFwKHRyYW5zcG9ydCA9PlxuICAgIHRyYW5zcG9ydC5sb2cobGV2ZWwsIG1lc3NhZ2UsIHsgcmVxdWVzdCwgZGF0YSwgc3RvcmUgfSlcbiAgKVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxufVxuIiwKICAgICJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5pbXBvcnQgdHlwZSB7XG4gIExvZ0RhdGEsXG4gIExvZ0xldmVsLFxuICBPcHRpb25zLFxuICBSZXF1ZXN0SW5mbyxcbiAgU3RvcmVEYXRhXG59IGZyb20gJy4uL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBidWlsZExvZ01lc3NhZ2UgfSBmcm9tICcuLi9sb2dnZXIvYnVpbGQtbG9nLW1lc3NhZ2UnXG5cbmNvbnN0IGRpckNhY2hlID0gbmV3IFNldDxzdHJpbmc+KClcblxuYXN5bmMgZnVuY3Rpb24gZW5zdXJlRGlyZWN0b3J5RXhpc3RzKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZGlyID0gZGlybmFtZShmaWxlUGF0aClcbiAgaWYgKCFkaXJDYWNoZS5oYXMoZGlyKSkge1xuICAgIGF3YWl0IGZzLm1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICBkaXJDYWNoZS5hZGQoZGlyKVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dUb0ZpbGUoXG4gIGZpbGVQYXRoOiBzdHJpbmcsXG4gIGxldmVsOiBMb2dMZXZlbCxcbiAgcmVxdWVzdDogUmVxdWVzdEluZm8sXG4gIGRhdGE6IExvZ0RhdGEsXG4gIHN0b3JlOiBTdG9yZURhdGEsXG4gIG9wdGlvbnM/OiBPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZW5zdXJlRGlyZWN0b3J5RXhpc3RzKGZpbGVQYXRoKVxuICBjb25zdCBsb2dNZXNzYWdlID0gYCR7YnVpbGRMb2dNZXNzYWdlKGxldmVsLCByZXF1ZXN0LCBkYXRhLCBzdG9yZSwgb3B0aW9ucywgZmFsc2UpfVxcbmBcbiAgYXdhaXQgZnMuYXBwZW5kRmlsZShmaWxlUGF0aCwgbG9nTWVzc2FnZSwgeyBmbGFnOiAnYScgfSlcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBMb2dMZXZlbCwgT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMnXG5cbmNvbnN0IGNoZWNrRmlsdGVyID0gKGZpbHRlclZhbHVlOiB1bmtub3duLCB2YWx1ZTogdW5rbm93bikgPT5cbiAgQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZSlcbiAgICA/IGZpbHRlclZhbHVlLmluY2x1ZGVzKHZhbHVlKVxuICAgIDogZmlsdGVyVmFsdWUgPT09IHZhbHVlXG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJMb2coXG4gIGxvZ0xldmVsOiBMb2dMZXZlbCxcbiAgc3RhdHVzOiBudW1iZXIsXG4gIG1ldGhvZDogc3RyaW5nLFxuICBvcHRpb25zPzogT3B0aW9uc1xuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGZpbHRlciA9IG9wdGlvbnM/LmNvbmZpZz8ubG9nRmlsdGVyXG4gIGlmICghZmlsdGVyKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgKCFmaWx0ZXIubGV2ZWwgfHwgY2hlY2tGaWx0ZXIoZmlsdGVyLmxldmVsLCBsb2dMZXZlbCkpICYmXG4gICAgKCFmaWx0ZXIuc3RhdHVzIHx8IGNoZWNrRmlsdGVyKGZpbHRlci5zdGF0dXMsIHN0YXR1cykpICYmXG4gICAgKCFmaWx0ZXIubWV0aG9kIHx8IGNoZWNrRmlsdGVyKGZpbHRlci5tZXRob2QsIG1ldGhvZCkpXG4gIClcbn1cbiIsCiAgICAiaW1wb3J0IHR5cGUgeyBIdHRwRXJyb3IsIE9wdGlvbnMsIFJlcXVlc3RJbmZvLCBTdG9yZURhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgbG9nVG9GaWxlIH0gZnJvbSAnLi4vb3V0cHV0J1xuaW1wb3J0IHsgYnVpbGRMb2dNZXNzYWdlIH0gZnJvbSAnLi9idWlsZC1sb2ctbWVzc2FnZSdcblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUh0dHBFcnJvcihcbiAgcmVxdWVzdDogUmVxdWVzdEluZm8sXG4gIGVycm9yOiBIdHRwRXJyb3IsXG4gIHN0b3JlOiBTdG9yZURhdGEsXG4gIG9wdGlvbnM/OiBPcHRpb25zXG4pOiB2b2lkIHtcbiAgY29uc3Qgc3RhdHVzQ29kZSA9IGVycm9yLnN0YXR1cyB8fCA1MDBcbiAgY29uc29sZS5lcnJvcihcbiAgICBidWlsZExvZ01lc3NhZ2UoJ0VSUk9SJywgcmVxdWVzdCwgeyBzdGF0dXM6IHN0YXR1c0NvZGUgfSwgc3RvcmUsIG9wdGlvbnMpXG4gIClcblxuICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW11cblxuICBpZiAob3B0aW9ucz8uY29uZmlnPy5sb2dGaWxlUGF0aCkge1xuICAgIHByb21pc2VzLnB1c2goXG4gICAgICBsb2dUb0ZpbGUoXG4gICAgICAgIG9wdGlvbnMuY29uZmlnLmxvZ0ZpbGVQYXRoLFxuICAgICAgICAnRVJST1InLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7IHN0YXR1czogc3RhdHVzQ29kZSB9LFxuICAgICAgICBzdG9yZSxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgKVxuICAgIClcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgdHlwZSB7XG4gIExvZ0RhdGEsXG4gIExvZ0xldmVsLFxuICBMb2dnZXIsXG4gIE9wdGlvbnMsXG4gIFJlcXVlc3RJbmZvLFxuICBTdG9yZURhdGFcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcydcbmltcG9ydCB7IGxvZ1RvRmlsZSwgbG9nVG9UcmFuc3BvcnRzIH0gZnJvbSAnLi4vb3V0cHV0J1xuaW1wb3J0IHsgYnVpbGRMb2dNZXNzYWdlIH0gZnJvbSAnLi9idWlsZC1sb2ctbWVzc2FnZSdcbmltcG9ydCB7IGZpbHRlckxvZyB9IGZyb20gJy4vZmlsdGVyJ1xuaW1wb3J0IHsgaGFuZGxlSHR0cEVycm9yIH0gZnJvbSAnLi9oYW5kbGUtaHR0cC1lcnJvcidcblxuZnVuY3Rpb24gZ2V0TWV0cmljcygpOiBMb2dEYXRhWydtZXRyaWNzJ10ge1xuICBjb25zdCBtZW1vcnlVc2FnZSA9IHByb2Nlc3MubWVtb3J5VXNhZ2UoKS5oZWFwVXNlZCAvIDEwMjQgLyAxMDI0IC8vIE1CXG4gIGNvbnN0IGNwdVVzYWdlID0gcHJvY2Vzcy5jcHVVc2FnZSgpXG5cbiAgcmV0dXJuIHtcbiAgICBtZW1vcnlVc2FnZSxcbiAgICBjcHVVc2FnZTogY3B1VXNhZ2UudXNlciAvIDEwMDAwMDAgLy8gY29udmVydCB0byBzZWNvbmRzXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9nKFxuICBsZXZlbDogTG9nTGV2ZWwsXG4gIHJlcXVlc3Q6IFJlcXVlc3RJbmZvLFxuICBkYXRhOiBMb2dEYXRhLFxuICBzdG9yZTogU3RvcmVEYXRhLFxuICBvcHRpb25zPzogT3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghZmlsdGVyTG9nKGxldmVsLCBkYXRhLnN0YXR1cyB8fCAyMDAsIHJlcXVlc3QubWV0aG9kLCBvcHRpb25zKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gQWRkIG1ldHJpY3MgaWYgbm90IHByb3ZpZGVkXG4gIGlmICghZGF0YS5tZXRyaWNzKSB7XG4gICAgZGF0YS5tZXRyaWNzID0gZ2V0TWV0cmljcygpXG4gIH1cblxuICAvLyBBZGQgc3RhY2sgdHJhY2UgZm9yIGVycm9yc1xuICBpZiAobGV2ZWwgPT09ICdFUlJPUicgJiYgIWRhdGEuc3RhY2spIHtcbiAgICBkYXRhLnN0YWNrID0gbmV3IEVycm9yKGBFcnJvcjogJHtkYXRhLm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InfWApLnN0YWNrXG4gIH1cblxuICBjb25zdCBsb2dNZXNzYWdlID0gYnVpbGRMb2dNZXNzYWdlKGxldmVsLCByZXF1ZXN0LCBkYXRhLCBzdG9yZSwgb3B0aW9ucywgdHJ1ZSlcbiAgY29uc29sZS5sb2cobG9nTWVzc2FnZSlcblxuICBjb25zdCBwcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW11cblxuICBpZiAob3B0aW9ucz8uY29uZmlnPy5sb2dGaWxlUGF0aCkge1xuICAgIHByb21pc2VzLnB1c2goXG4gICAgICBsb2dUb0ZpbGUoXG4gICAgICAgIG9wdGlvbnMuY29uZmlnLmxvZ0ZpbGVQYXRoLFxuICAgICAgICBsZXZlbCxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIG9wdGlvbnNcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBpZiAob3B0aW9ucz8uY29uZmlnPy50cmFuc3BvcnRzPy5sZW5ndGgpIHtcbiAgICBwcm9taXNlcy5wdXNoKGxvZ1RvVHJhbnNwb3J0cyhsZXZlbCwgcmVxdWVzdCwgZGF0YSwgc3RvcmUsIG9wdGlvbnMpKVxuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2dnZXIob3B0aW9ucz86IE9wdGlvbnMpOiBMb2dnZXIge1xuICByZXR1cm4ge1xuICAgIGxvZzogKGxldmVsLCByZXF1ZXN0LCBkYXRhLCBzdG9yZSkgPT5cbiAgICAgIGxvZyhsZXZlbCwgcmVxdWVzdCwgZGF0YSwgc3RvcmUsIG9wdGlvbnMpLFxuICAgIGhhbmRsZUh0dHBFcnJvcjogKHJlcXVlc3QsIGVycm9yLCBzdG9yZSkgPT5cbiAgICAgIGhhbmRsZUh0dHBFcnJvcihyZXF1ZXN0LCBlcnJvciwgc3RvcmUsIG9wdGlvbnMpLFxuICAgIGN1c3RvbUxvZ0Zvcm1hdDogb3B0aW9ucz8uY29uZmlnPy5jdXN0b21Mb2dGb3JtYXRcbiAgfVxufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIkFBQUEsaUJBQVMsZUNFVCxJQUFNLEVBQWdCLENBQUMsRUFBYyxJQUEwQixDQUM3RCxJQUFNLEVBQWdCLEtBQUssSUFBSSxHQUFJLEVBQVEsRUFBSyxRQUFVLENBQUMsRUFDckQsRUFBVSxJQUFJLE9BQU8sQ0FBYSxFQUN4QyxNQUFPLEdBQUcsSUFBVSxJQUFPLElBQVUsT0FBTyxDQUFLLEdBR25ELFNBQXdCLENBQVcsQ0FBQyxFQUFnQixFQUF5QixDQUMzRSxJQUFNLEVBQVcsR0FBUSxVQUFZLFlBQy9CLEVBQU8sR0FBUSxNQUFRLEtBQ3ZCLEVBQVcsR0FBUSxVQUFZLE9BR3JDLEdBRm1CLEdBQVMsUUFBUSx1QkFBeUIsU0FFN0MsQ0FFZCxJQUFNLEVBQVUscUNBQTBCLE9BQWMsS0FBWSxJQUM5RCxFQUFXLEtBQUssSUFBSSxHQUFjLEVBQVEsTUFBTSxFQUFJLEVBQ3BELEVBQVMsSUFBRyxPQUFPLENBQVEsRUFDM0IsRUFBWSxFQUFjLEdBQUksQ0FBUSxFQUU1QyxRQUFRLElBQUk7QUFBQSxTQUNSO0FBQUEsU0FDQTtBQUFBLFNBQ0EsRUFUVSx5QkFTVyxDQUFRO0FBQUEsU0FDN0I7QUFBQSxTQUNBLEVBQWMsRUFBUyxDQUFRO0FBQUEsU0FDL0I7QUFBQSxTQUNBO0FBQUEsS0FDSCxFQUVELGFBQVEsSUFBSSxxQ0FBMEIsT0FBYyxLQUFZLEdBQU0sRUMvQjFFLHFCQUNBLG9CQUFTLGVBRUYsU0FBUyxDQUFhLENBQUMsRUFBaUMsQ0FDN0QsR0FBSSxPQUFPLElBQVcsU0FDcEIsT0FBTyxFQUVULE9BQVEsRUFBcUMsSUFBVyxJQUcxRCxTQUF3QixDQUFZLENBQ2xDLEVBQ0EsRUFDUSxDQUNSLElBQU0sRUFBWSxFQUFPLFNBQVMsRUFDbEMsSUFBSyxFQUNILE9BQU8sRUFHVCxHQUFJLEdBQVUsSUFDWixPQUFPLEVBQU0sSUFBSSxDQUFTLEVBRTVCLEdBQUksR0FBVSxJQUNaLE9BQU8sRUFBTSxPQUFPLENBQVMsRUFFL0IsR0FBSSxHQUFVLElBQ1osT0FBTyxFQUFNLEtBQUssQ0FBUyxFQUU3QixHQUFJLEdBQVUsSUFDWixPQUFPLEVBQU0sTUFBTSxDQUFTLEVBRTlCLE9BQU8sRUFBTSxNQUFNLENBQVMsRUMvQjlCLHFCQ0FBLHFCQUlPLElBQU0sRUFBNkIsQ0FDeEMsS0FBTSxFQUFNLFFBQVEsTUFDcEIsUUFBUyxFQUFNLFNBQVMsTUFDeEIsTUFBTyxFQUFNLE1BQU0sS0FDckIsRUFFYSxFQUErQixDQUMxQyxJQUFLLEVBQU0sTUFDWCxLQUFNLEVBQU0sT0FDWixJQUFLLEVBQU0sS0FDWCxNQUFPLEVBQU0sY0FDYixPQUFRLEVBQU0sSUFDZCxLQUFNLEVBQU0sS0FDWixRQUFTLEVBQU0sT0FDakIsRUNsQkEscUJBRUEsSUFBTSxFQUFZLENBQ2hCLENBQUUsS0FBTSxJQUFLLFVBQVcsSUFBSyxjQUFlLENBQUUsRUFDOUMsQ0FBRSxLQUFNLEtBQU0sVUFBVyxJQUFLLGNBQWUsQ0FBRSxFQUMvQyxDQUFFLEtBQU0sS0FBSyxVQUFXLEtBQUssY0FBZSxDQUFFLEVBQzlDLENBQUUsS0FBTSxLQUFNLFVBQVcsRUFBRyxjQUFlLENBQUUsQ0FDL0MsRUFFQSxTQUF3QixDQUFjLENBQ3BDLEVBQ0EsRUFDUSxDQUNSLElBQU0sRUFBYyxPQUFPLFFBQVEsT0FBTyxPQUFPLEVBQUksQ0FBVSxFQUUvRCxRQUFhLE9BQU0sWUFBVyxtQkFBbUIsRUFDL0MsR0FBSSxHQUFlLEVBQVcsQ0FFNUIsSUFBTSxFQUFVLElBREQsRUFBYyxHQUFXLFFBQVEsQ0FBYSxJQUNsQyxJQUFPLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUN2RCxPQUFPLEVBQVksRUFBTSxLQUFLLENBQU8sRUFBSSxFQUk3QyxPQUFPLEVBQ0gsRUFBTSxLQUFLLE1BQU0sU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFDdkMsTUFBTSxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsRUN0QmpDLFNBQXdCLENBQVMsQ0FBQyxFQUFpQixFQUE0QixDQUM3RSxJQUFNLEVBQVcsRUFBTSxZQUFZLEVBQ25DLE9BQU8sRUFDSCxFQUFpQixLQUFZLEVBQVMsT0FBTyxDQUFDLENBQUMsR0FBSyxFQUNwRCxFQUFTLE9BQU8sQ0FBQyxFQ0x2QixTQUF3QixDQUFZLENBQ2xDLEVBQ0EsRUFDUSxDQUNSLElBQU0sRUFBZ0IsRUFBbUIsR0FDekMsT0FBTyxHQUFhLEVBQ2hCLEVBQWMsRUFBTyxPQUFPLENBQUMsQ0FBQyxFQUM5QixFQUFPLE9BQU8sQ0FBQyxFQ1ByQixTQUF3QixDQUFVLENBQ2hDLEVBQ29CLENBQ3BCLEdBQUksQ0FDRixPQUFPLElBQUksSUFBSSxFQUFZLEdBQUcsRUFBRSxTQUNoQyxLQUFNLENBQ04sUUNISixJQUFNLEVBQU0sQ0FBQyxJQUFzQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUcsR0FBRyxFQUUvRCxTQUFTLENBQWdCLENBQUMsRUFBb0IsQ0FDNUMsSUFBTSxFQUFPLEVBQUssWUFBWSxFQUN4QixFQUFRLEVBQUksRUFBSyxTQUFTLEVBQUksQ0FBQyxFQUMvQixFQUFNLEVBQUksRUFBSyxRQUFRLENBQUMsRUFDeEIsRUFBUSxFQUFJLEVBQUssU0FBUyxDQUFDLEVBQzNCLEVBQVUsRUFBSSxFQUFLLFdBQVcsQ0FBQyxFQUMvQixFQUFVLEVBQUksRUFBSyxXQUFXLENBQUMsRUFDL0IsRUFBSyxFQUFLLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUcsR0FBRyxFQUU1RCxNQUFPLEdBQUcsS0FBUSxLQUFTLEtBQU8sS0FBUyxLQUFXLEtBQVcsSUFHbkUsU0FBUyxDQUFnQixDQUFDLEVBQVksRUFBd0IsQ0FDNUQsSUFBTSxFQUE2QyxDQUNqRCxLQUFNLEVBQUssWUFBWSxFQUN2QixHQUFJLEVBQUssWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFDMUMsR0FBSSxFQUFJLEVBQUssU0FBUyxFQUFJLENBQUMsRUFDM0IsR0FBSSxFQUFJLEVBQUssUUFBUSxDQUFDLEVBQ3RCLEdBQUksRUFBSSxFQUFLLFNBQVMsQ0FBQyxFQUN2QixHQUFJLEVBQUksRUFBSyxXQUFXLENBQUMsRUFDekIsR0FBSSxFQUFJLEVBQUssV0FBVyxDQUFDLEVBQ3pCLElBQUssRUFBSSxFQUFLLGdCQUFnQixDQUFDLEVBQy9CLEdBQUksRUFBSyxrQkFBa0IsRUFBSSxFQUNqQyxFQUVBLE9BQU8sRUFBTyxRQUFRLGdDQUFpQyxNQUNwRCxFQUFPLElBQVUsSUFBSSxTQUFTLENBQ2pDLEVBR0ssU0FBUyxDQUFlLENBQUMsRUFBWSxFQUFrQyxDQUM1RSxJQUFLLElBQVcsRUFBTyxjQUNyQixPQUFPLEVBQUssWUFBWSxFQUcxQixHQUFJLEVBQU8sZ0JBQWtCLElBQVEsRUFBTyxnQkF2QzdCLGVBd0NiLE9BQU8sRUFBaUIsQ0FBSSxFQUc5QixPQUFPLEVBQWlCLEVBQU0sRUFBTyxhQUFhLEVOM0JwRCxJQUFNLEVBQ0osb0ZBRUYsU0FBUyxDQUFlLENBQUMsRUFBb0IsRUFBNEIsQ0FDdkUsR0FBSSxHQUFTLFFBQVEsWUFBYyxPQUNqQyxPQUFPLEVBQVEsT0FBTyxXQUFhLFFBQVEsSUFBSSxXQUFhLE9BRTlELE9BQU8sR0FBYSxRQUFRLElBQUksV0FBYSxPQUd4QyxTQUFTLENBQWUsQ0FDN0IsRUFDQSxFQUNBLEVBQ0EsRUFDQSxFQUNBLEVBQVksR0FDSixDQUNSLElBQU0sRUFBb0IsRUFBZ0IsRUFBVyxDQUFPLEVBQ3RELEVBQU0sSUFBSSxLQUNWLEVBQTRCLENBQ2hDLElBQUssRUFDRCxFQUFNLFNBQ0osRUFBTSxNQUFNLEVBQWdCLEVBQUssR0FBUyxRQUFRLFNBQVMsQ0FBQyxDQUM5RCxFQUNBLEVBQWdCLEVBQUssR0FBUyxRQUFRLFNBQVMsRUFDbkQsTUFBTyxLQUFLLE1BQU0sRUFBSSxRQUFRLEVBQUksSUFBSSxFQUFFLFNBQVMsRUFDakQsTUFBTyxFQUFVLEVBQU8sQ0FBUyxFQUNqQyxTQUFVLEVBQWUsRUFBTSxXQUFZLENBQVMsRUFDcEQsT0FBUSxFQUFhLEVBQVEsT0FBUSxDQUFTLEVBQzlDLFNBQVUsRUFBVyxDQUFPLEVBQzVCLE9BQVEsRUFBYSxFQUFLLFFBQVUsSUFBSyxDQUFTLEVBQ2xELFFBQVMsRUFBSyxTQUFXLEdBQ3pCLEdBQ0UsR0FBUyxRQUFRLElBQU0sRUFBUSxRQUFRLElBQUksaUJBQWlCLEVBQ3hELE9BQU8sRUFBUSxRQUFRLElBQUksaUJBQWlCLElBQzVDLEVBQ1IsRUFJQSxPQUZrQixHQUFTLFFBQVEsaUJBQW1CLEdBRXJDLFFBQVEsV0FBWSxDQUFDLEVBQUcsSUFBZ0IsQ0FDdkQsR0FBSSxLQUFPLEVBQ1QsT0FBTyxFQUFXLElBQStCLEdBRW5ELE1BQU8sR0FDUixFT3hESCxlQUFzQixDQUFlLENBQ25DLEVBQ0EsRUFDQSxFQUNBLEVBQ0EsRUFDZSxDQUNmLElBQUssR0FBUyxRQUFRLFlBQWMsRUFBUSxPQUFPLFdBQVcsU0FBVyxFQUN2RSxPQUdGLElBQU0sRUFBVSxFQUFnQixFQUFPLEVBQVMsRUFBTSxFQUFPLEVBQVMsRUFBSyxFQUVyRSxFQUFXLEVBQVEsT0FBTyxXQUFXLElBQUksS0FDN0MsRUFBVSxJQUFJLEVBQU8sRUFBUyxDQUFFLFVBQVMsT0FBTSxPQUFNLENBQUMsQ0FDeEQsRUFFQSxNQUFNLFFBQVEsSUFBSSxDQUFRLEVDMUI1QixtQkFBUyxnQkFDVCxrQkFBUyxrQkFXVCxJQUFNLEVBQVcsSUFBSSxJQUVyQixlQUFlLENBQXFCLENBQUMsRUFBaUMsQ0FDcEUsSUFBTSxFQUFNLEVBQVEsQ0FBUSxFQUM1QixJQUFLLEVBQVMsSUFBSSxDQUFHLEVBQ25CLE1BQU0sRUFBRyxNQUFNLEVBQUssQ0FBRSxVQUFXLEVBQUssQ0FBQyxFQUN2QyxFQUFTLElBQUksQ0FBRyxFQUlwQixlQUFzQixDQUFTLENBQzdCLEVBQ0EsRUFDQSxFQUNBLEVBQ0EsRUFDQSxFQUNlLENBQ2YsTUFBTSxFQUFzQixDQUFRLEVBQ3BDLElBQU0sRUFBYSxHQUFHLEVBQWdCLEVBQU8sRUFBUyxFQUFNLEVBQU8sRUFBUyxFQUFLO0FBQUEsRUFDakYsTUFBTSxFQUFHLFdBQVcsRUFBVSxFQUFZLENBQUUsS0FBTSxHQUFJLENBQUMsRUM5QnpELElBQU0sRUFBYyxDQUFDLEVBQXNCLElBQ3pDLE1BQU0sUUFBUSxDQUFXLEVBQ3JCLEVBQVksU0FBUyxDQUFLLEVBQzFCLElBQWdCLEVBRWYsU0FBUyxDQUFTLENBQ3ZCLEVBQ0EsRUFDQSxFQUNBLEVBQ1MsQ0FDVCxJQUFNLEVBQVMsR0FBUyxRQUFRLFVBQ2hDLElBQUssRUFDSCxNQUFPLEdBR1QsUUFDSSxFQUFPLE9BQVMsRUFBWSxFQUFPLE1BQU8sQ0FBUSxNQUNsRCxFQUFPLFFBQVUsRUFBWSxFQUFPLE9BQVEsQ0FBTSxNQUNsRCxFQUFPLFFBQVUsRUFBWSxFQUFPLE9BQVEsQ0FBTSxHQ2pCakQsU0FBUyxDQUFlLENBQzdCLEVBQ0EsRUFDQSxFQUNBLEVBQ00sQ0FDTixJQUFNLEVBQWEsRUFBTSxRQUFVLElBQ25DLFFBQVEsTUFDTixFQUFnQixRQUFTLEVBQVMsQ0FBRSxPQUFRLENBQVcsRUFBRyxFQUFPLENBQU8sQ0FDMUUsRUFFQSxJQUFNLEVBQTRCLENBQUMsRUFFbkMsR0FBSSxHQUFTLFFBQVEsWUFDbkIsRUFBUyxLQUNQLEVBQ0UsRUFBUSxPQUFPLFlBQ2YsUUFDQSxFQUNBLENBQUUsT0FBUSxDQUFXLEVBQ3JCLEVBQ0EsQ0FDRixDQUNGLEVDZEosU0FBUyxDQUFVLEVBQXVCLENBQ3hDLElBQU0sRUFBYyxRQUFRLFlBQVksRUFBRSxTQUFXLEtBQU8sS0FDdEQsRUFBVyxRQUFRLFNBQVMsRUFFbEMsTUFBTyxDQUNMLGNBQ0EsU0FBVSxFQUFTLEtBQU8sR0FDNUIsRUFHRixlQUFlLENBQUcsQ0FDaEIsRUFDQSxFQUNBLEVBQ0EsRUFDQSxFQUNlLENBQ2YsSUFBSyxFQUFVLEVBQU8sRUFBSyxRQUFVLElBQUssRUFBUSxPQUFRLENBQU8sRUFDL0QsT0FJRixJQUFLLEVBQUssUUFDUixFQUFLLFFBQVUsRUFBVyxFQUk1QixHQUFJLElBQVUsVUFBWSxFQUFLLE1BQzdCLEVBQUssTUFBUSxJQUFJLE1BQU0sVUFBVSxFQUFLLFNBQVcsaUJBQWlCLEVBQUUsTUFHdEUsSUFBTSxFQUFhLEVBQWdCLEVBQU8sRUFBUyxFQUFNLEVBQU8sRUFBUyxFQUFJLEVBQzdFLFFBQVEsSUFBSSxDQUFVLEVBRXRCLElBQU0sRUFBNEIsQ0FBQyxFQUVuQyxHQUFJLEdBQVMsUUFBUSxZQUNuQixFQUFTLEtBQ1AsRUFDRSxFQUFRLE9BQU8sWUFDZixFQUNBLEVBQ0EsRUFDQSxFQUNBLENBQ0YsQ0FDRixFQUdGLEdBQUksR0FBUyxRQUFRLFlBQVksT0FDL0IsRUFBUyxLQUFLLEVBQWdCLEVBQU8sRUFBUyxFQUFNLEVBQU8sQ0FBTyxDQUFDLEVBR3JFLE1BQU0sUUFBUSxJQUFJLENBQVEsRUFHckIsU0FBUyxDQUFZLENBQUMsRUFBMkIsQ0FDdEQsTUFBTyxDQUNMLElBQUssQ0FBQyxFQUFPLEVBQVMsRUFBTSxJQUMxQixFQUFJLEVBQU8sRUFBUyxFQUFNLEVBQU8sQ0FBTyxFQUMxQyxnQkFBaUIsQ0FBQyxFQUFTLEVBQU8sSUFDaEMsRUFBZ0IsRUFBUyxFQUFPLEVBQU8sQ0FBTyxFQUNoRCxnQkFBaUIsR0FBUyxRQUFRLGVBQ3BDLEVkckVGLFNBQXdCLENBQVUsQ0FBQyxFQUEyQixDQUM1RCxJQUFNLEVBQU0sRUFBYSxDQUFPLEVBRWhDLE9BQU8sSUFBSSxFQUFPLENBQ2hCLEtBQU0sWUFDUixDQUFDLEVBQ0UsUUFBUSxLQUFPLENBRWQsR0FEMkIsR0FBUyxRQUFRLG9CQUFzQixHQUVoRSxFQUFZLEVBQUksT0FBa0IsQ0FBTyxFQUU1QyxFQUNBLFVBQVUsS0FBTyxDQUNoQixFQUFJLE1BQVEsQ0FBRSxXQUFZLFFBQVEsT0FBTyxPQUFPLENBQUUsRUFDbkQsRUFDQSxjQUFjLENBQUUsR0FBSSxRQUFTLEVBQUcsRUFBRyxVQUFTLE1BQUssV0FBWSxDQUM1RCxJQUFNLEVBQVMsRUFBYyxFQUFJLFFBQVUsR0FBRyxFQUM5QyxFQUFJLElBQ0YsT0FDQSxFQUNBLENBQ0UsU0FDQSxRQUFTLE9BQU8sRUFBSSxVQUFVLGNBQWdCLEVBQUUsQ0FDbEQsRUFDQSxDQUNGLEVBQ0QsRUFDQSxRQUFRLENBQUUsR0FBSSxRQUFTLEVBQUcsRUFBRyxVQUFTLFFBQU8sTUFBSyxXQUFZLENBQzdELElBQU0sRUFBUyxFQUFjLEVBQUksUUFBVSxHQUFHLEVBQzlDLEVBQUksZ0JBQ0YsRUFDQSxJQUFLLEVBQU8sUUFBTyxFQUNuQixDQUNGLEVBQ0QiLAogICJkZWJ1Z0lkIjogIkE4QTRFMjA4Q0UwN0I1MUU2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|
package/package.json
CHANGED
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "logixlysia",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "🦊 Logixlysia is a logger for Elysia",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.js",
|
|
8
8
|
"types": "dist/index.d.ts",
|
|
9
|
-
"files": [
|
|
10
|
-
"dist",
|
|
11
|
-
"README.md",
|
|
12
|
-
"LICENSE"
|
|
13
|
-
],
|
|
9
|
+
"files": ["dist", "README.md", "LICENSE"],
|
|
14
10
|
"author": "PunGrumpy",
|
|
15
11
|
"publisher": "PunGrumpy",
|
|
16
|
-
"maintainers": [
|
|
17
|
-
"PunGrumpy"
|
|
18
|
-
],
|
|
12
|
+
"maintainers": ["PunGrumpy"],
|
|
19
13
|
"contributors": [
|
|
20
14
|
{
|
|
21
15
|
"name": "n0ky4",
|
|
@@ -38,11 +32,7 @@
|
|
|
38
32
|
"build": "bunup",
|
|
39
33
|
"build:watch": "bunup --watch"
|
|
40
34
|
},
|
|
41
|
-
"os": [
|
|
42
|
-
"darwin",
|
|
43
|
-
"linux",
|
|
44
|
-
"win32"
|
|
45
|
-
],
|
|
35
|
+
"os": ["darwin", "linux", "win32"],
|
|
46
36
|
"badges": [
|
|
47
37
|
{
|
|
48
38
|
"name": "npm",
|
|
@@ -85,10 +75,9 @@
|
|
|
85
75
|
"elysia": "^1.1.23"
|
|
86
76
|
},
|
|
87
77
|
"devDependencies": {
|
|
88
|
-
"@auto-it/first-time-contributor": "^11.3.0",
|
|
89
78
|
"@biomejs/biome": "1.9.4",
|
|
90
79
|
"bun-types": "^1.1.33",
|
|
91
|
-
"bunup": "^0.
|
|
80
|
+
"bunup": "^0.5.11",
|
|
92
81
|
"globals": "^16.0.0",
|
|
93
82
|
"husky": "^9.1.6",
|
|
94
83
|
"ultracite": "^4.2.1"
|