pup-recorder 0.2.2 → 0.2.3
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/build.ts +1 -2
- package/dist/app.cjs +15 -1342
- package/dist/chunk-SD4UOGME.js +2 -0
- package/dist/cli.js +2 -30
- package/dist/index.js +2 -470
- package/package.json +1 -1
- package/Cargo.lock +0 -281
- package/Cargo.toml +0 -23
- package/dist/chunk-CNRKD76V.js +0 -555
- package/rust-toolchain.toml +0 -10
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import'source-map-support/register.js';import {createRequire}from'module';import {dirname,join}from'path';import {spawn}from'child_process';import g from'zod';import {readdir,readFile,stat}from'fs/promises';import {ok}from'assert';import je from'electron';import {platform}from'os';import {fileURLToPath}from'url';import {graphics}from'systeminformation';var xe=Object.create;var L=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var A=(t,e)=>(e=Symbol[t])?e:Symbol.for("Symbol."+t),v=t=>{throw TypeError(t)};var Z=(t,e,r)=>e in t?L(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r;var ee=t=>[,,,xe(null)],te=["class","method","getter","setter","accessor","field","value","get","set"],T=t=>t!==void 0&&typeof t!="function"?v("Function expected"):t,ye=(t,e,r,n,s)=>({kind:te[t],name:e,metadata:n,addInitializer:o=>r._?v("Already initialized"):s.push(T(o||null))}),G=(t,e)=>Z(e,A("metadata"),t[3]),re=(t,e,r,n)=>{for(var s=0,o=t[e>>1],i=o&&o.length;s<i;s++)o[s].call(r);return n},y=(t,e,r,n,s,o)=>{var a,p,c,P,u=e&7,_=false,b=false,U=2,z=te[u+5],ve=t[U]||(t[U]=[]),f=((s=s.prototype),Pe(s,r));for(var O=n.length-1;O>=0;O--)c=ye(u,r,p={},t[3],ve),(c.static=_,c.private=b,P=c.access={has:l=>r in l},(P.get=l=>l[r]),u>2),a=(0, n[O])(f[z],c),p._=1,T(a)&&(f[z]=a);return f&&L(s,r,f),s},ne=(t,e,r)=>Z(t,e+"",r);var Je=(t,e,r)=>{if(e!=null){typeof e!="object"&&typeof e!="function"&&v("Object expected");var n,s;r&&(n=e[A("asyncDispose")]),n===void 0&&(n=e[A("dispose")],r&&(s=n)),typeof n!="function"&&v("Object not disposable"),s&&(n=function(){try{s.call(this);}catch(o){return Promise.reject(o)}}),t.push([r,n,e]);}else r&&t.push([r]);return e},Ke=(t,e,r)=>{var n=typeof SuppressedError=="function"?SuppressedError:function(i,a,p,c){return c=Error(p),c.name="SuppressedError",c.error=i,c.suppressed=a,c},s=i=>e=r?new n(i,e,"An error was suppressed during disposal"):(r=true,i),o=i=>{for(;i=t.pop();)try{var a=i[1]&&i[1].call(i[2]);if(i[0])return Promise.resolve(a).then(o,p=>(s(p),o()))}catch(p){s(p);}if(r)throw e};return o()};function oe(t,e,r){try{return e(process.env[t])}catch{return r}}function R(t){if(typeof t=="number")return t;let e=Number(t);if(Number.isNaN(e))throw new Error(`Value ${t} is not a valid number`);return e}function et(t){return typeof t=="string"?t:String(t)}var Ee=createRequire(import.meta.url),se=process.env,E=oe("PUP_LOG_LEVEL",R,2),at=se.PUP_USE_INNER_PROXY==="1",ie=se.PUP_DISABLE_GPU==="1",Se=dirname(Ee.resolve("pup-recorder/package.json")),I=join(Se,"dist","app.cjs");var V="<pup@debug>",C="<pup@info>",N="<pup@warn>",j="<pup@error>",H="<pup@fatal>";function k(t,e){return function(...r){let n=r.map(s=>s instanceof Error?s.stack??String(s):s);return t.call(this,...n)}}var ae,ue,pe,ce,le,x;le=[k],ce=[k],pe=[k],ue=[k],ae=[k];var w=class{constructor(e=E){this._level=e;re(x,5,this);ne(this,"_impl");this.impl=console;}get level(){return this._level}set level(e){this._level=e,this.impl=this._impl??console;}get impl(){return this._impl}set impl(e){let r=e.debug??console.debug,n=e.info??console.info,s=e.warn??console.warn,o=e.error??console.error,i=this._level;this._impl={debug:i>=3?r:void 0,info:i>=2?n:void 0,warn:i>=1?s:void 0,error:i>=0?o:void 0};}debug(...e){this.impl?.debug?.(V,...e);}info(...e){this.impl?.info?.(C,...e);}warn(...e){this.impl?.warn?.(N,...e);}error(...e){this.impl?.error?.(j,...e);}fatal(...e){this.impl?.error?.(H,...e),process.exit(1);}dispatch(e){e.startsWith(V)?this.debug(e.slice(V.length+1)):e.startsWith(C)?this.info(e.slice(C.length+1)):e.startsWith(N)?this.warn(e.slice(N.length+1)):e.startsWith(j)?this.error(e.slice(j.length+1)):this.info(e);}attach(e,r){return new Promise((n,s)=>{this.debug(`${r}.attach`);let o="",i=a=>{let p=a.toString();p.startsWith(H)?o+=p.slice(H.length+1):this.dispatch(p);};e.stderr?.on("data",i),e.stdout?.on("data",i),e.on("message",i).on("error",a=>{o+=a.message,e.kill();}).once("close",(a,p)=>{a||p||o?(o||=`command failed: ${e.spawnargs.join(" ")}`,this.debug(`${r}.close`,{code:a,signal:p,fatal:o}),s(new Error(o))):(this.debug(`${r}.close`),n());}).on("unhandledRejection",a=>{this.error(`${r}.unhandled`,a);}).on("uncaughtExceptionMonitor",a=>{this.error(`${r}.unhandled`,a);});})}};x=ee(),y(x,1,"debug",le,w),y(x,1,"info",ce,w),y(x,1,"warn",pe,w),y(x,1,"error",ue,w),y(x,1,"fatal",ae,w),G(x,w);var d=new w;function mt(t,e){return (...r)=>{try{let n=t(...r);return n instanceof Promise?n.catch(()=>e):n}catch{return e}}}var W="--pup-priv-args";function vt(){let t=process.argv,e=t.find(n=>n.startsWith(W));if(!e)return d.debug("procargv",t),process.argv;let r=["exec",...t.slice(-1)];return e=Buffer.from(e.split("=")[1],"base64").toString(),r.push(...JSON.parse(e)),d.debug("pupargs",r),r}function de(t,e){let r=t.split(" ").filter(i=>i.length),[n,...s]=r;if(!n)throw new Error("empty command");let o=spawn(n,s,{stdio:"inherit",...e});return {process:o,wait:d.attach(o,n)}}var B=1920,M=1080,Ue=30,Oe=5,Fe="out",q=["mp4","webm"];function _t(t){return q.includes(t)}var Tt=g.object({duration:g.number().optional().default(Oe).describe("Duration in seconds"),width:g.number().optional().default(B).describe("Video width"),height:g.number().optional().default(M).describe("Video height"),fps:g.number().optional().default(Ue).describe("Frames per second"),formats:g.array(g.enum(q)).optional().default(["mp4"]).describe(`Output video formats, allow ${q.join(", ")}`),withAudio:g.boolean().optional().default(false).describe("Capture and encode audio"),outDir:g.string().optional().default(Fe).describe("Output directory"),useInnerProxy:g.boolean().optional().default(false).describe("Use bilibili inner proxy for resource access"),deterministic:g.boolean().optional().default(false).describe("Render by frame rather than recording")});var S=class t{constructor(e,r=1e3){this.query=e;this.interval=r;e&&this.tick();}_callback;_aborted;_stopped=false;static start(e,r){return new t(e,r)}get aborted(){return !this._stopped&&this._aborted}get stopped(){return this._stopped}async onAbort(e){this._aborted?await e():this._callback=e;}wait(...e){let r=new Promise((n,s)=>{this.onAbort(async()=>{e.forEach(o=>o.process.kill()),s(new Error("aborted"));});});return Promise.race([r,Promise.all(e.map(n=>n.wait))])}stop(){this._stopped=true;}tick(){setTimeout(async()=>{this._stopped||(this._aborted=await this.query?.(),!this._stopped&&(this._aborted?await this._callback?.():this.tick()));},this.interval);}};var D=class{constructor(e){this.maxConcurrency=e;}_active=0;_queue=[];_ended=false;get active(){return this._active}get pending(){return this._queue.length}get stats(){return `active: ${this.active}, pending: ${this.pending}`}async schedule(e){if(this._ended)throw new Error("ended");return new Promise((r,n)=>{let s=()=>{this._active++,e().then(o=>{this._active--,r(o),this.next();}).catch(o=>{this._active--,n(o),this.next();});};this._queue.push(s),this.next();})}async end(){if(!this._ended)for(this._ended=true;this._active>0||this.pending>0;)await new Promise(e=>setTimeout(e,50));}next(){this._active<this.maxConcurrency&&this._queue.shift()?.();}};var fe="[HWAccel]",Ie=["microsoft","vmware","virtualbox","llvmpipe","softpipe","swiftshader"];function Ve(t){let e=t.toLowerCase();return Ie.some(r=>e.includes(r))}async function Ce(){let{controllers:t}=await graphics();if(platform()==="linux")try{return (await readdir("/dev/dri")).some(r=>r.startsWith("renderD"))}catch{return false}return d.debug(fe,"GPU controllers:",t),t.some(e=>e.vendor.length>0&&!Ve(e.vendor))}var me=Ce().then(t=>(d.debug(fe,"gpu:",t),t));async function We(){let t=["no-sandbox","disable-dev-shm-usage","disable-web-security","disable-site-isolation-trials","ignore-certificate-errors","disable-blink-features=AutomationControlled","mute-audio","autoplay-policy=no-user-gesture-required","disable-extensions","headless=new","force-device-scale-factor=1","force-color-profile=srgb","ignore-gpu-blocklist","use-gl=angle","num-raster-threads=2","disable-background-networking","js-flags=--max-old-space-size=4096"];if(E<3&&t.push("log-level=3"),!(await me&&!ie))return t.push("use-angle=swiftshader","enable-unsafe-swiftshader"),t;t.push("disable-gpu-sandbox","enable-unsafe-webgpu");let r=platform();return r==="darwin"?t.push("use-angle=metal"):r==="win32"?t.push("use-angle=d3d11"):t.push("use-angle=vulkan","enable-features=Vulkan","disable-vulkan-surface"),t}var qe="[Electron]";async function Be(){let[t,e]=await Promise.all([stat(I),stat(fileURLToPath(import.meta.url))]);ok(t.mtimeMs>=e.mtimeMs,"app.cjs is stale, run `bun run build`");}async function be(t,e){await Be();let r=[],n=platform();n==="linux"&&r.push("xvfb-run","--auto-servernum",`--server-args="-screen 0 ${t.width}x${t.height}x24"`);let o=(await We()).map(p=>`--${p}`),i=Buffer.from(JSON.stringify(e)).toString("base64");o.push(`${W}=${i}`),r.push(je,...o,I);let a=r.join(" ");return d.debug(qe,a),de(a,{stdio:["ignore","pipe","pipe"],shell:n==="linux",env:{...process.env,RUST_BACKTRACE:"full"}})}var Q="[pup]",we=" progress: ";async function ze(t,e){d.debug(Q,"runPupApp",t,e);let r=[t];e.width&&r.push("--width",`${e.width}`),e.height&&r.push("--height",`${e.height}`),e.fps&&r.push("--fps",`${e.fps}`),e.duration&&r.push("--duration",`${e.duration}`),e.outDir&&r.push("--out-dir",e.outDir),e.formats?.length&&r.push("--formats",e.formats.join(",")),e.withAudio&&r.push("--with-audio"),e.useInnerProxy&&r.push("--use-inner-proxy"),e.deterministic&&r.push("--deterministic");let n=e.width??B,s=e.height??M,o=await be({width:n,height:s},r),i=new D(1);return o.process.stdout?.on("data",a=>{let p=a.toString().trim(),c=p.indexOf(we);if(c<0)return;p=p.slice(c+we.length);let P=p.indexOf("%");if(P<0)return;let u=p.slice(0,P),_=R(u);i.schedule(async()=>{await e.onProgress?.(_);});}),{handle:o,counter:i}}async function rr(t,e){d.debug(Q,"pup",t,e);let r=S.start(e.cancelQuery),n=e.outDir??"out",s=performance.now(),{handle:o,counter:i}=await ze(t,{...e,outDir:n});await r.wait(o),await i.end(),r.stop(),d.info(Q,`done in ${Math.round(performance.now()-s)}ms`);let a=join(n,"summary.json");return JSON.parse(await readFile(a,"utf-8"))}export{rr as A,Je as a,Ke as b,oe as c,R as d,et as e,E as f,at as g,ie as h,Se as i,I as j,w as k,d as l,mt as m,W as n,vt as o,de as p,B as q,M as r,Ue as s,Oe as t,Fe as u,q as v,_t as w,Tt as x,S as y,D as z};//# sourceMappingURL=chunk-SD4UOGME.js.map
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlL2Vudi50cyIsIi4uL3NyYy9iYXNlL3BhcnNlci50cyIsIi4uL3NyYy9iYXNlL2NvbnN0YW50cy50cyIsIi4uL3NyYy9iYXNlL2xvZ2dpbmcudHMiLCIuLi9zcmMvYmFzZS9ub2Vyci50cyIsIi4uL3NyYy9iYXNlL3Byb2Nlc3MudHMiLCIuLi9zcmMvcmVuZGVyZXIvc2NoZW1hLnRzIiwiLi4vc3JjL2Jhc2UvYWJvcnQudHMiLCIuLi9zcmMvYmFzZS9saW1pdGVyLnRzIiwiLi4vc3JjL2Jhc2UvaHdhY2NlbC50cyIsIi4uL3NyYy9yZW5kZXJlci9lbGVjdHJvbi50cyIsIi4uL3NyYy9wdXAudHMiXSwibmFtZXMiOlsicGVudiIsIm5hbWUiLCJwYXJzZXIiLCJkZWZhdWx0VmFsdWUiLCJwYXJzZU51bWJlciIsIngiLCJudW0iLCJwYXJzZVN0cmluZyIsInJlcXVpcmUiLCJjcmVhdGVSZXF1aXJlIiwiZW52IiwicHVwTG9nTGV2ZWwiLCJwdXBVc2VJbm5lclByb3h5IiwicHVwRGlzYWJsZUdQVSIsInB1cFBrZ1Jvb3QiLCJkaXJuYW1lIiwicHVwQXBwIiwiam9pbiIsIkRFQlVHIiwiSU5GTyIsIldBUk4iLCJFUlJPUiIsIkZBVEFMIiwic3RhY2tIb29rIiwidGFyZ2V0IiwiX2NvbnRleHQiLCJtZXNzYWdlcyIsInByb2Nlc3NlZCIsIm1zZyIsIl9mYXRhbF9kZWMiLCJfZXJyb3JfZGVjIiwiX3dhcm5fZGVjIiwiX2luZm9fZGVjIiwiX2RlYnVnX2RlYyIsIl9pbml0IiwiTG9nZ2VyIiwiX2xldmVsIiwiX19ydW5Jbml0aWFsaXplcnMiLCJfX3B1YmxpY0ZpZWxkIiwidmFsdWUiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuIiwiZXJyb3IiLCJsdiIsIm1lc3NhZ2UiLCJwcm9jIiwicmVzb2x2ZSIsInJlamVjdCIsImZhdGFsIiwiZGlzcGF0Y2giLCJkYXRhIiwiZXJyIiwiY29kZSIsInNpZ25hbCIsInJlYXNvbiIsIl9fZGVjb3JhdG9yU3RhcnQiLCJfX2RlY29yYXRlRWxlbWVudCIsIl9fZGVjb3JhdG9yTWV0YWRhdGEiLCJsb2dnZXIiLCJub2VyciIsImZuIiwiYXJncyIsInJldCIsIlBVUF9BUkdTX0tFWSIsInBhcmdzIiwiYXJndiIsInByaXYiLCJhcmciLCJleGVjIiwiY21kIiwib3B0aW9ucyIsInBhcnRzIiwicyIsImNvbW1hbmQiLCJzcGF3biIsIkRFRkFVTFRfV0lEVEgiLCJERUZBVUxUX0hFSUdIVCIsIkRFRkFVTFRfRlBTIiwiREVGQVVMVF9EVVJBVElPTiIsIkRFRkFVTFRfT1VUX0RJUiIsIlZJREVPX0ZPUk1BVFMiLCJpc1ZpZGVvRm9ybWF0IiwiUmVuZGVyU2NoZW1hIiwieiIsIkFib3J0TGluayIsIl9BYm9ydExpbmsiLCJxdWVyeSIsImludGVydmFsIiwiY2FsbGJhY2siLCJoYW5kbGVzIiwiYWJvcnQiLCJfIiwiaCIsIkNvbmN1cnJlbmN5TGltaXRlciIsIm1heENvbmN1cnJlbmN5IiwicnVuIiwidiIsImUiLCJyIiwiVEFHIiwic29mdHdhcmVWZW5kb3JzIiwiaXNTb2Z0d2FyZVJlbmRlcmVyIiwidmVuZG9yIiwibG93ZXIiLCJkZXRlY3RHUFVEcml2ZXIiLCJjb250cm9sbGVycyIsImdyYXBoaWNzIiwicGxhdGZvcm0iLCJyZWFkZGlyIiwiZiIsImMiLCJjYW5JVXNlR1BVIiwicmVzdWx0IiwiZWxlY3Ryb25PcHRzIiwib3B0cyIsInBsYXQiLCJhc3NlcnRBcHBGcmVzaCIsImFwcFN0YXQiLCJzZWxmU3RhdCIsInN0YXQiLCJmaWxlVVJMVG9QYXRoIiwib2siLCJydW5FbGVjdHJvbkFwcCIsInNpemUiLCJjbWRQYXJ0cyIsImVsZWN0cm9uQXJncyIsImEiLCJiYXNlNjRBcmdzIiwiZWxlY3Ryb24iLCJQUk9HUkVTU19UQUciLCJydW5QdXBBcHAiLCJzb3VyY2UiLCJ3IiwiaGFuZGxlIiwiY291bnRlciIsInN0YXJ0IiwiZW5kIiwicHJvZ3Jlc3NTdHIiLCJwcm9ncmVzcyIsInB1cCIsImxpbmsiLCJvdXREaXIiLCJ0MCIs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QUFBLEVBQUssQ0FDVmxGLEVBQU8sSUFBQSxDQUFLeUMsQ0FBQUEsQ0FBSyxDQUFBLFFBQUEsRUFBVyxJQUFBLENBQUssS0FBQSxDQUFNLFdBQUEsQ0FBWSxLQUFJLENBQUkyQyxDQUFFLENBQUMsQ0FBQSxFQUFBLENBQUksQ0FBQSxDQUVsRSxJQUFNQyxFQUFVL0gsSUFBQUEsQ0FBSzZILENBQUFBLENBQVEsY0FBYyxDQUFBLENBQzNDLE9BQU8sSUFBQSxDQUFLLEtBQUEsQ0FBTSxNQUFNRyxRQUFBQSxDQUFTRCxDQUFBQSxDQUFTLE9BQU8sQ0FBQyxDQUNwRCIsImZpbGUiOiJjaHVuay1TRDRVT0dNRS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjUuXG5cbmV4cG9ydCB0eXBlIEVudlBhcnNlcjxUPiA9ICh2YWx1ZTogdW5rbm93bikgPT4gVDtcblxuZXhwb3J0IGZ1bmN0aW9uIHBlbnY8VD4obmFtZTogc3RyaW5nLCBwYXJzZXI6IEVudlBhcnNlcjxUPiwgZGVmYXVsdFZhbHVlOiBUKTogVDtcbmV4cG9ydCBmdW5jdGlvbiBwZW52PFQ+KG5hbWU6IHN0cmluZywgcGFyc2VyOiBFbnZQYXJzZXI8VD4sIGRlZmF1bHRWYWx1ZT86IFQpOiBUIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGZ1bmN0aW9uIHBlbnY8VD4obmFtZTogc3RyaW5nLCBwYXJzZXI6IEVudlBhcnNlcjxUPiwgZGVmYXVsdFZhbHVlPzogVCk6IFQgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIHJldHVybiBwYXJzZXIocHJvY2Vzcy5lbnZbbmFtZV0pO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAxLzMwLlxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VOdW1iZXIoeDogdW5rbm93bik6IG51bWJlciB7XG4gIGlmICh0eXBlb2YgeCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiB4O1xuICB9XG4gIGNvbnN0IG51bSA9IE51bWJlcih4KTtcbiAgaWYgKE51bWJlci5pc05hTihudW0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSAke3h9IGlzIG5vdCBhIHZhbGlkIG51bWJlcmApO1xuICB9XG4gIHJldHVybiBudW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVN0cmluZyh4OiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiKSByZXR1cm4geDtcbiAgcmV0dXJuIFN0cmluZyh4KTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibW9kdWxlXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHBlbnYgfSBmcm9tIFwiLi9lbnZcIjtcbmltcG9ydCB7IHBhcnNlTnVtYmVyIH0gZnJvbSBcIi4vcGFyc2VyXCI7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5jb25zdCBlbnYgPSBwcm9jZXNzLmVudjtcblxuZXhwb3J0IGNvbnN0IHB1cExvZ0xldmVsID0gcGVudihcIlBVUF9MT0dfTEVWRUxcIiwgcGFyc2VOdW1iZXIsIDIpO1xuZXhwb3J0IGNvbnN0IHB1cFVzZUlubmVyUHJveHkgPSBlbnZbXCJQVVBfVVNFX0lOTkVSX1BST1hZXCJdID09PSBcIjFcIjtcbmV4cG9ydCBjb25zdCBwdXBEaXNhYmxlR1BVID0gZW52W1wiUFVQX0RJU0FCTEVfR1BVXCJdID09PSBcIjFcIjtcblxuZXhwb3J0IGNvbnN0IHB1cFBrZ1Jvb3QgPSBkaXJuYW1lKHJlcXVpcmUucmVzb2x2ZShcInB1cC1yZWNvcmRlci9wYWNrYWdlLmpzb25cIikpO1xuZXhwb3J0IGNvbnN0IHB1cEFwcCA9IGpvaW4ocHVwUGtnUm9vdCwgXCJkaXN0XCIsIFwiYXBwLmNqc1wiKTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDYuXG5cbmltcG9ydCB7IENoaWxkUHJvY2VzcywgdHlwZSBTZXJpYWxpemFibGUgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgcHVwTG9nTGV2ZWwgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2dnZXJMaWtlIHtcbiAgZGVidWc/KHRoaXM6IHZvaWQsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkO1xuXG4gIGluZm8/KHRoaXM6IHZvaWQsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkO1xuXG4gIHdhcm4/KHRoaXM6IHZvaWQsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkO1xuXG4gIGVycm9yPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcbn1cblxuY29uc3QgREVCVUcgPSBcIjxwdXBAZGVidWc+XCI7XG5jb25zdCBJTkZPID0gXCI8cHVwQGluZm8+XCI7XG5jb25zdCBXQVJOID0gXCI8cHVwQHdhcm4+XCI7XG5jb25zdCBFUlJPUiA9IFwiPHB1cEBlcnJvcj5cIjtcbmNvbnN0IEZBVEFMID0gXCI8cHVwQGZhdGFsPlwiO1xuXG5mdW5jdGlvbiBzdGFja0hvb2sodGFyZ2V0OiBGdW5jdGlvbiwgX2NvbnRleHQ6IENsYXNzTWV0aG9kRGVjb3JhdG9yQ29udGV4dCkge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IExvZ2dlciwgLi4ubWVzc2FnZXM6IHVua25vd25bXSkge1xuICAgIGNvbnN0IHByb2Nlc3NlZCA9IG1lc3NhZ2VzLm1hcCgobXNnKSA9PiB7XG4gICAgICByZXR1cm4gbXNnIGluc3RhbmNlb2YgRXJyb3IgPyAobXNnLnN0YWNrID8/IFN0cmluZyhtc2cpKSA6IG1zZztcbiAgICB9KTtcbiAgICByZXR1cm4gdGFyZ2V0LmNhbGwodGhpcywgLi4ucHJvY2Vzc2VkKTtcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIExvZ2dlciBpbXBsZW1lbnRzIExvZ2dlckxpa2Uge1xuICBwcml2YXRlIF9pbXBsPzogTG9nZ2VyTGlrZTtcblxuICBnZXQgbGV2ZWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbGV2ZWw7XG4gIH1cblxuICBzZXQgbGV2ZWwodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2xldmVsID0gdmFsdWU7XG4gICAgdGhpcy5pbXBsID0gdGhpcy5faW1wbCA/PyBjb25zb2xlO1xuICB9XG5cbiAgZ2V0IGltcGwoKTogTG9nZ2VyTGlrZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ltcGw7XG4gIH1cblxuICBzZXQgaW1wbCh2YWx1ZTogTG9nZ2VyTGlrZSkge1xuICAgIGNvbnN0IGRlYnVnID0gdmFsdWUuZGVidWcgPz8gY29uc29sZS5kZWJ1ZztcbiAgICBjb25zdCBpbmZvID0gdmFsdWUuaW5mbyA/PyBjb25zb2xlLmluZm87XG4gICAgY29uc3Qgd2FybiA9IHZhbHVlLndhcm4gPz8gY29uc29sZS53YXJuO1xuICAgIGNvbnN0IGVycm9yID0gdmFsdWUuZXJyb3IgPz8gY29uc29sZS5lcnJvcjtcbiAgICBjb25zdCBsdiA9IHRoaXMuX2xldmVsO1xuICAgIHRoaXMuX2ltcGwgPSB7XG4gICAgICBkZWJ1ZzogbHYgPj0gMyA/IGRlYnVnIDogdW5kZWZpbmVkLFxuICAgICAgaW5mbzogbHYgPj0gMiA/IGluZm8gOiB1bmRlZmluZWQsXG4gICAgICB3YXJuOiBsdiA+PSAxID8gd2FybiA6IHVuZGVmaW5lZCxcbiAgICAgIGVycm9yOiBsdiA+PSAwID8gZXJyb3IgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2xldmVsOiBudW1iZXIgPSBwdXBMb2dMZXZlbCkge1xuICAgIHRoaXMuaW1wbCA9IGNvbnNvbGU7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGRlYnVnKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/LmRlYnVnPy4oREVCVUcsIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgaW5mbyguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5pbmZvPy4oSU5GTywgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICB3YXJuKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/Lndhcm4/LihXQVJOLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGVycm9yKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/LmVycm9yPy4oRVJST1IsIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgZmF0YWwoLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8uZXJyb3I/LihGQVRBTCwgLi4ubWVzc2FnZXMpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2gobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgaWYgKG1lc3NhZ2Uuc3RhcnRzV2l0aChERUJVRykpIHtcbiAgICAgIHRoaXMuZGVidWcobWVzc2FnZS5zbGljZShERUJVRy5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIGlmIChtZXNzYWdlLnN0YXJ0c1dpdGgoSU5GTykpIHtcbiAgICAgIHRoaXMuaW5mbyhtZXNzYWdlLnNsaWNlKElORk8ubGVuZ3RoICsgMSkpO1xuICAgIH0gZWxzZSBpZiAobWVzc2FnZS5zdGFydHNXaXRoKFdBUk4pKSB7XG4gICAgICB0aGlzLndhcm4obWVzc2FnZS5zbGljZShXQVJOLmxlbmd0aCArIDEpKTtcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2Uuc3RhcnRzV2l0aChFUlJPUikpIHtcbiAgICAgIHRoaXMuZXJyb3IobWVzc2FnZS5zbGljZShFUlJPUi5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5mbyhtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBhdHRhY2gocHJvYzogQ2hpbGRQcm9jZXNzLCBuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5kZWJ1ZyhgJHtuYW1lfS5hdHRhY2hgKTtcbiAgICAgIGxldCBmYXRhbDogc3RyaW5nID0gXCJcIjtcbiAgICAgIGNvbnN0IGRpc3BhdGNoID0gKGRhdGE6IEJ1ZmZlciB8IFNlcmlhbGl6YWJsZSkgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICBpZiAobWVzc2FnZS5zdGFydHNXaXRoKEZBVEFMKSkge1xuICAgICAgICAgIGZhdGFsICs9IG1lc3NhZ2Uuc2xpY2UoRkFUQUwubGVuZ3RoICsgMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaChtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHByb2Muc3RkZXJyPy5vbihcImRhdGFcIiwgZGlzcGF0Y2gpO1xuICAgICAgcHJvYy5zdGRvdXQ/Lm9uKFwiZGF0YVwiLCBkaXNwYXRjaCk7XG4gICAgICBwcm9jXG4gICAgICAgIC5vbihcIm1lc3NhZ2VcIiwgZGlzcGF0Y2gpXG4gICAgICAgIC5vbihcImVycm9yXCIsIChlcnIpID0+IHtcbiAgICAgICAgICBmYXRhbCArPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICBwcm9jLmtpbGwoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uY2UoXCJjbG9zZVwiLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgICAgaWYgKGNvZGUgfHwgc2lnbmFsIHx8IGZhdGFsKSB7XG4gICAgICAgICAgICBmYXRhbCB8fD0gYGNvbW1hbmQgZmFpbGVkOiAke3Byb2Muc3Bhd25hcmdzLmpvaW4oXCIgXCIpfWA7XG4gICAgICAgICAgICB0aGlzLmRlYnVnKGAke25hbWV9LmNsb3NlYCwgeyBjb2RlLCBzaWduYWwsIGZhdGFsIH0pO1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihmYXRhbCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnKGAke25hbWV9LmNsb3NlYCk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAub24oXCJ1bmhhbmRsZWRSZWplY3Rpb25cIiwgKHJlYXNvbikgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3IoYCR7bmFtZX0udW5oYW5kbGVkYCwgcmVhc29uKTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKFwidW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yXCIsIChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yKGAke25hbWV9LnVuaGFuZGxlZGAsIGVycik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoKTtcblxuZXhwb3J0IHsgbG9nZ2VyIH07XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI0LlxuXG5leHBvcnQgZnVuY3Rpb24gbm9lcnI8Rm4gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueSwgRD4oXG4gIGZuOiBGbixcbiAgZGVmYXVsdFZhbHVlOiBELFxuKTogKC4uLmFyZ3M6IFBhcmFtZXRlcnM8Rm4+KSA9PiBSZXR1cm5UeXBlPEZuPiB8IEQge1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmV0ID0gZm4oLi4uYXJncyk7XG4gICAgICBpZiAocmV0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gcmV0LmNhdGNoKCgpID0+IGRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAxLzMwLlxuXG5pbXBvcnQgeyBzcGF3biwgdHlwZSBDaGlsZFByb2Nlc3MsIHR5cGUgU3Bhd25PcHRpb25zIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL2xvZ2dpbmdcIjtcblxuZXhwb3J0IGNvbnN0IFBVUF9BUkdTX0tFWSA9IFwiLS1wdXAtcHJpdi1hcmdzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJncygpIHtcbiAgY29uc3QgYXJndiA9IHByb2Nlc3MuYXJndjtcbiAgbGV0IHByaXYgPSBhcmd2LmZpbmQoKGFyZykgPT4gYXJnLnN0YXJ0c1dpdGgoUFVQX0FSR1NfS0VZKSk7XG4gIGlmICghcHJpdikge1xuICAgIGxvZ2dlci5kZWJ1ZyhcInByb2Nhcmd2XCIsIGFyZ3YpO1xuICAgIHJldHVybiBwcm9jZXNzLmFyZ3Y7XG4gIH1cbiAgY29uc3QgYXJncyA9IFtcImV4ZWNcIiwgLi4uYXJndi5zbGljZSgtMSldO1xuICBwcml2ID0gQnVmZmVyLmZyb20ocHJpdi5zcGxpdChcIj1cIilbMV0hLCBcImJhc2U2NFwiKS50b1N0cmluZygpO1xuICBhcmdzLnB1c2goLi4uSlNPTi5wYXJzZShwcml2KSk7XG4gIGxvZ2dlci5kZWJ1ZyhcInB1cGFyZ3NcIiwgYXJncyk7XG4gIHJldHVybiBhcmdzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NIYW5kbGUge1xuICBwcm9jZXNzOiBDaGlsZFByb2Nlc3M7XG4gIHdhaXQ6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjKGNtZDogc3RyaW5nLCBvcHRpb25zPzogU3Bhd25PcHRpb25zKTogUHJvY2Vzc0hhbmRsZSB7XG4gIGNvbnN0IHBhcnRzID0gY21kLnNwbGl0KFwiIFwiKS5maWx0ZXIoKHMpID0+IHMubGVuZ3RoKTtcbiAgY29uc3QgW2NvbW1hbmQsIC4uLmFyZ3NdID0gcGFydHM7XG4gIGlmICghY29tbWFuZCkgdGhyb3cgbmV3IEVycm9yKFwiZW1wdHkgY29tbWFuZFwiKTtcbiAgY29uc3QgcHJvYyA9IHNwYXduKGNvbW1hbmQsIGFyZ3MsIHtcbiAgICBzdGRpbzogXCJpbmhlcml0XCIsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG4gIHJldHVybiB7IHByb2Nlc3M6IHByb2MsIHdhaXQ6IGxvZ2dlci5hdHRhY2gocHJvYywgY29tbWFuZCkgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDYuXG5cbmltcG9ydCB6IGZyb20gXCJ6b2RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBWaWRlb0ZpbGVzIHtcbiAgY292ZXI6IHN0cmluZztcbiAgbXA0Pzogc3RyaW5nO1xuICB3ZWJtPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9XSURUSCA9IDE5MjA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9IRUlHSFQgPSAxMDgwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRlBTID0gMzA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9EVVJBVElPTiA9IDU7XG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRfRElSID0gXCJvdXRcIjtcbmV4cG9ydCBjb25zdCBWSURFT19GT1JNQVRTID0gW1wibXA0XCIsIFwid2VibVwiXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVmlkZW9Gb3JtYXQgPSAodHlwZW9mIFZJREVPX0ZPUk1BVFMpW251bWJlcl07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZpZGVvRm9ybWF0KHM6IHN0cmluZyk6IHMgaXMgVmlkZW9Gb3JtYXQge1xuICByZXR1cm4gVklERU9fRk9STUFUUy5pbmNsdWRlcyhzIGFzIFZpZGVvRm9ybWF0KTtcbn1cblxuZXhwb3J0IGNvbnN0IFJlbmRlclNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZHVyYXRpb246IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZWZhdWx0KERFRkFVTFRfRFVSQVRJT04pLmRlc2NyaWJlKFwiRHVyYXRpb24gaW4gc2Vjb25kc1wiKSxcbiAgd2lkdGg6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZWZhdWx0KERFRkFVTFRfV0lEVEgpLmRlc2NyaWJlKFwiVmlkZW8gd2lkdGhcIiksXG4gIGhlaWdodDogei5udW1iZXIoKS5vcHRpb25hbCgpLmRlZmF1bHQoREVGQVVMVF9IRUlHSFQpLmRlc2NyaWJlKFwiVmlkZW8gaGVpZ2h0XCIpLFxuICBmcHM6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZWZhdWx0KERFRkFVTFRfRlBTKS5kZXNjcmliZShcIkZyYW1lcyBwZXIgc2Vjb25kXCIpLFxuICBmb3JtYXRzOiB6XG4gICAgLmFycmF5KHouZW51bShWSURFT19GT1JNQVRTKSlcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZWZhdWx0KFtcIm1wNFwiXSlcbiAgICAuZGVzY3JpYmUoYE91dHB1dCB2aWRlbyBmb3JtYXRzLCBhbGxvdyAke1ZJREVPX0ZPUk1BVFMuam9pbihcIiwgXCIpfWApLFxuICB3aXRoQXVkaW86IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSkuZGVzY3JpYmUoXCJDYXB0dXJlIGFuZCBlbmNvZGUgYXVkaW9cIiksXG4gIG91dERpcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlZmF1bHQoREVGQVVMVF9PVVRfRElSKS5kZXNjcmliZShcIk91dHB1dCBkaXJlY3RvcnlcIiksXG4gIHVzZUlubmVyUHJveHk6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSkuZGVzY3JpYmUoXCJVc2UgYmlsaWJpbGkgaW5uZXIgcHJveHkgZm9yIHJlc291cmNlIGFjY2Vzc1wiKSxcbiAgZGV0ZXJtaW5pc3RpYzogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKS5kZXNjcmliZShcIlJlbmRlciBieSBmcmFtZSByYXRoZXIgdGhhbiByZWNvcmRpbmdcIiksXG59KTtcblxuZXhwb3J0IHR5cGUgUmVuZGVyT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIFJlbmRlclNjaGVtYT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUmVzdWx0IHtcbiAgb3B0aW9uczogUmVuZGVyT3B0aW9ucztcbiAgd3JpdHRlbjogbnVtYmVyO1xuICBmaWxlczogVmlkZW9GaWxlcztcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMTEuXG5cbmltcG9ydCB0eXBlIHsgUHJvY2Vzc0hhbmRsZSB9IGZyb20gXCIuL3Byb2Nlc3NcIjtcblxuZXhwb3J0IHR5cGUgQXN5bmNUYXNrID0gKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG5leHBvcnQgdHlwZSBBYm9ydFF1ZXJ5ID0gKCkgPT4gUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW47XG5cbmV4cG9ydCBjbGFzcyBBYm9ydExpbmsge1xuICBwcml2YXRlIF9jYWxsYmFjaz86IEFzeW5jVGFzaztcbiAgcHJpdmF0ZSBfYWJvcnRlZD86IGJvb2xlYW47XG4gIHByaXZhdGUgX3N0b3BwZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IHF1ZXJ5PzogQWJvcnRRdWVyeSxcbiAgICByZWFkb25seSBpbnRlcnZhbDogbnVtYmVyID0gMTAwMCxcbiAgKSB7XG4gICAgaWYgKHF1ZXJ5KSB7XG4gICAgICB0aGlzLnRpY2soKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgc3RhcnQocXVlcnk/OiBBYm9ydFF1ZXJ5LCBpbnRlcnZhbD86IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgQWJvcnRMaW5rKHF1ZXJ5LCBpbnRlcnZhbCk7XG4gIH1cblxuICBnZXQgYWJvcnRlZCgpIHtcbiAgICByZXR1cm4gIXRoaXMuX3N0b3BwZWQgJiYgdGhpcy5fYWJvcnRlZDtcbiAgfVxuXG4gIGdldCBzdG9wcGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdG9wcGVkO1xuICB9XG5cbiAgYXN5bmMgb25BYm9ydChjYWxsYmFjazogQXN5bmNUYXNrKSB7XG4gICAgaWYgKHRoaXMuX2Fib3J0ZWQpIHtcbiAgICAgIGF3YWl0IGNhbGxiYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgfVxuICB9XG5cbiAgd2FpdCguLi5oYW5kbGVzOiBQcm9jZXNzSGFuZGxlW10pIHtcbiAgICBjb25zdCBhYm9ydCA9IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMub25BYm9ydChhc3luYyAoKSA9PiB7XG4gICAgICAgIGhhbmRsZXMuZm9yRWFjaCgoaCkgPT4gaC5wcm9jZXNzLmtpbGwoKSk7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJhYm9ydGVkXCIpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgICAgYWJvcnQsXG4gICAgICBQcm9taXNlLmFsbChoYW5kbGVzLm1hcCgoaCkgPT4gaC53YWl0KSksIC8vXG4gICAgXSk7XG4gIH1cblxuICBzdG9wKCkge1xuICAgIHRoaXMuX3N0b3BwZWQgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSB0aWNrKCkge1xuICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX3N0b3BwZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fYWJvcnRlZCA9IGF3YWl0IHRoaXMucXVlcnk/LigpO1xuICAgICAgaWYgKHRoaXMuX3N0b3BwZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2Fib3J0ZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5fY2FsbGJhY2s/LigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50aWNrKCk7XG4gICAgICB9XG4gICAgfSwgdGhpcy5pbnRlcnZhbCk7XG4gIH1cbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDEvMzAuXG5cbmV4cG9ydCBjbGFzcyBDb25jdXJyZW5jeUxpbWl0ZXIge1xuICBwcml2YXRlIF9hY3RpdmUgPSAwO1xuICBwcml2YXRlIF9xdWV1ZTogVm9pZEZ1bmN0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfZW5kZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBtYXhDb25jdXJyZW5jeTogbnVtYmVyKSB7fVxuXG4gIGdldCBhY3RpdmUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICB9XG5cbiAgZ2V0IHBlbmRpbmcoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcXVldWUubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IHN0YXRzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhY3RpdmU6ICR7dGhpcy5hY3RpdmV9LCBwZW5kaW5nOiAke3RoaXMucGVuZGluZ31gO1xuICB9XG5cbiAgYXN5bmMgc2NoZWR1bGU8VD4oZm46ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodGhpcy5fZW5kZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImVuZGVkXCIpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcnVuID0gKCkgPT4ge1xuICAgICAgICB0aGlzLl9hY3RpdmUrKztcbiAgICAgICAgZm4oKVxuICAgICAgICAgIC50aGVuKCh2KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmUtLTtcbiAgICAgICAgICAgIHJlc29sdmUodik7XG4gICAgICAgICAgICB0aGlzLm5leHQoKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlLS07XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICB0aGlzLm5leHQoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICB0aGlzLl9xdWV1ZS5wdXNoKHJ1bik7XG4gICAgICB0aGlzLm5leHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGVuZCgpIHtcbiAgICBpZiAodGhpcy5fZW5kZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZW5kZWQgPSB0cnVlO1xuICAgIHdoaWxlICh0aGlzLl9hY3RpdmUgPiAwIHx8IHRoaXMucGVuZGluZyA+IDApIHtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDUwKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuZXh0KCkge1xuICAgIGlmICh0aGlzLl9hY3RpdmUgPCB0aGlzLm1heENvbmN1cnJlbmN5KSB7XG4gICAgICB0aGlzLl9xdWV1ZS5zaGlmdCgpPy4oKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjcuXG5cbmltcG9ydCB7IHJlYWRkaXIgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IHBsYXRmb3JtIH0gZnJvbSBcIm9zXCI7XG5pbXBvcnQgeyBncmFwaGljcyB9IGZyb20gXCJzeXN0ZW1pbmZvcm1hdGlvblwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuXG5jb25zdCBUQUcgPSBcIltIV0FjY2VsXVwiO1xuXG5jb25zdCBzb2Z0d2FyZVZlbmRvcnMgPSBbXCJtaWNyb3NvZnRcIiwgXCJ2bXdhcmVcIiwgXCJ2aXJ0dWFsYm94XCIsIFwibGx2bXBpcGVcIiwgXCJzb2Z0cGlwZVwiLCBcInN3aWZ0c2hhZGVyXCJdO1xuXG5mdW5jdGlvbiBpc1NvZnR3YXJlUmVuZGVyZXIodmVuZG9yOiBzdHJpbmcpIHtcbiAgY29uc3QgbG93ZXIgPSB2ZW5kb3IudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIHNvZnR3YXJlVmVuZG9ycy5zb21lKCh2KSA9PiBsb3dlci5pbmNsdWRlcyh2KSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRldGVjdEdQVURyaXZlcigpIHtcbiAgY29uc3QgeyBjb250cm9sbGVycyB9ID0gYXdhaXQgZ3JhcGhpY3MoKTtcbiAgaWYgKHBsYXRmb3JtKCkgPT09IFwibGludXhcIikge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IHJlYWRkaXIoXCIvZGV2L2RyaVwiKTtcbiAgICAgIHJldHVybiBmaWxlcy5zb21lKChmKSA9PiBmLnN0YXJ0c1dpdGgoXCJyZW5kZXJEXCIpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgbG9nZ2VyLmRlYnVnKFRBRywgXCJHUFUgY29udHJvbGxlcnM6XCIsIGNvbnRyb2xsZXJzKTtcbiAgcmV0dXJuIGNvbnRyb2xsZXJzLnNvbWUoKGMpID0+IGMudmVuZG9yLmxlbmd0aCA+IDAgJiYgIWlzU29mdHdhcmVSZW5kZXJlcihjLnZlbmRvcikpO1xufVxuXG5leHBvcnQgY29uc3QgY2FuSVVzZUdQVSA9IGRldGVjdEdQVURyaXZlcigpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICBsb2dnZXIuZGVidWcoVEFHLCBcImdwdTpcIiwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IHsgb2sgfSBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgZWxlY3Ryb24sIHsgdHlwZSBTaXplIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgeyBzdGF0IH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBwbGF0Zm9ybSB9IGZyb20gXCJvc1wiO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gXCJ1cmxcIjtcbmltcG9ydCB7IHB1cEFwcCwgcHVwRGlzYWJsZUdQVSwgcHVwTG9nTGV2ZWwgfSBmcm9tIFwiLi4vYmFzZS9jb25zdGFudHNcIjtcbmltcG9ydCB7IGNhbklVc2VHUFUgfSBmcm9tIFwiLi4vYmFzZS9od2FjY2VsXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi4vYmFzZS9sb2dnaW5nXCI7XG5pbXBvcnQgeyBleGVjLCBQVVBfQVJHU19LRVkgfSBmcm9tIFwiLi4vYmFzZS9wcm9jZXNzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbGVjdHJvbk9wdHMoKSB7XG4gIGNvbnN0IG9wdHMgPSBbXG4gICAgLy8g5a655Zmo5rKZ566xXG4gICAgXCJuby1zYW5kYm94XCIsXG4gICAgXCJkaXNhYmxlLWRldi1zaG0tdXNhZ2VcIixcbiAgICAvLyDot6jln58v5a6J5YWoXG4gICAgXCJkaXNhYmxlLXdlYi1zZWN1cml0eVwiLFxuICAgIFwiZGlzYWJsZS1zaXRlLWlzb2xhdGlvbi10cmlhbHNcIixcbiAgICBcImlnbm9yZS1jZXJ0aWZpY2F0ZS1lcnJvcnNcIixcbiAgICAvLyDlvZXliLbooYzkuLpcbiAgICBcImRpc2FibGUtYmxpbmstZmVhdHVyZXM9QXV0b21hdGlvbkNvbnRyb2xsZWRcIixcbiAgICBcIm11dGUtYXVkaW9cIixcbiAgICBcImF1dG9wbGF5LXBvbGljeT1uby11c2VyLWdlc3R1cmUtcmVxdWlyZWRcIixcbiAgICBcImRpc2FibGUtZXh0ZW5zaW9uc1wiLFxuICAgIC8vIOa4suafk1xuICAgIFwiaGVhZGxlc3M9bmV3XCIsXG4gICAgXCJmb3JjZS1kZXZpY2Utc2NhbGUtZmFjdG9yPTFcIixcbiAgICBcImZvcmNlLWNvbG9yLXByb2ZpbGU9c3JnYlwiLFxuICAgIFwiaWdub3JlLWdwdS1ibG9ja2xpc3RcIixcbiAgICBcInVzZS1nbD1hbmdsZVwiLFxuICAgIC8vIOi1hOa6kOaOp+WItlxuICAgIFwibnVtLXJhc3Rlci10aHJlYWRzPTJcIixcbiAgICBcImRpc2FibGUtYmFja2dyb3VuZC1uZXR3b3JraW5nXCIsXG4gICAgXCJqcy1mbGFncz0tLW1heC1vbGQtc3BhY2Utc2l6ZT00MDk2XCIsXG4gIF07XG4gIGlmIChwdXBMb2dMZXZlbCA8IDMpIHtcbiAgICBvcHRzLnB1c2goXCJsb2ctbGV2ZWw9M1wiKTtcbiAgfVxuXG4gIGNvbnN0IGVuYWJsZUdwdSA9IChhd2FpdCBjYW5JVXNlR1BVKSAmJiAhcHVwRGlzYWJsZUdQVTtcbiAgaWYgKCFlbmFibGVHcHUpIHtcbiAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9c3dpZnRzaGFkZXJcIiwgXCJlbmFibGUtdW5zYWZlLXN3aWZ0c2hhZGVyXCIpO1xuICAgIHJldHVybiBvcHRzO1xuICB9XG5cbiAgb3B0cy5wdXNoKFwiZGlzYWJsZS1ncHUtc2FuZGJveFwiLCBcImVuYWJsZS11bnNhZmUtd2ViZ3B1XCIpO1xuICBjb25zdCBwbGF0ID0gcGxhdGZvcm0oKTtcbiAgaWYgKHBsYXQgPT09IFwiZGFyd2luXCIpIHtcbiAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9bWV0YWxcIik7XG4gIH0gZWxzZSBpZiAocGxhdCA9PT0gXCJ3aW4zMlwiKSB7XG4gICAgb3B0cy5wdXNoKFwidXNlLWFuZ2xlPWQzZDExXCIpO1xuICB9IGVsc2Uge1xuICAgIG9wdHMucHVzaChcInVzZS1hbmdsZT12dWxrYW5cIiwgXCJlbmFibGUtZmVhdHVyZXM9VnVsa2FuXCIsIFwiZGlzYWJsZS12dWxrYW4tc3VyZmFjZVwiKTtcbiAgfVxuICByZXR1cm4gb3B0cztcbn1cblxuY29uc3QgVEFHID0gXCJbRWxlY3Ryb25dXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIGFzc2VydEFwcEZyZXNoKCkge1xuICBjb25zdCBbYXBwU3RhdCwgc2VsZlN0YXRdID0gYXdhaXQgUHJvbWlzZS5hbGwoW3N0YXQocHVwQXBwKSwgc3RhdChmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpXSk7XG4gIG9rKGFwcFN0YXQubXRpbWVNcyA+PSBzZWxmU3RhdC5tdGltZU1zLCBgYXBwLmNqcyBpcyBzdGFsZSwgcnVuIFxcYGJ1biBydW4gYnVpbGRcXGBgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkVsZWN0cm9uQXBwKHNpemU6IFNpemUsIGFyZ3M6IHVua25vd25bXSkge1xuICBhd2FpdCBhc3NlcnRBcHBGcmVzaCgpO1xuICBjb25zdCBjbWRQYXJ0czogdW5rbm93bltdID0gW107XG4gIGNvbnN0IHBsYXQgPSBwbGF0Zm9ybSgpO1xuICBpZiAocGxhdCA9PT0gXCJsaW51eFwiKSB7XG4gICAgY21kUGFydHMucHVzaChgeHZmYi1ydW5gLCBgLS1hdXRvLXNlcnZlcm51bWAsIGAtLXNlcnZlci1hcmdzPVwiLXNjcmVlbiAwICR7c2l6ZS53aWR0aH14JHtzaXplLmhlaWdodH14MjRcImApO1xuICB9XG4gIGNvbnN0IG9wdHMgPSBhd2FpdCBlbGVjdHJvbk9wdHMoKTtcbiAgY29uc3QgZWxlY3Ryb25BcmdzID0gb3B0cy5tYXAoKGEpID0+IGAtLSR7YX1gKTtcbiAgY29uc3QgYmFzZTY0QXJncyA9IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KGFyZ3MpKS50b1N0cmluZyhcImJhc2U2NFwiKTtcbiAgZWxlY3Ryb25BcmdzLnB1c2goYCR7UFVQX0FSR1NfS0VZfT0ke2Jhc2U2NEFyZ3N9YCk7XG4gIGNtZFBhcnRzLnB1c2goZWxlY3Ryb24sIC4uLmVsZWN0cm9uQXJncywgcHVwQXBwKTtcbiAgY29uc3QgY21kID0gY21kUGFydHMuam9pbihcIiBcIik7XG4gIGxvZ2dlci5kZWJ1ZyhUQUcsIGNtZCk7XG4gIHJldHVybiBleGVjKGNtZCwge1xuICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJwaXBlXCIsIFwicGlwZVwiXSxcbiAgICBzaGVsbDogcGxhdCA9PT0gXCJsaW51eFwiLFxuICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgUlVTVF9CQUNLVFJBQ0U6IFwiZnVsbFwiIH0sXG4gIH0pO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8wOS5cblxuaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQWJvcnRMaW5rLCB0eXBlIEFib3J0UXVlcnkgfSBmcm9tIFwiLi9iYXNlL2Fib3J0XCI7XG5pbXBvcnQgeyBDb25jdXJyZW5jeUxpbWl0ZXIgfSBmcm9tIFwiLi9iYXNlL2xpbWl0ZXJcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL2Jhc2UvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1iZXIgfSBmcm9tIFwiLi9iYXNlL3BhcnNlclwiO1xuaW1wb3J0IHsgcnVuRWxlY3Ryb25BcHAgfSBmcm9tIFwiLi9yZW5kZXJlci9lbGVjdHJvblwiO1xuaW1wb3J0IHsgREVGQVVMVF9IRUlHSFQsIERFRkFVTFRfV0lEVEgsIHR5cGUgUmVuZGVyT3B0aW9ucywgdHlwZSBSZW5kZXJSZXN1bHQgfSBmcm9tIFwiLi9yZW5kZXJlci9zY2hlbWFcIjtcblxuY29uc3QgVEFHID0gXCJbcHVwXVwiO1xuY29uc3QgUFJPR1JFU1NfVEFHID0gXCIgcHJvZ3Jlc3M6IFwiO1xuXG5leHBvcnQgdHlwZSBQdXBQcm9ncmVzc0NhbGxiYWNrID0gKHByb2dyZXNzOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFB1cE9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPFJlbmRlck9wdGlvbnM+IHtcbiAgY2FuY2VsUXVlcnk/OiBBYm9ydFF1ZXJ5O1xuICBvblByb2dyZXNzPzogUHVwUHJvZ3Jlc3NDYWxsYmFjaztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXBSZXN1bHQgZXh0ZW5kcyBSZW5kZXJSZXN1bHQge31cblxuYXN5bmMgZnVuY3Rpb24gcnVuUHVwQXBwKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBQdXBPcHRpb25zKSB7XG4gIGxvZ2dlci5kZWJ1ZyhUQUcsIGBydW5QdXBBcHBgLCBzb3VyY2UsIG9wdGlvbnMpO1xuXG4gIGNvbnN0IGFyZ3M6IHN0cmluZ1tdID0gW3NvdXJjZV07XG4gIGlmIChvcHRpb25zLndpZHRoKSBhcmdzLnB1c2goXCItLXdpZHRoXCIsIGAke29wdGlvbnMud2lkdGh9YCk7XG4gIGlmIChvcHRpb25zLmhlaWdodCkgYXJncy5wdXNoKFwiLS1oZWlnaHRcIiwgYCR7b3B0aW9ucy5oZWlnaHR9YCk7XG4gIGlmIChvcHRpb25zLmZwcykgYXJncy5wdXNoKFwiLS1mcHNcIiwgYCR7b3B0aW9ucy5mcHN9YCk7XG4gIGlmIChvcHRpb25zLmR1cmF0aW9uKSBhcmdzLnB1c2goXCItLWR1cmF0aW9uXCIsIGAke29wdGlvbnMuZHVyYXRpb259YCk7XG4gIGlmIChvcHRpb25zLm91dERpcikgYXJncy5wdXNoKFwiLS1vdXQtZGlyXCIsIG9wdGlvbnMub3V0RGlyKTtcbiAgaWYgKG9wdGlvbnMuZm9ybWF0cz8ubGVuZ3RoKSBhcmdzLnB1c2goXCItLWZvcm1hdHNcIiwgb3B0aW9ucy5mb3JtYXRzLmpvaW4oXCIsXCIpKTtcbiAgaWYgKG9wdGlvbnMud2l0aEF1ZGlvKSBhcmdzLnB1c2goXCItLXdpdGgtYXVkaW9cIik7XG4gIGlmIChvcHRpb25zLnVzZUlubmVyUHJveHkpIGFyZ3MucHVzaChcIi0tdXNlLWlubmVyLXByb3h5XCIpO1xuICBpZiAob3B0aW9ucy5kZXRlcm1pbmlzdGljKSBhcmdzLnB1c2goXCItLWRldGVybWluaXN0aWNcIik7XG5cbiAgY29uc3QgdyA9IG9wdGlvbnMud2lkdGggPz8gREVGQVVMVF9XSURUSDtcbiAgY29uc3QgaCA9IG9wdGlvbnMuaGVpZ2h0ID8/IERFRkFVTFRfSEVJR0hUO1xuICBjb25zdCBoYW5kbGUgPSBhd2FpdCBydW5FbGVjdHJvbkFwcCh7IHdpZHRoOiB3LCBoZWlnaHQ6IGggfSwgYXJncyk7XG4gIGNvbnN0IGNvdW50ZXIgPSBuZXcgQ29uY3VycmVuY3lMaW1pdGVyKDEpO1xuICBoYW5kbGUucHJvY2Vzcy5zdGRvdXQ/Lm9uKFwiZGF0YVwiLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgbGV0IG1lc3NhZ2UgPSBkYXRhLnRvU3RyaW5nKCkudHJpbSgpO1xuICAgIGxldCBzdGFydCA9IG1lc3NhZ2UuaW5kZXhPZihQUk9HUkVTU19UQUcpO1xuICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2Uuc2xpY2Uoc3RhcnQgKyBQUk9HUkVTU19UQUcubGVuZ3RoKTtcbiAgICBjb25zdCBlbmQgPSBtZXNzYWdlLmluZGV4T2YoXCIlXCIpO1xuICAgIGlmIChlbmQgPCAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHByb2dyZXNzU3RyID0gbWVzc2FnZS5zbGljZSgwLCBlbmQpO1xuICAgIGNvbnN0IHByb2dyZXNzID0gcGFyc2VOdW1iZXIocHJvZ3Jlc3NTdHIpO1xuICAgIGNvdW50ZXIuc2NoZWR1bGUoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgb3B0aW9ucy5vblByb2dyZXNzPy4ocHJvZ3Jlc3MpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHsgaGFuZGxlLCBjb3VudGVyIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwdXAoc291cmNlOiBzdHJpbmcsIG9wdGlvbnM6IFB1cE9wdGlvbnMpOiBQcm9taXNlPFB1cFJlc3VsdD4ge1xuICBsb2dnZXIuZGVidWcoVEFHLCBgcHVwYCwgc291cmNlLCBvcHRpb25zKTtcblxuICBjb25zdCBsaW5rID0gQWJvcnRMaW5rLnN0YXJ0KG9wdGlvbnMuY2FuY2VsUXVlcnkpO1xuICBjb25zdCBvdXREaXIgPSBvcHRpb25zLm91dERpciA/PyBcIm91dFwiO1xuXG4gIGNvbnN0IHQwID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gIGNvbnN0IHsgaGFuZGxlLCBjb3VudGVyIH0gPSBhd2FpdCBydW5QdXBBcHAoc291cmNlLCB7IC4uLm9wdGlvbnMsIG91dERpciB9KTtcblxuICBhd2FpdCBsaW5rLndhaXQoaGFuZGxlKTtcbiAgYXdhaXQgY291bnRlci5lbmQoKTtcbiAgbGluay5zdG9wKCk7XG4gIGxvZ2dlci5pbmZvKFRBRywgYGRvbmUgaW4gJHtNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLm5vdygpIC0gdDApfW1zYCk7XG5cbiAgY29uc3Qgc3VtUGF0aCA9IGpvaW4ob3V0RGlyLCBcInN1bW1hcnkuanNvblwiKTtcbiAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoc3VtUGF0aCwgXCJ1dGYtOFwiKSkgYXMgUmVuZGVyUmVzdWx0O1xufVxuIl19
|
package/dist/cli.js
CHANGED
|
@@ -1,30 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { program } from 'commander';
|
|
4
|
-
|
|
5
|
-
async function makeCLI(name, callback) {
|
|
6
|
-
const shape = RenderSchema.shape;
|
|
7
|
-
program.name(name).argument("<source>", "file://, http(s)://, \u6216 data: URI").option("-W, --width <number>", shape.width.description, `${DEFAULT_WIDTH}`).option("-H, --height <number>", shape.height.description, `${DEFAULT_HEIGHT}`).option("-f, --fps <number>", shape.fps.description, `${DEFAULT_FPS}`).option("-t, --duration <number>", shape.duration.description, `${DEFAULT_DURATION}`).option("-o, --out-dir <path>", shape.outDir.description, `${DEFAULT_OUT_DIR}`).option("-F, --formats <formats>", shape.formats.description, "mp4").option("-a, --with-audio", shape.withAudio.description, false).option("--use-inner-proxy", shape.useInnerProxy.description, pupUseInnerProxy).option("-d, --deterministic", shape.deterministic.description, false).action(async (source, opts) => {
|
|
8
|
-
try {
|
|
9
|
-
await callback(source, {
|
|
10
|
-
width: noerr(parseNumber, DEFAULT_WIDTH)(opts.width),
|
|
11
|
-
height: noerr(parseNumber, DEFAULT_HEIGHT)(opts.height),
|
|
12
|
-
fps: noerr(parseNumber, DEFAULT_FPS)(opts.fps),
|
|
13
|
-
duration: noerr(parseNumber, DEFAULT_DURATION)(opts.duration),
|
|
14
|
-
outDir: opts.outDir ?? DEFAULT_OUT_DIR,
|
|
15
|
-
formats: parseString(opts.formats).split(",").map((s) => s.trim()).filter(isVideoFormat),
|
|
16
|
-
withAudio: opts.withAudio ?? false,
|
|
17
|
-
useInnerProxy: opts.useInnerProxy ?? pupUseInnerProxy,
|
|
18
|
-
deterministic: opts.deterministic ?? false
|
|
19
|
-
});
|
|
20
|
-
} catch (e) {
|
|
21
|
-
logger.fatal(e);
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
await program.parseAsync(pargs());
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// src/cli.ts
|
|
28
|
-
makeCLI("pup", pup);
|
|
29
|
-
//# sourceMappingURL=cli.js.map
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24udHMiLCIuLi9zcmMvY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFxQkEsZUFBc0IsT0FBQSxDQUFRLE1BQWMsUUFBQSxFQUF1QjtBQUNqRSxFQUFBLE1BQU0sUUFBUSxZQUFBLENBQWEsS0FBQTtBQUMzQixFQUFBLE9BQUEsQ0FDRyxLQUFLLElBQUksQ0FBQSxDQUNULFFBQUEsQ0FBUyxVQUFBLEVBQVksdUNBQWtDLENBQUEsQ0FDdkQsTUFBQSxDQUFPLHNCQUFBLEVBQXdCLEtBQUEsQ0FBTSxNQUFNLFdBQUEsRUFBYSxDQUFBLEVBQUcsYUFBYSxDQUFBLENBQUUsQ0FBQSxDQUMxRSxPQUFPLHVCQUFBLEVBQXlCLEtBQUEsQ0FBTSxNQUFBLENBQU8sV0FBQSxFQUFhLEdBQUcsY0FBYyxDQUFBLENBQUUsRUFDN0UsTUFBQSxDQUFPLG9CQUFBLEVBQXNCLE1BQU0sR0FBQSxDQUFJLFdBQUEsRUFBYSxDQUFBLEVBQUcsV0FBVyxFQUFFLENBQUEsQ0FDcEUsTUFBQSxDQUFPLDJCQUEyQixLQUFBLENBQU0sUUFBQSxDQUFTLGFBQWEsQ0FBQSxFQUFHLGdCQUFnQixDQUFBLENBQUUsQ0FBQSxDQUNuRixPQUFPLHNCQUFBLEVBQXdCLEtBQUEsQ0FBTSxPQUFPLFdBQUEsRUFBYSxDQUFBLEVBQUcsZUFBZSxDQUFBLENBQUUsQ0FBQSxDQUM3RSxNQUFBLENBQU8seUJBQUEsRUFBMkIsTUFBTSxPQUFBLENBQVEsV0FBQSxFQUFhLEtBQUssQ0FBQSxDQUNsRSxNQUFBLENBQU8sb0JBQW9CLEtBQUEsQ0FBTSxTQUFBLENBQVUsV0FBQSxFQUFhLEtBQUssRUFDN0QsTUFBQSxDQUFPLG1CQUFBLEVBQXFCLE1BQU0sYUFBQSxDQUFjLFdBQUEsRUFBYSxnQkFBZ0IsQ0FBQSxDQUM3RSxNQUFBLENBQU8scUJBQUEsRUFBdUIsS0FBQSxDQUFNLGNBQWMsV0FBQSxFQUFhLEtBQUssRUFDcEUsTUFBQSxDQUFPLE9BQU8sUUFBZ0IsSUFBQSxLQUFTO0FBQ3RDLElBQUEsSUFBSTtBQUNGLE1BQUEsTUFBTSxTQUFTLE1BQUEsRUFBUTtBQUFBLFFBQ3JCLE9BQU8sS0FBQSxDQUFNLFdBQUEsRUFBYSxhQUFhLENBQUEsQ0FBRSxLQUFLLEtBQUssQ0FBQTtBQUFBLFFBQ25ELFFBQVEsS0FBQSxDQUFNLFdBQUEsRUFBYSxjQUFjLENBQUEsQ0FBRSxLQUFLLE1BQU0sQ0FBQTtBQUFBLFFBQ3RELEtBQUssS0FBQSxDQUFNLFdBQUEsRUFBYSxXQUFXLENBQUEsQ0FBRSxLQUFLLEdBQUcsQ0FBQTtBQUFBLFFBQzdDLFVBQVUsS0FBQSxDQUFNLFdBQUEsRUFBYSxnQkFBZ0IsQ0FBQSxDQUFFLEtBQUssUUFBUSxDQUFBO0FBQUEsUUFDNUQsTUFBQSxFQUFRLEtBQUssTUFBQSxJQUFVLGVBQUE7QUFBQSxRQUN2QixTQUFTLFdBQUEsQ0FBWSxJQUFBLENBQUssT0FBTyxDQUFBLENBQzlCLE1BQU0sR0FBRyxDQUFBLENBQ1QsR0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUUsSUFBQSxFQUFNLENBQUEsQ0FDbkIsT0FBTyxhQUFhLENBQUE7QUFBQSxRQUN2QixTQUFBLEVBQVcsS0FBSyxTQUFBLElBQWEsS0FBQTtBQUFBLFFBQzdCLGFBQUEsRUFBZSxLQUFLLGFBQUEsSUFBaUIsZ0JBQUE7QUFBQSxRQUNyQyxhQUFBLEVBQWUsS0FBSyxhQUFBLElBQWlCO0FBQUEsT0FDdEMsQ0FBQTtBQUFBLElBQ0gsU0FBUyxDQUFBLEVBQUc7QUFDVixNQUFBLE1BQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQTtBQUFBLElBQ2hCO0FBQUEsRUFDRixDQUFDLENBQUE7QUFDSCxFQUFBLE1BQU0sT0FBQSxDQUFRLFVBQUEsQ0FBVyxLQUFBLEVBQU8sQ0FBQTtBQUNsQzs7O0FDbkRBLE9BQUEsQ0FBUSxPQUFPLEdBQUcsQ0FBQSIsImZpbGUiOiJjbGkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyBwcm9ncmFtIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgcHVwVXNlSW5uZXJQcm94eSB9IGZyb20gXCIuL2Jhc2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9iYXNlL2xvZ2dpbmdcIjtcbmltcG9ydCB7IG5vZXJyIH0gZnJvbSBcIi4vYmFzZS9ub2VyclwiO1xuaW1wb3J0IHsgcGFyc2VOdW1iZXIsIHBhcnNlU3RyaW5nIH0gZnJvbSBcIi4vYmFzZS9wYXJzZXJcIjtcbmltcG9ydCB7IHBhcmdzIH0gZnJvbSBcIi4vYmFzZS9wcm9jZXNzXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0RVUkFUSU9OLFxuICBERUZBVUxUX0ZQUyxcbiAgREVGQVVMVF9IRUlHSFQsXG4gIERFRkFVTFRfT1VUX0RJUixcbiAgREVGQVVMVF9XSURUSCxcbiAgaXNWaWRlb0Zvcm1hdCxcbiAgUmVuZGVyU2NoZW1hLFxuICB0eXBlIFJlbmRlck9wdGlvbnMsXG59IGZyb20gXCIuL3JlbmRlcmVyL3NjaGVtYVwiO1xuXG5leHBvcnQgdHlwZSBDTElDYWxsYmFjayA9IChzb3VyY2U6IHN0cmluZywgb3B0aW9uczogUmVuZGVyT3B0aW9ucykgPT4gUHJvbWlzZTx1bmtub3duPjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1ha2VDTEkobmFtZTogc3RyaW5nLCBjYWxsYmFjazogQ0xJQ2FsbGJhY2spIHtcbiAgY29uc3Qgc2hhcGUgPSBSZW5kZXJTY2hlbWEuc2hhcGU7XG4gIHByb2dyYW1cbiAgICAubmFtZShuYW1lKVxuICAgIC5hcmd1bWVudChcIjxzb3VyY2U+XCIsIFwiZmlsZTovLywgaHR0cChzKTovLywg5oiWIGRhdGE6IFVSSVwiKVxuICAgIC5vcHRpb24oXCItVywgLS13aWR0aCA8bnVtYmVyPlwiLCBzaGFwZS53aWR0aC5kZXNjcmlwdGlvbiwgYCR7REVGQVVMVF9XSURUSH1gKVxuICAgIC5vcHRpb24oXCItSCwgLS1oZWlnaHQgPG51bWJlcj5cIiwgc2hhcGUuaGVpZ2h0LmRlc2NyaXB0aW9uLCBgJHtERUZBVUxUX0hFSUdIVH1gKVxuICAgIC5vcHRpb24oXCItZiwgLS1mcHMgPG51bWJlcj5cIiwgc2hhcGUuZnBzLmRlc2NyaXB0aW9uLCBgJHtERUZBVUxUX0ZQU31gKVxuICAgIC5vcHRpb24oXCItdCwgLS1kdXJhdGlvbiA8bnVtYmVyPlwiLCBzaGFwZS5kdXJhdGlvbi5kZXNjcmlwdGlvbiwgYCR7REVGQVVMVF9EVVJBVElPTn1gKVxuICAgIC5vcHRpb24oXCItbywgLS1vdXQtZGlyIDxwYXRoPlwiLCBzaGFwZS5vdXREaXIuZGVzY3JpcHRpb24sIGAke0RFRkFVTFRfT1VUX0RJUn1gKVxuICAgIC5vcHRpb24oXCItRiwgLS1mb3JtYXRzIDxmb3JtYXRzPlwiLCBzaGFwZS5mb3JtYXRzLmRlc2NyaXB0aW9uLCBcIm1wNFwiKVxuICAgIC5vcHRpb24oXCItYSwgLS13aXRoLWF1ZGlvXCIsIHNoYXBlLndpdGhBdWRpby5kZXNjcmlwdGlvbiwgZmFsc2UpXG4gICAgLm9wdGlvbihcIi0tdXNlLWlubmVyLXByb3h5XCIsIHNoYXBlLnVzZUlubmVyUHJveHkuZGVzY3JpcHRpb24sIHB1cFVzZUlubmVyUHJveHkpXG4gICAgLm9wdGlvbihcIi1kLCAtLWRldGVybWluaXN0aWNcIiwgc2hhcGUuZGV0ZXJtaW5pc3RpYy5kZXNjcmlwdGlvbiwgZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAoc291cmNlOiBzdHJpbmcsIG9wdHMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGNhbGxiYWNrKHNvdXJjZSwge1xuICAgICAgICAgIHdpZHRoOiBub2VycihwYXJzZU51bWJlciwgREVGQVVMVF9XSURUSCkob3B0cy53aWR0aCksXG4gICAgICAgICAgaGVpZ2h0OiBub2VycihwYXJzZU51bWJlciwgREVGQVVMVF9IRUlHSFQpKG9wdHMuaGVpZ2h0KSxcbiAgICAgICAgICBmcHM6IG5vZXJyKHBhcnNlTnVtYmVyLCBERUZBVUxUX0ZQUykob3B0cy5mcHMpLFxuICAgICAgICAgIGR1cmF0aW9uOiBub2VycihwYXJzZU51bWJlciwgREVGQVVMVF9EVVJBVElPTikob3B0cy5kdXJhdGlvbiksXG4gICAgICAgICAgb3V0RGlyOiBvcHRzLm91dERpciA/PyBERUZBVUxUX09VVF9ESVIsXG4gICAgICAgICAgZm9ybWF0czogcGFyc2VTdHJpbmcob3B0cy5mb3JtYXRzKVxuICAgICAgICAgICAgLnNwbGl0KFwiLFwiKVxuICAgICAgICAgICAgLm1hcCgocykgPT4gcy50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKGlzVmlkZW9Gb3JtYXQpLFxuICAgICAgICAgIHdpdGhBdWRpbzogb3B0cy53aXRoQXVkaW8gPz8gZmFsc2UsXG4gICAgICAgICAgdXNlSW5uZXJQcm94eTogb3B0cy51c2VJbm5lclByb3h5ID8/IHB1cFVzZUlubmVyUHJveHksXG4gICAgICAgICAgZGV0ZXJtaW5pc3RpYzogb3B0cy5kZXRlcm1pbmlzdGljID8/IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nZ2VyLmZhdGFsKGUpO1xuICAgICAgfVxuICAgIH0pO1xuICBhd2FpdCBwcm9ncmFtLnBhcnNlQXN5bmMocGFyZ3MoKSk7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI1LlxuXG5pbXBvcnQgeyBtYWtlQ0xJIH0gZnJvbSBcIi4vY29tbW9uXCI7XG5pbXBvcnQgeyBwdXAgfSBmcm9tIFwiLi9wdXBcIjtcblxubWFrZUNMSShcInB1cFwiLCBwdXApO1xuIl19
|
|
1
|
+
import'source-map-support/register.js';import {x,q,r,s,t,u,g,e,w as w$1,m,d,l,o,A}from'./chunk-SD4UOGME.js';import {program}from'commander';async function w(y,D){let i=x.shape;program.name(y).argument("<source>","file://, http(s)://, \u6216 data: URI").option("-W, --width <number>",i.width.description,`${q}`).option("-H, --height <number>",i.height.description,`${r}`).option("-f, --fps <number>",i.fps.description,`${s}`).option("-t, --duration <number>",i.duration.description,`${t}`).option("-o, --out-dir <path>",i.outDir.description,`${u}`).option("-F, --formats <formats>",i.formats.description,"mp4").option("-a, --with-audio",i.withAudio.description,false).option("--use-inner-proxy",i.useInnerProxy.description,g).option("-d, --deterministic",i.deterministic.description,false).action(async(A,r$1)=>{try{await D(A,{width:m(d,q)(r$1.width),height:m(d,r)(r$1.height),fps:m(d,s)(r$1.fps),duration:m(d,t)(r$1.duration),outDir:r$1.outDir??u,formats:e(r$1.formats).split(",").map(e=>e.trim()).filter(w$1),withAudio:r$1.withAudio??!1,useInnerProxy:r$1.useInnerProxy??g,deterministic:r$1.deterministic??!1});}catch(e){l.fatal(e);}}),await program.parseAsync(o());}w("pup",A);//# sourceMappingURL=cli.js.map
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tb24udHMiLCIuLi9zcmMvY2xpLnRzIl0sIm5hbWVzIjpbIm1ha2VDTEkiLCJuYW1lIiwiY2FsbGJhY2siLCJzaGFwZSIsIlJlbmRlclNjaGVtYSIsInByb2dyYW0iLCJERUZBVUxUX1dJRFRIIiwiREVGQVVMVF9IRUlHSFQiLCJERUZBVUxUX0ZQUyIsIkRFRkFVTFRfRFVSQVRJT04iLCJERUZBVUxUX09VVF9ESVIiLCJwdXBVc2VJbm5lclByb3h5Iiwic291cmNlIiwib3B0cyIsIm5vZXJyIiwicGFyc2VOdW1iZXIiLCJwYXJzZVN0cmluZyIsInMiLCJpc1ZpZGVvRm9ybWF0IiwibG9nZ2VyIiwicGFyZ3MiLCJwdXAiXSwibWFwcGluZ3MiOiI0SUFxQkEsZUFBc0JBLEVBQVFDLENBQUFBLENBQWNDLENBQUFBLENBQXVCLENBQ2pFLElBQU1DLENBQUFBLENBQVFDLEVBQWEsS0FBQSxDQUMzQkMsT0FBQUEsQ0FDRyxLQUFLSixDQUFJLENBQUEsQ0FDVCxTQUFTLFVBQUEsQ0FBWSx1Q0FBa0MsRUFDdkQsTUFBQSxDQUFPLHNCQUFBLENBQXdCRSxFQUFNLEtBQUEsQ0FBTSxXQUFBLENBQWEsR0FBR0csQ0FBYSxDQUFBLENBQUUsRUFDMUUsTUFBQSxDQUFPLHVCQUFBLENBQXlCSCxFQUFNLE1BQUEsQ0FBTyxXQUFBLENBQWEsR0FBR0ksQ0FBYyxDQUFBLENBQUUsRUFDN0UsTUFBQSxDQUFPLG9CQUFBLENBQXNCSixFQUFNLEdBQUEsQ0FBSSxXQUFBLENBQWEsR0FBR0ssQ0FBVyxDQUFBLENBQUUsRUFDcEUsTUFBQSxDQUFPLHlCQUFBLENBQTJCTCxFQUFNLFFBQUEsQ0FBUyxXQUFBLENBQWEsR0FBR00sQ0FBZ0IsQ0FBQSxDQUFFLEVBQ25GLE1BQUEsQ0FBTyxzQkFBQSxDQUF3Qk4sRUFBTSxNQUFBLENBQU8sV0FBQSxDQUFhLEdBQUdPLENBQWUsQ0FBQSxDQUFFLEVBQzdFLE1BQUEsQ0FBTyx5QkFBQSxDQUEyQlAsRUFBTSxPQUFBLENBQVEsV0FBQSxDQUFhLEtBQUssQ0FBQSxDQUNsRSxNQUFBLENBQU8sbUJBQW9CQSxDQUFBQSxDQUFNLFNBQUEsQ0FBVSxZQUFhLEtBQUssQ0FBQSxDQUM3RCxPQUFPLG1CQUFBLENBQXFCQSxDQUFBQSxDQUFNLGNBQWMsV0FBQSxDQUFhUSxDQUFnQixFQUM3RSxNQUFBLENBQU8scUJBQUEsQ0FBdUJSLEVBQU0sYUFBQSxDQUFjLFdBQUEsQ0FBYSxLQUFLLENBQUEsQ0FDcEUsTUFBQSxDQUFPLE1BQU9TLEVBQWdCQyxHQUFBQSxHQUFTLENBQ3RDLEdBQUksQ0FDRixNQUFNWCxFQUFTVSxDQUFBQSxDQUFRLENBQ3JCLE1BQU9FLENBQUFBLENBQU1DLENBQUFBLENBQWFULENBQWEsQ0FBQSxDQUFFTyxHQUFBQSxDQUFLLEtBQUssQ0FBQSxDQUNuRCxNQUFBLENBQVFDLEVBQU1DLENBQUFBLENBQWFSLENBQWMsRUFBRU0sR0FBQUEsQ0FBSyxNQUFNLEVBQ3RELEdBQUEsQ0FBS0MsQ0FBQUEsQ0FBTUMsRUFBYVAsQ0FBVyxDQUFBLENBQUVLLElBQUssR0FBRyxDQUFBLENBQzdDLFNBQVVDLENBQUFBLENBQU1DLENBQUFBLENBQWFOLENBQWdCLENBQUEsQ0FBRUksR0FBQUEsQ0FBSyxRQUFRLENBQUEsQ0FDNUQsTUFBQSxDQUFRQSxJQUFLLE1BQUEsRUFBVUgsQ0FBQUEsQ0FDdkIsUUFBU00sQ0FBQUEsQ0FBWUgsR0FBQUEsQ0FBSyxPQUFPLENBQUEsQ0FDOUIsS0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUNULEdBQUEsQ0FBS0ksR0FBTUEsQ0FBQUEsQ0FBRSxJQUFBLEVBQU0sQ0FBQSxDQUNuQixNQUFBLENBQU9DLEdBQWEsQ0FBQSxDQUN2QixTQUFBLENBQVdMLElBQUssU0FBQSxFQUFhLENBQUEsQ0FBQSxDQUM3QixjQUFlQSxHQUFBQSxDQUFLLGFBQUEsRUFBaUJGLEVBQ3JDLGFBQUEsQ0FBZUUsR0FBQUEsQ0FBSyxlQUFpQixDQUFBLENBQ3ZDLENBQUMsRUFDSCxDQUFBLE1BQVMsQ0FBQSxDQUFHLENBQ1ZNLENBQUFBLENBQU8sS0FBQSxDQUFNLENBQUMsRUFDaEIsQ0FDRixDQUFDLENBQUEsQ0FDSCxNQUFNZCxRQUFRLFVBQUEsQ0FBV2UsQ0FBQUEsRUFBTyxFQUNsQyxDQ25EQXBCLENBQUFBLENBQVEsS0FBQSxDQUFPcUIsQ0FBRyxDQUFBIiwiZmlsZSI6ImNsaS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmltcG9ydCB7IHByb2dyYW0gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBwdXBVc2VJbm5lclByb3h5IH0gZnJvbSBcIi4vYmFzZS9jb25zdGFudHNcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL2Jhc2UvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgbm9lcnIgfSBmcm9tIFwiLi9iYXNlL25vZXJyXCI7XG5pbXBvcnQgeyBwYXJzZU51bWJlciwgcGFyc2VTdHJpbmcgfSBmcm9tIFwiLi9iYXNlL3BhcnNlclwiO1xuaW1wb3J0IHsgcGFyZ3MgfSBmcm9tIFwiLi9iYXNlL3Byb2Nlc3NcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfRFVSQVRJT04sXG4gIERFRkFVTFRfRlBTLFxuICBERUZBVUxUX0hFSUdIVCxcbiAgREVGQVVMVF9PVVRfRElSLFxuICBERUZBVUxUX1dJRFRILFxuICBpc1ZpZGVvRm9ybWF0LFxuICBSZW5kZXJTY2hlbWEsXG4gIHR5cGUgUmVuZGVyT3B0aW9ucyxcbn0gZnJvbSBcIi4vcmVuZGVyZXIvc2NoZW1hXCI7XG5cbmV4cG9ydCB0eXBlIENMSUNhbGxiYWNrID0gKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBSZW5kZXJPcHRpb25zKSA9PiBQcm9taXNlPHVua25vd24+O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFrZUNMSShuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBDTElDYWxsYmFjaykge1xuICBjb25zdCBzaGFwZSA9IFJlbmRlclNjaGVtYS5zaGFwZTtcbiAgcHJvZ3JhbVxuICAgIC5uYW1lKG5hbWUpXG4gICAgLmFyZ3VtZW50KFwiPHNvdXJjZT5cIiwgXCJmaWxlOi8vLCBodHRwKHMpOi8vLCDmiJYgZGF0YTogVVJJXCIpXG4gICAgLm9wdGlvbihcIi1XLCAtLXdpZHRoIDxudW1iZXI+XCIsIHNoYXBlLndpZHRoLmRlc2NyaXB0aW9uLCBgJHtERUZBVUxUX1dJRFRIfWApXG4gICAgLm9wdGlvbihcIi1ILCAtLWhlaWdodCA8bnVtYmVyPlwiLCBzaGFwZS5oZWlnaHQuZGVzY3JpcHRpb24sIGAke0RFRkFVTFRfSEVJR0hUfWApXG4gICAgLm9wdGlvbihcIi1mLCAtLWZwcyA8bnVtYmVyPlwiLCBzaGFwZS5mcHMuZGVzY3JpcHRpb24sIGAke0RFRkFVTFRfRlBTfWApXG4gICAgLm9wdGlvbihcIi10LCAtLWR1cmF0aW9uIDxudW1iZXI+XCIsIHNoYXBlLmR1cmF0aW9uLmRlc2NyaXB0aW9uLCBgJHtERUZBVUxUX0RVUkFUSU9OfWApXG4gICAgLm9wdGlvbihcIi1vLCAtLW91dC1kaXIgPHBhdGg+XCIsIHNoYXBlLm91dERpci5kZXNjcmlwdGlvbiwgYCR7REVGQVVMVF9PVVRfRElSfWApXG4gICAgLm9wdGlvbihcIi1GLCAtLWZvcm1hdHMgPGZvcm1hdHM+XCIsIHNoYXBlLmZvcm1hdHMuZGVzY3JpcHRpb24sIFwibXA0XCIpXG4gICAgLm9wdGlvbihcIi1hLCAtLXdpdGgtYXVkaW9cIiwgc2hhcGUud2l0aEF1ZGlvLmRlc2NyaXB0aW9uLCBmYWxzZSlcbiAgICAub3B0aW9uKFwiLS11c2UtaW5uZXItcHJveHlcIiwgc2hhcGUudXNlSW5uZXJQcm94eS5kZXNjcmlwdGlvbiwgcHVwVXNlSW5uZXJQcm94eSlcbiAgICAub3B0aW9uKFwiLWQsIC0tZGV0ZXJtaW5pc3RpY1wiLCBzaGFwZS5kZXRlcm1pbmlzdGljLmRlc2NyaXB0aW9uLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChzb3VyY2U6IHN0cmluZywgb3B0cykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgY2FsbGJhY2soc291cmNlLCB7XG4gICAgICAgICAgd2lkdGg6IG5vZXJyKHBhcnNlTnVtYmVyLCBERUZBVUxUX1dJRFRIKShvcHRzLndpZHRoKSxcbiAgICAgICAgICBoZWlnaHQ6IG5vZXJyKHBhcnNlTnVtYmVyLCBERUZBVUxUX0hFSUdIVCkob3B0cy5oZWlnaHQpLFxuICAgICAgICAgIGZwczogbm9lcnIocGFyc2VOdW1iZXIsIERFRkFVTFRfRlBTKShvcHRzLmZwcyksXG4gICAgICAgICAgZHVyYXRpb246IG5vZXJyKHBhcnNlTnVtYmVyLCBERUZBVUxUX0RVUkFUSU9OKShvcHRzLmR1cmF0aW9uKSxcbiAgICAgICAgICBvdXREaXI6IG9wdHMub3V0RGlyID8/IERFRkFVTFRfT1VUX0RJUixcbiAgICAgICAgICBmb3JtYXRzOiBwYXJzZVN0cmluZyhvcHRzLmZvcm1hdHMpXG4gICAgICAgICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAgICAgICAubWFwKChzKSA9PiBzLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoaXNWaWRlb0Zvcm1hdCksXG4gICAgICAgICAgd2l0aEF1ZGlvOiBvcHRzLndpdGhBdWRpbyA/PyBmYWxzZSxcbiAgICAgICAgICB1c2VJbm5lclByb3h5OiBvcHRzLnVzZUlubmVyUHJveHkgPz8gcHVwVXNlSW5uZXJQcm94eSxcbiAgICAgICAgICBkZXRlcm1pbmlzdGljOiBvcHRzLmRldGVybWluaXN0aWMgPz8gZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsb2dnZXIuZmF0YWwoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIGF3YWl0IHByb2dyYW0ucGFyc2VBc3luYyhwYXJncygpKTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjUuXG5cbmltcG9ydCB7IG1ha2VDTEkgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IHB1cCB9IGZyb20gXCIuL3B1cFwiO1xuXG5tYWtlQ0xJKFwicHVwXCIsIHB1cCk7XG4iXX0=
|