pup-recorder 0.6.1 → 0.6.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pup-recorder",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "description": "Record web pages as video",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,4 +0,0 @@
1
- import'source-map-support/register.js';import {Log}from'node-av';import {AV_LOG_ERROR,AV_LOG_WARNING}from'node-av/constants';import {createRequire}from'module';import {dirname,join}from'path';import c from'zod';import {existsSync,rmSync}from'fs';import {mkdtemp}from'fs/promises';import {tmpdir,platform}from'os';import {HardwareContext}from'node-av/api';import {spawn}from'child_process';import We from'tree-kill';import {fileURLToPath}from'url';import {EventEmitter}from'events';var ke=Object.create;var N=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var I=(t,e)=>(e=Symbol[t])?e:Symbol.for("Symbol."+t),y=t=>{throw TypeError(t)};var X=(t,e,r)=>e in t?N(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r;var Z=t=>[,,,ke(null)],ee=["class","method","getter","setter","accessor","field","value","get","set"],A=t=>t!==void 0&&typeof t!="function"?y("Function expected"):t,Te=(t,e,r,o,n)=>({kind:ee[t],name:e,metadata:o,addInitializer:s=>r._?y("Already initialized"):n.push(A(s||null))}),U=(t,e)=>X(e,I("metadata"),t[3]),re=(t,e,r,o)=>{for(var n=0,s=t[e>>1],a=s&&s.length;n<a;n++)s[n].call(r);return o},C=(t,e,r,o,n,s)=>{var i,p,d,k,l=e&7,E=false,b=false,P=2,T=ee[l+5],xe=t[P]||(t[P]=[]),w=((n=n.prototype),Pe(n,r));for(var $=o.length-1;$>=0;$--)d=Te(l,r,p={},t[3],xe),(d.static=E,d.private=b,k=d.access={has:g=>r in g},(k.get=g=>g[r]),l>2),i=(0, o[$])(w[T],d),p._=1,A(i)&&(w[T]=i);return w&&N(n,r,w),n},te=(t,e,r)=>X(t,e+"",r);var oe=(t,e,r)=>{if(e!=null){typeof e!="object"&&typeof e!="function"&&y("Object expected");var o,n;o===void 0&&(o=e[I("dispose")],r),typeof o!="function"&&y("Object not disposable"),n&&(o=function(){try{n.call(this);}catch(s){return Promise.reject(s)}}),t.push([r,o,e]);}return e},ne=(t,e,r)=>{var o=typeof SuppressedError=="function"?SuppressedError:function(a,i,p,d){return d=Error(p),d.name="SuppressedError",d.error=a,d.suppressed=i,d},n=a=>e=r?new o(a,e,"An error was suppressed during disposal"):(r=true,a),s=a=>{for(;a=t.pop();)try{var i=a[1]&&a[1].call(a[2]);if(a[0])return Promise.resolve(i).then(s,p=>(n(p),s()))}catch(p){n(p);}if(r)throw e};return s()};var se=class{_written=0;_shown=false;_total;_out;_tty;_showCount;constructor(e){this._total=e.total,this._out=e.out,this._tty=!!e.out.isTTY,this._showCount=e.showCount??false;}get total(){return this._total}update(e){this._written=Math.min(this._total,Math.max(0,e)),this.render();}updatePercent(e){this.update(Math.round(e/100*this._total));}clear(){this._tty&&this._shown&&this._out.write("\r\x1B[2K");}redraw(){this.render();}log(e){this.clear(),this._out.write(`${e}
2
- `),this.redraw();}finish(e){this.clear(),this._out.write(`${e}
3
- `),this._shown=false;}render(){if(!this._tty||this._written===0&&!this._shown)return;let e=this._total>0?this._written/this._total:0,r=Math.round(e*40),o="#".repeat(r)+"-".repeat(40-r),n=Math.round(e*100),s=this._showCount?`${this._written}/${this._total} (${n}%)`:`${n}%`;this._out.write(`\r[${o}] ${s}`),this._shown=true;}};function rr(t){let e=r=>(...o)=>{t.clear(),r(...o),t.redraw();};return {debug:e(console.debug),info:e(console.info),warn:e(console.warn),error:e(console.error)}}function ie(t,e,r){try{return e(process.env[t])}catch{return r}}function ae(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 ir(t){return typeof t=="string"?t:String(t)}function ar(t){return e=>typeof e!="string"||e.trim()===""?[]:e.split(",").map(r=>t(r.trim()))}var Re=createRequire(import.meta.url),L=ie("PUP_LOG_LEVEL",ae,2),D=dirname(Re.resolve("pup-recorder/package.json")),le=join(D,"dist","app.cjs");join(D,"dist","runtime","audio_preload.cjs");join(D,"dist","runtime","shoot_preload.cjs");join(D,"dist","runtime","render_preload.cjs");var j="<pup@debug>",H="<pup@info>",W="<pup@warn>",V="<pup@error>",B="<pup@fatal>";function R(t,e){return function(...r){let o=r.map(n=>n instanceof Error?n.stack??String(n):n);return t.call(this,...o)}}var pe,ce,ue,de,me,x;me=[R],de=[R],ue=[R],ce=[R],pe=[R];var v=class{constructor(e=L){this._level=e;re(x,5,this);te(this,"_impl");this.impl=console;}_level;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,o=e.info??console.info,n=e.warn??console.warn,s=e.error??console.error,a=this._level;this._impl={debug:a>=3?r:void 0,info:a>=2?o:void 0,warn:a>=1?n:void 0,error:a>=0?s:void 0};}debug(...e){this.impl?.debug?.(j,...e);}info(...e){this.impl?.info?.(H,...e);}warn(...e){this.impl?.warn?.(W,...e);}error(...e){this.impl?.error?.(V,...e);}fatal(...e){this.impl?.error?.(B,...e),process.exit(1);}dispatch(e){let r=e.trimEnd();r.startsWith(j)?this.debug(r.slice(j.length+1)):r.startsWith(H)?this.info(r.slice(H.length+1)):r.startsWith(W)?this.warn(r.slice(W.length+1)):r.startsWith(V)?this.error(r.slice(V.length+1)):this.info(r);}attach(e,r){return new Promise((o,n)=>{this.debug(`${r}.attach`);let s="",a=i=>{let p=i.toString();p.startsWith(B)?s+=p.slice(B.length+1):this.dispatch(p);};e.stderr?.on("data",a),e.stdout?.on("data",a),e.on("error",i=>{s+=i.message,e.kill();}).once("close",(i,p)=>{i||p||s?(s||=`command failed: ${e.spawnargs.join(" ")}`,this.debug(`${r}.close`,{code:i,signal:p,fatal:s}),n(new Error(s))):(this.debug(`${r}.close`),o());}).on("unhandledRejection",i=>{this.error(`${r}.unhandled`,i);}).on("uncaughtExceptionMonitor",i=>{this.error(`${r}.unhandled`,i);});})}};x=Z(),C(x,1,"debug",me,v),C(x,1,"info",de,v),C(x,1,"warn",ue,v),C(x,1,"error",ce,v),C(x,1,"fatal",pe,v),U(x,v);var u=new v;Log.setCallback((t,e)=>{let r=e.trimEnd();r&&(t<=AV_LOG_ERROR?u.error(r):t<=AV_LOG_WARNING&&u.warn(r));});function _r(t,e){return (...r)=>{try{let o=t(...r);return o instanceof Promise?o.catch(()=>e):o}catch{return e}}}var De=1920,Se=1080,Me=30,$e=5,Ge=10,Ne=["out/html.mp4","out/html.webm"],Rr=c.object({duration:c.number().describe("Duration in seconds"),width:c.number().describe("Video width"),height:c.number().describe("Video height"),fps:c.number().describe("Frames per second"),withAudio:c.boolean().describe("Capture and encode audio"),outFiles:c.array(c.string()).describe("Output paths; extension (.mp4/.webm) selects encoder"),useInnerProxy:c.boolean().describe("Use bilibili inner proxy for resource access"),deterministic:c.boolean().describe("Render by frame rather than recording"),disableGpu:c.boolean().describe("Disable GPU rendering, may reduce performance but increase stability"),disableHwCodec:c.boolean().describe("Disable hardware video encoder (NVENC/VideoToolbox), use software x265"),windowTolerant:c.boolean().describe("Fall back to dom-ready if warmup load times out"),windowTimeout:c.number().describe("Window load timeout in seconds"),screenshots:c.array(c.number()).describe("Second marks to dump frame bitmaps as PNG")}),he={width:De,height:Se,fps:Me,duration:$e,outFiles:Ne,withAudio:false,useInnerProxy:false,deterministic:false,disableGpu:false,disableHwCodec:false,windowTolerant:false,windowTimeout:Ge,screenshots:[]};var S=class{constructor(e){this.makeValue=e;}makeValue;get value(){return this._initialized||(this._value=this.makeValue(),this._initialized=true),this._value}get initialized(){return this._initialized}_initialized=false;_value};var Fe="[HWAccel]",ge=new S(()=>{var r=[];try{let t=oe(r,HardwareContext.auto());let e=t!==null;u.debug(Fe,"gpu:",e);return e}catch(o){var n=o,s=true;}finally{ne(r,n,s);}});async function fe(t){let e=["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","deny-permission-prompts","use-mock-keychain","force-device-scale-factor=1","force-color-profile=srgb","ignore-gpu-blocklist","use-gl=angle","deterministic-mode","enable-begin-frame-control","disable-new-content-rendering-timeout","run-all-compositor-stages-before-draw","disable-threaded-animation","disable-threaded-scrolling","disable-checker-imaging","disable-image-animation-resync","enable-surface-synchronization","font-render-hinting=none","disable-background-networking","js-flags=--max-old-space-size=512","renderer-process-limit=1","num-raster-threads=2","disable-background-timer-throttling","disable-renderer-backgrounding","disable-backgrounding-occluded-windows","enable-logging=stderr"];L>=3?e.push("log-level=0","v=1"):e.push("log-level=3");let r=["FontationBackend"];if(!(!t&&ge.value))e.push("use-angle=swiftshader","enable-unsafe-swiftshader");else {e.push("disable-gpu-sandbox","enable-unsafe-webgpu");let n=platform();n==="darwin"?e.push("use-angle=metal"):n==="win32"?e.push("use-angle=d3d11"):(e.push("use-angle=vulkan","disable-vulkan-surface"),r.push("Vulkan"));}return e.push(`enable-features=${r.join(",")}`),e}var z="--pup-priv-args";function Kr(){let t=process.argv,e=t.find(o=>o.startsWith(z));if(!e)return u.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)),u.debug("pupargs",r),r}function be(t,e){let r=t.split(" ").filter(i=>i.length),[o,...n]=r;if(!o)throw new Error("empty command");let s=spawn(o,n,{stdio:"inherit",...e}),a=false;return {process:s,wait:u.attach(s,o),get killed(){return a},kill(){if(a)return;a=true;let i=s.pid;i?We(i,"SIGKILL"):s.kill("SIGKILL");}}}async function Ke(t){return [...await fe(t),"headless=new"]}var we="[Electron]";async function ve({args:t}){let{default:e}=await import('electron'),r=await Ke(t.includes("--disable-gpu")),o=await mkdtemp(join(tmpdir(),"pup-profile-")),n=r.map(p=>`--${p}`);n.push(`--user-data-dir=${o}`),n.push(`${z}=${Buffer.from(JSON.stringify(t)).toString("base64")}`);let s=[e,...n,le].join(" ");u.debug(we,s);let a={...process.env,RUST_BACKTRACE:"full"},i=be(s,{stdio:["ignore","pipe","pipe","ipc"],env:a});return i.process.once("exit",()=>{try{rmSync(o,{recursive:!0,force:!0});}catch(p){u.warn(we,"profile cleanup failed:",p);}}),i}var J=["file:","http:","https:","data:"],Qe=/^(file:|https?:|data:)/;function ye(t){if(!Qe.test(t)){let e=`${t.split(":")[0]}:`,r=J.includes(e)?`unsupported protocol: ${e}, expected ${J.join(", ")}`:`invalid source format, expected ${J.join(", ")}`;throw new Error(r)}if(t.startsWith("file:")&&!existsSync(fileURLToPath(t)))throw new Error(`source file not found: ${t}`)}var M=class extends EventEmitter{constructor(e){super(),e.on("message",r=>{let o=r;switch(o.type){case "console":{this.emit("console",o.level,o.message);break}case "progress":{this.emit("progress",o.value);break}case "done":{this.emit("done",o.payload);break}case "error":{this.emit("error",new Error(o.error));break}}}),e.once("exit",r=>this.emit("close",r));}};var K="[pup]";async function Ze(t,e){u.debug(K,"runPupApp",t,e);let r=[t,"--width",`${e.width}`,"--height",`${e.height}`,"--fps",`${e.fps}`,"--duration",`${e.duration}`,"--window-timeout",`${e.windowTimeout}`,"--out-file",e.outFiles.join(",")];return e.withAudio&&r.push("--with-audio"),e.useInnerProxy&&r.push("--use-inner-proxy"),e.deterministic&&r.push("--deterministic"),e.disableGpu&&r.push("--disable-gpu"),e.disableHwCodec&&r.push("--disable-hw-codec"),e.windowTolerant&&r.push("--window-tolerant"),e.screenshots.length>0&&r.push("--screenshots",e.screenshots.join(",")),ve({args:r})}var f=he;async function yt(t,e){u.debug(K,"pup",t,e);let{signal:r}=e;r?.throwIfAborted(),ye(t);let o=e.outFiles??f.outFiles,n={width:e.width??f.width,height:e.height??f.height,fps:e.fps??f.fps,duration:e.duration??f.duration,withAudio:e.withAudio??f.withAudio,useInnerProxy:e.useInnerProxy??f.useInnerProxy,deterministic:e.deterministic??f.deterministic,disableGpu:e.disableGpu??f.disableGpu,disableHwCodec:e.disableHwCodec??f.disableHwCodec,windowTolerant:e.windowTolerant??f.windowTolerant,windowTimeout:e.windowTimeout??f.windowTimeout,screenshots:e.screenshots??f.screenshots,outFiles:o},s=performance.now(),a=0,i=l=>{a=l,e.onProgress?.(l);},p=await Ze(t,n),d,k=()=>{p.process.send?.({type:"cancel",reason:String(r?.reason??"abort")}),d=setTimeout(()=>p.kill(),5e3);};r?.addEventListener("abort",k,{once:true});try{let l=new Promise((b,P)=>{new M(p.process).on("close",T=>{let _=JSON.stringify({source:t,progress:a,code:T,killed:p.killed});P(new Error(`crashed: ${_}`));}).on("progress",i).on("console",(T,_)=>e.onConsole?.(T,_)).on("done",b).on("error",P);});i(0);let[E]=await Promise.all([l,p.wait]);return i(100),u.debug(K,`done ${o.join(",")} in ${Math.round(performance.now()-s)}ms`),{...E,options:n}}catch(l){throw p.kill(),r?.throwIfAborted(),l}finally{clearTimeout(d),r?.removeEventListener("abort",k);}}export{se as a,rr as b,ie as c,ae as d,ir as e,ar as f,v as g,u as h,_r as i,Kr as j,De as k,Se as l,Me as m,$e as n,Ge as o,Rr as p,he as q,S as r,yt as s};//# sourceMappingURL=chunk-EOEJXYJR.js.map
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlL2NsaV91aS50cyIsIi4uL3NyYy9iYXNlL2Vudi50cyIsIi4uL3NyYy9iYXNlL3BhcnNlci50cyIsIi4uL3NyYy9iYXNlL2NvbnN0YW50cy50cyIsIi4uL3NyYy9iYXNlL2xvZ2dpbmcudHMiLCIuLi9zcmMvYmFzZS9ub2Vyci50cyIsIi4uL3NyYy9yZW5kZXJlci9zY2hlbWEudHMiLCIuLi9zcmMvYmFzZS9sYXp5LnRzIiwiLi4vc3JjL2Jhc2UvaHdhY2NlbC50cyIsIi4uL3NyYy9iYXNlL2Nocm9taXVtLnRzIiwiLi4vc3JjL2Jhc2UvcHJvY2Vzcy50cyIsIi4uL3NyYy9yZW5kZXJlci9lbGVjdHJvbi50cyIsIi4uL3NyYy9yZW5kZXJlci9odG1sX2NoZWNrLnRzIiwiLi4vc3JjL3JlbmRlcmVyL2lwYy50cyIsIi4uL3NyYy9wdXAudHMiXSwibmFtZXMiOlsiUHJvZ3Jlc3NCYXIiLCJvcHRzIiwid3JpdHRlbiIsInBjdCIsImxpbmUiLCJyYXRpbyIsImZpbGxlZCIsImJhciIsInN1ZmZpeCIsImJhckxvZ2dlciIsIndyYXAiLCJmbiIsImFyZ3MiLCJwZW52IiwibmFtZSIsInBhcnNlciIsImRlZmF1bHRWYWx1ZSIsInBhcnNlTnVtYmVyIiwieCIsIm51bSIsInBhcnNlU3RyaW5nIiwicGFyc2VBcnJheSIsIml0ZW0iLCJzIiwicmVxdWlyZSIsImNyZWF0ZVJlcXVpcmUiLCJwdXBMb2dMZXZlbCIsInB1cFBrZ1Jvb3QiLCJkaXJuYW1lIiwicHVwQXBwIiwiam9pbiIsIkRFQlVHIiwiSU5GTyIsIldBUk4iLCJFUlJPUiIsIkZBVEFMIiwic3RhY2tIb29rIiwidGFyZ2V0IiwiX2NvbnRleHQiLCJtZXNzYWdlcyIsInByb2Nlc3NlZCIsIm1zZyIsIl9mYXRhbF9kZWMiLCJfZXJyb3JfZGVjIiwiX3dhcm5fZGVjIiwiX2luZm9fZGVjIiwiX2RlYnVnX2RlYyIsIl9pbml0IiwiTG9nZ2VyIiwiX2xldmVsIiwiX19ydW5Jbml0aWFsaXplcnMiLCJfX3B1YmxpY0ZpZWxkIiwidmFsdWUiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuIiwiZXJyb3IiLCJsdiIsIm1lc3NhZ2UiLCJwcm9jIiwicmVzb2x2ZSIsInJlamVjdCIsImZhdGFsIiwiZGlzcGF0Y2giLCJkYXRhIiwiZXJyIiwiY29kZSIsInNpZ25hbCIsInJlYXNvbiIsIl9fZGVjb3JhdG9yU3RhcnQiLCJfX2RlY29yYXRlRWxlbWVudCIsIl9fZGVjb3JhdG9yTWV0YWRhdGEiLCJsb2dnZXIiLCJMb2ciLCJsZXZlbCIsIkFWX0xPR19FUlJPUiIsIkFWX0xPR19XQVJOSU5HIiwibm9lcnIiLCJyZXQiLCJERUZBVUxUX1dJRFRIIiwiREVGQVVMVF9IRUlHSFQiLCJERUZBVUxUX0ZQUyIsIkRFRkFVTFRfRFVSQVRJT04iLCJERUZBVUxUX1dJTkRPV19USU1FT1VUIiwiREVGQVVMVF9PVVRfRklMRVMiLCJyZW5kZXJTY2hlbWEiLCJ6IiwiZGVmYXVsdFJlbmRlck9wdGlvbnMiLCJMYXp5IiwibWFrZVZhbHVlIiwiVEFHIiwiY2FuSVVzZUdQVSIsIl9zdGFjayIsImh3IiwiX191c2luZyIsIkhhcmR3YXJlQ29udGV4dCIsInJlc3VsdCIsIl8iLCJfZXJyb3IiLCJfaGFzRXJyb3IiLCJfX2NhbGxEaXNwb3NlIiwiY2hyb21pdW1PcHRpb25zIiwiZGlzYWJsZUdwdSIsImZlYXR1cmVzIiwicGxhdCIsInBsYXRmb3JtIiwiUFVQX0FSR1NfS0VZIiwicGFyZ3MiLCJhcmd2IiwicHJpdiIsImFyZyIsImV4ZWMiLCJjbWQiLCJvcHRpb25zIiwicGFydHMiLCJjb21tYW5kIiwic3Bhd24iLCJraWxsZWQiLCJwaWQiLCJ0cmVlS2lsbCIsImVsZWN0cm9uT3B0cyIsInJ1bkVsZWN0cm9uQXBwIiwiZWxlY3Ryb24iLCJwcm9maWxlRGlyIiwibWtkdGVtcCIsInRtcGRpciIsImVsZWN0cm9uQXJncyIsImEiLCJlbnYiLCJoYW5kbGUiLCJybVN5bmMiLCJlIiwiU1VQUE9SVEVEX1BST1RPQ09MUyIsIlNPVVJDRV9QQVRURVJOIiwiY2hlY2tIVE1MIiwic291cmNlIiwicHJvdG9jb2wiLCJleGlzdHNTeW5jIiwiZmlsZVVSTFRvUGF0aCIsIklwY1JlYWRlciIsIkV2ZW50RW1pdHRlciIsImNoaWxkIiwicmF3IiwiYyIsInJ1blB1cEFwcCIsInJlbmRlciIsImQiLCJwdXAiLCJvdXRGaWxlcyIsInJlbmRlck9wdHMiLCJ0MCIsInByb2dyZXNzIiwidGljayIsInAiLCJraWxsVGltZXIiLCJvbkFib3J0IiwibCIsIm0iLCJzdW1tYXJ5Il0sIm1hcHBpbmdzIjoiK2tFQVlPLElBQU1BLEVBQUFBLENBQU4sS0FBa0IsQ0FDZixRQUFBLENBQVcsRUFDWCxNQUFBLENBQVMsS0FBQSxDQUNBLE1BQUEsQ0FDQSxJQUFBLENBQ0EsSUFBQSxDQUNBLFVBQUEsQ0FFakIsWUFBWUMsQ0FBQUEsQ0FBa0IsQ0FDNUIsS0FBSyxNQUFBLENBQVNBLENBQUFBLENBQUssTUFDbkIsSUFBQSxDQUFLLElBQUEsQ0FBT0EsQ0FBQUEsQ0FBSyxHQUFBLENBQ2pCLElBQUEsQ0FBSyxJQUFBLENBQU8sQ0FBQyxDQUFDQSxDQUFBQSxDQUFLLElBQUksS0FBQSxDQUN2QixJQUFBLENBQUssV0FBYUEsQ0FBQUEsQ0FBSyxTQUFBLEVBQWEsTUFDdEMsQ0FFQSxJQUFJLEtBQUEsRUFBZ0IsQ0FDbEIsT0FBTyxJQUFBLENBQUssTUFDZCxDQUVBLE1BQUEsQ0FBT0MsQ0FBQUEsQ0FBdUIsQ0FDNUIsSUFBQSxDQUFLLFFBQUEsQ0FBVyxJQUFBLENBQUssR0FBQSxDQUFJLElBQUEsQ0FBSyxNQUFBLENBQVEsS0FBSyxHQUFBLENBQUksQ0FBQSxDQUFHQSxDQUFPLENBQUMsQ0FBQSxDQUMxRCxLQUFLLE1BQUEsR0FDUCxDQUVBLGFBQUEsQ0FBY0MsQ0FBQUEsQ0FBbUIsQ0FDL0IsS0FBSyxNQUFBLENBQU8sSUFBQSxDQUFLLEtBQUEsQ0FBT0EsQ0FBQUEsQ0FBTSxHQUFBLENBQU8sSUFBQSxDQUFLLE1BQU0sQ0FBQyxFQUNuRCxDQUVBLEtBQUEsRUFBYyxDQUNSLElB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V0FBQSxDQUFZLEdBQUEsRUFBSSxDQUFJRSxDQUFFLENBQUMsQ0FBQSxFQUFBLENBQUksQ0FBQSxDQUNsRixDQUFFLEdBQUdRLENBQUFBLENBQVMsT0FBQSxDQUFTVCxDQUFXLENBQzNDLENBQUEsTUFBU2xCLENBQUFBLENBQUcsQ0FDVixNQUFBRixDQUFBQSxDQUFPLElBQUEsRUFBSyxDQUNaOUQsQ0FBQUEsRUFBUSxjQUFBLEVBQWUsQ0FDakJnRSxDQUNSLENBQUEsT0FBRSxDQUNBLFlBQUEsQ0FBYXVCLENBQVMsQ0FBQSxDQUN0QnZGLENBQUFBLEVBQVEsbUJBQUEsQ0FBb0IsT0FBQSxDQUFTd0YsQ0FBTyxFQUM5QyxDQUNGIiwiZmlsZSI6ImNodW5rLUVPRUpYWUpSLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNS8yNi5cblxuaW1wb3J0IHR5cGUgeyBMb2dnZXJMaWtlIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuXG5jb25zdCBCQVJfV0lEVEggPSA0MDtcblxuaW50ZXJmYWNlIEJhck9wdGlvbnMge1xuICB0b3RhbDogbnVtYmVyO1xuICBvdXQ6IE5vZGVKUy5Xcml0ZVN0cmVhbTtcbiAgc2hvd0NvdW50PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFByb2dyZXNzQmFyIHtcbiAgcHJpdmF0ZSBfd3JpdHRlbiA9IDA7XG4gIHByaXZhdGUgX3Nob3duID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RvdGFsOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX291dDogTm9kZUpTLldyaXRlU3RyZWFtO1xuICBwcml2YXRlIHJlYWRvbmx5IF90dHk6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nob3dDb3VudDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRzOiBCYXJPcHRpb25zKSB7XG4gICAgdGhpcy5fdG90YWwgPSBvcHRzLnRvdGFsO1xuICAgIHRoaXMuX291dCA9IG9wdHMub3V0O1xuICAgIHRoaXMuX3R0eSA9ICEhb3B0cy5vdXQuaXNUVFk7XG4gICAgdGhpcy5fc2hvd0NvdW50ID0gb3B0cy5zaG93Q291bnQgPz8gZmFsc2U7XG4gIH1cblxuICBnZXQgdG90YWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWw7XG4gIH1cblxuICB1cGRhdGUod3JpdHRlbjogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fd3JpdHRlbiA9IE1hdGgubWluKHRoaXMuX3RvdGFsLCBNYXRoLm1heCgwLCB3cml0dGVuKSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHVwZGF0ZVBlcmNlbnQocGN0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZShNYXRoLnJvdW5kKChwY3QgLyAxMDApICogdGhpcy5fdG90YWwpKTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90dHkgJiYgdGhpcy5fc2hvd24pIHtcbiAgICAgIHRoaXMuX291dC53cml0ZShcIlxcclxceDFiWzJLXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJlZHJhdygpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbG9nKGxpbmU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLl9vdXQud3JpdGUoYCR7bGluZX1cXG5gKTtcbiAgICB0aGlzLnJlZHJhdygpO1xuICB9XG5cbiAgZmluaXNoKGxpbmU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLl9vdXQud3JpdGUoYCR7bGluZX1cXG5gKTtcbiAgICB0aGlzLl9zaG93biA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90dHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3dyaXR0ZW4gPT09IDAgJiYgIXRoaXMuX3Nob3duKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJhdGlvID0gdGhpcy5fdG90YWwgPiAwID8gdGhpcy5fd3JpdHRlbiAvIHRoaXMuX3RvdGFsIDogMDtcbiAgICBjb25zdCBmaWxsZWQgPSBNYXRoLnJvdW5kKHJhdGlvICogQkFSX1dJRFRIKTtcbiAgICBjb25zdCBiYXIgPSBcIiNcIi5yZXBlYXQoZmlsbGVkKSArIFwiLVwiLnJlcGVhdChCQVJfV0lEVEggLSBmaWxsZWQpO1xuICAgIGNvbnN0IHBjdCA9IE1hdGgucm91bmQocmF0aW8gKiAxMDApO1xuICAgIGNvbnN0IHN1ZmZpeCA9IHRoaXMuX3Nob3dDb3VudCA/IGAke3RoaXMuX3dyaXR0ZW59LyR7dGhpcy5fdG90YWx9ICgke3BjdH0lKWAgOiBgJHtwY3R9JWA7XG4gICAgdGhpcy5fb3V0LndyaXRlKGBcXHJbJHtiYXJ9XSAke3N1ZmZpeH1gKTtcbiAgICB0aGlzLl9zaG93biA9IHRydWU7XG4gIH1cbn1cblxuLy8gQXJvdW5kIGVhY2ggY29uc29sZS4qIGNhbGwsIGNsZWFyIHRoZSBiYXIgbGluZSB0aGVuIHJlZHJhdyDigJQga2VlcHMgbmF0aXZlIGNvbnNvbGUgY29sb3JpbmcgaW50YWN0LlxuZXhwb3J0IGZ1bmN0aW9uIGJhckxvZ2dlcihiYXI6IFByb2dyZXNzQmFyKTogTG9nZ2VyTGlrZSB7XG4gIGNvbnN0IHdyYXAgPVxuICAgIDxUIGV4dGVuZHMgKC4uLmE6IHVua25vd25bXSkgPT4gdm9pZD4oZm46IFQpID0+XG4gICAgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgYmFyLmNsZWFyKCk7XG4gICAgICBmbiguLi5hcmdzKTtcbiAgICAgIGJhci5yZWRyYXcoKTtcbiAgICB9O1xuICByZXR1cm4ge1xuICAgIGRlYnVnOiB3cmFwKGNvbnNvbGUuZGVidWcpLFxuICAgIGluZm86IHdyYXAoY29uc29sZS5pbmZvKSxcbiAgICB3YXJuOiB3cmFwKGNvbnNvbGUud2FybiksXG4gICAgZXJyb3I6IHdyYXAoY29uc29sZS5lcnJvciksXG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI1LlxuXG5leHBvcnQgdHlwZSBFbnZQYXJzZXI8VD4gPSAodmFsdWU6IHVua25vd24pID0+IFQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBwZW52PFQ+KG5hbWU6IHN0cmluZywgcGFyc2VyOiBFbnZQYXJzZXI8VD4sIGRlZmF1bHRWYWx1ZTogVCk6IFQ7XG5leHBvcnQgZnVuY3Rpb24gcGVudjxUPihuYW1lOiBzdHJpbmcsIHBhcnNlcjogRW52UGFyc2VyPFQ+LCBkZWZhdWx0VmFsdWU/OiBUKTogVCB8IHVuZGVmaW5lZDtcbmV4cG9ydCBmdW5jdGlvbiBwZW52PFQ+KG5hbWU6IHN0cmluZywgcGFyc2VyOiBFbnZQYXJzZXI8VD4sIGRlZmF1bHRWYWx1ZT86IFQpOiBUIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcGFyc2VyKHByb2Nlc3MuZW52W25hbWVdKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMS8zMC5cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTnVtYmVyKHg6IHVua25vd24pOiBudW1iZXIge1xuICBpZiAodHlwZW9mIHggPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4geDtcbiAgfVxuICBjb25zdCBudW0gPSBOdW1iZXIoeCk7XG4gIGlmIChOdW1iZXIuaXNOYU4obnVtKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgJHt4fSBpcyBub3QgYSB2YWxpZCBudW1iZXJgKTtcbiAgfVxuICByZXR1cm4gbnVtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdHJpbmcoeDogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB4O1xuICB9XG4gIHJldHVybiBTdHJpbmcoeCk7XG59XG5cbi8vIENvbW1hLXNlcGFyYXRlZCBzdHJpbmcg4oaSIGFycmF5IHZpYSBhIHBlci1pdGVtIHBhcnNlcjsgZW1wdHkvYmxhbmsg4oaSIFtdLlxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXJyYXk8VD4oaXRlbTogKHg6IHVua25vd24pID0+IFQpOiAoeDogdW5rbm93bikgPT4gVFtdIHtcbiAgcmV0dXJuICh4KSA9PiB7XG4gICAgaWYgKHR5cGVvZiB4ICE9PSBcInN0cmluZ1wiIHx8IHgudHJpbSgpID09PSBcIlwiKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB4LnNwbGl0KFwiLFwiKS5tYXAoKHMpID0+IGl0ZW0ocy50cmltKCkpKTtcbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwZW52IH0gZnJvbSBcIi4vZW52XCI7XG5pbXBvcnQgeyBwYXJzZU51bWJlciB9IGZyb20gXCIuL3BhcnNlclwiO1xuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuXG5leHBvcnQgY29uc3QgcHVwTG9nTGV2ZWwgPSBwZW52KFwiUFVQX0xPR19MRVZFTFwiLCBwYXJzZU51bWJlciwgMik7XG5cbmV4cG9ydCBjb25zdCBwdXBQa2dSb290ID0gZGlybmFtZShyZXF1aXJlLnJlc29sdmUoXCJwdXAtcmVjb3JkZXIvcGFja2FnZS5qc29uXCIpKTtcbmV4cG9ydCBjb25zdCBwdXBBcHAgPSBqb2luKHB1cFBrZ1Jvb3QsIFwiZGlzdFwiLCBcImFwcC5janNcIik7XG5leHBvcnQgY29uc3QgcHVwQXVkaW9QcmVsb2FkID0gam9pbihwdXBQa2dSb290LCBcImRpc3RcIiwgXCJydW50aW1lXCIsIFwiYXVkaW9fcHJlbG9hZC5janNcIik7XG5leHBvcnQgY29uc3QgcHVwU2hvb3RQcmVsb2FkID0gam9pbihwdXBQa2dSb290LCBcImRpc3RcIiwgXCJydW50aW1lXCIsIFwic2hvb3RfcHJlbG9hZC5janNcIik7XG5leHBvcnQgY29uc3QgcHVwUmVuZGVyUHJlbG9hZCA9IGpvaW4ocHVwUGtnUm9vdCwgXCJkaXN0XCIsIFwicnVudGltZVwiLCBcInJlbmRlcl9wcmVsb2FkLmNqc1wiKTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDYuXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgTG9nIH0gZnJvbSBcIm5vZGUtYXZcIjtcbmltcG9ydCB7IEFWX0xPR19FUlJPUiwgQVZfTE9HX1dBUk5JTkcgfSBmcm9tIFwibm9kZS1hdi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHB1cExvZ0xldmVsIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2VyTGlrZSB7XG4gIGRlYnVnPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcblxuICBpbmZvPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcblxuICB3YXJuPyh0aGlzOiB2b2lkLCAuLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZDtcblxuICBlcnJvcj8odGhpczogdm9pZCwgLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQ7XG59XG5cbmNvbnN0IERFQlVHID0gXCI8cHVwQGRlYnVnPlwiO1xuY29uc3QgSU5GTyA9IFwiPHB1cEBpbmZvPlwiO1xuY29uc3QgV0FSTiA9IFwiPHB1cEB3YXJuPlwiO1xuY29uc3QgRVJST1IgPSBcIjxwdXBAZXJyb3I+XCI7XG5jb25zdCBGQVRBTCA9IFwiPHB1cEBmYXRhbD5cIjtcblxuZnVuY3Rpb24gc3RhY2tIb29rKHRhcmdldDogKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pID0+IHVua25vd24sIF9jb250ZXh0OiBDbGFzc01ldGhvZERlY29yYXRvckNvbnRleHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBMb2dnZXIsIC4uLm1lc3NhZ2VzOiB1bmtub3duW10pIHtcbiAgICBjb25zdCBwcm9jZXNzZWQgPSBtZXNzYWdlcy5tYXAoKG1zZykgPT4ge1xuICAgICAgcmV0dXJuIG1zZyBpbnN0YW5jZW9mIEVycm9yID8gKG1zZy5zdGFjayA/PyBTdHJpbmcobXNnKSkgOiBtc2c7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRhcmdldC5jYWxsKHRoaXMsIC4uLnByb2Nlc3NlZCk7XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBMb2dnZXIgaW1wbGVtZW50cyBMb2dnZXJMaWtlIHtcbiAgcHJpdmF0ZSBfaW1wbD86IExvZ2dlckxpa2U7XG5cbiAgZ2V0IGxldmVsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2xldmVsO1xuICB9XG5cbiAgc2V0IGxldmVsKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9sZXZlbCA9IHZhbHVlO1xuICAgIHRoaXMuaW1wbCA9IHRoaXMuX2ltcGwgPz8gY29uc29sZTtcbiAgfVxuXG4gIGdldCBpbXBsKCk6IExvZ2dlckxpa2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9pbXBsO1xuICB9XG5cbiAgc2V0IGltcGwodmFsdWU6IExvZ2dlckxpa2UpIHtcbiAgICBjb25zdCBkZWJ1ZyA9IHZhbHVlLmRlYnVnID8/IGNvbnNvbGUuZGVidWc7XG4gICAgY29uc3QgaW5mbyA9IHZhbHVlLmluZm8gPz8gY29uc29sZS5pbmZvO1xuICAgIGNvbnN0IHdhcm4gPSB2YWx1ZS53YXJuID8/IGNvbnNvbGUud2FybjtcbiAgICBjb25zdCBlcnJvciA9IHZhbHVlLmVycm9yID8/IGNvbnNvbGUuZXJyb3I7XG4gICAgY29uc3QgbHYgPSB0aGlzLl9sZXZlbDtcbiAgICB0aGlzLl9pbXBsID0ge1xuICAgICAgZGVidWc6IGx2ID49IDMgPyBkZWJ1ZyA6IHVuZGVmaW5lZCxcbiAgICAgIGluZm86IGx2ID49IDIgPyBpbmZvIDogdW5kZWZpbmVkLFxuICAgICAgd2FybjogbHYgPj0gMSA/IHdhcm4gOiB1bmRlZmluZWQsXG4gICAgICBlcnJvcjogbHYgPj0gMCA/IGVycm9yIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9sZXZlbDogbnVtYmVyID0gcHVwTG9nTGV2ZWwpIHtcbiAgICB0aGlzLmltcGwgPSBjb25zb2xlO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBkZWJ1ZyguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5kZWJ1Zz8uKERFQlVHLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGluZm8oLi4ubWVzc2FnZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuaW1wbD8uaW5mbz8uKElORk8sIC4uLm1lc3NhZ2VzKTtcbiAgfVxuXG4gIEBzdGFja0hvb2tcbiAgd2FybiguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy53YXJuPy4oV0FSTiwgLi4ubWVzc2FnZXMpO1xuICB9XG5cbiAgQHN0YWNrSG9va1xuICBlcnJvciguLi5tZXNzYWdlczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgdGhpcy5pbXBsPy5lcnJvcj8uKEVSUk9SLCAuLi5tZXNzYWdlcyk7XG4gIH1cblxuICBAc3RhY2tIb29rXG4gIGZhdGFsKC4uLm1lc3NhZ2VzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICB0aGlzLmltcGw/LmVycm9yPy4oRkFUQUwsIC4uLm1lc3NhZ2VzKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BhdGNoKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGNvbnN0IG1zZyA9IG1lc3NhZ2UudHJpbUVuZCgpO1xuICAgIGlmIChtc2cuc3RhcnRzV2l0aChERUJVRykpIHtcbiAgICAgIHRoaXMuZGVidWcobXNnLnNsaWNlKERFQlVHLmxlbmd0aCArIDEpKTtcbiAgICB9IGVsc2UgaWYgKG1zZy5zdGFydHNXaXRoKElORk8pKSB7XG4gICAgICB0aGlzLmluZm8obXNnLnNsaWNlKElORk8ubGVuZ3RoICsgMSkpO1xuICAgIH0gZWxzZSBpZiAobXNnLnN0YXJ0c1dpdGgoV0FSTikpIHtcbiAgICAgIHRoaXMud2Fybihtc2cuc2xpY2UoV0FSTi5sZW5ndGggKyAxKSk7XG4gICAgfSBlbHNlIGlmIChtc2cuc3RhcnRzV2l0aChFUlJPUikpIHtcbiAgICAgIHRoaXMuZXJyb3IobXNnLnNsaWNlKEVSUk9SLmxlbmd0aCArIDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbmZvKG1zZyk7XG4gICAgfVxuICB9XG5cbiAgYXR0YWNoKHByb2M6IENoaWxkUHJvY2VzcywgbmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZGVidWcoYCR7bmFtZX0uYXR0YWNoYCk7XG4gICAgICBsZXQgZmF0YWw6IHN0cmluZyA9IFwiXCI7XG4gICAgICBjb25zdCBkaXNwYXRjaCA9IChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKG1lc3NhZ2Uuc3RhcnRzV2l0aChGQVRBTCkpIHtcbiAgICAgICAgICBmYXRhbCArPSBtZXNzYWdlLnNsaWNlKEZBVEFMLmxlbmd0aCArIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2gobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBwcm9jLnN0ZGVycj8ub24oXCJkYXRhXCIsIGRpc3BhdGNoKTtcbiAgICAgIHByb2Muc3Rkb3V0Py5vbihcImRhdGFcIiwgZGlzcGF0Y2gpO1xuICAgICAgcHJvY1xuICAgICAgICAub24oXCJlcnJvclwiLCAoZXJyKSA9PiB7XG4gICAgICAgICAgZmF0YWwgKz0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgcHJvYy5raWxsKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbmNlKFwiY2xvc2VcIiwgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICAgIGlmIChjb2RlIHx8IHNpZ25hbCB8fCBmYXRhbCkge1xuICAgICAgICAgICAgZmF0YWwgfHw9IGBjb21tYW5kIGZhaWxlZDogJHtwcm9jLnNwYXduYXJncy5qb2luKFwiIFwiKX1gO1xuICAgICAgICAgICAgdGhpcy5kZWJ1ZyhgJHtuYW1lfS5jbG9zZWAsIHsgY29kZSwgc2lnbmFsLCBmYXRhbCB9KTtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoZmF0YWwpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZWJ1ZyhgJHtuYW1lfS5jbG9zZWApO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLm9uKFwidW5oYW5kbGVkUmVqZWN0aW9uXCIsIChyZWFzb24pID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yKGAke25hbWV9LnVuaGFuZGxlZGAsIHJlYXNvbik7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbihcInVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvclwiLCAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvcihgJHtuYW1lfS51bmhhbmRsZWRgLCBlcnIpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCk7XG5cbi8vIFJvdXRlIGZmbXBlZyBuYXRpdmUgbG9ncyB0aHJvdWdoIHB1cCdzIGxvZ2dlci5cbkxvZy5zZXRDYWxsYmFjaygobGV2ZWwsIG1lc3NhZ2UpID0+IHtcbiAgY29uc3QgbXNnID0gbWVzc2FnZS50cmltRW5kKCk7XG4gIGlmICghbXNnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChsZXZlbCA8PSBBVl9MT0dfRVJST1IpIHtcbiAgICBsb2dnZXIuZXJyb3IobXNnKTtcbiAgfSBlbHNlIGlmIChsZXZlbCA8PSBBVl9MT0dfV0FSTklORykge1xuICAgIGxvZ2dlci53YXJuKG1zZyk7XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBsb2dnZXIgfTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMjQuXG5cbmV4cG9ydCBmdW5jdGlvbiBub2VycjxBIGV4dGVuZHMgdW5rbm93bltdLCBSLCBEPihmbjogKC4uLmFyZ3M6IEEpID0+IFIsIGRlZmF1bHRWYWx1ZTogRCk6ICguLi5hcmdzOiBBKSA9PiBSIHwgRCB7XG4gIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXQgPSBmbiguLi5hcmdzKTtcbiAgICAgIGlmIChyZXQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHJldHVybiByZXQuY2F0Y2goKCkgPT4gZGVmYXVsdFZhbHVlKSBhcyBSIHwgRDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgfTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDYuXG5cbmltcG9ydCB6IGZyb20gXCJ6b2RcIjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfV0lEVEggPSAxOTIwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSEVJR0hUID0gMTA4MDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZQUyA9IDMwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRFVSQVRJT04gPSA1O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfV0lORE9XX1RJTUVPVVQgPSAxMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVF9GSUxFUyA9IFtcIm91dC9odG1sLm1wNFwiLCBcIm91dC9odG1sLndlYm1cIl07XG5cbmV4cG9ydCBjb25zdCByZW5kZXJTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGR1cmF0aW9uOiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiRHVyYXRpb24gaW4gc2Vjb25kc1wiKSxcbiAgd2lkdGg6IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJWaWRlbyB3aWR0aFwiKSxcbiAgaGVpZ2h0OiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiVmlkZW8gaGVpZ2h0XCIpLFxuICBmcHM6IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJGcmFtZXMgcGVyIHNlY29uZFwiKSxcbiAgd2l0aEF1ZGlvOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIkNhcHR1cmUgYW5kIGVuY29kZSBhdWRpb1wiKSxcbiAgb3V0RmlsZXM6IHouYXJyYXkoei5zdHJpbmcoKSkuZGVzY3JpYmUoXCJPdXRwdXQgcGF0aHM7IGV4dGVuc2lvbiAoLm1wNC8ud2VibSkgc2VsZWN0cyBlbmNvZGVyXCIpLFxuICB1c2VJbm5lclByb3h5OiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIlVzZSBiaWxpYmlsaSBpbm5lciBwcm94eSBmb3IgcmVzb3VyY2UgYWNjZXNzXCIpLFxuICBkZXRlcm1pbmlzdGljOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIlJlbmRlciBieSBmcmFtZSByYXRoZXIgdGhhbiByZWNvcmRpbmdcIiksXG4gIGRpc2FibGVHcHU6IHouYm9vbGVhbigpLmRlc2NyaWJlKFwiRGlzYWJsZSBHUFUgcmVuZGVyaW5nLCBtYXkgcmVkdWNlIHBlcmZvcm1hbmNlIGJ1dCBpbmNyZWFzZSBzdGFiaWxpdHlcIiksXG4gIGRpc2FibGVId0NvZGVjOiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIkRpc2FibGUgaGFyZHdhcmUgdmlkZW8gZW5jb2RlciAoTlZFTkMvVmlkZW9Ub29sYm94KSwgdXNlIHNvZnR3YXJlIHgyNjVcIiksXG4gIHdpbmRvd1RvbGVyYW50OiB6LmJvb2xlYW4oKS5kZXNjcmliZShcIkZhbGwgYmFjayB0byBkb20tcmVhZHkgaWYgd2FybXVwIGxvYWQgdGltZXMgb3V0XCIpLFxuICB3aW5kb3dUaW1lb3V0OiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiV2luZG93IGxvYWQgdGltZW91dCBpbiBzZWNvbmRzXCIpLFxuICBzY3JlZW5zaG90czogei5hcnJheSh6Lm51bWJlcigpKS5kZXNjcmliZShcIlNlY29uZCBtYXJrcyB0byBkdW1wIGZyYW1lIGJpdG1hcHMgYXMgUE5HXCIpLFxufSk7XG5cbmV4cG9ydCB0eXBlIFJlbmRlck9wdGlvbnMgPSB6LmluZmVyPHR5cGVvZiByZW5kZXJTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBDb25zb2xlQ2FsbGJhY2sgPSAobGV2ZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBQcm9ncmVzc0NhbGxiYWNrID0gKHByb2dyZXNzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBDUmVuZGVyT3B0aW9ucyBleHRlbmRzIFJlbmRlck9wdGlvbnMge1xuICBzb3VyY2U6IHN0cmluZztcbiAgc2lnbmFsOiBBYm9ydFNpZ25hbDtcbiAgb25Qcm9ncmVzczogUHJvZ3Jlc3NDYWxsYmFjaztcbiAgb25Db25zb2xlOiBDb25zb2xlQ2FsbGJhY2s7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUmVzdWx0IHtcbiAgb3B0aW9uczogUmVuZGVyT3B0aW9ucztcbiAgd3JpdHRlbjogbnVtYmVyO1xuICBvdXRGaWxlczogc3RyaW5nW107XG4gIGJsYW5rOiBudW1iZXI7XG4gIGphbms6IG51bWJlcjtcbiAgc2NyZWVuc2hvdHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFJlbmRlck9wdGlvbnM6IFJlbmRlck9wdGlvbnMgPSB7XG4gIHdpZHRoOiBERUZBVUxUX1dJRFRILFxuICBoZWlnaHQ6IERFRkFVTFRfSEVJR0hULFxuICBmcHM6IERFRkFVTFRfRlBTLFxuICBkdXJhdGlvbjogREVGQVVMVF9EVVJBVElPTixcbiAgb3V0RmlsZXM6IERFRkFVTFRfT1VUX0ZJTEVTLFxuICB3aXRoQXVkaW86IGZhbHNlLFxuICB1c2VJbm5lclByb3h5OiBmYWxzZSxcbiAgZGV0ZXJtaW5pc3RpYzogZmFsc2UsXG4gIGRpc2FibGVHcHU6IGZhbHNlLFxuICBkaXNhYmxlSHdDb2RlYzogZmFsc2UsXG4gIHdpbmRvd1RvbGVyYW50OiBmYWxzZSxcbiAgd2luZG93VGltZW91dDogREVGQVVMVF9XSU5ET1dfVElNRU9VVCxcbiAgc2NyZWVuc2hvdHM6IFtdLFxufTtcbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDEvMzAuXG5cbmV4cG9ydCBjbGFzcyBMYXp5PFQ+IHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgbWFrZVZhbHVlOiAoKSA9PiBUKSB7fVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICBpZiAoIXRoaXMuX2luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHRoaXMubWFrZVZhbHVlKCk7XG4gICAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl92YWx1ZSE7XG4gIH1cblxuICBnZXQgaW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxpemVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdmFsdWU6IFQgfCB1bmRlZmluZWQ7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzI3LlxuXG5pbXBvcnQgeyBIYXJkd2FyZUNvbnRleHQgfSBmcm9tIFwibm9kZS1hdi9hcGlcIjtcbmltcG9ydCB7IExhenkgfSBmcm9tIFwiLi9sYXp5XCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9sb2dnaW5nXCI7XG5cbmNvbnN0IFRBRyA9IFwiW0hXQWNjZWxdXCI7XG5cbi8vIExhenk6IGVhZ2VyIGF1dG8oKSBkbG9wZW5zIGxpYmN1ZGEgYXQgaW1wb3J0LCB3aG9zZSBpbml0IHRocmVhZCBjYW4gU0VHViBHUFUtbGVzcyBwb2RzICgyMDI2LTA3LTI0IGV4aXQtMTMyIHN0b3JtKS5cbmV4cG9ydCBjb25zdCBjYW5JVXNlR1BVID0gbmV3IExhenkoKCkgPT4ge1xuICB1c2luZyBodyA9IEhhcmR3YXJlQ29udGV4dC5hdXRvKCk7XG4gIGNvbnN0IHJlc3VsdCA9IGh3ICE9PSBudWxsO1xuICBsb2dnZXIuZGVidWcoVEFHLCBcImdwdTpcIiwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNC8wMy5cblxuaW1wb3J0IHsgcGxhdGZvcm0gfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgcHVwTG9nTGV2ZWwgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGNhbklVc2VHUFUgfSBmcm9tIFwiLi9od2FjY2VsXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaHJvbWl1bU9wdGlvbnMoZGlzYWJsZUdwdTogYm9vbGVhbikge1xuICBjb25zdCBvcHRzID0gW1xuICAgIC8vIOWuueWZqOaymeeusVxuICAgIFwibm8tc2FuZGJveFwiLFxuICAgIFwiZGlzYWJsZS1kZXYtc2htLXVzYWdlXCIsXG4gICAgLy8g6Leo5Z+fL+WuieWFqFxuICAgIFwiZGlzYWJsZS13ZWItc2VjdXJpdHlcIixcbiAgICBcImRpc2FibGUtc2l0ZS1pc29sYXRpb24tdHJpYWxzXCIsXG4gICAgXCJpZ25vcmUtY2VydGlmaWNhdGUtZXJyb3JzXCIsXG4gICAgLy8g5b2V5Yi26KGM5Li6XG4gICAgXCJkaXNhYmxlLWJsaW5rLWZlYXR1cmVzPUF1dG9tYXRpb25Db250cm9sbGVkXCIsXG4gICAgXCJtdXRlLWF1ZGlvXCIsXG4gICAgXCJhdXRvcGxheS1wb2xpY3k9bm8tdXNlci1nZXN0dXJlLXJlcXVpcmVkXCIsXG4gICAgXCJkaXNhYmxlLWV4dGVuc2lvbnNcIixcbiAgICBcImRlbnktcGVybWlzc2lvbi1wcm9tcHRzXCIsXG4gICAgXCJ1c2UtbW9jay1rZXljaGFpblwiLFxuICAgIC8vIOa4suafk1xuICAgIFwiZm9yY2UtZGV2aWNlLXNjYWxlLWZhY3Rvcj0xXCIsXG4gICAgXCJmb3JjZS1jb2xvci1wcm9maWxlPXNyZ2JcIixcbiAgICBcImlnbm9yZS1ncHUtYmxvY2tsaXN0XCIsXG4gICAgXCJ1c2UtZ2w9YW5nbGVcIixcbiAgICBcImRldGVybWluaXN0aWMtbW9kZVwiLFxuICAgIFwiZW5hYmxlLWJlZ2luLWZyYW1lLWNvbnRyb2xcIixcbiAgICBcImRpc2FibGUtbmV3LWNvbnRlbnQtcmVuZGVyaW5nLXRpbWVvdXRcIixcbiAgICBcInJ1bi1hbGwtY29tcG9zaXRvci1zdGFnZXMtYmVmb3JlLWRyYXdcIixcbiAgICBcImRpc2FibGUtdGhyZWFkZWQtYW5pbWF0aW9uXCIsXG4gICAgXCJkaXNhYmxlLXRocmVhZGVkLXNjcm9sbGluZ1wiLFxuICAgIFwiZGlzYWJsZS1jaGVja2VyLWltYWdpbmdcIixcbiAgICBcImRpc2FibGUtaW1hZ2UtYW5pbWF0aW9uLXJlc3luY1wiLFxuICAgIFwiZW5hYmxlLXN1cmZhY2Utc3luY2hyb25pemF0aW9uXCIsXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3B1cHBldGVlci9wdXBwZXRlZXIvaXNzdWVzLzI0MTBcbiAgICBcImZvbnQtcmVuZGVyLWhpbnRpbmc9bm9uZVwiLFxuICAgIC8vIOi1hOa6kOaOp+WItlxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kLW5ldHdvcmtpbmdcIixcbiAgICBcImpzLWZsYWdzPS0tbWF4LW9sZC1zcGFjZS1zaXplPTUxMlwiLFxuICAgIFwicmVuZGVyZXItcHJvY2Vzcy1saW1pdD0xXCIsXG4gICAgXCJudW0tcmFzdGVyLXRocmVhZHM9MlwiLFxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kLXRpbWVyLXRocm90dGxpbmdcIixcbiAgICBcImRpc2FibGUtcmVuZGVyZXItYmFja2dyb3VuZGluZ1wiLFxuICAgIFwiZGlzYWJsZS1iYWNrZ3JvdW5kaW5nLW9jY2x1ZGVkLXdpbmRvd3NcIixcbiAgICAvLyDml6Xlv5fov73ouKpcbiAgICBcImVuYWJsZS1sb2dnaW5nPXN0ZGVyclwiLFxuICBdO1xuXG4gIGlmIChwdXBMb2dMZXZlbCA+PSAzKSB7XG4gICAgb3B0cy5wdXNoKFwibG9nLWxldmVsPTBcIiwgXCJ2PTFcIik7XG4gIH0gZWxzZSB7XG4gICAgb3B0cy5wdXNoKFwibG9nLWxldmVsPTNcIik7XG4gIH1cblxuICBjb25zdCBmZWF0dXJlcyA9IFtcIkZvbnRhdGlvbkJhY2tlbmRcIl07XG4gIC8vIGRpc2FibGVHcHUgZmlyc3Q6IGl0IHNob3J0LWNpcmN1aXRzIHBhc3QgdGhlIGxhenkgcHJvYmUsIHNvIGEgZGlzYWJsZWQgcG9kIG5ldmVyIGRsb3BlbnMgbGliY3VkYS5cbiAgY29uc3QgZW5hYmxlR3B1ID0gIWRpc2FibGVHcHUgJiYgY2FuSVVzZUdQVS52YWx1ZTtcbiAgaWYgKCFlbmFibGVHcHUpIHtcbiAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9c3dpZnRzaGFkZXJcIiwgXCJlbmFibGUtdW5zYWZlLXN3aWZ0c2hhZGVyXCIpO1xuICB9IGVsc2Uge1xuICAgIG9wdHMucHVzaChcImRpc2FibGUtZ3B1LXNhbmRib3hcIiwgXCJlbmFibGUtdW5zYWZlLXdlYmdwdVwiKTtcbiAgICBjb25zdCBwbGF0ID0gcGxhdGZvcm0oKTtcbiAgICBpZiAocGxhdCA9PT0gXCJkYXJ3aW5cIikge1xuICAgICAgb3B0cy5wdXNoKFwidXNlLWFuZ2xlPW1ldGFsXCIpO1xuICAgIH0gZWxzZSBpZiAocGxhdCA9PT0gXCJ3aW4zMlwiKSB7XG4gICAgICBvcHRzLnB1c2goXCJ1c2UtYW5nbGU9ZDNkMTFcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdHMucHVzaChcInVzZS1hbmdsZT12dWxrYW5cIiwgXCJkaXNhYmxlLXZ1bGthbi1zdXJmYWNlXCIpO1xuICAgICAgZmVhdHVyZXMucHVzaChcIlZ1bGthblwiKTtcbiAgICB9XG4gIH1cblxuICBvcHRzLnB1c2goYGVuYWJsZS1mZWF0dXJlcz0ke2ZlYXR1cmVzLmpvaW4oXCIsXCIpfWApO1xuICByZXR1cm4gb3B0cztcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDEvMzAuXG5cbmltcG9ydCB7IHR5cGUgQ2hpbGRQcm9jZXNzLCB0eXBlIFNwYXduT3B0aW9ucywgc3Bhd24gfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgdHJlZUtpbGwgZnJvbSBcInRyZWUta2lsbFwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuXG5leHBvcnQgY29uc3QgUFVQX0FSR1NfS0VZID0gXCItLXB1cC1wcml2LWFyZ3NcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmdzKCkge1xuICBjb25zdCBhcmd2ID0gcHJvY2Vzcy5hcmd2O1xuICBsZXQgcHJpdiA9IGFyZ3YuZmluZCgoYXJnKSA9PiBhcmcuc3RhcnRzV2l0aChQVVBfQVJHU19LRVkpKTtcbiAgaWYgKCFwcml2KSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwicHJvY2FyZ3ZcIiwgYXJndik7XG4gICAgcmV0dXJuIHByb2Nlc3MuYXJndjtcbiAgfVxuICBjb25zdCBhcmdzID0gW1wiZXhlY1wiLCAuLi5hcmd2LnNsaWNlKC0xKV07XG4gIHByaXYgPSBCdWZmZXIuZnJvbShwcml2LnNwbGl0KFwiPVwiKVsxXSEsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKCk7XG4gIGFyZ3MucHVzaCguLi5KU09OLnBhcnNlKHByaXYpKTtcbiAgbG9nZ2VyLmRlYnVnKFwicHVwYXJnc1wiLCBhcmdzKTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0hhbmRsZSB7XG4gIHByb2Nlc3M6IENoaWxkUHJvY2VzcztcbiAgd2FpdDogUHJvbWlzZTx2b2lkPjtcbiAgZ2V0IGtpbGxlZCgpOiBib29sZWFuO1xuICBraWxsKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjKGNtZDogc3RyaW5nLCBvcHRpb25zPzogU3Bhd25PcHRpb25zKTogUHJvY2Vzc0hhbmRsZSB7XG4gIGNvbnN0IHBhcnRzID0gY21kLnNwbGl0KFwiIFwiKS5maWx0ZXIoKHMpID0+IHMubGVuZ3RoKTtcbiAgY29uc3QgW2NvbW1hbmQsIC4uLmFyZ3NdID0gcGFydHM7XG4gIGlmICghY29tbWFuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImVtcHR5IGNvbW1hbmRcIik7XG4gIH1cbiAgY29uc3QgcHJvYyA9IHNwYXduKGNvbW1hbmQsIGFyZ3MsIHtcbiAgICBzdGRpbzogXCJpbmhlcml0XCIsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG4gIGxldCBraWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzOiBwcm9jLFxuICAgIHdhaXQ6IGxvZ2dlci5hdHRhY2gocHJvYywgY29tbWFuZCksXG4gICAgZ2V0IGtpbGxlZCgpIHtcbiAgICAgIHJldHVybiBraWxsZWQ7XG4gICAgfSxcbiAgICBraWxsKCkge1xuICAgICAgaWYgKGtpbGxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBraWxsZWQgPSB0cnVlO1xuICAgICAgY29uc3QgcGlkID0gcHJvYy5waWQ7XG4gICAgICBpZiAocGlkKSB7XG4gICAgICAgIHRyZWVLaWxsKHBpZCwgXCJTSUdLSUxMXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvYy5raWxsKFwiU0lHS0lMTFwiKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wMi8yNS5cblxuaW1wb3J0IHsgcm1TeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IG1rZHRlbXAgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSBcIm5vZGU6b3NcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBjaHJvbWl1bU9wdGlvbnMgfSBmcm9tIFwiLi4vYmFzZS9jaHJvbWl1bVwiO1xuaW1wb3J0IHsgcHVwQXBwIH0gZnJvbSBcIi4uL2Jhc2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi4vYmFzZS9sb2dnaW5nXCI7XG5pbXBvcnQgeyBleGVjLCBQVVBfQVJHU19LRVkgfSBmcm9tIFwiLi4vYmFzZS9wcm9jZXNzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbGVjdHJvbk9wdHMoZGlzYWJsZUdwdTogYm9vbGVhbikge1xuICByZXR1cm4gWy4uLihhd2FpdCBjaHJvbWl1bU9wdGlvbnMoZGlzYWJsZUdwdSkpLCBcImhlYWRsZXNzPW5ld1wiXTtcbn1cblxuY29uc3QgVEFHID0gXCJbRWxlY3Ryb25dXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVuRWxlY3Ryb25BcHBPcHRpb25zIHtcbiAgYXJnczogdW5rbm93bltdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRWxlY3Ryb25BcHAoeyBhcmdzIH06IFJ1bkVsZWN0cm9uQXBwT3B0aW9ucykge1xuICAvLyBMYXp5OiBlbGVjdHJvbidzIGVudHJ5IHRocm93cyBpZiB0aGUgYmluYXJ5IGlzIGFic2VudCwgc28gdXRpbC1vbmx5IGNvbnN1bWVycyBtdXN0IG5vdCBsb2FkIGl0IGF0IGltcG9ydCB0aW1lLlxuICBjb25zdCB7IGRlZmF1bHQ6IGVsZWN0cm9uIH0gPSBhd2FpdCBpbXBvcnQoXCJlbGVjdHJvblwiKTtcbiAgY29uc3Qgb3B0cyA9IGF3YWl0IGVsZWN0cm9uT3B0cyhhcmdzLmluY2x1ZGVzKFwiLS1kaXNhYmxlLWdwdVwiKSk7XG4gIC8vIFBlci1wcm9jZXNzIHByb2ZpbGU6IGlzb2xhdGVzIHRoaXMgY2FsbCdzIENocm9taXVtIGNhY2hlICh3YXJtdXAgd2luZG93cyBzaGFyZSBpdCB2aWEgZGVmYXVsdFNlc3Npb24pLCB3aXBlZCBvbiBleGl0LlxuICBjb25zdCBwcm9maWxlRGlyID0gYXdhaXQgbWtkdGVtcChqb2luKHRtcGRpcigpLCBcInB1cC1wcm9maWxlLVwiKSk7XG4gIGNvbnN0IGVsZWN0cm9uQXJncyA9IG9wdHMubWFwKChhKSA9PiBgLS0ke2F9YCk7XG4gIGVsZWN0cm9uQXJncy5wdXNoKGAtLXVzZXItZGF0YS1kaXI9JHtwcm9maWxlRGlyfWApO1xuICBlbGVjdHJvbkFyZ3MucHVzaChgJHtQVVBfQVJHU19LRVl9PSR7QnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoYXJncykpLnRvU3RyaW5nKFwiYmFzZTY0XCIpfWApO1xuICBjb25zdCBjbWQgPSBbZWxlY3Ryb24sIC4uLmVsZWN0cm9uQXJncywgcHVwQXBwXS5qb2luKFwiIFwiKTtcbiAgbG9nZ2VyLmRlYnVnKFRBRywgY21kKTtcblxuICBjb25zdCBlbnY6IE5vZGVKUy5Qcm9jZXNzRW52ID0geyAuLi5wcm9jZXNzLmVudiwgUlVTVF9CQUNLVFJBQ0U6IFwiZnVsbFwiIH07XG4gIGNvbnN0IGhhbmRsZSA9IGV4ZWMoY21kLCB7IHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJwaXBlXCIsIFwicGlwZVwiLCBcImlwY1wiXSwgZW52IH0pO1xuICBoYW5kbGUucHJvY2Vzcy5vbmNlKFwiZXhpdFwiLCAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJtU3luYyhwcm9maWxlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nZ2VyLndhcm4oVEFHLCBcInByb2ZpbGUgY2xlYW51cCBmYWlsZWQ6XCIsIGUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBoYW5kbGU7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzAyLzA5LlxuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tIFwibm9kZTp1cmxcIjtcblxuY29uc3QgU1VQUE9SVEVEX1BST1RPQ09MUyA9IFtcImZpbGU6XCIsIFwiaHR0cDpcIiwgXCJodHRwczpcIiwgXCJkYXRhOlwiXTtcbmNvbnN0IFNPVVJDRV9QQVRURVJOID0gL14oZmlsZTp8aHR0cHM/OnxkYXRhOikvO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tIVE1MKHNvdXJjZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmICghU09VUkNFX1BBVFRFUk4udGVzdChzb3VyY2UpKSB7XG4gICAgY29uc3QgcHJvdG9jb2wgPSBgJHtzb3VyY2Uuc3BsaXQoXCI6XCIpWzBdfTpgO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBTVVBQT1JURURfUFJPVE9DT0xTLmluY2x1ZGVzKHByb3RvY29sKVxuICAgICAgPyBgdW5zdXBwb3J0ZWQgcHJvdG9jb2w6ICR7cHJvdG9jb2x9LCBleHBlY3RlZCAke1NVUFBPUlRFRF9QUk9UT0NPTFMuam9pbihcIiwgXCIpfWBcbiAgICAgIDogYGludmFsaWQgc291cmNlIGZvcm1hdCwgZXhwZWN0ZWQgJHtTVVBQT1JURURfUFJPVE9DT0xTLmpvaW4oXCIsIFwiKX1gO1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxuXG4gIC8vIGZpbGU6IHNvdXJjZXMgYXJlIGNoZWFwIHRvIHN0YXQgaGVyZTsgRWxlY3Ryb24gd291bGQgb25seSBzdXJmYWNlIGEgbWlzc2luZyBvbmUgYXMgZGlkLWZhaWwtbG9hZCBhZnRlciBzcGF3bit3YXJtdXAuXG4gIGlmIChzb3VyY2Uuc3RhcnRzV2l0aChcImZpbGU6XCIpICYmICFleGlzdHNTeW5jKGZpbGVVUkxUb1BhdGgoc291cmNlKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHNvdXJjZSBmaWxlIG5vdCBmb3VuZDogJHtzb3VyY2V9YCk7XG4gIH1cbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDQvMDEuXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIm5vZGU6ZXZlbnRzXCI7XG5cbmV4cG9ydCBlbnVtIElwY01zZ1R5cGUge1xuICAvLyBjaGlsZCDihpIgcGFyZW50XG4gIENvbnNvbGUgPSBcImNvbnNvbGVcIixcbiAgUHJvZ3Jlc3MgPSBcInByb2dyZXNzXCIsXG4gIERvbmUgPSBcImRvbmVcIixcbiAgRXJyb3IgPSBcImVycm9yXCIsXG4gIC8vIHBhcmVudCDihpIgY2hpbGRcbiAgQ2FuY2VsID0gXCJjYW5jZWxcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25zb2xlTXNnIHtcbiAgdHlwZTogSXBjTXNnVHlwZS5Db25zb2xlO1xuICBsZXZlbDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsTXNnIHtcbiAgdHlwZTogSXBjTXNnVHlwZS5DYW5jZWw7XG4gIHJlYXNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJcGNEb25lUGF5bG9hZCB7XG4gIHdyaXR0ZW46IG51bWJlcjtcbiAgb3V0RmlsZXM6IHN0cmluZ1tdO1xuICBibGFuazogbnVtYmVyO1xuICBqYW5rOiBudW1iZXI7XG4gIHNjcmVlbnNob3RzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc01zZyB7XG4gIHR5cGU6IElwY01zZ1R5cGUuUHJvZ3Jlc3M7XG4gIHZhbHVlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9uZU1zZyB7XG4gIHR5cGU6IElwY01zZ1R5cGUuRG9uZTtcbiAgcGF5bG9hZDogSXBjRG9uZVBheWxvYWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JNc2cge1xuICB0eXBlOiBJcGNNc2dUeXBlLkVycm9yO1xuICBlcnJvcjogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBJcGNNc2cgPSBDb25zb2xlTXNnIHwgUHJvZ3Jlc3NNc2cgfCBEb25lTXNnIHwgRXJyb3JNc2cgfCBDYW5jZWxNc2c7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXBjRXZlbnRzIHtcbiAgcHJvZ3Jlc3M6IFt2YWx1ZTogbnVtYmVyXTtcbiAgY29uc29sZTogW2xldmVsOiBzdHJpbmcsIG1zZzogc3RyaW5nXTtcbiAgZG9uZTogW3BheWxvYWQ6IElwY0RvbmVQYXlsb2FkXTtcbiAgZXJyb3I6IFtlcnJvcjogRXJyb3JdO1xuICBjbG9zZTogW2NvZGU6IG51bWJlciB8IG51bGxdO1xufVxuXG5leHBvcnQgY2xhc3MgSXBjV3JpdGVyIHtcbiAgd3JpdGVDb25zb2xlKGxldmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMuc2VuZCh7IHR5cGU6IElwY01zZ1R5cGUuQ29uc29sZSwgbGV2ZWwsIG1lc3NhZ2UgfSk7XG4gIH1cblxuICB3cml0ZVByb2dyZXNzKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmQoeyB0eXBlOiBJcGNNc2dUeXBlLlByb2dyZXNzLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIHdyaXRlRXJyb3IoZXJyb3I6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnNlbmQoeyB0eXBlOiBJcGNNc2dUeXBlLkVycm9yLCBlcnJvciB9KTtcbiAgfVxuXG4gIHdyaXRlRG9uZShwYXlsb2FkOiBJcGNEb25lUGF5bG9hZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnNlbmQoeyB0eXBlOiBJcGNNc2dUeXBlLkRvbmUsIHBheWxvYWQgfSk7XG4gIH1cblxuICBwcml2YXRlIHNlbmQobXNnOiBJcGNNc2cpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGlmICghcHJvY2Vzcy5zZW5kKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgICBwcm9jZXNzLnNlbmQobXNnLCAoKSA9PiByZXNvbHZlKCkpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJcGNSZWFkZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXI8SXBjRXZlbnRzPiB7XG4gIGNvbnN0cnVjdG9yKGNoaWxkOiBDaGlsZFByb2Nlc3MpIHtcbiAgICBzdXBlcigpO1xuICAgIGNoaWxkLm9uKFwibWVzc2FnZVwiLCAocmF3KSA9PiB7XG4gICAgICBjb25zdCBtc2cgPSByYXcgYXMgSXBjTXNnO1xuICAgICAgc3dpdGNoIChtc2cudHlwZSkge1xuICAgICAgICBjYXNlIElwY01zZ1R5cGUuQ29uc29sZToge1xuICAgICAgICAgIHRoaXMuZW1pdChcImNvbnNvbGVcIiwgbXNnLmxldmVsLCBtc2cubWVzc2FnZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBJcGNNc2dUeXBlLlByb2dyZXNzOiB7XG4gICAgICAgICAgdGhpcy5lbWl0KFwicHJvZ3Jlc3NcIiwgbXNnLnZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIElwY01zZ1R5cGUuRG9uZToge1xuICAgICAgICAgIHRoaXMuZW1pdChcImRvbmVcIiwgbXNnLnBheWxvYWQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgSXBjTXNnVHlwZS5FcnJvcjoge1xuICAgICAgICAgIHRoaXMuZW1pdChcImVycm9yXCIsIG5ldyBFcnJvcihtc2cuZXJyb3IpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGNoaWxkLm9uY2UoXCJleGl0XCIsIChjKSA9PiB0aGlzLmVtaXQoXCJjbG9zZVwiLCBjKSk7XG4gIH1cbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDIvMDkuXG5cbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL2Jhc2UvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgcnVuRWxlY3Ryb25BcHAgfSBmcm9tIFwiLi9yZW5kZXJlci9lbGVjdHJvblwiO1xuaW1wb3J0IHsgY2hlY2tIVE1MIH0gZnJvbSBcIi4vcmVuZGVyZXIvaHRtbF9jaGVja1wiO1xuaW1wb3J0IHsgdHlwZSBJcGNEb25lUGF5bG9hZCwgSXBjTXNnVHlwZSwgSXBjUmVhZGVyIH0gZnJvbSBcIi4vcmVuZGVyZXIvaXBjXCI7XG5pbXBvcnQge1xuICB0eXBlIENvbnNvbGVDYWxsYmFjayxcbiAgZGVmYXVsdFJlbmRlck9wdGlvbnMsXG4gIHR5cGUgUHJvZ3Jlc3NDYWxsYmFjayxcbiAgdHlwZSBSZW5kZXJPcHRpb25zLFxuICB0eXBlIFJlbmRlclJlc3VsdCxcbn0gZnJvbSBcIi4vcmVuZGVyZXIvc2NoZW1hXCI7XG5cbmNvbnN0IFRBRyA9IFwiW3B1cF1cIjtcblxuZXhwb3J0IGludGVyZmFjZSBQdXBPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxSZW5kZXJPcHRpb25zPiB7XG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICBvblByb2dyZXNzPzogUHJvZ3Jlc3NDYWxsYmFjaztcbiAgb25Db25zb2xlPzogQ29uc29sZUNhbGxiYWNrO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cFJlc3VsdCBleHRlbmRzIFJlbmRlclJlc3VsdCB7fVxuXG5hc3luYyBmdW5jdGlvbiBydW5QdXBBcHAoc291cmNlOiBzdHJpbmcsIHJlbmRlcjogUmVuZGVyT3B0aW9ucykge1xuICBsb2dnZXIuZGVidWcoVEFHLCBgcnVuUHVwQXBwYCwgc291cmNlLCByZW5kZXIpO1xuXG4gIGNvbnN0IGFyZ3M6IHN0cmluZ1tdID0gW1xuICAgIHNvdXJjZSxcbiAgICBgLS13aWR0aGAsXG4gICAgYCR7cmVuZGVyLndpZHRofWAsXG4gICAgYC0taGVpZ2h0YCxcbiAgICBgJHtyZW5kZXIuaGVpZ2h0fWAsXG4gICAgYC0tZnBzYCxcbiAgICBgJHtyZW5kZXIuZnBzfWAsXG4gICAgYC0tZHVyYXRpb25gLFxuICAgIGAke3JlbmRlci5kdXJhdGlvbn1gLFxuICAgIGAtLXdpbmRvdy10aW1lb3V0YCxcbiAgICBgJHtyZW5kZXIud2luZG93VGltZW91dH1gLFxuICAgIGAtLW91dC1maWxlYCxcbiAgICByZW5kZXIub3V0RmlsZXMuam9pbihcIixcIiksXG4gIF07XG4gIGlmIChyZW5kZXIud2l0aEF1ZGlvKSB7XG4gICAgYXJncy5wdXNoKGAtLXdpdGgtYXVkaW9gKTtcbiAgfVxuICBpZiAocmVuZGVyLnVzZUlubmVyUHJveHkpIHtcbiAgICBhcmdzLnB1c2goYC0tdXNlLWlubmVyLXByb3h5YCk7XG4gIH1cbiAgaWYgKHJlbmRlci5kZXRlcm1pbmlzdGljKSB7XG4gICAgYXJncy5wdXNoKGAtLWRldGVybWluaXN0aWNgKTtcbiAgfVxuICBpZiAocmVuZGVyLmRpc2FibGVHcHUpIHtcbiAgICBhcmdzLnB1c2goYC0tZGlzYWJsZS1ncHVgKTtcbiAgfVxuICBpZiAocmVuZGVyLmRpc2FibGVId0NvZGVjKSB7XG4gICAgYXJncy5wdXNoKGAtLWRpc2FibGUtaHctY29kZWNgKTtcbiAgfVxuICBpZiAocmVuZGVyLndpbmRvd1RvbGVyYW50KSB7XG4gICAgYXJncy5wdXNoKGAtLXdpbmRvdy10b2xlcmFudGApO1xuICB9XG4gIGlmIChyZW5kZXIuc2NyZWVuc2hvdHMubGVuZ3RoID4gMCkge1xuICAgIGFyZ3MucHVzaChgLS1zY3JlZW5zaG90c2AsIHJlbmRlci5zY3JlZW5zaG90cy5qb2luKFwiLFwiKSk7XG4gIH1cblxuICByZXR1cm4gcnVuRWxlY3Ryb25BcHAoeyBhcmdzIH0pO1xufVxuXG5jb25zdCBkID0gZGVmYXVsdFJlbmRlck9wdGlvbnM7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwdXAoc291cmNlOiBzdHJpbmcsIG9wdGlvbnM6IFBhcnRpYWw8UHVwT3B0aW9ucz4pOiBQcm9taXNlPFB1cFJlc3VsdD4ge1xuICBsb2dnZXIuZGVidWcoVEFHLCBgcHVwYCwgc291cmNlLCBvcHRpb25zKTtcblxuICBjb25zdCB7IHNpZ25hbCB9ID0gb3B0aW9ucztcbiAgc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO1xuICBjaGVja0hUTUwoc291cmNlKTtcblxuICBjb25zdCBvdXRGaWxlcyA9IG9wdGlvbnMub3V0RmlsZXMgPz8gZC5vdXRGaWxlcztcbiAgY29uc3QgcmVuZGVyT3B0czogUmVuZGVyT3B0aW9ucyA9IHtcbiAgICB3aWR0aDogb3B0aW9ucy53aWR0aCA/PyBkLndpZHRoLFxuICAgIGhlaWdodDogb3B0aW9ucy5oZWlnaHQgPz8gZC5oZWlnaHQsXG4gICAgZnBzOiBvcHRpb25zLmZwcyA/PyBkLmZwcyxcbiAgICBkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbiA/PyBkLmR1cmF0aW9uLFxuICAgIHdpdGhBdWRpbzogb3B0aW9ucy53aXRoQXVkaW8gPz8gZC53aXRoQXVkaW8sXG4gICAgdXNlSW5uZXJQcm94eTogb3B0aW9ucy51c2VJbm5lclByb3h5ID8/IGQudXNlSW5uZXJQcm94eSxcbiAgICBkZXRlcm1pbmlzdGljOiBvcHRpb25zLmRldGVybWluaXN0aWMgPz8gZC5kZXRlcm1pbmlzdGljLFxuICAgIGRpc2FibGVHcHU6IG9wdGlvbnMuZGlzYWJsZUdwdSA/PyBkLmRpc2FibGVHcHUsXG4gICAgZGlzYWJsZUh3Q29kZWM6IG9wdGlvbnMuZGlzYWJsZUh3Q29kZWMgPz8gZC5kaXNhYmxlSHdDb2RlYyxcbiAgICB3aW5kb3dUb2xlcmFudDogb3B0aW9ucy53aW5kb3dUb2xlcmFudCA/PyBkLndpbmRvd1RvbGVyYW50LFxuICAgIHdpbmRvd1RpbWVvdXQ6IG9wdGlvbnMud2luZG93VGltZW91dCA/PyBkLndpbmRvd1RpbWVvdXQsXG4gICAgc2NyZWVuc2hvdHM6IG9wdGlvbnMuc2NyZWVuc2hvdHMgPz8gZC5zY3JlZW5zaG90cyxcbiAgICBvdXRGaWxlcyxcbiAgfTtcblxuICBjb25zdCB0MCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBsZXQgcHJvZ3Jlc3MgPSAwO1xuICBjb25zdCB0aWNrID0gKHA6IG51bWJlcikgPT4ge1xuICAgIHByb2dyZXNzID0gcDtcbiAgICBvcHRpb25zLm9uUHJvZ3Jlc3M/LihwKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGUgPSBhd2FpdCBydW5QdXBBcHAoc291cmNlLCByZW5kZXJPcHRzKTtcblxuICBsZXQga2lsbFRpbWVyOiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZDtcbiAgY29uc3Qgb25BYm9ydCA9ICgpID0+IHtcbiAgICBoYW5kbGUucHJvY2Vzcy5zZW5kPy4oeyB0eXBlOiBJcGNNc2dUeXBlLkNhbmNlbCwgcmVhc29uOiBTdHJpbmcoc2lnbmFsPy5yZWFzb24gPz8gXCJhYm9ydFwiKSB9KTtcbiAgICBraWxsVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IGhhbmRsZS5raWxsKCksIDVfMDAwKTtcbiAgfTtcbiAgc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25BYm9ydCwgeyBvbmNlOiB0cnVlIH0pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFByb21pc2U8SXBjRG9uZVBheWxvYWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG5ldyBJcGNSZWFkZXIoaGFuZGxlLnByb2Nlc3MpXG4gICAgICAgIC5vbihcImNsb3NlXCIsIChjb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID0gSlNPTi5zdHJpbmdpZnkoeyBzb3VyY2UsIHByb2dyZXNzLCBjb2RlLCBraWxsZWQ6IGhhbmRsZS5raWxsZWQgfSk7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgY3Jhc2hlZDogJHttc2d9YCkpO1xuICAgICAgICB9KVxuICAgICAgICAub24oXCJwcm9ncmVzc1wiLCB0aWNrKVxuICAgICAgICAub24oXCJjb25zb2xlXCIsIChsLCBtKSA9PiBvcHRpb25zLm9uQ29uc29sZT8uKGwsIG0pKVxuICAgICAgICAub24oXCJkb25lXCIsIHJlc29sdmUpXG4gICAgICAgIC5vbihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgfSk7XG4gICAgdGljaygwKTtcbiAgICBjb25zdCBbc3VtbWFyeV0gPSBhd2FpdCBQcm9taXNlLmFsbChbcmVzdWx0LCBoYW5kbGUud2FpdF0pO1xuICAgIHRpY2soMTAwKTtcbiAgICBsb2dnZXIuZGVidWcoVEFHLCBgZG9uZSAke291dEZpbGVzLmpvaW4oXCIsXCIpfSBpbiAke01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkgLSB0MCl9bXNgKTtcbiAgICByZXR1cm4geyAuLi5zdW1tYXJ5LCBvcHRpb25zOiByZW5kZXJPcHRzIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBoYW5kbGUua2lsbCgpO1xuICAgIHNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtcbiAgICB0aHJvdyBlO1xuICB9IGZpbmFsbHkge1xuICAgIGNsZWFyVGltZW91dChraWxsVGltZXIpO1xuICAgIHNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uQWJvcnQpO1xuICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- 'use strict';require('source-map-support/register.js');var electron=require('electron');var A="audio-meta",f="audio-chunk";if(!window.__pup_audio_capturing__){window.__pup_audio_capturing__=true;let s=window.AudioContext||window.webkitAudioContext;if(s){let r=function(...e){let t=new s(...e);if(!d.has(t)){d.add(t);let n=w(),o=t.createMediaStreamDestination();t.__pup_captureDest__=o,n.ctx.createMediaStreamSource(o.stream).connect(n.processor);}return t};let d=new WeakSet,_=new WeakSet,c,u,w=()=>{if(c&&u)return {ctx:c,processor:u};let e=new s,t=e.createScriptProcessor(4096,2,2);return t.onaudioprocess=n=>{let o=n.inputBuffer.getChannelData(0),a=n.inputBuffer.getChannelData(1),p=new Float32Array(o.length*2);for(let i=0;i<o.length;i++)p[i*2]=o[i]??0,p[i*2+1]=a[i]??0;electron.ipcRenderer.send(f,Buffer.from(p.buffer));},t.connect(e.destination),electron.ipcRenderer.send(A,{sampleRate:e.sampleRate}),e.resume(),c=e,u=t,{ctx:e,processor:t}},C=AudioContext.prototype.createMediaElementSource;AudioContext.prototype.createMediaElementSource=function(e){return _.add(e),C.call(this,e)};let l=AudioNode.prototype.connect;AudioNode.prototype.connect=function(e,t,n){let o=e.context,a=o?.__pup_captureDest__;return a&&o&&e===o.destination&&this!==a&&l.call(this,a,t,n),l.call(this,e,t,n)},r.prototype=s.prototype,Object.setPrototypeOf(r,s),window.AudioContext=r,"webkitAudioContext"in window&&(window.webkitAudioContext=r);let x=HTMLMediaElement.prototype.play;HTMLMediaElement.prototype.play=function(){return this.__pup_captured__||(this.__pup_captured__=true,Promise.resolve().then(()=>{if(!_.has(this)){let e=new r;e.createMediaElementSource(this).connect(e.destination);}})),x.call(this)};}}//# sourceMappingURL=audio_preload.cjs.map
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJlci9hdWRpby50cyIsIi4uLy4uL3NyYy9ydW50aW1lL2F1ZGlvX3ByZWxvYWQudHMiXSwibmFtZXMiOlsiQVVESU9fTUVUQV9DSEFOTkVMIiwiQVVESU9fQ0hVTktfQ0hBTk5FTCIsIk9SSUdfQUMiLCJQYXRjaGVkQUMiLCJhcmdzIiwiY3R4IiwiY2FwdHVyZWRDb250ZXh0cyIsIm1hc3RlciIsImVuc3VyZU1hc3RlciIsImNhcHR1cmVEZXN0Iiwic291cmNlZEVsZW1lbnRzIiwibWFzdGVyQ3R4IiwibWFzdGVyUHJvY2Vzc29yIiwicHJvY2Vzc29yIiwiZSIsIkwiLCJSIiwib3V0IiwiaXBjUmVuZGVyZXIiLCJvcmlnQ3JlYXRlTUVTIiwiZWwiLCJvcmlnQ29ubmVjdCIsImRlc3QiLCJvdXRJZHgiLCJpbklkeCIsIm9yaWdQbGF5Il0sIm1hcHBpbmdzIjoid0ZBS08sSUFBTUEsQ0FBQUEsQ0FBcUIsYUFDckJDLENBQUFBLENBQXNCLGFBQUEsQ0NZbkMsR0FBSSxDQUFDLE9BQU8sdUJBQUEsQ0FBeUIsQ0FDbkMsTUFBQSxDQUFPLHVCQUFBLENBQTBCLEtBRWpDLElBQU1DLENBQUFBLENBQVUsTUFBQSxDQUFPLFlBQUEsRUFBZ0IsT0FBTyxrQkFBQSxDQUM5QyxHQUFJQSxDQUFBQSxDQUFTLENBb0RYLElBQVNDLENBQUFBLENBQVQsU0FBQSxHQUEwQ0MsQ0FBQUEsQ0FBaUIsQ0FDekQsSUFBTUMsQ0FBQUEsQ0FBTSxJQUFLSCxFQUFvRCxHQUFHRSxDQUFJLEVBQzVFLEdBQUksQ0FBQ0UsQ0FBQUEsQ0FBaUIsR0FBQSxDQUFJRCxDQUFHLENBQUEsQ0FBRyxDQUM5QkMsQ0FBQUEsQ0FBaUIsR0FBQSxDQUFJRCxDQUFHLENBQUEsQ0FDeEIsSUFBTUUsQ0FBQUEsQ0FBU0MsQ0FBQUEsR0FDVEMsQ0FBQUEsQ0FBY0osQ0FBQUEsQ0FBSSw0QkFBQSxFQUE2QixDQUNyREEsRUFBSSxtQkFBQSxDQUFzQkksQ0FBQUEsQ0FDMUJGLENBQUFB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QWVDLENBQUFBLENBQ2xCLG9CQUFBLEdBQXdCLE1BQUEsR0FDMUIsT0FBTyxrQkFBQSxDQUFxQkEsQ0FBQUEsQ0FBQUEsQ0FHOUIsSUFBTXNCLENBQUFBLENBQVcsaUJBQWlCLFNBQUEsQ0FBVSxJQUFBLENBQzVDLGlCQUFpQixTQUFBLENBQVUsSUFBQSxDQUFPLFVBQVksQ0FDNUMsT0FBSyxJQUFBLENBQUssZ0JBQUEsR0FDUixLQUFLLGdCQUFBLENBQW1CLElBQUEsQ0FFeEIsT0FBQSxDQUFRLE9BQUEsR0FBVSxJQUFBLENBQUssSUFBTSxDQUMzQixHQUFJLENBQUNmLENBQUFBLENBQWdCLEdBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRyxDQUM5QixJQUFNTCxDQUFBQSxDQUFNLElBQUtGLENBQUFBLENBQ2pCRSxDQUFBQSxDQUFJLHlCQUF5QixJQUFJLENBQUEsQ0FBRSxPQUFBLENBQVFBLENBQUFBLENBQUksV0FBVyxFQUM1RCxDQUNGLENBQUMsQ0FBQSxDQUFBLENBRUlvQixFQUFTLElBQUEsQ0FBSyxJQUFJLENBQzNCLEVBQ0YsQ0FDRiIsImZpbGUiOiJhdWRpb19wcmVsb2FkLmNqcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDMvMDIuXG5cbmltcG9ydCB0eXBlIHsgV2ViQ29udGVudHMgfSBmcm9tIFwiZWxlY3Ryb25cIjtcbmltcG9ydCB0eXBlIHsgRW5jb2RlclBpcGVsaW5lIH0gZnJvbSBcIi4uL2Jhc2UvZW5jb2Rlci9waXBlbGluZVwiO1xuXG5leHBvcnQgY29uc3QgQVVESU9fTUVUQV9DSEFOTkVMID0gXCJhdWRpby1tZXRhXCI7XG5leHBvcnQgY29uc3QgQVVESU9fQ0hVTktfQ0hBTk5FTCA9IFwiYXVkaW8tY2h1bmtcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBdWRpb0xpc3RlbmVyT3B0aW9ucyB7XG4gIHdjOiBXZWJDb250ZW50cztcbiAgZW5jb2RlcjogRW5jb2RlclBpcGVsaW5lO1xuICBnZXRWaWRlb1RpbWVNczogKCkgPT4gbnVtYmVyO1xuICBvbkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBBdWRpb0Rpc3Bvc2FsID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGF0dGFjaEF1ZGlvTGlzdGVuZXJzKHsgd2MsIGVuY29kZXIsIGdldFZpZGVvVGltZU1zLCBvbkVycm9yIH06IEF1ZGlvTGlzdGVuZXJPcHRpb25zKTogQXVkaW9EaXNwb3NhbCB7XG4gIGNvbnN0IG9uTWV0YSA9IGFzeW5jIChfZTogdW5rbm93biwgZGF0YTogeyBzYW1wbGVSYXRlOiBudW1iZXIgfSkgPT4ge1xuICAgIGNvbnN0IHNhbXBsZVJhdGUgPSBkYXRhLnNhbXBsZVJhdGU7XG4gICAgY29uc3Qgc3RhcnRNcyA9IGdldFZpZGVvVGltZU1zKCk7XG4gICAgZW5jb2Rlci5zZXR1cEF1ZGlvKHNhbXBsZVJhdGUpO1xuICAgIGNvbnN0IHNpbGVuY2VTYW1wbGVzID0gTWF0aC5jZWlsKChzdGFydE1zICogc2FtcGxlUmF0ZSkgLyAxMDAwKTtcbiAgICBpZiAoc2lsZW5jZVNhbXBsZXMgPD0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZW5jb2Rlci5lbmNvZGVBdWRpbyhCdWZmZXIuYWxsb2Moc2lsZW5jZVNhbXBsZXMgKiAyICogNCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvbkVycm9yKGVycm9yIGFzIEVycm9yKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25DaHVuayA9IGFzeW5jIChfZTogdW5rbm93biwgYnVmZmVyOiBCdWZmZXIpID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZW5jb2Rlci5lbmNvZGVBdWRpbyhidWZmZXIpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvbkVycm9yKGVycm9yIGFzIEVycm9yKTtcbiAgICB9XG4gIH07XG5cbiAgd2MuaXBjLm9uKEFVRElPX01FVEFfQ0hBTk5FTCwgb25NZXRhKTtcbiAgd2MuaXBjLm9uKEFVRElPX0NIVU5LX0NIQU5ORUwsIG9uQ2h1bmspO1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgd2MuaXBjLnJlbW92ZUxpc3RlbmVyKEFVRElPX01FVEFfQ0hBTk5FTCwgb25NZXRhKTtcbiAgICB3Yy5pcGMucmVtb3ZlTGlzdGVuZXIoQVVESU9fQ0hVTktfQ0hBTk5FTCwgb25DaHVuayk7XG4gIH07XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA0LzI4LlxuXG5pbXBvcnQgeyBpcGNSZW5kZXJlciB9IGZyb20gXCJlbGVjdHJvblwiO1xuaW1wb3J0IHsgQVVESU9fQ0hVTktfQ0hBTk5FTCwgQVVESU9fTUVUQV9DSEFOTkVMIH0gZnJvbSBcIi4uL3JlbmRlcmVyL2F1ZGlvXCI7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgX19wdXBfYXVkaW9fY2FwdHVyaW5nX18/OiBib29sZWFuO1xuICAgIHdlYmtpdEF1ZGlvQ29udGV4dD86IHR5cGVvZiBBdWRpb0NvbnRleHQ7XG4gIH1cbiAgaW50ZXJmYWNlIEF1ZGlvQ29udGV4dCB7XG4gICAgX19wdXBfY2FwdHVyZURlc3RfXz86IE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU7XG4gIH1cbiAgaW50ZXJmYWNlIEhUTUxNZWRpYUVsZW1lbnQge1xuICAgIF9fcHVwX2NhcHR1cmVkX18/OiBib29sZWFuO1xuICB9XG59XG5cbmlmICghd2luZG93Ll9fcHVwX2F1ZGlvX2NhcHR1cmluZ19fKSB7XG4gIHdpbmRvdy5fX3B1cF9hdWRpb19jYXB0dXJpbmdfXyA9IHRydWU7XG5cbiAgY29uc3QgT1JJR19BQyA9IHdpbmRvdy5BdWRpb0NvbnRleHQgfHwgd2luZG93LndlYmtpdEF1ZGlvQ29udGV4dDtcbiAgaWYgKE9SSUdfQUMpIHtcbiAgICBjb25zdCBjYXB0dXJlZENvbnRleHRzID0gbmV3IFdlYWtTZXQ8QXVkaW9Db250ZXh0PigpO1xuICAgIGNvbnN0IHNvdXJjZWRFbGVtZW50cyA9IG5ldyBXZWFrU2V0PEhUTUxNZWRpYUVsZW1lbnQ+KCk7XG5cbiAgICBsZXQgbWFzdGVyQ3R4OiBBdWRpb0NvbnRleHQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG1hc3RlclByb2Nlc3NvcjogU2NyaXB0UHJvY2Vzc29yTm9kZSB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGVuc3VyZU1hc3RlciA9ICgpOiB7IGN0eDogQXVkaW9Db250ZXh0OyBwcm9jZXNzb3I6IFNjcmlwdFByb2Nlc3Nvck5vZGUgfSA9PiB7XG4gICAgICBpZiAobWFzdGVyQ3R4ICYmIG1hc3RlclByb2Nlc3Nvcikge1xuICAgICAgICByZXR1cm4geyBjdHg6IG1hc3RlckN0eCwgcHJvY2Vzc29yOiBtYXN0ZXJQcm9jZXNzb3IgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN0eCA9IG5ldyBPUklHX0FDKCk7XG4gICAgICBjb25zdCBwcm9jZXNzb3IgPSBjdHguY3JlYXRlU2NyaXB0UHJvY2Vzc29yKDQwOTYsIDIsIDIpO1xuICAgICAgcHJvY2Vzc29yLm9uYXVkaW9wcm9jZXNzID0gKGU6IEF1ZGlvUHJvY2Vzc2luZ0V2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IEwgPSBlLmlucHV0QnVmZmVyLmdldENoYW5uZWxEYXRhKDApO1xuICAgICAgICBjb25zdCBSID0gZS5pbnB1dEJ1ZmZlci5nZXRDaGFubmVsRGF0YSgxKTtcbiAgICAgICAgY29uc3Qgb3V0ID0gbmV3IEZsb2F0MzJBcnJheShMLmxlbmd0aCAqIDIpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IEwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBvdXRbaSAqIDJdID0gTFtpXSA/PyAwO1xuICAgICAgICAgIG91dFtpICogMiArIDFdID0gUltpXSA/PyAwO1xuICAgICAgICB9XG4gICAgICAgIGlwY1JlbmRlcmVyLnNlbmQoQVVESU9fQ0hVTktfQ0hBTk5FTCwgQnVmZmVyLmZyb20ob3V0LmJ1ZmZlcikpO1xuICAgICAgfTtcbiAgICAgIHByb2Nlc3Nvci5jb25uZWN0KGN0eC5kZXN0aW5hdGlvbik7XG4gICAgICBpcGNSZW5kZXJlci5zZW5kKEFVRElPX01FVEFfQ0hBTk5FTCwgeyBzYW1wbGVSYXRlOiBjdHguc2FtcGxlUmF0ZSB9KTtcbiAgICAgIHZvaWQgY3R4LnJlc3VtZSgpO1xuICAgICAgbWFzdGVyQ3R4ID0gY3R4O1xuICAgICAgbWFzdGVyUHJvY2Vzc29yID0gcHJvY2Vzc29yO1xuICAgICAgcmV0dXJuIHsgY3R4LCBwcm9jZXNzb3IgfTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb3JpZ0NyZWF0ZU1FUyA9IEF1ZGlvQ29udGV4dC5wcm90b3R5cGUuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlO1xuICAgIEF1ZGlvQ29udGV4dC5wcm90b3R5cGUuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlID0gZnVuY3Rpb24gKGVsKSB7XG4gICAgICBzb3VyY2VkRWxlbWVudHMuYWRkKGVsKTtcbiAgICAgIHJldHVybiBvcmlnQ3JlYXRlTUVTLmNhbGwodGhpcywgZWwpO1xuICAgIH07XG5cbiAgICBjb25zdCBvcmlnQ29ubmVjdCA9IEF1ZGlvTm9kZS5wcm90b3R5cGUuY29ubmVjdCBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBBdWRpb05vZGU7XG4gICAgQXVkaW9Ob2RlLnByb3RvdHlwZS5jb25uZWN0ID0gZnVuY3Rpb24gKFxuICAgICAgdGhpczogQXVkaW9Ob2RlLFxuICAgICAgZGVzdDogQXVkaW9Ob2RlIHwgQXVkaW9QYXJhbSxcbiAgICAgIG91dElkeD86IG51bWJlcixcbiAgICAgIGluSWR4PzogbnVtYmVyLFxuICAgICkge1xuICAgICAgY29uc3QgY3R4ID0gKGRlc3QgYXMgQXVkaW9Ob2RlKS5jb250ZXh0IGFzIEF1ZGlvQ29udGV4dCB8IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGNhcHR1cmVEZXN0ID0gY3R4Py5fX3B1cF9jYXB0dXJlRGVzdF9fO1xuICAgICAgaWYgKGNhcHR1cmVEZXN0ICYmIGN0eCAmJiBkZXN0ID09PSBjdHguZGVzdGluYXRpb24gJiYgdGhpcyAhPT0gY2FwdHVyZURlc3QpIHtcbiAgICAgICAgb3JpZ0Nvbm5lY3QuY2FsbCh0aGlzLCBjYXB0dXJlRGVzdCwgb3V0SWR4LCBpbklkeCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3JpZ0Nvbm5lY3QuY2FsbCh0aGlzLCBkZXN0LCBvdXRJZHgsIGluSWR4KTtcbiAgICB9IGFzIHR5cGVvZiBBdWRpb05vZGUucHJvdG90eXBlLmNvbm5lY3Q7XG5cbiAgICBmdW5jdGlvbiBQYXRjaGVkQUModGhpczogQXVkaW9Db250ZXh0LCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGNvbnN0IGN0eCA9IG5ldyAoT1JJR19BQyBhcyB7IG5ldyAoLi4uYTogdW5rbm93bltdKTogQXVkaW9Db250ZXh0IH0pKC4uLmFyZ3MpO1xuICAgICAgaWYgKCFjYXB0dXJlZENvbnRleHRzLmhhcyhjdHgpKSB7XG4gICAgICAgIGNhcHR1cmVkQ29udGV4dHMuYWRkKGN0eCk7XG4gICAgICAgIGNvbnN0IG1hc3RlciA9IGVuc3VyZU1hc3RlcigpO1xuICAgICAgICBjb25zdCBjYXB0dXJlRGVzdCA9IGN0eC5jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7XG4gICAgICAgIGN0eC5fX3B1cF9jYXB0dXJlRGVzdF9fID0gY2FwdHVyZURlc3Q7XG4gICAgICAgIG1hc3Rlci5jdHguY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoY2FwdHVyZURlc3Quc3RyZWFtKS5jb25uZWN0KG1hc3Rlci5wcm9jZXNzb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGN0eDtcbiAgICB9XG4gICAgUGF0Y2hlZEFDLnByb3RvdHlwZSA9IE9SSUdfQUMucHJvdG90eXBlO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihQYXRjaGVkQUMsIE9SSUdfQUMpO1xuICAgIHdpbmRvdy5BdWRpb0NvbnRleHQgPSBQYXRjaGVkQUMgYXMgdW5rbm93biBhcyB0eXBlb2YgQXVkaW9Db250ZXh0O1xuICAgIGlmIChcIndlYmtpdEF1ZGlvQ29udGV4dFwiIGluIHdpbmRvdykge1xuICAgICAgd2luZG93LndlYmtpdEF1ZGlvQ29udGV4dCA9IFBhdGNoZWRBQyBhcyB1bmtub3duIGFzIHR5cGVvZiBBdWRpb0NvbnRleHQ7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ1BsYXkgPSBIVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZS5wbGF5O1xuICAgIEhUTUxNZWRpYUVsZW1lbnQucHJvdG90eXBlLnBsYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXRoaXMuX19wdXBfY2FwdHVyZWRfXykge1xuICAgICAgICB0aGlzLl9fcHVwX2NhcHR1cmVkX18gPSB0cnVlO1xuXG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGlmICghc291cmNlZEVsZW1lbnRzLmhhcyh0aGlzKSkge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gbmV3IChQYXRjaGVkQUMgYXMgdW5rbm93biBhcyB0eXBlb2YgQXVkaW9Db250ZXh0KSgpO1xuICAgICAgICAgICAgY3R4LmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZSh0aGlzKS5jb25uZWN0KGN0eC5kZXN0aW5hdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcmlnUGxheS5jYWxsKHRoaXMpO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- 'use strict';require('source-map-support/register.js');function o(){window.__HF_MODE__="export";}window.self!==window.top&&o();//# sourceMappingURL=render_preload.cjs.map
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lL2hmX2hvb2sudHMiLCIuLi8uLi9zcmMvcnVudGltZS9yZW5kZXJfcHJlbG9hZC50cyJdLCJuYW1lcyI6WyJpbnN0YWxsSGZIb29rIl0sIm1hcHBpbmdzIjoidURBUU8sU0FBU0EsQ0FBQUEsRUFBZ0IsQ0FDOUIsTUFBQSxDQUFPLFdBQUEsQ0FBYyxTQUN2QixDQ05JLE1BQUEsQ0FBTyxJQUFBLEdBQVMsTUFBQSxDQUFPLEdBQUEsRUFDekJBLENBQUFBLEVBQWMiLCJmaWxlIjoicmVuZGVyX3ByZWxvYWQuY2pzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNy8xNi5cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX0hGX01PREVfXz86IHN0cmluZztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbEhmSG9vaygpIHtcbiAgd2luZG93Ll9fSEZfTU9ERV9fID0gXCJleHBvcnRcIjtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDUvMjYuXG5cbmltcG9ydCB7IGluc3RhbGxIZkhvb2sgfSBmcm9tIFwiLi9oZl9ob29rXCI7XG5cbmlmICh3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcCkge1xuICBpbnN0YWxsSGZIb29rKCk7XG59XG4iXX0=
@@ -1,3 +0,0 @@
1
- 'use strict';require('source-map-support/register.js');function k(n){queueMicrotask(()=>{Object.defineProperty(n,"error",{configurable:true,value:{code:4,message:"audio disabled in deterministic mode"}}),n.dispatchEvent(new Event("error"));});}function G(n){let t=document.createElement("audio");return t.preload="none",n&&(t.src=n,k(t)),t}function O(){let n=window.Audio;window.Audio=G,window.Audio.prototype=n.prototype;let t=HTMLAudioElement.prototype;t.load=function(){k(this);},t.play=function(){return k(this),Promise.reject(new DOMException("audio disabled in deterministic mode","NotSupportedError"))};}function C(){window.__HF_MODE__="export";}function F(){if(window.__pup_tick__)return;let n=Date,t=n.now(),e=0,r=0,a=[],o={},i=1,f=()=>(r+=.01,r);function m(...c){return this instanceof m?c.length?new(Function.prototype.bind.apply(n,[null,...c])):new n(t+e+f()):new n(t+e).toString()}m.prototype=n.prototype,m.now=()=>t+e+f(),m.parse=n.parse,m.UTC=n.UTC,window.Date=m,performance.now=()=>e+f(),window.requestAnimationFrame=c=>{let u=i++;return a.push({id:u,cb:c}),u},window.cancelAnimationFrame=c=>{a=a.filter(u=>u.id!==c);},window.setTimeout=(c,u)=>{let d=i++;return o[d]={type:"timeout",cb:c,delay:u||0,next:e+(u||0)},d},window.clearTimeout=c=>{typeof c=="number"&&delete o[c];},window.setInterval=(c,u)=>{let d=i++,h=Math.max(u||0,1);return o[d]={type:"interval",cb:c,delay:h,next:e+h},d},window.clearInterval=c=>{typeof c=="number"&&delete o[c];};function g(c){try{typeof c=="string"?new Function(c)():c();}catch(u){console.error("[Tick] error:",u instanceof Error&&u.stack||u);}}function p(c,u){try{c(u);}catch(d){console.error("[Tick] error:",d instanceof Error&&d.stack||d);}}let b=new WeakMap;function w(c){try{let u=c.effect?.getComputedTiming().endTime;return typeof u=="number"&&Number.isFinite(u)?u:void 0}catch{return}}function y(c){let u;try{u=document.getAnimations();}catch{return}for(let d of u){let h=d.playState;if(h==="idle"||h==="finished"){b.delete(d);continue}let M=typeof d.playbackRate=="number"?d.playbackRate:1;if(M===0)continue;let T=b.get(d);if(T){if(!T.adopted&&h!=="paused"){let v=typeof d.currentTime=="number"?d.currentTime:0;T.startMs=c-v/M,T.adopted=true;try{d.pause();}catch{}}}else {let v=typeof d.currentTime=="number"?d.currentTime:0;if(T={startMs:c-v/M,adopted:h!=="paused"},b.set(d,T),T.adopted)try{d.pause();}catch{}}if(!T.adopted)continue;let H=(c-T.startMs)*M,L=w(d);if(M>0?L!==void 0&&H>=L:H<=0){b.delete(d);try{d.finish();}catch{}continue}d.currentTime=H;}}function s(c){e=c,r=0;for(let d of Object.keys(o)){let h=o[Number(d)];if(h)for(;h.next<=e;){if(g(h.cb),h.type==="timeout"){delete o[Number(d)];break}h.next+=h.delay;}}let u=a.splice(0);for(let d of u)p(d.cb,e);y(e);}window.__pup_tick__={process:s};}var K=["borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","transform","transformOrigin","filter","clipPath","boxShadow","opacity","mixBlendMode","mask","zIndex","position","left","top","right","bottom"];function D(n){return n.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function R(n,t){let e=window.getComputedStyle(n);t.style.position="absolute",t.style.left=`${n.offsetLeft}px`,t.style.top=`${n.offsetTop}px`,t.style.width=`${n.offsetWidth}px`,t.style.height=`${n.offsetHeight}px`;for(let m of K){if(m==="position"||m==="left"||m==="top"||m==="right"||m==="bottom")continue;let g=e.getPropertyValue(D(m));g&&t.style.setProperty(D(m),g);}let r=n.getBoundingClientRect(),a=window.devicePixelRatio||1,o=Math.max(1,Math.round(r.width*a)),i=Math.max(1,Math.round(r.height*a)),f=false;return t.width!==o&&(t.width=o,f=true),t.height!==i&&(t.height=i,f=true),f}function P(n,t){let e=document.createElement("canvas");if(e.dataset.pupVideoOverlay="1",e.style.pointerEvents="none",n.style.visibility="hidden",n.muted=true,(n.parentNode||document.body).insertBefore(e,n.nextSibling),R(n,e),t)try{e.getContext("2d").drawImage(t,0,0,e.width,e.height);}catch{}return e}function I(n,t,e,r,a){if(a==="none")return [(e-n)/2,(r-t)/2,n,t];if(a==="contain"||a==="scale-down"){let o=Math.min(e/n,r/t),i=a==="scale-down"?Math.min(1,o):o,f=i*n,m=i*t;return [(e-f)/2,(r-m)/2,f,m]}if(a==="cover"){let o=Math.max(e/n,r/t),i=o*n,f=o*t;return [(e-i)/2,(r-f)/2,i,f]}return [0,0,e,r]}var V="pup-frame://";var N="[VideoHook]";function _(n){return {length:n>0?1:0,start:()=>0,end:()=>n}}function l(n,t){n.dispatchEvent(new Event(t));}function Q(n){if(n.rvfc.size===0)return;let t=[...n.rvfc.values()];n.rvfc.clear();let e=performance.now(),r={presentationTime:e,expectedDisplayTime:e,width:n.meta.frameWidth,height:n.meta.frameHeight,mediaTime:n.currentTime,presentedFrames:n.presentedFrames};for(let a of t)a(e,r);}async function z(n,t,e,r){let a=n.cache.cacheOf(e.meta.id);a.readers.set(e,r);let o=a.bitmaps.get(r);if(!o){n.cache.prefetch(e,r+1,9);let m=await n.cache.fetch(e,r);if(n.sessions.get(t)!==e)return;if(!m){!e.paused&&!e.waiting&&(e.waiting=true,l(t,"waiting"));return}o=m;}e.waiting&&(e.waiting=false,e.paused||l(t,"playing"));let i=e.cv,f=I(o.width,o.height,i.width,i.height,e.objectFit);e.ctx.clearRect(0,0,i.width,i.height),e.ctx.drawImage(o,f[0],f[1],f[2],f[3]),e.lastDrawnIdx=r,e.presentedFrames++,Q(e),n.cache.prefetch(e,r+1,10),n.cache.evict(a);}function $(n,t){let e=Math.max(0,t-n.currMs)/1e3;n.currMs=t;let r=[];return document.querySelectorAll("video").forEach(a=>{let o=a,i=n.sessions.get(o);if(!i||i.dead||(R(o,i.cv)&&(i.lastDrawnIdx=-1),!i.meta))return;if(i.meta.frameWidth<i.meta.width&&i.cv.width>i.meta.frameWidth*1.05&&!n.attaching.has(o)){n.reattach(o,i);return}!i.paused&&!i.ended&&(i.currentTime+=e*(o.playbackRate||1),i.maxReached=Math.max(i.maxReached,i.currentTime),i.currentTime>=i.meta.duration?o.loop?i.currentTime=i.currentTime%i.meta.duration:(i.currentTime=i.meta.duration,i.paused=true,i.ended=true,l(o,"ended")):l(o,"timeupdate"));let f=Math.max(1,Math.round(i.currentTime*i.meta.fps));f!==i.lastDrawnIdx&&r.push(z(n,o,i,f));}),Promise.all(r)}var x=class{_caches=new Map;cacheOf(t){let e=this._caches.get(t);return e||(e={bitmaps:new Map,inFlight:new Map,readers:new Map},this._caches.set(t,e)),e}fetch(t,e){let r=t.meta;if(!r)return Promise.resolve(void 0);let a=this.cacheOf(r.id),o=a.inFlight.get(e);if(o)return o;let i=a.bitmaps.get(e);if(i)return Promise.resolve(i);let f=r.frameWidth,m=r.frameHeight,g=fetch(`${V}frame?id=${r.id}&idx=${e}`).then(p=>p.ok?p.arrayBuffer():void 0).then(p=>p&&p.byteLength===f*m*4?createImageBitmap(new ImageData(new Uint8ClampedArray(p),f,m)):void 0).then(p=>(a.inFlight.delete(e),p&&a.bitmaps.set(e,p),p)).catch(()=>{a.inFlight.delete(e);});return a.inFlight.set(e,g),g}prefetch(t,e,r){let a=t.meta;if(!a)return;let o=Math.max(1,Math.round(a.duration*a.fps));for(let i=e;i<e+r;i++)i<1||i>o||this.fetch(t,i);}evict(t){let e=1/0;if(t.readers.forEach(a=>{a<e&&(e=a);}),!Number.isFinite(e))return;let r=e-2;t.bitmaps.forEach((a,o)=>{o<r&&(a.close(),t.bitmaps.delete(o));});}release(t,e){let r=this._caches.get(t);r&&(r.readers.delete(e),!(r.readers.size>0)&&(r.bitmaps.forEach(a=>{a.close();}),this._caches.delete(t),fetch(`${V}close?id=${t}`,{keepalive:true})));}};function j(n){let t=HTMLVideoElement.prototype,e=HTMLMediaElement.prototype,r=s=>Object.getOwnPropertyDescriptor(t,s)||Object.getOwnPropertyDescriptor(e,s),a=r("currentTime"),o=r("src"),i=r("playbackRate"),f=t.pause,m=t.requestVideoFrameCallback,g=t.cancelVideoFrameCallback,p=t.getVideoPlaybackQuality,b=t.load,w=n.sessions,y=(s,c)=>{let u=r(s)?.get;if(!u)throw new Error(`media_shim: no native getter for ${s}`);Object.defineProperty(t,s,{configurable:true,get(){let d=w.get(this);return d?c(d):u.call(this)}});};if(y("paused",s=>s.paused),y("ended",s=>s.ended),y("readyState",s=>s.readyState),y("networkState",s=>s.networkState),y("error",s=>s.error??null),y("seeking",s=>s.seeking),y("buffered",s=>_(s.meta?s.meta.duration:0)),y("seekable",s=>_(s.meta?s.meta.duration:0)),y("played",s=>_(s.maxReached)),t.play=function(){let s=w.get(this);return s?(n.resume(this,s),Promise.resolve()):n.attach(this).then(c=>{c&&n.resume(this,c);})},t.pause=function(){let s=w.get(this);if(!s){f.call(this);return}s.paused||(s.paused=true,l(this,"pause"));},a?.get&&a.set){let s=a.get,c=a.set;Object.defineProperty(t,"currentTime",{configurable:true,get(){let u=w.get(this);return u?u.currentTime:s.call(this)},set(u){let d=w.get(this);if(!d){c.call(this,u);return}let h=d.meta?d.meta.duration:u;d.currentTime=Math.max(0,Math.min(u,h)),d.maxReached=Math.max(d.maxReached,d.currentTime),d.currentTime<h&&(d.ended=false),d.seeking=true,l(this,"seeking"),d.seeking=false,l(this,"seeked"),l(this,"timeupdate");}});}if(i?.set){let s=i.set;Object.defineProperty(t,"playbackRate",{configurable:true,get:i.get,set(c){s.call(this,c),w.has(this)&&l(this,"ratechange");}});}if(t.requestVideoFrameCallback=function(s){let c=w.get(this);if(!c)return m.call(this,s);let u=++n.rvfcSeq;return c.rvfc.set(u,s),u},t.cancelVideoFrameCallback=function(s){let c=w.get(this);if(!c){g.call(this,s);return}c.rvfc.delete(s);},t.getVideoPlaybackQuality=function(){let s=w.get(this);return s?{creationTime:performance.now(),totalVideoFrames:s.presentedFrames,droppedVideoFrames:0,corruptedVideoFrames:0}:p.call(this)},t.load=function(){if(!w.has(this))return b.call(this);n.detach(this),l(this,"emptied"),this.__pupLastSrc=void 0,n.attach(this);},o?.set){let s=o.set;Object.defineProperty(t,"src",{configurable:true,get:o.get,set(c){s.call(this,c),n.onSrcChange(this);}});}}function q(n,t){return {meta:void 0,cv:t,ctx:t.getContext("2d"),paused:!(n.autoplay||!n.paused),currentTime:0,ended:false,lastDrawnIdx:-1,dead:false,objectFit:window.getComputedStyle(n).objectFit||"fill",readyState:0,networkState:0,seeking:false,waiting:false,error:void 0,presentedFrames:0,maxReached:0,rvfc:new Map}}function W(n,t,e){t.dead=true,t.error=e,t.networkState=3,console.error(N,`${e.message} src=${n.src||n.currentSrc}`),l(n,"error");}async function B(n,t){let{video:e,state:r,src:a,birthMs:o,native:i}=t,f=Number.parseInt(e.dataset.pupFps||"30",10);r.networkState=2,l(e,"loadstart");let m;try{let b=i?"":`&w=${r.cv.width}&h=${r.cv.height}&fit=${encodeURIComponent(r.objectFit)}`;m=await fetch(`${V}open?src=${encodeURIComponent(a)}&fps=${f}${b}`);}catch(b){return W(e,r,{code:2,message:`open failed: ${b instanceof Error?b.message:String(b)}`})}if(n.sessions.get(e)!==r)return;if(!m.ok)return W(e,r,{code:3,message:`open ${m.status}: ${await m.text()}`});let g=await m.json();if(n.sessions.get(e)!==r)return;r.meta=g,r.currentTime=r.paused?0:Math.max(0,(n.currMs-o)/1e3);let p=e.videoWidth>0;return Object.defineProperty(e,"videoWidth",{value:g.width,configurable:true}),Object.defineProperty(e,"videoHeight",{value:g.height,configurable:true}),Object.defineProperty(e,"duration",{value:g.duration,configurable:true}),r.readyState=1,p||(l(e,"durationchange"),l(e,"loadedmetadata")),r.readyState=4,p||(l(e,"loadeddata"),l(e,"canplay"),l(e,"canplaythrough")),r.networkState=1,p||(l(e,"suspend"),r.paused||(l(e,"play"),l(e,"playing"))),n.cache.prefetch(r,1,10),r}var A=class{sessions=new WeakMap;attaching=new WeakMap;opening=new Set;cache=new x;rvfcSeq=0;currMs=0;_lastSnapshot=new WeakMap;install(){j(this),this.scan(document.documentElement),new MutationObserver(t=>{for(let e of t){if(e.type==="attributes"&&e.target instanceof HTMLVideoElement&&e.attributeName==="src"){this.onSrcChange(e.target);continue}e.addedNodes.forEach(r=>{r instanceof Element&&this.scan(r);}),e.removedNodes.forEach(r=>{r instanceof HTMLVideoElement&&this.detach(r);});}}).observe(document,{subtree:true,childList:true,attributes:true,attributeFilter:["src"]}),window.__pup_video__={advance:t=>$(this,t),ready:()=>this.ready()};}attach(t,e=false){let r=this.sessions.get(t);if(r)return Promise.resolve(r);let a=this.attaching.get(t);if(a)return a;let o=t.src||t.currentSrc;if(!o||/^(blob:|data:|mediastream:)/i.test(o))return Promise.resolve(void 0);let i=P(t,this._lastSnapshot.get(t)),f=q(t,i);this.sessions.set(t,f);let m=B(this,{video:t,state:f,src:o,birthMs:this.currMs,native:e}).finally(()=>{this.attaching.delete(t),this.opening.delete(m);});return this.attaching.set(t,m),this.opening.add(m),m}async ready(){await Promise.allSettled([...this.opening]);}resume(t,e){!e.paused&&!e.ended||(e.paused=false,e.ended=false,l(t,"play"),l(t,"playing"));}detach(t){let e=this.sessions.get(t);if(e){if(e.meta){if(e.lastDrawnIdx>=0)try{let r=new OffscreenCanvas(e.cv.width,e.cv.height),a=r.getContext("2d");if(!a)throw new Error("no 2d context");a.drawImage(e.cv,0,0),this._lastSnapshot.set(t,r);}catch{}this.cache.release(e.meta.id,e);}e.cv.remove(),this.sessions.delete(t),this.attaching.delete(t);}}onSrcChange(t){let e=t.src||t.currentSrc||"";t.__pupLastSrc!==e&&(t.__pupLastSrc=e,this.sessions.has(t)&&this.detach(t),this.attach(t));}reattach(t,e){let r=e.currentTime,a=e.paused,o=e.ended;this.detach(t),this.attach(t,true).then(i=>{i&&(i.currentTime=r,i.paused=a,i.ended=o);});}scan(t){t&&(t.tagName==="VIDEO"&&this.attach(t),t.querySelectorAll&&t.querySelectorAll("video").forEach(e=>{this.attach(e);}));}};function U(){window.__pup_video__||new A().install();}window.self!==window.top&&(O(),C(),F(),U());
2
- //# sourceMappingURL=shoot_preload.cjs.map
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lL2F1ZGlvX3NoaW0udHMiLCIuLi8uLi9zcmMvcnVudGltZS9oZl9ob29rLnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvdGlja19ob29rLnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvdmlkZW8vb3ZlcmxheS50cyIsIi4uLy4uL3NyYy9ydW50aW1lL3ZpZGVvL3R5cGVzLnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvdmlkZW8vZHJpdmVyLnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvdmlkZW8vZnJhbWVfY2FjaGUudHMiLCIuLi8uLi9zcmMvcnVudGltZS92aWRlby9tZWRpYV9zaGltLnRzIiwiLi4vLi4vc3JjL3J1bnRpbWUvdmlkZW8vc2Vzc2lvbi50cyIsIi4uLy4uL3NyYy9ydW50aW1lL3ZpZGVvL2hvb2sudHMiLCIuLi8uLi9zcmMvcnVudGltZS9zaG9vdF9wcmVsb2FkLnRzIl0sIm5hbWVzIjpbImZhaWwiLCJlbCIsIkF1ZGlvU2hpbSIsInVybCIsImluc3RhbGxBdWRpb1NoaW0iLCJOYXRpdmVBdWRpbyIsIkhBRSIsImluc3RhbGxIZkhvb2siLCJpbnN0YWxsVGlja0hvb2siLCJSRUFMX0RBVEUiLCJkYXRlT3JpZ2luIiwiY3Vyck1zIiwidGltZU9mZnNldCIsInJhZlF1ZXVlIiwidGltZXJzIiwibmV4dElkIiwidGljayIsIkZha2VEYXRlIiwiYXJncyIsImNiIiwiaWQiLCJyIiwiZGVsYXkiLCJkIiwic2FmZUludm9rZVRpbWVyIiwiZm4iLCJlIiwic2FmZUludm9rZVJhZiIsInRzIiwiYW5pbVN0YXRlIiwiZW5kQm91bmRhcnkiLCJhIiwidCIsInN5bmNBbmltYXRpb25zIiwibXMiLCJhbmltcyIsInN0YXRlIiwicmF0ZSIsInMiLCJjdCIsImN0MCIsInRhcmdldCIsImVuZCIsInByb2Nlc3MiLCJ0aW1lc3RhbXBNcyIsInJhZnMiLCJNSVJST1JfUFJPUFMiLCJjc3NDYXNlIiwiYyIsInN5bmNPdmVybGF5IiwidmlkZW8iLCJjdiIsImNzIiwicCIsInYiLCJ2ciIsImRwciIsInciLCJoIiwicmVzaXplZCIsInNldHVwQ2FudmFzIiwic25hcCIsImZpdFJlY3QiLCJzcmNXIiwic3JjSCIsImRzdFciLCJkc3RIIiwiZml0Iiwic2MiLCJrIiwid3MiLCJocyIsInNjMiIsIndzMiIsImhzMiIsIlNDSEVNRSIsIlRBRyIsInRpbWVSYW5nZXMiLCJmaXJlIiwidHlwZSIsImZpcmVGcmFtZUNhbGxiYWNrcyIsImNicyIsIm5vdyIsIm1ldGEiLCJwYWludCIsImhvb2siLCJpZHgiLCJibSIsImZldGNoZWQiLCJhZHZhbmNlIiwiZHQiLCJwcyIsIkZyYW1lQ2FjaGUiLCJleGlzdGluZyIsImNhY2hlZCIsImJ1ZiIsImZyb21JZHgiLCJjb3VudCIsIm1heElkeCIsIm1pbklkeCIsImZsb29yIiwiaW5zdGFsbE1lZGlhU2hpbSIsIkhWRSIsIk1FRElBIiwibWRlc2MiLCJjdERlc2MiLCJzcmNEZXNjIiwicmF0ZURlc2MiLCJvcmlnUGF1c2UiLCJvcmlnUlZGQyIsIm9yaWdDYW5jZWxSVkZDIiwib3JpZ1F1YWxpdHkiLCJvcmlnTG9hZCIsInNlc3Npb25zIiwiZGVmIiwicHJvcCIsInBpY2siLCJuYXRpdmVHZXQiLCJucyIsImN0R2V0IiwiY3RTZXQiLCJkdXIiLCJyYXRlU2V0Iiwic3JjU2V0IiwibmV3VmlkZW9TdGF0ZSIsImZhaWxPcGVuIiwiZXJyb3IiLCJvcGVuU2Vzc2lvbiIsInNyYyIsImJpcnRoTXMiLCJuYXRpdmUiLCJmcHMiLCJyZXMiLCJxIiwibmF0aXZlTWV0YSIsIlZpZGVvSG9vayIsIm11dHMiLCJtIiwibiIsInBlbmRpbmciLCJzY3R4IiwicGF1c2VkIiwiZW5kZWQiLCJyb290IiwiaW5zdGFsbFZpZGVvSG9vayJdLCJtYXBwaW5ncyI6InVEQUtBLFNBQVNBLENBQUFBLENBQUtDLEVBQTRCLENBQ3hDLGNBQUEsQ0FBZSxJQUFNLENBQ25CLE1BQUEsQ0FBTyxlQUFlQSxDQUFBQSxDQUFJLE9BQUEsQ0FBUyxDQUNqQyxZQUFB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QUFBIiwiZmlsZSI6InNob290X3ByZWxvYWQuY2pzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLWQgY2FwdHVyZXMgbm8gYXVkaW87IGEgbG9hZGluZyA8YXVkaW8+IHdvdWxkIGhpdCB0aGUgbWVkaWHihpJzdHViIHJlZGlyZWN0LCB3aGljaCBzZXJ2ZXMgdmlkZW8gc3R1YnMgb25seS5cblxuY29uc3QgU1JDX05PVF9TVVBQT1JURUQgPSA0OyAvLyBNRURJQV9FUlJfU1JDX05PVF9TVVBQT1JURURcblxuLy8gTWlycm9yIGEgZmFpbGVkIG5hdGl2ZSBsb2FkIHNvIGVycm9yLWhhbmRsaW5nIHBhZ2VzIHByb2NlZWQgZXhhY3RseSBhcyB0aGV5IGRvIHdoZW4gdGhlIHNvdXJjZSBpcyBicm9rZW4uXG5mdW5jdGlvbiBmYWlsKGVsOiBIVE1MQXVkaW9FbGVtZW50KTogdm9pZCB7XG4gIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWwsIFwiZXJyb3JcIiwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IHsgY29kZTogU1JDX05PVF9TVVBQT1JURUQsIG1lc3NhZ2U6IFwiYXVkaW8gZGlzYWJsZWQgaW4gZGV0ZXJtaW5pc3RpYyBtb2RlXCIgfSxcbiAgICB9KTtcbiAgICBlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChcImVycm9yXCIpKTtcbiAgfSk7XG59XG5cbi8vIFRoZSBuYXRpdmUgQXVkaW8oKSBjb25zdHJ1Y3RvciBpbnZva2VzIHRoZSBsb2FkIGFsZ29yaXRobSBpbnRlcm5hbGx5LCBzbyBvbmx5IGEgY29uc3RydWN0b3Igc3dhcCBjYW4gcHJlZW1wdCB0aGUgZmV0Y2guXG5mdW5jdGlvbiBBdWRpb1NoaW0odXJsPzogc3RyaW5nKTogSFRNTEF1ZGlvRWxlbWVudCB7XG4gIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImF1ZGlvXCIpO1xuICBlbC5wcmVsb2FkID0gXCJub25lXCI7XG4gIGlmICh1cmwpIHtcbiAgICBlbC5zcmMgPSB1cmw7XG4gICAgZmFpbChlbCk7XG4gIH1cbiAgcmV0dXJuIGVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbEF1ZGlvU2hpbSgpOiB2b2lkIHtcbiAgY29uc3QgTmF0aXZlQXVkaW8gPSB3aW5kb3cuQXVkaW87XG4gIHdpbmRvdy5BdWRpbyA9IEF1ZGlvU2hpbSBhcyB1bmtub3duIGFzIHR5cGVvZiBBdWRpbztcbiAgd2luZG93LkF1ZGlvLnByb3RvdHlwZSA9IE5hdGl2ZUF1ZGlvLnByb3RvdHlwZTtcblxuICBjb25zdCBIQUUgPSBIVE1MQXVkaW9FbGVtZW50LnByb3RvdHlwZTtcbiAgSEFFLmxvYWQgPSBmdW5jdGlvbiAodGhpczogSFRNTEF1ZGlvRWxlbWVudCkge1xuICAgIGZhaWwodGhpcyk7XG4gIH07XG4gIEhBRS5wbGF5ID0gZnVuY3Rpb24gKHRoaXM6IEhUTUxBdWRpb0VsZW1lbnQpIHtcbiAgICBmYWlsKHRoaXMpO1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRE9NRXhjZXB0aW9uKFwiYXVkaW8gZGlzYWJsZWQgaW4gZGV0ZXJtaW5pc3RpYyBtb2RlXCIsIFwiTm90U3VwcG9ydGVkRXJyb3JcIikpO1xuICB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNy8xNi5cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX0hGX01PREVfXz86IHN0cmluZztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbEhmSG9vaygpIHtcbiAgd2luZG93Ll9fSEZfTU9ERV9fID0gXCJleHBvcnRcIjtcbn1cbiIsImRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgX19wdXBfdGlja19fPzogeyBwcm9jZXNzOiAobXM6IG51bWJlcikgPT4gdm9pZCB9O1xuICB9XG59XG5cbmludGVyZmFjZSBUaW1lciB7XG4gIHR5cGU6IFwidGltZW91dFwiIHwgXCJpbnRlcnZhbFwiO1xuICBjYjogVGltZXJIYW5kbGVyO1xuICBkZWxheTogbnVtYmVyO1xuICBuZXh0OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBSYWZFbnRyeSB7XG4gIGlkOiBudW1iZXI7XG4gIGNiOiBGcmFtZVJlcXVlc3RDYWxsYmFjaztcbn1cblxuaW50ZXJmYWNlIEFuaW1FbnRyeSB7XG4gIHN0YXJ0TXM6IG51bWJlcjtcbiAgYWRvcHRlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxUaWNrSG9vaygpOiB2b2lkIHtcbiAgaWYgKHdpbmRvdy5fX3B1cF90aWNrX18pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBSRUFMX0RBVEUgPSBEYXRlO1xuICBjb25zdCBkYXRlT3JpZ2luID0gUkVBTF9EQVRFLm5vdygpO1xuICBsZXQgY3Vyck1zID0gMDtcbiAgbGV0IHRpbWVPZmZzZXQgPSAwO1xuICBsZXQgcmFmUXVldWU6IFJhZkVudHJ5W10gPSBbXTtcbiAgY29uc3QgdGltZXJzOiBSZWNvcmQ8bnVtYmVyLCBUaW1lciB8IHVuZGVmaW5lZD4gPSB7fTtcbiAgbGV0IG5leHRJZCA9IDE7XG4gIGNvbnN0IHRpY2sgPSAoKSA9PiB7XG4gICAgdGltZU9mZnNldCArPSAwLjAxO1xuICAgIHJldHVybiB0aW1lT2Zmc2V0O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEZha2VEYXRlKHRoaXM6IHVua25vd24sIC4uLmFyZ3M6IHVua25vd25bXSk6IERhdGUgfCBzdHJpbmcge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBGYWtlRGF0ZSkpIHtcbiAgICAgIHJldHVybiBuZXcgUkVBTF9EQVRFKGRhdGVPcmlnaW4gKyBjdXJyTXMpLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiBhcmdzLmxlbmd0aFxuICAgICAgPyBuZXcgKEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KFJFQUxfREFURSwgW251bGwsIC4uLmFyZ3NdKSkoKVxuICAgICAgOiBuZXcgUkVBTF9EQVRFKGRhdGVPcmlnaW4gKyBjdXJyTXMgKyB0aWNrKCkpO1xuICB9XG4gIEZha2VEYXRlLnByb3RvdHlwZSA9IFJFQUxfREFURS5wcm90b3R5cGU7XG4gIEZha2VEYXRlLm5vdyA9ICgpID0+IGRhdGVPcmlnaW4gKyBjdXJyTXMgKyB0aWNrKCk7XG4gIEZha2VEYXRlLnBhcnNlID0gUkVBTF9EQVRFLnBhcnNlO1xuICBGYWtlRGF0ZS5VVEMgPSBSRUFMX0RBVEUuVVRDO1xuICAod2luZG93IGFzIHVua25vd24gYXMgeyBEYXRlOiB1bmtub3duIH0pLkRhdGUgPSBGYWtlRGF0ZTtcbiAgcGVyZm9ybWFuY2Uubm93ID0gKCkgPT4gY3Vyck1zICsgdGljaygpO1xuXG4gIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSAoY2IpID0+IHtcbiAgICBjb25zdCBpZCA9IG5leHRJZCsrO1xuICAgIHJhZlF1ZXVlLnB1c2goeyBpZCwgY2IgfSk7XG4gICAgcmV0dXJuIGlkO1xuICB9O1xuICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSAoaWQpID0+IHtcbiAgICByYWZRdWV1ZSA9IHJhZlF1ZXVlLmZpbHRlcigocikgPT4gci5pZCAhPT0gaWQpO1xuICB9O1xuICAod2luZG93IGFzIHVua25vd24gYXMgeyBzZXRUaW1lb3V0OiB1bmtub3duIH0pLnNldFRpbWVvdXQgPSAoY2I6IFRpbWVySGFuZGxlciwgZGVsYXk/OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBpZCA9IG5leHRJZCsrO1xuICAgIHRpbWVyc1tpZF0gPSB7IHR5cGU6IFwidGltZW91dFwiLCBjYiwgZGVsYXk6IGRlbGF5IHx8IDAsIG5leHQ6IGN1cnJNcyArIChkZWxheSB8fCAwKSB9O1xuICAgIHJldHVybiBpZDtcbiAgfTtcbiAgd2luZG93LmNsZWFyVGltZW91dCA9IChpZCkgPT4ge1xuICAgIGlmICh0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGRlbGV0ZSB0aW1lcnNbaWRdO1xuICAgIH1cbiAgfTtcbiAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgc2V0SW50ZXJ2YWw6IHVua25vd24gfSkuc2V0SW50ZXJ2YWwgPSAoY2I6IFRpbWVySGFuZGxlciwgZGVsYXk/OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBpZCA9IG5leHRJZCsrO1xuICAgIGNvbnN0IGQgPSBNYXRoLm1heChkZWxheSB8fCAwLCAxKTtcbiAgICB0aW1lcnNbaWRdID0geyB0eXBlOiBcImludGVydmFsXCIsIGNiLCBkZWxheTogZCwgbmV4dDogY3Vyck1zICsgZCB9O1xuICAgIHJldHVybiBpZDtcbiAgfTtcbiAgd2luZG93LmNsZWFySW50ZXJ2YWwgPSAoaWQpID0+IHtcbiAgICBpZiAodHlwZW9mIGlkID09PSBcIm51bWJlclwiKSB7XG4gICAgICBkZWxldGUgdGltZXJzW2lkXTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gc2FmZUludm9rZVRpbWVyKGZuOiBUaW1lckhhbmRsZXIpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAvLyBTdHJpbmcgdGltZXIgaGFuZGxlciBydW5zIGFzIHBhZ2Ugc2NyaXB0IGluIGdsb2JhbCBzY29wZSAoSFRNTCBzcGVjKTsgRnVuY3Rpb24gY3RvciBtYXRjaGVzIHRoYXQsIGF2b2lkcyBldmFsLlxuICAgICAgICBuZXcgRnVuY3Rpb24oZm4pKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmbigpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJbVGlja10gZXJyb3I6XCIsIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykgfHwgZSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHNhZmVJbnZva2VSYWYoY2I6IEZyYW1lUmVxdWVzdENhbGxiYWNrLCB0czogbnVtYmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNiKHRzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiW1RpY2tdIGVycm9yOlwiLCAoZSBpbnN0YW5jZW9mIEVycm9yICYmIGUuc3RhY2spIHx8IGUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFuaW1TdGF0ZSA9IG5ldyBXZWFrTWFwPEFuaW1hdGlvbiwgQW5pbUVudHJ5PigpO1xuICBmdW5jdGlvbiBlbmRCb3VuZGFyeShhOiBBbmltYXRpb24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0ID0gYS5lZmZlY3Q/LmdldENvbXB1dGVkVGltaW5nKCkuZW5kVGltZTtcbiAgICAgIHJldHVybiB0eXBlb2YgdCA9PT0gXCJudW1iZXJcIiAmJiBOdW1iZXIuaXNGaW5pdGUodCkgPyB0IDogdW5kZWZpbmVkO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRGV0YWNoZWQvZm9yZWlnbiBlZmZlY3RzIGhhdmUgbm8gdGltaW5nOyB0cmVhdCBhcyB1bmJvdW5kZWQuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICAvLyBBZG9wdCBydW5uaW5nIGFuaW1hdGlvbnMgKHBhdXNlICsgZHJpdmUgY3VycmVudFRpbWUgb2ZmIHRoZSB2aXJ0dWFsIGNsb2NrKTogYW4gaW5maW5pdGUgY29tcG9zaXRvciBhbmltYXRpb24gb3RoZXJ3aXNlIGtlZXBzIHZpeiBmcmVlLXJ1bm5pbmcgYXQgUkVOREVSX0ZQUywgc3RhcnZpbmcgQ0RQIGV2YWxzLlxuICBmdW5jdGlvbiBzeW5jQW5pbWF0aW9ucyhtczogbnVtYmVyKSB7XG4gICAgbGV0IGFuaW1zOiBBbmltYXRpb25bXTtcbiAgICB0cnkge1xuICAgICAgYW5pbXMgPSBkb2N1bWVudC5nZXRBbmltYXRpb25zKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgYSBvZiBhbmltcykge1xuICAgICAgY29uc3Qgc3RhdGUgPSBhLnBsYXlTdGF0ZTtcbiAgICAgIGlmIChzdGF0ZSA9PT0gXCJpZGxlXCIgfHwgc3RhdGUgPT09IFwiZmluaXNoZWRcIikge1xuICAgICAgICBhbmltU3RhdGUuZGVsZXRlKGEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJhdGUgPSB0eXBlb2YgYS5wbGF5YmFja1JhdGUgPT09IFwibnVtYmVyXCIgPyBhLnBsYXliYWNrUmF0ZSA6IDE7XG4gICAgICBpZiAocmF0ZSA9PT0gMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGxldCBzID0gYW5pbVN0YXRlLmdldChhKTtcbiAgICAgIGlmICghcykge1xuICAgICAgICBjb25zdCBjdDAgPSB0eXBlb2YgYS5jdXJyZW50VGltZSA9PT0gXCJudW1iZXJcIiA/IGEuY3VycmVudFRpbWUgOiAwO1xuICAgICAgICBzID0geyBzdGFydE1zOiBtcyAtIGN0MCAvIHJhdGUsIGFkb3B0ZWQ6IHN0YXRlICE9PSBcInBhdXNlZFwiIH07XG4gICAgICAgIGFuaW1TdGF0ZS5zZXQoYSwgcyk7XG4gICAgICAgIGlmIChzLmFkb3B0ZWQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYS5wYXVzZSgpO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gUGF1c2UtcmVqZWN0aW5nIHN0YXRlcyAoZS5nLiBtaWQtY2FuY2VsKSBzdGlsbCBhY2NlcHQgY3VycmVudFRpbWUgd3JpdGVzIGJlbG93LlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghcy5hZG9wdGVkICYmIHN0YXRlICE9PSBcInBhdXNlZFwiKSB7XG4gICAgICAgIGNvbnN0IGN0ID0gdHlwZW9mIGEuY3VycmVudFRpbWUgPT09IFwibnVtYmVyXCIgPyBhLmN1cnJlbnRUaW1lIDogMDtcbiAgICAgICAgcy5zdGFydE1zID0gbXMgLSBjdCAvIHJhdGU7XG4gICAgICAgIHMuYWRvcHRlZCA9IHRydWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYS5wYXVzZSgpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBTYW1lIGFzIGFkb3B0aW9uIGFib3ZlOiBkcml2ZSBieSBjdXJyZW50VGltZSByZWdhcmRsZXNzLlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXMuYWRvcHRlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRhcmdldCA9IChtcyAtIHMuc3RhcnRNcykgKiByYXRlO1xuICAgICAgY29uc3QgZW5kID0gZW5kQm91bmRhcnkoYSk7XG4gICAgICAvLyBmaW5pc2goKSBzZWVrcyB0byB0aGUgcmF0ZS1hcHByb3ByaWF0ZSBib3VuZGFyeSBhbmQgYXBwbGllcyBmaWxsIG1vZGU7IHBhdXNlZCBob2xkcyB3b3VsZCBtaXNyZW5kZXIgZmlsbDpub25lLlxuICAgICAgaWYgKHJhdGUgPiAwID8gZW5kICE9PSB1bmRlZmluZWQgJiYgdGFyZ2V0ID49IGVuZCA6IHRhcmdldCA8PSAwKSB7XG4gICAgICAgIGFuaW1TdGF0ZS5kZWxldGUoYSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYS5maW5pc2goKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSW5maW5pdGUtZHVyYXRpb24gcmV2ZXJzZSBvciBkZXRhY2hlZCBlZmZlY3Q6IGxlYXZlIGFzLWlzLlxuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYS5jdXJyZW50VGltZSA9IHRhcmdldDtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwcm9jZXNzKHRpbWVzdGFtcE1zOiBudW1iZXIpIHtcbiAgICBjdXJyTXMgPSB0aW1lc3RhbXBNcztcbiAgICB0aW1lT2Zmc2V0ID0gMDtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKHRpbWVycykpIHtcbiAgICAgIGNvbnN0IHQgPSB0aW1lcnNbTnVtYmVyKGlkKV07XG4gICAgICBpZiAoIXQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB3aGlsZSAodC5uZXh0IDw9IGN1cnJNcykge1xuICAgICAgICBzYWZlSW52b2tlVGltZXIodC5jYik7XG4gICAgICAgIGlmICh0LnR5cGUgPT09IFwidGltZW91dFwiKSB7XG4gICAgICAgICAgZGVsZXRlIHRpbWVyc1tOdW1iZXIoaWQpXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0Lm5leHQgKz0gdC5kZWxheTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmFmcyA9IHJhZlF1ZXVlLnNwbGljZSgwKTtcbiAgICBmb3IgKGNvbnN0IHIgb2YgcmFmcykge1xuICAgICAgc2FmZUludm9rZVJhZihyLmNiLCBjdXJyTXMpO1xuICAgIH1cbiAgICBzeW5jQW5pbWF0aW9ucyhjdXJyTXMpO1xuICB9XG5cbiAgd2luZG93Ll9fcHVwX3RpY2tfXyA9IHsgcHJvY2VzcyB9O1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNi8wMi5cblxudHlwZSBWZWM0ID0gW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cbmNvbnN0IE1JUlJPUl9QUk9QUyA9IFtcbiAgXCJib3JkZXJSYWRpdXNcIixcbiAgXCJib3JkZXJUb3BMZWZ0UmFkaXVzXCIsXG4gIFwiYm9yZGVyVG9wUmlnaHRSYWRpdXNcIixcbiAgXCJib3JkZXJCb3R0b21MZWZ0UmFkaXVzXCIsXG4gIFwiYm9yZGVyQm90dG9tUmlnaHRSYWRpdXNcIixcbiAgXCJ0cmFuc2Zvcm1cIixcbiAgXCJ0cmFuc2Zvcm1PcmlnaW5cIixcbiAgXCJmaWx0ZXJcIixcbiAgXCJjbGlwUGF0aFwiLFxuICBcImJveFNoYWRvd1wiLFxuICBcIm9wYWNpdHlcIixcbiAgXCJtaXhCbGVuZE1vZGVcIixcbiAgXCJtYXNrXCIsXG4gIFwiekluZGV4XCIsXG4gIFwicG9zaXRpb25cIixcbiAgXCJsZWZ0XCIsXG4gIFwidG9wXCIsXG4gIFwicmlnaHRcIixcbiAgXCJib3R0b21cIixcbl0gYXMgY29uc3Q7XG5cbmZ1bmN0aW9uIGNzc0Nhc2Uoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvW0EtWl0vZywgKGMpID0+IGAtJHtjLnRvTG93ZXJDYXNlKCl9YCk7XG59XG5cbi8vIFRyYWNrIHRoZSBvdmVybGF5IGNhbnZhcyB0byB0aGUgdmlkZW8gZWxlbWVudCdzIGxpdmUgYm94OyB0cnVlID0gYmFja2luZyBzdG9yZSByZXNpemVkICh3aGljaCB3aXBlcyB0aGUgY2FudmFzKS5cbmV4cG9ydCBmdW5jdGlvbiBzeW5jT3ZlcmxheSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgY3Y6IEhUTUxDYW52YXNFbGVtZW50KTogYm9vbGVhbiB7XG4gIGNvbnN0IGNzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodmlkZW8pO1xuICBjdi5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcbiAgLy8gb2Zmc2V0KiBhcmUgcHJlLXRyYW5zZm9ybSBjb29yZHMgZnJvbSBvZmZzZXRQYXJlbnQncyBwYWRkaW5nIGVkZ2UgPSB0aGUgYWJzIGNvbnRhaW5pbmctYmxvY2sgb3JpZ2luOyBtYXAgZGlyZWN0LlxuICBjdi5zdHlsZS5sZWZ0ID0gYCR7dmlkZW8ub2Zmc2V0TGVmdH1weGA7XG4gIGN2LnN0eWxlLnRvcCA9IGAke3ZpZGVvLm9mZnNldFRvcH1weGA7XG4gIGN2LnN0eWxlLndpZHRoID0gYCR7dmlkZW8ub2Zmc2V0V2lkdGh9cHhgO1xuICBjdi5zdHlsZS5oZWlnaHQgPSBgJHt2aWRlby5vZmZzZXRIZWlnaHR9cHhgO1xuICBmb3IgKGNvbnN0IHAgb2YgTUlSUk9SX1BST1BTKSB7XG4gICAgaWYgKHAgPT09IFwicG9zaXRpb25cIiB8fCBwID09PSBcImxlZnRcIiB8fCBwID09PSBcInRvcFwiIHx8IHAgPT09IFwicmlnaHRcIiB8fCBwID09PSBcImJvdHRvbVwiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgdiA9IGNzLmdldFByb3BlcnR5VmFsdWUoY3NzQ2FzZShwKSk7XG4gICAgaWYgKHYpIHtcbiAgICAgIGN2LnN0eWxlLnNldFByb3BlcnR5KGNzc0Nhc2UocCksIHYpO1xuICAgIH1cbiAgfVxuICAvLyBCYWNraW5nIHN0b3JlIGF0IG9uLXNjcmVlbiBwaXhlbCBzaXplIChwb3N0LXRyYW5zZm9ybSkgc28gZGVjb2RlIHJlc29sdXRpb24gbWF0Y2hlcyBkaXNwbGF5ZWQgcGl4ZWxzLlxuICBjb25zdCB2ciA9IHZpZGVvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBkcHIgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuICBjb25zdCB3ID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZCh2ci53aWR0aCAqIGRwcikpO1xuICBjb25zdCBoID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZCh2ci5oZWlnaHQgKiBkcHIpKTtcbiAgbGV0IHJlc2l6ZWQgPSBmYWxzZTtcbiAgaWYgKGN2LndpZHRoICE9PSB3KSB7XG4gICAgY3Yud2lkdGggPSB3O1xuICAgIHJlc2l6ZWQgPSB0cnVlO1xuICB9XG4gIGlmIChjdi5oZWlnaHQgIT09IGgpIHtcbiAgICBjdi5oZWlnaHQgPSBoO1xuICAgIHJlc2l6ZWQgPSB0cnVlO1xuICB9XG4gIHJldHVybiByZXNpemVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBDYW52YXModmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIHNuYXA6IE9mZnNjcmVlbkNhbnZhcyB8IHVuZGVmaW5lZCk6IEhUTUxDYW52YXNFbGVtZW50IHtcbiAgY29uc3QgY3YgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjdi5kYXRhc2V0W1wicHVwVmlkZW9PdmVybGF5XCJdID0gXCIxXCI7XG4gIGN2LnN0eWxlLnBvaW50ZXJFdmVudHMgPSBcIm5vbmVcIjtcbiAgdmlkZW8uc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG4gIHZpZGVvLm11dGVkID0gdHJ1ZTtcbiAgY29uc3QgcGFyZW50ID0gdmlkZW8ucGFyZW50Tm9kZSB8fCBkb2N1bWVudC5ib2R5O1xuICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGN2LCB2aWRlby5uZXh0U2libGluZyk7XG4gIHN5bmNPdmVybGF5KHZpZGVvLCBjdik7XG4gIGlmIChzbmFwKSB7XG4gICAgdHJ5IHtcbiAgICAgIGN2LmdldENvbnRleHQoXCIyZFwiKSEuZHJhd0ltYWdlKHNuYXAsIDAsIDAsIGN2LndpZHRoLCBjdi5oZWlnaHQpO1xuICAgIH0gY2F0Y2gge31cbiAgfVxuICByZXR1cm4gY3Y7XG59XG5cbi8vIERyYXcgcmVjdCBmb3IgdGhlIGJpdG1hcCB3aXRoaW4gdGhlIGNhbnZhcyBwZXIgb2JqZWN0Rml0LlxuZXhwb3J0IGZ1bmN0aW9uIGZpdFJlY3Qoc3JjVzogbnVtYmVyLCBzcmNIOiBudW1iZXIsIGRzdFc6IG51bWJlciwgZHN0SDogbnVtYmVyLCBmaXQ6IHN0cmluZyk6IFZlYzQge1xuICBpZiAoZml0ID09PSBcIm5vbmVcIikge1xuICAgIHJldHVybiBbKGRzdFcgLSBzcmNXKSAvIDIsIChkc3RIIC0gc3JjSCkgLyAyLCBzcmNXLCBzcmNIXTtcbiAgfVxuICBpZiAoZml0ID09PSBcImNvbnRhaW5cIiB8fCBmaXQgPT09IFwic2NhbGUtZG93blwiKSB7XG4gICAgY29uc3Qgc2MgPSBNYXRoLm1pbihkc3RXIC8gc3JjVywgZHN0SCAvIHNyY0gpO1xuICAgIGNvbnN0IGsgPSBmaXQgPT09IFwic2NhbGUtZG93blwiID8gTWF0aC5taW4oMSwgc2MpIDogc2M7XG4gICAgY29uc3Qgd3MgPSBrICogc3JjVztcbiAgICBjb25zdCBocyA9IGsgKiBzcmNIO1xuICAgIHJldHVybiBbKGRzdFcgLSB3cykgLyAyLCAoZHN0SCAtIGhzKSAvIDIsIHdzLCBoc107XG4gIH1cbiAgaWYgKGZpdCA9PT0gXCJjb3ZlclwiKSB7XG4gICAgY29uc3Qgc2MyID0gTWF0aC5tYXgoZHN0VyAvIHNyY1csIGRzdEggLyBzcmNIKTtcbiAgICBjb25zdCB3czIgPSBzYzIgKiBzcmNXO1xuICAgIGNvbnN0IGhzMiA9IHNjMiAqIHNyY0g7XG4gICAgcmV0dXJuIFsoZHN0VyAtIHdzMikgLyAyLCAoZHN0SCAtIGhzMikgLyAyLCB3czIsIGhzMl07XG4gIH1cbiAgcmV0dXJuIFswLCAwLCBkc3RXLCBkc3RIXTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDYvMDIuXG5cbmV4cG9ydCBjb25zdCBTQ0hFTUUgPSBcInB1cC1mcmFtZTovL1wiO1xuZXhwb3J0IGNvbnN0IEFIRUFEID0gMTA7XG5leHBvcnQgY29uc3QgVEFHID0gXCJbVmlkZW9Ib29rXVwiO1xuXG5leHBvcnQgY29uc3QgTUVESUFfRVJSX05FVFdPUksgPSAyO1xuZXhwb3J0IGNvbnN0IE1FRElBX0VSUl9ERUNPREUgPSAzO1xuZXhwb3J0IGNvbnN0IEhBVkVfTk9USElORyA9IDA7XG5leHBvcnQgY29uc3QgSEFWRV9NRVRBREFUQSA9IDE7XG5leHBvcnQgY29uc3QgSEFWRV9FTk9VR0hfREFUQSA9IDQ7XG5leHBvcnQgY29uc3QgTkVUV09SS19FTVBUWSA9IDA7XG5leHBvcnQgY29uc3QgTkVUV09SS19JRExFID0gMTtcbmV4cG9ydCBjb25zdCBORVRXT1JLX0xPQURJTkcgPSAyO1xuZXhwb3J0IGNvbnN0IE5FVFdPUktfTk9fU09VUkNFID0gMztcblxuZXhwb3J0IGludGVyZmFjZSBWaWRlb01ldGEge1xuICBpZDogc3RyaW5nO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgZnJhbWVXaWR0aDogbnVtYmVyO1xuICBmcmFtZUhlaWdodDogbnVtYmVyO1xuICBkdXJhdGlvbjogbnVtYmVyO1xuICBmcHM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWRlb0ZyYW1lTWV0YSB7XG4gIHByZXNlbnRhdGlvblRpbWU6IG51bWJlcjtcbiAgZXhwZWN0ZWREaXNwbGF5VGltZTogbnVtYmVyO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgbWVkaWFUaW1lOiBudW1iZXI7XG4gIHByZXNlbnRlZEZyYW1lczogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBGcmFtZUNiID0gKG5vdzogbnVtYmVyLCBtZXRhOiBWaWRlb0ZyYW1lTWV0YSkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBNZWRpYUVycm9yTGlrZSB7XG4gIGNvZGU6IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvQ2FjaGUge1xuICBiaXRtYXBzOiBNYXA8bnVtYmVyLCBJbWFnZUJpdG1hcD47XG4gIGluRmxpZ2h0OiBNYXA8bnVtYmVyLCBQcm9taXNlPEltYWdlQml0bWFwIHwgdW5kZWZpbmVkPj47XG4gIHJlYWRlcnM6IE1hcDxWaWRlb1N0YXRlLCBudW1iZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvU3RhdGUge1xuICBtZXRhPzogVmlkZW9NZXRhO1xuICBjdjogSFRNTENhbnZhc0VsZW1lbnQ7XG4gIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICBwYXVzZWQ6IGJvb2xlYW47XG4gIGN1cnJlbnRUaW1lOiBudW1iZXI7XG4gIGVuZGVkOiBib29sZWFuO1xuICBsYXN0RHJhd25JZHg6IG51bWJlcjtcbiAgZGVhZDogYm9vbGVhbjtcbiAgb2JqZWN0Rml0OiBzdHJpbmc7XG4gIHJlYWR5U3RhdGU6IG51bWJlcjtcbiAgbmV0d29ya1N0YXRlOiBudW1iZXI7XG4gIHNlZWtpbmc6IGJvb2xlYW47XG4gIHdhaXRpbmc6IGJvb2xlYW47XG4gIGVycm9yOiBNZWRpYUVycm9yTGlrZSB8IHVuZGVmaW5lZDtcbiAgcHJlc2VudGVkRnJhbWVzOiBudW1iZXI7XG4gIG1heFJlYWNoZWQ6IG51bWJlcjtcbiAgcnZmYzogTWFwPG51bWJlciwgRnJhbWVDYj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZVJhbmdlc0xpa2Uge1xuICBsZW5ndGg6IG51bWJlcjtcbiAgc3RhcnQoaTogbnVtYmVyKTogbnVtYmVyO1xuICBlbmQoaTogbnVtYmVyKTogbnVtYmVyO1xufVxuXG4vLyBXaG9sZSBjbGlwIGlzIGRlY29kZS1vbi1kZW1hbmQsIHNvIHRoZSBhdmFpbGFibGUgcmFuZ2UgaXMgYWx3YXlzIFswLCBlbmRdIChvbmUgVGltZVJhbmdlcyBlbnRyeSkuXG5leHBvcnQgZnVuY3Rpb24gdGltZVJhbmdlcyhlbmQ6IG51bWJlcik6IFRpbWVSYW5nZXNMaWtlIHtcbiAgcmV0dXJuIHsgbGVuZ3RoOiBlbmQgPiAwID8gMSA6IDAsIHN0YXJ0OiAoKSA9PiAwLCBlbmQ6ICgpID0+IGVuZCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyZShlbDogRXZlbnRUYXJnZXQsIHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICBlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCh0eXBlKSk7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA2LzAyLlxuXG5pbXBvcnQgdHlwZSB7IFZpZGVvSG9vayB9IGZyb20gXCIuL2hvb2tcIjtcbmltcG9ydCB7IGZpdFJlY3QsIHN5bmNPdmVybGF5IH0gZnJvbSBcIi4vb3ZlcmxheVwiO1xuaW1wb3J0IHsgQUhFQUQsIGZpcmUsIHR5cGUgVmlkZW9GcmFtZU1ldGEsIHR5cGUgVmlkZW9TdGF0ZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmZ1bmN0aW9uIGZpcmVGcmFtZUNhbGxiYWNrcyhzdGF0ZTogVmlkZW9TdGF0ZSk6IHZvaWQge1xuICBpZiAoc3RhdGUucnZmYy5zaXplID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGNicyA9IFsuLi5zdGF0ZS5ydmZjLnZhbHVlcygpXTtcbiAgc3RhdGUucnZmYy5jbGVhcigpO1xuICBjb25zdCBub3cgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgY29uc3QgbWV0YTogVmlkZW9GcmFtZU1ldGEgPSB7XG4gICAgcHJlc2VudGF0aW9uVGltZTogbm93LFxuICAgIGV4cGVjdGVkRGlzcGxheVRpbWU6IG5vdyxcbiAgICB3aWR0aDogc3RhdGUubWV0YSEuZnJhbWVXaWR0aCxcbiAgICBoZWlnaHQ6IHN0YXRlLm1ldGEhLmZyYW1lSGVpZ2h0LFxuICAgIG1lZGlhVGltZTogc3RhdGUuY3VycmVudFRpbWUsXG4gICAgcHJlc2VudGVkRnJhbWVzOiBzdGF0ZS5wcmVzZW50ZWRGcmFtZXMsXG4gIH07XG4gIGZvciAoY29uc3QgY2Igb2YgY2JzKSB7XG4gICAgY2Iobm93LCBtZXRhKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBwYWludChob29rOiBWaWRlb0hvb2ssIHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBzdGF0ZTogVmlkZW9TdGF0ZSwgaWR4OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYyA9IGhvb2suY2FjaGUuY2FjaGVPZihzdGF0ZS5tZXRhIS5pZCk7XG4gIGMucmVhZGVycy5zZXQoc3RhdGUsIGlkeCk7XG4gIGxldCBibSA9IGMuYml0bWFwcy5nZXQoaWR4KTtcbiAgaWYgKCFibSkge1xuICAgIGhvb2suY2FjaGUucHJlZmV0Y2goc3RhdGUsIGlkeCArIDEsIEFIRUFEIC0gMSk7XG4gICAgY29uc3QgZmV0Y2hlZCA9IGF3YWl0IGhvb2suY2FjaGUuZmV0Y2goc3RhdGUsIGlkeCk7XG4gICAgaWYgKGhvb2suc2Vzc2lvbnMuZ2V0KHZpZGVvKSAhPT0gc3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFmZXRjaGVkKSB7XG4gICAgICBpZiAoIXN0YXRlLnBhdXNlZCAmJiAhc3RhdGUud2FpdGluZykge1xuICAgICAgICBzdGF0ZS53YWl0aW5nID0gdHJ1ZTtcbiAgICAgICAgZmlyZSh2aWRlbywgXCJ3YWl0aW5nXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBibSA9IGZldGNoZWQ7XG4gIH1cbiAgaWYgKHN0YXRlLndhaXRpbmcpIHtcbiAgICBzdGF0ZS53YWl0aW5nID0gZmFsc2U7XG4gICAgaWYgKCFzdGF0ZS5wYXVzZWQpIHtcbiAgICAgIGZpcmUodmlkZW8sIFwicGxheWluZ1wiKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgY3YgPSBzdGF0ZS5jdjtcbiAgY29uc3QgciA9IGZpdFJlY3QoYm0ud2lkdGgsIGJtLmhlaWdodCwgY3Yud2lkdGgsIGN2LmhlaWdodCwgc3RhdGUub2JqZWN0Rml0KTtcbiAgc3RhdGUuY3R4LmNsZWFyUmVjdCgwLCAwLCBjdi53aWR0aCwgY3YuaGVpZ2h0KTtcbiAgc3RhdGUuY3R4LmRyYXdJbWFnZShibSwgclswXSwgclsxXSwgclsyXSwgclszXSk7XG4gIHN0YXRlLmxhc3REcmF3bklkeCA9IGlkeDtcbiAgc3RhdGUucHJlc2VudGVkRnJhbWVzKys7XG4gIGZpcmVGcmFtZUNhbGxiYWNrcyhzdGF0ZSk7XG4gIGhvb2suY2FjaGUucHJlZmV0Y2goc3RhdGUsIGlkeCArIDEsIEFIRUFEKTtcbiAgaG9vay5jYWNoZS5ldmljdChjKTtcbn1cblxuLy8gVmlydHVhbC10aW1lIHRpY2s6IHN5bmMgb3ZlcmxheXMsIGFkdmFuY2UgZWFjaCBob29rZWQgdmlkZW8ncyBjbG9jayAobG9vcC9lbmQpLCBwYWludCB0aGUgZHVlIGZyYW1lLlxuZXhwb3J0IGZ1bmN0aW9uIGFkdmFuY2UoaG9vazogVmlkZW9Ib29rLCB0aW1lc3RhbXBNczogbnVtYmVyKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IGR0ID0gTWF0aC5tYXgoMCwgdGltZXN0YW1wTXMgLSBob29rLmN1cnJNcykgLyAxMDAwO1xuICBob29rLmN1cnJNcyA9IHRpbWVzdGFtcE1zO1xuICBjb25zdCBwczogUHJvbWlzZTx1bmtub3duPltdID0gW107XG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJ2aWRlb1wiKS5mb3JFYWNoKChlbCkgPT4ge1xuICAgIGNvbnN0IHZpZGVvID0gZWwgYXMgSFRNTFZpZGVvRWxlbWVudDtcbiAgICBjb25zdCBzdGF0ZSA9IGhvb2suc2Vzc2lvbnMuZ2V0KHZpZGVvKTtcbiAgICBpZiAoIXN0YXRlIHx8IHN0YXRlLmRlYWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gQSBiYWNraW5nLXN0b3JlIHJlc2l6ZSAoYW5pbWF0ZWQgY29udGFpbmVyKSB3aXBlcyB0aGUgY2FudmFzOyBmb3JjZSBhIHJlZHJhdyBldmVuIG9uIGFuIHVuY2hhbmdlZCBmcmFtZSBpZHguXG4gICAgaWYgKHN5bmNPdmVybGF5KHZpZGVvLCBzdGF0ZS5jdikpIHtcbiAgICAgIHN0YXRlLmxhc3REcmF3bklkeCA9IC0xO1xuICAgIH1cbiAgICBpZiAoIXN0YXRlLm1ldGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gRWxlbWVudCBncmV3IHBhc3QgdGhlIGRlY29kZWQgKGRvd25zY2FsZWQpIHJlcyDihpIgcmUtZGVjb2RlIGF0IG5hdGl2ZSwgb25lLXNob3QgKGNvdmVycyB6b29tKS5cbiAgICBpZiAoXG4gICAgICBzdGF0ZS5tZXRhLmZyYW1lV2lkdGggPCBzdGF0ZS5tZXRhLndpZHRoICYmXG4gICAgICBzdGF0ZS5jdi53aWR0aCA+IHN0YXRlLm1ldGEuZnJhbWVXaWR0aCAqIDEuMDUgJiZcbiAgICAgICFob29rLmF0dGFjaGluZy5oYXModmlkZW8pXG4gICAgKSB7XG4gICAgICBob29rLnJlYXR0YWNoKHZpZGVvLCBzdGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghc3RhdGUucGF1c2VkICYmICFzdGF0ZS5lbmRlZCkge1xuICAgICAgc3RhdGUuY3VycmVudFRpbWUgKz0gZHQgKiAodmlkZW8ucGxheWJhY2tSYXRlIHx8IDEpO1xuICAgICAgc3RhdGUubWF4UmVhY2hlZCA9IE1hdGgubWF4KHN0YXRlLm1heFJlYWNoZWQsIHN0YXRlLmN1cnJlbnRUaW1lKTtcbiAgICAgIGlmIChzdGF0ZS5jdXJyZW50VGltZSA+PSBzdGF0ZS5tZXRhLmR1cmF0aW9uKSB7XG4gICAgICAgIGlmICh2aWRlby5sb29wKSB7XG4gICAgICAgICAgc3RhdGUuY3VycmVudFRpbWUgPSBzdGF0ZS5jdXJyZW50VGltZSAlIHN0YXRlLm1ldGEuZHVyYXRpb247XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUuY3VycmVudFRpbWUgPSBzdGF0ZS5tZXRhLmR1cmF0aW9uO1xuICAgICAgICAgIHN0YXRlLnBhdXNlZCA9IHRydWU7XG4gICAgICAgICAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICAgICAgICAgIGZpcmUodmlkZW8sIFwiZW5kZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpcmUodmlkZW8sIFwidGltZXVwZGF0ZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgaWR4ID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZChzdGF0ZS5jdXJyZW50VGltZSAqIHN0YXRlLm1ldGEuZnBzKSk7XG4gICAgaWYgKGlkeCA9PT0gc3RhdGUubGFzdERyYXduSWR4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHBzLnB1c2gocGFpbnQoaG9vaywgdmlkZW8sIHN0YXRlLCBpZHgpKTtcbiAgfSk7XG4gIHJldHVybiBQcm9taXNlLmFsbChwcyk7XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA2LzAyLlxuXG5pbXBvcnQgeyBTQ0hFTUUsIHR5cGUgVmlkZW9DYWNoZSwgdHlwZSBWaWRlb1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLy8gUGVyLXNlc3Npb24gYml0bWFwIGNhY2hlOiBmZXRjaGVzIFJHQkEgZnJhbWVzIGZyb20gdGhlIGZyYW1lIHByb3RvY29sLCBkZWR1cGVzIGluLWZsaWdodCwgZXZpY3RzIGJlaGluZCByZWFkZXJzLlxuZXhwb3J0IGNsYXNzIEZyYW1lQ2FjaGUge1xuICBwcml2YXRlIF9jYWNoZXMgPSBuZXcgTWFwPHN0cmluZywgVmlkZW9DYWNoZT4oKTtcblxuICBjYWNoZU9mKGlkOiBzdHJpbmcpOiBWaWRlb0NhY2hlIHtcbiAgICBsZXQgYyA9IHRoaXMuX2NhY2hlcy5nZXQoaWQpO1xuICAgIGlmICghYykge1xuICAgICAgYyA9IHsgYml0bWFwczogbmV3IE1hcCgpLCBpbkZsaWdodDogbmV3IE1hcCgpLCByZWFkZXJzOiBuZXcgTWFwKCkgfTtcbiAgICAgIHRoaXMuX2NhY2hlcy5zZXQoaWQsIGMpO1xuICAgIH1cbiAgICByZXR1cm4gYztcbiAgfVxuXG4gIGZldGNoKHN0YXRlOiBWaWRlb1N0YXRlLCBpZHg6IG51bWJlcik6IFByb21pc2U8SW1hZ2VCaXRtYXAgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBtZXRhID0gc3RhdGUubWV0YTtcbiAgICBpZiAoIW1ldGEpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgY29uc3QgYyA9IHRoaXMuY2FjaGVPZihtZXRhLmlkKTtcbiAgICBjb25zdCBleGlzdGluZyA9IGMuaW5GbGlnaHQuZ2V0KGlkeCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuICAgIGNvbnN0IGNhY2hlZCA9IGMuYml0bWFwcy5nZXQoaWR4KTtcbiAgICBpZiAoY2FjaGVkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNhY2hlZCk7XG4gICAgfVxuICAgIGNvbnN0IHcgPSBtZXRhLmZyYW1lV2lkdGg7XG4gICAgY29uc3QgaCA9IG1ldGEuZnJhbWVIZWlnaHQ7XG4gICAgY29uc3QgcCA9IGZldGNoKGAke1NDSEVNRX1mcmFtZT9pZD0ke21ldGEuaWR9JmlkeD0ke2lkeH1gKVxuICAgICAgLnRoZW4oKHIpID0+IChyLm9rID8gci5hcnJheUJ1ZmZlcigpIDogdW5kZWZpbmVkKSlcbiAgICAgIC50aGVuKChidWYpID0+XG4gICAgICAgIGJ1ZiAmJiBidWYuYnl0ZUxlbmd0aCA9PT0gdyAqIGggKiA0XG4gICAgICAgICAgPyBjcmVhdGVJbWFnZUJpdG1hcChuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheShidWYpLCB3LCBoKSlcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIClcbiAgICAgIC50aGVuKChibSkgPT4ge1xuICAgICAgICBjLmluRmxpZ2h0LmRlbGV0ZShpZHgpO1xuICAgICAgICBpZiAoYm0pIHtcbiAgICAgICAgICBjLmJpdG1hcHMuc2V0KGlkeCwgYm0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBibTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBjLmluRmxpZ2h0LmRlbGV0ZShpZHgpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSk7XG4gICAgYy5pbkZsaWdodC5zZXQoaWR4LCBwKTtcbiAgICByZXR1cm4gcDtcbiAgfVxuXG4gIHByZWZldGNoKHN0YXRlOiBWaWRlb1N0YXRlLCBmcm9tSWR4OiBudW1iZXIsIGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBtZXRhID0gc3RhdGUubWV0YTtcbiAgICBpZiAoIW1ldGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWF4SWR4ID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZChtZXRhLmR1cmF0aW9uICogbWV0YS5mcHMpKTtcbiAgICBmb3IgKGxldCBpID0gZnJvbUlkeDsgaSA8IGZyb21JZHggKyBjb3VudDsgaSsrKSB7XG4gICAgICBpZiAoaSA8IDEgfHwgaSA+IG1heElkeCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZvaWQgdGhpcy5mZXRjaChzdGF0ZSwgaSk7XG4gICAgfVxuICB9XG5cbiAgZXZpY3QoYzogVmlkZW9DYWNoZSk6IHZvaWQge1xuICAgIGxldCBtaW5JZHggPSBJbmZpbml0eTtcbiAgICBjLnJlYWRlcnMuZm9yRWFjaCgoaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4IDwgbWluSWR4KSB7XG4gICAgICAgIG1pbklkeCA9IGlkeDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShtaW5JZHgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZsb29yID0gbWluSWR4IC0gMjtcbiAgICBjLmJpdG1hcHMuZm9yRWFjaCgoYm0sIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA8IGZsb29yKSB7XG4gICAgICAgIGJtLmNsb3NlKCk7XG4gICAgICAgIGMuYml0bWFwcy5kZWxldGUoaWR4KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIERyb3AgYSByZWFkZXI7IHdoZW4gdGhlIGxhc3QgbGVhdmVzLCBjbG9zZSBiaXRtYXBzIGFuZCB0ZWxsIHRoZSBzZXJ2ZXIgdG8gcmVsZWFzZSB0aGUgZGVjb2RlIHNlc3Npb24uXG4gIHJlbGVhc2UoaWQ6IHN0cmluZywgc3RhdGU6IFZpZGVvU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBjID0gdGhpcy5fY2FjaGVzLmdldChpZCk7XG4gICAgaWYgKCFjKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGMucmVhZGVycy5kZWxldGUoc3RhdGUpO1xuICAgIGlmIChjLnJlYWRlcnMuc2l6ZSA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYy5iaXRtYXBzLmZvckVhY2goKGJtKSA9PiB7XG4gICAgICBibS5jbG9zZSgpO1xuICAgIH0pO1xuICAgIHRoaXMuX2NhY2hlcy5kZWxldGUoaWQpO1xuICAgIGZldGNoKGAke1NDSEVNRX1jbG9zZT9pZD0ke2lkfWAsIHsga2VlcGFsaXZlOiB0cnVlIH0pO1xuICB9XG59XG4iLCIvLyBDcmVhdGVkIGJ5IEF1dG9rYWthIChxcTE5MDk2OTg0OTRAZ21haWwuY29tKSBvbiAyMDI2LzA2LzAyLlxuXG5pbXBvcnQgdHlwZSB7IFZpZGVvSG9vayB9IGZyb20gXCIuL2hvb2tcIjtcbmltcG9ydCB7IHR5cGUgRnJhbWVDYiwgZmlyZSwgdGltZVJhbmdlcywgdHlwZSBWaWRlb1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLy8gT3ZlcnJpZGUgdGhlIEhUTUxNZWRpYUVsZW1lbnQgc3VyZmFjZSBmb3IgaG9va2VkIDx2aWRlbz47IHVuaG9va2VkIGVsZW1lbnRzIGZhbGwgdGhyb3VnaCB0byBuYXRpdmUuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbE1lZGlhU2hpbShob29rOiBWaWRlb0hvb2spOiB2b2lkIHtcbiAgY29uc3QgSFZFID0gSFRNTFZpZGVvRWxlbWVudC5wcm90b3R5cGU7XG4gIGNvbnN0IE1FRElBID0gSFRNTE1lZGlhRWxlbWVudC5wcm90b3R5cGU7XG4gIGNvbnN0IG1kZXNjID0gKHA6IHN0cmluZykgPT4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVkUsIHApIHx8IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTUVESUEsIHApO1xuICBjb25zdCBjdERlc2MgPSBtZGVzYyhcImN1cnJlbnRUaW1lXCIpO1xuICBjb25zdCBzcmNEZXNjID0gbWRlc2MoXCJzcmNcIik7XG4gIGNvbnN0IHJhdGVEZXNjID0gbWRlc2MoXCJwbGF5YmFja1JhdGVcIik7XG4gIGNvbnN0IG9yaWdQYXVzZSA9IEhWRS5wYXVzZTtcbiAgY29uc3Qgb3JpZ1JWRkMgPSBIVkUucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaztcbiAgY29uc3Qgb3JpZ0NhbmNlbFJWRkMgPSBIVkUuY2FuY2VsVmlkZW9GcmFtZUNhbGxiYWNrO1xuICBjb25zdCBvcmlnUXVhbGl0eSA9IEhWRS5nZXRWaWRlb1BsYXliYWNrUXVhbGl0eTtcbiAgY29uc3Qgb3JpZ0xvYWQgPSBIVkUubG9hZDtcbiAgY29uc3Qgc2Vzc2lvbnMgPSBob29rLnNlc3Npb25zO1xuXG4gIC8vIFNlc3Npb24tYmFja2VkIHJlYWQtb25seSBwcm9wZXJ0eSB3aXRoIG5hdGl2ZSBmYWxsYmFjayB3aGVuIHRoZSBlbGVtZW50IGlzbid0IGhvb2tlZC5cbiAgY29uc3QgZGVmID0gKHByb3A6IHN0cmluZywgcGljazogKHM6IFZpZGVvU3RhdGUpID0+IHVua25vd24pID0+IHtcbiAgICBjb25zdCBuYXRpdmVHZXQgPSBtZGVzYyhwcm9wKT8uZ2V0O1xuICAgIGlmICghbmF0aXZlR2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG1lZGlhX3NoaW06IG5vIG5hdGl2ZSBnZXR0ZXIgZm9yICR7cHJvcH1gKTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEhWRSwgcHJvcCwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0KHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgcyA9IHNlc3Npb25zLmdldCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHMgPyBwaWNrKHMpIDogbmF0aXZlR2V0LmNhbGwodGhpcyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9O1xuICBkZWYoXCJwYXVzZWRcIiwgKHMpID0+IHMucGF1c2VkKTtcbiAgZGVmKFwiZW5kZWRcIiwgKHMpID0+IHMuZW5kZWQpO1xuICBkZWYoXCJyZWFkeVN0YXRlXCIsIChzKSA9PiBzLnJlYWR5U3RhdGUpO1xuICBkZWYoXCJuZXR3b3JrU3RhdGVcIiwgKHMpID0+IHMubmV0d29ya1N0YXRlKTtcbiAgZGVmKFwiZXJyb3JcIiwgKHMpID0+IHMuZXJyb3IgPz8gbnVsbCk7XG4gIGRlZihcInNlZWtpbmdcIiwgKHMpID0+IHMuc2Vla2luZyk7XG4gIGRlZihcImJ1ZmZlcmVkXCIsIChzKSA9PiB0aW1lUmFuZ2VzKHMubWV0YSA/IHMubWV0YS5kdXJhdGlvbiA6IDApKTtcbiAgZGVmKFwic2Vla2FibGVcIiwgKHMpID0+IHRpbWVSYW5nZXMocy5tZXRhID8gcy5tZXRhLmR1cmF0aW9uIDogMCkpO1xuICBkZWYoXCJwbGF5ZWRcIiwgKHMpID0+IHRpbWVSYW5nZXMocy5tYXhSZWFjaGVkKSk7XG5cbiAgSFZFLnBsYXkgPSBmdW5jdGlvbiAodGhpczogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgaWYgKCFzKSB7XG4gICAgICByZXR1cm4gaG9vay5hdHRhY2godGhpcykudGhlbigobnMpID0+IHtcbiAgICAgICAgaWYgKG5zKSB7XG4gICAgICAgICAgaG9vay5yZXN1bWUodGhpcywgbnMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaG9vay5yZXN1bWUodGhpcywgcyk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9O1xuICBIVkUucGF1c2UgPSBmdW5jdGlvbiAodGhpczogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgaWYgKCFzKSB7XG4gICAgICBvcmlnUGF1c2UuY2FsbCh0aGlzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFzLnBhdXNlZCkge1xuICAgICAgcy5wYXVzZWQgPSB0cnVlO1xuICAgICAgZmlyZSh0aGlzLCBcInBhdXNlXCIpO1xuICAgIH1cbiAgfTtcbiAgaWYgKGN0RGVzYz8uZ2V0ICYmIGN0RGVzYy5zZXQpIHtcbiAgICBjb25zdCBjdEdldCA9IGN0RGVzYy5nZXQ7XG4gICAgY29uc3QgY3RTZXQgPSBjdERlc2Muc2V0O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVkUsIFwiY3VycmVudFRpbWVcIiwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0KHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgcyA9IHNlc3Npb25zLmdldCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHMgPyBzLmN1cnJlbnRUaW1lIDogY3RHZXQuY2FsbCh0aGlzKTtcbiAgICAgIH0sXG4gICAgICBzZXQodGhpczogSFRNTFZpZGVvRWxlbWVudCwgdDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgICAgIGlmICghcykge1xuICAgICAgICAgIGN0U2V0LmNhbGwodGhpcywgdCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGR1ciA9IHMubWV0YSA/IHMubWV0YS5kdXJhdGlvbiA6IHQ7XG4gICAgICAgIHMuY3VycmVudFRpbWUgPSBNYXRoLm1heCgwLCBNYXRoLm1pbih0LCBkdXIpKTtcbiAgICAgICAgcy5tYXhSZWFjaGVkID0gTWF0aC5tYXgocy5tYXhSZWFjaGVkLCBzLmN1cnJlbnRUaW1lKTtcbiAgICAgICAgaWYgKHMuY3VycmVudFRpbWUgPCBkdXIpIHtcbiAgICAgICAgICBzLmVuZGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcy5zZWVraW5nID0gdHJ1ZTtcbiAgICAgICAgZmlyZSh0aGlzLCBcInNlZWtpbmdcIik7XG4gICAgICAgIHMuc2Vla2luZyA9IGZhbHNlO1xuICAgICAgICBmaXJlKHRoaXMsIFwic2Vla2VkXCIpO1xuICAgICAgICBmaXJlKHRoaXMsIFwidGltZXVwZGF0ZVwiKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgaWYgKHJhdGVEZXNjPy5zZXQpIHtcbiAgICBjb25zdCByYXRlU2V0ID0gcmF0ZURlc2Muc2V0O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVkUsIFwicGxheWJhY2tSYXRlXCIsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogcmF0ZURlc2MuZ2V0LFxuICAgICAgc2V0KHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQsIHI6IG51bWJlcikge1xuICAgICAgICByYXRlU2V0LmNhbGwodGhpcywgcik7XG4gICAgICAgIGlmIChzZXNzaW9ucy5oYXModGhpcykpIHtcbiAgICAgICAgICBmaXJlKHRoaXMsIFwicmF0ZWNoYW5nZVwiKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBIVkUucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayA9IGZ1bmN0aW9uICh0aGlzOiBIVE1MVmlkZW9FbGVtZW50LCBjYik6IG51bWJlciB7XG4gICAgY29uc3QgcyA9IHNlc3Npb25zLmdldCh0aGlzKTtcbiAgICBpZiAoIXMpIHtcbiAgICAgIHJldHVybiBvcmlnUlZGQy5jYWxsKHRoaXMsIGNiKTtcbiAgICB9XG4gICAgY29uc3QgaWQgPSArK2hvb2sucnZmY1NlcTtcbiAgICBzLnJ2ZmMuc2V0KGlkLCBjYiBhcyBGcmFtZUNiKTtcbiAgICByZXR1cm4gaWQ7XG4gIH07XG4gIEhWRS5jYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2sgPSBmdW5jdGlvbiAodGhpczogSFRNTFZpZGVvRWxlbWVudCwgaWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHMgPSBzZXNzaW9ucy5nZXQodGhpcyk7XG4gICAgaWYgKCFzKSB7XG4gICAgICBvcmlnQ2FuY2VsUlZGQy5jYWxsKHRoaXMsIGlkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcy5ydmZjLmRlbGV0ZShpZCk7XG4gIH07XG4gIEhWRS5nZXRWaWRlb1BsYXliYWNrUXVhbGl0eSA9IGZ1bmN0aW9uICh0aGlzOiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgY29uc3QgcyA9IHNlc3Npb25zLmdldCh0aGlzKTtcbiAgICBpZiAoIXMpIHtcbiAgICAgIHJldHVybiBvcmlnUXVhbGl0eS5jYWxsKHRoaXMpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgY3JlYXRpb25UaW1lOiBwZXJmb3JtYW5jZS5ub3coKSxcbiAgICAgIHRvdGFsVmlkZW9GcmFtZXM6IHMucHJlc2VudGVkRnJhbWVzLFxuICAgICAgZHJvcHBlZFZpZGVvRnJhbWVzOiAwLFxuICAgICAgY29ycnVwdGVkVmlkZW9GcmFtZXM6IDAsXG4gICAgfSBhcyBWaWRlb1BsYXliYWNrUXVhbGl0eTtcbiAgfTtcbiAgSFZFLmxvYWQgPSBmdW5jdGlvbiAodGhpczogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgIGlmICghc2Vzc2lvbnMuaGFzKHRoaXMpKSB7XG4gICAgICByZXR1cm4gb3JpZ0xvYWQuY2FsbCh0aGlzKTtcbiAgICB9XG4gICAgaG9vay5kZXRhY2godGhpcyk7XG4gICAgZmlyZSh0aGlzLCBcImVtcHRpZWRcIik7XG4gICAgdGhpcy5fX3B1cExhc3RTcmMgPSB1bmRlZmluZWQ7XG4gICAgaG9vay5hdHRhY2godGhpcyk7XG4gIH07XG4gIGlmIChzcmNEZXNjPy5zZXQpIHtcbiAgICBjb25zdCBzcmNTZXQgPSBzcmNEZXNjLnNldDtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSFZFLCBcInNyY1wiLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IHNyY0Rlc2MuZ2V0LFxuICAgICAgc2V0KHRoaXM6IEhUTUxWaWRlb0VsZW1lbnQsIHY6IHN0cmluZykge1xuICAgICAgICBzcmNTZXQuY2FsbCh0aGlzLCB2KTtcbiAgICAgICAgaG9vay5vblNyY0NoYW5nZSh0aGlzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDYvMDIuXG5cbmltcG9ydCB0eXBlIHsgVmlkZW9Ib29rIH0gZnJvbSBcIi4vaG9va1wiO1xuaW1wb3J0IHtcbiAgQUhFQUQsXG4gIGZpcmUsXG4gIEhBVkVfRU5PVUdIX0RBVEEsXG4gIEhBVkVfTUVUQURBVEEsXG4gIEhBVkVfTk9USElORyxcbiAgTUVESUFfRVJSX0RFQ09ERSxcbiAgTUVESUFfRVJSX05FVFdPUkssXG4gIHR5cGUgTWVkaWFFcnJvckxpa2UsXG4gIE5FVFdPUktfRU1QVFksXG4gIE5FVFdPUktfSURMRSxcbiAgTkVUV09SS19MT0FESU5HLFxuICBORVRXT1JLX05PX1NPVVJDRSxcbiAgU0NIRU1FLFxuICBUQUcsXG4gIHR5cGUgVmlkZW9NZXRhLFxuICB0eXBlIFZpZGVvU3RhdGUsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNoQXJncyB7XG4gIHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50O1xuICBzdGF0ZTogVmlkZW9TdGF0ZTtcbiAgc3JjOiBzdHJpbmc7XG4gIGJpcnRoTXM6IG51bWJlcjtcbiAgbmF0aXZlOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3VmlkZW9TdGF0ZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCwgY3Y6IEhUTUxDYW52YXNFbGVtZW50KTogVmlkZW9TdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgbWV0YTogdW5kZWZpbmVkLFxuICAgIGN2LFxuICAgIGN0eDogY3YuZ2V0Q29udGV4dChcIjJkXCIpISxcbiAgICBwYXVzZWQ6ICEodmlkZW8uYXV0b3BsYXkgfHwgIXZpZGVvLnBhdXNlZCksXG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgZW5kZWQ6IGZhbHNlLFxuICAgIGxhc3REcmF3bklkeDogLTEsXG4gICAgZGVhZDogZmFsc2UsXG4gICAgb2JqZWN0Rml0OiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh2aWRlbykub2JqZWN0Rml0IHx8IFwiZmlsbFwiLFxuICAgIHJlYWR5U3RhdGU6IEhBVkVfTk9USElORyxcbiAgICBuZXR3b3JrU3RhdGU6IE5FVFdPUktfRU1QVFksXG4gICAgc2Vla2luZzogZmFsc2UsXG4gICAgd2FpdGluZzogZmFsc2UsXG4gICAgZXJyb3I6IHVuZGVmaW5lZCxcbiAgICBwcmVzZW50ZWRGcmFtZXM6IDAsXG4gICAgbWF4UmVhY2hlZDogMCxcbiAgICBydmZjOiBuZXcgTWFwKCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGZhaWxPcGVuKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBzdGF0ZTogVmlkZW9TdGF0ZSwgZXJyb3I6IE1lZGlhRXJyb3JMaWtlKTogdW5kZWZpbmVkIHtcbiAgc3RhdGUuZGVhZCA9IHRydWU7XG4gIHN0YXRlLmVycm9yID0gZXJyb3I7XG4gIHN0YXRlLm5ldHdvcmtTdGF0ZSA9IE5FVFdPUktfTk9fU09VUkNFO1xuICBjb25zb2xlLmVycm9yKFRBRywgYCR7ZXJyb3IubWVzc2FnZX0gc3JjPSR7dmlkZW8uc3JjIHx8IHZpZGVvLmN1cnJlbnRTcmN9YCk7XG4gIGZpcmUodmlkZW8sIFwiZXJyb3JcIik7XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8vIE9wZW4gdGhlIGZyYW1lIHNlcnZlciBzZXNzaW9uLCB0aGVuIGVtaXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQgbG9hZCBzZXF1ZW5jZSAocmVhZHlTdGF0ZS9uZXR3b3JrU3RhdGUgKyBldmVudHMpLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5TZXNzaW9uKGhvb2s6IFZpZGVvSG9vaywgYXJnczogQXR0YWNoQXJncyk6IFByb21pc2U8VmlkZW9TdGF0ZSB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB7IHZpZGVvLCBzdGF0ZSwgc3JjLCBiaXJ0aE1zLCBuYXRpdmUgfSA9IGFyZ3M7XG4gIGNvbnN0IGZwcyA9IE51bWJlci5wYXJzZUludCh2aWRlby5kYXRhc2V0W1wicHVwRnBzXCJdIHx8IFwiMzBcIiwgMTApO1xuICBzdGF0ZS5uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0xPQURJTkc7XG4gIGZpcmUodmlkZW8sIFwibG9hZHN0YXJ0XCIpO1xuICBsZXQgcmVzOiBSZXNwb25zZTtcbiAgdHJ5IHtcbiAgICBjb25zdCBxID0gbmF0aXZlID8gXCJcIiA6IGAmdz0ke3N0YXRlLmN2LndpZHRofSZoPSR7c3RhdGUuY3YuaGVpZ2h0fSZmaXQ9JHtlbmNvZGVVUklDb21wb25lbnQoc3RhdGUub2JqZWN0Rml0KX1gO1xuICAgIHJlcyA9IGF3YWl0IGZldGNoKGAke1NDSEVNRX1vcGVuP3NyYz0ke2VuY29kZVVSSUNvbXBvbmVudChzcmMpfSZmcHM9JHtmcHN9JHtxfWApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhaWxPcGVuKHZpZGVvLCBzdGF0ZSwge1xuICAgICAgY29kZTogTUVESUFfRVJSX05FVFdPUkssXG4gICAgICBtZXNzYWdlOiBgb3BlbiBmYWlsZWQ6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpfWAsXG4gICAgfSk7XG4gIH1cbiAgaWYgKGhvb2suc2Vzc2lvbnMuZ2V0KHZpZGVvKSAhPT0gc3RhdGUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmICghcmVzLm9rKSB7XG4gICAgcmV0dXJuIGZhaWxPcGVuKHZpZGVvLCBzdGF0ZSwge1xuICAgICAgY29kZTogTUVESUFfRVJSX0RFQ09ERSxcbiAgICAgIG1lc3NhZ2U6IGBvcGVuICR7cmVzLnN0YXR1c306ICR7YXdhaXQgcmVzLnRleHQoKX1gLFxuICAgIH0pO1xuICB9XG4gIGNvbnN0IG1ldGEgPSAoYXdhaXQgcmVzLmpzb24oKSkgYXMgVmlkZW9NZXRhO1xuICBpZiAoaG9vay5zZXNzaW9ucy5nZXQodmlkZW8pICE9PSBzdGF0ZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgc3RhdGUubWV0YSA9IG1ldGE7XG4gIHN0YXRlLmN1cnJlbnRUaW1lID0gc3RhdGUucGF1c2VkID8gMCA6IE1hdGgubWF4KDAsIChob29rLmN1cnJNcyAtIGJpcnRoTXMpIC8gMTAwMCk7XG4gIC8vIFRoZSBzdHViIG1lZGlhIHVzdWFsbHkgbG9hZHMgbmF0aXZlbHkgZmlyc3Q7IEJsaW5rIHRoZW4gb3ducyB0aGUgcmVhbCBldmVudCBzZXF1ZW5jZSDigJQgZG9uJ3QgZHVwbGljYXRlIGl0LlxuICBjb25zdCBuYXRpdmVNZXRhID0gdmlkZW8udmlkZW9XaWR0aCA+IDA7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2aWRlbywgXCJ2aWRlb1dpZHRoXCIsIHtcbiAgICB2YWx1ZTogbWV0YS53aWR0aCxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gIH0pO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmlkZW8sIFwidmlkZW9IZWlnaHRcIiwge1xuICAgIHZhbHVlOiBtZXRhLmhlaWdodCxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gIH0pO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmlkZW8sIFwiZHVyYXRpb25cIiwge1xuICAgIHZhbHVlOiBtZXRhLmR1cmF0aW9uLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgfSk7XG4gIHN0YXRlLnJlYWR5U3RhdGUgPSBIQVZFX01FVEFEQVRBO1xuICBpZiAoIW5hdGl2ZU1ldGEpIHtcbiAgICBmaXJlKHZpZGVvLCBcImR1cmF0aW9uY2hhbmdlXCIpO1xuICAgIGZpcmUodmlkZW8sIFwibG9hZGVkbWV0YWRhdGFcIik7XG4gIH1cbiAgc3RhdGUucmVhZHlTdGF0ZSA9IEhBVkVfRU5PVUdIX0RBVEE7XG4gIGlmICghbmF0aXZlTWV0YSkge1xuICAgIGZpcmUodmlkZW8sIFwibG9hZGVkZGF0YVwiKTtcbiAgICBmaXJlKHZpZGVvLCBcImNhbnBsYXlcIik7XG4gICAgZmlyZSh2aWRlbywgXCJjYW5wbGF5dGhyb3VnaFwiKTtcbiAgfVxuICBzdGF0ZS5uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0lETEU7XG4gIGlmICghbmF0aXZlTWV0YSkge1xuICAgIGZpcmUodmlkZW8sIFwic3VzcGVuZFwiKTtcbiAgICBpZiAoIXN0YXRlLnBhdXNlZCkge1xuICAgICAgZmlyZSh2aWRlbywgXCJwbGF5XCIpO1xuICAgICAgZmlyZSh2aWRlbywgXCJwbGF5aW5nXCIpO1xuICAgIH1cbiAgfVxuICBob29rLmNhY2hlLnByZWZldGNoKHN0YXRlLCAxLCBBSEVBRCk7XG4gIHJldHVybiBzdGF0ZTtcbn1cbiIsIi8vIENyZWF0ZWQgYnkgQXV0b2tha2EgKHFxMTkwOTY5ODQ5NEBnbWFpbC5jb20pIG9uIDIwMjYvMDYvMDIuXG5cbmltcG9ydCB7IGFkdmFuY2UgfSBmcm9tIFwiLi9kcml2ZXJcIjtcbmltcG9ydCB7IEZyYW1lQ2FjaGUgfSBmcm9tIFwiLi9mcmFtZV9jYWNoZVwiO1xuaW1wb3J0IHsgaW5zdGFsbE1lZGlhU2hpbSB9IGZyb20gXCIuL21lZGlhX3NoaW1cIjtcbmltcG9ydCB7IHNldHVwQ2FudmFzIH0gZnJvbSBcIi4vb3ZlcmxheVwiO1xuaW1wb3J0IHsgbmV3VmlkZW9TdGF0ZSwgb3BlblNlc3Npb24gfSBmcm9tIFwiLi9zZXNzaW9uXCI7XG5pbXBvcnQgeyBmaXJlLCB0eXBlIFZpZGVvU3RhdGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fcHVwX3ZpZGVvX18/OiB7IGFkdmFuY2U6IChtczogbnVtYmVyKSA9PiBQcm9taXNlPHVua25vd24+OyByZWFkeTogKCkgPT4gUHJvbWlzZTx2b2lkPiB9O1xuICB9XG4gIGludGVyZmFjZSBIVE1MVmlkZW9FbGVtZW50IHtcbiAgICBfX3B1cExhc3RTcmM/OiBzdHJpbmc7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZpZGVvSG9vayB7XG4gIHJlYWRvbmx5IHNlc3Npb25zID0gbmV3IFdlYWtNYXA8SFRNTFZpZGVvRWxlbWVudCwgVmlkZW9TdGF0ZT4oKTtcbiAgcmVhZG9ubHkgYXR0YWNoaW5nID0gbmV3IFdlYWtNYXA8SFRNTFZpZGVvRWxlbWVudCwgUHJvbWlzZTxWaWRlb1N0YXRlIHwgdW5kZWZpbmVkPj4oKTtcbiAgLy8gRW51bWVyYWJsZSBtaXJyb3Igb2YgaW4tZmxpZ2h0IG9wZW5zIChXZWFrTWFwIGlzbid0IGl0ZXJhYmxlKSBzbyByZWFkeSgpIGNhbiBhd2FpdCB0aGVtLlxuICByZWFkb25seSBvcGVuaW5nID0gbmV3IFNldDxQcm9taXNlPHVua25vd24+PigpO1xuICByZWFkb25seSBjYWNoZSA9IG5ldyBGcmFtZUNhY2hlKCk7XG4gIHJ2ZmNTZXEgPSAwO1xuICBjdXJyTXMgPSAwO1xuICBwcml2YXRlIF9sYXN0U25hcHNob3QgPSBuZXcgV2Vha01hcDxIVE1MVmlkZW9FbGVtZW50LCBPZmZzY3JlZW5DYW52YXM+KCk7XG5cbiAgaW5zdGFsbCgpOiB2b2lkIHtcbiAgICBpbnN0YWxsTWVkaWFTaGltKHRoaXMpO1xuICAgIHRoaXMuc2Nhbihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpO1xuICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRzKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG0gb2YgbXV0cykge1xuICAgICAgICBpZiAobS50eXBlID09PSBcImF0dHJpYnV0ZXNcIiAmJiBtLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQgJiYgbS5hdHRyaWJ1dGVOYW1lID09PSBcInNyY1wiKSB7XG4gICAgICAgICAgdGhpcy5vblNyY0NoYW5nZShtLnRhcmdldCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgbS5hZGRlZE5vZGVzLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgICBpZiAobiBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2NhbihuKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBtLnJlbW92ZWROb2Rlcy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICAgICAgaWYgKG4gaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmRldGFjaChuKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pLm9ic2VydmUoZG9jdW1lbnQsIHsgc3VidHJlZTogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFtcInNyY1wiXSB9KTtcbiAgICB3aW5kb3cuX19wdXBfdmlkZW9fXyA9IHsgYWR2YW5jZTogKG1zKSA9PiBhZHZhbmNlKHRoaXMsIG1zKSwgcmVhZHk6ICgpID0+IHRoaXMucmVhZHkoKSB9O1xuICB9XG5cbiAgYXR0YWNoKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBuYXRpdmUgPSBmYWxzZSk6IFByb21pc2U8VmlkZW9TdGF0ZSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5zZXNzaW9ucy5nZXQodmlkZW8pO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShleGlzdGluZyk7XG4gICAgfVxuICAgIGNvbnN0IHBlbmRpbmcgPSB0aGlzLmF0dGFjaGluZy5nZXQodmlkZW8pO1xuICAgIGlmIChwZW5kaW5nKSB7XG4gICAgICByZXR1cm4gcGVuZGluZztcbiAgICB9XG4gICAgY29uc3Qgc3JjID0gdmlkZW8uc3JjIHx8IHZpZGVvLmN1cnJlbnRTcmM7XG4gICAgaWYgKCFzcmMpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgaWYgKC9eKGJsb2I6fGRhdGE6fG1lZGlhc3RyZWFtOikvaS50ZXN0KHNyYykpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgY29uc3QgY3YgPSBzZXR1cENhbnZhcyh2aWRlbywgdGhpcy5fbGFzdFNuYXBzaG90LmdldCh2aWRlbykpO1xuICAgIGNvbnN0IHN0YXRlID0gbmV3VmlkZW9TdGF0ZSh2aWRlbywgY3YpO1xuICAgIHRoaXMuc2Vzc2lvbnMuc2V0KHZpZGVvLCBzdGF0ZSk7XG4gICAgY29uc3QgcCA9IG9wZW5TZXNzaW9uKHRoaXMsIHsgdmlkZW8sIHN0YXRlLCBzcmMsIGJpcnRoTXM6IHRoaXMuY3Vyck1zLCBuYXRpdmUgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLmF0dGFjaGluZy5kZWxldGUodmlkZW8pO1xuICAgICAgdGhpcy5vcGVuaW5nLmRlbGV0ZShwKTtcbiAgICB9KTtcbiAgICB0aGlzLmF0dGFjaGluZy5zZXQodmlkZW8sIHApO1xuICAgIHRoaXMub3BlbmluZy5hZGQocCk7XG4gICAgcmV0dXJuIHA7XG4gIH1cblxuICAvLyBBd2FpdCBvbmx5IHRoZSBvcGVucyBpbiBmbGlnaHQgcmlnaHQgbm93IOKAlCBuZXZlciBjaGFzZSBuZXdseS1zcGF3bmVkIG9uZXMsIG9yIGEgcmV0cnlpbmcgcGFnZSBsb29wcyBmb3JldmVyLlxuICBhc3luYyByZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoWy4uLnRoaXMub3BlbmluZ10pO1xuICB9XG5cbiAgcmVzdW1lKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBzdGF0ZTogVmlkZW9TdGF0ZSk6IHZvaWQge1xuICAgIGlmICghc3RhdGUucGF1c2VkICYmICFzdGF0ZS5lbmRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdGF0ZS5wYXVzZWQgPSBmYWxzZTtcbiAgICBzdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIGZpcmUodmlkZW8sIFwicGxheVwiKTtcbiAgICBmaXJlKHZpZGVvLCBcInBsYXlpbmdcIik7XG4gIH1cblxuICBkZXRhY2godmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHZpZGVvKTtcbiAgICBpZiAoIXN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChzdGF0ZS5tZXRhKSB7XG4gICAgICBpZiAoc3RhdGUubGFzdERyYXduSWR4ID49IDApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBzbmFwID0gbmV3IE9mZnNjcmVlbkNhbnZhcyhzdGF0ZS5jdi53aWR0aCwgc3RhdGUuY3YuaGVpZ2h0KTtcbiAgICAgICAgICBjb25zdCBzY3R4ID0gc25hcC5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgaWYgKCFzY3R4KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJubyAyZCBjb250ZXh0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzY3R4LmRyYXdJbWFnZShzdGF0ZS5jdiwgMCwgMCk7XG4gICAgICAgICAgdGhpcy5fbGFzdFNuYXBzaG90LnNldCh2aWRlbywgc25hcCk7XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgIH1cbiAgICAgIHRoaXMuY2FjaGUucmVsZWFzZShzdGF0ZS5tZXRhLmlkLCBzdGF0ZSk7XG4gICAgfVxuICAgIHN0YXRlLmN2LnJlbW92ZSgpO1xuICAgIHRoaXMuc2Vzc2lvbnMuZGVsZXRlKHZpZGVvKTtcbiAgICB0aGlzLmF0dGFjaGluZy5kZWxldGUodmlkZW8pO1xuICB9XG5cbiAgb25TcmNDaGFuZ2UodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzcmMgPSB2aWRlby5zcmMgfHwgdmlkZW8uY3VycmVudFNyYyB8fCBcIlwiO1xuICAgIGlmICh2aWRlby5fX3B1cExhc3RTcmMgPT09IHNyYykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2aWRlby5fX3B1cExhc3RTcmMgPSBzcmM7XG4gICAgaWYgKHRoaXMuc2Vzc2lvbnMuaGFzKHZpZGVvKSkge1xuICAgICAgdGhpcy5kZXRhY2godmlkZW8pO1xuICAgIH1cbiAgICB0aGlzLmF0dGFjaCh2aWRlbyk7XG4gIH1cblxuICAvLyBSZS1vcGVuIGF0IG5hdGl2ZSByZXNvbHV0aW9uICh0aGUgZWxlbWVudCBvdXRncmV3IHRoZSBkb3duc2NhbGVkIGRlY29kZSksIHByZXNlcnZpbmcgcGxheWJhY2sgc3RhdGUuXG4gIHJlYXR0YWNoKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBzdGF0ZTogVmlkZW9TdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHQgPSBzdGF0ZS5jdXJyZW50VGltZTtcbiAgICBjb25zdCBwYXVzZWQgPSBzdGF0ZS5wYXVzZWQ7XG4gICAgY29uc3QgZW5kZWQgPSBzdGF0ZS5lbmRlZDtcbiAgICB0aGlzLmRldGFjaCh2aWRlbyk7XG4gICAgdm9pZCB0aGlzLmF0dGFjaCh2aWRlbywgdHJ1ZSkudGhlbigobnMpID0+IHtcbiAgICAgIGlmICghbnMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbnMuY3VycmVudFRpbWUgPSB0O1xuICAgICAgbnMucGF1c2VkID0gcGF1c2VkO1xuICAgICAgbnMuZW5kZWQgPSBlbmRlZDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nhbihyb290OiBFbGVtZW50IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghcm9vdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocm9vdC50YWdOYW1lID09PSBcIlZJREVPXCIpIHtcbiAgICAgIHRoaXMuYXR0YWNoKHJvb3QgYXMgSFRNTFZpZGVvRWxlbWVudCk7XG4gICAgfVxuICAgIGlmIChyb290LnF1ZXJ5U2VsZWN0b3JBbGwpIHtcbiAgICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbChcInZpZGVvXCIpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgdGhpcy5hdHRhY2godik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxWaWRlb0hvb2soKTogdm9pZCB7XG4gIGlmICh3aW5kb3cuX19wdXBfdmlkZW9fXykge1xuICAgIHJldHVybjtcbiAgfVxuICBuZXcgVmlkZW9Ib29rKCkuaW5zdGFsbCgpO1xufVxuIiwiLy8gQ3JlYXRlZCBieSBBdXRva2FrYSAocXExOTA5Njk4NDk0QGdtYWlsLmNvbSkgb24gMjAyNi8wNS8yNi5cblxuaW1wb3J0IHsgaW5zdGFsbEF1ZGlvU2hpbSB9IGZyb20gXCIuL2F1ZGlvX3NoaW1cIjtcbmltcG9ydCB7IGluc3RhbGxIZkhvb2sgfSBmcm9tIFwiLi9oZl9ob29rXCI7XG5pbXBvcnQgeyBpbnN0YWxsVGlja0hvb2sgfSBmcm9tIFwiLi90aWNrX2hvb2tcIjtcbmltcG9ydCB7IGluc3RhbGxWaWRlb0hvb2sgfSBmcm9tIFwiLi92aWRlby9ob29rXCI7XG5cbmlmICh3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcCkge1xuICBpbnN0YWxsQXVkaW9TaGltKCk7XG4gIGluc3RhbGxIZkhvb2soKTtcbiAgaW5zdGFsbFRpY2tIb29rKCk7XG4gIGluc3RhbGxWaWRlb0hvb2soKTtcbn1cbiJdfQ==