@prisma/studio-core 0.0.0-dev.202601192201 → 0.0.0-dev.202601192212

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.
@@ -6,6 +6,6 @@ function require(mod) {
6
6
  if (mod === 'react-dom') return ___react_dom___;
7
7
  throw new Error(`Unknown module ${mod}`);
8
8
  }
9
- import"../../chunk-EGQMTZOQ.js";import{a as l}from"../../chunk-YVYADI4Y.js";import{A as S,B as F,C as q,D as z,q as A,v as j,w as P,x as Y,z as k}from"../../chunk-WPYTOQRX.js";import{a as oe}from"../../chunk-3NI2JGEP.js";import{e as _}from"../../chunk-53FUZ62K.js";_();_();_();var $={bigint:{group:"numeric"},binary:{group:"string"},bit:{group:"raw"},blob:{group:"string"},char:{group:"string"},"char binary":{group:"string"},date:{format:"YYYY-MM-DD",group:"datetime"},datetime:{format:"YYYY-MM-DD HH:mm:ss.SSS",group:"datetime"},dec:{group:"numeric"},decimal:{group:"numeric"},double:{group:"numeric"},"double precision":{group:"numeric"},enum:{group:"enum"},fixed:{group:"numeric"},float:{group:"numeric"},geometry:{group:"raw"},geometrycollection:{group:"raw"},int:{group:"numeric"},integer:{group:"numeric"},json:{group:"json"},linestring:{group:"raw"},long:{group:"string"},"long varchar":{group:"string"},longblob:{group:"string"},longtext:{group:"string"},longvarbinary:{group:"string"},longvarchar:{group:"string"},mediumblob:{group:"string"},mediumint:{group:"numeric"},mediumtext:{group:"string"},multilinestring:{group:"raw"},multipoint:{group:"raw"},multipolygon:{group:"raw"},numeric:{group:"numeric"},point:{group:"raw"},polygon:{group:"raw"},real:{group:"numeric"},set:{group:"raw"},smallint:{group:"numeric"},text:{group:"string"},time:{format:"HH:mm:ss.SSS",group:"time"},timestamp:{format:"YYYY-MM-DD HH:mm:ss.SSS",group:"datetime"},tinyblob:{group:"string"},tinyint:{group:"numeric"},tinytext:{group:"string"},varbinary:{group:"string"},varchar:{group:"string"},"varchar binary":{group:"string"},vector:{group:"raw"},year:{format:"YYYY",group:"numeric"}};_();_();function b(n){return Y({...n,Adapter:P,QueryCompiler:j})}function v(n,r){let{rows:o,table:{columns:u,name:e}}=n,t=b(r);return k(t.deleteFrom(e).$call(S(o,u)).$castTo())}function Q(n,r){let{rows:o,table:{columns:u,name:e}}=n,t=b(r);return k(t.insertInto(e).values(q({columns:u,context:"insert",supportsDefaultKeyword:!0,values:o})).$castTo())}function I(n,r){let{criteria:o,table:{columns:u,name:e}}=n,t=b(r);return k(t.selectFrom(e).$call(S(o,u)).select(Object.keys(u)).select(V().as("__ps_inserted_at__")))}function G(n,r){let{changes:o,row:u,table:{columns:e,name:t}}=n,a=b(r);return k(a.selectFrom(t).$call(S([{...u,...o}],e)).select(Object.keys(e)).select(V().as("__ps_updated_at__")))}function H(n,r){let{filter:o={after:"and",filters:[],kind:"FilterGroup"},pageIndex:u,pageSize:e,sortOrder:t,table:{columns:a,name:m}}=n,f=b(r),c=z(o.filters,a),E="__ps_agg__",g="__ps_count__",y=f.selectFrom(m).where(c).select(i=>i.cast(i.fn.coalesce(i.fn.countAll(),A.lit(0)),"char").as(g));return k(f.with(E,()=>y).selectFrom(m).innerJoin(E,i=>i.onTrue()).where(c).select(`${E}.${g}`).select(Object.keys(a)).$call(i=>t.reduce((T,s)=>T.orderBy(s.column,s.direction),i)).limit(e).offset(A.lit(BigInt(u)*BigInt(e))))}function fe(){return[{id:1,created_at:new Date("2025-01-27T00:00:00.000Z"),deleted_at:null,role:"admin",name:"Alice",name_role:"Alice_admin",__ps_count__:"2"},{id:2,created_at:new Date("2025-01-26T23:00:00.000Z"),deleted_at:null,role:"member",name:"Bob",name_role:"Bob_member",__ps_count__:"2"}]}function K(n,r){let{changes:o,row:u,table:{columns:e,name:t,schema:a}}=n,m=b(r);return k(m.withSchema(a).updateTable(t).set(q({columns:e,context:"update",supportsDefaultKeyword:!0,values:o})).$call(S([u],e)).$castTo())}function V(){return A`cast(unix_timestamp(now(3)) * 1000 as unsigned)`}_();_();function J(n){return A`json_object(${A.join(Object.keys(n).flatMap(r=>[A.lit(r),n[r]]))})`}function W(n){let r=A`database()`,u=b(n).selectFrom("information_schema.columns as c").leftJoin("information_schema.KEY_COLUMN_USAGE as kcu",e=>e.on("kcu.TABLE_SCHEMA","=",r).onRef("kcu.TABLE_NAME","=","c.TABLE_NAME").onRef("kcu.COLUMN_NAME","=","c.COLUMN_NAME").on("kcu.POSITION_IN_UNIQUE_CONSTRAINT","is not",null)).leftJoin("information_schema.KEY_COLUMN_USAGE as pk_kcu",e=>e.on("pk_kcu.TABLE_SCHEMA","=",r).onRef("pk_kcu.TABLE_NAME","=","c.TABLE_NAME").onRef("pk_kcu.COLUMN_NAME","=","c.COLUMN_NAME").on("pk_kcu.CONSTRAINT_NAME","=","PRIMARY")).where("c.TABLE_SCHEMA","=",r).select(["c.COLUMN_DEFAULT as default","c.COLUMN_NAME as name","c.COLUMN_TYPE as datatype","c.ORDINAL_POSITION as position","c.TABLE_NAME","kcu.REFERENCED_TABLE_NAME as fk_table","kcu.REFERENCED_COLUMN_NAME as fk_column","pk_kcu.ORDINAL_POSITION as pk"]).select(e=>[e("c.EXTRA","=","auto_increment").as("autoincrement"),e("c.EXTRA","in",["on update CURRENT_TIMESTAMP","STORED GENERATED","VIRTUAL GENERATED"]).as("computed"),e("c.IS_NULLABLE","=","YES").as("nullable")]);return k(b(n).with("cols",()=>u).selectFrom("information_schema.tables as t").innerJoin("cols as c",e=>e.onRef("c.TABLE_NAME","=","t.TABLE_NAME")).where("t.TABLE_SCHEMA","=",r).where("t.TABLE_TYPE","in",["BASE TABLE","VIEW"]).groupBy([r,"t.TABLE_NAME","t.TABLE_TYPE"]).select([r.as("schema"),"t.TABLE_NAME as name","t.TABLE_TYPE as type"]).$narrowType().select(e=>e.fn("json_arrayagg",[J({autoincrement:e.ref("c.autoincrement"),computed:e.ref("c.computed"),datatype:e.ref("c.datatype"),default:e.ref("c.default"),fk_column:e.ref("c.fk_column"),fk_table:e.ref("c.fk_table"),name:e.ref("c.name"),position:e.ref("c.position"),pk:e.ref("c.pk"),nullable:e.ref("c.nullable")})]).as("columns")).orderBy("t.TABLE_SCHEMA").orderBy("t.TABLE_NAME").orderBy("t.TABLE_TYPE"))}function X(){return[{columns:[{autoincrement:1,computed:0,datatype:"int",default:null,fk_column:null,fk_table:null,name:"id",nullable:0,pk:1,position:1},{autoincrement:0,computed:0,datatype:"binary(16)",default:"uuid_to_bin(uuid())",fk_column:null,fk_table:null,name:"uuid",nullable:1,pk:null,position:2},{autoincrement:0,computed:0,datatype:"varchar(255)",default:null,fk_column:null,fk_table:null,name:"name",nullable:1,pk:null,position:3},{autoincrement:0,computed:1,datatype:"text",default:null,fk_column:null,fk_table:null,name:"id_name",nullable:1,pk:null,position:4}],name:"animals",schema:"studio",type:"BASE TABLE"},{columns:[{autoincrement:0,computed:0,datatype:"char(36)",default:"uuid()",fk_column:null,fk_table:null,name:"id",nullable:0,pk:1,position:1},{autoincrement:0,computed:0,datatype:"text",default:null,fk_column:null,fk_table:null,name:"name",nullable:0,pk:2,position:2},{autoincrement:0,computed:0,datatype:"timestamp",default:"CURRENT_TIMESTAMP",fk_column:null,fk_table:null,name:"created_at",nullable:1,pk:null,position:3}],name:"composite_pk",schema:"studio",type:"BASE TABLE"},{columns:[{autoincrement:1,computed:0,datatype:"int",default:null,fk_column:null,fk_table:null,name:"id",nullable:0,pk:1,position:1},{autoincrement:0,computed:0,datatype:"timestamp",default:"current_timestamp",fk_column:null,fk_table:null,name:"created_at",nullable:1,pk:null,position:2},{autoincrement:0,computed:0,datatype:"timestamp",default:null,fk_column:null,fk_table:null,name:"deleted_at",nullable:1,pk:null,position:3},{autoincrement:0,computed:0,datatype:"text",default:null,fk_column:null,fk_table:null,name:"role",nullable:1,pk:null,position:4},{autoincrement:0,computed:0,datatype:"text",default:null,fk_column:null,fk_table:null,name:"name",nullable:1,pk:null,position:5},{autoincrement:0,computed:1,datatype:"text",default:null,fk_column:null,fk_table:null,name:"name_role",nullable:1,pk:null,position:6}],name:"users",schema:"studio",type:"BASE TABLE"}]}function Z(n){let r=b(n),o=A`@@session.time_zone`;return k(r.selectNoFrom(r.case().when(o,"=","SYSTEM").then(A`@@system_time_zone`).else(o).end().as("timezone")).$narrowType())}function ee(){return[{timezone:"UTC"}]}function Le(n){let{executor:r,...o}=n;return{async delete(u,e){try{let t=v(u,o),[a]=await r.execute(t,e);return a?l({error:a,query:t}):[null,{...u,query:t}]}catch(t){return l({error:t})}},async insert(u,e){try{let{rows:t,table:a}=u,{columns:m}=a,f=Object.values(m).find(s=>s.isAutoincrement),c=t.map(s=>F(s,m)),E=c.some(s=>{let p=Object.values(s);return p.length===0||p.some(d=>d==null)});if(!f&&E)return l({error:new Error("Cannot proceed with the insertion, some rows cannot be refetched after insertion."),query:Q(u,o)});if(!E){let s=Q(u,o),p=I({criteria:c,table:a},o),d=[s,p],[[h],N]=await r.executeSequence(d,e),R=L(d);if(h)return l({error:h,query:R});let[M,O]=N;return M?l({error:new Error("Failed to refetch inserted rows - please refresh.",{cause:M}),query:R}):[null,{rows:O,query:R}]}let g=await Promise.all(t.map(async s=>{let p=Q({rows:[s],table:a},o),[d,h]=await r.execute(p,e);if(d)return l({error:d,query:p});let{name:N}=f,R=s[N]||h[0]?.insertId;if(!R)return l({error:new Error("Could not determine value for autoincrement column to refetch inserted row."),query:p});let M=I({criteria:[{[N]:R}],table:{...a,columns:Object.values(m).reduce((x,D)=>{let{name:U}=D;return x[U]={...D,pkPosition:U===N?1:null},x},{})}},o),[O,re]=await r.execute(M,e),B=L([p,M]);if(O)return console.error("Error refetching inserted row:",O),l({error:new Error("Failed to refetch inserted row - please refresh.",{cause:O}),query:B});let[C]=re;return C?[null,{row:C,query:B}]:l({error:new Error("Refetch query returned no results for inserted row."),query:B})})),y=[],i=null,T=[];for(let s=0;s<g.length;s++){let[p,d]=g[s];p?(T.push([s,p]),p.query&&(i=i?L([i,p.query]):p.query)):(y.push(d.row),d.query&&(i=i?L([i,d.query]):d.query))}return T.length>0?l({error:new AggregateError(T.map(([,s])=>s),`Row${T.length>1?"s":""} ${T.map(([s])=>s).join(", ")} could not be inserted or refetched.`),query:i}):[null,{rows:y,query:i}]}catch(t){return l({error:t})}},async introspect(u){try{let e=W(n),t=Z(n),[[a,m],[f,c]]=await Promise.all([r.execute(e,u),r.execute(t,u)]);if(a)return l({error:a,query:e});if(f)return l({error:f,query:t});let E=c[0]?.timezone;return E?[null,te({query:e,tables:m,timezone:E})]:l({error:new Error("Timezone not found"),query:t})}catch(e){return l({error:e})}},async query(u,e){try{let t=H(u,o),[a,m]=await r.execute(t,e);return a?l({error:a,query:t}):[null,{filteredRowCount:m[0]?.__ps_count__||"0",rows:m,query:t}]}catch(t){return l({error:t})}},async update(u,e){try{let t=K(u,o),a=G(u,o),[[m],f]=await r.executeSequence([t,a],e);if(m)return l({error:m,query:t});let[c,E]=f;if(c)return l({error:c,query:t});let[g]=E;return g?[null,{row:g,query:t}]:l({error:new Error("Updated row not found"),query:t})}catch(t){return l({error:t})}}}}function te(n){let{query:r,tables:o,timezone:u}=n;return o.reduce((e,t)=>{let{schemas:a}=e,{columns:m,name:f,schema:c}=t,E=m.sort((g,y)=>g.position-y.position).reduce((g,y)=>{let{datatype:i,default:T,name:s}=y,p=i.indexOf("("),d=(p>-1?i.substring(0,p):i).trim().toLowerCase(),h=!!y.autoincrement,N=!!y.computed,R=!!y.nullable;return{...g,[s]:{datatype:{...$[d]||{group:"raw"},isArray:!1,isNative:!0,name:d,options:d==="enum"?i.slice(6,-2).split("','"):[],schema:c},defaultValue:T,fkColumn:y.fk_column,fkSchema:c,fkTable:y.fk_table,isAutoincrement:h,isComputed:N,isRequired:!R&&!h&&!N&&T==null,name:s,nullable:R,pkPosition:y.pk,schema:c,table:f}}},{});return a[c]===void 0&&(a[c]={name:c,tables:{}}),a[c].tables[f]={columns:E,name:f,schema:c},e},{filterOperators:ne,query:r,schemas:{},timezone:u})}var ne=["=","!=",">",">=","<","<=","is","is not","like","not like"];function Be(){let n=X(),[{timezone:r}]=ee();return te({tables:n,timezone:r,query:{parameters:[],sql:"<mocked>"}})}function L(n){let[r,o]=n;return{parameters:r.parameters.concat(o.parameters),sql:`${r.sql};
9
+ import"../../chunk-EGQMTZOQ.js";import{a as oe}from"../../chunk-3NI2JGEP.js";import{a as l}from"../../chunk-YVYADI4Y.js";import{A as S,B as F,C as q,D as z,q as A,v as j,w as P,x as Y,z as k}from"../../chunk-WPYTOQRX.js";import{e as _}from"../../chunk-53FUZ62K.js";_();_();_();var $={bigint:{group:"numeric"},binary:{group:"string"},bit:{group:"raw"},blob:{group:"string"},char:{group:"string"},"char binary":{group:"string"},date:{format:"YYYY-MM-DD",group:"datetime"},datetime:{format:"YYYY-MM-DD HH:mm:ss.SSS",group:"datetime"},dec:{group:"numeric"},decimal:{group:"numeric"},double:{group:"numeric"},"double precision":{group:"numeric"},enum:{group:"enum"},fixed:{group:"numeric"},float:{group:"numeric"},geometry:{group:"raw"},geometrycollection:{group:"raw"},int:{group:"numeric"},integer:{group:"numeric"},json:{group:"json"},linestring:{group:"raw"},long:{group:"string"},"long varchar":{group:"string"},longblob:{group:"string"},longtext:{group:"string"},longvarbinary:{group:"string"},longvarchar:{group:"string"},mediumblob:{group:"string"},mediumint:{group:"numeric"},mediumtext:{group:"string"},multilinestring:{group:"raw"},multipoint:{group:"raw"},multipolygon:{group:"raw"},numeric:{group:"numeric"},point:{group:"raw"},polygon:{group:"raw"},real:{group:"numeric"},set:{group:"raw"},smallint:{group:"numeric"},text:{group:"string"},time:{format:"HH:mm:ss.SSS",group:"time"},timestamp:{format:"YYYY-MM-DD HH:mm:ss.SSS",group:"datetime"},tinyblob:{group:"string"},tinyint:{group:"numeric"},tinytext:{group:"string"},varbinary:{group:"string"},varchar:{group:"string"},"varchar binary":{group:"string"},vector:{group:"raw"},year:{format:"YYYY",group:"numeric"}};_();_();function b(n){return Y({...n,Adapter:P,QueryCompiler:j})}function v(n,r){let{rows:o,table:{columns:u,name:e}}=n,t=b(r);return k(t.deleteFrom(e).$call(S(o,u)).$castTo())}function Q(n,r){let{rows:o,table:{columns:u,name:e}}=n,t=b(r);return k(t.insertInto(e).values(q({columns:u,context:"insert",supportsDefaultKeyword:!0,values:o})).$castTo())}function I(n,r){let{criteria:o,table:{columns:u,name:e}}=n,t=b(r);return k(t.selectFrom(e).$call(S(o,u)).select(Object.keys(u)).select(V().as("__ps_inserted_at__")))}function G(n,r){let{changes:o,row:u,table:{columns:e,name:t}}=n,a=b(r);return k(a.selectFrom(t).$call(S([{...u,...o}],e)).select(Object.keys(e)).select(V().as("__ps_updated_at__")))}function H(n,r){let{filter:o={after:"and",filters:[],kind:"FilterGroup"},pageIndex:u,pageSize:e,sortOrder:t,table:{columns:a,name:m}}=n,f=b(r),c=z(o.filters,a),E="__ps_agg__",g="__ps_count__",y=f.selectFrom(m).where(c).select(i=>i.cast(i.fn.coalesce(i.fn.countAll(),A.lit(0)),"char").as(g));return k(f.with(E,()=>y).selectFrom(m).innerJoin(E,i=>i.onTrue()).where(c).select(`${E}.${g}`).select(Object.keys(a)).$call(i=>t.reduce((T,s)=>T.orderBy(s.column,s.direction),i)).limit(e).offset(A.lit(BigInt(u)*BigInt(e))))}function fe(){return[{id:1,created_at:new Date("2025-01-27T00:00:00.000Z"),deleted_at:null,role:"admin",name:"Alice",name_role:"Alice_admin",__ps_count__:"2"},{id:2,created_at:new Date("2025-01-26T23:00:00.000Z"),deleted_at:null,role:"member",name:"Bob",name_role:"Bob_member",__ps_count__:"2"}]}function K(n,r){let{changes:o,row:u,table:{columns:e,name:t,schema:a}}=n,m=b(r);return k(m.withSchema(a).updateTable(t).set(q({columns:e,context:"update",supportsDefaultKeyword:!0,values:o})).$call(S([u],e)).$castTo())}function V(){return A`cast(unix_timestamp(now(3)) * 1000 as unsigned)`}_();_();function J(n){return A`json_object(${A.join(Object.keys(n).flatMap(r=>[A.lit(r),n[r]]))})`}function W(n){let r=A`database()`,u=b(n).selectFrom("information_schema.columns as c").leftJoin("information_schema.KEY_COLUMN_USAGE as kcu",e=>e.on("kcu.TABLE_SCHEMA","=",r).onRef("kcu.TABLE_NAME","=","c.TABLE_NAME").onRef("kcu.COLUMN_NAME","=","c.COLUMN_NAME").on("kcu.POSITION_IN_UNIQUE_CONSTRAINT","is not",null)).leftJoin("information_schema.KEY_COLUMN_USAGE as pk_kcu",e=>e.on("pk_kcu.TABLE_SCHEMA","=",r).onRef("pk_kcu.TABLE_NAME","=","c.TABLE_NAME").onRef("pk_kcu.COLUMN_NAME","=","c.COLUMN_NAME").on("pk_kcu.CONSTRAINT_NAME","=","PRIMARY")).where("c.TABLE_SCHEMA","=",r).select(["c.COLUMN_DEFAULT as default","c.COLUMN_NAME as name","c.COLUMN_TYPE as datatype","c.ORDINAL_POSITION as position","c.TABLE_NAME","kcu.REFERENCED_TABLE_NAME as fk_table","kcu.REFERENCED_COLUMN_NAME as fk_column","pk_kcu.ORDINAL_POSITION as pk"]).select(e=>[e("c.EXTRA","=","auto_increment").as("autoincrement"),e("c.EXTRA","in",["on update CURRENT_TIMESTAMP","STORED GENERATED","VIRTUAL GENERATED"]).as("computed"),e("c.IS_NULLABLE","=","YES").as("nullable")]);return k(b(n).with("cols",()=>u).selectFrom("information_schema.tables as t").innerJoin("cols as c",e=>e.onRef("c.TABLE_NAME","=","t.TABLE_NAME")).where("t.TABLE_SCHEMA","=",r).where("t.TABLE_TYPE","in",["BASE TABLE","VIEW"]).groupBy([r,"t.TABLE_NAME","t.TABLE_TYPE"]).select([r.as("schema"),"t.TABLE_NAME as name","t.TABLE_TYPE as type"]).$narrowType().select(e=>e.fn("json_arrayagg",[J({autoincrement:e.ref("c.autoincrement"),computed:e.ref("c.computed"),datatype:e.ref("c.datatype"),default:e.ref("c.default"),fk_column:e.ref("c.fk_column"),fk_table:e.ref("c.fk_table"),name:e.ref("c.name"),position:e.ref("c.position"),pk:e.ref("c.pk"),nullable:e.ref("c.nullable")})]).as("columns")).orderBy("t.TABLE_SCHEMA").orderBy("t.TABLE_NAME").orderBy("t.TABLE_TYPE"))}function X(){return[{columns:[{autoincrement:1,computed:0,datatype:"int",default:null,fk_column:null,fk_table:null,name:"id",nullable:0,pk:1,position:1},{autoincrement:0,computed:0,datatype:"binary(16)",default:"uuid_to_bin(uuid())",fk_column:null,fk_table:null,name:"uuid",nullable:1,pk:null,position:2},{autoincrement:0,computed:0,datatype:"varchar(255)",default:null,fk_column:null,fk_table:null,name:"name",nullable:1,pk:null,position:3},{autoincrement:0,computed:1,datatype:"text",default:null,fk_column:null,fk_table:null,name:"id_name",nullable:1,pk:null,position:4}],name:"animals",schema:"studio",type:"BASE TABLE"},{columns:[{autoincrement:0,computed:0,datatype:"char(36)",default:"uuid()",fk_column:null,fk_table:null,name:"id",nullable:0,pk:1,position:1},{autoincrement:0,computed:0,datatype:"text",default:null,fk_column:null,fk_table:null,name:"name",nullable:0,pk:2,position:2},{autoincrement:0,computed:0,datatype:"timestamp",default:"CURRENT_TIMESTAMP",fk_column:null,fk_table:null,name:"created_at",nullable:1,pk:null,position:3}],name:"composite_pk",schema:"studio",type:"BASE TABLE"},{columns:[{autoincrement:1,computed:0,datatype:"int",default:null,fk_column:null,fk_table:null,name:"id",nullable:0,pk:1,position:1},{autoincrement:0,computed:0,datatype:"timestamp",default:"current_timestamp",fk_column:null,fk_table:null,name:"created_at",nullable:1,pk:null,position:2},{autoincrement:0,computed:0,datatype:"timestamp",default:null,fk_column:null,fk_table:null,name:"deleted_at",nullable:1,pk:null,position:3},{autoincrement:0,computed:0,datatype:"text",default:null,fk_column:null,fk_table:null,name:"role",nullable:1,pk:null,position:4},{autoincrement:0,computed:0,datatype:"text",default:null,fk_column:null,fk_table:null,name:"name",nullable:1,pk:null,position:5},{autoincrement:0,computed:1,datatype:"text",default:null,fk_column:null,fk_table:null,name:"name_role",nullable:1,pk:null,position:6}],name:"users",schema:"studio",type:"BASE TABLE"}]}function Z(n){let r=b(n),o=A`@@session.time_zone`;return k(r.selectNoFrom(r.case().when(o,"=","SYSTEM").then(A`@@system_time_zone`).else(o).end().as("timezone")).$narrowType())}function ee(){return[{timezone:"UTC"}]}function Le(n){let{executor:r,...o}=n;return{async delete(u,e){try{let t=v(u,o),[a]=await r.execute(t,e);return a?l({error:a,query:t}):[null,{...u,query:t}]}catch(t){return l({error:t})}},async insert(u,e){try{let{rows:t,table:a}=u,{columns:m}=a,f=Object.values(m).find(s=>s.isAutoincrement),c=t.map(s=>F(s,m)),E=c.some(s=>{let p=Object.values(s);return p.length===0||p.some(d=>d==null)});if(!f&&E)return l({error:new Error("Cannot proceed with the insertion, some rows cannot be refetched after insertion."),query:Q(u,o)});if(!E){let s=Q(u,o),p=I({criteria:c,table:a},o),d=[s,p],[[h],N]=await r.executeSequence(d,e),R=L(d);if(h)return l({error:h,query:R});let[M,O]=N;return M?l({error:new Error("Failed to refetch inserted rows - please refresh.",{cause:M}),query:R}):[null,{rows:O,query:R}]}let g=await Promise.all(t.map(async s=>{let p=Q({rows:[s],table:a},o),[d,h]=await r.execute(p,e);if(d)return l({error:d,query:p});let{name:N}=f,R=s[N]||h[0]?.insertId;if(!R)return l({error:new Error("Could not determine value for autoincrement column to refetch inserted row."),query:p});let M=I({criteria:[{[N]:R}],table:{...a,columns:Object.values(m).reduce((x,D)=>{let{name:U}=D;return x[U]={...D,pkPosition:U===N?1:null},x},{})}},o),[O,re]=await r.execute(M,e),B=L([p,M]);if(O)return console.error("Error refetching inserted row:",O),l({error:new Error("Failed to refetch inserted row - please refresh.",{cause:O}),query:B});let[C]=re;return C?[null,{row:C,query:B}]:l({error:new Error("Refetch query returned no results for inserted row."),query:B})})),y=[],i=null,T=[];for(let s=0;s<g.length;s++){let[p,d]=g[s];p?(T.push([s,p]),p.query&&(i=i?L([i,p.query]):p.query)):(y.push(d.row),d.query&&(i=i?L([i,d.query]):d.query))}return T.length>0?l({error:new AggregateError(T.map(([,s])=>s),`Row${T.length>1?"s":""} ${T.map(([s])=>s).join(", ")} could not be inserted or refetched.`),query:i}):[null,{rows:y,query:i}]}catch(t){return l({error:t})}},async introspect(u){try{let e=W(n),t=Z(n),[[a,m],[f,c]]=await Promise.all([r.execute(e,u),r.execute(t,u)]);if(a)return l({error:a,query:e});if(f)return l({error:f,query:t});let E=c[0]?.timezone;return E?[null,te({query:e,tables:m,timezone:E})]:l({error:new Error("Timezone not found"),query:t})}catch(e){return l({error:e})}},async query(u,e){try{let t=H(u,o),[a,m]=await r.execute(t,e);return a?l({error:a,query:t}):[null,{filteredRowCount:m[0]?.__ps_count__||"0",rows:m,query:t}]}catch(t){return l({error:t})}},async update(u,e){try{let t=K(u,o),a=G(u,o),[[m],f]=await r.executeSequence([t,a],e);if(m)return l({error:m,query:t});let[c,E]=f;if(c)return l({error:c,query:t});let[g]=E;return g?[null,{row:g,query:t}]:l({error:new Error("Updated row not found"),query:t})}catch(t){return l({error:t})}}}}function te(n){let{query:r,tables:o,timezone:u}=n;return o.reduce((e,t)=>{let{schemas:a}=e,{columns:m,name:f,schema:c}=t,E=m.sort((g,y)=>g.position-y.position).reduce((g,y)=>{let{datatype:i,default:T,name:s}=y,p=i.indexOf("("),d=(p>-1?i.substring(0,p):i).trim().toLowerCase(),h=!!y.autoincrement,N=!!y.computed,R=!!y.nullable;return{...g,[s]:{datatype:{...$[d]||{group:"raw"},isArray:!1,isNative:!0,name:d,options:d==="enum"?i.slice(6,-2).split("','"):[],schema:c},defaultValue:T,fkColumn:y.fk_column,fkSchema:c,fkTable:y.fk_table,isAutoincrement:h,isComputed:N,isRequired:!R&&!h&&!N&&T==null,name:s,nullable:R,pkPosition:y.pk,schema:c,table:f}}},{});return a[c]===void 0&&(a[c]={name:c,tables:{}}),a[c].tables[f]={columns:E,name:f,schema:c},e},{filterOperators:ne,query:r,schemas:{},timezone:u})}var ne=["=","!=",">",">=","<","<=","is","is not","like","not like"];function Be(){let n=X(),[{timezone:r}]=ee();return te({tables:n,timezone:r,query:{parameters:[],sql:"<mocked>"}})}function L(n){let[r,o]=n;return{parameters:r.parameters.concat(o.parameters),sql:`${r.sql};
10
10
  ${o.sql}`}}export{Le as createMySQLAdapter,oe as getCancelQuery,v as getDeleteQuery,Q as getInsertQuery,I as getInsertRefetchQuery,H as getSelectQuery,W as getTablesQuery,Z as getTimezoneQuery,K as getUpdateQuery,G as getUpdateRefetchQuery,Be as mockIntrospect,fe as mockSelectQuery,X as mockTablesQuery,ee as mockTimezoneQuery};
11
11
  //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9teXNxbC1jb3JlL2luZGV4LnRzIiwgIi4uLy4uLy4uL2RhdGEvbXlzcWwtY29yZS9hZGFwdGVyLnRzIiwgIi4uLy4uLy4uL2RhdGEvbXlzcWwtY29yZS9kYXRhdHlwZS50cyIsICIuLi8uLi8uLi9kYXRhL215c3FsLWNvcmUvZG1sLnRzIiwgIi4uLy4uLy4uL2RhdGEvbXlzcWwtY29yZS9idWlsZGVyLnRzIiwgIi4uLy4uLy4uL2RhdGEvbXlzcWwtY29yZS9pbnRyb3NwZWN0aW9uLnRzIiwgIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9reXNlbHlAMC4yOC4xMC9ub2RlX21vZHVsZXMva3lzZWx5L2Rpc3QvZXNtL2hlbHBlcnMvbXlzcWwuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCAqIGZyb20gXCIuL2FkYXB0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RtbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW50cm9zcGVjdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbGl0eVwiO1xuIiwgImltcG9ydCB7XG4gIHR5cGUgQWRhcHRlcixcbiAgdHlwZSBBZGFwdGVyRGVsZXRlUmVzdWx0LFxuICB0eXBlIEFkYXB0ZXJFcnJvcixcbiAgdHlwZSBBZGFwdGVySW5zZXJ0UmVzdWx0LFxuICB0eXBlIEFkYXB0ZXJJbnRyb3NwZWN0UmVzdWx0LFxuICB0eXBlIEFkYXB0ZXJRdWVyeVJlc3VsdCxcbiAgdHlwZSBBZGFwdGVyUmVxdWlyZW1lbnRzLFxuICB0eXBlIEFkYXB0ZXJVcGRhdGVSZXN1bHQsXG4gIHR5cGUgQ29sdW1uLFxuICBjcmVhdGVBZGFwdGVyRXJyb3IsXG4gIHR5cGUgRmlsdGVyT3BlcmF0b3IsXG4gIHR5cGUgVGFibGUsXG59IGZyb20gXCIuLi9hZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IFNlcXVlbmNlRXhlY3V0b3IgfSBmcm9tIFwiLi4vZXhlY3V0b3JcIjtcbmltcG9ydCB7IGluZmVyRmlsdGVyT2JqZWN0LCB0eXBlIFF1ZXJ5LCB0eXBlIFF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEVpdGhlciB9IGZyb20gXCIuLi90eXBlLXV0aWxzXCI7XG5pbXBvcnQgeyBNWVNRTF9EQVRBX1RZUEVTX1RPX01FVEFEQVRBIH0gZnJvbSBcIi4vZGF0YXR5cGVcIjtcbmltcG9ydCB7XG4gIGdldERlbGV0ZVF1ZXJ5LFxuICBnZXRJbnNlcnRRdWVyeSxcbiAgZ2V0SW5zZXJ0UmVmZXRjaFF1ZXJ5LFxuICBnZXRTZWxlY3RRdWVyeSxcbiAgZ2V0VXBkYXRlUXVlcnksXG4gIGdldFVwZGF0ZVJlZmV0Y2hRdWVyeSxcbn0gZnJvbSBcIi4vZG1sXCI7XG5pbXBvcnQgeyBnZXRUYWJsZXNRdWVyeSwgZ2V0VGltZXpvbmVRdWVyeSwgbW9ja1RhYmxlc1F1ZXJ5LCBtb2NrVGltZXpvbmVRdWVyeSB9IGZyb20gXCIuL2ludHJvc3BlY3Rpb25cIjtcblxuZXhwb3J0IHR5cGUgTXlTUUxBZGFwdGVyUmVxdWlyZW1lbnRzID0gT21pdDxBZGFwdGVyUmVxdWlyZW1lbnRzLCBcImV4ZWN1dG9yXCI+ICYge1xuICBleGVjdXRvcjogU2VxdWVuY2VFeGVjdXRvcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNeVNRTEFkYXB0ZXIocmVxdWlyZW1lbnRzOiBNeVNRTEFkYXB0ZXJSZXF1aXJlbWVudHMpOiBBZGFwdGVyIHtcbiAgY29uc3QgeyBleGVjdXRvciwgLi4ub3RoZXJSZXF1aXJlbWVudHMgfSA9IHJlcXVpcmVtZW50cztcblxuICByZXR1cm4ge1xuICAgIGFzeW5jIGRlbGV0ZShkZXRhaWxzLCBvcHRpb25zKTogUHJvbWlzZTxFaXRoZXI8QWRhcHRlckVycm9yLCBBZGFwdGVyRGVsZXRlUmVzdWx0Pj4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSBnZXREZWxldGVRdWVyeShkZXRhaWxzLCBvdGhlclJlcXVpcmVtZW50cyk7XG5cbiAgICAgICAgY29uc3QgW2Vycm9yXSA9IGF3YWl0IGV4ZWN1dG9yLmV4ZWN1dGUocXVlcnksIG9wdGlvbnMpO1xuXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvciwgcXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW251bGwsIHsgLi4uZGV0YWlscywgcXVlcnkgfV07XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IGVycm9yIGFzIEVycm9yIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBpbnNlcnQoZGV0YWlscywgb3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlckluc2VydFJlc3VsdD4+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgcm93cywgdGFibGUgfSA9IGRldGFpbHM7XG4gICAgICAgIGNvbnN0IHsgY29sdW1ucyB9ID0gdGFibGU7XG5cbiAgICAgICAgY29uc3QgYXV0b2luY3JlbWVudENvbHVtbjogQ29sdW1uIHwgdW5kZWZpbmVkID0gT2JqZWN0LnZhbHVlcyhjb2x1bW5zKS5maW5kKChjb2x1bW4pID0+IGNvbHVtbi5pc0F1dG9pbmNyZW1lbnQpO1xuXG4gICAgICAgIGNvbnN0IGZpbHRlck9iamVjdHMgPSByb3dzLm1hcCgocm93KSA9PiBpbmZlckZpbHRlck9iamVjdChyb3csIGNvbHVtbnMpKTtcblxuICAgICAgICBjb25zdCBoYXNQYXJ0aWFsRmlsdGVyT2JqZWN0cyA9IGZpbHRlck9iamVjdHMuc29tZSgoZmlsdGVyT2JqZWN0KSA9PiB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyVmFsdWVzID0gT2JqZWN0LnZhbHVlcyhmaWx0ZXJPYmplY3QpO1xuXG4gICAgICAgICAgcmV0dXJuIGZpbHRlclZhbHVlcy5sZW5ndGggPT09IDAgfHwgZmlsdGVyVmFsdWVzLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZSA9PSBudWxsKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gVE9ETzogaGFuZGxlIGNsYXNzaWMgcGFydGlhbCBmaWx0ZXIgb2JqZWN0IGNhc2VzIChlLmcuIHV1aWQpIGhlcmUgb3IgYmVmb3JlIHJlcXVlc3RpbmcgZnJvbSBhZGFwdGVyLlxuICAgICAgICBpZiAoIWF1dG9pbmNyZW1lbnRDb2x1bW4gJiYgaGFzUGFydGlhbEZpbHRlck9iamVjdHMpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHtcbiAgICAgICAgICAgIGVycm9yOiBuZXcgRXJyb3IoXCJDYW5ub3QgcHJvY2VlZCB3aXRoIHRoZSBpbnNlcnRpb24sIHNvbWUgcm93cyBjYW5ub3QgYmUgcmVmZXRjaGVkIGFmdGVyIGluc2VydGlvbi5cIiksXG4gICAgICAgICAgICBxdWVyeTogZ2V0SW5zZXJ0UXVlcnkoZGV0YWlscywgb3RoZXJSZXF1aXJlbWVudHMpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoYXNQYXJ0aWFsRmlsdGVyT2JqZWN0cykge1xuICAgICAgICAgIGNvbnN0IGluc2VydFF1ZXJ5ID0gZ2V0SW5zZXJ0UXVlcnkoZGV0YWlscywgb3RoZXJSZXF1aXJlbWVudHMpO1xuICAgICAgICAgIGNvbnN0IHJlZmV0Y2hRdWVyeSA9IGdldEluc2VydFJlZmV0Y2hRdWVyeSh7IGNyaXRlcmlhOiBmaWx0ZXJPYmplY3RzLCB0YWJsZSB9LCBvdGhlclJlcXVpcmVtZW50cyk7XG4gICAgICAgICAgY29uc3Qgc2VxdWVuY2UgPSBbaW5zZXJ0UXVlcnksIHJlZmV0Y2hRdWVyeV0gYXMgY29uc3Q7XG5cbiAgICAgICAgICBjb25zdCBbW2luc2VydEVycm9yXSwgbWF5YmVSZWZldGNoUmVzdWx0XSA9IGF3YWl0IGV4ZWN1dG9yLmV4ZWN1dGVTZXF1ZW5jZShzZXF1ZW5jZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICBjb25zdCBxdWVyeSA9IGpvaW5TZXF1ZW5jZShzZXF1ZW5jZSk7XG5cbiAgICAgICAgICBpZiAoaW5zZXJ0RXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogaW5zZXJ0RXJyb3IsIHF1ZXJ5IH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IFtyZWZldGNoRXJyb3IsIHJlZmV0Y2hSZXN1bHRzXSA9IG1heWJlUmVmZXRjaFJlc3VsdCE7XG5cbiAgICAgICAgICBpZiAocmVmZXRjaEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHtcbiAgICAgICAgICAgICAgZXJyb3I6IG5ldyBFcnJvcihcIkZhaWxlZCB0byByZWZldGNoIGluc2VydGVkIHJvd3MgLSBwbGVhc2UgcmVmcmVzaC5cIiwgeyBjYXVzZTogcmVmZXRjaEVycm9yIH0pLFxuICAgICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBbbnVsbCwgeyByb3dzOiByZWZldGNoUmVzdWx0cywgcXVlcnkgfV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBoYXMgYXV0b2luY3JlbWVudCBjb2x1bW4gLSBpbnNlcnQgcm93cyBvbmUgYnkgb25lIGFuZCByZWZldGNoLCB0YWtpbmcgYWR2YW50YWdlIG9mIGBpbnNlcnRJZGAgaWYgaW5zZXJ0ZWQgcm93IGhhcyBubyB2YWx1ZSBmb3IgdGhpcyBjb2x1bW4uXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICByb3dzLm1hcChhc3luYyAocm93KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnNlcnRRdWVyeSA9IGdldEluc2VydFF1ZXJ5KHsgcm93czogW3Jvd10sIHRhYmxlIH0sIG90aGVyUmVxdWlyZW1lbnRzKTtcblxuICAgICAgICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgZXhlY3V0b3IuZXhlY3V0ZShpbnNlcnRRdWVyeSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3IsIHF1ZXJ5OiBpbnNlcnRRdWVyeSB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgeyBuYW1lOiBhdXRvaW5jcmVtZW50Q29sdW1uTmFtZSB9ID0gYXV0b2luY3JlbWVudENvbHVtbiE7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcm93W2F1dG9pbmNyZW1lbnRDb2x1bW5OYW1lXSB8fCByZXN1bHRbMF0/Lmluc2VydElkO1xuXG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3Ioe1xuICAgICAgICAgICAgICAgIGVycm9yOiBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZGV0ZXJtaW5lIHZhbHVlIGZvciBhdXRvaW5jcmVtZW50IGNvbHVtbiB0byByZWZldGNoIGluc2VydGVkIHJvdy5cIiksXG4gICAgICAgICAgICAgICAgcXVlcnk6IGluc2VydFF1ZXJ5LFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVmZXRjaFF1ZXJ5ID0gZ2V0SW5zZXJ0UmVmZXRjaFF1ZXJ5KFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY3JpdGVyaWE6IFt7IFthdXRvaW5jcmVtZW50Q29sdW1uTmFtZV06IHZhbHVlIH1dLFxuICAgICAgICAgICAgICAgIHRhYmxlOiB7XG4gICAgICAgICAgICAgICAgICAuLi50YWJsZSxcbiAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBkaXJ0eSBoYWNrIHRvIG1hcmsgYXV0b2luY3JlbWVudCBjb2x1bW4gYXMgVEhFIHByaW1hcnkga2V5IGZvciByZWZldGNoaW5nLlxuICAgICAgICAgICAgICAgICAgY29sdW1uczogT2JqZWN0LnZhbHVlcyhjb2x1bW5zKS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgIChhY2MsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgbmFtZTogY29sdW1uTmFtZSB9ID0gY29sdW1uO1xuXG4gICAgICAgICAgICAgICAgICAgICAgYWNjW2NvbHVtbk5hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGtQb3NpdGlvbjogY29sdW1uTmFtZSA9PT0gYXV0b2luY3JlbWVudENvbHVtbk5hbWUgPyAxIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge30gYXMgVGFibGVbXCJjb2x1bW5zXCJdLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvdGhlclJlcXVpcmVtZW50cyxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IFtyZWZldGNoRXJyb3IsIHJlZmV0Y2hSZXN1bHRzXSA9IGF3YWl0IGV4ZWN1dG9yLmV4ZWN1dGUocmVmZXRjaFF1ZXJ5LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSBqb2luU2VxdWVuY2UoW2luc2VydFF1ZXJ5LCByZWZldGNoUXVlcnldKTtcblxuICAgICAgICAgICAgaWYgKHJlZmV0Y2hFcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgcmVmZXRjaGluZyBpbnNlcnRlZCByb3c6XCIsIHJlZmV0Y2hFcnJvcik7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7XG4gICAgICAgICAgICAgICAgZXJyb3I6IG5ldyBFcnJvcihcIkZhaWxlZCB0byByZWZldGNoIGluc2VydGVkIHJvdyAtIHBsZWFzZSByZWZyZXNoLlwiLCB7IGNhdXNlOiByZWZldGNoRXJyb3IgfSksXG4gICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBbcmVmZXRjaGVkUm93XSA9IHJlZmV0Y2hSZXN1bHRzO1xuXG4gICAgICAgICAgICBpZiAoIXJlZmV0Y2hlZFJvdykge1xuICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHtcbiAgICAgICAgICAgICAgICBlcnJvcjogbmV3IEVycm9yKFwiUmVmZXRjaCBxdWVyeSByZXR1cm5lZCBubyByZXN1bHRzIGZvciBpbnNlcnRlZCByb3cuXCIpLFxuICAgICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFtudWxsLCB7IHJvdzogcmVmZXRjaGVkUm93LCBxdWVyeSB9XSBhcyBjb25zdDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBpbnNlcnRlZFJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXTtcbiAgICAgICAgbGV0IHF1ZXJ5OiBRdWVyeTx1bmtub3duPiB8IG51bGwgPSBudWxsO1xuICAgICAgICBjb25zdCBlcnJvcnM6IFtudW1iZXIsIEFkYXB0ZXJFcnJvcl1bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IHJlc3VsdHNbaV0hO1xuXG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBlcnJvcnMucHVzaChbaSwgZXJyb3JdKTtcblxuICAgICAgICAgICAgaWYgKGVycm9yLnF1ZXJ5KSB7XG4gICAgICAgICAgICAgIHF1ZXJ5ID0gIXF1ZXJ5ID8gZXJyb3IucXVlcnkgOiBqb2luU2VxdWVuY2UoW3F1ZXJ5LCBlcnJvci5xdWVyeV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnNlcnRlZFJvd3MucHVzaChyZXN1bHQucm93KTtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdC5xdWVyeSkge1xuICAgICAgICAgICAgICBxdWVyeSA9ICFxdWVyeSA/IHJlc3VsdC5xdWVyeSA6IGpvaW5TZXF1ZW5jZShbcXVlcnksIHJlc3VsdC5xdWVyeV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3Ioe1xuICAgICAgICAgICAgZXJyb3I6IG5ldyBBZ2dyZWdhdGVFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3JzLm1hcCgoWywgZXJyb3JdKSA9PiBlcnJvciksXG4gICAgICAgICAgICAgIGBSb3cke2Vycm9ycy5sZW5ndGggPiAxID8gXCJzXCIgOiBcIlwifSAke2Vycm9ycy5tYXAoKFtpbmRleF0pID0+IGluZGV4KS5qb2luKFwiLCBcIil9IGNvdWxkIG5vdCBiZSBpbnNlcnRlZCBvciByZWZldGNoZWQuYCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBxdWVyeTogcXVlcnkhLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCB7IHJvd3M6IGluc2VydGVkUm93cywgcXVlcnk6IHF1ZXJ5ISB9XTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogZXJyb3IgYXMgRXJyb3IgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIGludHJvc3BlY3Qob3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlckludHJvc3BlY3RSZXN1bHQ+PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0YWJsZXNRdWVyeSA9IGdldFRhYmxlc1F1ZXJ5KHJlcXVpcmVtZW50cyk7XG4gICAgICAgIGNvbnN0IHRpbWV6b25lUXVlcnkgPSBnZXRUaW1lem9uZVF1ZXJ5KHJlcXVpcmVtZW50cyk7XG5cbiAgICAgICAgY29uc3QgW1t0YWJsZXNFcnJvciwgdGFibGVzXSwgW3RpbWV6b25lRXJyb3IsIHRpbWV6b25lc11dID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgIGV4ZWN1dG9yLmV4ZWN1dGUodGFibGVzUXVlcnksIG9wdGlvbnMpLFxuICAgICAgICAgIGV4ZWN1dG9yLmV4ZWN1dGUodGltZXpvbmVRdWVyeSwgb3B0aW9ucyksXG4gICAgICAgIF0pO1xuXG4gICAgICAgIGlmICh0YWJsZXNFcnJvcikge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogdGFibGVzRXJyb3IsIHF1ZXJ5OiB0YWJsZXNRdWVyeSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aW1lem9uZUVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiB0aW1lem9uZUVycm9yLCBxdWVyeTogdGltZXpvbmVRdWVyeSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWV6b25lID0gdGltZXpvbmVzWzBdPy50aW1lem9uZTtcblxuICAgICAgICBpZiAoIXRpbWV6b25lKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBuZXcgRXJyb3IoXCJUaW1lem9uZSBub3QgZm91bmRcIiksIHF1ZXJ5OiB0aW1lem9uZVF1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCBjcmVhdGVJbnRyb3NwZWN0aW9uKHsgcXVlcnk6IHRhYmxlc1F1ZXJ5LCB0YWJsZXMsIHRpbWV6b25lIH0pXTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogZXJyb3IgYXMgRXJyb3IgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIHF1ZXJ5KGRldGFpbHMsIG9wdGlvbnMpOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJRdWVyeVJlc3VsdD4+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gZ2V0U2VsZWN0UXVlcnkoZGV0YWlscywgb3RoZXJSZXF1aXJlbWVudHMpO1xuXG4gICAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0c10gPSBhd2FpdCBleGVjdXRvci5leGVjdXRlKHF1ZXJ5LCBvcHRpb25zKTtcblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3IsIHF1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCB7IGZpbHRlcmVkUm93Q291bnQ6IHJlc3VsdHNbMF0/Ll9fcHNfY291bnRfXyB8fCBcIjBcIiwgcm93czogcmVzdWx0cywgcXVlcnkgfV07XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IGVycm9yIGFzIEVycm9yIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyB1cGRhdGUoZGV0YWlscywgb3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlclVwZGF0ZVJlc3VsdD4+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZVF1ZXJ5ID0gZ2V0VXBkYXRlUXVlcnkoZGV0YWlscywgb3RoZXJSZXF1aXJlbWVudHMpO1xuICAgICAgICBjb25zdCByZWZldGNoUXVlcnkgPSBnZXRVcGRhdGVSZWZldGNoUXVlcnkoZGV0YWlscywgb3RoZXJSZXF1aXJlbWVudHMpO1xuXG4gICAgICAgIGNvbnN0IFtbdXBkYXRlRXJyb3JdLCByZWZldGNoUmVzdWx0XSA9IGF3YWl0IGV4ZWN1dG9yLmV4ZWN1dGVTZXF1ZW5jZShbdXBkYXRlUXVlcnksIHJlZmV0Y2hRdWVyeV0sIG9wdGlvbnMpO1xuXG4gICAgICAgIGlmICh1cGRhdGVFcnJvcikge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogdXBkYXRlRXJyb3IsIHF1ZXJ5OiB1cGRhdGVRdWVyeSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFtyZWZldGNoRXJyb3IsIHJlc3VsdHNdID0gcmVmZXRjaFJlc3VsdCE7XG5cbiAgICAgICAgaWYgKHJlZmV0Y2hFcnJvcikge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogcmVmZXRjaEVycm9yLCBxdWVyeTogdXBkYXRlUXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbcm93XSA9IHJlc3VsdHM7XG5cbiAgICAgICAgaWYgKCFyb3cpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IG5ldyBFcnJvcihcIlVwZGF0ZWQgcm93IG5vdCBmb3VuZFwiKSwgcXVlcnk6IHVwZGF0ZVF1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCB7IHJvdywgcXVlcnk6IHVwZGF0ZVF1ZXJ5IH1dO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVJbnRyb3NwZWN0aW9uKGFyZ3M6IHtcbiAgcXVlcnk6IFF1ZXJ5O1xuICB0YWJsZXM6IFF1ZXJ5UmVzdWx0PHR5cGVvZiBnZXRUYWJsZXNRdWVyeT47XG4gIHRpbWV6b25lOiBzdHJpbmc7XG59KTogQWRhcHRlckludHJvc3BlY3RSZXN1bHQge1xuICBjb25zdCB7IHF1ZXJ5LCB0YWJsZXMsIHRpbWV6b25lIH0gPSBhcmdzO1xuXG4gIHJldHVybiB0YWJsZXMucmVkdWNlKFxuICAgIChyZXN1bHQsIHRhYmxlKSA9PiB7XG4gICAgICBjb25zdCB7IHNjaGVtYXMgfSA9IHJlc3VsdDtcbiAgICAgIGNvbnN0IHsgY29sdW1ucywgbmFtZTogdGFibGVOYW1lLCBzY2hlbWEgfSA9IHRhYmxlO1xuXG4gICAgICBjb25zdCBjb2x1bW5zUmVjb3JkID0gY29sdW1uc1xuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5wb3NpdGlvbiAtIGIucG9zaXRpb24pXG4gICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgKGNvbHVtbnMsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBkYXRhdHlwZSwgZGVmYXVsdDogZGVmYXVsdFZhbHVlLCBuYW1lOiBjb2x1bW5OYW1lIH0gPSBjb2x1bW47XG5cbiAgICAgICAgICAgIGNvbnN0IGluZGV4T2ZQYXJlbnRoZXNpcyA9IGRhdGF0eXBlLmluZGV4T2YoXCIoXCIpO1xuICAgICAgICAgICAgY29uc3Qgc3RyaXBwZWREYXRhVHlwZSA9IChpbmRleE9mUGFyZW50aGVzaXMgPiAtMSA/IGRhdGF0eXBlLnN1YnN0cmluZygwLCBpbmRleE9mUGFyZW50aGVzaXMpIDogZGF0YXR5cGUpXG4gICAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzQXV0b2luY3JlbWVudCA9IEJvb2xlYW4oY29sdW1uLmF1dG9pbmNyZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgaXNDb21wdXRlZCA9IEJvb2xlYW4oY29sdW1uLmNvbXB1dGVkKTtcbiAgICAgICAgICAgIGNvbnN0IG51bGxhYmxlID0gQm9vbGVhbihjb2x1bW4ubnVsbGFibGUpO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICAgICAgICBbY29sdW1uTmFtZV06IHtcbiAgICAgICAgICAgICAgICBkYXRhdHlwZToge1xuICAgICAgICAgICAgICAgICAgLi4uKE1ZU1FMX0RBVEFfVFlQRVNfVE9fTUVUQURBVEFbc3RyaXBwZWREYXRhVHlwZV0gfHwgeyBncm91cDogXCJyYXdcIiB9KSxcbiAgICAgICAgICAgICAgICAgIGlzQXJyYXk6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgaXNOYXRpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICBuYW1lOiBzdHJpcHBlZERhdGFUeXBlLFxuICAgICAgICAgICAgICAgICAgb3B0aW9uczpcbiAgICAgICAgICAgICAgICAgICAgc3RyaXBwZWREYXRhVHlwZSA9PT0gXCJlbnVtXCIgPyBkYXRhdHlwZS5zbGljZShgZW51bSgnYC5sZW5ndGgsIC1gJylgLmxlbmd0aCkuc3BsaXQoYCcsJ2ApIDogW10sXG4gICAgICAgICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICAgICAgICAgICAgZmtDb2x1bW46IGNvbHVtbi5ma19jb2x1bW4sXG4gICAgICAgICAgICAgICAgZmtTY2hlbWE6IHNjaGVtYSxcbiAgICAgICAgICAgICAgICBma1RhYmxlOiBjb2x1bW4uZmtfdGFibGUsXG4gICAgICAgICAgICAgICAgaXNBdXRvaW5jcmVtZW50LFxuICAgICAgICAgICAgICAgIGlzQ29tcHV0ZWQsXG4gICAgICAgICAgICAgICAgaXNSZXF1aXJlZDogIW51bGxhYmxlICYmICFpc0F1dG9pbmNyZW1lbnQgJiYgIWlzQ29tcHV0ZWQgJiYgZGVmYXVsdFZhbHVlID09IG51bGwsXG4gICAgICAgICAgICAgICAgbmFtZTogY29sdW1uTmFtZSxcbiAgICAgICAgICAgICAgICBudWxsYWJsZSxcbiAgICAgICAgICAgICAgICBwa1Bvc2l0aW9uOiBjb2x1bW4ucGssXG4gICAgICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgICAgIHRhYmxlOiB0YWJsZU5hbWUsXG4gICAgICAgICAgICAgIH0gYXMgY29uc3Qgc2F0aXNmaWVzIENvbHVtbixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7fSBhcyBUYWJsZVtcImNvbHVtbnNcIl0sXG4gICAgICAgICk7XG5cbiAgICAgIGlmIChzY2hlbWFzW3NjaGVtYV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzY2hlbWFzW3NjaGVtYV0gPSB7IG5hbWU6IHNjaGVtYSwgdGFibGVzOiB7fSB9O1xuICAgICAgfVxuXG4gICAgICBzY2hlbWFzW3NjaGVtYV0udGFibGVzW3RhYmxlTmFtZV0gPSB7IGNvbHVtbnM6IGNvbHVtbnNSZWNvcmQsIG5hbWU6IHRhYmxlTmFtZSwgc2NoZW1hIH07XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICB7IGZpbHRlck9wZXJhdG9ycywgcXVlcnksIHNjaGVtYXM6IHt9LCB0aW1lem9uZSB9IHNhdGlzZmllcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdCBhcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdCxcbiAgKTtcbn1cblxuY29uc3QgZmlsdGVyT3BlcmF0b3JzID0gW1xuICBcIj1cIixcbiAgXCIhPVwiLFxuICBcIj5cIixcbiAgXCI+PVwiLFxuICBcIjxcIixcbiAgXCI8PVwiLFxuICBcImlzXCIsXG4gIFwiaXMgbm90XCIsXG4gIFwibGlrZVwiLFxuICBcIm5vdCBsaWtlXCIsXG5dIHNhdGlzZmllcyBGaWx0ZXJPcGVyYXRvcltdO1xuXG4vKipcbiAqIEZvciB0ZXN0aW5nIHB1cnBvc2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9ja0ludHJvc3BlY3QoKSB7XG4gIGNvbnN0IHRhYmxlcyA9IG1vY2tUYWJsZXNRdWVyeSgpO1xuICBjb25zdCBbeyB0aW1lem9uZSB9XSA9IG1vY2tUaW1lem9uZVF1ZXJ5KCk7XG4gIGNvbnN0IHF1ZXJ5ID0geyBwYXJhbWV0ZXJzOiBbXSwgc3FsOiBcIjxtb2NrZWQ+XCIgfSBhcyBRdWVyeTtcblxuICByZXR1cm4gY3JlYXRlSW50cm9zcGVjdGlvbih7IHRhYmxlcywgdGltZXpvbmUsIHF1ZXJ5IH0pIGFzIHtcbiAgICAvLyBiZXN0IGVmZm9ydCwgbm8gbmVlZCBnbyBvdmVyYm9hcmQuXG4gICAgc2NoZW1hczoge1xuICAgICAgW0sgaW4gKHR5cGVvZiB0YWJsZXMpW251bWJlcl1bXCJzY2hlbWFcIl1dOiB7XG4gICAgICAgIG5hbWU6IEs7XG4gICAgICAgIHRhYmxlczoge1xuICAgICAgICAgIFtUIGluICh0eXBlb2YgdGFibGVzKVtudW1iZXJdW1wibmFtZVwiXV06IFRhYmxlO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIHRpbWV6b25lOiB0eXBlb2YgdGltZXpvbmU7XG4gICAgZmlsdGVyT3BlcmF0b3JzOiBGaWx0ZXJPcGVyYXRvcltdO1xuICAgIHF1ZXJ5OiBRdWVyeTtcbiAgfSBzYXRpc2ZpZXMgQWRhcHRlckludHJvc3BlY3RSZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGpvaW5TZXF1ZW5jZShzZXF1ZW5jZTogcmVhZG9ubHkgW1F1ZXJ5PHVua25vd24+LCBRdWVyeTx1bmtub3duPl0pOiBRdWVyeTx1bmtub3duPiB7XG4gIGNvbnN0IFtxdWVyeTAsIHF1ZXJ5MV0gPSBzZXF1ZW5jZTtcblxuICByZXR1cm4ge1xuICAgIHBhcmFtZXRlcnM6IHF1ZXJ5MC5wYXJhbWV0ZXJzLmNvbmNhdChxdWVyeTEucGFyYW1ldGVycyksXG4gICAgc3FsOiBgJHtxdWVyeTAuc3FsfTtcXG4ke3F1ZXJ5MS5zcWx9YCxcbiAgfTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IERhdGFUeXBlIH0gZnJvbSBcIi4uL2FkYXB0ZXJcIjtcblxuZXhwb3J0IGNvbnN0IE1ZU1FMX0RBVEFfVFlQRVNfVE9fTUVUQURBVEE6IFJlY29yZDxzdHJpbmcsIFBpY2s8RGF0YVR5cGUsIFwiZm9ybWF0XCIgfCBcImdyb3VwXCI+PiA9IHtcbiAgYmlnaW50OiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBiaW5hcnk6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgYml0OiB7XG4gICAgZ3JvdXA6IFwicmF3XCIsXG4gIH0sXG4gIGJsb2I6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgY2hhcjoge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICBcImNoYXIgYmluYXJ5XCI6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgZGF0ZToge1xuICAgIGZvcm1hdDogXCJZWVlZLU1NLUREXCIsXG4gICAgZ3JvdXA6IFwiZGF0ZXRpbWVcIixcbiAgfSxcbiAgZGF0ZXRpbWU6IHtcbiAgICBmb3JtYXQ6IFwiWVlZWS1NTS1ERCBISDptbTpzcy5TU1NcIixcbiAgICBncm91cDogXCJkYXRldGltZVwiLFxuICB9LFxuICBkZWM6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGRlY2ltYWw6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGRvdWJsZToge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAgXCJkb3VibGUgcHJlY2lzaW9uXCI6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGVudW06IHtcbiAgICBncm91cDogXCJlbnVtXCIsXG4gIH0sXG4gIGZpeGVkOiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBmbG9hdDoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAgZ2VvbWV0cnk6IHtcbiAgICBncm91cDogXCJyYXdcIixcbiAgfSxcbiAgZ2VvbWV0cnljb2xsZWN0aW9uOiB7XG4gICAgZ3JvdXA6IFwicmF3XCIsXG4gIH0sXG4gIGludDoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAgaW50ZWdlcjoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAganNvbjoge1xuICAgIGdyb3VwOiBcImpzb25cIixcbiAgfSxcbiAgbGluZXN0cmluZzoge1xuICAgIGdyb3VwOiBcInJhd1wiLFxuICB9LFxuICBsb25nOiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIFwibG9uZyB2YXJjaGFyXCI6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgbG9uZ2Jsb2I6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgbG9uZ3RleHQ6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgbG9uZ3ZhcmJpbmFyeToge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICBsb25ndmFyY2hhcjoge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICBtZWRpdW1ibG9iOiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIG1lZGl1bWludDoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAgbWVkaXVtdGV4dDoge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICBtdWx0aWxpbmVzdHJpbmc6IHtcbiAgICBncm91cDogXCJyYXdcIixcbiAgfSxcbiAgbXVsdGlwb2ludDoge1xuICAgIGdyb3VwOiBcInJhd1wiLFxuICB9LFxuICBtdWx0aXBvbHlnb246IHtcbiAgICBncm91cDogXCJyYXdcIixcbiAgfSxcbiAgbnVtZXJpYzoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAgcG9pbnQ6IHtcbiAgICBncm91cDogXCJyYXdcIixcbiAgfSxcbiAgcG9seWdvbjoge1xuICAgIGdyb3VwOiBcInJhd1wiLFxuICB9LFxuICByZWFsOiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICAvKipcbiAgICogaHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9yZWZtYW4vOS41L2VuL3NldC5odG1sXG4gICAqL1xuICBzZXQ6IHtcbiAgICBncm91cDogXCJyYXdcIixcbiAgfSxcbiAgc21hbGxpbnQ6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIHRleHQ6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgdGltZToge1xuICAgIGZvcm1hdDogXCJISDptbTpzcy5TU1NcIixcbiAgICBncm91cDogXCJ0aW1lXCIsXG4gIH0sXG4gIHRpbWVzdGFtcDoge1xuICAgIGZvcm1hdDogXCJZWVlZLU1NLUREIEhIOm1tOnNzLlNTU1wiLFxuICAgIGdyb3VwOiBcImRhdGV0aW1lXCIsXG4gIH0sXG4gIHRpbnlibG9iOiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIHRpbnlpbnQ6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIHRpbnl0ZXh0OiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIHZhcmJpbmFyeToge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICB2YXJjaGFyOiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIFwidmFyY2hhciBiaW5hcnlcIjoge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICAvKipcbiAgICogaHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9yZWZtYW4vOS41L2VuL3ZlY3Rvci5odG1sXG4gICAqL1xuICB2ZWN0b3I6IHtcbiAgICBncm91cDogXCJyYXdcIixcbiAgfSxcbiAgeWVhcjoge1xuICAgIGZvcm1hdDogXCJZWVlZXCIsXG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxufTtcbiIsICJpbXBvcnQgeyB0eXBlIEluZmVyUmVzdWx0LCB0eXBlIFNpbXBsZVJlZmVyZW5jZUV4cHJlc3Npb24sIHNxbCB9IGZyb20gXCJreXNlbHlcIjtcbmltcG9ydCB0eXBlIHsgT2tQYWNrZXRQYXJhbXMgfSBmcm9tIFwibXlzcWwyXCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlckRlbGV0ZURldGFpbHMsIEFkYXB0ZXJRdWVyeURldGFpbHMsIEFkYXB0ZXJVcGRhdGVEZXRhaWxzLCBUYWJsZSB9IGZyb20gXCIuLi9hZGFwdGVyXCI7XG5pbXBvcnQge1xuICBhcHBseUluZmVycmVkUm93RmlsdGVycyxcbiAgYXBwbHlUcmFuc2Zvcm1hdGlvbnMsXG4gIHR5cGUgQnVpbGRlclJlcXVpcmVtZW50cyxcbiAgY29tcGlsZSxcbiAgZ2V0U2VsZWN0RmlsdGVyRXhwcmVzc2lvbixcbn0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEJpZ0ludFN0cmluZyB9IGZyb20gXCIuLi90eXBlLXV0aWxzXCI7XG5pbXBvcnQgeyBnZXRNeVNRTEJ1aWxkZXIgfSBmcm9tIFwiLi9idWlsZGVyXCI7XG5pbXBvcnQgeyBtb2NrVGFibGVzUXVlcnkgfSBmcm9tIFwiLi9pbnRyb3NwZWN0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWxldGVRdWVyeShcbiAgZGV0YWlsczogQWRhcHRlckRlbGV0ZURldGFpbHMsXG4gIHJlcXVpcmVtZW50cz86IE9taXQ8QnVpbGRlclJlcXVpcmVtZW50cywgXCJBZGFwdGVyXCIgfCBcIlF1ZXJ5Q29tcGlsZXJcIj4sXG4pIHtcbiAgY29uc3Qge1xuICAgIHJvd3MsXG4gICAgdGFibGU6IHsgY29sdW1ucywgbmFtZTogdGFibGVOYW1lIH0sXG4gIH0gPSBkZXRhaWxzO1xuXG4gIGNvbnN0IGJ1aWxkZXIgPSBnZXRNeVNRTEJ1aWxkZXI8UmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+PihyZXF1aXJlbWVudHMpO1xuXG4gIHJldHVybiBjb21waWxlKGJ1aWxkZXIuZGVsZXRlRnJvbSh0YWJsZU5hbWUpLiRjYWxsKGFwcGx5SW5mZXJyZWRSb3dGaWx0ZXJzKHJvd3MsIGNvbHVtbnMpKS4kY2FzdFRvPE9rUGFja2V0UGFyYW1zPigpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluc2VydFF1ZXJ5KFxuICBkZXRhaWxzOiB7IHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107IHRhYmxlOiBUYWJsZSB9LFxuICByZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+LFxuKSB7XG4gIGNvbnN0IHtcbiAgICByb3dzLFxuICAgIHRhYmxlOiB7IGNvbHVtbnMsIG5hbWU6IHRhYmxlTmFtZSB9LFxuICB9ID0gZGV0YWlscztcblxuICBjb25zdCBidWlsZGVyID0gZ2V0TXlTUUxCdWlsZGVyPFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4ocmVxdWlyZW1lbnRzKTtcblxuICByZXR1cm4gY29tcGlsZShcbiAgICBidWlsZGVyXG4gICAgICAuaW5zZXJ0SW50byh0YWJsZU5hbWUpXG4gICAgICAudmFsdWVzKGFwcGx5VHJhbnNmb3JtYXRpb25zKHsgY29sdW1ucywgY29udGV4dDogXCJpbnNlcnRcIiwgc3VwcG9ydHNEZWZhdWx0S2V5d29yZDogdHJ1ZSwgdmFsdWVzOiByb3dzIH0pKVxuICAgICAgLiRjYXN0VG88T2tQYWNrZXRQYXJhbXM+KCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnNlcnRSZWZldGNoUXVlcnkoXG4gIGRldGFpbHM6IHsgY3JpdGVyaWE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107IHRhYmxlOiBUYWJsZSB9LFxuICByZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+LFxuKSB7XG4gIGNvbnN0IHtcbiAgICBjcml0ZXJpYSxcbiAgICB0YWJsZTogeyBjb2x1bW5zLCBuYW1lOiB0YWJsZU5hbWUgfSxcbiAgfSA9IGRldGFpbHM7XG5cbiAgY29uc3QgYnVpbGRlciA9IGdldE15U1FMQnVpbGRlcjxSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+KHJlcXVpcmVtZW50cyk7XG5cbiAgcmV0dXJuIGNvbXBpbGUoXG4gICAgYnVpbGRlclxuICAgICAgLnNlbGVjdEZyb20odGFibGVOYW1lKVxuICAgICAgLiRjYWxsKGFwcGx5SW5mZXJyZWRSb3dGaWx0ZXJzKGNyaXRlcmlhLCBjb2x1bW5zKSlcbiAgICAgIC5zZWxlY3QoT2JqZWN0LmtleXMoY29sdW1ucykpXG4gICAgICAuc2VsZWN0KGdldEN1cnJlbnRUaW1lc3RhbXBNaWxsaXMoKS5hcyhcIl9fcHNfaW5zZXJ0ZWRfYXRfX1wiKSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVcGRhdGVSZWZldGNoUXVlcnkoXG4gIGRldGFpbHM6IEFkYXB0ZXJVcGRhdGVEZXRhaWxzLFxuICByZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+LFxuKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFuZ2VzLFxuICAgIHJvdyxcbiAgICB0YWJsZTogeyBjb2x1bW5zLCBuYW1lOiB0YWJsZU5hbWUgfSxcbiAgfSA9IGRldGFpbHM7XG5cbiAgY29uc3QgYnVpbGRlciA9IGdldE15U1FMQnVpbGRlcjxSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+KHJlcXVpcmVtZW50cyk7XG5cbiAgcmV0dXJuIGNvbXBpbGUoXG4gICAgYnVpbGRlclxuICAgICAgLnNlbGVjdEZyb20odGFibGVOYW1lKVxuICAgICAgLiRjYWxsKGFwcGx5SW5mZXJyZWRSb3dGaWx0ZXJzKFt7IC4uLnJvdywgLi4uY2hhbmdlcyB9XSwgY29sdW1ucykpXG4gICAgICAuc2VsZWN0KE9iamVjdC5rZXlzKGNvbHVtbnMpKVxuICAgICAgLnNlbGVjdChnZXRDdXJyZW50VGltZXN0YW1wTWlsbGlzKCkuYXMoXCJfX3BzX3VwZGF0ZWRfYXRfX1wiKSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3RRdWVyeShcbiAgZGV0YWlsczogQWRhcHRlclF1ZXJ5RGV0YWlscyxcbiAgcmVxdWlyZW1lbnRzPzogT21pdDxCdWlsZGVyUmVxdWlyZW1lbnRzLCBcIkFkYXB0ZXJcIiB8IFwiUXVlcnlDb21waWxlclwiPixcbikge1xuICBjb25zdCB7XG4gICAgZmlsdGVyID0geyBhZnRlcjogXCJhbmRcIiwgZmlsdGVyczogW10sIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIiB9LFxuICAgIHBhZ2VJbmRleCxcbiAgICBwYWdlU2l6ZSxcbiAgICBzb3J0T3JkZXIsXG4gICAgdGFibGU6IHsgY29sdW1ucywgbmFtZTogdGFibGVOYW1lIH0sXG4gIH0gPSBkZXRhaWxzO1xuXG4gIGNvbnN0IGJ1aWxkZXIgPSBnZXRNeVNRTEJ1aWxkZXI8UmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+PihyZXF1aXJlbWVudHMpO1xuXG4gIGNvbnN0IGZpbHRlckV4cHJlc3Npb24gPSBnZXRTZWxlY3RGaWx0ZXJFeHByZXNzaW9uKGZpbHRlci5maWx0ZXJzLCBjb2x1bW5zKTtcblxuICBjb25zdCBBR0dfTkFNRSA9IFwiX19wc19hZ2dfX1wiO1xuICBjb25zdCBDT1VOVF9SRUYgPSBcIl9fcHNfY291bnRfX1wiO1xuXG4gIGNvbnN0IGNvdW50UXVlcnkgPSBidWlsZGVyXG4gICAgLnNlbGVjdEZyb20odGFibGVOYW1lKVxuICAgIC53aGVyZShmaWx0ZXJFeHByZXNzaW9uKVxuICAgIC5zZWxlY3QoKGViKSA9PiBlYi5jYXN0PEJpZ0ludFN0cmluZz4oZWIuZm4uY29hbGVzY2UoZWIuZm4uY291bnRBbGwoKSwgc3FsLmxpdCgwKSksIFwiY2hhclwiKS5hcyhDT1VOVF9SRUYpKTtcblxuICByZXR1cm4gY29tcGlsZShcbiAgICBidWlsZGVyXG4gICAgICAud2l0aChBR0dfTkFNRSwgKCkgPT4gY291bnRRdWVyeSlcbiAgICAgIC5zZWxlY3RGcm9tKHRhYmxlTmFtZSlcbiAgICAgIC5pbm5lckpvaW4oQUdHX05BTUUsIChqYikgPT4gamIub25UcnVlKCkpXG4gICAgICAvLyBUT0RPOiBjdXJzb3IgcGFnaW5hdGlvbj9cbiAgICAgIC53aGVyZShmaWx0ZXJFeHByZXNzaW9uKVxuICAgICAgLnNlbGVjdChcbiAgICAgICAgYCR7QUdHX05BTUV9LiR7Q09VTlRfUkVGfWAgc2F0aXNmaWVzIFNpbXBsZVJlZmVyZW5jZUV4cHJlc3Npb248XG4gICAgICAgICAgeyBbQUdHX05BTUVdOiBJbmZlclJlc3VsdDx0eXBlb2YgY291bnRRdWVyeT5bbnVtYmVyXSB9LFxuICAgICAgICAgIHR5cGVvZiBBR0dfTkFNRVxuICAgICAgICA+LFxuICAgICAgKVxuICAgICAgLnNlbGVjdChPYmplY3Qua2V5cyhjb2x1bW5zKSlcbiAgICAgIC4kY2FsbCgocWIpID0+IHNvcnRPcmRlci5yZWR1Y2UoKHFiLCBpdGVtKSA9PiBxYi5vcmRlckJ5KGl0ZW0uY29sdW1uLCBpdGVtLmRpcmVjdGlvbiksIHFiKSlcbiAgICAgIC5saW1pdChwYWdlU2l6ZSlcbiAgICAgIC8vIHdlJ3JlIGluamVjdGluZyB0aGUgb2Zmc2V0IHZhbHVlIGhlcmUgdG8gYXZvaWQgc2VyaWFsaXphdGlvbiBjb21wbGV4aXR5IChgYmlnaW50YCBpcyBhIG5vLWdvIGZvciBgSlNPTi5zdHJpbmdpZnlgKS5cbiAgICAgIC5vZmZzZXQoc3FsLmxpdChCaWdJbnQocGFnZUluZGV4KSAqIEJpZ0ludChwYWdlU2l6ZSkpKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBGb3IgdGVzdGluZyBwdXJwb3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vY2tTZWxlY3RRdWVyeSgpIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBpZDogMSxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKFwiMjAyNS0wMS0yN1QwMDowMDowMC4wMDBaXCIpLFxuICAgICAgZGVsZXRlZF9hdDogbnVsbCxcbiAgICAgIHJvbGU6IFwiYWRtaW5cIixcbiAgICAgIG5hbWU6IFwiQWxpY2VcIixcbiAgICAgIG5hbWVfcm9sZTogXCJBbGljZV9hZG1pblwiLFxuICAgICAgX19wc19jb3VudF9fOiBcIjJcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAyLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoXCIyMDI1LTAxLTI2VDIzOjAwOjAwLjAwMFpcIiksXG4gICAgICBkZWxldGVkX2F0OiBudWxsLFxuICAgICAgcm9sZTogXCJtZW1iZXJcIixcbiAgICAgIG5hbWU6IFwiQm9iXCIsXG4gICAgICBuYW1lX3JvbGU6IFwiQm9iX21lbWJlclwiLFxuICAgICAgX19wc19jb3VudF9fOiBcIjJcIixcbiAgICB9LFxuICBdIGFzIGNvbnN0IHNhdGlzZmllcyB7XG4gICAgLy8gYmVzdCBlZmZvcnQgbm8gbmVlZCB0byBnbyBvdmVyYm9hcmRcbiAgICBbSyBpbiBSZXR1cm5UeXBlPHR5cGVvZiBtb2NrVGFibGVzUXVlcnk+WzJdW1wiY29sdW1uc1wiXVtudW1iZXJdW1wibmFtZVwiXSB8IFwiX19wc19jb3VudF9fXCJdOiB1bmtub3duO1xuICB9W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVcGRhdGVRdWVyeShcbiAgZGV0YWlsczogQWRhcHRlclVwZGF0ZURldGFpbHMsXG4gIHJlcXVpcmVtZW50cz86IE9taXQ8QnVpbGRlclJlcXVpcmVtZW50cywgXCJBZGFwdGVyXCIgfCBcIlF1ZXJ5Q29tcGlsZXJcIj4sXG4pIHtcbiAgY29uc3Qge1xuICAgIGNoYW5nZXMsXG4gICAgcm93LFxuICAgIHRhYmxlOiB7IGNvbHVtbnMsIG5hbWU6IHRhYmxlTmFtZSwgc2NoZW1hIH0sXG4gIH0gPSBkZXRhaWxzO1xuXG4gIGNvbnN0IGJ1aWxkZXIgPSBnZXRNeVNRTEJ1aWxkZXI8UmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+PihyZXF1aXJlbWVudHMpO1xuXG4gIHJldHVybiBjb21waWxlKFxuICAgIGJ1aWxkZXJcbiAgICAgIC53aXRoU2NoZW1hKHNjaGVtYSlcbiAgICAgIC51cGRhdGVUYWJsZSh0YWJsZU5hbWUpXG4gICAgICAuc2V0KGFwcGx5VHJhbnNmb3JtYXRpb25zKHsgY29sdW1ucywgY29udGV4dDogXCJ1cGRhdGVcIiwgc3VwcG9ydHNEZWZhdWx0S2V5d29yZDogdHJ1ZSwgdmFsdWVzOiBjaGFuZ2VzIH0pKVxuICAgICAgLiRjYWxsKGFwcGx5SW5mZXJyZWRSb3dGaWx0ZXJzKFtyb3ddLCBjb2x1bW5zKSlcbiAgICAgIC4kY2FzdFRvPE9rUGFja2V0UGFyYW1zPigpLFxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRDdXJyZW50VGltZXN0YW1wTWlsbGlzKCkge1xuICByZXR1cm4gc3FsPG51bWJlciB8IHN0cmluZz5gY2FzdCh1bml4X3RpbWVzdGFtcChub3coMykpICogMTAwMCBhcyB1bnNpZ25lZClgO1xufVxuIiwgImltcG9ydCB7IHR5cGUgS3lzZWx5LCBNeXNxbEFkYXB0ZXIsIE15c3FsUXVlcnlDb21waWxlciB9IGZyb20gXCJreXNlbHlcIjtcblxuaW1wb3J0IHsgdHlwZSBCdWlsZGVyUmVxdWlyZW1lbnRzLCBnZXRCdWlsZGVyIH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gZ2V0TXlTUUxCdWlsZGVyPERhdGFiYXNlID0gYW55PihcbiAgcmVxdWlyZW1lbnRzPzogT21pdDxCdWlsZGVyUmVxdWlyZW1lbnRzLCBcIkFkYXB0ZXJcIiB8IFwiUXVlcnlDb21waWxlclwiPixcbik6IEt5c2VseTxEYXRhYmFzZT4ge1xuICByZXR1cm4gZ2V0QnVpbGRlcih7IC4uLnJlcXVpcmVtZW50cywgQWRhcHRlcjogTXlzcWxBZGFwdGVyLCBRdWVyeUNvbXBpbGVyOiBNeXNxbFF1ZXJ5Q29tcGlsZXIgfSk7XG59XG4iLCAiaW1wb3J0IHsgdHlwZSBJbmZlclJlc3VsdCwgc3FsIH0gZnJvbSBcImt5c2VseVwiO1xuaW1wb3J0IHsganNvbkJ1aWxkT2JqZWN0IH0gZnJvbSBcImt5c2VseS9oZWxwZXJzL215c3FsXCI7XG5cbmltcG9ydCB7IHR5cGUgQnVpbGRlclJlcXVpcmVtZW50cywgY29tcGlsZSwgdHlwZSBRdWVyeVJlc3VsdCB9IGZyb20gXCIuLi9xdWVyeVwiO1xuaW1wb3J0IHsgZ2V0TXlTUUxCdWlsZGVyIH0gZnJvbSBcIi4vYnVpbGRlclwiO1xuXG5pbnRlcmZhY2UgRGF0YWJhc2Uge1xuICAvKiogaHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9yZWZtYW4vOC40L2VuL2luZm9ybWF0aW9uLXNjaGVtYS1rZXktY29sdW1uLXVzYWdlLXRhYmxlLmh0bWwgKi9cbiAgXCJpbmZvcm1hdGlvbl9zY2hlbWEuS0VZX0NPTFVNTl9VU0FHRVwiOiB7XG4gICAgQ09MVU1OX05BTUU6IHN0cmluZztcbiAgICBDT05TVFJBSU5UX05BTUU6IHN0cmluZztcbiAgICBPUkRJTkFMX1BPU0lUSU9OOiBudW1iZXI7XG4gICAgLyoqIG51bGwgLSB3aGVuIHVuaXF1ZSBvciBwcmltYXJ5IGtleSBjb25zdHJhaW50LiAxLW4gLSB3aGVuIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgKi9cbiAgICBQT1NJVElPTl9JTl9VTklRVUVfQ09OU1RSQUlOVDogbnVtYmVyIHwgbnVsbDtcbiAgICBSRUZFUkVOQ0VEX0NPTFVNTl9OQU1FOiBzdHJpbmc7XG4gICAgUkVGRVJFTkNFRF9UQUJMRV9OQU1FOiBzdHJpbmc7XG4gICAgVEFCTEVfTkFNRTogc3RyaW5nO1xuICAgIFRBQkxFX1NDSEVNQTogc3RyaW5nO1xuICB9O1xuICAvKiogaHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9yZWZtYW4vOC40L2VuL2luZm9ybWF0aW9uLXNjaGVtYS1jb2x1bW5zLXRhYmxlLmh0bWwgKi9cbiAgXCJpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1uc1wiOiB7XG4gICAgLyoqIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgY29sdW1uLiBUaGlzIGlzIE5VTEwgaWYgdGhlIGNvbHVtbiBoYXMgYW4gZXhwbGljaXQgZGVmYXVsdCBvZiBOVUxMLCBvciBpZiB0aGUgY29sdW1uIGRlZmluaXRpb24gaW5jbHVkZXMgbm8gREVGQVVMVCBjbGF1c2UuICovXG4gICAgQ09MVU1OX0RFRkFVTFQ6IHN0cmluZyB8IG51bGw7XG4gICAgQ09MVU1OX05BTUU6IHN0cmluZztcbiAgICAvKiogQ29udGFpbnMgdGhlIHR5cGUgbmFtZSBhbmQgcG9zc2libHkgb3RoZXIgaW5mb3JtYXRpb24gc3VjaCBhcyB0aGUgcHJlY2lzaW9uIG9yIGxlbmd0aC4gKi9cbiAgICBDT0xVTU5fVFlQRTogc3RyaW5nO1xuICAgIC8qKiBFeHRyYSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29sdW1uLiBQb3NzaWJsZSB2YWx1ZXMgYXJlICovXG4gICAgRVhUUkE6XG4gICAgICB8IFwiXCJcbiAgICAgIHwgXCJhdXRvX2luY3JlbWVudFwiXG4gICAgICB8IFwib24gdXBkYXRlIENVUlJFTlRfVElNRVNUQU1QXCJcbiAgICAgIHwgXCJTVE9SRUQgR0VORVJBVEVEXCJcbiAgICAgIHwgXCJWSVJUVUFMIEdFTkVSQVRFRFwiXG4gICAgICB8IFwiREVGQVVMVCBHRU5FUkFURURcIjtcbiAgICBJU19OVUxMQUJMRTogXCJZRVNcIiB8IFwiTk9cIjtcbiAgICAvKiogVGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4gd2l0aGluIHRoZSB0YWJsZS4gT1JESU5BTF9QT1NJVElPTiBpcyBuZWNlc3NhcnkgYmVjYXVzZSB5b3UgbWlnaHQgd2FudCB0byBzYXkgT1JERVIgQlkgT1JESU5BTF9QT1NJVElPTi4gVW5saWtlIFNIT1cgQ09MVU1OUywgU0VMRUNUIGZyb20gdGhlIENPTFVNTlMgdGFibGUgZG9lcyBub3QgaGF2ZSBhdXRvbWF0aWMgb3JkZXJpbmcuICovXG4gICAgT1JESU5BTF9QT1NJVElPTjogbnVtYmVyO1xuICAgIFRBQkxFX05BTUU6IHN0cmluZztcbiAgICBUQUJMRV9TQ0hFTUE6IHN0cmluZztcbiAgfTtcbiAgLyoqIGh0dHBzOi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVmbWFuLzguNC9lbi9pbmZvcm1hdGlvbi1zY2hlbWEtdGFibGVzLXRhYmxlLmh0bWwgKi9cbiAgXCJpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzXCI6IHtcbiAgICBUQUJMRV9OQU1FOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBzY2hlbWEgKGRhdGFiYXNlKSB0byB3aGljaCB0aGUgdGFibGUgYmVsb25ncy4gKi9cbiAgICBUQUJMRV9TQ0hFTUE6IHN0cmluZztcbiAgICAvKiogQkFTRSBUQUJMRSBmb3IgYSB0YWJsZSwgVklFVyBmb3IgYSB2aWV3LCBvciBTWVNURU0gVklFVyBmb3IgYW4gSU5GT1JNQVRJT05fU0NIRU1BIHRhYmxlLiAqL1xuICAgIFRBQkxFX1RZUEU6IFwiQkFTRSBUQUJMRVwiIHwgXCJWSUVXXCIgfCBcIlNZU1RFTSBWSUVXXCI7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWJsZXNRdWVyeShyZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+KSB7XG4gIGNvbnN0IGRhdGFiYXNlID0gc3FsPHN0cmluZz5gZGF0YWJhc2UoKWA7XG5cbiAgY29uc3QgYnVpbGRlciA9IGdldE15U1FMQnVpbGRlcjxEYXRhYmFzZT4ocmVxdWlyZW1lbnRzKTtcblxuICBjb25zdCBjb2x1bW5zUXVlcnkgPSBidWlsZGVyXG4gICAgLnNlbGVjdEZyb20oXCJpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1ucyBhcyBjXCIpXG4gICAgLmxlZnRKb2luKFwiaW5mb3JtYXRpb25fc2NoZW1hLktFWV9DT0xVTU5fVVNBR0UgYXMga2N1XCIsIChqYikgPT5cbiAgICAgIGpiXG4gICAgICAgIC5vbihcImtjdS5UQUJMRV9TQ0hFTUFcIiwgXCI9XCIsIGRhdGFiYXNlKVxuICAgICAgICAub25SZWYoXCJrY3UuVEFCTEVfTkFNRVwiLCBcIj1cIiwgXCJjLlRBQkxFX05BTUVcIilcbiAgICAgICAgLm9uUmVmKFwia2N1LkNPTFVNTl9OQU1FXCIsIFwiPVwiLCBcImMuQ09MVU1OX05BTUVcIilcbiAgICAgICAgLy8gb25seSBnZXQgZm9yZWlnbiBrZXkgY29uc3RyYWludHNcbiAgICAgICAgLm9uKFwia2N1LlBPU0lUSU9OX0lOX1VOSVFVRV9DT05TVFJBSU5UXCIsIFwiaXMgbm90XCIsIG51bGwpLFxuICAgIClcbiAgICAubGVmdEpvaW4oXCJpbmZvcm1hdGlvbl9zY2hlbWEuS0VZX0NPTFVNTl9VU0FHRSBhcyBwa19rY3VcIiwgKGpiKSA9PlxuICAgICAgamJcbiAgICAgICAgLm9uKFwicGtfa2N1LlRBQkxFX1NDSEVNQVwiLCBcIj1cIiwgZGF0YWJhc2UpXG4gICAgICAgIC5vblJlZihcInBrX2tjdS5UQUJMRV9OQU1FXCIsIFwiPVwiLCBcImMuVEFCTEVfTkFNRVwiKVxuICAgICAgICAub25SZWYoXCJwa19rY3UuQ09MVU1OX05BTUVcIiwgXCI9XCIsIFwiYy5DT0xVTU5fTkFNRVwiKVxuICAgICAgICAvLyBvbmx5IGdldCBwcmltYXJ5IGtleSBjb25zdHJhaW50IC0gZ3VhcmFudGVlZCB0byBiZSBcIlBSSU1BUllcIiBldmVuIGlmIGEgbmFtZSB3YXMgZ2l2ZW4gZHVyaW5nIGNyZWF0aW9uXG4gICAgICAgIC5vbihcInBrX2tjdS5DT05TVFJBSU5UX05BTUVcIiwgXCI9XCIsIFwiUFJJTUFSWVwiKSxcbiAgICApXG4gICAgLndoZXJlKFwiYy5UQUJMRV9TQ0hFTUFcIiwgXCI9XCIsIGRhdGFiYXNlKVxuICAgIC5zZWxlY3QoW1xuICAgICAgXCJjLkNPTFVNTl9ERUZBVUxUIGFzIGRlZmF1bHRcIixcbiAgICAgIFwiYy5DT0xVTU5fTkFNRSBhcyBuYW1lXCIsXG4gICAgICBcImMuQ09MVU1OX1RZUEUgYXMgZGF0YXR5cGVcIixcbiAgICAgIFwiYy5PUkRJTkFMX1BPU0lUSU9OIGFzIHBvc2l0aW9uXCIsXG4gICAgICBcImMuVEFCTEVfTkFNRVwiLFxuICAgICAgXCJrY3UuUkVGRVJFTkNFRF9UQUJMRV9OQU1FIGFzIGZrX3RhYmxlXCIsXG4gICAgICBcImtjdS5SRUZFUkVOQ0VEX0NPTFVNTl9OQU1FIGFzIGZrX2NvbHVtblwiLFxuICAgICAgXCJwa19rY3UuT1JESU5BTF9QT1NJVElPTiBhcyBwa1wiLFxuICAgIF0pXG4gICAgLnNlbGVjdCgoZWIpID0+IFtcbiAgICAgIGViKFwiYy5FWFRSQVwiLCBcIj1cIiwgXCJhdXRvX2luY3JlbWVudFwiKS5hcyhcImF1dG9pbmNyZW1lbnRcIiksXG4gICAgICBlYihcImMuRVhUUkFcIiwgXCJpblwiLCBbXCJvbiB1cGRhdGUgQ1VSUkVOVF9USU1FU1RBTVBcIiwgXCJTVE9SRUQgR0VORVJBVEVEXCIsIFwiVklSVFVBTCBHRU5FUkFURURcIl0pLmFzKFwiY29tcHV0ZWRcIiksXG4gICAgICBlYihcImMuSVNfTlVMTEFCTEVcIiwgXCI9XCIsIFwiWUVTXCIpLmFzKFwibnVsbGFibGVcIiksXG4gICAgXSk7XG5cbiAgcmV0dXJuIGNvbXBpbGUoXG4gICAgZ2V0TXlTUUxCdWlsZGVyPERhdGFiYXNlPihyZXF1aXJlbWVudHMpXG4gICAgICAud2l0aChcImNvbHNcIiwgKCkgPT4gY29sdW1uc1F1ZXJ5KVxuICAgICAgLnNlbGVjdEZyb20oXCJpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIGFzIHRcIilcbiAgICAgIC5pbm5lckpvaW4oXCJjb2xzIGFzIGNcIiwgKGpiKSA9PiBqYi5vblJlZihcImMuVEFCTEVfTkFNRVwiLCBcIj1cIiwgXCJ0LlRBQkxFX05BTUVcIikpXG4gICAgICAud2hlcmUoXCJ0LlRBQkxFX1NDSEVNQVwiLCBcIj1cIiwgZGF0YWJhc2UpXG4gICAgICAud2hlcmUoXCJ0LlRBQkxFX1RZUEVcIiwgXCJpblwiLCBbXCJCQVNFIFRBQkxFXCIsIFwiVklFV1wiXSlcbiAgICAgIC5ncm91cEJ5KFtkYXRhYmFzZSwgXCJ0LlRBQkxFX05BTUVcIiwgXCJ0LlRBQkxFX1RZUEVcIl0pXG4gICAgICAuc2VsZWN0KFtkYXRhYmFzZS5hcyhcInNjaGVtYVwiKSwgXCJ0LlRBQkxFX05BTUUgYXMgbmFtZVwiLCBcInQuVEFCTEVfVFlQRSBhcyB0eXBlXCJdKVxuICAgICAgLiRuYXJyb3dUeXBlPHsgdHlwZTogXCJCQVNFIFRBQkxFXCIgfCBcIlZJRVdcIiB9PigpXG4gICAgICAuc2VsZWN0KChlYikgPT5cbiAgICAgICAgZWJcbiAgICAgICAgICAuZm48T21pdDxJbmZlclJlc3VsdDx0eXBlb2YgY29sdW1uc1F1ZXJ5PltudW1iZXJdLCBcIlRBQkxFX05BTUVcIj5bXT4oXCJqc29uX2FycmF5YWdnXCIsIFtcbiAgICAgICAgICAgIGpzb25CdWlsZE9iamVjdCh7XG4gICAgICAgICAgICAgIGF1dG9pbmNyZW1lbnQ6IGViLnJlZihcImMuYXV0b2luY3JlbWVudFwiKSxcbiAgICAgICAgICAgICAgY29tcHV0ZWQ6IGViLnJlZihcImMuY29tcHV0ZWRcIiksXG4gICAgICAgICAgICAgIGRhdGF0eXBlOiBlYi5yZWYoXCJjLmRhdGF0eXBlXCIpLFxuICAgICAgICAgICAgICBkZWZhdWx0OiBlYi5yZWYoXCJjLmRlZmF1bHRcIiksXG4gICAgICAgICAgICAgIGZrX2NvbHVtbjogZWIucmVmKFwiYy5ma19jb2x1bW5cIiksXG4gICAgICAgICAgICAgIGZrX3RhYmxlOiBlYi5yZWYoXCJjLmZrX3RhYmxlXCIpLFxuICAgICAgICAgICAgICBuYW1lOiBlYi5yZWYoXCJjLm5hbWVcIiksXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBlYi5yZWYoXCJjLnBvc2l0aW9uXCIpLFxuICAgICAgICAgICAgICBwazogZWIucmVmKFwiYy5wa1wiKSxcbiAgICAgICAgICAgICAgbnVsbGFibGU6IGViLnJlZihcImMubnVsbGFibGVcIiksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdKVxuICAgICAgICAgIC5hcyhcImNvbHVtbnNcIiksXG4gICAgICApXG4gICAgICAub3JkZXJCeShcInQuVEFCTEVfU0NIRU1BXCIpXG4gICAgICAub3JkZXJCeShcInQuVEFCTEVfTkFNRVwiKVxuICAgICAgLm9yZGVyQnkoXCJ0LlRBQkxFX1RZUEVcIiksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrVGFibGVzUXVlcnkoKSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgY29sdW1uczogW1xuICAgICAgICB7XG4gICAgICAgICAgYXV0b2luY3JlbWVudDogMSxcbiAgICAgICAgICBjb21wdXRlZDogMCxcbiAgICAgICAgICBkYXRhdHlwZTogXCJpbnRcIixcbiAgICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICAgIGZrX2NvbHVtbjogbnVsbCxcbiAgICAgICAgICBma190YWJsZTogbnVsbCxcbiAgICAgICAgICBuYW1lOiBcImlkXCIsXG4gICAgICAgICAgbnVsbGFibGU6IDAsXG4gICAgICAgICAgcGs6IDEsXG4gICAgICAgICAgcG9zaXRpb246IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRvaW5jcmVtZW50OiAwLFxuICAgICAgICAgIGNvbXB1dGVkOiAwLFxuICAgICAgICAgIGRhdGF0eXBlOiBcImJpbmFyeSgxNilcIixcbiAgICAgICAgICBkZWZhdWx0OiBcInV1aWRfdG9fYmluKHV1aWQoKSlcIixcbiAgICAgICAgICBma19jb2x1bW46IG51bGwsXG4gICAgICAgICAgZmtfdGFibGU6IG51bGwsXG4gICAgICAgICAgbmFtZTogXCJ1dWlkXCIsXG4gICAgICAgICAgbnVsbGFibGU6IDEsXG4gICAgICAgICAgcGs6IG51bGwsXG4gICAgICAgICAgcG9zaXRpb246IDIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRvaW5jcmVtZW50OiAwLFxuICAgICAgICAgIGNvbXB1dGVkOiAwLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInZhcmNoYXIoMjU1KVwiLFxuICAgICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgICAgZmtfY29sdW1uOiBudWxsLFxuICAgICAgICAgIGZrX3RhYmxlOiBudWxsLFxuICAgICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICAgIG51bGxhYmxlOiAxLFxuICAgICAgICAgIHBrOiBudWxsLFxuICAgICAgICAgIHBvc2l0aW9uOiAzLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYXV0b2luY3JlbWVudDogMCxcbiAgICAgICAgICBjb21wdXRlZDogMSxcbiAgICAgICAgICBkYXRhdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgICBma19jb2x1bW46IG51bGwsXG4gICAgICAgICAgZmtfdGFibGU6IG51bGwsXG4gICAgICAgICAgbmFtZTogXCJpZF9uYW1lXCIsXG4gICAgICAgICAgbnVsbGFibGU6IDEsXG4gICAgICAgICAgcGs6IG51bGwsXG4gICAgICAgICAgcG9zaXRpb246IDQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgbmFtZTogXCJhbmltYWxzXCIsXG4gICAgICBzY2hlbWE6IFwic3R1ZGlvXCIsXG4gICAgICB0eXBlOiBcIkJBU0UgVEFCTEVcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGF1dG9pbmNyZW1lbnQ6IDAsXG4gICAgICAgICAgY29tcHV0ZWQ6IDAsXG4gICAgICAgICAgZGF0YXR5cGU6IFwiY2hhcigzNilcIixcbiAgICAgICAgICBkZWZhdWx0OiBcInV1aWQoKVwiLFxuICAgICAgICAgIGZrX2NvbHVtbjogbnVsbCxcbiAgICAgICAgICBma190YWJsZTogbnVsbCxcbiAgICAgICAgICBuYW1lOiBcImlkXCIsXG4gICAgICAgICAgbnVsbGFibGU6IDAsXG4gICAgICAgICAgcGs6IDEsXG4gICAgICAgICAgcG9zaXRpb246IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRvaW5jcmVtZW50OiAwLFxuICAgICAgICAgIGNvbXB1dGVkOiAwLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInRleHRcIixcbiAgICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICAgIGZrX2NvbHVtbjogbnVsbCxcbiAgICAgICAgICBma190YWJsZTogbnVsbCxcbiAgICAgICAgICBuYW1lOiBcIm5hbWVcIixcbiAgICAgICAgICBudWxsYWJsZTogMCxcbiAgICAgICAgICBwazogMixcbiAgICAgICAgICBwb3NpdGlvbjogMixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGF1dG9pbmNyZW1lbnQ6IDAsXG4gICAgICAgICAgY29tcHV0ZWQ6IDAsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidGltZXN0YW1wXCIsXG4gICAgICAgICAgZGVmYXVsdDogXCJDVVJSRU5UX1RJTUVTVEFNUFwiLFxuICAgICAgICAgIGZrX2NvbHVtbjogbnVsbCxcbiAgICAgICAgICBma190YWJsZTogbnVsbCxcbiAgICAgICAgICBuYW1lOiBcImNyZWF0ZWRfYXRcIixcbiAgICAgICAgICBudWxsYWJsZTogMSxcbiAgICAgICAgICBwazogbnVsbCxcbiAgICAgICAgICBwb3NpdGlvbjogMyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBuYW1lOiBcImNvbXBvc2l0ZV9wa1wiLFxuICAgICAgc2NoZW1hOiBcInN0dWRpb1wiLFxuICAgICAgdHlwZTogXCJCQVNFIFRBQkxFXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2x1bW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRvaW5jcmVtZW50OiAxLFxuICAgICAgICAgIGNvbXB1dGVkOiAwLFxuICAgICAgICAgIGRhdGF0eXBlOiBcImludFwiLFxuICAgICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgICAgZmtfY29sdW1uOiBudWxsLFxuICAgICAgICAgIGZrX3RhYmxlOiBudWxsLFxuICAgICAgICAgIG5hbWU6IFwiaWRcIixcbiAgICAgICAgICBudWxsYWJsZTogMCxcbiAgICAgICAgICBwazogMSxcbiAgICAgICAgICBwb3NpdGlvbjogMSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGF1dG9pbmNyZW1lbnQ6IDAsXG4gICAgICAgICAgY29tcHV0ZWQ6IDAsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidGltZXN0YW1wXCIsXG4gICAgICAgICAgZGVmYXVsdDogXCJjdXJyZW50X3RpbWVzdGFtcFwiLFxuICAgICAgICAgIGZrX2NvbHVtbjogbnVsbCxcbiAgICAgICAgICBma190YWJsZTogbnVsbCxcbiAgICAgICAgICBuYW1lOiBcImNyZWF0ZWRfYXRcIixcbiAgICAgICAgICBudWxsYWJsZTogMSxcbiAgICAgICAgICBwazogbnVsbCxcbiAgICAgICAgICBwb3NpdGlvbjogMixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGF1dG9pbmNyZW1lbnQ6IDAsXG4gICAgICAgICAgY29tcHV0ZWQ6IDAsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidGltZXN0YW1wXCIsXG4gICAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgICBma19jb2x1bW46IG51bGwsXG4gICAgICAgICAgZmtfdGFibGU6IG51bGwsXG4gICAgICAgICAgbmFtZTogXCJkZWxldGVkX2F0XCIsXG4gICAgICAgICAgbnVsbGFibGU6IDEsXG4gICAgICAgICAgcGs6IG51bGwsXG4gICAgICAgICAgcG9zaXRpb246IDMsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRvaW5jcmVtZW50OiAwLFxuICAgICAgICAgIGNvbXB1dGVkOiAwLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInRleHRcIixcbiAgICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICAgIGZrX2NvbHVtbjogbnVsbCxcbiAgICAgICAgICBma190YWJsZTogbnVsbCxcbiAgICAgICAgICBuYW1lOiBcInJvbGVcIixcbiAgICAgICAgICBudWxsYWJsZTogMSxcbiAgICAgICAgICBwazogbnVsbCxcbiAgICAgICAgICBwb3NpdGlvbjogNCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGF1dG9pbmNyZW1lbnQ6IDAsXG4gICAgICAgICAgY29tcHV0ZWQ6IDAsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgICAgZmtfY29sdW1uOiBudWxsLFxuICAgICAgICAgIGZrX3RhYmxlOiBudWxsLFxuICAgICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICAgIG51bGxhYmxlOiAxLFxuICAgICAgICAgIHBrOiBudWxsLFxuICAgICAgICAgIHBvc2l0aW9uOiA1LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYXV0b2luY3JlbWVudDogMCxcbiAgICAgICAgICBjb21wdXRlZDogMSxcbiAgICAgICAgICBkYXRhdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgICBma19jb2x1bW46IG51bGwsXG4gICAgICAgICAgZmtfdGFibGU6IG51bGwsXG4gICAgICAgICAgbmFtZTogXCJuYW1lX3JvbGVcIixcbiAgICAgICAgICBudWxsYWJsZTogMSxcbiAgICAgICAgICBwazogbnVsbCxcbiAgICAgICAgICBwb3NpdGlvbjogNixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBuYW1lOiBcInVzZXJzXCIsXG4gICAgICBzY2hlbWE6IFwic3R1ZGlvXCIsXG4gICAgICB0eXBlOiBcIkJBU0UgVEFCTEVcIixcbiAgICB9LFxuICBdIGFzIGNvbnN0IHNhdGlzZmllcyBRdWVyeVJlc3VsdDx0eXBlb2YgZ2V0VGFibGVzUXVlcnk+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZXpvbmVRdWVyeShyZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+KSB7XG4gIGNvbnN0IGJ1aWxkZXIgPSBnZXRNeVNRTEJ1aWxkZXIocmVxdWlyZW1lbnRzKTtcblxuICBjb25zdCBzZXNzaW9uVHogPSBzcWw8XCJTWVNURU1cIiB8IChzdHJpbmcgJiB7fSk+YEBAc2Vzc2lvbi50aW1lX3pvbmVgO1xuXG4gIHJldHVybiBjb21waWxlKFxuICAgIGJ1aWxkZXJcbiAgICAgIC5zZWxlY3ROb0Zyb20oXG4gICAgICAgIGJ1aWxkZXJcbiAgICAgICAgICAuY2FzZSgpXG4gICAgICAgICAgLndoZW4oc2Vzc2lvblR6LCBcIj1cIiwgXCJTWVNURU1cIilcbiAgICAgICAgICAudGhlbihzcWw8c3RyaW5nPmBAQHN5c3RlbV90aW1lX3pvbmVgKVxuICAgICAgICAgIC5lbHNlKHNlc3Npb25UeilcbiAgICAgICAgICAuZW5kKClcbiAgICAgICAgICAuYXMoXCJ0aW1lem9uZVwiKSxcbiAgICAgIClcbiAgICAgIC4kbmFycm93VHlwZTx7IHRpbWV6b25lOiBzdHJpbmcgfT4oKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tUaW1lem9uZVF1ZXJ5KCkge1xuICByZXR1cm4gW3sgdGltZXpvbmU6IFwiVVRDXCIgfV0gYXMgY29uc3Qgc2F0aXNmaWVzIFF1ZXJ5UmVzdWx0PHR5cGVvZiBnZXRUaW1lem9uZVF1ZXJ5Pjtcbn1cbiIsICIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIi4vbXlzcWwuZC50c1wiIC8+XG5pbXBvcnQgeyBzcWwgfSBmcm9tICcuLi9yYXctYnVpbGRlci9zcWwuanMnO1xuaW1wb3J0IHsgZ2V0SnNvbk9iamVjdEFyZ3MgfSBmcm9tICcuLi91dGlsL2pzb24tb2JqZWN0LWFyZ3MuanMnO1xuLyoqXG4gKiBBIE15U1FMIGhlbHBlciBmb3IgYWdncmVnYXRpbmcgYSBzdWJxdWVyeSBpbnRvIGEgSlNPTiBhcnJheS5cbiAqXG4gKiBOT1RFOiBUaGlzIGhlbHBlciBpcyBvbmx5IGd1YXJhbnRlZWQgdG8gZnVsbHkgd29yayB3aXRoIHRoZSBidWlsdC1pbiBgTXlzcWxEaWFsZWN0YC5cbiAqIFdoaWxlIHRoZSBwcm9kdWNlZCBTUUwgaXMgY29tcGF0aWJsZSB3aXRoIGFsbCBNeVNRTCBkYXRhYmFzZXMsIHNvbWUgdGhpcmQtcGFydHkgZGlhbGVjdHNcbiAqIG1heSBub3QgcGFyc2UgdGhlIG5lc3RlZCBKU09OIGludG8gYXJyYXlzLiBJbiB0aGVzZSBjYXNlcyB5b3UgY2FuIHVzZSB0aGUgYnVpbHQgaW5cbiAqIGBQYXJzZUpTT05SZXN1bHRzUGx1Z2luYCB0byBwYXJzZSB0aGUgcmVzdWx0cy5cbiAqXG4gKiAjIyMgRXhhbXBsZXNcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsganNvbkFycmF5RnJvbSB9IGZyb20gJ2t5c2VseS9oZWxwZXJzL215c3FsJ1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRiXG4gKiAgIC5zZWxlY3RGcm9tKCdwZXJzb24nKVxuICogICAuc2VsZWN0KChlYikgPT4gW1xuICogICAgICdpZCcsXG4gKiAgICAganNvbkFycmF5RnJvbShcbiAqICAgICAgIGViLnNlbGVjdEZyb20oJ3BldCcpXG4gKiAgICAgICAgIC5zZWxlY3QoWydwZXQuaWQgYXMgcGV0X2lkJywgJ3BldC5uYW1lJ10pXG4gKiAgICAgICAgIC53aGVyZVJlZigncGV0Lm93bmVyX2lkJywgJz0nLCAncGVyc29uLmlkJylcbiAqICAgICAgICAgLm9yZGVyQnkoJ3BldC5uYW1lJylcbiAqICAgICApLmFzKCdwZXRzJylcbiAqICAgXSlcbiAqICAgLmV4ZWN1dGUoKVxuICpcbiAqIHJlc3VsdFswXT8uaWRcbiAqIHJlc3VsdFswXT8ucGV0c1swXT8ucGV0X2lkXG4gKiByZXN1bHRbMF0/LnBldHNbMF0/Lm5hbWVcbiAqIGBgYFxuICpcbiAqIFRoZSBnZW5lcmF0ZWQgU1FMIChNeVNRTCk6XG4gKlxuICogYGBgc3FsXG4gKiBzZWxlY3QgYGlkYCwgKFxuICogICBzZWxlY3QgY2FzdChjb2FsZXNjZShqc29uX2FycmF5YWdnKGpzb25fb2JqZWN0KFxuICogICAgICdwZXRfaWQnLCBgYWdnYC5gcGV0X2lkYCxcbiAqICAgICAnbmFtZScsIGBhZ2dgLmBuYW1lYFxuICogICApKSwgJ1tdJykgYXMganNvbikgZnJvbSAoXG4gKiAgICAgc2VsZWN0IGBwZXRgLmBpZGAgYXMgYHBldF9pZGAsIGBwZXRgLmBuYW1lYFxuICogICAgIGZyb20gYHBldGBcbiAqICAgICB3aGVyZSBgcGV0YC5gb3duZXJfaWRgID0gYHBlcnNvbmAuYGlkYFxuICogICAgIG9yZGVyIGJ5IGBwZXRgLmBuYW1lYFxuICogICApIGFzIGBhZ2dgXG4gKiApIGFzIGBwZXRzYFxuICogZnJvbSBgcGVyc29uYFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqc29uQXJyYXlGcm9tKGV4cHIpIHtcbiAgICByZXR1cm4gc3FsIGAoc2VsZWN0IGNhc3QoY29hbGVzY2UoanNvbl9hcnJheWFnZyhqc29uX29iamVjdCgke3NxbC5qb2luKGdldE15c3FsSnNvbk9iamVjdEFyZ3MoZXhwci50b09wZXJhdGlvbk5vZGUoKSwgJ2FnZycpKX0pKSwgJ1tdJykgYXMganNvbikgZnJvbSAke2V4cHJ9IGFzIGFnZylgO1xufVxuLyoqXG4gKiBBIE15U1FMIGhlbHBlciBmb3IgdHVybmluZyBhIHN1YnF1ZXJ5IGludG8gYSBKU09OIG9iamVjdC5cbiAqXG4gKiBUaGUgc3VicXVlcnkgbXVzdCBvbmx5IHJldHVybiBvbmUgcm93LlxuICpcbiAqIE5PVEU6IFRoaXMgaGVscGVyIGlzIG9ubHkgZ3VhcmFudGVlZCB0byBmdWxseSB3b3JrIHdpdGggdGhlIGJ1aWx0LWluIGBNeXNxbERpYWxlY3RgLlxuICogV2hpbGUgdGhlIHByb2R1Y2VkIFNRTCBpcyBjb21wYXRpYmxlIHdpdGggYWxsIE15U1FMIGRhdGFiYXNlcywgc29tZSB0aGlyZC1wYXJ0eSBkaWFsZWN0c1xuICogbWF5IG5vdCBwYXJzZSB0aGUgbmVzdGVkIEpTT04gaW50byBvYmplY3RzLiBJbiB0aGVzZSBjYXNlcyB5b3UgY2FuIHVzZSB0aGUgYnVpbHQgaW5cbiAqIGBQYXJzZUpTT05SZXN1bHRzUGx1Z2luYCB0byBwYXJzZSB0aGUgcmVzdWx0cy5cbiAqXG4gKiAjIyMgRXhhbXBsZXNcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsganNvbk9iamVjdEZyb20gfSBmcm9tICdreXNlbHkvaGVscGVycy9teXNxbCdcbiAqXG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBkYlxuICogICAuc2VsZWN0RnJvbSgncGVyc29uJylcbiAqICAgLnNlbGVjdCgoZWIpID0+IFtcbiAqICAgICAnaWQnLFxuICogICAgIGpzb25PYmplY3RGcm9tKFxuICogICAgICAgZWIuc2VsZWN0RnJvbSgncGV0JylcbiAqICAgICAgICAgLnNlbGVjdChbJ3BldC5pZCBhcyBwZXRfaWQnLCAncGV0Lm5hbWUnXSlcbiAqICAgICAgICAgLndoZXJlUmVmKCdwZXQub3duZXJfaWQnLCAnPScsICdwZXJzb24uaWQnKVxuICogICAgICAgICAud2hlcmUoJ3BldC5pc19mYXZvcml0ZScsICc9JywgdHJ1ZSlcbiAqICAgICApLmFzKCdmYXZvcml0ZV9wZXQnKVxuICogICBdKVxuICogICAuZXhlY3V0ZSgpXG4gKlxuICogcmVzdWx0WzBdPy5pZFxuICogcmVzdWx0WzBdPy5mYXZvcml0ZV9wZXQ/LnBldF9pZFxuICogcmVzdWx0WzBdPy5mYXZvcml0ZV9wZXQ/Lm5hbWVcbiAqIGBgYFxuICpcbiAqIFRoZSBnZW5lcmF0ZWQgU1FMIChNeVNRTCk6XG4gKlxuICogYGBgc3FsXG4gKiBzZWxlY3QgYGlkYCwgKFxuICogICBzZWxlY3QganNvbl9vYmplY3QoXG4gKiAgICAgJ3BldF9pZCcsIGBvYmpgLmBwZXRfaWRgLFxuICogICAgICduYW1lJywgYG9iamAuYG5hbWVgXG4gKiAgICkgZnJvbSAoXG4gKiAgICAgc2VsZWN0IGBwZXRgLmBpZGAgYXMgYHBldF9pZGAsIGBwZXRgLmBuYW1lYFxuICogICAgIGZyb20gYHBldGBcbiAqICAgICB3aGVyZSBgcGV0YC5gb3duZXJfaWRgID0gYHBlcnNvbmAuYGlkYFxuICogICAgIGFuZCBgcGV0YC5gaXNfZmF2b3JpdGVgID0gP1xuICogICApIGFzIG9ialxuICogKSBhcyBgZmF2b3JpdGVfcGV0YFxuICogZnJvbSBgcGVyc29uYFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqc29uT2JqZWN0RnJvbShleHByKSB7XG4gICAgcmV0dXJuIHNxbCBgKHNlbGVjdCBqc29uX29iamVjdCgke3NxbC5qb2luKGdldE15c3FsSnNvbk9iamVjdEFyZ3MoZXhwci50b09wZXJhdGlvbk5vZGUoKSwgJ29iaicpKX0pIGZyb20gJHtleHByfSBhcyBvYmopYDtcbn1cbi8qKlxuICogVGhlIE15U1FMIGBqc29uX29iamVjdGAgZnVuY3Rpb24uXG4gKlxuICogTk9URTogVGhpcyBoZWxwZXIgaXMgb25seSBndWFyYW50ZWVkIHRvIGZ1bGx5IHdvcmsgd2l0aCB0aGUgYnVpbHQtaW4gYE15c3FsRGlhbGVjdGAuXG4gKiBXaGlsZSB0aGUgcHJvZHVjZWQgU1FMIGlzIGNvbXBhdGlibGUgd2l0aCBhbGwgTXlTUUwgZGF0YWJhc2VzLCBzb21lIHRoaXJkLXBhcnR5IGRpYWxlY3RzXG4gKiBtYXkgbm90IHBhcnNlIHRoZSBuZXN0ZWQgSlNPTiBpbnRvIG9iamVjdHMuIEluIHRoZXNlIGNhc2VzIHlvdSBjYW4gdXNlIHRoZSBidWlsdCBpblxuICogYFBhcnNlSlNPTlJlc3VsdHNQbHVnaW5gIHRvIHBhcnNlIHRoZSByZXN1bHRzLlxuICpcbiAqICMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYHRzXG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBkYlxuICogICAuc2VsZWN0RnJvbSgncGVyc29uJylcbiAqICAgLnNlbGVjdCgoZWIpID0+IFtcbiAqICAgICAnaWQnLFxuICogICAgIGpzb25CdWlsZE9iamVjdCh7XG4gKiAgICAgICBmaXJzdDogZWIucmVmKCdmaXJzdF9uYW1lJyksXG4gKiAgICAgICBsYXN0OiBlYi5yZWYoJ2xhc3RfbmFtZScpLFxuICogICAgICAgZnVsbDogZWIuZm4oJ2NvbmNhdCcsIFsnZmlyc3RfbmFtZScsIGViLnZhbCgnICcpLCAnbGFzdF9uYW1lJ10pXG4gKiAgICAgfSkuYXMoJ25hbWUnKVxuICogICBdKVxuICogICAuZXhlY3V0ZSgpXG4gKlxuICogcmVzdWx0WzBdPy5pZFxuICogcmVzdWx0WzBdPy5uYW1lLmZpcnN0XG4gKiByZXN1bHRbMF0/Lm5hbWUubGFzdFxuICogcmVzdWx0WzBdPy5uYW1lLmZ1bGxcbiAqIGBgYFxuICpcbiAqIFRoZSBnZW5lcmF0ZWQgU1FMIChNeVNRTCk6XG4gKlxuICogYGBgc3FsXG4gKiBzZWxlY3QgXCJpZFwiLCBqc29uX29iamVjdChcbiAqICAgJ2ZpcnN0JywgZmlyc3RfbmFtZSxcbiAqICAgJ2xhc3QnLCBsYXN0X25hbWUsXG4gKiAgICdmdWxsJywgY29uY2F0KGBmaXJzdF9uYW1lYCwgPywgYGxhc3RfbmFtZWApXG4gKiApIGFzIFwibmFtZVwiXG4gKiBmcm9tIFwicGVyc29uXCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24ganNvbkJ1aWxkT2JqZWN0KG9iaikge1xuICAgIHJldHVybiBzcWwgYGpzb25fb2JqZWN0KCR7c3FsLmpvaW4oT2JqZWN0LmtleXMob2JqKS5mbGF0TWFwKChrKSA9PiBbc3FsLmxpdChrKSwgb2JqW2tdXSkpfSlgO1xufVxuZnVuY3Rpb24gZ2V0TXlzcWxKc29uT2JqZWN0QXJncyhub2RlLCB0YWJsZSkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBnZXRKc29uT2JqZWN0QXJncyhub2RlLCB0YWJsZSk7XG4gICAgfVxuICAgIGNhdGNoIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNeVNRTCBqc29uQXJyYXlGcm9tIGFuZCBqc29uT2JqZWN0RnJvbSBmdW5jdGlvbnMgY2FuIG9ubHkgaGFuZGxlIGV4cGxpY2l0IHNlbGVjdGlvbnMgZHVlIHRvIGxpbWl0YXRpb25zIG9mIHRoZSBqc29uX29iamVjdCBmdW5jdGlvbi4gc2VsZWN0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QSxLQUNBLFNBQ0EsT0FDQSxVQUNGLEVBS08sU0FBU0MsSUFBaUIsQ0FDL0IsSUFBTTNCLEVBQVM0QixFQUFnQixFQUN6QixDQUFDLENBQUUsU0FBQXpCLENBQVMsQ0FBQyxFQUFJMEIsR0FBa0IsRUFHekMsT0FBT3pCLEdBQW9CLENBQUUsT0FBQUosRUFBUSxTQUFBRyxFQUFVLE1BRmpDLENBQUUsV0FBWSxDQUFDLEVBQUcsSUFBSyxVQUFXLENBRUssQ0FBQyxDQWN4RCxDQUVBLFNBQVNyQixFQUFhSCxFQUFxRSxDQUN6RixHQUFNLENBQUNtRCxFQUFRQyxDQUFNLEVBQUlwRCxFQUV6QixNQUFPLENBQ0wsV0FBWW1ELEVBQU8sV0FBVyxPQUFPQyxFQUFPLFVBQVUsRUFDdEQsSUFBSyxHQUFHRCxFQUFPLEdBQUc7QUFBQSxFQUFNQyxFQUFPLEdBQUcsRUFDcEMsQ0FDRiIsCiAgIm5hbWVzIjogWyJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJNWVNRTF9EQVRBX1RZUEVTX1RPX01FVEFEQVRBIiwgImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgImdldE15U1FMQnVpbGRlciIsICJyZXF1aXJlbWVudHMiLCAiZ2V0QnVpbGRlciIsICJNeXNxbEFkYXB0ZXIiLCAiTXlzcWxRdWVyeUNvbXBpbGVyIiwgImdldERlbGV0ZVF1ZXJ5IiwgImRldGFpbHMiLCAicmVxdWlyZW1lbnRzIiwgInJvd3MiLCAiY29sdW1ucyIsICJ0YWJsZU5hbWUiLCAiYnVpbGRlciIsICJnZXRNeVNRTEJ1aWxkZXIiLCAiY29tcGlsZSIsICJhcHBseUluZmVycmVkUm93RmlsdGVycyIsICJnZXRJbnNlcnRRdWVyeSIsICJhcHBseVRyYW5zZm9ybWF0aW9ucyIsICJnZXRJbnNlcnRSZWZldGNoUXVlcnkiLCAiY3JpdGVyaWEiLCAiZ2V0Q3VycmVudFRpbWVzdGFtcE1pbGxpcyIsICJnZXRVcGRhdGVSZWZldGNoUXVlcnkiLCAiY2hhbmdlcyIsICJyb3ciLCAiZ2V0U2VsZWN0UXVlcnkiLCAiZmlsdGVyIiwgInBhZ2VJbmRleCIsICJwYWdlU2l6ZSIsICJzb3J0T3JkZXIiLCAiZmlsdGVyRXhwcmVzc2lvbiIsICJnZXRTZWxlY3RGaWx0ZXJFeHByZXNzaW9uIiwgIkFHR19OQU1FIiwgIkNPVU5UX1JFRiIsICJjb3VudFF1ZXJ5IiwgImViIiwgInNxbCIsICJqYiIsICJxYiIsICJpdGVtIiwgIm1vY2tTZWxlY3RRdWVyeSIsICJnZXRVcGRhdGVRdWVyeSIsICJzY2hlbWEiLCAiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAianNvbkJ1aWxkT2JqZWN0IiwgIm9iaiIsICJzcWwiLCAiayIsICJnZXRUYWJsZXNRdWVyeSIsICJyZXF1aXJlbWVudHMiLCAiZGF0YWJhc2UiLCAic3FsIiwgImNvbHVtbnNRdWVyeSIsICJnZXRNeVNRTEJ1aWxkZXIiLCAiamIiLCAiZWIiLCAiY29tcGlsZSIsICJqc29uQnVpbGRPYmplY3QiLCAibW9ja1RhYmxlc1F1ZXJ5IiwgImdldFRpbWV6b25lUXVlcnkiLCAiYnVpbGRlciIsICJzZXNzaW9uVHoiLCAibW9ja1RpbWV6b25lUXVlcnkiLCAiY3JlYXRlTXlTUUxBZGFwdGVyIiwgInJlcXVpcmVtZW50cyIsICJleGVjdXRvciIsICJvdGhlclJlcXVpcmVtZW50cyIsICJkZXRhaWxzIiwgIm9wdGlvbnMiLCAicXVlcnkiLCAiZ2V0RGVsZXRlUXVlcnkiLCAiZXJyb3IiLCAiY3JlYXRlQWRhcHRlckVycm9yIiwgInJvd3MiLCAidGFibGUiLCAiY29sdW1ucyIsICJhdXRvaW5jcmVtZW50Q29sdW1uIiwgImNvbHVtbiIsICJmaWx0ZXJPYmplY3RzIiwgInJvdyIsICJpbmZlckZpbHRlck9iamVjdCIsICJoYXNQYXJ0aWFsRmlsdGVyT2JqZWN0cyIsICJmaWx0ZXJPYmplY3QiLCAiZmlsdGVyVmFsdWVzIiwgInZhbHVlIiwgImdldEluc2VydFF1ZXJ5IiwgImluc2VydFF1ZXJ5IiwgInJlZmV0Y2hRdWVyeSIsICJnZXRJbnNlcnRSZWZldGNoUXVlcnkiLCAic2VxdWVuY2UiLCAiaW5zZXJ0RXJyb3IiLCAibWF5YmVSZWZldGNoUmVzdWx0IiwgImpvaW5TZXF1ZW5jZSIsICJyZWZldGNoRXJyb3IiLCAicmVmZXRjaFJlc3VsdHMiLCAicmVzdWx0cyIsICJyZXN1bHQiLCAiYXV0b2luY3JlbWVudENvbHVtbk5hbWUiLCAiYWNjIiwgImNvbHVtbk5hbWUiLCAicmVmZXRjaGVkUm93IiwgImluc2VydGVkUm93cyIsICJlcnJvcnMiLCAiaSIsICJpbmRleCIsICJ0YWJsZXNRdWVyeSIsICJnZXRUYWJsZXNRdWVyeSIsICJ0aW1lem9uZVF1ZXJ5IiwgImdldFRpbWV6b25lUXVlcnkiLCAidGFibGVzRXJyb3IiLCAidGFibGVzIiwgInRpbWV6b25lRXJyb3IiLCAidGltZXpvbmVzIiwgInRpbWV6b25lIiwgImNyZWF0ZUludHJvc3BlY3Rpb24iLCAiZ2V0U2VsZWN0UXVlcnkiLCAidXBkYXRlUXVlcnkiLCAiZ2V0VXBkYXRlUXVlcnkiLCAiZ2V0VXBkYXRlUmVmZXRjaFF1ZXJ5IiwgInVwZGF0ZUVycm9yIiwgInJlZmV0Y2hSZXN1bHQiLCAiYXJncyIsICJzY2hlbWFzIiwgInRhYmxlTmFtZSIsICJzY2hlbWEiLCAiY29sdW1uc1JlY29yZCIsICJhIiwgImIiLCAiZGF0YXR5cGUiLCAiZGVmYXVsdFZhbHVlIiwgImluZGV4T2ZQYXJlbnRoZXNpcyIsICJzdHJpcHBlZERhdGFUeXBlIiwgImlzQXV0b2luY3JlbWVudCIsICJpc0NvbXB1dGVkIiwgIm51bGxhYmxlIiwgIk1ZU1FMX0RBVEFfVFlQRVNfVE9fTUVUQURBVEEiLCAiZmlsdGVyT3BlcmF0b3JzIiwgIm1vY2tJbnRyb3NwZWN0IiwgIm1vY2tUYWJsZXNRdWVyeSIsICJtb2NrVGltZXpvbmVRdWVyeSIsICJxdWVyeTAiLCAicXVlcnkxIl0KfQo=
@@ -6,5 +6,5 @@ function require(mod) {
6
6
  if (mod === 'react-dom') return ___react_dom___;
7
7
  throw new Error(`Unknown module ${mod}`);
8
8
  }
9
- import{b as u}from"../../chunk-3C77SGUV.js";import{a as q}from"../../chunk-3NI2JGEP.js";import{e as d}from"../../chunk-53FUZ62K.js";d();function h(n){return{async execute(o,i){let{abortSignal:r}=i||{};if(!r)try{let[e]=await n.query(o.sql,o.parameters);return[null,l(e)]}catch(e){return[e]}if(r.aborted)return u();let a,t;try{let e,s=new Promise(w=>e=w);r.addEventListener("abort",a=()=>e());let c=n.getConnection(),f=await Promise.race([c,s]);if(!f)return c.catch(()=>{}),u();if(t=f,r.aborted)return t.release(),u();let m=(t||n).query(o.sql,o.parameters),y=await Promise.race([m,s]);if(!y)return Promise.allSettled([v(n,y),m]).finally(()=>t?.release()),u();t.release();let[P]=y;return[null,l(P)]}catch(e){return t?.release(),[e]}finally{a&&r?.removeEventListener("abort",a)}},async executeSequence(o,i){let r;try{r=await n.getConnection();let[a,t]=o,[e]=await r.query(a.sql,a.parameters).catch(c=>[c]);if(e instanceof Error)return[[e]];let[s]=await r.query(t.sql,t.parameters).catch(c=>[c]);return s instanceof Error?[[null,l(e)],[s]]:[[null,l(e)],[null,l(s)]]}catch(a){return[[a]]}finally{r?.release()}}}}function l(n){return Array.isArray(n)?n:[n]}async function v(n,o){let i=q(o);try{await n.query(i.sql,i.parameters)}catch(r){console.error("Failed to cancel query:",r)}}export{h as createMySQL2Executor};
9
+ import{a as q}from"../../chunk-3NI2JGEP.js";import{b as u}from"../../chunk-3C77SGUV.js";import{e as d}from"../../chunk-53FUZ62K.js";d();function h(n){return{async execute(o,i){let{abortSignal:r}=i||{};if(!r)try{let[e]=await n.query(o.sql,o.parameters);return[null,l(e)]}catch(e){return[e]}if(r.aborted)return u();let a,t;try{let e,s=new Promise(w=>e=w);r.addEventListener("abort",a=()=>e());let c=n.getConnection(),f=await Promise.race([c,s]);if(!f)return c.catch(()=>{}),u();if(t=f,r.aborted)return t.release(),u();let m=(t||n).query(o.sql,o.parameters),y=await Promise.race([m,s]);if(!y)return Promise.allSettled([v(n,y),m]).finally(()=>t?.release()),u();t.release();let[P]=y;return[null,l(P)]}catch(e){return t?.release(),[e]}finally{a&&r?.removeEventListener("abort",a)}},async executeSequence(o,i){let r;try{r=await n.getConnection();let[a,t]=o,[e]=await r.query(a.sql,a.parameters).catch(c=>[c]);if(e instanceof Error)return[[e]];let[s]=await r.query(t.sql,t.parameters).catch(c=>[c]);return s instanceof Error?[[null,l(e)],[s]]:[[null,l(e)],[null,l(s)]]}catch(a){return[[a]]}finally{r?.release()}}}}function l(n){return Array.isArray(n)?n:[n]}async function v(n,o){let i=q(o);try{await n.query(i.sql,i.parameters)}catch(r){console.error("Failed to cancel query:",r)}}export{h as createMySQL2Executor};
10
10
  //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9teXNxbDIvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgUG9vbCwgUG9vbENvbm5lY3Rpb24gfSBmcm9tIFwibXlzcWwyL3Byb21pc2VcIjtcblxuaW1wb3J0IHsgZ2V0QWJvcnRSZXN1bHQsIHR5cGUgU2VxdWVuY2VFeGVjdXRvciB9IGZyb20gXCIuLi9leGVjdXRvclwiO1xuaW1wb3J0IHsgZ2V0Q2FuY2VsUXVlcnkgfSBmcm9tIFwiLi4vbXlzcWwtY29yZS91dGlsaXR5XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNeVNRTDJFeGVjdXRvcihwb29sOiBQb29sKTogU2VxdWVuY2VFeGVjdXRvciB7XG4gIHJldHVybiB7XG4gICAgYXN5bmMgZXhlY3V0ZShxdWVyeSwgb3B0aW9ucykge1xuICAgICAgY29uc3QgeyBhYm9ydFNpZ25hbCB9ID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgaWYgKCFhYm9ydFNpZ25hbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IFtyZXN1bHRdID0gYXdhaXQgcG9vbC5xdWVyeShxdWVyeS5zcWwsIHF1ZXJ5LnBhcmFtZXRlcnMpO1xuXG4gICAgICAgICAgcmV0dXJuIFtudWxsLCBhc0FycmF5KHJlc3VsdCldIGFzIG5ldmVyO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAgIHJldHVybiBbZXJyb3IgYXMgRXJyb3JdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHJldHVybiBnZXRBYm9ydFJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBsZXQgYWJvcnRMaXN0ZW5lcjogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IGNvbm5lY3Rpb246IFBvb2xDb25uZWN0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgYWJvcnRlZDogKCkgPT4gdm9pZDtcbiAgICAgICAgY29uc3QgYWJvcnRpb25Qcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IChhYm9ydGVkID0gcmVzb2x2ZSkpO1xuXG4gICAgICAgIGFib3J0U2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCAoYWJvcnRMaXN0ZW5lciA9ICgpID0+IGFib3J0ZWQoKSkpO1xuXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25Qcm9taXNlID0gcG9vbC5nZXRDb25uZWN0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgY29ubmVjdGlvblJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbY29ubmVjdGlvblByb21pc2UsIGFib3J0aW9uUHJvbWlzZV0pO1xuXG4gICAgICAgIGlmICghY29ubmVjdGlvblJlc3VsdCkge1xuICAgICAgICAgIHZvaWQgY29ubmVjdGlvblByb21pc2UuY2F0Y2goKCkgPT4ge30pO1xuXG4gICAgICAgICAgcmV0dXJuIGdldEFib3J0UmVzdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25uZWN0aW9uID0gY29ubmVjdGlvblJlc3VsdDtcblxuICAgICAgICBpZiAoYWJvcnRTaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuXG4gICAgICAgICAgcmV0dXJuIGdldEFib3J0UmVzdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdWVyeVByb21pc2UgPSAoY29ubmVjdGlvbiB8fCBwb29sKS5xdWVyeShxdWVyeS5zcWwsIHF1ZXJ5LnBhcmFtZXRlcnMpO1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5UmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtxdWVyeVByb21pc2UsIGFib3J0aW9uUHJvbWlzZV0pO1xuXG4gICAgICAgIGlmICghcXVlcnlSZXN1bHQpIHtcbiAgICAgICAgICAvLyBub3QgaW1wb3J0YW50IGVub3VnaCB0byBhd2FpdC5cbiAgICAgICAgICB2b2lkIFByb21pc2UuYWxsU2V0dGxlZChbY2FuY2VsUXVlcnkocG9vbCwgcXVlcnlSZXN1bHQpLCBxdWVyeVByb21pc2VdKS5maW5hbGx5KCgpID0+IGNvbm5lY3Rpb24/LnJlbGVhc2UoKSk7XG5cbiAgICAgICAgICByZXR1cm4gZ2V0QWJvcnRSZXN1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuXG4gICAgICAgIGNvbnN0IFtyZXN1bHRdID0gcXVlcnlSZXN1bHQ7XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCBhc0FycmF5KHJlc3VsdCldIGFzIG5ldmVyO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgY29ubmVjdGlvbj8ucmVsZWFzZSgpO1xuXG4gICAgICAgIHJldHVybiBbZXJyb3IgYXMgRXJyb3JdO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKGFib3J0TGlzdGVuZXIpIHtcbiAgICAgICAgICBhYm9ydFNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGFib3J0TGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8vIFRPRE86IGFib3J0IHNpZ25hbCBoYW5kbGluZ1xuICAgIC8vIFRPRE86IHRyYW5zYWN0aW9uP1xuICAgIGFzeW5jIGV4ZWN1dGVTZXF1ZW5jZShzZXF1ZW5jZSwgX29wdGlvbnMpIHtcbiAgICAgIGxldCBjb25uZWN0aW9uOiBQb29sQ29ubmVjdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29ubmVjdGlvbiA9IGF3YWl0IHBvb2wuZ2V0Q29ubmVjdGlvbigpO1xuXG4gICAgICAgIGNvbnN0IFtxdWVyeTAsIHF1ZXJ5MV0gPSBzZXF1ZW5jZTtcblxuICAgICAgICBjb25zdCBbcmVzdWx0MF0gPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KHF1ZXJ5MC5zcWwsIHF1ZXJ5MC5wYXJhbWV0ZXJzKS5jYXRjaCgoZXJyb3IpID0+IFtlcnJvciBhcyBFcnJvcl0pO1xuXG4gICAgICAgIGlmIChyZXN1bHQwIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gW1tyZXN1bHQwXV07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbcmVzdWx0MV0gPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KHF1ZXJ5MS5zcWwsIHF1ZXJ5MS5wYXJhbWV0ZXJzKS5jYXRjaCgoZXJyb3IpID0+IFtlcnJvciBhcyBFcnJvcl0pO1xuXG4gICAgICAgIGlmIChyZXN1bHQxIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gW1tudWxsLCBhc0FycmF5KHJlc3VsdDApXSwgW3Jlc3VsdDFdXSBhcyBuZXZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgW251bGwsIGFzQXJyYXkocmVzdWx0MCldLFxuICAgICAgICAgIFtudWxsLCBhc0FycmF5KHJlc3VsdDEpXSxcbiAgICAgICAgXSBhcyBuZXZlcjtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIHJldHVybiBbW2Vycm9yIGFzIEVycm9yXV07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBjb25uZWN0aW9uPy5yZWxlYXNlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmZ1bmN0aW9uIGFzQXJyYXk8VD4odmFsdWU6IFQpOiBUIGV4dGVuZHMgYW55W10gPyBUIDogVFtdIHtcbiAgcmV0dXJuIChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSkgYXMgbmV2ZXI7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNhbmNlbFF1ZXJ5KHBvb2w6IFBvb2wsIHRocmVhZElkOiB1bmtub3duKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHF1ZXJ5ID0gZ2V0Q2FuY2VsUXVlcnkodGhyZWFkSWQpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgcG9vbC5xdWVyeShxdWVyeS5zcWwsIHF1ZXJ5LnBhcmFtZXRlcnMpO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY2FuY2VsIHF1ZXJ5OlwiLCBlcnJvcik7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7O29JQUFBQSxJQUtPLFNBQVNDLEVBQXFCQyxFQUE4QixDQUNqRSxNQUFPLENBQ0wsTUFBTSxRQUFRQyxFQUFPQyxFQUFTLENBQzVCLEdBQU0sQ0FBRSxZQUFBQyxDQUFZLEVBQUlELEdBQVcsQ0FBQyxFQUVwQyxHQUFJLENBQUNDLEVBQ0gsR0FBSSxDQUNGLEdBQU0sQ0FBQ0MsQ0FBTSxFQUFJLE1BQU1KLEVBQUssTUFBTUMsRUFBTSxJQUFLQSxFQUFNLFVBQVUsRUFFN0QsTUFBTyxDQUFDLEtBQU1JLEVBQVFELENBQU0sQ0FBQyxDQUMvQixPQUFTRSxFQUFnQixDQUN2QixNQUFPLENBQUNBLENBQWMsQ0FDeEIsQ0FHRixHQUFJSCxFQUFZLFFBQ2QsT0FBT0ksRUFBZSxFQUd4QixJQUFJQyxFQUNBQyxFQUVKLEdBQUksQ0FDRixJQUFJQyxFQUNFQyxFQUFrQixJQUFJLFFBQWVDLEdBQWFGLEVBQVVFLENBQVEsRUFFMUVULEVBQVksaUJBQWlCLFFBQVVLLEVBQWdCLElBQU1FLEVBQVEsQ0FBRSxFQUV2RSxJQUFNRyxFQUFvQmIsRUFBSyxjQUFjLEVBRXZDYyxFQUFtQixNQUFNLFFBQVEsS0FBSyxDQUFDRCxFQUFtQkYsQ0FBZSxDQUFDLEVBRWhGLEdBQUksQ0FBQ0csRUFDSCxPQUFLRCxFQUFrQixNQUFNLElBQU0sQ0FBQyxDQUFDLEVBRTlCTixFQUFlLEVBS3hCLEdBRkFFLEVBQWFLLEVBRVRYLEVBQVksUUFDZCxPQUFBTSxFQUFXLFFBQVEsRUFFWkYsRUFBZSxFQUd4QixJQUFNUSxHQUFnQk4sR0FBY1QsR0FBTSxNQUFNQyxFQUFNLElBQUtBLEVBQU0sVUFBVSxFQUVyRWUsRUFBYyxNQUFNLFFBQVEsS0FBSyxDQUFDRCxFQUFjSixDQUFlLENBQUMsRUFFdEUsR0FBSSxDQUFDSyxFQUVILE9BQUssUUFBUSxXQUFXLENBQUNDLEVBQVlqQixFQUFNZ0IsQ0FBVyxFQUFHRCxDQUFZLENBQUMsRUFBRSxRQUFRLElBQU1OLEdBQVksUUFBUSxDQUFDLEVBRXBHRixFQUFlLEVBR3hCRSxFQUFXLFFBQVEsRUFFbkIsR0FBTSxDQUFDTCxDQUFNLEVBQUlZLEVBRWpCLE1BQU8sQ0FBQyxLQUFNWCxFQUFRRCxDQUFNLENBQUMsQ0FDL0IsT0FBU0UsRUFBZ0IsQ0FDdkIsT0FBQUcsR0FBWSxRQUFRLEVBRWIsQ0FBQ0gsQ0FBYyxDQUN4QixRQUFFLENBQ0lFLEdBQ0ZMLEdBQWEsb0JBQW9CLFFBQVNLLENBQWEsQ0FFM0QsQ0FDRixFQUlBLE1BQU0sZ0JBQWdCVSxFQUFVQyxFQUFVLENBQ3hDLElBQUlWLEVBRUosR0FBSSxDQUNGQSxFQUFhLE1BQU1ULEVBQUssY0FBYyxFQUV0QyxHQUFNLENBQUNvQixFQUFRQyxDQUFNLEVBQUlILEVBRW5CLENBQUNJLENBQU8sRUFBSSxNQUFNYixFQUFXLE1BQU1XLEVBQU8sSUFBS0EsRUFBTyxVQUFVLEVBQUUsTUFBT2QsR0FBVSxDQUFDQSxDQUFjLENBQUMsRUFFekcsR0FBSWdCLGFBQW1CLE1BQ3JCLE1BQU8sQ0FBQyxDQUFDQSxDQUFPLENBQUMsRUFHbkIsR0FBTSxDQUFDQyxDQUFPLEVBQUksTUFBTWQsRUFBVyxNQUFNWSxFQUFPLElBQUtBLEVBQU8sVUFBVSxFQUFFLE1BQU9mLEdBQVUsQ0FBQ0EsQ0FBYyxDQUFDLEVBRXpHLE9BQUlpQixhQUFtQixNQUNkLENBQUMsQ0FBQyxLQUFNbEIsRUFBUWlCLENBQU8sQ0FBQyxFQUFHLENBQUNDLENBQU8sQ0FBQyxFQUd0QyxDQUNMLENBQUMsS0FBTWxCLEVBQVFpQixDQUFPLENBQUMsRUFDdkIsQ0FBQyxLQUFNakIsRUFBUWtCLENBQU8sQ0FBQyxDQUN6QixDQUNGLE9BQVNqQixFQUFnQixDQUN2QixNQUFPLENBQUMsQ0FBQ0EsQ0FBYyxDQUFDLENBQzFCLFFBQUUsQ0FDQUcsR0FBWSxRQUFRLENBQ3RCLENBQ0YsQ0FDRixDQUNGLENBR0EsU0FBU0osRUFBV21CLEVBQXFDLENBQ3ZELE9BQVEsTUFBTSxRQUFRQSxDQUFLLEVBQUlBLEVBQVEsQ0FBQ0EsQ0FBSyxDQUMvQyxDQUVBLGVBQWVQLEVBQVlqQixFQUFZeUIsRUFBa0MsQ0FDdkUsSUFBTXhCLEVBQVF5QixFQUFlRCxDQUFRLEVBRXJDLEdBQUksQ0FDRixNQUFNekIsRUFBSyxNQUFNQyxFQUFNLElBQUtBLEVBQU0sVUFBVSxDQUM5QyxPQUFTSyxFQUFnQixDQUN2QixRQUFRLE1BQU0sMEJBQTJCQSxDQUFLLENBQ2hELENBQ0YiLAogICJuYW1lcyI6IFsiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiY3JlYXRlTXlTUUwyRXhlY3V0b3IiLCAicG9vbCIsICJxdWVyeSIsICJvcHRpb25zIiwgImFib3J0U2lnbmFsIiwgInJlc3VsdCIsICJhc0FycmF5IiwgImVycm9yIiwgImdldEFib3J0UmVzdWx0IiwgImFib3J0TGlzdGVuZXIiLCAiY29ubmVjdGlvbiIsICJhYm9ydGVkIiwgImFib3J0aW9uUHJvbWlzZSIsICJyZXNvbHZlIiwgImNvbm5lY3Rpb25Qcm9taXNlIiwgImNvbm5lY3Rpb25SZXN1bHQiLCAicXVlcnlQcm9taXNlIiwgInF1ZXJ5UmVzdWx0IiwgImNhbmNlbFF1ZXJ5IiwgInNlcXVlbmNlIiwgIl9vcHRpb25zIiwgInF1ZXJ5MCIsICJxdWVyeTEiLCAicmVzdWx0MCIsICJyZXN1bHQxIiwgInZhbHVlIiwgInRocmVhZElkIiwgImdldENhbmNlbFF1ZXJ5Il0KfQo=