@mochabug/adaptkit 1.0.0-beta.11 → 1.0.0-beta.12

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/bin/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- var g={name:"@mochabug/adaptkit",version:"1.0.0-beta.11"};function oe(e,n){return e!==null&&typeof e=="object"&&"$typeName"in e&&typeof e.$typeName=="string"?n===void 0?!0:n.typeName===e.$typeName:!1}var c;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(c||(c={}));function wn(){let e=0,n=0;for(let o=0;o<28;o+=7){let s=this.buf[this.pos++];if(e|=(s&127)<<o,(s&128)==0)return this.assertBounds(),[e,n]}let t=this.buf[this.pos++];if(e|=(t&15)<<28,n=(t&112)>>4,(t&128)==0)return this.assertBounds(),[e,n];for(let o=3;o<=31;o+=7){let s=this.buf[this.pos++];if(n|=(s&127)<<o,(s&128)==0)return this.assertBounds(),[e,n]}throw new Error("invalid varint")}function ye(e,n,t){for(let a=0;a<28;a=a+7){let i=e>>>a,r=!(!(i>>>7)&&n==0),l=(r?i|128:i)&255;if(t.push(l),!r)return}let o=e>>>28&15|(n&7)<<4,s=n>>3!=0;if(t.push((s?o|128:o)&255),!!s){for(let a=3;a<31;a=a+7){let i=n>>>a,r=!!(i>>>7),l=(r?i|128:i)&255;if(t.push(l),!r)return}t.push(n>>>31&1)}}var Ie=4294967296;function Te(e){let n=e[0]==="-";n&&(e=e.slice(1));let t=1e6,o=0,s=0;function a(i,r){let l=Number(e.slice(i,r));s*=t,o=o*t+l,o>=Ie&&(s=s+(o/Ie|0),o=o%Ie)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),n?Un(o,s):_e(o,s)}function vn(e,n){let t=_e(e,n),o=t.hi&2147483648;o&&(t=Un(t.lo,t.hi));let s=Pe(t.lo,t.hi);return o?"-"+s:s}function Pe(e,n){if({lo:e,hi:n}=jo(e,n),n<=2097151)return String(Ie*n+e);let t=e&16777215,o=(e>>>24|n<<8)&16777215,s=n>>16&65535,a=t+o*6777216+s*6710656,i=o+s*8147497,r=s*2,l=1e7;return a>=l&&(i+=Math.floor(a/l),a%=l),i>=l&&(r+=Math.floor(i/l),i%=l),r.toString()+Ln(i)+Ln(a)}function jo(e,n){return{lo:e>>>0,hi:n>>>0}}function _e(e,n){return{lo:e|0,hi:n|0}}function Un(e,n){return n=~n,e?e=~e+1:n+=1,_e(e,n)}var Ln=e=>{let n=String(e);return"0000000".slice(n.length)+n};function Oe(e,n){if(e>=0){for(;e>127;)n.push(e&127|128),e=e>>>7;n.push(e)}else{for(let t=0;t<9;t++)n.push(e&127|128),e=e>>7;n.push(1)}}function kn(){let e=this.buf[this.pos++],n=e&127;if((e&128)==0)return this.assertBounds(),n;if(e=this.buf[this.pos++],n|=(e&127)<<7,(e&128)==0)return this.assertBounds(),n;if(e=this.buf[this.pos++],n|=(e&127)<<14,(e&128)==0)return this.assertBounds(),n;if(e=this.buf[this.pos++],n|=(e&127)<<21,(e&128)==0)return this.assertBounds(),n;e=this.buf[this.pos++],n|=(e&15)<<28;for(let t=5;(e&128)!==0&&t<10;t++)e=this.buf[this.pos++];if((e&128)!=0)throw new Error("invalid varint");return this.assertBounds(),n>>>0}var p=$o();function $o(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof e.getBigInt64=="function"&&typeof e.getBigUint64=="function"&&typeof e.setBigInt64=="function"&&typeof e.setBigUint64=="function"&&(typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let t=BigInt("-9223372036854775808"),o=BigInt("9223372036854775807"),s=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(i){let r=typeof i=="bigint"?i:BigInt(i);if(r>o||r<t)throw new Error(`invalid int64: ${i}`);return r},uParse(i){let r=typeof i=="bigint"?i:BigInt(i);if(r>a||r<s)throw new Error(`invalid uint64: ${i}`);return r},enc(i){return e.setBigInt64(0,this.parse(i),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(i){return e.setBigInt64(0,this.uParse(i),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(i,r){return e.setInt32(0,i,!0),e.setInt32(4,r,!0),e.getBigInt64(0,!0)},uDec(i,r){return e.setInt32(0,i,!0),e.setInt32(4,r,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),Dn(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),Qn(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),Dn(t),Te(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),Qn(t),Te(t)},dec(t,o){return vn(t,o)},uDec(t,o){return Pe(t,o)}}}function Dn(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function Qn(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function F(e,n){switch(e){case c.STRING:return"";case c.BOOL:return!1;default:return 0;case c.DOUBLE:case c.FLOAT:return 0;case c.INT64:case c.UINT64:case c.SFIXED64:case c.FIXED64:case c.SINT64:return n?"0":p.zero;case c.BYTES:return new Uint8Array(0)}}function Tn(e,n){switch(e){case c.BOOL:return n===!1;case c.STRING:return n==="";case c.BYTES:return n instanceof Uint8Array&&!n.byteLength;default:return n==0}}var qo=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],C=class extends Error{constructor(n,t,o="FieldValueInvalidError"){super(t),this.name=o,this.field=()=>n}};function Pn(e){return e instanceof Error&&qo.includes(e.name)&&"field"in e&&typeof e.field=="function"}var _n=2,Y=Symbol.for("reflect unsafe local");function Ge(e,n){let t=e[n.localName].case;return t===void 0?t:n.fields.find(o=>o.localName===t)}function On(e,n){let t=n.localName;if(n.oneof)return e[n.oneof.localName].case===t;if(n.presence!=_n)return e[t]!==void 0&&Object.prototype.hasOwnProperty.call(e,t);switch(n.fieldKind){case"list":return e[t].length>0;case"map":return Object.keys(e[t]).length>0;case"scalar":return!Tn(n.scalar,e[t]);case"enum":return e[t]!==n.enum.values[0].number}throw new Error("message field with implicit presence")}function D(e,n){return Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==void 0}function he(e,n){if(n.oneof){let t=e[n.oneof.localName];return t.case===n.localName?t.value:void 0}return e[n.localName]}function fe(e,n,t){n.oneof?e[n.oneof.localName]={case:n.localName,value:t}:e[n.localName]=t}function jn(e,n){let t=n.localName;if(n.oneof){let o=n.oneof.localName;e[o].case===t&&(e[o]={case:void 0})}else if(n.presence!=_n)delete e[t];else switch(n.fieldKind){case"map":e[t]={};break;case"list":e[t]=[];break;case"enum":e[t]=n.enum.values[0].number;break;case"scalar":e[t]=F(n.scalar,n.longAsString);break}}function M(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function se(e,n){var t,o,s,a;if(M(e)&&Y in e&&"add"in e&&"field"in e&&typeof e.field=="function"){if(n!==void 0){let i=n,r=e.field();return i.listKind==r.listKind&&i.scalar===r.scalar&&((t=i.message)===null||t===void 0?void 0:t.typeName)===((o=r.message)===null||o===void 0?void 0:o.typeName)&&((s=i.enum)===null||s===void 0?void 0:s.typeName)===((a=r.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function ae(e,n){var t,o,s,a;if(M(e)&&Y in e&&"has"in e&&"field"in e&&typeof e.field=="function"){if(n!==void 0){let i=n,r=e.field();return i.mapKey===r.mapKey&&i.mapKind==r.mapKind&&i.scalar===r.scalar&&((t=i.message)===null||t===void 0?void 0:t.typeName)===((o=r.message)===null||o===void 0?void 0:o.typeName)&&((s=i.enum)===null||s===void 0?void 0:s.typeName)===((a=r.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function ie(e,n){return M(e)&&Y in e&&"desc"in e&&M(e.desc)&&e.desc.kind==="message"&&(n===void 0||e.desc.typeName==n.typeName)}function $n(e){return qn(e.$typeName)}function H(e){let n=e.fields[0];return qn(e.typeName)&&n!==void 0&&n.fieldKind=="scalar"&&n.name=="value"&&n.number==1}function qn(e){return e.startsWith("google.protobuf.")&&["DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue"].includes(e.substring(16))}var es=999,ns=998,Ze=2;function B(e,n){if(oe(n,e))return n;let t=is(e);return n!==void 0&&ts(e,t,n),t}function ts(e,n,t){for(let o of e.members){let s=t[o.localName];if(s==null)continue;let a;if(o.kind=="oneof"){let i=Ge(t,o);if(!i)continue;a=i,s=he(t,i)}else a=o;switch(a.fieldKind){case"message":s=$e(a,s);break;case"scalar":s=tt(a,s);break;case"list":s=ss(a,s);break;case"map":s=os(a,s);break}fe(n,a,s)}return n}function tt(e,n){return e.scalar==c.BYTES?qe(n):n}function os(e,n){if(M(n)){if(e.scalar==c.BYTES)return et(n,qe);if(e.mapKind=="message")return et(n,t=>$e(e,t))}return n}function ss(e,n){if(Array.isArray(n)){if(e.scalar==c.BYTES)return n.map(qe);if(e.listKind=="message")return n.map(t=>$e(e,t))}return n}function $e(e,n){if(e.fieldKind=="message"&&!e.oneof&&H(e.message))return tt(e.message.fields[0],n);if(M(n)){if(e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!=="google.protobuf.Value")return n;if(!oe(n,e.message))return B(e.message,n)}return n}function qe(e){return Array.isArray(e)?new Uint8Array(e):e}function et(e,n){let t={};for(let o of Object.entries(e))t[o[0]]=n(o[1]);return t}var as=Symbol(),nt=new WeakMap;function is(e){let n;if(rs(e)){let t=nt.get(e),o,s;if(t)({prototype:o,members:s}=t);else{o={},s=new Set;for(let a of e.members)a.kind!="oneof"&&(a.fieldKind!="scalar"&&a.fieldKind!="enum"||a.presence!=Ze&&(s.add(a),o[a.localName]=je(a)));nt.set(e,{prototype:o,members:s})}n=Object.create(o),n.$typeName=e.typeName;for(let a of e.members)s.has(a)||a.kind=="field"&&(a.fieldKind=="message"||(a.fieldKind=="scalar"||a.fieldKind=="enum")&&a.presence!=Ze)||(n[a.localName]=je(a))}else{n={$typeName:e.typeName};for(let t of e.members)(t.kind=="oneof"||t.presence==Ze)&&(n[t.localName]=je(t))}return n}function rs(e){switch(e.file.edition){case es:return!1;case ns:return!0;default:return e.fields.some(n=>n.presence!=Ze&&n.fieldKind!="message"&&!n.oneof)}}function je(e){if(e.kind=="oneof")return{case:void 0};if(e.fieldKind=="list")return[];if(e.fieldKind=="map")return{};if(e.fieldKind=="message")return as;let n=e.getDefaultValue();return n!==void 0?e.fieldKind=="scalar"&&e.longAsString?n.toString():n:e.fieldKind=="scalar"?F(e.scalar,e.longAsString):e.enum.values[0].number}var en=Symbol.for("@bufbuild/protobuf/text-encoding");function re(){if(globalThis[en]==null){let e=new globalThis.TextEncoder,n=new globalThis.TextDecoder;globalThis[en]={encodeUtf8(t){return e.encode(t)},decodeUtf8(t){return n.decode(t)},checkUtf8(t){try{return encodeURIComponent(t),!0}catch{return!1}}}}return globalThis[en]}var f;(function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"})(f||(f={}));var tn=34028234663852886e22,on=-34028234663852886e22,sn=4294967295,an=2147483647,rn=-2147483648,P=class{constructor(n=re().encodeUtf8){this.encodeUtf8=n,this.stack=[],this.chunks=[],this.buf=[]}finish(){this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]);let n=0;for(let s=0;s<this.chunks.length;s++)n+=this.chunks[s].length;let t=new Uint8Array(n),o=0;for(let s=0;s<this.chunks.length;s++)t.set(this.chunks[s],o),o+=this.chunks[s].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let n=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(n.byteLength),this.raw(n)}tag(n,t){return this.uint32((n<<3|t)>>>0)}raw(n){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(n),this}uint32(n){for(ot(n);n>127;)this.buf.push(n&127|128),n=n>>>7;return this.buf.push(n),this}int32(n){return nn(n),Oe(n,this.buf),this}bool(n){return this.buf.push(n?1:0),this}bytes(n){return this.uint32(n.byteLength),this.raw(n)}string(n){let t=this.encodeUtf8(n);return this.uint32(t.byteLength),this.raw(t)}float(n){cs(n);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,n,!0),this.raw(t)}double(n){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,n,!0),this.raw(t)}fixed32(n){ot(n);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,n,!0),this.raw(t)}sfixed32(n){nn(n);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,n,!0),this.raw(t)}sint32(n){return nn(n),n=(n<<1^n>>31)>>>0,Oe(n,this.buf),this}sfixed64(n){let t=new Uint8Array(8),o=new DataView(t.buffer),s=p.enc(n);return o.setInt32(0,s.lo,!0),o.setInt32(4,s.hi,!0),this.raw(t)}fixed64(n){let t=new Uint8Array(8),o=new DataView(t.buffer),s=p.uEnc(n);return o.setInt32(0,s.lo,!0),o.setInt32(4,s.hi,!0),this.raw(t)}int64(n){let t=p.enc(n);return ye(t.lo,t.hi,this.buf),this}sint64(n){let t=p.enc(n),o=t.hi>>31,s=t.lo<<1^o,a=(t.hi<<1|t.lo>>>31)^o;return ye(s,a,this.buf),this}uint64(n){let t=p.uEnc(n);return ye(t.lo,t.hi,this.buf),this}},Q=class{constructor(n,t=re().decodeUtf8){this.decodeUtf8=t,this.varint64=wn,this.uint32=kn,this.buf=n,this.len=n.length,this.pos=0,this.view=new DataView(n.buffer,n.byteOffset,n.byteLength)}tag(){let n=this.uint32(),t=n>>>3,o=n&7;if(t<=0||o<0||o>5)throw new Error("illegal tag: field no "+t+" wire type "+o);return[t,o]}skip(n,t){let o=this.pos;switch(n){case f.Varint:for(;this.buf[this.pos++]&128;);break;case f.Bit64:this.pos+=4;case f.Bit32:this.pos+=4;break;case f.LengthDelimited:let s=this.uint32();this.pos+=s;break;case f.StartGroup:for(;;){let[a,i]=this.tag();if(i===f.EndGroup){if(t!==void 0&&a!==t)throw new Error("invalid end group tag");break}this.skip(i,a)}break;default:throw new Error("cant skip wire type "+n)}return this.assertBounds(),this.buf.subarray(o,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let n=this.uint32();return n>>>1^-(n&1)}int64(){return p.dec(...this.varint64())}uint64(){return p.uDec(...this.varint64())}sint64(){let[n,t]=this.varint64(),o=-(n&1);return n=(n>>>1|(t&1)<<31)^o,t=t>>>1^o,p.dec(n,t)}bool(){let[n,t]=this.varint64();return n!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return p.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return p.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let n=this.uint32(),t=this.pos;return this.pos+=n,this.assertBounds(),this.buf.subarray(t,t+n)}string(){return this.decodeUtf8(this.bytes())}};function nn(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid int32: "+typeof e);if(!Number.isInteger(e)||e>an||e<rn)throw new Error("invalid int32: "+e)}function ot(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid uint32: "+typeof e);if(!Number.isInteger(e)||e>sn||e<0)throw new Error("invalid uint32: "+e)}function cs(e){if(typeof e=="string"){let n=e;if(e=Number(e),isNaN(e)&&n!=="NaN")throw new Error("invalid float32: "+n)}else if(typeof e!="number")throw new Error("invalid float32: "+typeof e);if(Number.isFinite(e)&&(e>tn||e<on))throw new Error("invalid float32: "+e)}function K(e,n){let t=e.fieldKind=="list"?se(n,e):e.fieldKind=="map"?ae(n,e):ln(e,n);if(t===!0)return;let o;switch(e.fieldKind){case"list":o=`expected ${rt(e)}, got ${A(n)}`;break;case"map":o=`expected ${ct(e)}, got ${A(n)}`;break;default:o=Ae(e,n,t)}return new C(e,o)}function cn(e,n,t){let o=ln(e,t);if(o!==!0)return new C(e,`list item #${n+1}: ${Ae(e,t,o)}`)}function st(e,n,t){let o=at(n,e.mapKey);if(o!==!0)return new C(e,`invalid map key: ${Ae({scalar:e.mapKey},n,o)}`);let s=ln(e,t);if(s!==!0)return new C(e,`map entry ${A(n)}: ${Ae(e,t,s)}`)}function ln(e,n){return e.scalar!==void 0?at(n,e.scalar):e.enum!==void 0?e.enum.open?Number.isInteger(n):e.enum.values.some(t=>t.number===n):ie(n,e.message)}function at(e,n){switch(n){case c.DOUBLE:return typeof e=="number";case c.FLOAT:return typeof e!="number"?!1:Number.isNaN(e)||!Number.isFinite(e)?!0:e>tn||e<on?`${e.toFixed()} out of range`:!0;case c.INT32:case c.SFIXED32:case c.SINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>an||e<rn?`${e.toFixed()} out of range`:!0;case c.FIXED32:case c.UINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>sn||e<0?`${e.toFixed()} out of range`:!0;case c.BOOL:return typeof e=="boolean";case c.STRING:return typeof e!="string"?!1:re().checkUtf8(e)||"invalid UTF8";case c.BYTES:return e instanceof Uint8Array;case c.INT64:case c.SFIXED64:case c.SINT64:if(typeof e!="string"&&typeof e!="bigint"&&typeof e!="number")return!1;try{p.parse(e)}catch{return`${e} out of range`}return!0;case c.FIXED64:case c.UINT64:if(typeof e!="string"&&typeof e!="bigint"&&typeof e!="number")return!1;try{p.uParse(e)}catch{return`${e} out of range`}return!0}}function Ae(e,n,t){return t=typeof t=="string"?`: ${t}`:`, got ${A(n)}`,e.scalar!==void 0?`expected ${ls(e.scalar)}`+t:e.enum!==void 0?`expected ${e.enum.toString()}`+t:`expected ${it(e.message)}`+t}function A(e){switch(typeof e){case"object":return e===null?"null":e instanceof Uint8Array?`Uint8Array(${e.length})`:Array.isArray(e)?`Array(${e.length})`:se(e)?rt(e.field()):ae(e)?ct(e.field()):ie(e)?it(e.desc):oe(e)?`message ${e.$typeName}`:"object";case"string":return e.length>30?"string":`"${e.split('"').join('\\"')}"`;case"boolean":return String(e);case"number":return String(e);case"bigint":return String(e)+"n";default:return typeof e}}function it(e){return`ReflectMessage (${e.typeName})`}function rt(e){switch(e.listKind){case"message":return`ReflectList (${e.message.toString()})`;case"enum":return`ReflectList (${e.enum.toString()})`;case"scalar":return`ReflectList (${c[e.scalar]})`}}function ct(e){switch(e.mapKind){case"message":return`ReflectMap (${c[e.mapKey]}, ${e.message.toString()})`;case"enum":return`ReflectMap (${c[e.mapKey]}, ${e.enum.toString()})`;case"scalar":return`ReflectMap (${c[e.mapKey]}, ${c[e.scalar]})`}}function ls(e){switch(e){case c.STRING:return"string";case c.BOOL:return"boolean";case c.INT64:case c.SINT64:case c.SFIXED64:return"bigint (int64)";case c.UINT64:case c.FIXED64:return"bigint (uint64)";case c.BYTES:return"Uint8Array";case c.DOUBLE:return"number (float64)";case c.FLOAT:return"number (float32)";case c.FIXED32:case c.UINT32:return"number (uint32)";case c.INT32:case c.SFIXED32:case c.SINT32:return"number (int32)"}}function X(e,n,t=!0){return new Ce(e,n,t)}var Ce=class{get sortedFields(){var n;return(n=this._sortedFields)!==null&&n!==void 0?n:this._sortedFields=this.desc.fields.concat().sort((t,o)=>t.number-o.number)}constructor(n,t,o=!0){this.lists=new Map,this.maps=new Map,this.check=o,this.desc=n,this.message=this[Y]=t??B(n),this.fields=n.fields,this.oneofs=n.oneofs,this.members=n.members}findNumber(n){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(t=>[t.number,t]))),this._fieldsByNumber.get(n)}oneofCase(n){return ce(this.message,n),Ge(this.message,n)}isSet(n){return ce(this.message,n),On(this.message,n)}clear(n){ce(this.message,n),jn(this.message,n)}get(n){ce(this.message,n);let t=he(this.message,n);switch(n.fieldKind){case"list":let o=this.lists.get(n);return(!o||o[Y]!==t)&&this.lists.set(n,o=new gn(n,t,this.check)),o;case"map":let s=this.maps.get(n);return(!s||s[Y]!==t)&&this.maps.set(n,s=new mn(n,t,this.check)),s;case"message":return pn(n,t,this.check);case"scalar":return t===void 0?F(n.scalar,!1):In(n,t);case"enum":return t??n.enum.values[0].number}}set(n,t){if(ce(this.message,n),this.check){let s=K(n,t);if(s)throw s}let o;n.fieldKind=="message"?o=bn(n,t):ae(t)||se(t)?o=t[Y]:o=yn(n,t),fe(this.message,n,o)}getUnknown(){return this.message.$unknown}setUnknown(n){this.message.$unknown=n}};function ce(e,n){if(n.parent.typeName!==e.$typeName)throw new C(n,`cannot use ${n.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var gn=class{field(){return this._field}get size(){return this._arr.length}constructor(n,t,o){this._field=n,this._arr=this[Y]=t,this.check=o}get(n){let t=this._arr[n];return t===void 0?void 0:dn(this._field,t,this.check)}set(n,t){if(n<0||n>=this._arr.length)throw new C(this._field,`list item #${n+1}: out of range`);if(this.check){let o=cn(this._field,n,t);if(o)throw o}this._arr[n]=lt(this._field,t)}add(n){if(this.check){let t=cn(this._field,this._arr.length,n);if(t)throw t}this._arr.push(lt(this._field,n))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(let n of this._arr)yield dn(this._field,n,this.check)}*entries(){for(let n=0;n<this._arr.length;n++)yield[n,dn(this._field,this._arr[n],this.check)]}};var mn=class{constructor(n,t,o=!0){this.obj=this[Y]=t??{},this.check=o,this._field=n}field(){return this._field}set(n,t){if(this.check){let o=st(this._field,n,t);if(o)throw o}return this.obj[Ve(n)]=ds(this._field,t),this}delete(n){let t=Ve(n),o=Object.prototype.hasOwnProperty.call(this.obj,t);return o&&delete this.obj[t],o}clear(){for(let n of Object.keys(this.obj))delete this.obj[n]}get(n){let t=this.obj[Ve(n)];return t!==void 0&&(t=un(this._field,t,this.check)),t}has(n){return Object.prototype.hasOwnProperty.call(this.obj,Ve(n))}*keys(){for(let n of Object.keys(this.obj))yield dt(n,this._field.mapKey)}*entries(){for(let n of Object.entries(this.obj))yield[dt(n[0],this._field.mapKey),un(this._field,n[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(let n of Object.values(this.obj))yield un(this._field,n,this.check)}forEach(n,t){for(let o of this.entries())n.call(t,o[1],o[0],this)}};function bn(e,n){return ie(n)?$n(n.message)&&!e.oneof&&e.fieldKind=="message"?n.message.value:n.desc.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"?gt(n.message):n.message:n}function pn(e,n,t){return n!==void 0&&(H(e.message)&&!e.oneof&&e.fieldKind=="message"?n={$typeName:e.message.typeName,value:In(e.message.fields[0],n)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&M(n)&&(n=ut(n))),new Ce(e.message,n,t)}function lt(e,n){return e.listKind=="message"?bn(e,n):yn(e,n)}function dn(e,n,t){return e.listKind=="message"?pn(e,n,t):In(e,n)}function ds(e,n){return e.mapKind=="message"?bn(e,n):yn(e,n)}function un(e,n,t){return e.mapKind=="message"?pn(e,n,t):n}function Ve(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function dt(e,n){switch(n){case c.STRING:return e;case c.INT32:case c.FIXED32:case c.UINT32:case c.SFIXED32:case c.SINT32:{let t=Number.parseInt(e);if(Number.isFinite(t))return t;break}case c.BOOL:switch(e){case"true":return!0;case"false":return!1}break;case c.UINT64:case c.FIXED64:try{return p.uParse(e)}catch{}break;default:try{return p.parse(e)}catch{}break}return e}function In(e,n){switch(e.scalar){case c.INT64:case c.SFIXED64:case c.SINT64:"longAsString"in e&&e.longAsString&&typeof n=="string"&&(n=p.parse(n));break;case c.FIXED64:case c.UINT64:"longAsString"in e&&e.longAsString&&typeof n=="string"&&(n=p.uParse(n));break}return n}function yn(e,n){switch(e.scalar){case c.INT64:case c.SFIXED64:case c.SINT64:"longAsString"in e&&e.longAsString?n=String(n):(typeof n=="string"||typeof n=="number")&&(n=p.parse(n));break;case c.FIXED64:case c.UINT64:"longAsString"in e&&e.longAsString?n=String(n):(typeof n=="string"||typeof n=="number")&&(n=p.uParse(n));break}return n}function ut(e){let n={$typeName:"google.protobuf.Struct",fields:{}};if(M(e))for(let[t,o]of Object.entries(e))n.fields[t]=bt(o);return n}function gt(e){let n={};for(let[t,o]of Object.entries(e.fields))n[t]=mt(o);return n}function mt(e){switch(e.kind.case){case"structValue":return gt(e.kind.value);case"listValue":return e.kind.value.values.map(mt);case"nullValue":case void 0:return null;default:return e.kind.value}}function bt(e){let n={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof e){case"number":n.kind={case:"numberValue",value:e};break;case"string":n.kind={case:"stringValue",value:e};break;case"boolean":n.kind={case:"boolValue",value:e};break;case"object":if(e===null)n.kind={case:"nullValue",value:0};else if(Array.isArray(e)){let t={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(let o of e)t.values.push(bt(o));n.kind={case:"listValue",value:t}}else n.kind={case:"structValue",value:ut(e)};break}return n}function Se(e){let n=us(),t=e.length*3/4;e[e.length-2]=="="?t-=2:e[e.length-1]=="="&&(t-=1);let o=new Uint8Array(t),s=0,a=0,i,r=0;for(let l=0;l<e.length;l++){if(i=n[e.charCodeAt(l)],i===void 0)switch(e[l]){case"=":a=0;case`
2
+ var g={name:"@mochabug/adaptkit",version:"1.0.0-beta.12"};function oe(e,n){return e!==null&&typeof e=="object"&&"$typeName"in e&&typeof e.$typeName=="string"?n===void 0?!0:n.typeName===e.$typeName:!1}var c;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(c||(c={}));function wn(){let e=0,n=0;for(let o=0;o<28;o+=7){let s=this.buf[this.pos++];if(e|=(s&127)<<o,(s&128)==0)return this.assertBounds(),[e,n]}let t=this.buf[this.pos++];if(e|=(t&15)<<28,n=(t&112)>>4,(t&128)==0)return this.assertBounds(),[e,n];for(let o=3;o<=31;o+=7){let s=this.buf[this.pos++];if(n|=(s&127)<<o,(s&128)==0)return this.assertBounds(),[e,n]}throw new Error("invalid varint")}function ye(e,n,t){for(let a=0;a<28;a=a+7){let i=e>>>a,r=!(!(i>>>7)&&n==0),l=(r?i|128:i)&255;if(t.push(l),!r)return}let o=e>>>28&15|(n&7)<<4,s=n>>3!=0;if(t.push((s?o|128:o)&255),!!s){for(let a=3;a<31;a=a+7){let i=n>>>a,r=!!(i>>>7),l=(r?i|128:i)&255;if(t.push(l),!r)return}t.push(n>>>31&1)}}var Ie=4294967296;function Te(e){let n=e[0]==="-";n&&(e=e.slice(1));let t=1e6,o=0,s=0;function a(i,r){let l=Number(e.slice(i,r));s*=t,o=o*t+l,o>=Ie&&(s=s+(o/Ie|0),o=o%Ie)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),n?Un(o,s):_e(o,s)}function vn(e,n){let t=_e(e,n),o=t.hi&2147483648;o&&(t=Un(t.lo,t.hi));let s=Pe(t.lo,t.hi);return o?"-"+s:s}function Pe(e,n){if({lo:e,hi:n}=jo(e,n),n<=2097151)return String(Ie*n+e);let t=e&16777215,o=(e>>>24|n<<8)&16777215,s=n>>16&65535,a=t+o*6777216+s*6710656,i=o+s*8147497,r=s*2,l=1e7;return a>=l&&(i+=Math.floor(a/l),a%=l),i>=l&&(r+=Math.floor(i/l),i%=l),r.toString()+Ln(i)+Ln(a)}function jo(e,n){return{lo:e>>>0,hi:n>>>0}}function _e(e,n){return{lo:e|0,hi:n|0}}function Un(e,n){return n=~n,e?e=~e+1:n+=1,_e(e,n)}var Ln=e=>{let n=String(e);return"0000000".slice(n.length)+n};function Oe(e,n){if(e>=0){for(;e>127;)n.push(e&127|128),e=e>>>7;n.push(e)}else{for(let t=0;t<9;t++)n.push(e&127|128),e=e>>7;n.push(1)}}function kn(){let e=this.buf[this.pos++],n=e&127;if((e&128)==0)return this.assertBounds(),n;if(e=this.buf[this.pos++],n|=(e&127)<<7,(e&128)==0)return this.assertBounds(),n;if(e=this.buf[this.pos++],n|=(e&127)<<14,(e&128)==0)return this.assertBounds(),n;if(e=this.buf[this.pos++],n|=(e&127)<<21,(e&128)==0)return this.assertBounds(),n;e=this.buf[this.pos++],n|=(e&15)<<28;for(let t=5;(e&128)!==0&&t<10;t++)e=this.buf[this.pos++];if((e&128)!=0)throw new Error("invalid varint");return this.assertBounds(),n>>>0}var p=$o();function $o(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof e.getBigInt64=="function"&&typeof e.getBigUint64=="function"&&typeof e.setBigInt64=="function"&&typeof e.setBigUint64=="function"&&(typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let t=BigInt("-9223372036854775808"),o=BigInt("9223372036854775807"),s=BigInt("0"),a=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(i){let r=typeof i=="bigint"?i:BigInt(i);if(r>o||r<t)throw new Error(`invalid int64: ${i}`);return r},uParse(i){let r=typeof i=="bigint"?i:BigInt(i);if(r>a||r<s)throw new Error(`invalid uint64: ${i}`);return r},enc(i){return e.setBigInt64(0,this.parse(i),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(i){return e.setBigInt64(0,this.uParse(i),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(i,r){return e.setInt32(0,i,!0),e.setInt32(4,r,!0),e.getBigInt64(0,!0)},uDec(i,r){return e.setInt32(0,i,!0),e.setInt32(4,r,!0),e.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(t){return typeof t!="string"&&(t=t.toString()),Dn(t),t},uParse(t){return typeof t!="string"&&(t=t.toString()),Qn(t),t},enc(t){return typeof t!="string"&&(t=t.toString()),Dn(t),Te(t)},uEnc(t){return typeof t!="string"&&(t=t.toString()),Qn(t),Te(t)},dec(t,o){return vn(t,o)},uDec(t,o){return Pe(t,o)}}}function Dn(e){if(!/^-?[0-9]+$/.test(e))throw new Error("invalid int64: "+e)}function Qn(e){if(!/^[0-9]+$/.test(e))throw new Error("invalid uint64: "+e)}function F(e,n){switch(e){case c.STRING:return"";case c.BOOL:return!1;default:return 0;case c.DOUBLE:case c.FLOAT:return 0;case c.INT64:case c.UINT64:case c.SFIXED64:case c.FIXED64:case c.SINT64:return n?"0":p.zero;case c.BYTES:return new Uint8Array(0)}}function Tn(e,n){switch(e){case c.BOOL:return n===!1;case c.STRING:return n==="";case c.BYTES:return n instanceof Uint8Array&&!n.byteLength;default:return n==0}}var qo=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],C=class extends Error{constructor(n,t,o="FieldValueInvalidError"){super(t),this.name=o,this.field=()=>n}};function Pn(e){return e instanceof Error&&qo.includes(e.name)&&"field"in e&&typeof e.field=="function"}var _n=2,Y=Symbol.for("reflect unsafe local");function Ge(e,n){let t=e[n.localName].case;return t===void 0?t:n.fields.find(o=>o.localName===t)}function On(e,n){let t=n.localName;if(n.oneof)return e[n.oneof.localName].case===t;if(n.presence!=_n)return e[t]!==void 0&&Object.prototype.hasOwnProperty.call(e,t);switch(n.fieldKind){case"list":return e[t].length>0;case"map":return Object.keys(e[t]).length>0;case"scalar":return!Tn(n.scalar,e[t]);case"enum":return e[t]!==n.enum.values[0].number}throw new Error("message field with implicit presence")}function D(e,n){return Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==void 0}function he(e,n){if(n.oneof){let t=e[n.oneof.localName];return t.case===n.localName?t.value:void 0}return e[n.localName]}function fe(e,n,t){n.oneof?e[n.oneof.localName]={case:n.localName,value:t}:e[n.localName]=t}function jn(e,n){let t=n.localName;if(n.oneof){let o=n.oneof.localName;e[o].case===t&&(e[o]={case:void 0})}else if(n.presence!=_n)delete e[t];else switch(n.fieldKind){case"map":e[t]={};break;case"list":e[t]=[];break;case"enum":e[t]=n.enum.values[0].number;break;case"scalar":e[t]=F(n.scalar,n.longAsString);break}}function M(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function se(e,n){var t,o,s,a;if(M(e)&&Y in e&&"add"in e&&"field"in e&&typeof e.field=="function"){if(n!==void 0){let i=n,r=e.field();return i.listKind==r.listKind&&i.scalar===r.scalar&&((t=i.message)===null||t===void 0?void 0:t.typeName)===((o=r.message)===null||o===void 0?void 0:o.typeName)&&((s=i.enum)===null||s===void 0?void 0:s.typeName)===((a=r.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function ae(e,n){var t,o,s,a;if(M(e)&&Y in e&&"has"in e&&"field"in e&&typeof e.field=="function"){if(n!==void 0){let i=n,r=e.field();return i.mapKey===r.mapKey&&i.mapKind==r.mapKind&&i.scalar===r.scalar&&((t=i.message)===null||t===void 0?void 0:t.typeName)===((o=r.message)===null||o===void 0?void 0:o.typeName)&&((s=i.enum)===null||s===void 0?void 0:s.typeName)===((a=r.enum)===null||a===void 0?void 0:a.typeName)}return!0}return!1}function ie(e,n){return M(e)&&Y in e&&"desc"in e&&M(e.desc)&&e.desc.kind==="message"&&(n===void 0||e.desc.typeName==n.typeName)}function $n(e){return qn(e.$typeName)}function H(e){let n=e.fields[0];return qn(e.typeName)&&n!==void 0&&n.fieldKind=="scalar"&&n.name=="value"&&n.number==1}function qn(e){return e.startsWith("google.protobuf.")&&["DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue"].includes(e.substring(16))}var es=999,ns=998,Ze=2;function B(e,n){if(oe(n,e))return n;let t=is(e);return n!==void 0&&ts(e,t,n),t}function ts(e,n,t){for(let o of e.members){let s=t[o.localName];if(s==null)continue;let a;if(o.kind=="oneof"){let i=Ge(t,o);if(!i)continue;a=i,s=he(t,i)}else a=o;switch(a.fieldKind){case"message":s=$e(a,s);break;case"scalar":s=tt(a,s);break;case"list":s=ss(a,s);break;case"map":s=os(a,s);break}fe(n,a,s)}return n}function tt(e,n){return e.scalar==c.BYTES?qe(n):n}function os(e,n){if(M(n)){if(e.scalar==c.BYTES)return et(n,qe);if(e.mapKind=="message")return et(n,t=>$e(e,t))}return n}function ss(e,n){if(Array.isArray(n)){if(e.scalar==c.BYTES)return n.map(qe);if(e.listKind=="message")return n.map(t=>$e(e,t))}return n}function $e(e,n){if(e.fieldKind=="message"&&!e.oneof&&H(e.message))return tt(e.message.fields[0],n);if(M(n)){if(e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!=="google.protobuf.Value")return n;if(!oe(n,e.message))return B(e.message,n)}return n}function qe(e){return Array.isArray(e)?new Uint8Array(e):e}function et(e,n){let t={};for(let o of Object.entries(e))t[o[0]]=n(o[1]);return t}var as=Symbol(),nt=new WeakMap;function is(e){let n;if(rs(e)){let t=nt.get(e),o,s;if(t)({prototype:o,members:s}=t);else{o={},s=new Set;for(let a of e.members)a.kind!="oneof"&&(a.fieldKind!="scalar"&&a.fieldKind!="enum"||a.presence!=Ze&&(s.add(a),o[a.localName]=je(a)));nt.set(e,{prototype:o,members:s})}n=Object.create(o),n.$typeName=e.typeName;for(let a of e.members)s.has(a)||a.kind=="field"&&(a.fieldKind=="message"||(a.fieldKind=="scalar"||a.fieldKind=="enum")&&a.presence!=Ze)||(n[a.localName]=je(a))}else{n={$typeName:e.typeName};for(let t of e.members)(t.kind=="oneof"||t.presence==Ze)&&(n[t.localName]=je(t))}return n}function rs(e){switch(e.file.edition){case es:return!1;case ns:return!0;default:return e.fields.some(n=>n.presence!=Ze&&n.fieldKind!="message"&&!n.oneof)}}function je(e){if(e.kind=="oneof")return{case:void 0};if(e.fieldKind=="list")return[];if(e.fieldKind=="map")return{};if(e.fieldKind=="message")return as;let n=e.getDefaultValue();return n!==void 0?e.fieldKind=="scalar"&&e.longAsString?n.toString():n:e.fieldKind=="scalar"?F(e.scalar,e.longAsString):e.enum.values[0].number}var en=Symbol.for("@bufbuild/protobuf/text-encoding");function re(){if(globalThis[en]==null){let e=new globalThis.TextEncoder,n=new globalThis.TextDecoder;globalThis[en]={encodeUtf8(t){return e.encode(t)},decodeUtf8(t){return n.decode(t)},checkUtf8(t){try{return encodeURIComponent(t),!0}catch{return!1}}}}return globalThis[en]}var f;(function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"})(f||(f={}));var tn=34028234663852886e22,on=-34028234663852886e22,sn=4294967295,an=2147483647,rn=-2147483648,P=class{constructor(n=re().encodeUtf8){this.encodeUtf8=n,this.stack=[],this.chunks=[],this.buf=[]}finish(){this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]);let n=0;for(let s=0;s<this.chunks.length;s++)n+=this.chunks[s].length;let t=new Uint8Array(n),o=0;for(let s=0;s<this.chunks.length;s++)t.set(this.chunks[s],o),o+=this.chunks[s].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let n=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(n.byteLength),this.raw(n)}tag(n,t){return this.uint32((n<<3|t)>>>0)}raw(n){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(n),this}uint32(n){for(ot(n);n>127;)this.buf.push(n&127|128),n=n>>>7;return this.buf.push(n),this}int32(n){return nn(n),Oe(n,this.buf),this}bool(n){return this.buf.push(n?1:0),this}bytes(n){return this.uint32(n.byteLength),this.raw(n)}string(n){let t=this.encodeUtf8(n);return this.uint32(t.byteLength),this.raw(t)}float(n){cs(n);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,n,!0),this.raw(t)}double(n){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,n,!0),this.raw(t)}fixed32(n){ot(n);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,n,!0),this.raw(t)}sfixed32(n){nn(n);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,n,!0),this.raw(t)}sint32(n){return nn(n),n=(n<<1^n>>31)>>>0,Oe(n,this.buf),this}sfixed64(n){let t=new Uint8Array(8),o=new DataView(t.buffer),s=p.enc(n);return o.setInt32(0,s.lo,!0),o.setInt32(4,s.hi,!0),this.raw(t)}fixed64(n){let t=new Uint8Array(8),o=new DataView(t.buffer),s=p.uEnc(n);return o.setInt32(0,s.lo,!0),o.setInt32(4,s.hi,!0),this.raw(t)}int64(n){let t=p.enc(n);return ye(t.lo,t.hi,this.buf),this}sint64(n){let t=p.enc(n),o=t.hi>>31,s=t.lo<<1^o,a=(t.hi<<1|t.lo>>>31)^o;return ye(s,a,this.buf),this}uint64(n){let t=p.uEnc(n);return ye(t.lo,t.hi,this.buf),this}},Q=class{constructor(n,t=re().decodeUtf8){this.decodeUtf8=t,this.varint64=wn,this.uint32=kn,this.buf=n,this.len=n.length,this.pos=0,this.view=new DataView(n.buffer,n.byteOffset,n.byteLength)}tag(){let n=this.uint32(),t=n>>>3,o=n&7;if(t<=0||o<0||o>5)throw new Error("illegal tag: field no "+t+" wire type "+o);return[t,o]}skip(n,t){let o=this.pos;switch(n){case f.Varint:for(;this.buf[this.pos++]&128;);break;case f.Bit64:this.pos+=4;case f.Bit32:this.pos+=4;break;case f.LengthDelimited:let s=this.uint32();this.pos+=s;break;case f.StartGroup:for(;;){let[a,i]=this.tag();if(i===f.EndGroup){if(t!==void 0&&a!==t)throw new Error("invalid end group tag");break}this.skip(i,a)}break;default:throw new Error("cant skip wire type "+n)}return this.assertBounds(),this.buf.subarray(o,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let n=this.uint32();return n>>>1^-(n&1)}int64(){return p.dec(...this.varint64())}uint64(){return p.uDec(...this.varint64())}sint64(){let[n,t]=this.varint64(),o=-(n&1);return n=(n>>>1|(t&1)<<31)^o,t=t>>>1^o,p.dec(n,t)}bool(){let[n,t]=this.varint64();return n!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return p.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return p.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let n=this.uint32(),t=this.pos;return this.pos+=n,this.assertBounds(),this.buf.subarray(t,t+n)}string(){return this.decodeUtf8(this.bytes())}};function nn(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid int32: "+typeof e);if(!Number.isInteger(e)||e>an||e<rn)throw new Error("invalid int32: "+e)}function ot(e){if(typeof e=="string")e=Number(e);else if(typeof e!="number")throw new Error("invalid uint32: "+typeof e);if(!Number.isInteger(e)||e>sn||e<0)throw new Error("invalid uint32: "+e)}function cs(e){if(typeof e=="string"){let n=e;if(e=Number(e),isNaN(e)&&n!=="NaN")throw new Error("invalid float32: "+n)}else if(typeof e!="number")throw new Error("invalid float32: "+typeof e);if(Number.isFinite(e)&&(e>tn||e<on))throw new Error("invalid float32: "+e)}function K(e,n){let t=e.fieldKind=="list"?se(n,e):e.fieldKind=="map"?ae(n,e):ln(e,n);if(t===!0)return;let o;switch(e.fieldKind){case"list":o=`expected ${rt(e)}, got ${A(n)}`;break;case"map":o=`expected ${ct(e)}, got ${A(n)}`;break;default:o=Ae(e,n,t)}return new C(e,o)}function cn(e,n,t){let o=ln(e,t);if(o!==!0)return new C(e,`list item #${n+1}: ${Ae(e,t,o)}`)}function st(e,n,t){let o=at(n,e.mapKey);if(o!==!0)return new C(e,`invalid map key: ${Ae({scalar:e.mapKey},n,o)}`);let s=ln(e,t);if(s!==!0)return new C(e,`map entry ${A(n)}: ${Ae(e,t,s)}`)}function ln(e,n){return e.scalar!==void 0?at(n,e.scalar):e.enum!==void 0?e.enum.open?Number.isInteger(n):e.enum.values.some(t=>t.number===n):ie(n,e.message)}function at(e,n){switch(n){case c.DOUBLE:return typeof e=="number";case c.FLOAT:return typeof e!="number"?!1:Number.isNaN(e)||!Number.isFinite(e)?!0:e>tn||e<on?`${e.toFixed()} out of range`:!0;case c.INT32:case c.SFIXED32:case c.SINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>an||e<rn?`${e.toFixed()} out of range`:!0;case c.FIXED32:case c.UINT32:return typeof e!="number"||!Number.isInteger(e)?!1:e>sn||e<0?`${e.toFixed()} out of range`:!0;case c.BOOL:return typeof e=="boolean";case c.STRING:return typeof e!="string"?!1:re().checkUtf8(e)||"invalid UTF8";case c.BYTES:return e instanceof Uint8Array;case c.INT64:case c.SFIXED64:case c.SINT64:if(typeof e!="string"&&typeof e!="bigint"&&typeof e!="number")return!1;try{p.parse(e)}catch{return`${e} out of range`}return!0;case c.FIXED64:case c.UINT64:if(typeof e!="string"&&typeof e!="bigint"&&typeof e!="number")return!1;try{p.uParse(e)}catch{return`${e} out of range`}return!0}}function Ae(e,n,t){return t=typeof t=="string"?`: ${t}`:`, got ${A(n)}`,e.scalar!==void 0?`expected ${ls(e.scalar)}`+t:e.enum!==void 0?`expected ${e.enum.toString()}`+t:`expected ${it(e.message)}`+t}function A(e){switch(typeof e){case"object":return e===null?"null":e instanceof Uint8Array?`Uint8Array(${e.length})`:Array.isArray(e)?`Array(${e.length})`:se(e)?rt(e.field()):ae(e)?ct(e.field()):ie(e)?it(e.desc):oe(e)?`message ${e.$typeName}`:"object";case"string":return e.length>30?"string":`"${e.split('"').join('\\"')}"`;case"boolean":return String(e);case"number":return String(e);case"bigint":return String(e)+"n";default:return typeof e}}function it(e){return`ReflectMessage (${e.typeName})`}function rt(e){switch(e.listKind){case"message":return`ReflectList (${e.message.toString()})`;case"enum":return`ReflectList (${e.enum.toString()})`;case"scalar":return`ReflectList (${c[e.scalar]})`}}function ct(e){switch(e.mapKind){case"message":return`ReflectMap (${c[e.mapKey]}, ${e.message.toString()})`;case"enum":return`ReflectMap (${c[e.mapKey]}, ${e.enum.toString()})`;case"scalar":return`ReflectMap (${c[e.mapKey]}, ${c[e.scalar]})`}}function ls(e){switch(e){case c.STRING:return"string";case c.BOOL:return"boolean";case c.INT64:case c.SINT64:case c.SFIXED64:return"bigint (int64)";case c.UINT64:case c.FIXED64:return"bigint (uint64)";case c.BYTES:return"Uint8Array";case c.DOUBLE:return"number (float64)";case c.FLOAT:return"number (float32)";case c.FIXED32:case c.UINT32:return"number (uint32)";case c.INT32:case c.SFIXED32:case c.SINT32:return"number (int32)"}}function X(e,n,t=!0){return new Ce(e,n,t)}var Ce=class{get sortedFields(){var n;return(n=this._sortedFields)!==null&&n!==void 0?n:this._sortedFields=this.desc.fields.concat().sort((t,o)=>t.number-o.number)}constructor(n,t,o=!0){this.lists=new Map,this.maps=new Map,this.check=o,this.desc=n,this.message=this[Y]=t??B(n),this.fields=n.fields,this.oneofs=n.oneofs,this.members=n.members}findNumber(n){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(t=>[t.number,t]))),this._fieldsByNumber.get(n)}oneofCase(n){return ce(this.message,n),Ge(this.message,n)}isSet(n){return ce(this.message,n),On(this.message,n)}clear(n){ce(this.message,n),jn(this.message,n)}get(n){ce(this.message,n);let t=he(this.message,n);switch(n.fieldKind){case"list":let o=this.lists.get(n);return(!o||o[Y]!==t)&&this.lists.set(n,o=new gn(n,t,this.check)),o;case"map":let s=this.maps.get(n);return(!s||s[Y]!==t)&&this.maps.set(n,s=new mn(n,t,this.check)),s;case"message":return pn(n,t,this.check);case"scalar":return t===void 0?F(n.scalar,!1):In(n,t);case"enum":return t??n.enum.values[0].number}}set(n,t){if(ce(this.message,n),this.check){let s=K(n,t);if(s)throw s}let o;n.fieldKind=="message"?o=bn(n,t):ae(t)||se(t)?o=t[Y]:o=yn(n,t),fe(this.message,n,o)}getUnknown(){return this.message.$unknown}setUnknown(n){this.message.$unknown=n}};function ce(e,n){if(n.parent.typeName!==e.$typeName)throw new C(n,`cannot use ${n.toString()} with message ${e.$typeName}`,"ForeignFieldError")}var gn=class{field(){return this._field}get size(){return this._arr.length}constructor(n,t,o){this._field=n,this._arr=this[Y]=t,this.check=o}get(n){let t=this._arr[n];return t===void 0?void 0:dn(this._field,t,this.check)}set(n,t){if(n<0||n>=this._arr.length)throw new C(this._field,`list item #${n+1}: out of range`);if(this.check){let o=cn(this._field,n,t);if(o)throw o}this._arr[n]=lt(this._field,t)}add(n){if(this.check){let t=cn(this._field,this._arr.length,n);if(t)throw t}this._arr.push(lt(this._field,n))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(let n of this._arr)yield dn(this._field,n,this.check)}*entries(){for(let n=0;n<this._arr.length;n++)yield[n,dn(this._field,this._arr[n],this.check)]}};var mn=class{constructor(n,t,o=!0){this.obj=this[Y]=t??{},this.check=o,this._field=n}field(){return this._field}set(n,t){if(this.check){let o=st(this._field,n,t);if(o)throw o}return this.obj[Ve(n)]=ds(this._field,t),this}delete(n){let t=Ve(n),o=Object.prototype.hasOwnProperty.call(this.obj,t);return o&&delete this.obj[t],o}clear(){for(let n of Object.keys(this.obj))delete this.obj[n]}get(n){let t=this.obj[Ve(n)];return t!==void 0&&(t=un(this._field,t,this.check)),t}has(n){return Object.prototype.hasOwnProperty.call(this.obj,Ve(n))}*keys(){for(let n of Object.keys(this.obj))yield dt(n,this._field.mapKey)}*entries(){for(let n of Object.entries(this.obj))yield[dt(n[0],this._field.mapKey),un(this._field,n[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(let n of Object.values(this.obj))yield un(this._field,n,this.check)}forEach(n,t){for(let o of this.entries())n.call(t,o[1],o[0],this)}};function bn(e,n){return ie(n)?$n(n.message)&&!e.oneof&&e.fieldKind=="message"?n.message.value:n.desc.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"?gt(n.message):n.message:n}function pn(e,n,t){return n!==void 0&&(H(e.message)&&!e.oneof&&e.fieldKind=="message"?n={$typeName:e.message.typeName,value:In(e.message.fields[0],n)}:e.message.typeName=="google.protobuf.Struct"&&e.parent.typeName!="google.protobuf.Value"&&M(n)&&(n=ut(n))),new Ce(e.message,n,t)}function lt(e,n){return e.listKind=="message"?bn(e,n):yn(e,n)}function dn(e,n,t){return e.listKind=="message"?pn(e,n,t):In(e,n)}function ds(e,n){return e.mapKind=="message"?bn(e,n):yn(e,n)}function un(e,n,t){return e.mapKind=="message"?pn(e,n,t):n}function Ve(e){return typeof e=="string"||typeof e=="number"?e:String(e)}function dt(e,n){switch(n){case c.STRING:return e;case c.INT32:case c.FIXED32:case c.UINT32:case c.SFIXED32:case c.SINT32:{let t=Number.parseInt(e);if(Number.isFinite(t))return t;break}case c.BOOL:switch(e){case"true":return!0;case"false":return!1}break;case c.UINT64:case c.FIXED64:try{return p.uParse(e)}catch{}break;default:try{return p.parse(e)}catch{}break}return e}function In(e,n){switch(e.scalar){case c.INT64:case c.SFIXED64:case c.SINT64:"longAsString"in e&&e.longAsString&&typeof n=="string"&&(n=p.parse(n));break;case c.FIXED64:case c.UINT64:"longAsString"in e&&e.longAsString&&typeof n=="string"&&(n=p.uParse(n));break}return n}function yn(e,n){switch(e.scalar){case c.INT64:case c.SFIXED64:case c.SINT64:"longAsString"in e&&e.longAsString?n=String(n):(typeof n=="string"||typeof n=="number")&&(n=p.parse(n));break;case c.FIXED64:case c.UINT64:"longAsString"in e&&e.longAsString?n=String(n):(typeof n=="string"||typeof n=="number")&&(n=p.uParse(n));break}return n}function ut(e){let n={$typeName:"google.protobuf.Struct",fields:{}};if(M(e))for(let[t,o]of Object.entries(e))n.fields[t]=bt(o);return n}function gt(e){let n={};for(let[t,o]of Object.entries(e.fields))n[t]=mt(o);return n}function mt(e){switch(e.kind.case){case"structValue":return gt(e.kind.value);case"listValue":return e.kind.value.values.map(mt);case"nullValue":case void 0:return null;default:return e.kind.value}}function bt(e){let n={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof e){case"number":n.kind={case:"numberValue",value:e};break;case"string":n.kind={case:"stringValue",value:e};break;case"boolean":n.kind={case:"boolValue",value:e};break;case"object":if(e===null)n.kind={case:"nullValue",value:0};else if(Array.isArray(e)){let t={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(e))for(let o of e)t.values.push(bt(o));n.kind={case:"listValue",value:t}}else n.kind={case:"structValue",value:ut(e)};break}return n}function Se(e){let n=us(),t=e.length*3/4;e[e.length-2]=="="?t-=2:e[e.length-1]=="="&&(t-=1);let o=new Uint8Array(t),s=0,a=0,i,r=0;for(let l=0;l<e.length;l++){if(i=n[e.charCodeAt(l)],i===void 0)switch(e[l]){case"=":a=0;case`
3
3
  `:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(a){case 0:r=i,a=1;break;case 1:o[s++]=r<<2|(i&48)>>4,r=i,a=2;break;case 2:o[s++]=(r&15)<<4|(i&60)>>2,r=i,a=3;break;case 3:o[s++]=(r&3)<<6|i,a=0;break}}if(a==1)throw Error("invalid base64 string");return o.subarray(0,s)}function It(e,n="std"){let t=yt(n),o=n=="std",s="",a=0,i,r=0;for(let l=0;l<e.length;l++)switch(i=e[l],a){case 0:s+=t[i>>2],r=(i&3)<<4,a=1;break;case 1:s+=t[r|i>>4],r=(i&15)<<2,a=2;break;case 2:s+=t[r|i>>6],s+=t[i&63],a=0;break}return a&&(s+=t[r],o&&(s+="=",a==1&&(s+="="))),s}var Xe,pt,_;function yt(e){return Xe||(Xe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),pt=Xe.slice(0,-2).concat("-","_")),e=="url"?pt:Xe}function us(){if(!_){_=[];let e=yt("std");for(let n=0;n<e.length;n++)_[e[n].charCodeAt(0)]=n;_[45]=e.indexOf("+"),_[95]=e.indexOf("/")}return _}function U(e){let n=!1,t=[];for(let o=0;o<e.length;o++){let s=e.charAt(o);switch(s){case"_":n=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":t.push(s),n=!1;break;default:n&&(n=!1,s=s.toUpperCase()),t.push(s);break}}return t.join("")}var gs=new Set(["constructor","toString","toJSON","valueOf"]);function O(e){return gs.has(e)?e+"$":e}function le(e){for(let n of e.field)D(n,"jsonName")||(n.jsonName=U(n.name));e.nestedType.forEach(le)}function Gt(e,n){let t=e.values.find(o=>o.name===n);if(!t)throw new Error(`cannot parse ${e} default value: ${n}`);return t.number}function ht(e,n){switch(e){case c.STRING:return n;case c.BYTES:{let t=ms(n);if(t===!1)throw new Error(`cannot parse ${c[e]} default value: ${n}`);return t}case c.INT64:case c.SFIXED64:case c.SINT64:return p.parse(n);case c.UINT64:case c.FIXED64:return p.uParse(n);case c.DOUBLE:case c.FLOAT:switch(n){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return Number.NaN;default:return parseFloat(n)}case c.BOOL:return n==="true";case c.INT32:case c.UINT32:case c.SINT32:case c.FIXED32:case c.SFIXED32:return parseInt(n,10)}}function ms(e){let n=[],t={tail:e,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(o){if(this.tail.length>=o){let s=this.tail.substring(0,o);return this.tail=this.tail.substring(o),s}return!1}};for(;t.next();)switch(t.c){case"\\":if(t.next())switch(t.c){case"\\":n.push(t.c.charCodeAt(0));break;case"b":n.push(8);break;case"f":n.push(12);break;case"n":n.push(10);break;case"r":n.push(13);break;case"t":n.push(9);break;case"v":n.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let o=t.c,s=t.take(2);if(s===!1)return!1;let a=parseInt(o+s,8);if(isNaN(a))return!1;n.push(a);break}case"x":{let o=t.c,s=t.take(2);if(s===!1)return!1;let a=parseInt(o+s,16);if(isNaN(a))return!1;n.push(a);break}case"u":{let o=t.c,s=t.take(4);if(s===!1)return!1;let a=parseInt(o+s,16);if(isNaN(a))return!1;let i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,a,!0),n.push(i[0],i[1],i[2],i[3]);break}case"U":{let o=t.c,s=t.take(8);if(s===!1)return!1;let a=p.uEnc(o+s),i=new Uint8Array(8),r=new DataView(i.buffer);r.setInt32(0,a.lo,!0),r.setInt32(4,a.hi,!0),n.push(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]);break}}break;default:n.push(t.c.charCodeAt(0))}return new Uint8Array(n)}function*Be(e){switch(e.kind){case"file":for(let n of e.messages)yield n,yield*Be(n);yield*e.enums,yield*e.services,yield*e.extensions;break;case"message":for(let n of e.nestedMessages)yield n,yield*Be(n);yield*e.nestedEnums,yield*e.nestedExtensions;break}}function We(...e){let n=bs();if(!e.length)return n;if("$typeName"in e[0]&&e[0].$typeName=="google.protobuf.FileDescriptorSet"){for(let o of e[0].file)At(o,n);return n}if("$typeName"in e[0]){let i=function(r){let l=[];for(let d of r.dependency){if(n.getFile(d)!=null||a.has(d))continue;let u=s(d);if(!u)throw new Error(`Unable to resolve ${d}, imported by ${r.name}`);"kind"in u?n.addFile(u,!1,!0):(a.add(u.name),l.push(u))}return l.concat(...l.map(i))};var t=i;let o=e[0],s=e[1],a=new Set;for(let r of[o,...i(o)].reverse())At(r,n)}else for(let o of e)for(let s of o.files)n.addFile(s);return n}function bs(){let e=new Map,n=new Map,t=new Map;return{kind:"registry",types:e,extendees:n,[Symbol.iterator](){return e.values()},get files(){return t.values()},addFile(o,s,a){if(t.set(o.proto.name,o),!s)for(let i of Be(o))this.add(i);if(a)for(let i of o.dependencies)this.addFile(i,s,a)},add(o){if(o.kind=="extension"){let s=n.get(o.extendee.typeName);s||n.set(o.extendee.typeName,s=new Map),s.set(o.number,o)}e.set(o.typeName,o)},get(o){return e.get(o)},getFile(o){return t.get(o)},getMessage(o){let s=e.get(o);return s?.kind=="message"?s:void 0},getEnum(o){let s=e.get(o);return s?.kind=="enum"?s:void 0},getExtension(o){let s=e.get(o);return s?.kind=="extension"?s:void 0},getExtensionFor(o,s){var a;return(a=n.get(o.typeName))===null||a===void 0?void 0:a.get(s)},getService(o){let s=e.get(o);return s?.kind=="service"?s:void 0}}}var ps=998,Is=999,ys=9,Je=10,de=11,Gs=12,ft=14,An=3,hs=2,Zt=1,fs=0,Gn=1,Zs=2,As=3,Vs=1,Cs=2,Xs=1;var Ct={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1}};function At(e,n){var t,o;let s={kind:"file",proto:e,deprecated:(o=(t=e.options)===null||t===void 0?void 0:t.deprecated)!==null&&o!==void 0?o:!1,edition:Ws(e),name:e.name.replace(/\.proto$/,""),dependencies:xs(e,n),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${e.name}`}},a=new Map,i={get(r){return a.get(r)},add(r){var l;N(((l=r.proto.options)===null||l===void 0?void 0:l.mapEntry)===!0),a.set(r.typeName,r)}};for(let r of e.enumType)Xt(r,s,void 0,n);for(let r of e.messageType)St(r,s,void 0,n,i);for(let r of e.service)Ss(r,s,n);hn(s,n);for(let r of a.values())fn(r,n,i);for(let r of s.messages)fn(r,n,i),hn(r,n);n.addFile(s,!0)}function hn(e,n){switch(e.kind){case"file":for(let t of e.proto.extension){let o=Zn(t,e,n);e.extensions.push(o),n.add(o)}break;case"message":for(let t of e.proto.extension){let o=Zn(t,e,n);e.nestedExtensions.push(o),n.add(o)}for(let t of e.nestedMessages)hn(t,n);break}}function fn(e,n,t){let o=e.proto.oneofDecl.map(a=>Js(a,e)),s=new Set;for(let a of e.proto.field){let i=Es(a,o),r=Zn(a,e,n,i,t);e.fields.push(r),e.field[r.localName]=r,i===void 0?e.members.push(r):(i.fields.push(r),s.has(i)||(s.add(i),e.members.push(i)))}for(let a of o.filter(i=>s.has(i)))e.oneofs.push(a);for(let a of e.nestedMessages)fn(a,n,t)}function Xt(e,n,t,o){var s,a,i;let r=Rs(e.name,e.value),l={kind:"enum",proto:e,deprecated:(a=(s=e.options)===null||s===void 0?void 0:s.deprecated)!==null&&a!==void 0?a:!1,file:n,parent:t,open:!0,name:e.name,typeName:xe(e,t,n),value:{},values:[],sharedPrefix:r,toString(){return`enum ${this.typeName}`}};l.open=Hs(l),o.add(l),e.value.forEach(d=>{var u,I;let W=d.name;l.values.push(l.value[d.number]={kind:"enum_value",proto:d,deprecated:(I=(u=d.options)===null||u===void 0?void 0:u.deprecated)!==null&&I!==void 0?I:!1,parent:l,name:W,localName:O(r==null?W:W.substring(r.length)),number:d.number,toString(){return`enum value ${l.typeName}.${W}`}})}),((i=t?.nestedEnums)!==null&&i!==void 0?i:n.enums).push(l)}function St(e,n,t,o,s){var a,i,r,l;let d={kind:"message",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,file:n,parent:t,name:e.name,typeName:xe(e,t,n),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((r=e.options)===null||r===void 0?void 0:r.mapEntry)===!0?s.add(d):(((l=t?.nestedMessages)!==null&&l!==void 0?l:n.messages).push(d),o.add(d));for(let u of e.enumType)Xt(u,n,d,o);for(let u of e.nestedType)St(u,n,d,o,s)}function Ss(e,n,t){var o,s;let a={kind:"service",proto:e,deprecated:(s=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&s!==void 0?s:!1,file:n,name:e.name,typeName:xe(e,void 0,n),methods:[],method:{},toString(){return`service ${this.typeName}`}};n.services.push(a),t.add(a);for(let i of e.method){let r=Bs(i,a,t);a.methods.push(r),a.method[r.localName]=r}}function Bs(e,n,t){var o,s,a,i;let r;e.clientStreaming&&e.serverStreaming?r="bidi_streaming":e.clientStreaming?r="client_streaming":e.serverStreaming?r="server_streaming":r="unary";let l=t.getMessage(L(e.inputType)),d=t.getMessage(L(e.outputType));N(l,`invalid MethodDescriptorProto: input_type ${e.inputType} not found`),N(d,`invalid MethodDescriptorProto: output_type ${e.inputType} not found`);let u=e.name;return{kind:"rpc",proto:e,deprecated:(s=(o=e.options)===null||o===void 0?void 0:o.deprecated)!==null&&s!==void 0?s:!1,parent:n,name:u,localName:O(u.length?O(u[0].toLowerCase()+u.substring(1)):u),methodKind:r,input:l,output:d,idempotency:(i=(a=e.options)===null||a===void 0?void 0:a.idempotencyLevel)!==null&&i!==void 0?i:fs,toString(){return`rpc ${n.typeName}.${u}`}}}function Js(e,n){return{kind:"oneof",proto:e,deprecated:!1,parent:n,fields:[],name:e.name,localName:O(U(e.name)),toString(){return`oneof ${n.typeName}.${this.name}`}}}function Zn(e,n,t,o,s){var a,i,r;let l=s===void 0,d={kind:"field",proto:e,deprecated:(i=(a=e.options)===null||a===void 0?void 0:a.deprecated)!==null&&i!==void 0?i:!1,name:e.name,number:e.number,scalar:void 0,message:void 0,enum:void 0,presence:Ys(e,o,l,n),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};if(l){let x=n.kind=="file"?n:n.file,v=n.kind=="file"?void 0:n,G=xe(e,v,x);d.kind="extension",d.file=x,d.parent=v,d.oneof=void 0,d.typeName=G,d.jsonName=`[${G}]`,d.toString=()=>`extension ${G}`;let R=t.getMessage(L(e.extendee));N(R,`invalid FieldDescriptorProto: extendee ${e.extendee} not found`),d.extendee=R}else{let x=n;N(x.kind=="message"),d.parent=x,d.oneof=o,d.localName=o?U(e.name):O(U(e.name)),d.jsonName=e.jsonName,d.toString=()=>`field ${x.typeName}.${e.name}`}let u=e.label,I=e.type,W=(r=e.options)===null||r===void 0?void 0:r.jstype;if(u===An){let x=I==de?s?.get(L(e.typeName)):void 0;if(x){d.fieldKind="map";let{key:v,value:G}=Ms(x);return d.mapKey=v.scalar,d.mapKind=G.fieldKind,d.message=G.message,d.delimitedEncoding=!1,d.enum=G.enum,d.scalar=G.scalar,d}switch(d.fieldKind="list",I){case de:case Je:d.listKind="message",d.message=t.getMessage(L(e.typeName)),N(d.message),d.delimitedEncoding=Vt(e,n);break;case ft:d.listKind="enum",d.enum=t.getEnum(L(e.typeName)),N(d.enum);break;default:d.listKind="scalar",d.scalar=I,d.longAsString=W==Zt;break}return d.packed=Ns(e,n),d}switch(I){case de:case Je:d.fieldKind="message",d.message=t.getMessage(L(e.typeName)),N(d.message,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),d.delimitedEncoding=Vt(e,n),d.getDefaultValue=()=>{};break;case ft:{let x=t.getEnum(L(e.typeName));N(x!==void 0,`invalid FieldDescriptorProto: type_name ${e.typeName} not found`),d.fieldKind="enum",d.enum=t.getEnum(L(e.typeName)),d.getDefaultValue=()=>D(e,"defaultValue")?Gt(x,e.defaultValue):void 0;break}default:{d.fieldKind="scalar",d.scalar=I,d.longAsString=W==Zt,d.getDefaultValue=()=>D(e,"defaultValue")?ht(I,e.defaultValue):void 0;break}}return d}function Ws(e){switch(e.syntax){case"":case"proto2":return ps;case"proto3":return Is;case"editions":if(e.edition in Ct)return e.edition;throw new Error(`${e.name}: unsupported edition`);default:throw new Error(`${e.name}: unsupported syntax "${e.syntax}"`)}}function xs(e,n){return e.dependency.map(t=>{let o=n.getFile(t);if(!o)throw new Error(`Cannot find ${t}, imported by ${e.name}`);return o})}function Rs(e,n){let t=Fs(e)+"_";for(let o of n){if(!o.name.toLowerCase().startsWith(t))return;let s=o.name.substring(t.length);if(s.length==0||/^\d/.test(s))return}return t}function Fs(e){return(e.substring(0,1)+e.substring(1).replace(/[A-Z]/g,n=>"_"+n)).toLowerCase()}function xe(e,n,t){let o;return n?o=`${n.typeName}.${e.name}`:t.proto.package.length>0?o=`${t.proto.package}.${e.name}`:o=`${e.name}`,o}function L(e){return e.startsWith(".")?e.substring(1):e}function Es(e,n){if(!D(e,"oneofIndex")||e.proto3Optional)return;let t=n[e.oneofIndex];return N(t,`invalid FieldDescriptorProto: oneof #${e.oneofIndex} for field #${e.number} not found`),t}function Ys(e,n,t,o){return e.label==hs?As:e.label==An?Zs:n||e.proto3Optional||e.type==de||t?Gn:j("fieldPresence",{proto:e,parent:o})}function Ns(e,n){if(e.label!=An)return!1;switch(e.type){case ys:case Gs:case Je:case de:return!1}let t=e.options;return t&&D(t,"packed")?t.packed:Vs==j("repeatedFieldEncoding",{proto:e,parent:n})}function Ms(e){let n=e.fields.find(o=>o.number===1),t=e.fields.find(o=>o.number===2);return N(n&&n.fieldKind=="scalar"&&n.scalar!=c.BYTES&&n.scalar!=c.FLOAT&&n.scalar!=c.DOUBLE&&t&&t.fieldKind!="list"&&t.fieldKind!="map"),{key:n,value:t}}function Hs(e){var n;return Xs==j("enumType",{proto:e.proto,parent:(n=e.parent)!==null&&n!==void 0?n:e.file})}function Vt(e,n){return e.type==Je?!0:Cs==j("messageEncoding",{proto:e,parent:n})}function j(e,n){var t,o;let s=(t=n.proto.options)===null||t===void 0?void 0:t.features;if(s){let a=s[e];if(a!=0)return a}if("kind"in n){if(n.kind=="message")return j(e,(o=n.parent)!==null&&o!==void 0?o:n.file);let a=Ct[n.edition];if(!a)throw new Error(`feature default for edition ${n.edition} not found`);return a[e]}return j(e,n.parent)}function N(e,n){if(!e)throw new Error(n)}function Bt(e){let n=zs(e);return n.messageType.forEach(le),We(n,()=>{}).getFile(n.name)}function zs(e){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],service:[],extension:[]},e),{messageType:e.messageType.map(Jt),enumType:e.enumType.map(Wt)}))}function Jt(e){var n,t,o,s,a,i,r,l;return{$typeName:"google.protobuf.DescriptorProto",name:e.name,field:(t=(n=e.field)===null||n===void 0?void 0:n.map(Ks))!==null&&t!==void 0?t:[],extension:[],nestedType:(s=(o=e.nestedType)===null||o===void 0?void 0:o.map(Jt))!==null&&s!==void 0?s:[],enumType:(i=(a=e.enumType)===null||a===void 0?void 0:a.map(Wt))!==null&&i!==void 0?i:[],extensionRange:(l=(r=e.extensionRange)===null||r===void 0?void 0:r.map(d=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},d)))!==null&&l!==void 0?l:[],oneofDecl:[],reservedRange:[],reservedName:[]}}function Ks(e){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},e),{options:e.options?Ls(e.options):void 0}))}function Ls(e){var n,t,o;return Object.assign(Object.create({ctype:0,packed:!1,jstype:0,lazy:!1,unverifiedLazy:!1,deprecated:!1,weak:!1,debugRedact:!1,retention:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldOptions"},e),{targets:(n=e.targets)!==null&&n!==void 0?n:[],editionDefaults:(o=(t=e.editionDefaults)===null||t===void 0?void 0:t.map(a=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},a)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function Wt(e){return{$typeName:"google.protobuf.EnumDescriptorProto",name:e.name,reservedName:[],reservedRange:[],value:e.value.map(n=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},n))}}function J(e,n,...t){return t.reduce((o,s)=>o.nestedMessages[s],e.messages[n])}var T=Bt({name:"google/protobuf/descriptor.proto",package:"google.protobuf",messageType:[{name:"FileDescriptorSet",field:[{name:"file",number:1,type:11,label:3,typeName:".google.protobuf.FileDescriptorProto"}]},{name:"FileDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"package",number:2,type:9,label:1},{name:"dependency",number:3,type:9,label:3},{name:"public_dependency",number:10,type:5,label:3},{name:"weak_dependency",number:11,type:5,label:3},{name:"message_type",number:4,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:5,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"service",number:6,type:11,label:3,typeName:".google.protobuf.ServiceDescriptorProto"},{name:"extension",number:7,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FileOptions"},{name:"source_code_info",number:9,type:11,label:1,typeName:".google.protobuf.SourceCodeInfo"},{name:"syntax",number:12,type:9,label:1},{name:"edition",number:14,type:14,label:1,typeName:".google.protobuf.Edition"}]},{name:"DescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"field",number:2,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"extension",number:6,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"nested_type",number:3,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"extension_range",number:5,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ExtensionRange"},{name:"oneof_decl",number:8,type:11,label:3,typeName:".google.protobuf.OneofDescriptorProto"},{name:"options",number:7,type:11,label:1,typeName:".google.protobuf.MessageOptions"},{name:"reserved_range",number:9,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ReservedRange"},{name:"reserved_name",number:10,type:9,label:3}],nestedType:[{name:"ExtensionRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ExtensionRangeOptions"}]},{name:"ReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"ExtensionRangeOptions",field:[{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"},{name:"declaration",number:2,type:11,label:3,typeName:".google.protobuf.ExtensionRangeOptions.Declaration",options:{retention:2}},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"verification",number:3,type:14,label:1,typeName:".google.protobuf.ExtensionRangeOptions.VerificationState",defaultValue:"UNVERIFIED",options:{retention:2}}],nestedType:[{name:"Declaration",field:[{name:"number",number:1,type:5,label:1},{name:"full_name",number:2,type:9,label:1},{name:"type",number:3,type:9,label:1},{name:"reserved",number:5,type:8,label:1},{name:"repeated",number:6,type:8,label:1}]}],enumType:[{name:"VerificationState",value:[{name:"DECLARATION",number:0},{name:"UNVERIFIED",number:1}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:3,type:5,label:1},{name:"label",number:4,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Label"},{name:"type",number:5,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Type"},{name:"type_name",number:6,type:9,label:1},{name:"extendee",number:2,type:9,label:1},{name:"default_value",number:7,type:9,label:1},{name:"oneof_index",number:9,type:5,label:1},{name:"json_name",number:10,type:9,label:1},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FieldOptions"},{name:"proto3_optional",number:17,type:8,label:1}],enumType:[{name:"Type",value:[{name:"TYPE_DOUBLE",number:1},{name:"TYPE_FLOAT",number:2},{name:"TYPE_INT64",number:3},{name:"TYPE_UINT64",number:4},{name:"TYPE_INT32",number:5},{name:"TYPE_FIXED64",number:6},{name:"TYPE_FIXED32",number:7},{name:"TYPE_BOOL",number:8},{name:"TYPE_STRING",number:9},{name:"TYPE_GROUP",number:10},{name:"TYPE_MESSAGE",number:11},{name:"TYPE_BYTES",number:12},{name:"TYPE_UINT32",number:13},{name:"TYPE_ENUM",number:14},{name:"TYPE_SFIXED32",number:15},{name:"TYPE_SFIXED64",number:16},{name:"TYPE_SINT32",number:17},{name:"TYPE_SINT64",number:18}]},{name:"Label",value:[{name:"LABEL_OPTIONAL",number:1},{name:"LABEL_REPEATED",number:3},{name:"LABEL_REQUIRED",number:2}]}]},{name:"OneofDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"options",number:2,type:11,label:1,typeName:".google.protobuf.OneofOptions"}]},{name:"EnumDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"value",number:2,type:11,label:3,typeName:".google.protobuf.EnumValueDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumOptions"},{name:"reserved_range",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto.EnumReservedRange"},{name:"reserved_name",number:5,type:9,label:3}],nestedType:[{name:"EnumReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"EnumValueDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumValueOptions"}]},{name:"ServiceDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"method",number:2,type:11,label:3,typeName:".google.protobuf.MethodDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ServiceOptions"}]},{name:"MethodDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"input_type",number:2,type:9,label:1},{name:"output_type",number:3,type:9,label:1},{name:"options",number:4,type:11,label:1,typeName:".google.protobuf.MethodOptions"},{name:"client_streaming",number:5,type:8,label:1,defaultValue:"false"},{name:"server_streaming",number:6,type:8,label:1,defaultValue:"false"}]},{name:"FileOptions",field:[{name:"java_package",number:1,type:9,label:1},{name:"java_outer_classname",number:8,type:9,label:1},{name:"java_multiple_files",number:10,type:8,label:1,defaultValue:"false"},{name:"java_generate_equals_and_hash",number:20,type:8,label:1,options:{deprecated:!0}},{name:"java_string_check_utf8",number:27,type:8,label:1,defaultValue:"false"},{name:"optimize_for",number:9,type:14,label:1,typeName:".google.protobuf.FileOptions.OptimizeMode",defaultValue:"SPEED"},{name:"go_package",number:11,type:9,label:1},{name:"cc_generic_services",number:16,type:8,label:1,defaultValue:"false"},{name:"java_generic_services",number:17,type:8,label:1,defaultValue:"false"},{name:"py_generic_services",number:18,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:23,type:8,label:1,defaultValue:"false"},{name:"cc_enable_arenas",number:31,type:8,label:1,defaultValue:"true"},{name:"objc_class_prefix",number:36,type:9,label:1},{name:"csharp_namespace",number:37,type:9,label:1},{name:"swift_prefix",number:39,type:9,label:1},{name:"php_class_prefix",number:40,type:9,label:1},{name:"php_namespace",number:41,type:9,label:1},{name:"php_metadata_namespace",number:44,type:9,label:1},{name:"ruby_package",number:45,type:9,label:1},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"OptimizeMode",value:[{name:"SPEED",number:1},{name:"CODE_SIZE",number:2},{name:"LITE_RUNTIME",number:3}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"MessageOptions",field:[{name:"message_set_wire_format",number:1,type:8,label:1,defaultValue:"false"},{name:"no_standard_descriptor_accessor",number:2,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"map_entry",number:7,type:8,label:1},{name:"deprecated_legacy_json_field_conflicts",number:11,type:8,label:1,options:{deprecated:!0}},{name:"features",number:12,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldOptions",field:[{name:"ctype",number:1,type:14,label:1,typeName:".google.protobuf.FieldOptions.CType",defaultValue:"STRING"},{name:"packed",number:2,type:8,label:1},{name:"jstype",number:6,type:14,label:1,typeName:".google.protobuf.FieldOptions.JSType",defaultValue:"JS_NORMAL"},{name:"lazy",number:5,type:8,label:1,defaultValue:"false"},{name:"unverified_lazy",number:15,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"weak",number:10,type:8,label:1,defaultValue:"false"},{name:"debug_redact",number:16,type:8,label:1,defaultValue:"false"},{name:"retention",number:17,type:14,label:1,typeName:".google.protobuf.FieldOptions.OptionRetention"},{name:"targets",number:19,type:14,label:3,typeName:".google.protobuf.FieldOptions.OptionTargetType"},{name:"edition_defaults",number:20,type:11,label:3,typeName:".google.protobuf.FieldOptions.EditionDefault"},{name:"features",number:21,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"feature_support",number:22,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],nestedType:[{name:"EditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"value",number:2,type:9,label:1}]},{name:"FeatureSupport",field:[{name:"edition_introduced",number:1,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"edition_deprecated",number:2,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"deprecation_warning",number:3,type:9,label:1},{name:"edition_removed",number:4,type:14,label:1,typeName:".google.protobuf.Edition"}]}],enumType:[{name:"CType",value:[{name:"STRING",number:0},{name:"CORD",number:1},{name:"STRING_PIECE",number:2}]},{name:"JSType",value:[{name:"JS_NORMAL",number:0},{name:"JS_STRING",number:1},{name:"JS_NUMBER",number:2}]},{name:"OptionRetention",value:[{name:"RETENTION_UNKNOWN",number:0},{name:"RETENTION_RUNTIME",number:1},{name:"RETENTION_SOURCE",number:2}]},{name:"OptionTargetType",value:[{name:"TARGET_TYPE_UNKNOWN",number:0},{name:"TARGET_TYPE_FILE",number:1},{name:"TARGET_TYPE_EXTENSION_RANGE",number:2},{name:"TARGET_TYPE_MESSAGE",number:3},{name:"TARGET_TYPE_FIELD",number:4},{name:"TARGET_TYPE_ONEOF",number:5},{name:"TARGET_TYPE_ENUM",number:6},{name:"TARGET_TYPE_ENUM_ENTRY",number:7},{name:"TARGET_TYPE_SERVICE",number:8},{name:"TARGET_TYPE_METHOD",number:9}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"OneofOptions",field:[{name:"features",number:1,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumOptions",field:[{name:"allow_alias",number:2,type:8,label:1},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"deprecated_legacy_json_field_conflicts",number:6,type:8,label:1,options:{deprecated:!0}},{name:"features",number:7,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumValueOptions",field:[{name:"deprecated",number:1,type:8,label:1,defaultValue:"false"},{name:"features",number:2,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"debug_redact",number:3,type:8,label:1,defaultValue:"false"},{name:"feature_support",number:4,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"ServiceOptions",field:[{name:"features",number:34,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"MethodOptions",field:[{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"idempotency_level",number:34,type:14,label:1,typeName:".google.protobuf.MethodOptions.IdempotencyLevel",defaultValue:"IDEMPOTENCY_UNKNOWN"},{name:"features",number:35,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"IdempotencyLevel",value:[{name:"IDEMPOTENCY_UNKNOWN",number:0},{name:"NO_SIDE_EFFECTS",number:1},{name:"IDEMPOTENT",number:2}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"UninterpretedOption",field:[{name:"name",number:2,type:11,label:3,typeName:".google.protobuf.UninterpretedOption.NamePart"},{name:"identifier_value",number:3,type:9,label:1},{name:"positive_int_value",number:4,type:4,label:1},{name:"negative_int_value",number:5,type:3,label:1},{name:"double_value",number:6,type:1,label:1},{name:"string_value",number:7,type:12,label:1},{name:"aggregate_value",number:8,type:9,label:1}],nestedType:[{name:"NamePart",field:[{name:"name_part",number:1,type:9,label:2},{name:"is_extension",number:2,type:8,label:2}]}]},{name:"FeatureSet",field:[{name:"field_presence",number:1,type:14,label:1,typeName:".google.protobuf.FeatureSet.FieldPresence",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPLICIT",edition:900},{value:"IMPLICIT",edition:999},{value:"EXPLICIT",edition:1e3}]}},{name:"enum_type",number:2,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnumType",options:{retention:1,targets:[6,1],editionDefaults:[{value:"CLOSED",edition:900},{value:"OPEN",edition:999}]}},{name:"repeated_field_encoding",number:3,type:14,label:1,typeName:".google.protobuf.FeatureSet.RepeatedFieldEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPANDED",edition:900},{value:"PACKED",edition:999}]}},{name:"utf8_validation",number:4,type:14,label:1,typeName:".google.protobuf.FeatureSet.Utf8Validation",options:{retention:1,targets:[4,1],editionDefaults:[{value:"NONE",edition:900},{value:"VERIFY",edition:999}]}},{name:"message_encoding",number:5,type:14,label:1,typeName:".google.protobuf.FeatureSet.MessageEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"LENGTH_PREFIXED",edition:900}]}},{name:"json_format",number:6,type:14,label:1,typeName:".google.protobuf.FeatureSet.JsonFormat",options:{retention:1,targets:[3,6,1],editionDefaults:[{value:"LEGACY_BEST_EFFORT",edition:900},{value:"ALLOW",edition:999}]}}],enumType:[{name:"FieldPresence",value:[{name:"FIELD_PRESENCE_UNKNOWN",number:0},{name:"EXPLICIT",number:1},{name:"IMPLICIT",number:2},{name:"LEGACY_REQUIRED",number:3}]},{name:"EnumType",value:[{name:"ENUM_TYPE_UNKNOWN",number:0},{name:"OPEN",number:1},{name:"CLOSED",number:2}]},{name:"RepeatedFieldEncoding",value:[{name:"REPEATED_FIELD_ENCODING_UNKNOWN",number:0},{name:"PACKED",number:1},{name:"EXPANDED",number:2}]},{name:"Utf8Validation",value:[{name:"UTF8_VALIDATION_UNKNOWN",number:0},{name:"VERIFY",number:2},{name:"NONE",number:3}]},{name:"MessageEncoding",value:[{name:"MESSAGE_ENCODING_UNKNOWN",number:0},{name:"LENGTH_PREFIXED",number:1},{name:"DELIMITED",number:2}]},{name:"JsonFormat",value:[{name:"JSON_FORMAT_UNKNOWN",number:0},{name:"ALLOW",number:1},{name:"LEGACY_BEST_EFFORT",number:2}]}],extensionRange:[{start:1e3,end:9995},{start:9995,end:1e4},{start:1e4,end:10001}]},{name:"FeatureSetDefaults",field:[{name:"defaults",number:1,type:11,label:3,typeName:".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault"},{name:"minimum_edition",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"maximum_edition",number:5,type:14,label:1,typeName:".google.protobuf.Edition"}],nestedType:[{name:"FeatureSetEditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"overridable_features",number:4,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"fixed_features",number:5,type:11,label:1,typeName:".google.protobuf.FeatureSet"}]}]},{name:"SourceCodeInfo",field:[{name:"location",number:1,type:11,label:3,typeName:".google.protobuf.SourceCodeInfo.Location"}],nestedType:[{name:"Location",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"span",number:2,type:5,label:3,options:{packed:!0}},{name:"leading_comments",number:3,type:9,label:1},{name:"trailing_comments",number:4,type:9,label:1},{name:"leading_detached_comments",number:6,type:9,label:3}]}]},{name:"GeneratedCodeInfo",field:[{name:"annotation",number:1,type:11,label:3,typeName:".google.protobuf.GeneratedCodeInfo.Annotation"}],nestedType:[{name:"Annotation",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"source_file",number:2,type:9,label:1},{name:"begin",number:3,type:5,label:1},{name:"end",number:4,type:5,label:1},{name:"semantic",number:5,type:14,label:1,typeName:".google.protobuf.GeneratedCodeInfo.Annotation.Semantic"}],enumType:[{name:"Semantic",value:[{name:"NONE",number:0},{name:"SET",number:1},{name:"ALIAS",number:2}]}]}]}],enumType:[{name:"Edition",value:[{name:"EDITION_UNKNOWN",number:0},{name:"EDITION_LEGACY",number:900},{name:"EDITION_PROTO2",number:998},{name:"EDITION_PROTO3",number:999},{name:"EDITION_2023",number:1e3},{name:"EDITION_2024",number:1001},{name:"EDITION_1_TEST_ONLY",number:1},{name:"EDITION_2_TEST_ONLY",number:2},{name:"EDITION_99997_TEST_ONLY",number:99997},{name:"EDITION_99998_TEST_ONLY",number:99998},{name:"EDITION_99999_TEST_ONLY",number:99999},{name:"EDITION_MAX",number:2147483647}]}]});var Tt=J(T,1);var xt;(function(e){e[e.DECLARATION=0]="DECLARATION",e[e.UNVERIFIED=1]="UNVERIFIED"})(xt||(xt={}));var Rt;(function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.GROUP=10]="GROUP",e[e.MESSAGE=11]="MESSAGE",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.ENUM=14]="ENUM",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"})(Rt||(Rt={}));var Ft;(function(e){e[e.OPTIONAL=1]="OPTIONAL",e[e.REPEATED=3]="REPEATED",e[e.REQUIRED=2]="REQUIRED"})(Ft||(Ft={}));var Et;(function(e){e[e.SPEED=1]="SPEED",e[e.CODE_SIZE=2]="CODE_SIZE",e[e.LITE_RUNTIME=3]="LITE_RUNTIME"})(Et||(Et={}));var Yt;(function(e){e[e.STRING=0]="STRING",e[e.CORD=1]="CORD",e[e.STRING_PIECE=2]="STRING_PIECE"})(Yt||(Yt={}));var Nt;(function(e){e[e.JS_NORMAL=0]="JS_NORMAL",e[e.JS_STRING=1]="JS_STRING",e[e.JS_NUMBER=2]="JS_NUMBER"})(Nt||(Nt={}));var Mt;(function(e){e[e.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",e[e.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",e[e.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(Mt||(Mt={}));var Ht;(function(e){e[e.TARGET_TYPE_UNKNOWN=0]="TARGET_TYPE_UNKNOWN",e[e.TARGET_TYPE_FILE=1]="TARGET_TYPE_FILE",e[e.TARGET_TYPE_EXTENSION_RANGE=2]="TARGET_TYPE_EXTENSION_RANGE",e[e.TARGET_TYPE_MESSAGE=3]="TARGET_TYPE_MESSAGE",e[e.TARGET_TYPE_FIELD=4]="TARGET_TYPE_FIELD",e[e.TARGET_TYPE_ONEOF=5]="TARGET_TYPE_ONEOF",e[e.TARGET_TYPE_ENUM=6]="TARGET_TYPE_ENUM",e[e.TARGET_TYPE_ENUM_ENTRY=7]="TARGET_TYPE_ENUM_ENTRY",e[e.TARGET_TYPE_SERVICE=8]="TARGET_TYPE_SERVICE",e[e.TARGET_TYPE_METHOD=9]="TARGET_TYPE_METHOD"})(Ht||(Ht={}));var zt;(function(e){e[e.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",e[e.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",e[e.IDEMPOTENT=2]="IDEMPOTENT"})(zt||(zt={}));var Kt;(function(e){e[e.FIELD_PRESENCE_UNKNOWN=0]="FIELD_PRESENCE_UNKNOWN",e[e.EXPLICIT=1]="EXPLICIT",e[e.IMPLICIT=2]="IMPLICIT",e[e.LEGACY_REQUIRED=3]="LEGACY_REQUIRED"})(Kt||(Kt={}));var Lt;(function(e){e[e.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",e[e.OPEN=1]="OPEN",e[e.CLOSED=2]="CLOSED"})(Lt||(Lt={}));var wt;(function(e){e[e.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",e[e.PACKED=1]="PACKED",e[e.EXPANDED=2]="EXPANDED"})(wt||(wt={}));var vt;(function(e){e[e.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",e[e.VERIFY=2]="VERIFY",e[e.NONE=3]="NONE"})(vt||(vt={}));var Ut;(function(e){e[e.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",e[e.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",e[e.DELIMITED=2]="DELIMITED"})(Ut||(Ut={}));var kt;(function(e){e[e.JSON_FORMAT_UNKNOWN=0]="JSON_FORMAT_UNKNOWN",e[e.ALLOW=1]="ALLOW",e[e.LEGACY_BEST_EFFORT=2]="LEGACY_BEST_EFFORT"})(kt||(kt={}));var Dt;(function(e){e[e.NONE=0]="NONE",e[e.SET=1]="SET",e[e.ALIAS=2]="ALIAS"})(Dt||(Dt={}));var Qt;(function(e){e[e.EDITION_UNKNOWN=0]="EDITION_UNKNOWN",e[e.EDITION_LEGACY=900]="EDITION_LEGACY",e[e.EDITION_PROTO2=998]="EDITION_PROTO2",e[e.EDITION_PROTO3=999]="EDITION_PROTO3",e[e.EDITION_2023=1e3]="EDITION_2023",e[e.EDITION_2024=1001]="EDITION_2024",e[e.EDITION_1_TEST_ONLY=1]="EDITION_1_TEST_ONLY",e[e.EDITION_2_TEST_ONLY=2]="EDITION_2_TEST_ONLY",e[e.EDITION_99997_TEST_ONLY=99997]="EDITION_99997_TEST_ONLY",e[e.EDITION_99998_TEST_ONLY=99998]="EDITION_99998_TEST_ONLY",e[e.EDITION_99999_TEST_ONLY=99999]="EDITION_99999_TEST_ONLY",e[e.EDITION_MAX=2147483647]="EDITION_MAX"})(Qt||(Qt={}));var Pt={readUnknownFields:!0};function ws(e){return e?Object.assign(Object.assign({},Pt),e):Pt}function Re(e,n,t){let o=X(e,void 0,!1);return _t(o,new Q(n),ws(t),!1,n.byteLength),o.message}function _t(e,n,t,o,s){var a;let i=o?n.len:n.pos+s,r,l,d=(a=e.getUnknown())!==null&&a!==void 0?a:[];for(;n.pos<i&&([r,l]=n.tag(),!(o&&l==f.EndGroup));){let u=e.findNumber(r);if(!u){let I=n.skip(l,r);t.readUnknownFields&&d.push({no:r,wireType:l,data:I});continue}Vn(e,n,u,l,t)}if(o&&(l!=f.EndGroup||r!==s))throw new Error("invalid end group tag");d.length>0&&e.setUnknown(d)}function Vn(e,n,t,o,s){switch(t.fieldKind){case"scalar":e.set(t,$(n,t.scalar));break;case"enum":e.set(t,$(n,c.INT32));break;case"message":e.set(t,Cn(n,s,t,e.get(t)));break;case"list":Us(n,o,e.get(t),s);break;case"map":vs(n,e.get(t),s);break}}function vs(e,n,t){let o=n.field(),s,a,i=e.pos+e.uint32();for(;e.pos<i;){let[r]=e.tag();switch(r){case 1:s=$(e,o.mapKey);break;case 2:switch(o.mapKind){case"scalar":a=$(e,o.scalar);break;case"enum":a=e.int32();break;case"message":a=Cn(e,t,o);break}break}}if(s===void 0&&(s=F(o.mapKey,!1)),a===void 0)switch(o.mapKind){case"scalar":a=F(o.scalar,!1);break;case"enum":a=o.enum.values[0].number;break;case"message":a=X(o.message,void 0,!1);break}n.set(s,a)}function Us(e,n,t,o){var s;let a=t.field();if(a.listKind==="message"){t.add(Cn(e,o,a));return}let i=(s=a.scalar)!==null&&s!==void 0?s:c.INT32;if(!(n==f.LengthDelimited&&i!=c.STRING&&i!=c.BYTES)){t.add($(e,i));return}let l=e.uint32()+e.pos;for(;e.pos<l;)t.add($(e,i))}function Cn(e,n,t,o){let s=t.delimitedEncoding,a=o??X(t.message,void 0,!1);return _t(a,e,n,s,s?t.number:e.uint32()),a}function $(e,n){switch(n){case c.STRING:return e.string();case c.BOOL:return e.bool();case c.DOUBLE:return e.double();case c.FLOAT:return e.float();case c.INT32:return e.int32();case c.INT64:return e.int64();case c.UINT64:return e.uint64();case c.FIXED64:return e.fixed64();case c.BYTES:return e.bytes();case c.FIXED32:return e.fixed32();case c.SFIXED32:return e.sfixed32();case c.SFIXED64:return e.sfixed64();case c.SINT64:return e.sint64();case c.UINT32:return e.uint32();case c.SINT32:return e.sint32()}}function V(e,n){var t;let o=Re(Tt,Se(e));return o.messageType.forEach(le),o.dependency=(t=n?.map(a=>a.proto.name))!==null&&t!==void 0?t:[],We(o,a=>n?.find(i=>i.proto.name===a)).getFile(o.name)}var Ot=V("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM");var ks=V("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),jt=J(ks,0);var Ds=3,$t={writeUnknownFields:!0};function Qs(e){return e?Object.assign(Object.assign({},$t),e):$t}function qt(e,n,t){return Fe(new P,Qs(t),X(e,n)).finish()}function Fe(e,n,t){var o;for(let s of t.sortedFields){if(!t.isSet(s)){if(s.presence==Ds)throw new Error(`cannot encode field ${t.desc.typeName}.${s.name} to binary: required field not set`);continue}Xn(e,n,t,s)}if(n.writeUnknownFields)for(let{no:s,wireType:a,data:i}of(o=t.getUnknown())!==null&&o!==void 0?o:[])e.tag(s,a).raw(i);return e}function Xn(e,n,t,o){var s;switch(o.fieldKind){case"scalar":case"enum":Ee(e,(s=o.scalar)!==null&&s!==void 0?s:c.INT32,o.number,t.get(o));break;case"list":Ts(e,n,o,t.get(o));break;case"message":eo(e,n,o,t.get(o));break;case"map":for(let[a,i]of t.get(o))Ps(e,n,o,a,i);break}}function Ee(e,n,t,o){no(e.tag(t,_s(n)),n,o)}function eo(e,n,t,o){t.delimitedEncoding?Fe(e.tag(t.number,f.StartGroup),n,o).tag(t.number,f.EndGroup):Fe(e.tag(t.number,f.LengthDelimited).fork(),n,o).join()}function Ts(e,n,t,o){var s;if(t.listKind=="message"){for(let i of o)eo(e,n,t,i);return}let a=(s=t.scalar)!==null&&s!==void 0?s:c.INT32;if(t.packed){if(!o.size)return;e.tag(t.number,f.LengthDelimited).fork();for(let i of o)no(e,a,i);e.join();return}for(let i of o)Ee(e,a,t.number,i)}function Ps(e,n,t,o,s){var a;switch(e.tag(t.number,f.LengthDelimited).fork(),Ee(e,t.mapKey,1,o),t.mapKind){case"scalar":case"enum":Ee(e,(a=t.scalar)!==null&&a!==void 0?a:c.INT32,2,s);break;case"message":Fe(e.tag(2,f.LengthDelimited).fork(),n,s).join();break}e.join()}function no(e,n,t){switch(n){case c.STRING:e.string(t);break;case c.BOOL:e.bool(t);break;case c.DOUBLE:e.double(t);break;case c.FLOAT:e.float(t);break;case c.INT32:e.int32(t);break;case c.INT64:e.int64(t);break;case c.UINT64:e.uint64(t);break;case c.FIXED64:e.fixed64(t);break;case c.BYTES:e.bytes(t);break;case c.FIXED32:e.fixed32(t);break;case c.SFIXED32:e.sfixed32(t);break;case c.SFIXED64:e.sfixed64(t);break;case c.SINT64:e.sint64(t);break;case c.UINT32:e.uint32(t);break;case c.SINT32:e.sint32(t);break}}function _s(e){switch(e){case c.BYTES:case c.STRING:return f.LengthDelimited;case c.DOUBLE:case c.FIXED64:case c.SFIXED64:return f.Bit64;case c.FIXED32:case c.SFIXED32:case c.FLOAT:return f.Bit32;default:return f.Varint}}function to(e,n,t){let o=!1;return t||(t=B(jt),o=!0),t.value=qt(e,n),t.typeUrl=js(n.$typeName),o?t:void 0}function Os(e,n){if(e.typeUrl==="")return!1;let t=typeof n=="string"?n:n.typeName,o=so(e.typeUrl);return t===o}function oo(e,n){if(e.typeUrl==="")return;let t=n.kind=="message"?n:n.getMessage(so(e.typeUrl));if(!(!t||!Os(e,t)))return Re(t,e.value)}function js(e){return`type.googleapis.com/${e}`}function so(e){let n=e.lastIndexOf("/"),t=n>=0?e.substring(n+1):e;if(!t.length)throw new Error(`invalid type url: ${e}`);return t}var Ye=V("Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIgASgFQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1EdXJhdGlvblByb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2R1cmF0aW9ucGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw");var Sn=V("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),ao=J(Sn,0),Bn=J(Sn,1),io=J(Sn,2),Ne;(function(e){e[e.NULL_VALUE=0]="NULL_VALUE"})(Ne||(Ne={}));function ro(e,n){lo(n,e);let t=$s(e.$unknown,n),[o,s,a]=q(n);for(let i of t)Vn(o,new Q(i.data),s,i.wireType,{readUnknownFields:!1});return a()}function co(e,n,t){var o;lo(n,e);let s=((o=e.$unknown)!==null&&o!==void 0?o:[]).filter(d=>d.no!==n.number),[a,i]=q(n,t),r=new P;Xn(r,{writeUnknownFields:!1},a,i);let l=new Q(r.finish());for(;l.pos<l.len;){let[d,u]=l.tag(),I=l.skip(u,d);s.push({no:d,wireType:u,data:I})}e.$unknown=s}function $s(e,n){if(e===void 0)return[];if(n.fieldKind==="enum"||n.fieldKind==="scalar"){for(let t=e.length-1;t>=0;--t)if(e[t].no==n.number)return[e[t]];return[]}return e.filter(t=>t.no===n.number)}function q(e,n){let t=e.typeName,o=Object.assign(Object.assign({},e),{kind:"field",parent:e.extendee,localName:t}),s=Object.assign(Object.assign({},e.extendee),{fields:[o],members:[o],oneofs:[]}),a=B(s,n!==void 0?{[t]:n}:void 0);return[X(s,a),o,()=>{let i=a[t];if(i===void 0){let r=e.message;return H(r)?F(r.fields[0].scalar,r.fields[0].longAsString):B(r)}return i}]}function lo(e,n){if(e.extendee.typeName!=n.$typeName)throw new Error(`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}var qs=3,ea=2,uo={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function na(e){return e?Object.assign(Object.assign({},uo),e):uo}function Jn(e,n,t){return ue(X(e,n),na(t))}function Me(e,n,t){var o;let s=Jn(e,n,t);return JSON.stringify(s,null,(o=t?.prettySpaces)!==null&&o!==void 0?o:0)}function ue(e,n){var t;let o=aa(e,n);if(o!==void 0)return o;let s={};for(let a of e.sortedFields){if(!e.isSet(a)){if(a.presence==qs)throw new Error(`cannot encode field ${e.desc.typeName}.${a.name} to JSON: required field not set`);if(!n.alwaysEmitImplicit||a.presence!==ea)continue}let i=go(a,e.get(a),n);i!==void 0&&(s[sa(a,n)]=i)}if(n.registry){let a=new Set;for(let i of(t=e.getUnknown())!==null&&t!==void 0?t:[]){if(a.has(i.no))continue;let r=n.registry.getExtensionFor(e.desc,i.no);if(!r)continue;let l=ro(e.message,r),[d,u]=q(r,l),I=go(u,d.get(u),n);I!==void 0&&(s[r.jsonName]=I)}}return s}function go(e,n,t){switch(e.fieldKind){case"scalar":return He(e,n);case"message":return ue(n,t);case"enum":return Wn(e.enum,n,t.enumAsInteger);case"list":return oa(n,t);case"map":return ta(n,t)}}function ta(e,n){let t=e.field(),o={};switch(t.mapKind){case"scalar":for(let[s,a]of e)o[s]=He(t,a);break;case"message":for(let[s,a]of e)o[s]=ue(a,n);break;case"enum":for(let[s,a]of e)o[s]=Wn(t.enum,a,n.enumAsInteger);break}return n.alwaysEmitImplicit||e.size>0?o:void 0}function oa(e,n){let t=e.field(),o=[];switch(t.listKind){case"scalar":for(let s of e)o.push(He(t,s));break;case"enum":for(let s of e)o.push(Wn(t.enum,s,n.enumAsInteger));break;case"message":for(let s of e)o.push(ue(s,n));break}return n.alwaysEmitImplicit||o.length>0?o:void 0}function Wn(e,n,t){var o;if(typeof n!="number")throw new Error(`cannot encode ${e} to JSON: expected number, got ${A(n)}`);if(e.typeName=="google.protobuf.NullValue")return null;if(t)return n;let s=e.value[n];return(o=s?.name)!==null&&o!==void 0?o:n}function He(e,n){var t,o,s,a,i,r;switch(e.scalar){case c.INT32:case c.SFIXED32:case c.SINT32:case c.FIXED32:case c.UINT32:if(typeof n!="number")throw new Error(`cannot encode ${e} to JSON: ${(t=K(e,n))===null||t===void 0?void 0:t.message}`);return n;case c.FLOAT:case c.DOUBLE:if(typeof n!="number")throw new Error(`cannot encode ${e} to JSON: ${(o=K(e,n))===null||o===void 0?void 0:o.message}`);return isNaN(n)?"NaN":n===Number.POSITIVE_INFINITY?"Infinity":n===Number.NEGATIVE_INFINITY?"-Infinity":n;case c.STRING:if(typeof n!="string")throw new Error(`cannot encode ${e} to JSON: ${(s=K(e,n))===null||s===void 0?void 0:s.message}`);return n;case c.BOOL:if(typeof n!="boolean")throw new Error(`cannot encode ${e} to JSON: ${(a=K(e,n))===null||a===void 0?void 0:a.message}`);return n;case c.UINT64:case c.FIXED64:case c.INT64:case c.SFIXED64:case c.SINT64:if(typeof n!="bigint"&&typeof n!="string")throw new Error(`cannot encode ${e} to JSON: ${(i=K(e,n))===null||i===void 0?void 0:i.message}`);return n.toString();case c.BYTES:if(n instanceof Uint8Array)return It(n);throw new Error(`cannot encode ${e} to JSON: ${(r=K(e,n))===null||r===void 0?void 0:r.message}`)}}function sa(e,n){return n.useProtoFieldName?e.name:e.jsonName}function aa(e,n){if(e.desc.typeName.startsWith("google.protobuf."))switch(e.desc.typeName){case"google.protobuf.Any":return ia(e.message,n);case"google.protobuf.Timestamp":return la(e.message);case"google.protobuf.Duration":return ra(e.message);case"google.protobuf.FieldMask":return ca(e.message);case"google.protobuf.Struct":return mo(e.message);case"google.protobuf.Value":return xn(e.message);case"google.protobuf.ListValue":return bo(e.message);default:if(H(e.desc)){let t=e.desc.fields[0];return He(t,e.get(t))}return}}function ia(e,n){if(e.typeUrl==="")return{};let{registry:t}=n,o,s;if(t&&(o=oo(e,t),o&&(s=t.getMessage(o.$typeName))),!s||!o)throw new Error(`cannot encode message ${e.$typeName} to JSON: "${e.typeUrl}" is not in the type registry`);let a=ue(X(s,o),n);return(s.typeName.startsWith("google.protobuf.")||a===null||Array.isArray(a)||typeof a!="object")&&(a={value:a}),a["@type"]=e.typeUrl,a}function ra(e){if(Number(e.seconds)>315576e6||Number(e.seconds)<-315576e6)throw new Error(`cannot encode message ${e.$typeName} to JSON: value out of range`);let n=e.seconds.toString();if(e.nanos!==0){let t=Math.abs(e.nanos).toString();t="0".repeat(9-t.length)+t,t.substring(3)==="000000"?t=t.substring(0,3):t.substring(6)==="000"&&(t=t.substring(0,6)),n+="."+t,e.nanos<0&&Number(e.seconds)==0&&(n="-"+n)}return n+"s"}function ca(e){return e.paths.map(n=>{if(n.match(/_[0-9]?_/g)||n.match(/[A-Z]/g))throw new Error(`cannot encode message ${e.$typeName} to JSON: lowerCamelCase of path name "`+n+'" is irreversible');return U(n)}).join(",")}function mo(e){let n={};for(let[t,o]of Object.entries(e.fields))n[t]=xn(o);return n}function xn(e){switch(e.kind.case){case"nullValue":return null;case"numberValue":if(!Number.isFinite(e.kind.value))throw new Error(`${e.$typeName} cannot be NaN or Infinity`);return e.kind.value;case"boolValue":return e.kind.value;case"stringValue":return e.kind.value;case"structValue":return mo(e.kind.value);case"listValue":return bo(e.kind.value);default:throw new Error(`${e.$typeName} must have a value`)}}function bo(e){return e.values.map(xn)}function la(e){let n=Number(e.seconds)*1e3;if(n<Date.parse("0001-01-01T00:00:00Z")||n>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot encode message ${e.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);if(e.nanos<0)throw new Error(`cannot encode message ${e.$typeName} to JSON: nanos must not be negative`);let t="Z";if(e.nanos>0){let o=(e.nanos+1e9).toString().substring(1);o.substring(3)==="000000"?t="."+o.substring(0,3)+"Z":o.substring(6)==="000"?t="."+o.substring(0,6)+"Z":t="."+o+"Z"}return new Date(n).toISOString().replace(".000Z",t)}var po={ignoreUnknownFields:!1};function da(e){return e?Object.assign(Object.assign({},po),e):po}function yo(e,n,t){return Rn(e,ya(n,e.typeName),t)}function Rn(e,n,t){let o=X(e);try{ee(o,n,da(t))}catch(s){throw Pn(s)?new Error(`cannot decode ${s.field()} from JSON: ${s.message}`,{cause:s}):s}return o.message}function ee(e,n,t){var o;if(Ga(e,n,t))return;if(n==null||Array.isArray(n)||typeof n!="object")throw new Error(`cannot decode ${e.desc} from JSON: ${A(n)}`);let s=new Map,a=new Map;for(let i of e.desc.fields)a.set(i.name,i).set(i.jsonName,i);for(let[i,r]of Object.entries(n)){let l=a.get(i);if(l){if(l.oneof){if(r===null&&l.fieldKind=="scalar")continue;let d=s.get(l.oneof);if(d!==void 0)throw new C(l.oneof,`oneof set multiple times by ${d.name} and ${l.name}`);s.set(l.oneof,l)}Io(e,l,r,t)}else{let d;if(i.startsWith("[")&&i.endsWith("]")&&(d=(o=t.registry)===null||o===void 0?void 0:o.getExtension(i.substring(1,i.length-1)))&&d.extendee.typeName===e.desc.typeName){let[u,I,W]=q(d);Io(u,I,r,t),co(e.message,d,W())}if(!d&&!t.ignoreUnknownFields)throw new Error(`cannot decode ${e.desc} from JSON: key "${i}" is unknown`)}}}function Io(e,n,t,o){switch(n.fieldKind){case"scalar":pa(e,n,t);break;case"enum":ba(e,n,t,o);break;case"message":ma(e,n,t,o);break;case"list":ga(e.get(n),t,o);break;case"map":ua(e.get(n),t,o);break}}function ua(e,n,t){if(n===null)return;let o=e.field();if(typeof n!="object"||Array.isArray(n))throw new C(o,"expected object, got "+A(n));for(let[s,a]of Object.entries(n)){if(a===null)throw new C(o,"map value must not be null");let i;switch(o.mapKind){case"message":let l=X(o.message);ee(l,a,t),i=l;break;case"enum":if(i=Fn(o.enum,a,t.ignoreUnknownFields,!0),i===ze)return;break;case"scalar":i=Le(o,a,!0);break}let r=Ia(o.mapKey,s);e.set(r,i)}}function ga(e,n,t){if(n===null)return;let o=e.field();if(!Array.isArray(n))throw new C(o,"expected Array, got "+A(n));for(let s of n){if(s===null)throw new C(o,"list item must not be null");switch(o.listKind){case"message":let a=X(o.message);ee(a,s,t),e.add(a);break;case"enum":let i=Fn(o.enum,s,t.ignoreUnknownFields,!0);i!==ze&&e.add(i);break;case"scalar":e.add(Le(o,s,!0));break}}}function ma(e,n,t,o){if(t===null&&n.message.typeName!="google.protobuf.Value"){e.clear(n);return}let s=e.isSet(n)?e.get(n):X(n.message);ee(s,t,o),e.set(n,s)}function ba(e,n,t,o){let s=Fn(n.enum,t,o.ignoreUnknownFields,!1);s===Ke?e.clear(n):s!==ze&&e.set(n,s)}function pa(e,n,t){let o=Le(n,t,!1);o===Ke?e.clear(n):e.set(n,o)}var ze=Symbol();function Fn(e,n,t,o){if(n===null)return e.typeName=="google.protobuf.NullValue"?0:o?e.values[0].number:Ke;switch(typeof n){case"number":if(Number.isInteger(n))return n;break;case"string":let s=e.values.find(a=>a.name===n);if(s!==void 0)return s.number;if(t)return ze;break}throw new Error(`cannot decode ${e} from JSON: ${A(n)}`)}var Ke=Symbol();function Le(e,n,t){if(n===null)return t?F(e.scalar,!1):Ke;switch(e.scalar){case c.DOUBLE:case c.FLOAT:if(n==="NaN")return NaN;if(n==="Infinity")return Number.POSITIVE_INFINITY;if(n==="-Infinity")return Number.NEGATIVE_INFINITY;if(typeof n=="number"){if(isNaN(n))throw new C(e,"unexpected NaN number");if(!isFinite(n))throw new C(e,"unexpected infinite number");break}if(typeof n=="string"){if(n===""||n.trim().length!==n.length)break;let o=Number(n);if(!isFinite(o))break;return o}break;case c.INT32:case c.FIXED32:case c.SFIXED32:case c.SINT32:case c.UINT32:return Go(n);case c.BYTES:if(typeof n=="string"){if(n==="")return new Uint8Array(0);try{return Se(n)}catch(o){let s=o instanceof Error?o.message:String(o);throw new C(e,s)}}break}return n}function Ia(e,n){switch(e){case c.BOOL:switch(n){case"true":return!0;case"false":return!1}return n;case c.INT32:case c.FIXED32:case c.UINT32:case c.SFIXED32:case c.SINT32:return Go(n);default:return n}}function Go(e){if(typeof e=="string"){if(e===""||e.trim().length!==e.length)return e;let n=Number(e);return Number.isNaN(n)?e:n}return e}function ya(e,n){try{return JSON.parse(e)}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`cannot decode message ${n} from JSON: ${o}`,{cause:t})}}function Ga(e,n,t){if(!e.desc.typeName.startsWith("google.protobuf."))return!1;switch(e.desc.typeName){case"google.protobuf.Any":return ha(e.message,n,t),!0;case"google.protobuf.Timestamp":return fa(e.message,n),!0;case"google.protobuf.Duration":return Za(e.message,n),!0;case"google.protobuf.FieldMask":return Aa(e.message,n),!0;case"google.protobuf.Struct":return ho(e.message,n),!0;case"google.protobuf.Value":return En(e.message,n),!0;case"google.protobuf.ListValue":return fo(e.message,n),!0;default:if(H(e.desc)){let o=e.desc.fields[0];return n===null?e.clear(o):e.set(o,Le(o,n,!0)),!0}return!1}}function ha(e,n,t){var o;if(n===null||Array.isArray(n)||typeof n!="object")throw new Error(`cannot decode message ${e.$typeName} from JSON: expected object but got ${A(n)}`);if(Object.keys(n).length==0)return;let s=n["@type"];if(typeof s!="string"||s=="")throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is empty`);let a=s.includes("/")?s.substring(s.lastIndexOf("/")+1):s;if(!a.length)throw new Error(`cannot decode message ${e.$typeName} from JSON: "@type" is invalid`);let i=(o=t.registry)===null||o===void 0?void 0:o.getMessage(a);if(!i)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${s} is not in the type registry`);let r=X(i);if(a.startsWith("google.protobuf.")&&Object.prototype.hasOwnProperty.call(n,"value")){let l=n.value;ee(r,l,t)}else{let l=Object.assign({},n);delete l["@type"],ee(r,l,t)}to(r.desc,r.message,e)}function fa(e,n){if(typeof n!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${A(n)}`);let t=n.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!t)throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);let o=Date.parse(t[1]+"-"+t[2]+"-"+t[3]+"T"+t[4]+":"+t[5]+":"+t[6]+(t[8]?t[8]:"Z"));if(Number.isNaN(o))throw new Error(`cannot decode message ${e.$typeName} from JSON: invalid RFC 3339 string`);if(o<Date.parse("0001-01-01T00:00:00Z")||o>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot decode message ${e.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);e.seconds=p.parse(o/1e3),e.nanos=0,t[7]&&(e.nanos=parseInt("1"+t[7]+"0".repeat(9-t[7].length))-1e9)}function Za(e,n){if(typeof n!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${A(n)}`);let t=n.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(t===null)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${A(n)}`);let o=Number(t[1]);if(o>315576e6||o<-315576e6)throw new Error(`cannot decode message ${e.$typeName} from JSON: ${A(n)}`);if(e.seconds=p.parse(o),typeof t[2]!="string")return;let s=t[2]+"0".repeat(9-t[2].length);e.nanos=parseInt(s),(o<0||Object.is(o,-0))&&(e.nanos=-e.nanos)}function Aa(e,n){if(typeof n!="string")throw new Error(`cannot decode message ${e.$typeName} from JSON: ${A(n)}`);if(n==="")return;function t(o){if(o.includes("_"))throw new Error(`cannot decode message ${e.$typeName} from JSON: path names must be lowerCamelCase`);let s=o.replace(/[A-Z]/g,a=>"_"+a.toLowerCase());return s[0]==="_"?s.substring(1):s}e.paths=n.split(",").map(t)}function ho(e,n){if(typeof n!="object"||n==null||Array.isArray(n))throw new Error(`cannot decode message ${e.$typeName} from JSON ${A(n)}`);for(let[t,o]of Object.entries(n)){let s=B(Bn);En(s,o),e.fields[t]=s}}function En(e,n){switch(typeof n){case"number":e.kind={case:"numberValue",value:n};break;case"string":e.kind={case:"stringValue",value:n};break;case"boolean":e.kind={case:"boolValue",value:n};break;case"object":if(n===null)e.kind={case:"nullValue",value:Ne.NULL_VALUE};else if(Array.isArray(n)){let t=B(io);fo(t,n),e.kind={case:"listValue",value:t}}else{let t=B(ao);ho(t,n),e.kind={case:"structValue",value:t}}break;default:throw new Error(`cannot decode message ${e.$typeName} from JSON ${A(n)}`)}return e}function fo(e,n){if(!Array.isArray(n))throw new Error(`cannot decode message ${e.$typeName} from JSON ${A(n)}`);for(let t of n){let o=B(Bn);En(o,t),e.values.push(o)}}import b from"chalk";import{program as w}from"commander";import ja from"figlet";import $a from"fs";import qa from"path";import ei from"semver";import ni from"update-notifier";import{confirm as Ja,input as Wa,select as xo}from"@inquirer/prompts";import zn from"chalk";import xa from"fs";function Zo(e,n,...t){if(t.length>0)throw new Error;return e.services[n]}var Vo=V("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI9CgpDb25zdHJhaW50EgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSJNChJNZXNzYWdlQ29uc3RyYWludHMSEAoIZGlzYWJsZWQYASABKAgSJQoDY2VsGAMgAygLMhguYnVmLnZhbGlkYXRlLkNvbnN0cmFpbnQiJAoQT25lb2ZDb25zdHJhaW50cxIQCghyZXF1aXJlZBgBIAEoCCKoCAoQRmllbGRDb25zdHJhaW50cxIlCgNjZWwYFyADKAsyGC5idWYudmFsaWRhdGUuQ29uc3RyYWludBIQCghyZXF1aXJlZBgZIAEoCBIkCgZpZ25vcmUYGyABKA4yFC5idWYudmFsaWRhdGUuSWdub3JlEikKBWZsb2F0GAEgASgLMhguYnVmLnZhbGlkYXRlLkZsb2F0UnVsZXNIABIrCgZkb3VibGUYAiABKAsyGS5idWYudmFsaWRhdGUuRG91YmxlUnVsZXNIABIpCgVpbnQzMhgDIAEoCzIYLmJ1Zi52YWxpZGF0ZS5JbnQzMlJ1bGVzSAASKQoFaW50NjQYBCABKAsyGC5idWYudmFsaWRhdGUuSW50NjRSdWxlc0gAEisKBnVpbnQzMhgFIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50MzJSdWxlc0gAEisKBnVpbnQ2NBgGIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50NjRSdWxlc0gAEisKBnNpbnQzMhgHIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50MzJSdWxlc0gAEisKBnNpbnQ2NBgIIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50NjRSdWxlc0gAEi0KB2ZpeGVkMzIYCSABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQzMlJ1bGVzSAASLQoHZml4ZWQ2NBgKIAEoCzIaLmJ1Zi52YWxpZGF0ZS5GaXhlZDY0UnVsZXNIABIvCghzZml4ZWQzMhgLIAEoCzIbLmJ1Zi52YWxpZGF0ZS5TRml4ZWQzMlJ1bGVzSAASLwoIc2ZpeGVkNjQYDCABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkNjRSdWxlc0gAEicKBGJvb2wYDSABKAsyFy5idWYudmFsaWRhdGUuQm9vbFJ1bGVzSAASKwoGc3RyaW5nGA4gASgLMhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzSAASKQoFYnl0ZXMYDyABKAsyGC5idWYudmFsaWRhdGUuQnl0ZXNSdWxlc0gAEicKBGVudW0YECABKAsyFy5idWYudmFsaWRhdGUuRW51bVJ1bGVzSAASLwoIcmVwZWF0ZWQYEiABKAsyGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlc0gAEiUKA21hcBgTIAEoCzIWLmJ1Zi52YWxpZGF0ZS5NYXBSdWxlc0gAEiUKA2FueRgUIAEoCzIWLmJ1Zi52YWxpZGF0ZS5BbnlSdWxlc0gAEi8KCGR1cmF0aW9uGBUgASgLMhsuYnVmLnZhbGlkYXRlLkR1cmF0aW9uUnVsZXNIABIxCgl0aW1lc3RhbXAYFiABKAsyHC5idWYudmFsaWRhdGUuVGltZXN0YW1wUnVsZXNIAEIGCgR0eXBlIl8KFVByZWRlZmluZWRDb25zdHJhaW50cxIlCgNjZWwYASADKAsyGC5idWYudmFsaWRhdGUuQ29uc3RyYWludEoECBgQGUoECBoQG1ITc2tpcHBlZGlnbm9yZV9lbXB0eSK1FwoKRmxvYXRSdWxlcxJpCgVjb25zdBgBIAEoAkJawkhXClUKC2Zsb2F0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEp8BCgJsdBgCIAEoAkKQAcJIjAEKiQEKCGZsb2F0Lmx0Gn0haGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0KT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEq8BCgNsdGUYAyABKAJCnwHCSJsBCpgBCglmbG9hdC5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLvBwoCZ3QYBCABKAJC4AfCSNwHCo0BCghmbG9hdC5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsMBCgtmbG9hdC5ndF9sdBqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCs0BChVmbG9hdC5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrTAQoMZmxvYXQuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3QEKFmZsb2F0Lmd0X2x0ZV9leGNsdXNpdmUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEroICgNndGUYBSABKAJCqgjCSKYICpsBCglmbG9hdC5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0gEKDGZsb2F0Lmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3AEKFmZsb2F0Lmd0ZV9sdF9leGNsdXNpdmUawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCuIBCg1mbG9hdC5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrsAQoXZmxvYXQuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdQoCaW4YBiADKAJCacJIZgpkCghmbG9hdC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ2CgZub3RfaW4YByADKAJCZsJIYwphCgxmbG9hdC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJ1CgZmaW5pdGUYCCABKAhCZcJIYgpgCgxmbG9hdC5maW5pdGUaUHJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ3ZhbHVlIG11c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEisKB2V4YW1wbGUYCSADKAJCGsJIFwoVCg1mbG9hdC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLHFwoLRG91YmxlUnVsZXMSagoFY29uc3QYASABKAFCW8JIWApWCgxkb3VibGUuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSoAEKAmx0GAIgASgBQpEBwkiNAQqKAQoJZG91YmxlLmx0Gn0haGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0KT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErABCgNsdGUYAyABKAFCoAHCSJwBCpkBCgpkb3VibGUubHRlGooBIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS9AcKAmd0GAQgASgBQuUHwkjhBwqOAQoJZG91YmxlLmd0GoABIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKxAEKDGRvdWJsZS5ndF9sdBqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCs4BChZkb3VibGUuZ3RfbHRfZXhjbHVzaXZlGrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycK1AEKDWRvdWJsZS5ndF9sdGUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwreAQoXZG91YmxlLmd0X2x0ZV9leGNsdXNpdmUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEr8ICgNndGUYBSABKAFCrwjCSKsICpwBCgpkb3VibGUuZ3RlGo0BIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCtMBCg1kb3VibGUuZ3RlX2x0GsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrdAQoXZG91YmxlLmd0ZV9sdF9leGNsdXNpdmUawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCuMBCg5kb3VibGUuZ3RlX2x0ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK7QEKGGRvdWJsZS5ndGVfbHRlX2V4Y2x1c2l2ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ2CgJpbhgGIAMoAUJqwkhnCmUKCWRvdWJsZS5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ3CgZub3RfaW4YByADKAFCZ8JIZApiCg1kb3VibGUubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdgoGZmluaXRlGAggASgIQmbCSGMKYQoNZG91YmxlLmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSLAoHZXhhbXBsZRgJIAMoAUIbwkgYChYKDmRvdWJsZS5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLnFAoKSW50MzJSdWxlcxJpCgVjb25zdBgBIAEoBUJawkhXClUKC2ludDMyLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEooBCgJsdBgCIAEoBUJ8wkh5CncKCGludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpwBCgNsdGUYAyABKAVCjAHCSIgBCoUBCglpbnQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpcHCgJndBgEIAEoBUKIB8JIhAcKegoIaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLjBwoDZ3RlGAUgASgFQtMHwkjPBwqIAQoJaW50MzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrKAQoWaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnUKAmluGAYgAygFQmnCSGYKZAoIaW50MzIuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSdgoGbm90X2luGAcgAygFQmbCSGMKYQoMaW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKwoHZXhhbXBsZRgIIAMoBUIawkgXChUKDWludDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIucUCgpJbnQ2NFJ1bGVzEmkKBWNvbnN0GAEgASgDQlrCSFcKVQoLaW50NjQuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSigEKAmx0GAIgASgDQnzCSHkKdwoIaW50NjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnAEKA2x0ZRgDIAEoA0KMAcJIiAEKhQEKCWludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASlwcKAmd0GAQgASgDQogHwkiEBwp6CghpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKswEKC2ludDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq7AQoVaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwwEKDGludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKywEKFmludDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEuMHCgNndGUYBSABKANC0wfCSM8HCogBCglpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrCAQoMaW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsoBChZpbnQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrSAQoNaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwraAQoXaW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdQoCaW4YBiADKANCacJIZgpkCghpbnQ2NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ2CgZub3RfaW4YByADKANCZsJIYwphCgxpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAkgAygDQhrCSBcKFQoNaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i+BQKC1VJbnQzMlJ1bGVzEmoKBWNvbnN0GAEgASgNQlvCSFgKVgoMdWludDMyLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEosBCgJsdBgCIAEoDUJ9wkh6CngKCXVpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgNQo0BwkiJAQqGAQoKdWludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgNQo0HwkiJBwp7Cgl1aW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoDULYB8JI1AcKiQEKCnVpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnYKAmluGAYgAygNQmrCSGcKZQoJdWludDMyLmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEncKBm5vdF9pbhgHIAMoDUJnwkhkCmIKDXVpbnQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygNQhvCSBgKFgoOdWludDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIvgUCgtVSW50NjRSdWxlcxJqCgVjb25zdBgBIAEoBEJbwkhYClYKDHVpbnQ2NC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKLAQoCbHQYAiABKARCfcJIegp4Cgl1aW50NjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnQEKA2x0ZRgDIAEoBEKNAcJIiQEKhgEKCnVpbnQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpwHCgJndBgEIAEoBEKNB8JIiQcKewoJdWludDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq0AQoMdWludDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq8AQoWdWludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsQBCg11aW50NjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrMAQoXdWludDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEugHCgNndGUYBSABKARC2AfCSNQHCokBCgp1aW50NjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwwEKDXVpbnQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKywEKF3VpbnQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrTAQoOdWludDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2wEKGHVpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ2CgJpbhgGIAMoBEJqwkhnCmUKCXVpbnQ2NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ3CgZub3RfaW4YByADKARCZ8JIZApiCg11aW50NjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoBEIbwkgYChYKDnVpbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiL4FAoLU0ludDMyUnVsZXMSagoFY29uc3QYASABKBFCW8JIWApWCgxzaW50MzIuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSiwEKAmx0GAIgASgRQn3CSHoKeAoJc2ludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBFCjQHCSIkBCoYBCgpzaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBFCjQfCSIkHCnsKCXNpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgRQtgHwkjUBwqJAQoKc2ludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdgoCaW4YBiADKBFCasJIZwplCglzaW50MzIuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSdwoGbm90X2luGAcgAygRQmfCSGQKYgoNc2ludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBFCG8JIGAoWCg5zaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i+BQKC1NJbnQ2NFJ1bGVzEmoKBWNvbnN0GAEgASgSQlvCSFgKVgoMc2ludDY0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEosBCgJsdBgCIAEoEkJ9wkh6CngKCXNpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgSQo0BwkiJAQqGAQoKc2ludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgSQo0HwkiJBwp7CglzaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEkLYB8JI1AcKiQEKCnNpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnYKAmluGAYgAygSQmrCSGcKZQoJc2ludDY0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEncKBm5vdF9pbhgHIAMoEkJnwkhkCmIKDXNpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygSQhvCSBgKFgoOc2ludDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIokVCgxGaXhlZDMyUnVsZXMSawoFY29uc3QYASABKAdCXMJIWQpXCg1maXhlZDMyLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEowBCgJsdBgCIAEoB0J+wkh7CnkKCmZpeGVkMzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASngEKA2x0ZRgDIAEoB0KOAcJIigEKhwEKC2ZpeGVkMzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKhBwoCZ3QYBCABKAdCkgfCSI4HCnwKCmZpeGVkMzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrUBCg1maXhlZDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq9AQoXZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrFAQoOZml4ZWQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs0BChhmaXhlZDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu0HCgNndGUYBSABKAdC3QfCSNkHCooBCgtmaXhlZDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsQBCg5maXhlZDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoYZml4ZWQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrUAQoPZml4ZWQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtwBChlmaXhlZDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEncKAmluGAYgAygHQmvCSGgKZgoKZml4ZWQzMi5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ4CgZub3RfaW4YByADKAdCaMJIZQpjCg5maXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAdCHMJIGQoXCg9maXhlZDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIokVCgxGaXhlZDY0UnVsZXMSawoFY29uc3QYASABKAZCXMJIWQpXCg1maXhlZDY0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEowBCgJsdBgCIAEoBkJ+wkh7CnkKCmZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASngEKA2x0ZRgDIAEoBkKOAcJIigEKhwEKC2ZpeGVkNjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKhBwoCZ3QYBCABKAZCkgfCSI4HCnwKCmZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrUBCg1maXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq9AQoXZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrFAQoOZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs0BChhmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu0HCgNndGUYBSABKAZC3QfCSNkHCooBCgtmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsQBCg5maXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoYZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrUAQoPZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtwBChlmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEncKAmluGAYgAygGQmvCSGgKZgoKZml4ZWQ2NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ4CgZub3RfaW4YByADKAZCaMJIZQpjCg5maXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAZCHMJIGQoXCg9maXhlZDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIpoVCg1TRml4ZWQzMlJ1bGVzEmwKBWNvbnN0GAEgASgPQl3CSFoKWAoOc2ZpeGVkMzIuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSjQEKAmx0GAIgASgPQn/CSHwKegoLc2ZpeGVkMzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoD0KPAcJIiwEKiAEKDHNmaXhlZDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASpgcKAmd0GAQgASgPQpcHwkiTBwp9CgtzZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvIHCgNndGUYBSABKA9C4gfCSN4HCosBCgxzZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESeAoCaW4YBiADKA9CbMJIaQpnCgtzZml4ZWQzMi5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ5CgZub3RfaW4YByADKA9CacJIZgpkCg9zZml4ZWQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygPQh3CSBoKGAoQc2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4imhUKDVNGaXhlZDY0UnVsZXMSbAoFY29uc3QYASABKBBCXcJIWgpYCg5zZml4ZWQ2NC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKNAQoCbHQYAiABKBBCf8JIfAp6CgtzZml4ZWQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKfAQoDbHRlGAMgASgQQo8BwkiLAQqIAQoMc2ZpeGVkNjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKmBwoCZ3QYBCABKBBClwfCSJMHCn0KC3NmaXhlZDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOc2ZpeGVkNjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhzZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPc2ZpeGVkNjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZc2ZpeGVkNjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES8gcKA2d0ZRgFIAEoEELiB8JI3gcKiwEKDHNmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9zZml4ZWQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGXNmaXhlZDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBzZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpzZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ4CgJpbhgGIAMoEEJswkhpCmcKC3NmaXhlZDY0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnkKBm5vdF9pbhgHIAMoEEJpwkhmCmQKD3NmaXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKBBCHcJIGgoYChBzZml4ZWQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKsAQoJQm9vbFJ1bGVzEmgKBWNvbnN0GAEgASgIQlnCSFYKVAoKYm9vbC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxIqCgdleGFtcGxlGAIgAygIQhnCSBYKFAoMYm9vbC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIi4DYKC1N0cmluZ1J1bGVzEmwKBWNvbnN0GAEgASgJQl3CSFoKWAoMc3RyaW5nLmNvbnN0Gkh0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgYCVzYCcuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSfgoDbGVuGBMgASgEQnHCSG4KbAoKc3RyaW5nLmxlbhpedWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKZAQoHbWluX2xlbhgCIAEoBEKHAcJIgwEKgAEKDnN0cmluZy5taW5fbGVuGm51aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKXAQoHbWF4X2xlbhgDIAEoBEKFAcJIgQEKfwoOc3RyaW5nLm1heF9sZW4abXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSmwEKCWxlbl9ieXRlcxgUIAEoBEKHAcJIgwEKgAEKEHN0cmluZy5sZW5fYnl0ZXMabHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSAhPSBydWxlcy5sZW5fYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuX2J5dGVzXSkgOiAnJxKjAQoJbWluX2J5dGVzGAQgASgEQo8BwkiLAQqIAQoQc3RyaW5nLm1pbl9ieXRlcxp0dWludChieXRlcyh0aGlzKS5zaXplKCkpIDwgcnVsZXMubWluX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9ieXRlc10pIDogJycSogEKCW1heF9ieXRlcxgFIAEoBEKOAcJIigEKhwEKEHN0cmluZy5tYXhfYnl0ZXMac3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9ieXRlc10pIDogJycSjQEKB3BhdHRlcm4YBiABKAlCfMJIeQp3Cg5zdHJpbmcucGF0dGVybhplIXRoaXMubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBkb2VzIG5vdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycShAEKBnByZWZpeBgHIAEoCUJ0wkhxCm8KDXN0cmluZy5wcmVmaXgaXiF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCBgJXNgJy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSggEKBnN1ZmZpeBgIIAEoCUJywkhvCm0KDXN0cmluZy5zdWZmaXgaXCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEpABCghjb250YWlucxgJIAEoCUJ+wkh7CnkKD3N0cmluZy5jb250YWlucxpmIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpgBCgxub3RfY29udGFpbnMYFyABKAlCgQHCSH4KfAoTc3RyaW5nLm5vdF9jb250YWlucxpldGhpcy5jb250YWlucyhydWxlcy5ub3RfY29udGFpbnMpID8gJ3ZhbHVlIGNvbnRhaW5zIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLm5vdF9jb250YWluc10pIDogJycSdgoCaW4YCiADKAlCasJIZwplCglzdHJpbmcuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSdwoGbm90X2luGAsgAygJQmfCSGQKYgoNc3RyaW5nLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEt8BCgVlbWFpbBgMIAEoCELNAcJIyQEKYQoMc3RyaW5nLmVtYWlsEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLnAQoIaG9zdG5hbWUYDSABKAhC0gHCSM4BCmUKD3N0cmluZy5ob3N0bmFtZRIedmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLHAQoCaXAYDiABKAhCuAHCSLQBClUKCXN0cmluZy5pcBIgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjQYDyABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY0EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtYBCgRpcHY2GBAgASgIQsUBwkjBAQpcCgtzdHJpbmcuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK/AQoDdXJpGBEgASgIQq8BwkirAQpRCgpzdHJpbmcudXJpEhl2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEmYKB3VyaV9yZWYYEiABKAhCU8JIUApOCg5zdHJpbmcudXJpX3JlZhIZdmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVSSRohIXJ1bGVzLnVyaV9yZWYgfHwgdGhpcy5pc1VyaVJlZigpSAASkAIKB2FkZHJlc3MYFSABKAhC/AHCSPgBCoEBCg5zdHJpbmcuYWRkcmVzcxItdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKYAgoEdXVpZBgWIAEoCEKHAsJIgwIKpQEKC3N0cmluZy51dWlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS8AEKBXR1dWlkGCEgASgIQt4BwkjaAQpzCgxzdHJpbmcudHV1aWQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASlgIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvgBwkj0AQp4ChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEs8CChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQq8CwkirAgqTAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SNXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS8gEKCWlwX3ByZWZpeBgdIAEoCELcAcJI2AEKbAoQc3RyaW5nLmlwX3ByZWZpeBIfdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABKDAgoLaXB2NF9wcmVmaXgYHiABKAhC6wHCSOcBCnUKEnN0cmluZy5pcHY0X3ByZWZpeBIhdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjZfcHJlZml4GB8gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2Nl9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAErUCCg1ob3N0X2FuZF9wb3J0GCAgASgIQpsCwkiXAgqZAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSQXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEqgFChB3ZWxsX2tub3duX3JlZ2V4GBggASgOMhguYnVmLnZhbGlkYXRlLktub3duUmVnZXhC8QTCSO0ECvABCiNzdHJpbmcud2VsbF9rbm93bl9yZWdleC5oZWFkZXJfbmFtZRImdmFsdWUgbXVzdCBiZSBhIHZhbGlkIEhUVFAgaGVhZGVyIG5hbWUaoAFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoIWhhcyhydWxlcy5zdHJpY3QpIHx8IHJ1bGVzLnN0cmljdCA/J146P1swLTlhLXpBLVohIyQlJlwnKistLl5ffH5ceDYwXSskJyA6J15bXlx1MDAwMFx1MDAwQVx1MDAwRF0rJCcpCo0BCilzdHJpbmcud2VsbF9rbm93bl9yZWdleC5oZWFkZXJfbmFtZV9lbXB0eRI1dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIEhUVFAgaGVhZGVyIG5hbWUaKXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMSB8fCB0aGlzICE9ICcnCucBCiRzdHJpbmcud2VsbF9rbm93bl9yZWdleC5oZWFkZXJfdmFsdWUSJ3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciB2YWx1ZRqVAXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMiB8fCB0aGlzLm1hdGNoZXMoIWhhcyhydWxlcy5zdHJpY3QpIHx8IHJ1bGVzLnN0cmljdCA/J15bXlx1MDAwMC1cdTAwMDhcdTAwMEEtXHUwMDFGXHUwMDdGXSokJyA6J15bXlx1MDAwMFx1MDAwQVx1MDAwRF0qJCcpSAASDgoGc3RyaWN0GBkgASgIEiwKB2V4YW1wbGUYIiADKAlCG8JIGAoWCg5zdHJpbmcuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgwKCndlbGxfa25vd24ivxAKCkJ5dGVzUnVsZXMSZgoFY29uc3QYASABKAxCV8JIVApSCgtieXRlcy5jb25zdBpDdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGJlICV4Jy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxJ4CgNsZW4YDSABKARCa8JIaApmCglieXRlcy5sZW4aWXVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnEpABCgdtaW5fbGVuGAIgASgEQn/CSHwKegoNYnl0ZXMubWluX2xlbhppdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fbGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9sZW5dKSA6ICcnEogBCgdtYXhfbGVuGAMgASgEQnfCSHQKcgoNYnl0ZXMubWF4X2xlbhphdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfbGVuID8gJ3ZhbHVlIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5tYXhfbGVuXSkgOiAnJxKQAQoHcGF0dGVybhgEIAEoCUJ/wkh8CnoKDWJ5dGVzLnBhdHRlcm4aaSFzdHJpbmcodGhpcykubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBtdXN0IG1hdGNoIHJlZ2V4IHBhdHRlcm4gYCVzYCcuZm9ybWF0KFtydWxlcy5wYXR0ZXJuXSkgOiAnJxKBAQoGcHJlZml4GAUgASgMQnHCSG4KbAoMYnl0ZXMucHJlZml4GlwhdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBwcmVmaXggJXgnLmZvcm1hdChbcnVsZXMucHJlZml4XSkgOiAnJxJ/CgZzdWZmaXgYBiABKAxCb8JIbApqCgxieXRlcy5zdWZmaXgaWiF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggJXgnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxKDAQoIY29udGFpbnMYByABKAxCccJIbgpsCg5ieXRlcy5jb250YWlucxpaIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gJXgnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpcBCgJpbhgIIAMoDEKKAcJIhgEKgwEKCGJ5dGVzLmluGndkeW4ocnVsZXMpWydpbiddLnNpemUoKSA+IDAgJiYgISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ2CgZub3RfaW4YCSADKAxCZsJIYwphCgxieXRlcy5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxLrAQoCaXAYCiABKAhC3AHCSNgBCnQKCGJ5dGVzLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxpGIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNCB8fCB0aGlzLnNpemUoKSA9PSAxNgpgCg5ieXRlcy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaHSFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5AEKBGlwdjQYCyABKAhC0wHCSM8BCmUKCmJ5dGVzLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaMyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNApmChBieXRlcy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGh8hcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5QEKBGlwdjYYDCABKAhC1AHCSNABCmYKCmJ5dGVzLmlwdjYSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaNCFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKZgoQYnl0ZXMuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxofIXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgIT0gMEgAEisKB2V4YW1wbGUYDiADKAxCGsJIFwoVCg1ieXRlcy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biKvAwoJRW51bVJ1bGVzEmgKBWNvbnN0GAEgASgFQlnCSFYKVAoKZW51bS5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxIUCgxkZWZpbmVkX29ubHkYAiABKAgSdAoCaW4YAyADKAVCaMJIZQpjCgdlbnVtLmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnUKBm5vdF9pbhgEIAMoBUJlwkhiCmAKC2VudW0ubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIoEECg1SZXBlYXRlZFJ1bGVzEp4BCgltaW5faXRlbXMYASABKARCigHCSIYBCoMBChJyZXBlYXRlZC5taW5faXRlbXMabXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2l0ZW1zID8gJ3ZhbHVlIG11c3QgY29udGFpbiBhdCBsZWFzdCAlZCBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1pbl9pdGVtc10pIDogJycSogEKCW1heF9pdGVtcxgCIAEoBEKOAcJIigEKhwEKEnJlcGVhdGVkLm1heF9pdGVtcxpxdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfaXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIG5vIG1vcmUgdGhhbiAlcyBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1heF9pdGVtc10pIDogJycScAoGdW5pcXVlGAMgASgIQmDCSF0KWwoPcmVwZWF0ZWQudW5pcXVlEihyZXBlYXRlZCB2YWx1ZSBtdXN0IGNvbnRhaW4gdW5pcXVlIGl0ZW1zGh4hcnVsZXMudW5pcXVlIHx8IHRoaXMudW5pcXVlKCkSLQoFaXRlbXMYBCABKAsyHi5idWYudmFsaWRhdGUuRmllbGRDb25zdHJhaW50cyoJCOgHEICAgIACIpYDCghNYXBSdWxlcxKPAQoJbWluX3BhaXJzGAEgASgEQnzCSHkKdwoNbWFwLm1pbl9wYWlycxpmdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbGVhc3QgJWQgZW50cmllcycuZm9ybWF0KFtydWxlcy5taW5fcGFpcnNdKSA6ICcnEo4BCgltYXhfcGFpcnMYAiABKARCe8JIeAp2Cg1tYXAubWF4X3BhaXJzGmV1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBtb3N0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWF4X3BhaXJzXSkgOiAnJxIsCgRrZXlzGAQgASgLMh4uYnVmLnZhbGlkYXRlLkZpZWxkQ29uc3RyYWludHMSLgoGdmFsdWVzGAUgASgLMh4uYnVmLnZhbGlkYXRlLkZpZWxkQ29uc3RyYWludHMqCQjoBxCAgICAAiImCghBbnlSdWxlcxIKCgJpbhgCIAMoCRIOCgZub3RfaW4YAyADKAki9RYKDUR1cmF0aW9uUnVsZXMShwEKBWNvbnN0GAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQl3CSFoKWAoOZHVyYXRpb24uY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSqAEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQn/CSHwKegoLZHVyYXRpb24ubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASugEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKPAcJIiwEKiAEKDGR1cmF0aW9uLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASwQcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQpcHwkiTBwp9CgtkdXJhdGlvbi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDmR1cmF0aW9uLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD2R1cmF0aW9uLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEo0ICgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25C4gfCSN4HCosBCgxkdXJhdGlvbi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPZHVyYXRpb24uZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQZHVyYXRpb24uZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESkwEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQmzCSGkKZwoLZHVyYXRpb24uaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSlAEKBm5vdF9pbhgIIAMoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJpwkhmCmQKD2R1cmF0aW9uLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEkkKB2V4YW1wbGUYCSADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CHcJIGgoYChBkdXJhdGlvbi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiL4FwoOVGltZXN0YW1wUnVsZXMSiQEKBWNvbnN0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEJewkhbClkKD3RpbWVzdGFtcC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKrAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQoABwkh9CnsKDHRpbWVzdGFtcC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK8AQoDbHRlGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKQAcJIjAEKiQEKDXRpbWVzdGFtcC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEmwKBmx0X25vdxgHIAEoCEJawkhXClUKEHRpbWVzdGFtcC5sdF9ub3caQShydWxlcy5sdF9ub3cgJiYgdGhpcyA+IG5vdykgPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gbm93JyA6ICcnSAASxwcKAmd0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKcB8JImAcKfgoMdGltZXN0YW1wLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq3AQoPdGltZXN0YW1wLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq/AQoZdGltZXN0YW1wLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCscBChB0aW1lc3RhbXAuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrPAQoadGltZXN0YW1wLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEpMICgNndGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQucHwkjjBwqMAQoNdGltZXN0YW1wLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsYBChB0aW1lc3RhbXAuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs4BChp0aW1lc3RhbXAuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1gEKEXRpbWVzdGFtcC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt4BCht0aW1lc3RhbXAuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESbwoGZ3Rfbm93GAggASgIQl3CSFoKWAoQdGltZXN0YW1wLmd0X25vdxpEKHJ1bGVzLmd0X25vdyAmJiB0aGlzIDwgbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBub3cnIDogJydIARK4AQoGd2l0aGluGAkgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQowBwkiIAQqFAQoQdGltZXN0YW1wLndpdGhpbhpxdGhpcyA8IG5vdy1ydWxlcy53aXRoaW4gfHwgdGhpcyA+IG5vdytydWxlcy53aXRoaW4gPyAndmFsdWUgbXVzdCBiZSB3aXRoaW4gJXMgb2Ygbm93Jy5mb3JtYXQoW3J1bGVzLndpdGhpbl0pIDogJycSSwoHZXhhbXBsZRgKIAMoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCHsJIGwoZChF0aW1lc3RhbXAuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iOQoKVmlvbGF0aW9ucxIrCgp2aW9sYXRpb25zGAEgAygLMhcuYnVmLnZhbGlkYXRlLlZpb2xhdGlvbiKlAQoJVmlvbGF0aW9uEiYKBWZpZWxkGAUgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIlCgRydWxlGAYgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIVCg1jb25zdHJhaW50X2lkGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSDwoHZm9yX2tleRgEIAEoCEoECAEQAlIKZmllbGRfcGF0aCI9CglGaWVsZFBhdGgSMAoIZWxlbWVudHMYASADKAsyHi5idWYudmFsaWRhdGUuRmllbGRQYXRoRWxlbWVudCLpAgoQRmllbGRQYXRoRWxlbWVudBIUCgxmaWVsZF9udW1iZXIYASABKAUSEgoKZmllbGRfbmFtZRgCIAEoCRI+CgpmaWVsZF90eXBlGAMgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPAoIa2V5X3R5cGUYBCABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI+Cgp2YWx1ZV90eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSDwoFaW5kZXgYBiABKARIABISCghib29sX2tleRgHIAEoCEgAEhEKB2ludF9rZXkYCCABKANIABISCgh1aW50X2tleRgJIAEoBEgAEhQKCnN0cmluZ19rZXkYCiABKAlIAEILCglzdWJzY3JpcHQqhwEKBklnbm9yZRIWChJJR05PUkVfVU5TUEVDSUZJRUQQABIZChVJR05PUkVfSUZfVU5QT1BVTEFURUQQARIbChdJR05PUkVfSUZfREVGQVVMVF9WQUxVRRACEhEKDUlHTk9SRV9BTFdBWVMQAyoaSUdOT1JFX0VNUFRZSUdOT1JFX0RFRkFVTFQqbgoKS25vd25SZWdleBIbChdLTk9XTl9SRUdFWF9VTlNQRUNJRklFRBAAEiAKHEtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX05BTUUQARIhCh1LTk9XTl9SRUdFWF9IVFRQX0hFQURFUl9WQUxVRRACOlwKB21lc3NhZ2USHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYhwkgASgLMiAuYnVmLnZhbGlkYXRlLk1lc3NhZ2VDb25zdHJhaW50c1IHbWVzc2FnZTpUCgVvbmVvZhIdLmdvb2dsZS5wcm90b2J1Zi5PbmVvZk9wdGlvbnMYhwkgASgLMh4uYnVmLnZhbGlkYXRlLk9uZW9mQ29uc3RyYWludHNSBW9uZW9mOlQKBWZpZWxkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiHCSABKAsyHi5idWYudmFsaWRhdGUuRmllbGRDb25zdHJhaW50c1IFZmllbGQ6YwoKcHJlZGVmaW5lZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYiAkgASgLMiMuYnVmLnZhbGlkYXRlLlByZWRlZmluZWRDb25zdHJhaW50c1IKcHJlZGVmaW5lZEJuChJidWlsZC5idWYudmFsaWRhdGVCDVZhbGlkYXRlUHJvdG9QAVpHYnVmLmJ1aWxkL2dlbi9nby9idWZidWlsZC9wcm90b3ZhbGlkYXRlL3Byb3RvY29sYnVmZmVycy9nby9idWYvdmFsaWRhdGU",[T,Ye,Ot]);var Co=V("ChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkiVAoESHR0cBIjCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGUSJwofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCCKBAgoISHR0cFJ1bGUSEAoIc2VsZWN0b3IYASABKAkSDQoDZ2V0GAIgASgJSAASDQoDcHV0GAMgASgJSAASDgoEcG9zdBgEIAEoCUgAEhAKBmRlbGV0ZRgFIAEoCUgAEg8KBXBhdGNoGAYgASgJSAASLwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAEgwKBGJvZHkYByABKAkSFQoNcmVzcG9uc2VfYm9keRgMIAEoCRIxChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZUIJCgdwYXR0ZXJuIi8KEUN1c3RvbUh0dHBQYXR0ZXJuEgwKBGtpbmQYASABKAkSDAoEcGF0aBgCIAEoCUJqCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25z+AEBogIER0FQSWIGcHJvdG8z");var Xo=V("Chxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM",[Co,T]);var So=V("Ch1nb29nbGUvYXBpL2xhdW5jaF9zdGFnZS5wcm90bxIKZ29vZ2xlLmFwaSqMAQoLTGF1bmNoU3RhZ2USHAoYTEFVTkNIX1NUQUdFX1VOU1BFQ0lGSUVEEAASEQoNVU5JTVBMRU1FTlRFRBAGEg0KCVBSRUxBVU5DSBAHEhAKDEVBUkxZX0FDQ0VTUxABEgkKBUFMUEhBEAISCAoEQkVUQRADEgYKAkdBEAQSDgoKREVQUkVDQVRFRBAFQloKDmNvbS5nb29nbGUuYXBpQhBMYXVuY2hTdGFnZVByb3RvUAFaLWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpO2FwaaICBEdBUEliBnByb3RvMw");var Bo=V("Chdnb29nbGUvYXBpL2NsaWVudC5wcm90bxIKZ29vZ2xlLmFwaSK+AQoWQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIeChJyZWZlcmVuY2VfZG9jc191cmkYASABKAlCAhgBEjoKDGRlc3RpbmF0aW9ucxgCIAMoDjIkLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEkgKGnNlbGVjdGl2ZV9nYXBpY19nZW5lcmF0aW9uGAMgASgLMiQuZ29vZ2xlLmFwaS5TZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24i+wMKFUNsaWVudExpYnJhcnlTZXR0aW5ncxIPCgd2ZXJzaW9uGAEgASgJEi0KDGxhdW5jaF9zdGFnZRgCIAEoDjIXLmdvb2dsZS5hcGkuTGF1bmNoU3RhZ2USGgoScmVzdF9udW1lcmljX2VudW1zGAMgASgIEi8KDWphdmFfc2V0dGluZ3MYFSABKAsyGC5nb29nbGUuYXBpLkphdmFTZXR0aW5ncxItCgxjcHBfc2V0dGluZ3MYFiABKAsyFy5nb29nbGUuYXBpLkNwcFNldHRpbmdzEi0KDHBocF9zZXR0aW5ncxgXIAEoCzIXLmdvb2dsZS5hcGkuUGhwU2V0dGluZ3MSMwoPcHl0aG9uX3NldHRpbmdzGBggASgLMhouZ29vZ2xlLmFwaS5QeXRob25TZXR0aW5ncxIvCg1ub2RlX3NldHRpbmdzGBkgASgLMhguZ29vZ2xlLmFwaS5Ob2RlU2V0dGluZ3MSMwoPZG90bmV0X3NldHRpbmdzGBogASgLMhouZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncxIvCg1ydWJ5X3NldHRpbmdzGBsgASgLMhguZ29vZ2xlLmFwaS5SdWJ5U2V0dGluZ3MSKwoLZ29fc2V0dGluZ3MYHCABKAsyFi5nb29nbGUuYXBpLkdvU2V0dGluZ3MiqAMKClB1Ymxpc2hpbmcSMwoPbWV0aG9kX3NldHRpbmdzGAIgAygLMhouZ29vZ2xlLmFwaS5NZXRob2RTZXR0aW5ncxIVCg1uZXdfaXNzdWVfdXJpGGUgASgJEhkKEWRvY3VtZW50YXRpb25fdXJpGGYgASgJEhYKDmFwaV9zaG9ydF9uYW1lGGcgASgJEhQKDGdpdGh1Yl9sYWJlbBhoIAEoCRIeChZjb2Rlb3duZXJfZ2l0aHViX3RlYW1zGGkgAygJEhYKDmRvY190YWdfcHJlZml4GGogASgJEjsKDG9yZ2FuaXphdGlvbhhrIAEoDjIlLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhI7ChBsaWJyYXJ5X3NldHRpbmdzGG0gAygLMiEuZ29vZ2xlLmFwaS5DbGllbnRMaWJyYXJ5U2V0dGluZ3MSKQohcHJvdG9fcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG4gASgJEigKIHJlc3RfcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG8gASgJIuMBCgxKYXZhU2V0dGluZ3MSFwoPbGlicmFyeV9wYWNrYWdlGAEgASgJEkwKE3NlcnZpY2VfY2xhc3NfbmFtZXMYAiADKAsyLy5nb29nbGUuYXBpLkphdmFTZXR0aW5ncy5TZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EjIKBmNvbW1vbhgDIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxo4ChZTZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoLQ3BwU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIkEKC1BocFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyL0AQoOUHl0aG9uU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEk4KFWV4cGVyaW1lbnRhbF9mZWF0dXJlcxgCIAEoCzIvLmdvb2dsZS5hcGkuUHl0aG9uU2V0dGluZ3MuRXhwZXJpbWVudGFsRmVhdHVyZXMaXgoURXhwZXJpbWVudGFsRmVhdHVyZXMSHQoVcmVzdF9hc3luY19pb19lbmFibGVkGAEgASgIEicKH3Byb3RvYnVmX3B5dGhvbmljX3R5cGVzX2VuYWJsZWQYAiABKAgiQgoMTm9kZVNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKqAwoORG90bmV0U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEkkKEHJlbmFtZWRfc2VydmljZXMYAiADKAsyLy5nb29nbGUuYXBpLkRvdG5ldFNldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5EksKEXJlbmFtZWRfcmVzb3VyY2VzGAMgAygLMjAuZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncy5SZW5hbWVkUmVzb3VyY2VzRW50cnkSGQoRaWdub3JlZF9yZXNvdXJjZXMYBCADKAkSIAoYZm9yY2VkX25hbWVzcGFjZV9hbGlhc2VzGAUgAygJEh4KFmhhbmR3cml0dGVuX3NpZ25hdHVyZXMYBiADKAkaNgoUUmVuYW1lZFNlcnZpY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVSZW5hbWVkUmVzb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJCCgxSdWJ5U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIr8BCgpHb1NldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJFChByZW5hbWVkX3NlcnZpY2VzGAIgAygLMisuZ29vZ2xlLmFwaS5Hb1NldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5GjYKFFJlbmFtZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEizwIKDk1ldGhvZFNldHRpbmdzEhAKCHNlbGVjdG9yGAEgASgJEjwKDGxvbmdfcnVubmluZxgCIAEoCzImLmdvb2dsZS5hcGkuTWV0aG9kU2V0dGluZ3MuTG9uZ1J1bm5pbmcSHQoVYXV0b19wb3B1bGF0ZWRfZmllbGRzGAMgAygJGs0BCgtMb25nUnVubmluZxI1ChJpbml0aWFsX3BvbGxfZGVsYXkYASABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SHQoVcG9sbF9kZWxheV9tdWx0aXBsaWVyGAIgASgCEjEKDm1heF9wb2xsX2RlbGF5GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjUKEnRvdGFsX3BvbGxfdGltZW91dBgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiIrChhTZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24SDwoHbWV0aG9kcxgBIAMoCSqjAQoZQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhIrCidDTElFTlRfTElCUkFSWV9PUkdBTklaQVRJT05fVU5TUEVDSUZJRUQQABIJCgVDTE9VRBABEgcKA0FEUxACEgoKBlBIT1RPUxADEg8KC1NUUkVFVF9WSUVXEAQSDAoIU0hPUFBJTkcQBRIHCgNHRU8QBhIRCg1HRU5FUkFUSVZFX0FJEAcqZwoYQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEioKJkNMSUVOVF9MSUJSQVJZX0RFU1RJTkFUSU9OX1VOU1BFQ0lGSUVEEAASCgoGR0lUSFVCEAoSEwoPUEFDS0FHRV9NQU5BR0VSEBQ6SgoQbWV0aG9kX3NpZ25hdHVyZRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGJsIIAMoCVIPbWV0aG9kU2lnbmF0dXJlOkMKDGRlZmF1bHRfaG9zdBIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiZCCABKAlSC2RlZmF1bHRIb3N0OkMKDG9hdXRoX3Njb3BlcxIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiaCCABKAlSC29hdXRoU2NvcGVzOkQKC2FwaV92ZXJzaW9uEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGMG6q/oBIAEoCVIKYXBpVmVyc2lvbkJpCg5jb20uZ29vZ2xlLmFwaUILQ2xpZW50UHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM",[So,T,Ye]);var we=V("Cittb2NoYWJ1Z2FwaXMvYWRhcHQvcGx1Z2lucy92MS9wbHVnaW5zLnByb3RvEh1tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MSKWAQoTVXBsb2FkUGx1Z2luUmVxdWVzdBI7CghtYW5pZmVzdBgBIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLk1hbmlmZXN0SAASMwoEZmlsZRgCIAEoCzIjLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLkZpbGVIAEINCgRkYXRhEgW6SAIIASIWChRVcGxvYWRQbHVnaW5SZXNwb25zZSJPCgRGaWxlEisKBHBhdGgYASABKAlCHbpIGnIYEAIYgCAyEV5bXi9dKyhcL1teL10rKSokEhoKBGRhdGEYAiABKAxCDLpICXoHEAEYgLSJEyKIEAoITWFuaWZlc3QSLQoEbmFtZRgBIAEoCUIfukgcchoQARhkMhReW18kYS16XVtfJGEtejAtOV0qJBLUAQoHdmVyc2lvbhgCIAEoCULCAbpIvgFyuwEQBRiWATKzAV4oMHxbMS05XVxkKilcLigwfFsxLTldXGQqKVwuKDB8WzEtOV1cZCopKD86LSgoPzowfFsxLTldXGQqfFxkKlthLXpBLVotXVswLTlhLXpBLVotXSopKD86XC4oPzowfFsxLTldXGQqfFxkKlthLXpBLVotXVswLTlhLXpBLVotXSopKSopKT8oPzpcKyhbMC05YS16QS1aLV0rKD86XC5bMC05YS16QS1aLV0rKSopKT8kEhgKBWxhYmVsGAMgASgJQgm6SAZyBBABGGQSHwoLZGVzY3JpcHRpb24YBCABKAlCCrpIB3IFEAEY+gESHgoMb3JnYW5pemF0aW9uGAUgASgJQgi6SAVyA7ABARJYCghob21lcGFnZRgGIAEoCUJBukg+2AEBcjkQCxiAIDIyXmh0dHBzOi8vW2EtekEtWjAtOS4tXSsoPzpcLlthLXpBLVpdezIsfSkoPzovLiopPyRIAIgBARJaCgpyZXBvc2l0b3J5GAcgASgJQkG6SD7YAQFyORALGIAgMjJeaHR0cHM6Ly9bYS16QS1aMC05Li1dKyg/OlwuW2EtekEtWl17Mix9KSg/Oi8uKik/JEgBiAEBEtkBCgRidWdzGAggASgJQsUBukjBAboBugEKEnZhbGlkX2VtYWlsX29yX3VybBIhYnVncyBtdXN0IGJlIGEgdmFsaWQgZW1haWwgb3IgVVJMGoABc2l6ZSh0aGlzKSA+PSAyICYmIHNpemUodGhpcykgPD0gNDA5NiAmJiAodGhpcy5pc0VtYWlsKCkgfHwgdGhpcy5tYXRjaGVzKCdeaHR0cHM6Ly9bYS16QS1aMC05Li1dKyg/OlxcLlthLXpBLVpdezIsfSkoPzovLiopPyQnKSnYAQFIAogBARIhCgZhdXRob3IYCSABKAlCDLpICdgBAXIEEAEYZEgDiAEBEmUKBGxvZ28YCiABKAlCUrpIT9gBAXJKEAIYgCAyQ14oW14vXSsoL1teL10rKSopXC4oZ2lmfGpwZ3xqcGVnfGpmaWZ8cGpwZWd8cGpwfHBuZ3xzdmd8d2VicHxhdmlmKSRIBIgBARI7CglleGVjdXRvcnMYCyABKAlCKLpIJXIjEAIYgCAyHF4oW14vXSsoL1teL10rKSopXC4obWpzfGpzKSQSRwoNY29uZmlndXJhdG9ycxgMIAEoCUIrukgo2AEBciMQAhiAIDIcXihbXi9dKygvW14vXSspKilcLihtanN8anMpJEgFiAEBEjIKBmFzc2V0cxgNIAEoCUIdukgachgQAhiAIDIRXlteL10rKFwvW14vXSspKiRIBogBARIvCgNjZG4YDiABKAlCHbpIGnIYEAIYgCAyEV5bXi9dKyhcL1teL10rKSokSAeIAQESqAEKCHZlcnRpY2VzGA8gAygLMiUubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuVmVydGV4Qm+6SGy6AWIKE3ZlcnRleF91bmlxdWVfbmFtZXMSI2EgbmFtZSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlGiZ0aGlzLm1hcCh2ZXJ0ZXgsIHZlcnRleC5uYW1lKS51bmlxdWUoKZIBBAgBEGQSnwIKDXBsdWdpbl9vYXV0aDIYECADKAsyLC5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5PYXV0aDJTZXJ2aWNlQtkBukjVAboBbQogcGx1Z2luX29hdXRoMi5vYXV0aF91bmlxdWVfbmFtZXMSI2EgbmFtZSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlGiR0aGlzLm1hcChvYXV0aCwgb2F1dGgubmFtZSkudW5pcXVlKCmSAWIIABAUIly6AVkKHnBsdWdpbl9vYXV0aDIub2F1dGgyLmNsaWVudF9pZBIiVGhlIGNsaWVudF9pZCBwcm9wZXJ0eSBtdXN0IGJlIHNldBoTaGFzKHRoaXMuY2xpZW50X2lkKRK7AQoQcGx1Z2luX3ZhcmlhYmxlcxgRIAMoCzIuLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlZhcmlhYmxlU2VydmljZUJxukhuugFkChF2YXJzX3VuaXF1ZV9uYW1lcxIjYSBuYW1lIGNhbm5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UaKnRoaXMubWFwKHZhcmlhYmxlLCB2YXJpYWJsZS5uYW1lKS51bmlxdWUoKZIBBAgAEGQSqgEKC3BsdWdpbl9tdGxzGBIgAygLMioubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuTVRMU1NlcnZpY2VCabpIZroBXAoRbXRsc191bmlxdWVfbmFtZXMSI2EgbmFtZSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlGiJ0aGlzLm1hcChtdGxzLCBtdGxzLm5hbWUpLnVuaXF1ZSgpkgEECAAQFEILCglfaG9tZXBhZ2VCDQoLX3JlcG9zaXRvcnlCBwoFX2J1Z3NCCQoHX2F1dGhvckIHCgVfbG9nb0IQCg5fY29uZmlndXJhdG9yc0IJCgdfYXNzZXRzQgYKBF9jZG4ixg0KBlZlcnRleBItCgRuYW1lGAEgASgJQh+6SBxyGhABGGQyFF5bXyRhLXpdW18kYS16MC05XSokEhgKBWxhYmVsGAIgASgJQgm6SAZyBBABGGQSJwoLZGVzY3JpcHRpb24YAyABKAlCDbpICtgBAXIFEAEY+gFIAIgBARJlCgRsb2dvGAQgASgJQlK6SE/YAQFyShACGIAgMkNeKFteL10rKC9bXi9dKykqKVwuKGdpZnxqcGd8anBlZ3xqZmlmfHBqcGVnfHBqcHxwbmd8c3ZnfHdlYnB8YXZpZikkSAGIAQESSAoEdHlwZRgFIAEoDjIwLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlZlcnRleC5WZXJ0ZXhUeXBlQgi6SAWCAQIgABIyCgZjb25maWcYBiABKAlCHbpIGnIYEAUYgCAyEV4oW14vXSsoL1teL10rKSopSAKIAQESNgoIbWV0YWRhdGEYByABKAlCJLpIIXIfEAUYgCAyGF4oW14vXSsoL1teL10rKSopXC5qc29uJBIUCgxjb25maWd1cmF0b3IYCCABKAgStAEKCXZhcmlhYmxlcxgJIAMoCzIuLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlZhcmlhYmxlU2VydmljZUJxukhuugFkChF2YXJzX3VuaXF1ZV9uYW1lcxIjYSBuYW1lIGNhbm5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UaKnRoaXMubWFwKHZhcmlhYmxlLCB2YXJpYWJsZS5uYW1lKS51bmlxdWUoKZIBBAgAEGQSowEKBG10bHMYCiADKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5NVExTU2VydmljZUJpukhmugFcChFtdGxzX3VuaXF1ZV9uYW1lcxIjYSBuYW1lIGNhbm5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UaInRoaXMubWFwKG10bHMsIG10bHMubmFtZSkudW5pcXVlKCmSAQQIABBkEsABCgtjb2RlX29hdXRoMhgLIAMoCzIwLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLk9hdXRoMkNvZGVCaW5kaW5nQnm6SHa6AWwKH3ZlcnRleC5jb2RlX29hdXRoMi51bmlxdWVfbmFtZXMSI2EgbmFtZSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlGiR0aGlzLm1hcChvYXV0aCwgb2F1dGgubmFtZSkudW5pcXVlKCmSAQQIABAUEvICCgZvYXV0aDIYDCADKAsyLC5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5PYXV0aDJTZXJ2aWNlQrMCukivAroBZwoadmVydGV4Lm9hdXRoMi51bmlxdWVfbmFtZXMSI2EgbmFtZSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlGiR0aGlzLm1hcChvYXV0aCwgb2F1dGgubmFtZSkudW5pcXVlKCmSAcEBCAAQFCK6AboBtgEKIHZlcnRleC5vYXV0aDIuY2xpZW50X2lkX2FuZF9jb2RlElFUaGUgY2xpZW50X2lkIGFuZCB0aGUgY29kZSBwcm9wZXJ0eSBtYXkgbm90IGJlIHNldCBhcyB3ZWxsIGFzIHRoZSBjb2RlIGdyYW50IHR5cGUaPyFoYXModGhpcy5jbGllbnRfaWQpICYmICFoYXModGhpcy5jb2RlKSAmJiB0aGlzLmdyYW50X3R5cGUgIT0gMSKaAQoKVmVydGV4VHlwZRIbChdWRVJURVhfVFlQRV9VTlNQRUNJRklFRBAAEhYKElZFUlRFWF9UWVBFX0FDVElPThABEhcKE1ZFUlRFWF9UWVBFX0JST1dTRVIQAhIcChhWRVJURVhfVFlQRV9DUk9OX1RSSUdHRVIQAxIgChxWRVJURVhfVFlQRV9FWFRFUk5BTF9UUklHR0VSEAQ6wAG6SLwBGrkBCh92ZXJ0ZXgub2F1dGgyX2FuZF9jb2RlX2JpbmRpbmdzEkVUaGUgbmFtZXMgb2YgdGhlIG9hdXRoMiBzZXJ2aWNlcyBhbmQgdGhlIGNvZGUgYmluZGluZ3MgbXVzdCBiZSB1bmlxdWUaTyh0aGlzLm9hdXRoMi5tYXAodmFsLCB2YWwubmFtZSkgKyB0aGlzLmNvZGVfb2F1dGgyLm1hcCh2YWwsIHZhbC5uYW1lKSkudW5pcXVlKClCDgoMX2Rlc2NyaXB0aW9uQgcKBV9sb2dvQgkKB19jb25maWcixQEKC01UTFNTZXJ2aWNlEi0KBG5hbWUYASABKAlCH7pIHHIaEAEYZDIUXltfJGEtel1bXyRhLXowLTldKiQSIAoFbGFiZWwYAiABKAlCDLpICdgBAXIEEAEYZEgAiAEBEicKC2Rlc2NyaXB0aW9uGAMgASgJQg26SArYAQFyBRABGPoBSAGIAQESFQoIb3B0aW9uYWwYBCABKAhIAogBAUIICgZfbGFiZWxCDgoMX2Rlc2NyaXB0aW9uQgsKCV9vcHRpb25hbCLkAgoPVmFyaWFibGVTZXJ2aWNlEi0KBG5hbWUYASABKAlCH7pIHHIaEAEYZDIUXltfJGEtel1bXyRhLXowLTldKiQSHQoFbGFiZWwYAiABKAlCCbpIBnIEEAEYZEgAiAEBEicKC2Rlc2NyaXB0aW9uGAMgASgJQg26SArYAQFyBRABGPoBSAGIAQESSwoEdHlwZRgEIAEoDjIzLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlZhcmlhYmxlU2VydmljZS5UeXBlQgi6SAWCAQIgABIVCghvcHRpb25hbBgFIAEoCEgCiAEBIk8KBFR5cGUSFAoQVFlQRV9VTlNQRUNJRklFRBAAEg8KC1RZUEVfU0VDUkVUEAESDwoLVFlQRV9TVFJJTkcQAhIPCgtUWVBFX1NXSVRDSBADQggKBl9sYWJlbEIOCgxfZGVzY3JpcHRpb25CCwoJX29wdGlvbmFsIugMCg1PYXV0aDJTZXJ2aWNlEi0KBG5hbWUYASABKAlCH7pIHHIaEAEYZDIUXltfJGEtel1bXyRhLXowLTldKiQSIAoFbGFiZWwYAiABKAlCDLpICdgBAXIEEAEYZEgAiAEBEicKC2Rlc2NyaXB0aW9uGAMgASgJQg26SArYAQFyBRABGPoBSAGIAQESTAoKZ3JhbnRfdHlwZRgEIAEoDjIuLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLk9hdXRoMkdyYW50VHlwZUIIukgFggECIAASJQoGc2NvcGVzGAUgAygJQhW6SBKSAQ8IARD0AxgBIgZyBBABGGQSVAoLYXV0aF9tZXRob2QYBiABKA4yLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5PYXV0aDJBdXRoVHlwZUILukgI2AEBggECIABIAogBARJLCgNhbGcYByABKA4yLC5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5Qcml2YXRlS2V5QWxnQgu6SAjYAQGCAQIgAEgDiAEBEiUKCWNsaWVudF9pZBgIIAEoCUINukgK2AEBcgUQARj6AUgEiAEBElYKDnRva2VuX2VuZHBvaW50GAkgASgJQj66SDtyORALGIAgMjJeaHR0cHM6Ly9bYS16QS1aMC05Li1dKyg/OlwuW2EtekEtWl17Mix9KSg/Oi8uKik/JBI8CgRjb2RlGAogASgLMikubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuT2F1dGgyQ29kZUgFiAEBEhUKCG9wdGlvbmFsGAsgASgISAaIAQE6mge6SJYHGucBChJvYXV0aDIuYXV0aF9tZXRob2QShwFUaGUgYXV0aF9tZXRob2QgcHJvcGVydHkgbXVzdCBiZSBzZXQgaW4gY2FzZSBvZiBncmFudF90eXBlIE9BVVRIMl9HUkFOVF9UWVBFX0FVVEhPUklaQVRJT05fQ09ERSBvciBPQVVUSDJfR1JBTlRfVFlQRV9DTElFTlRfQ1JFREVOVElBTFMaR2hhcyh0aGlzLmF1dGhfbWV0aG9kKSA9PSAodGhpcy5ncmFudF90eXBlID09IDEgfHwgdGhpcy5ncmFudF90eXBlID09IDIpGsACCgpvYXV0aDIuYWxnEr4BVGhlIGFsZyBwcm9wZXJ0eSBtdXN0IGJlIHNldCBpbiBjYXNlIG9mIGdyYW50X3R5cGUgT0FVVEgyX0dSQU5UX1RZUEVfSldUX0JFQVJFUiwgT0FVVEgyX0dSQU5UX1RZUEVfU0FNTDJfQkVBUkVSIG9yIGF1dGhfbWV0aG9kIE9BVVRIMl9BVVRIX1RZUEVfUFJJVkFURV9LRVlfSldULCBPQVVUSDJfQVVUSF9UWVBFX1NBTUwyX0JFQVJFUhpxaGFzKHRoaXMuYWxnKSA9PSAodGhpcy5ncmFudF90eXBlID09IDMgfHwgdGhpcy5ncmFudF90eXBlID09IDQgfHwgdGhpcy5hdXRoX21ldGhvZCA9PSAzIHx8IHRoaXMuYXV0aF9tZXRob2QgPT0gNSkakQEKC29hdXRoMi5jb2RlElhUaGUgY29kZSBwcm9wZXJ0eSBtdXN0IGJlIHNldCBpbiBjYXNlIG9mIGdyYW50X3R5cGUgT0FVVEgyX0dSQU5UX1RZUEVfQVVUSE9SSVpBVElPTl9DT0RFGihoYXModGhpcy5jb2RlKSA9PSAodGhpcy5ncmFudF90eXBlID09IDEpGtIBCg9vYXV0aDIub3B0aW9uYWwSZlRoZSBvcHRpb25hbCBwcm9wZXJ0eSBjYW5ub3QgYmUgc2V0IHRvIHRydWUgaW4gY2FzZSBvZiBncmFudF90eXBlIE9BVVRIMl9HUkFOVF9UWVBFX0FVVEhPUklaQVRJT05fQ09ERRpXIWhhcyh0aGlzLm9wdGlvbmFsKSB8fCB0aGlzLmdyYW50X3R5cGUgIT0gMSB8fCAoIXRoaXMub3B0aW9uYWwgJiYgdGhpcy5ncmFudF90eXBlID09IDEpQggKBl9sYWJlbEIOCgxfZGVzY3JpcHRpb25CDgoMX2F1dGhfbWV0aG9kQgYKBF9hbGdCDAoKX2NsaWVudF9pZEIHCgVfY29kZUILCglfb3B0aW9uYWwiZgoRT2F1dGgyQ29kZUJpbmRpbmcSLQoEbmFtZRgBIAEoCUIfukgcchoQARhkMhReW18kYS16XVtfJGEtejAtOV0qJBIVCghvcHRpb25hbBgCIAEoCEgAiAEBQgsKCV9vcHRpb25hbCKWAwoKT2F1dGgyQ29kZRJVCg1hdXRoX2VuZHBvaW50GAEgASgJQj66SDtyORALGIAgMjJeaHR0cHM6Ly9bYS16QS1aMC05Li1dKyg/OlwuW2EtekEtWl17Mix9KSg/Oi8uKik/JBIaCgZpc3N1ZXIYAiABKAlCCrpIB3IFEAEYgCASUAoIandrc191cmkYAyABKAlCPrpIO3I5EAsYgCAyMl5odHRwczovL1thLXpBLVowLTkuLV0rKD86XC5bYS16QS1aXXsyLH0pKD86Ly4qKT8kEngKEWFkZGl0aW9uYWxfcGFyYW1zGAQgAygLMj8ubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuT2F1dGgyQ29kZS5BZGRpdGlvbmFsUGFyYW1zRW50cnlCHLpIGZoBFggAEDIiB3IFEAEY+gEqB3IFEAEY+gESEAoIdXNlX3BrY2UYBSABKAgaNwoVQWRkaXRpb25hbFBhcmFtc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEqSwoNUHJpdmF0ZUtleUFsZxIfChtQUklWQVRFX0tFWV9BTEdfVU5TUEVDSUZJRUQQABIZChVQUklWQVRFX0tFWV9BTEdfUlMyNTYQASrOAQoPT2F1dGgyR3JhbnRUeXBlEiEKHU9BVVRIMl9HUkFOVF9UWVBFX1VOU1BFQ0lGSUVEEAASKAokT0FVVEgyX0dSQU5UX1RZUEVfQVVUSE9SSVpBVElPTl9DT0RFEAESKAokT0FVVEgyX0dSQU5UX1RZUEVfQ0xJRU5UX0NSRURFTlRJQUxTEAISIAocT0FVVEgyX0dSQU5UX1RZUEVfSldUX0JFQVJFUhADEiIKHk9BVVRIMl9HUkFOVF9UWVBFX1NBTUwyX0JFQVJFUhAEKs0BCg5PYXV0aDJBdXRoVHlwZRIgChxPQVVUSDJfQVVUSF9UWVBFX1VOU1BFQ0lGSUVEEAASGgoWT0FVVEgyX0FVVEhfVFlQRV9CQVNJQxABEhkKFU9BVVRIMl9BVVRIX1RZUEVfRk9STRACEiQKIE9BVVRIMl9BVVRIX1RZUEVfUFJJVkFURV9LRVlfSldUEAMSGQoVT0FVVEgyX0FVVEhfVFlQRV9NVExTEAQSIQodT0FVVEgyX0FVVEhfVFlQRV9TQU1MMl9CRUFSRVIQBTKvAgoNUGx1Z2luU2VydmljZRKYAQoMVXBsb2FkUGx1Z2luEjIubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuVXBsb2FkUGx1Z2luUmVxdWVzdBozLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlVwbG9hZFBsdWdpblJlc3BvbnNlIh2C0+STAhc6ASoiEi92MS9wbHVnaW5zL3VwbG9hZCgBGoIBykEWYWRhcHQubW9jaGFidWdhcGlzLmNvbdJBZmh0dHBzOi8vd3d3Lm1vY2hhYnVnYXBpcy5jb20vYXV0aC9hZGFwdC9wbHVnaW5zLGh0dHBzOi8vd3d3Lm1vY2hhYnVnYXBpcy5jb20vYXV0aC9hZGFwdC9wbHVnaW5zLnVwbG9hZGIGcHJvdG8z",[Vo,Xo,Bo]),Nn=J(we,0);var ne=J(we,3),Mn=J(we,4);var Hn=Zo(we,0);import{execSync as Xa}from"child_process";import me from"fs";import{mkdirp as Sa}from"mkdirp";import S from"path";import Jo from"chalk";import ve from"fs";import{mkdirp as Va}from"mkdirp";import Ue from"path";import{fileURLToPath as Ca}from"url";function y(e){return ve.readFileSync(Ue.join(Ue.dirname(Ca(import.meta.url)),"..","assets",e)).toString()}function h(e,n){let t=Ue.dirname(e);Va.sync(t),ve.writeFileSync(e,n)}function ge(e){let n=Ue.resolve(e);if(!ve.existsSync(n))return console.error(Jo.red(`Invalid command: Manifest file not found at ${n}.`)),null;try{let t=ve.readFileSync(n).toString();return yo(ne,t)}catch(t){return console.error(Jo.red("An error occurred while reading the manifest")),console.error(t.message),null}}function ke(e){return(e.charAt(0).toUpperCase()+e.substring(1)).replace("_"," ")}function Ba(e){switch(e){case"action":return"VERTEX_TYPE_ACTION";case"cron-trigger":return"VERTEX_TYPE_CRON_TRIGGER";case"external-trigger":return"VERTEX_TYPE_EXTERNAL_TRIGGER";case"browser":return"VERTEX_TYPE_BROWSER";default:throw new Error("The node type is invalid")}}function De(e,n,t,o,s,a){let i=S.join(e,"src","vertices",n);if(me.existsSync(i))throw new Error(`The folder for the new vertex: ${i} already exists`);Sa.sync(i);let r=S.join(i,"executor.ts"),l={name:n,label:ke(n),description:`The better description of what ${n} is doing, the better it is for both AI and humans`,type:Ba(t),metadata:S.join("src","vertices",n,"metadata.json"),configurator:o,mtls:[],codeOauth2:[],oauth2:[],variables:[]};if(a==="react"){Xa("npm install react react-dom @types/react @types/react-dom",{cwd:e,stdio:"inherit"});let u=S.join(e,"src/vertices",n,"ui");o&&(h(S.join(u,"configurator.App.tsx"),y("configurator.App.tsx")),h(S.join(u,"configurator.main.tsx"),y("configurator.main.tsx")),h(S.join(u,"configurator.ssg.tsx"),y("configurator.ssg.tsx"))),t==="browser"&&(h(S.join(u,"executor.App.tsx"),y("executor.App.tsx")),h(S.join(u,"executor.main.tsx"),y("executor.main.tsx")),h(S.join(u,"executor.ssg.tsx"),y("executor.ssg.tsx"))),me.existsSync(S.join(e,"build-client.js"))||h(S.join(e,"build-client.js"),y("build-client.js"))}switch(l.type){case"VERTEX_TYPE_ACTION":h(r,y("executor_action.ts"));break;case"VERTEX_TYPE_BROWSER":a==="react"?h(r,y("executor_browser_react.tsx").replaceAll("___VERTEX_NAME___",n)):h(r,y("executor_browser_none.ts"));break;case"VERTEX_TYPE_EXTERNAL_TRIGGER":h(r,y("executor_external_trigger.ts"));break;case"VERTEX_TYPE_CRON_TRIGGER":h(r,y("executor_cron_trigger.ts"));break;default:throw new Error("The vertex type is invalid")}me.writeFileSync(S.join(e,"src","executors.ts"),Wo([n,...s.map(u=>u.name)],"ExecutorEnvironment"));let d={complete:!0,receivers:[{name:"input",description:"Default input receiver",bindings:[]}],transmitters:[{name:"output",description:"Default output transmitter",signals:[],failure:!1}],procedures:[],streams:[]};return l.type==="VERTEX_TYPE_CRON_TRIGGER"&&(d.cronSchedule="/5 * * * * *"),o&&(a==="react"?h(S.join(i,"configurator.ts"),y("configurator_react.tsx").replaceAll("___VERTEX_NAME___",n)):h(S.join(i,"configurator.ts"),y("configurator_none.ts")),d.complete=!1,me.writeFileSync(S.join(e,"src","configurators.ts"),Wo([n,...s.filter(u=>u.configurator).map(u=>u.name)],"ConfiguratorEnvironment"))),me.writeFileSync(S.join(i,"metadata.json"),JSON.stringify(d,null,2)),l}function Wo(e,n){let t=e.map(o=>`import ${o} from './vertices/${o}/${n==="ExecutorEnvironment"?"executor":"configurator"}';`).join(`
4
4
  `);return`/**
5
5
  * ---------------------------------------------------------------------------
@@ -22,7 +22,7 @@ export default {
22
22
  async fetch(req: Request, env: ${n}, ctx: ExecutionContext): Promise<Response> {
23
23
  return await selectVertex(req, env, ctx, { ${e.join(", ")} });
24
24
  },
25
- };`}async function Ro(e){let n=await Wa({message:"Type a new unused vertex name",transformer:i=>i.trim(),validate:i=>(i=i.trim(),e.vertices.filter(r=>r.name===i).length>0?!1:/^[_a-z][_a-z0-9]*$/.test(i))}),t=await xo({message:"Choose your vertex type",choices:[{name:"action",value:"action",description:"An action is a vertex that performs a task, such as sending an email or updating a database."},{name:"browser",value:"browser",description:"A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button."},{name:"cron-trigger",value:"cron-trigger",description:"A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM."},{name:"external-trigger",value:"external-trigger",description:"An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue."}]}),o=await Ja({message:"Need a configurator for the vertex?"}),s;(o||t==="browser")&&(s=await xo({message:"Choose frontend library",choices:[{name:"React",value:"react",description:"React with TypeScript"},{name:"None",value:"none",description:"I do it myself"}]})),console.log(zn.magenta("Creating new vertex templates..."));let a=De(".",n,t,o,e.vertices.map(i=>Jn(Mn,i)),s);e.vertices.push(Rn(Mn,a)),!e.configurators&&a.configurator&&(e.configurators="dist/configurators.js"),console.log(zn.magenta("Updating manifest...")),xa.writeFileSync("manifest.json",Me(ne,e,{enumAsInteger:!1,prettySpaces:2})),console.log(zn.bgGreen("Success"))}import{confirm as Ra,input as Fo,select as Eo}from"@inquirer/prompts";import Yo from"chalk";import{execSync as No}from"child_process";import Fa from"fs";import{mkdirp as Mo}from"mkdirp";import E from"path";async function Ho(e){let n=await Fo({message:"Type plugin name",transformer:u=>u.trim().toLowerCase(),validate:u=>/^[_a-z][_a-z0-9]*$/.test(u)}),t=await Eo({message:"Choose your vertex type",choices:[{name:"action",value:"action",description:"An action is a vertex that performs a task, such as sending an email or updating a database."},{name:"browser",value:"browser",description:"A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button."},{name:"cron-trigger",value:"cron-trigger",description:"A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM."},{name:"external-trigger",value:"external-trigger",description:"An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue."}]}),o=await Fo({message:"Type a new unused vertex name",transformer:u=>u.trim().toLowerCase(),validate:u=>/^[_a-z][_a-z0-9]*$/.test(u)}),s=await Ra({message:"Need a configurator for the vertex?"}),a;(s||t==="browser")&&(a=await Eo({message:"Choose frontend library",choices:[{name:"React",value:"react",description:"React with TypeScript"},{name:"None",value:"none",description:"I do it myself"}]})),Mo.sync(e);let i=E.isAbsolute(e)?e:E.join(process.cwd(),e);h(E.join(i,".gitignore"),y("gitignore"));let r={name:n,version:"",private:!0,type:"module",scripts:{"build-client":`node -e "if(require('fs').existsSync('build-client.js')) require('child_process').execSync('node build-client.js', { stdio: 'inherit' })"`,"build-common":"rimraf dist && npm run build-client && node build.js","build-dev":"export PLUGINS_CDN=https://cdn-dev.mochabug.com/adapt/plugins && npm run build-common","build-prod":"export PLUGINS_CDN=https://cdn.mochabug.com/adapt/plugins && npm run build-common","build-emulate":"export PLUGINS_CDN=http://localhost:51002 && npm run build-common",build:"npm run build-dev",emulate:"npm run build-emulate && adaptkit emulate",add:"adaptkit add"},devDependencies:{unenv:"npm:unenv-nightly@*"}};h(E.join(i,"package.json"),JSON.stringify(r,null,2)),h(E.join(i,"README.md"),y("readme.md")),h(E.join(i,"LICENSE.md"),y("license.md")),No("npm install --save-dev @mochabug/adapt-plugin-typings typescript @cloudflare/unenv-preset @types/node esbuild rimraf glob",{cwd:i,stdio:"inherit"}),No("npm install @mochabug/adapt-plugin-toolkit",{cwd:i,stdio:"inherit"}),h(E.join(i,"global.d.ts"),y("global.d.ts")),h(E.join(i,"tsconfig.json"),y("tsconf.json")),h(E.join(i,"build.js"),y("build.js")),h(E.join(i,"inject.js"),y("inject.js"));let l=De(i,o,t,s,[],a);console.log(Yo.magenta("Creating manifest..."));let d={name:n,organization:"00000000-0000-0000-0000-000000000000",version:"0.1.0",label:ke(n),description:`A nice description of what ${n} does`,author:"John Doe",bugs:"bugs@foobar.com",homepage:"https://www.foobar.com",repository:"https://github.com",vertices:[l],executors:"dist/executors.js",pluginVariables:[],pluginOauth2:[],pluginMtls:[]};if(a==="react"&&(Mo.sync(E.join(e,"cdn")),d.cdn="cdn"),!l.metadata)throw new Error("This cannot happen");l.configurator&&(d.configurators="dist/configurators.js"),Fa.writeFileSync(E.join(i,"manifest.json"),JSON.stringify(d,null,2)),console.log(Yo.bgGreen("Success"))}import zo from"chalk";import{randomBytes as Ea}from"crypto";import Ya from"express";import Na from"node-fetch";import Ma from"open";import Ha from"pkce-challenge";var za=51421,Ka=5,La="https://www.mochabugapis.com/auth/adapt/plugins.upload",wa="https://adapt-dev.mochabugapis.com";function va({clientId:e,redirectUri:n,scope:t,state:o,authUrl:s,codeChallenge:a,audience:i}){let r=new URL(s);return r.searchParams.set("response_type","code"),r.searchParams.set("client_id",e),r.searchParams.set("audience",i),r.searchParams.set("redirect_uri",n),r.searchParams.set("scope",t),r.searchParams.set("state",o),r.searchParams.set("code_challenge",a),r.searchParams.set("code_challenge_method","S256"),r.toString()}function Ua({redirectUri:e,codeVerifier:n,clientId:t,code:o}){let s=new URLSearchParams;return s.set("grant_type","authorization_code"),s.set("code_verifier",n),s.set("client_id",t),s.set("code",o),s.set("redirect_uri",e),s.toString()}function Ko(e,n=0){return new Promise((t,o)=>{let s=za+n,a=e.listen(s,()=>{console.log(zo.green.bold(`Server running on http://localhost:${s} to listen to OAuth2 callbacks`)),t({server:a,port:s})});a.on("error",i=>{i.code==="EADDRINUSE"&&n<Ka-1?(console.log(zo.yellow.bold(`Port ${s} is in use, trying next available port.`)),a.close(),t(Ko(e,n+1))):o(i)})})}var Z="[waitForConsent]";async function Lo(e,n,t){console.info(`${Z} Starting OAuth2 consent workflow for client: ${t}`);let o=`${e}/oauth2/auth`,s=`${e}/oauth2/token`;console.info(`${Z} Authorization URL: ${o}`),console.info(`${Z} Token URL: ${s}`);let a=Ya(),i=Ea(32).toString("hex");console.info(`${Z} Generated state for CSRF protection`);let r={base:"",redirect:""},{code_verifier:l,code_challenge:d}=await Ha();console.info(`${Z} PKCE Challenge generated`);let u,I,W,x=new Promise((G,R)=>{u=G,I=R});a.get("/",async(G,R)=>{let Qe=va({authUrl:o,clientId:t,redirectUri:r.redirect,scope:La,state:i,codeChallenge:d,audience:wa});console.info(`${Z} Redirecting to code URL for user consent`),R.redirect(Qe)}),a.get("/callback",async(G,R)=>{if("error"in G.query){console.error(`${Z} OAuth Error: error in callback`);let z=G.url.split("?")[1];R.redirect(`${n}?${z}`),I();return}if(G.query.state!==i){console.error(`${Z} OAuth Error: Invalid state. Received state does not match.`);let z=encodeURIComponent("Invalid state parameter.");R.redirect(`${n}?error=invalid_request&error_description=${z}`),I();return}console.info(`${Z} OAuth state validated`);let Qe=Ua({clientId:t,redirectUri:r.redirect,codeVerifier:l,code:G.query.code});try{console.info(`${Z} Exchanging code for token`);let z=await Na(s,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:Qe});if(!z.ok){console.error(`${Z} OAuth Error: could not exchange code for token`);let _o=z.url.split("?")[1];R.redirect(`${n}?${_o}`),I();return}let pe=await z.json();console.info(`${Z} Token exchange successful`),console.info(`${Z} Token exchange successful. Details: `,{expires_in:pe.expires_in,scope:pe.scope,type:pe.token_type,token:"<secret>"}),W=pe.access_token,R.redirect("/success")}catch(z){console.error(`${Z} Error exchanging token: ${z}`),R.redirect(`${n}?error=unkown&error_description=${encodeURIComponent("Unknown error during token exchange")}`),I()}}),a.get("/success",(G,R)=>{R.send(y("success_page.html")),W||(console.error("Token is undefined"),I()),u()});let v;try{console.info(`${Z} Starting local server to handle callbacks`);let G=await Ko(a);v=G.server,r.base=`http://localhost:${G.port}`,r.redirect=`${r.base}/callback`,console.info(`${Z} Server started on ${r.base}`)}catch(G){console.error(`${Z} Error starting server: ${G}`);return}try{return console.info(`${Z} Opening user consent page`),await Ma(r.base),console.info(`${Z} Waiting for user consent...`),await x,console.info(`${Z} OAuth consent workflow completed successfully`),W||console.error("Token is undefined"),W}catch(G){console.error(`${Z} Error in OAuth2 flow: ${G}`);return}finally{console.info(`${Z} Closing the server...`),v.closeAllConnections(),v.close(),console.info(`${Z} Server closed`)}}import{ConnectError as vo,createClient as Uo}from"@connectrpc/connect";import{createGrpcTransport as ko}from"@connectrpc/connect-node";import ka from"archiver";import m from"chalk";import Da from"fast-glob";import k from"fs";import te from"path";import be from"sharp";import{PassThrough as Qa}from"stream";async function Ta(e,n,t){switch(te.extname(e)){case".avif":return await be(e).resize(n,t).avif().toBuffer();case".gif":return await be(e).resize(n,t).gif().toBuffer();case".jpg":case".jpeg":case".jfif":case".pjpeg":case".pjp":return await be(e).resize(n,t).jpeg().toBuffer();case".png":return await be(e).resize(n,t).png().toBuffer();case".svg":return k.readFileSync(e);case".webp":return await be(e).resize(n,t).webp().toBuffer()}throw new Error("Invalid logotype")}function Pa(e){let n=te.resolve(".");return te.resolve(e).startsWith(n)}function _a(e){try{let n=te.resolve(e);return k.existsSync(n)?k.statSync(n).isDirectory():!1}catch(n){return console.error("Error checking if folder exists:",n),!1}}function wo(e){return new Promise((n,t)=>{_a(e)||t(`The folder ${e} does not exist`);let o=ka("tar",{gzip:!0,zlib:{level:9}});o.on("error",i=>{t(i)});let s=[],a=new Qa;a.on("data",i=>s.push(i)),a.on("end",()=>{let i=Buffer.concat(s);console.log(`${e} have been compressed successfully into a buffer.`),n(i)}),o.pipe(a),Da(te.join(e,"**","*")).then(i=>{for(let r of i)if(k.statSync(r).isFile()){let l=te.relative(e,r);o.file(r,{name:l})}o.finalize()}).catch(i=>t(i))})}async function Do(e,n,t){let o={};async function s(r,l,d){if(!r||o[r])return;if(!Pa(r))throw new Error(`The file path is not safe: ${r}. It must be contained inside the manifest folder. Invalid manifest`);if(!k.existsSync(r))throw new Error(`The path does not exists: ${r}. Invalid manifest`);let u;return l?(u=await Ta(r,l[0],l[1]),console.log(`Compressed: ${r} to ${l[0]}x${l[1]} size`)):d?u=d:u=k.readFileSync(r),o[r]=!0,r==e.cdn&&(r="cdn.tar.gz"),r==e.assets&&(r="assets.tar.gz"),B(Nn,{data:{case:"file",value:{data:u,path:r}}})}let a=new Headers,i=new Headers;await n.uploadPlugin(async function*(){yield B(Nn,{data:{case:"manifest",value:e}});let r=[s("README.md"),s("LICENSE.md"),s(e.executors),s(e.configurators),s(e.logo,[80,80])];e.assets&&k.existsSync(e.assets)&&r.push(s(e.assets,void 0,await wo(e.assets))),e.cdn&&k.existsSync(e.cdn)&&r.push(s(e.cdn,void 0,await wo(e.cdn)));for(let l of e.vertices)r.push(s(l.logo,[40,40])),r.push(s(l.metadata)),l.config&&r.push(s(l.config));for await(let l of r)l&&(yield l)}(),{headers:t,onHeader:r=>{i=r},onTrailer:r=>{a=r}}),Oa(i,a)}async function Qo(e,n){let t=Uo(Hn,ko({baseUrl:n}));try{await Do(e,t)}catch(o){o instanceof vo?Po(o):console.error(o),console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`)}}async function To(e,n,t,o){let s=Uo(Hn,ko({baseUrl:n})),a=new Headers({authorization:`Bearer ${t}`});try{await Do(e,s,a)}catch(i){i instanceof vo?Po(i):console.error(i),console.log(`For more information, use: ${m.blue("adaptkit help publish")}`)}}function Oa(e,n){let t=m.green("=================================================="),o=m.bgGreen.black.bold(" RPC Success Details "),s=m.bold.white("Status Code: ")+m.greenBright.bold("OK"),a=m.bold.white("Details: ")+m.greenBright("The upload was successful"),i=m.bold.white(`Headers:
25
+ };`}async function Ro(e){let n=await Wa({message:"Type a new unused vertex name",transformer:i=>i.trim(),validate:i=>(i=i.trim(),e.vertices.filter(r=>r.name===i).length>0?!1:/^[_a-z][_a-z0-9]*$/.test(i))}),t=await xo({message:"Choose your vertex type",choices:[{name:"action",value:"action",description:"An action is a vertex that performs a task, such as sending an email or updating a database."},{name:"browser",value:"browser",description:"A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button."},{name:"cron-trigger",value:"cron-trigger",description:"A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM."},{name:"external-trigger",value:"external-trigger",description:"An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue."}]}),o=await Ja({message:"Need a configurator for the vertex?"}),s;(o||t==="browser")&&(s=await xo({message:"Choose frontend library",choices:[{name:"React",value:"react",description:"React with TypeScript"},{name:"None",value:"none",description:"I do it myself"}]})),console.log(zn.magenta("Creating new vertex templates..."));let a=De(".",n,t,o,e.vertices.map(i=>Jn(Mn,i)),s);e.vertices.push(Rn(Mn,a)),!e.configurators&&a.configurator&&(e.configurators="dist/configurators.js"),console.log(zn.magenta("Updating manifest...")),xa.writeFileSync("manifest.json",Me(ne,e,{enumAsInteger:!1,prettySpaces:2})),console.log(zn.bgGreen("Success"))}import{confirm as Ra,input as Fo,select as Eo}from"@inquirer/prompts";import Yo from"chalk";import{execSync as No}from"child_process";import Fa from"fs";import{mkdirp as Mo}from"mkdirp";import E from"path";async function Ho(e){let n=await Fo({message:"Type plugin name",transformer:u=>u.trim().toLowerCase(),validate:u=>/^[_a-z][_a-z0-9]*$/.test(u)}),t=await Eo({message:"Choose your vertex type",choices:[{name:"action",value:"action",description:"An action is a vertex that performs a task, such as sending an email or updating a database."},{name:"browser",value:"browser",description:"A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button."},{name:"cron-trigger",value:"cron-trigger",description:"A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM."},{name:"external-trigger",value:"external-trigger",description:"An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue."}]}),o=await Fo({message:"Type a new unused vertex name",transformer:u=>u.trim().toLowerCase(),validate:u=>/^[_a-z][_a-z0-9]*$/.test(u)}),s=await Ra({message:"Need a configurator for the vertex?"}),a;(s||t==="browser")&&(a=await Eo({message:"Choose frontend library",choices:[{name:"React",value:"react",description:"React with TypeScript"},{name:"None",value:"none",description:"I do it myself"}]})),Mo.sync(e);let i=E.isAbsolute(e)?e:E.join(process.cwd(),e);h(E.join(i,".gitignore"),y("gitignore"));let r={name:n,version:"",private:!0,type:"module",scripts:{"build-client":`node -e "if(require('fs').existsSync('build-client.js')) require('child_process').execSync('node build-client.js', { stdio: 'inherit' })"`,"build-common":"rimraf dist && npm run build-client && node build.js","build-dev":"export PLUGINS_CDN=https://cdn-dev.mochabug.com/adapt/plugins && npm run build-common","build-prod":"export PLUGINS_CDN=https://cdn.mochabug.com/adapt/plugins && npm run build-common","build-emulate":"export PLUGINS_CDN=http://localhost:51002 && npm run build-common",build:"npm run build-dev",emulate:"npm run build-emulate && adaptkit emulate",add:"adaptkit add"},devDependencies:{unenv:"npm:unenv-nightly@*"}};h(E.join(i,"package.json"),JSON.stringify(r,null,2)),h(E.join(i,"README.md"),y("readme.md")),h(E.join(i,"LICENSE.md"),y("license.md")),No("npm install --save-dev @mochabug/adapt-plugin-typings typescript @cloudflare/unenv-preset @types/node esbuild rimraf glob",{cwd:i,stdio:"inherit"}),No("npm install @mochabug/adapt-plugin-toolkit",{cwd:i,stdio:"inherit"}),h(E.join(i,"global.d.ts"),y("global.d.ts")),h(E.join(i,"tsconfig.json"),y("tsconf.json")),h(E.join(i,"build.js"),y("build.js")),h(E.join(i,"inject.js"),y("inject.js"));let l=De(i,o,t,s,[],a);console.log(Yo.magenta("Creating manifest..."));let d={name:n,organization:"00000000-0000-0000-0000-000000000000",version:"0.1.0",label:ke(n),description:`A nice description of what ${n} does`,author:"John Doe",bugs:"bugs@foobar.com",homepage:"https://www.foobar.com",repository:"https://github.com",vertices:[l],executors:"dist/executors.js",pluginVariables:[],pluginOauth2:[],pluginMtls:[]};if(a==="react"&&(Mo.sync(E.join(e,"cdn")),d.cdn="cdn"),!l.metadata)throw new Error("This cannot happen");l.configurator&&(d.configurators="dist/configurators.js"),Fa.writeFileSync(E.join(i,"manifest.json"),JSON.stringify(d,null,2)),console.log(Yo.bgGreen("Success"))}import zo from"chalk";import{randomBytes as Ea}from"crypto";import Ya from"express";import Na from"node-fetch";import Ma from"open";import Ha from"pkce-challenge";var za=51421,Ka=5,La="https://www.mochabugapis.com/auth/adapt/plugins.upload",wa="https://adapt-dev.mochabugapis.com";function va({clientId:e,redirectUri:n,scope:t,state:o,authUrl:s,codeChallenge:a,audience:i}){let r=new URL(s);return r.searchParams.set("response_type","code"),r.searchParams.set("client_id",e),r.searchParams.set("audience",i),r.searchParams.set("redirect_uri",n),r.searchParams.set("scope",t),r.searchParams.set("state",o),r.searchParams.set("code_challenge",a),r.searchParams.set("code_challenge_method","S256"),r.toString()}function Ua({redirectUri:e,codeVerifier:n,clientId:t,code:o}){let s=new URLSearchParams;return s.set("grant_type","authorization_code"),s.set("code_verifier",n),s.set("client_id",t),s.set("code",o),s.set("redirect_uri",e),s.toString()}function Ko(e,n=0){return new Promise((t,o)=>{let s=za+n,a=e.listen(s,()=>{console.log(zo.green.bold(`Server running on http://localhost:${s} to listen to OAuth2 callbacks`)),t({server:a,port:s})});a.on("error",i=>{i.code==="EADDRINUSE"&&n<Ka-1?(console.log(zo.yellow.bold(`Port ${s} is in use, trying next available port.`)),a.close(),t(Ko(e,n+1))):o(i)})})}var Z="[waitForConsent]";async function Lo(e,n,t){console.info(`${Z} Starting OAuth2 consent workflow for client: ${t}`);let o=`${e}/oauth2/auth`,s=`${e}/oauth2/token`;console.info(`${Z} Authorization URL: ${o}`),console.info(`${Z} Token URL: ${s}`);let a=Ya(),i=Ea(32).toString("hex");console.info(`${Z} Generated state for CSRF protection`);let r={base:"",redirect:""},{code_verifier:l,code_challenge:d}=await Ha();console.info(`${Z} PKCE Challenge generated`);let u,I,W,x=new Promise((G,R)=>{u=G,I=R});a.get("/",async(G,R)=>{let Qe=va({authUrl:o,clientId:t,redirectUri:r.redirect,scope:La,state:i,codeChallenge:d,audience:wa});console.info(`${Z} Redirecting to code URL for user consent`),R.redirect(Qe)}),a.get("/callback",async(G,R)=>{if("error"in G.query){console.error(`${Z} OAuth Error: error in callback`);let z=G.url.split("?")[1];R.redirect(`${n}?${z}`),I();return}if(G.query.state!==i){console.error(`${Z} OAuth Error: Invalid state. Received state does not match.`);let z=encodeURIComponent("Invalid state parameter.");R.redirect(`${n}?error=invalid_request&error_description=${z}`),I();return}console.info(`${Z} OAuth state validated`);let Qe=Ua({clientId:t,redirectUri:r.redirect,codeVerifier:l,code:G.query.code});try{console.info(`${Z} Exchanging code for token`);let z=await Na(s,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:Qe});if(!z.ok){console.error(`${Z} OAuth Error: could not exchange code for token`);let _o=z.url.split("?")[1];R.redirect(`${n}?${_o}`),I();return}let pe=await z.json();console.info(`${Z} Token exchange successful`),console.info(`${Z} Token exchange successful. Details: `,{expires_in:pe.expires_in,scope:pe.scope,type:pe.token_type,token:"<secret>"}),W=pe.access_token,R.redirect("/success")}catch(z){console.error(`${Z} Error exchanging token: ${z}`),R.redirect(`${n}?error=unkown&error_description=${encodeURIComponent("Unknown error during token exchange")}`),I()}}),a.get("/success",(G,R)=>{R.send(y("success_page.html")),W||(console.error("Token is undefined"),I()),u()});let v;try{console.info(`${Z} Starting local server to handle callbacks`);let G=await Ko(a);v=G.server,r.base=`http://localhost:${G.port}`,r.redirect=`${r.base}/callback`,console.info(`${Z} Server started on ${r.base}`)}catch(G){console.error(`${Z} Error starting server: ${G}`);return}try{return console.info(`${Z} Opening user consent page`),await Ma(r.base),console.info(`${Z} Waiting for user consent...`),await x,console.info(`${Z} OAuth consent workflow completed successfully`),W||console.error("Token is undefined"),W}catch(G){console.error(`${Z} Error in OAuth2 flow: ${G}`);return}finally{console.info(`${Z} Closing the server...`),v.closeAllConnections(),v.close(),console.info(`${Z} Server closed`)}}import{ConnectError as vo,createClient as Uo}from"@connectrpc/connect";import{createGrpcTransport as ko}from"@connectrpc/connect-node";import ka from"archiver";import m from"chalk";import Da from"fast-glob";import k from"fs";import te from"path";import be from"sharp";import{PassThrough as Qa}from"stream";async function Ta(e,n,t){switch(te.extname(e)){case".avif":return await be(e).resize(n,t).avif().toBuffer();case".gif":return await be(e).resize(n,t).gif().toBuffer();case".jpg":case".jpeg":case".jfif":case".pjpeg":case".pjp":return await be(e).resize(n,t).jpeg().toBuffer();case".png":return await be(e).resize(n,t).png().toBuffer();case".svg":return k.readFileSync(e);case".webp":return await be(e).resize(n,t).webp().toBuffer()}throw new Error("Invalid logotype")}function Pa(e){let n=te.resolve(".");return te.resolve(e).startsWith(n)}function _a(e){try{let n=te.resolve(e);return k.existsSync(n)?k.statSync(n).isDirectory():!1}catch(n){return console.error("Error checking if folder exists:",n),!1}}function wo(e){return new Promise((n,t)=>{_a(e)||t(`The folder ${e} does not exist`);let o=ka("tar",{gzip:!0,zlib:{level:9}});o.on("error",i=>{t(i)});let s=[],a=new Qa;a.on("data",i=>s.push(i)),a.on("end",()=>{let i=Buffer.concat(s);console.log(`${e} have been compressed successfully into a buffer.`),n(i)}),o.pipe(a),Da(te.join(e,"**","*")).then(i=>{for(let r of i)if(k.statSync(r).isFile()){let l=te.relative(e,r);o.file(r,{name:l})}o.finalize()}).catch(i=>t(i))})}async function Do(e,n,t){let o={};async function s(r,l,d){if(!r||o[r])return;if(!Pa(r))throw new Error(`The file path is not safe: ${r}. It must be contained inside the manifest folder. Invalid manifest`);if(!k.existsSync(r))throw new Error(`The path does not exists: ${r}. Invalid manifest`);let u;return l?(u=await Ta(r,l[0],l[1]),console.log(`Compressed: ${r} to ${l[0]}x${l[1]} size`)):d?u=d:u=k.readFileSync(r),o[r]=!0,B(Nn,{data:{case:"file",value:{data:u,path:r}}})}let a=new Headers,i=new Headers;await n.uploadPlugin(async function*(){yield B(Nn,{data:{case:"manifest",value:e}});let r=[s("README.md"),s("LICENSE.md"),s(e.executors),s(e.configurators),s(e.logo,[80,80])];e.assets&&k.existsSync(e.assets)&&r.push(s(e.assets,void 0,await wo(e.assets))),e.cdn&&k.existsSync(e.cdn)&&r.push(s(e.cdn,void 0,await wo(e.cdn)));for(let l of e.vertices)r.push(s(l.logo,[40,40])),r.push(s(l.metadata)),l.config&&r.push(s(l.config));for await(let l of r)l&&(yield l)}(),{headers:t,onHeader:r=>{i=r},onTrailer:r=>{a=r}}),Oa(i,a)}async function Qo(e,n){let t=Uo(Hn,ko({baseUrl:n}));try{await Do(e,t)}catch(o){o instanceof vo?Po(o):console.error(o),console.log(`For more information, use: ${m.blue("adaptkit help emulate")}`)}}async function To(e,n,t,o){let s=Uo(Hn,ko({baseUrl:n})),a=new Headers({authorization:`Bearer ${t}`});try{await Do(e,s,a)}catch(i){i instanceof vo?Po(i):console.error(i),console.log(`For more information, use: ${m.blue("adaptkit help publish")}`)}}function Oa(e,n){let t=m.green("=================================================="),o=m.bgGreen.black.bold(" RPC Success Details "),s=m.bold.white("Status Code: ")+m.greenBright.bold("OK"),a=m.bold.white("Details: ")+m.greenBright("The upload was successful"),i=m.bold.white(`Headers:
26
26
  `)+(e?m.blue(JSON.stringify(e,null,2)):m.gray(" No Metadata")),r=m.bold.white(`Trailers:
27
27
  `)+(n?m.blue(JSON.stringify(n,null,2)):m.gray(" No Trailers"));console.log(t),console.log(o),console.log(t),console.log(s),console.log(a),console.log(t),console.log(i),console.log(t),console.log(r),console.log(t),console.log(m.bgGreen.black.bold(" SUCCESS ")),console.log(t)}function Po(e){let n=m.red("=================================================="),t=m.bgRed.white.bold(" RPC Error Details "),o=m.bold.white("Name: ")+m.redBright.bold(e.name),s=m.bold.white("Message: ")+m.redBright(e.message),a=m.bold.white("Code: ")+m.redBright.bold(e.code),i=e.methodName?m.bold.white("Method Name: ")+m.yellowBright(e.methodName):m.gray("No Method Name"),r=e.serviceName?m.bold.white("Service Name: ")+m.yellowBright(e.serviceName):m.gray("No Service Name"),l=m.bold.white(`Metadata:
28
28
  `)+(e.metadata?m.blue(JSON.stringify([...e.metadata.entries()],null,2)):m.gray(" No Metadata"));console.error(n),console.error(t),console.error(n),console.error(o),console.error(s),console.error(a),console.error(n),i&&console.error(i),r&&console.error(r),console.error(n),console.error(l),console.error(n);let d=e.details;if(console.error(m.bold.white("Error Details:")),d.length===0)console.error(m.gray(" No error details"));else for(let u of d)console.error(m.red(JSON.stringify(u,null,2)));console.error(n),console.error(m.bgRed.white.bold(" ERROR ")),console.error(n)}async function Kn(e){try{return new URL(e),!0}catch{return!1}}function ti(){return b.yellowBright(ja.textSync("Adaptkit"))}async function oi(e,n){n.args.length>=1&&(console.error(b.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${b.blue("adaptkit help init")}`),process.exit(1)),await Ho(e)}async function si(e){e.args.length>=1&&(console.error(b.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${b.blue("adaptkit help add")}`),process.exit(1));let n=ge("manifest.json");n||(console.log(`For more information, use: ${b.blue("adaptkit help add")}`),process.exit(1)),await Ro(n)}async function ai(e,n,t,o,s,a){await Kn(n)||(console.error(b.red(`Error: The provided authority url is not a valid URL: ${n}`)),console.log(`For more information, use: ${b.blue("adaptkit help publish")}`),process.exit(1)),await Kn(e)||(console.error(b.red(`Error: The provided endpoint is not valid: ${e}`)),console.log(`For more information, use: ${b.blue("adaptkit help publish")}`),process.exit(1)),a.args.length>=1&&(console.error(b.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${b.blue("adaptkit help publish")}`),process.exit(1));let i=ge("manifest.json");i||(console.log(`For more information, use: ${b.blue("adaptkit help publish")}`),process.exit(1)),o&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0");let r=await Lo(n,s,t);r||(console.log("Could not fetch the acccess token. Terminating..."),process.exit(1)),await To(i,e,r,o)}async function ii(e,n){await Kn(e)||(console.error(b.red(`Error: The provided endpoint is not valid: ${e}`)),console.log(`For more information, use: ${b.blue("adaptkit help emulate")}`),process.exit(1)),n.args.length>=1&&(console.error(b.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${b.blue("adaptkit help emulate")}`),process.exit(1));let t=ge("manifest.json");t||(console.log(`For more information, use: ${b.blue("adaptkit help emulate")}`),process.exit(1)),await Qo(t,e)}function ri(e,n){n.args.length>=1&&(console.error(b.red("Error: Invalid sub-command or arguments provided.")),console.log(`For more information, use: ${b.blue("adaptkit help version")}`),process.exit(1));let t=ge("manifest.json");t||(console.log(`For more information, use: ${b.blue("adaptkit help version")}`),process.exit(1));let o=ei.parse(t.version);o||(console.error(b.red(`Error: The version in the manifest is not a valid semver version: ${t.version}`)),console.log(`For more information, use: ${b.blue("adaptkit help version")}`),process.exit(1)),e===null&&(console.error(b.red("You must provide either --patch --minor or --major to bump the version.")),console.log(`For more information, use: ${b.blue("adaptkit help version")}`),process.exit(1));let s=t.version;t.version=o.inc(e).toString(),$a.writeFileSync(qa.join(process.cwd(),"manifest.json"),Me(ne,t,{enumAsInteger:!1,prettySpaces:2})),console.log(b.green(`Bumped the version from ${s} to ${t.version}`))}async function ci(){ni({pkg:g}).notify({isGlobal:!0,defer:!1}),w.name("Adaptkit").version("1.0.0").description("Unleash the power of seamless plugin development with Adaptkit, your premier CLI companion for Mochabug Adapt. Effortlessly create, manage and deploy plugins with finesse. Explore the full potential of Adaptkit at "+b.underline.blue("https://www.mochabug.com")).configureHelp({sortSubcommands:!0,sortOptions:!0,showGlobalOptions:!0,helpWidth:140});let n="./";w.command("init").option("-d, --dir <dir>",`Choose the directory to initiate your plugin's journey. Default: '${n}'`,n).description("Kickstart your plugin adventure. This command scaffolds a ready-to-go project structure.").action(({dir:t},o)=>oi(t,o)),w.command("add").description("Expand your plugin's capabilities").action((t,o)=>si(o)),w.command("publish").option("-e, --endpoint <url>","URL of the gRPC server (including protocol)","https://adapt-grpc-dev.mochabugapis.com").option("-a, --authority <authority>",b.yellow("Warning: Primarily for development purposes"),"https://auth-dev.mochabugapis.com").option("-c, --client <client>",b.yellow("Warning: Primarily for development purposes"),"2d711bbb-4b57-4ad5-8bf0-f2269de5b71d").option("--error-url <errorUrl>",b.yellow("Warning: Primarily for development purposes"),"https://accounts-dev.mochabug.com/services/error").option("--insecure",b.red("Ignore SSL certificate errors (insecure)")).description("Ready for liftoff? Publish your plugin to your organization with this command.").action(({endpoint:t,authority:o,client:s,insecure:a,errorUrl:i},r)=>ai(t,o,s,a,i,r)),w.command("emulate").option("-e, --endpoint <url>","URL of the emulator server (including protocol)","http://localhost:51001").description("Take your plugin for a test drive. Best used in conjunction with your build pipeline.").action(({endpoint:t},o)=>ii(t,o)),w.command("version").option("--patch","Bump the manifest version to the next patch version").option("--minor","Bump the manifest version to the next minor version").option("--major","Bump the manifest version to the next major version").description("The version command can manipulate the version of the plugin manifest.").action(({major:t,minor:o,patch:s},a)=>ri(t?"major":o?"minor":s?"patch":null,a)),w.addHelpText("beforeAll",ti()+`