@tailor-platform/sdk 2.20.0 → 2.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +69 -0
- package/agent-skills/tailor/SKILL.md +3 -1
- package/dist/application-BE4vehXW.mjs +1 -0
- package/dist/application-BzO9ywXQ.mjs +199 -0
- package/dist/application-BzO9ywXQ.mjs.map +1 -0
- package/dist/cli/commands/deploy/app-id-lock.d.mts +31 -0
- package/dist/cli/lib.d.mts +2 -2
- package/dist/cli/lib.mjs +1 -1
- package/dist/cli/lib.mjs.map +1 -1
- package/dist/cli/main.d.mts +1 -0
- package/dist/cli/main.mjs +42 -42
- package/dist/cli/main.mjs.map +1 -1
- package/dist/cli/shared/logger.d.mts +9 -0
- package/dist/cli/shared/tailordb-namespaces.d.mts +1 -1
- package/dist/completion/zsh-worker.zsh +654 -131
- package/dist/configure/config/index.d.mts +2 -0
- package/dist/configure/index.d.mts +2 -1
- package/dist/configure/index.mjs +12 -1
- package/dist/configure/index.mjs.map +1 -1
- package/dist/configure/services/secrets/index.d.mts +14 -0
- package/dist/configure/services/tailordb/schema.d.mts +3 -2
- package/dist/configure/types/secret-vault-name.d.mts +32 -0
- package/dist/crashreport-CBaRJl5h.mjs +1 -0
- package/dist/{crashreport-Cyuz1qiu.mjs → crashreport-DFpRn-LS.mjs} +4 -4
- package/dist/{crashreport-Cyuz1qiu.mjs.map → crashreport-DFpRn-LS.mjs.map} +1 -1
- package/dist/{date-B7-oyTGE.mjs → date-Dri6Yas-.mjs} +2 -2
- package/dist/date-Dri6Yas-.mjs.map +1 -0
- package/dist/{errors-BjJnpXkK.mjs → errors-C9zGf4nz.mjs} +2 -2
- package/dist/{errors-BjJnpXkK.mjs.map → errors-C9zGf4nz.mjs.map} +1 -1
- package/dist/es-builtins-SfvXRVoG.mjs +2 -0
- package/dist/{es-builtins-BHCXINQp.mjs.map → es-builtins-SfvXRVoG.mjs.map} +1 -1
- package/dist/field-parse-DhnFs9WG.mjs +2 -0
- package/dist/field-parse-DhnFs9WG.mjs.map +1 -0
- package/dist/{globals-CMHSnj4w.mjs → globals-BCmGX05J.mjs} +2 -2
- package/dist/{globals-CMHSnj4w.mjs.map → globals-BCmGX05J.mjs.map} +1 -1
- package/dist/guards-yDXyKC9F.mjs +2 -0
- package/dist/{guards-ForsrxnH.mjs.map → guards-yDXyKC9F.mjs.map} +1 -1
- package/dist/{kysely-type-B_oA8D1k.mjs → kysely-type-C-iyFFH7.mjs} +2 -2
- package/dist/{kysely-type-B_oA8D1k.mjs.map → kysely-type-C-iyFFH7.mjs.map} +1 -1
- package/dist/logger-Db-YRTwK.mjs +9 -0
- package/dist/logger-Db-YRTwK.mjs.map +1 -0
- package/dist/manager-8-JOvuLl.mjs +2 -0
- package/dist/{manager-qfbUL7ru.mjs.map → manager-8-JOvuLl.mjs.map} +1 -1
- package/dist/plugin/builtin/enum-constants/index.mjs +1 -1
- package/dist/plugin/builtin/enum-constants/index.mjs.map +1 -1
- package/dist/plugin/builtin/file-utils/index.mjs +1 -1
- package/dist/plugin/builtin/file-utils/index.mjs.map +1 -1
- package/dist/plugin/builtin/kysely-type/index.mjs +1 -1
- package/dist/plugin/index.mjs +1 -1
- package/dist/plugin/index.mjs.map +1 -1
- package/dist/register-ts-hook-z7ggXQy4.mjs +922 -0
- package/dist/register-ts-hook-z7ggXQy4.mjs.map +1 -0
- package/dist/registry-BijIDRVA.mjs +2 -0
- package/dist/{registry-HlEaGvl5.mjs.map → registry-BijIDRVA.mjs.map} +1 -1
- package/dist/repl-editor-DGJBfIt1.mjs +2 -0
- package/dist/{repl-editor-BG1aDOfH.mjs.map → repl-editor-DGJBfIt1.mjs.map} +1 -1
- package/dist/runtime/field-parse.d.mts +17 -1
- package/dist/runtime/index.d.mts +2 -1
- package/dist/runtime/index.mjs +1 -1
- package/dist/runtime/secretmanager.d.mts +8 -20
- package/dist/schema-CRtAmDcl.mjs +2 -0
- package/dist/{schema-BKvcWdVf.mjs.map → schema-CRtAmDcl.mjs.map} +1 -1
- package/dist/secretmanager-vHQoXdQz.mjs.map +1 -1
- package/dist/seed/index.mjs +7 -6
- package/dist/seed/index.mjs.map +1 -1
- package/dist/service-Bx-7Lz06.mjs +1 -0
- package/dist/{service-CuqkHP1r.mjs → service-CL1Bp4It.mjs} +3 -3
- package/dist/{service-CuqkHP1r.mjs.map → service-CL1Bp4It.mjs.map} +1 -1
- package/dist/{service-B4Gh_bbL.mjs → service-DHVuH7-X.mjs} +2 -2
- package/dist/{service-B4Gh_bbL.mjs.map → service-DHVuH7-X.mjs.map} +1 -1
- package/dist/service_pb-DNskuJQC.mjs +1 -0
- package/dist/service_pb-y2GYIgfs.mjs +2 -0
- package/dist/{service_pb-DprmLNsq.mjs.map → service_pb-y2GYIgfs.mjs.map} +1 -1
- package/dist/tailordb-ddl-DqInYupv.mjs +7 -0
- package/dist/{tailordb-ddl-Fgm2cNvT.mjs.map → tailordb-ddl-DqInYupv.mjs.map} +1 -1
- package/dist/utils/test/index.mjs +1 -1
- package/dist/utils/test/index.mjs.map +1 -1
- package/dist/vitest/environment.mjs +1 -1
- package/dist/vitest/environment.mjs.map +1 -1
- package/dist/vitest/index.mjs +1 -1
- package/dist/vitest/index.mjs.map +1 -1
- package/dist/vitest/mocks/file.d.mts +1 -1
- package/dist/vitest/setup.mjs +1 -1
- package/dist/workspace_resource_pb-D2njwgsE.mjs +2 -0
- package/dist/{workspace_resource_pb-BOoRts_z.mjs.map → workspace_resource_pb-D2njwgsE.mjs.map} +1 -1
- package/docs/cli-reference.md +22 -12
- package/docs/configuration.md +1 -1
- package/docs/github-actions.md +90 -24
- package/docs/migration/v2.md +70 -5
- package/docs/migration/v3.md +64 -0
- package/docs/plugin/index.md +1 -1
- package/docs/services/resolver.md +21 -0
- package/docs/services/secret.md +20 -15
- package/package.json +19 -19
- package/dist/application-B6NYnrhv.mjs +0 -199
- package/dist/application-B6NYnrhv.mjs.map +0 -1
- package/dist/application-BlbyGJsd.mjs +0 -1
- package/dist/crashreport-CgymxQDu.mjs +0 -1
- package/dist/date-B7-oyTGE.mjs.map +0 -1
- package/dist/es-builtins-BHCXINQp.mjs +0 -2
- package/dist/field-parse-BbNyotv5.mjs +0 -2
- package/dist/field-parse-BbNyotv5.mjs.map +0 -1
- package/dist/guards-ForsrxnH.mjs +0 -2
- package/dist/logger-72hM4JWZ.mjs +0 -9
- package/dist/logger-72hM4JWZ.mjs.map +0 -1
- package/dist/manager-qfbUL7ru.mjs +0 -2
- package/dist/register-ts-hook-FsCX38LQ.mjs +0 -917
- package/dist/register-ts-hook-FsCX38LQ.mjs.map +0 -1
- package/dist/registry-HlEaGvl5.mjs +0 -2
- package/dist/repl-editor-BG1aDOfH.mjs +0 -2
- package/dist/schema-BKvcWdVf.mjs +0 -2
- package/dist/service-BgrEteZ2.mjs +0 -1
- package/dist/service_pb-DKrsO1_u.mjs +0 -1
- package/dist/service_pb-DprmLNsq.mjs +0 -2
- package/dist/tailordb-ddl-Fgm2cNvT.mjs +0 -7
- package/dist/workspace_resource_pb-BOoRts_z.mjs +0 -2
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=Symbol.for(`tailor-platform/sdk:job-registry`);function jobs(){let t=globalThis,n=t[e];return n||(n=new Map,t[e]=n),n}function registerJob(e,t){jobs().set(e,t)}function getRegisteredJob(e){return jobs().get(e)}function currentPlatformWorkflow(){return globalThis.tailor?.workflow}function requirePlatformWorkflow(){let e=currentPlatformWorkflow();if(!e)throw Error("tailor.workflow is not available. Run tests in the `tailor-runtime` Vitest environment and use mockWorkflow(), or use runWorkflowLocally() from @tailor-platform/sdk/vitest for local workflow execution.");return e}const t=`00000000-0000-4000-8000-000000000000`;function dispatchStartJob(e,t,n){let r=requirePlatformWorkflow();return arguments.length>=3?r.execJobFunction(e,t,n):r.execJobFunction(e,t)}function dispatchStartWorkflow(e,t,n){let r=requirePlatformWorkflow();return arguments.length<3?r.startWorkflow(e,t):r.startWorkflow(e,t,n?.invoker===void 0?n:{authInvoker:n.invoker})}export{registerJob as a,getRegisteredJob as i,dispatchStartJob as n,dispatchStartWorkflow as r,t};
|
|
2
|
-
//# sourceMappingURL=registry-HlEaGvl5.mjs.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./assert-WeXvmG4j.mjs";import{GraphQLError as t,Lexer as n,Source as r,TokenKind as i}from"graphql";import{getSegments as a}from"sql-highlight";const o=`\x1B[0m`,s=`\x1B[34m`,c=`\x1B[35m`,l=`\x1B[33m`,u=`\x1B[36m`,d=`\x1B[1;35m`,f=`\x1B[90m`,p=`\x1B[2;33m`,m={keyword:s,function:c,identifier:l,string:`\x1B[92m`,number:u,bracket:p,special:f};function highlightSqlLine(e){let t=a(e),n=``;for(let e of t){let t=m[e.name];n+=t?t+e.content+o:e.content}return n}const h=new Set([`query`,`mutation`,`subscription`,`fragment`,`on`,`type`,`input`,`enum`,`interface`,`union`,`scalar`,`extend`,`schema`,`directive`,`implements`]),g=new Set([`query`,`mutation`,`subscription`,`fragment`]),_=new Set([`true`,`false`,`null`]);function highlightGraphqlLine(e){if(e.trimStart().startsWith(`#`))return`${f}${e}${o}`;try{let t=new r(e),a=new n(t),m=``,v=0,y=0,b=``,x=``,S=!1,C=a.advance();for(;C.kind!==i.EOF;){C.start>v&&(m+=e.slice(v,C.start));let t=e.slice(C.start,C.end);switch(C.kind){case i.NAME:b===i.DOLLAR?m+=`${c}${t}${o}`:b===i.AT?m+=`${d}${t}${o}`:_.has(t)||h.has(t)?m+=`${s}${t}${o}`:g.has(x)?m+=`[1;36m${t}${o}`:m+=S?`${u}${t}${o}`:y>0?`[3;33m${t}${o}`:`[94m${t}${o}`,S=!1;break;case i.INT:case i.FLOAT:m+=`${s}${t}${o}`,S=!1;break;case i.STRING:case i.BLOCK_STRING:m+=`[32m${t}${o}`,S=!1;break;case i.DOLLAR:m+=`${c}${t}${o}`,S=!1;break;case i.AT:m+=`${d}${t}${o}`,S=!1;break;case i.BRACE_L:case i.BRACE_R:m+=`${l}${t}${o}`,S=!1;break;case i.PAREN_L:y+=1,m+=`${p}${t}${o}`,S=!1;break;case i.PAREN_R:y=Math.max(0,y-1),m+=`${p}${t}${o}`,S=!1;break;case i.BRACKET_L:case i.BRACKET_R:m+=`${p}${t}${o}`,S=!1;break;case i.COLON:m+=`${f}${t}${o}`,S=!0;break;case i.BANG:case i.EQUALS:case i.PIPE:case i.AMP:case i.SPREAD:m+=`${f}${t}${o}`,S=!1;break;default:m+=t,S=!1}b=C.kind,x=t,v=C.end,C=a.advance()}return v<e.length&&(m+=e.slice(v)),m}catch(n){if(n instanceof t)return e;throw n}}const v={"(":`)`,"[":`]`,"{":`}`},y=new Set(Object.values(v));function replTransform(t,n){let{lines:r,row:i,col:a}=t;if(n.type===`insert`&&n.char in v){let t=v[n.char],o=e(r[i],`line at row ${i} missing`),s=o.slice(0,a)+t+o.slice(a);return{lines:r.with(i,s),row:i,col:a}}if(n.type===`insert`&&y.has(n.char)){let t=e(r[i],`line at row ${i} missing`);if(t[a]===n.char){let e=t.slice(0,a)+t.slice(a+1);return{lines:r.with(i,e),row:i,col:a}}}if(n.type===`backspace`){let t=e(r[i],`line at row ${i} missing`),n=t.slice(0,a);if(n.length>=1&&/^ +$/.test(n)){let e=n.slice(0,-1),o=e+t.slice(a);return{lines:r.with(i,o),row:i,col:e.length}}}if(n.type===`newline`&&i>0){let t=e(r[i-1],`line at row ${i-1} missing`),n=t.match(/^(\s*)/)?.[1]??``,o=/[{([]$/.test(t.trimEnd()),s=e(r[i],`line at row ${i} missing`),c=/^[}\])]/.test(s.trimStart());if(o&&c){let e=n+` `;return{lines:r.with(i,e).toSpliced(i+1,0,n+s.trimStart()),row:i,col:e.length}}if(o){let e=t.trimEnd().slice(-1),a=v[e]??`}`,o=n+` `;return{lines:r.with(i,o+s).toSpliced(i+1,0,n+a),row:i,col:o.length}}if(n&&a===0)return{lines:r.with(i,n+s),row:i,col:n.length}}}export{highlightGraphqlLine,highlightSqlLine,replTransform};
|
|
2
|
-
//# sourceMappingURL=repl-editor-BG1aDOfH.mjs.map
|
package/dist/schema-BKvcWdVf.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./field-parse-BbNyotv5.mjs";import{t}from"./brand-C8nMKhJC.mjs";import{cloneDeep as n}from"es-toolkit";function mapAllowedValues(e){return e.map(e=>typeof e==`string`?{value:e,description:``}:{...e,description:e.description??``})}function createTailorDBField(e,t,n,r){return createTailorDBFieldRuntime(e,t,n,r)}function createTailorDBFieldRuntime(t,r,i,a){let o={required:!0},s;r&&(r.optional===!0&&(o.required=!1),r.array===!0&&(o.array=!0)),a&&(o.allowedValues=mapAllowedValues(a));function parseInternal$1(t){return e({...t,field:c})}function cloneWith(e){let t=c.clone();return Object.assign(t._metadata,e),t}let c={type:t,fields:i??{},_defined:void 0,_output:void 0,_metadata:o,get metadata(){return{...this._metadata}},get rawRelation(){return s?{...s,toward:{...s.toward}}:void 0},description(e){return cloneWith({description:e})},typeName(e){return cloneWith({typeName:e})},validate(...e){return cloneWith({validate:e})},parse(e){return parseInternal$1({value:e.value,data:e.data,invoker:e.invoker,pathArray:[]})},relation(e){let t=c.clone(),n=e.toward,r=`table`in n?n.table:n.type,i=r===`self`?`self`:r.name;return t._setRawRelation({type:e.type,toward:{table:i,as:e.toward.as,key:e.toward.key},backward:e.backward}),t},index(){return cloneWith({index:!0})},unique(){return cloneWith({unique:!0,index:!0})},vector(){return cloneWith({vector:!0})},default(e){return cloneWith({default:e})},hooks(e){return cloneWith({hooks:e})},serial(e){return cloneWith({serial:e})},clone(e){if(this._metadata.validate?.length&&e?.array!==void 0&&e.array!==(this._metadata.array===!0))throw Error(`Cannot change the array option on a field with custom validation`);let o=i;if(i){let e={};for(let[t,n]of Object.entries(i))e[t]=n.clone();o=e}let c=createTailorDBFieldRuntime(t,r,o,a);return Object.assign(c._metadata,n(this._metadata)),e&&(e.optional!==void 0&&(c._metadata.required=!e.optional),e.array!==void 0&&(c._metadata.array=e.array)),s&&c._setRawRelation(n(s)),c},_setRawRelation(e){s=e}};return c}const r=createTailorDBField;function uuid(e){return r(`uuid`,e)}function string(e){return r(`string`,e)}function bool(e){return r(`boolean`,e)}function int(e){return r(`integer`,e)}function float(e){return r(`float`,e)}function decimal(e){if(e?.scale!==void 0&&(!Number.isInteger(e.scale)||e.scale<0||e.scale>12))throw Error(`scale must be an integer between 0 and 12`);let t=r(`decimal`,e);return e?.scale!==void 0&&(t._metadata.scale=e.scale),t}function date(e){return r(`date`,e)}function datetime(e){return r(`datetime`,e)}function time(e){return r(`time`,e)}function _enum(e,t){return r(`enum`,t,void 0,e)}function object(e,t){return r(`nested`,t,e)}function createTailorDBType(e,n,r){let i=r.description,a={},o=[],s={},c={},l=[],u,d,f=new Set;r.description!==void 0&&f.add(`description`);function runMethodOnce(e,t){if(f.has(e))throw Error(`.${e}() has already been set`);let n=t();return f.add(e),n}if(r.pluralForm){if(e===r.pluralForm)throw Error(`The name and the plural form must be different. name=${e}`);a.pluralForm=r.pluralForm}let p={name:e,fields:{...n},_output:null,_description:i,get metadata(){let e={};return o.length>0&&o.forEach(t=>{let n=t.fields.map(e=>String(e)),r=t.name||`idx_${n.join(`_`)}`;e[r]={fields:n,unique:t.unique}}),{name:this.name,description:i,settings:a,permissions:s,files:c,...Object.keys(e).length>0&&{indexes:e},...u&&{typeHook:u},...d&&{typeValidate:d}}},hooks(e){return runMethodOnce(`hooks`,()=>(u=e,this))},validate(e){return runMethodOnce(`validate`,()=>(d=e,this))},features(e){return runMethodOnce(`features`,()=>(a={...a,...e},this))},indexes(...e){return runMethodOnce(`indexes`,()=>(o=e,this))},files(e){return runMethodOnce(`files`,()=>(c=e,this))},permission(e){return runMethodOnce(`permission`,()=>{let t=this;return s.record=e,t})},gqlPermission(e){return runMethodOnce(`gqlPermission`,()=>{let t=this;return s.gql=e,t})},description(e){return runMethodOnce(`description`,()=>(i=e,this._description=e,this))},pickFields(e,t){let n={};for(let r of e){let e=this.fields[r];if(!e)throw Error(`pickFields(): field "${String(r)}" does not exist on this table yet. If it comes from a plugin's .plugin() call, it is only added to the table after \`tailor generate\` runs.`);n[r]=t?e.clone(t):e}return n},omitFields(e){let t=new Set(e),n={};for(let e in this.fields)Object.hasOwn(this.fields,e)&&!t.has(e)&&(n[e]=this.fields[e]);return n},get plugins(){return l},plugin(e){for(let[t,n]of Object.entries(e))l.push({pluginId:t,config:n});return this}};return t(p,`tailordb-type`)}const i=uuid();function dbTable(e,t,n){let r=Array.isArray(e)?e[0]:e,a=Array.isArray(e)?e[1]:void 0,o,s;return typeof t==`string`?(o=t,s=n):s=t,createTailorDBType(r,{id:i,...s},{pluralForm:a,description:o})}const timestampsUpdatedAtHook=({input:e,now:t})=>e??t,a=Symbol.for(`tailor-platform/sdk:precompiled-script-expr`);timestampsUpdatedAtHook[a]={"hooks.update":`(({ input, now }) => input ?? now)({ input: _value, oldValue: _oldValue, invoker: _principal, now: _now })`};const o={table:dbTable,uuid,string,bool,int,float,decimal,date,datetime,time,enum:_enum,object,fields:{timestamps:()=>({createdAt:datetime().default(`now`).description(`Record creation timestamp`),updatedAt:datetime().default(`now`).hooks({update:timestampsUpdatedAtHook}).description(`Record update timestamp`)})}};export{mapAllowedValues as n,o as t};
|
|
2
|
-
//# sourceMappingURL=schema-BKvcWdVf.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./service-CuqkHP1r.mjs";export{e as createExecutorService};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,n as t,r as n,t as r}from"./service_pb-DprmLNsq.mjs";export{r as OperatorService,t as PingRequestSchema,n as PingResponseSchema,e as file_tailor_v1_service};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{$t as e,A as t,Ct as n,F as r,H as i,Ht as a,Q as o,Qt as s,T as c,Vt as l,Y as u,an as d,c as f,en as p,m,n as h,on as g,qt as _,z as v}from"./workspace_resource_pb-BOoRts_z.mjs";import{fileDesc as y,messageDesc as b,serviceDesc as x}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_duration as S,file_google_protobuf_field_mask as C,file_google_protobuf_struct as w,file_google_protobuf_timestamp as T}from"@bufbuild/protobuf/wkt";const E=y(`Chd0YWlsb3IvdjEvc2VydmljZS5wcm90bxIJdGFpbG9yLnYxIg0KC1BpbmdSZXF1ZXN0Ig4KDFBpbmdSZXNwb25zZTK03wEKD09wZXJhdG9yU2VydmljZRI5CgRQaW5nEhYudGFpbG9yLnYxLlBpbmdSZXF1ZXN0GhcudGFpbG9yLnYxLlBpbmdSZXNwb25zZSIAEocBCh1MaXN0QXZhaWxhYmxlV29ya3NwYWNlUmVnaW9ucxIvLnRhaWxvci52MS5MaXN0QXZhaWxhYmxlV29ya3NwYWNlUmVnaW9uc1JlcXVlc3QaMC50YWlsb3IudjEuTGlzdEF2YWlsYWJsZVdvcmtzcGFjZVJlZ2lvbnNSZXNwb25zZSIDkAIBEloKD0NyZWF0ZVdvcmtzcGFjZRIhLnRhaWxvci52MS5DcmVhdGVXb3Jrc3BhY2VSZXF1ZXN0GiIudGFpbG9yLnYxLkNyZWF0ZVdvcmtzcGFjZVJlc3BvbnNlIgASWgoPVXBkYXRlV29ya3NwYWNlEiEudGFpbG9yLnYxLlVwZGF0ZVdvcmtzcGFjZVJlcXVlc3QaIi50YWlsb3IudjEuVXBkYXRlV29ya3NwYWNlUmVzcG9uc2UiABJaCg9EZWxldGVXb3Jrc3BhY2USIS50YWlsb3IudjEuRGVsZXRlV29ya3NwYWNlUmVxdWVzdBoiLnRhaWxvci52MS5EZWxldGVXb3Jrc3BhY2VSZXNwb25zZSIAEloKDkxpc3RXb3Jrc3BhY2VzEiAudGFpbG9yLnYxLkxpc3RXb3Jrc3BhY2VzUmVxdWVzdBohLnRhaWxvci52MS5MaXN0V29ya3NwYWNlc1Jlc3BvbnNlIgOQAgESfgoaTGlzdE9yZ2FuaXphdGlvbldvcmtzcGFjZXMSLC50YWlsb3IudjEuTGlzdE9yZ2FuaXphdGlvbldvcmtzcGFjZXNSZXF1ZXN0Gi0udGFpbG9yLnYxLkxpc3RPcmdhbml6YXRpb25Xb3Jrc3BhY2VzUmVzcG9uc2UiA5ACARJdChBSZXN0b3JlV29ya3NwYWNlEiIudGFpbG9yLnYxLlJlc3RvcmVXb3Jrc3BhY2VSZXF1ZXN0GiMudGFpbG9yLnYxLlJlc3RvcmVXb3Jrc3BhY2VSZXNwb25zZSIAElQKDEdldFdvcmtzcGFjZRIeLnRhaWxvci52MS5HZXRXb3Jrc3BhY2VSZXF1ZXN0Gh8udGFpbG9yLnYxLkdldFdvcmtzcGFjZVJlc3BvbnNlIgOQAgESfgoaTGlzdFdvcmtzcGFjZVBsYXRmb3JtVXNlcnMSLC50YWlsb3IudjEuTGlzdFdvcmtzcGFjZVBsYXRmb3JtVXNlcnNSZXF1ZXN0Gi0udGFpbG9yLnYxLkxpc3RXb3Jrc3BhY2VQbGF0Zm9ybVVzZXJzUmVzcG9uc2UiA5ACARKlAQonTGlzdEF2YWlsYWJsZVdvcmtzcGFjZVBsYXRmb3JtVXNlclJvbGVzEjkudGFpbG9yLnYxLkxpc3RBdmFpbGFibGVXb3Jrc3BhY2VQbGF0Zm9ybVVzZXJSb2xlc1JlcXVlc3QaOi50YWlsb3IudjEuTGlzdEF2YWlsYWJsZVdvcmtzcGFjZVBsYXRmb3JtVXNlclJvbGVzUmVzcG9uc2UiA5ACARJ+ChtJbnZpdGVXb3Jrc3BhY2VQbGF0Zm9ybVVzZXISLS50YWlsb3IudjEuSW52aXRlV29ya3NwYWNlUGxhdGZvcm1Vc2VyUmVxdWVzdBouLnRhaWxvci52MS5JbnZpdGVXb3Jrc3BhY2VQbGF0Zm9ybVVzZXJSZXNwb25zZSIAEn4KG1JlbW92ZVdvcmtzcGFjZVBsYXRmb3JtVXNlchItLnRhaWxvci52MS5SZW1vdmVXb3Jrc3BhY2VQbGF0Zm9ybVVzZXJSZXF1ZXN0Gi4udGFpbG9yLnYxLlJlbW92ZVdvcmtzcGFjZVBsYXRmb3JtVXNlclJlc3BvbnNlIgASfgobVXBkYXRlV29ya3NwYWNlUGxhdGZvcm1Vc2VyEi0udGFpbG9yLnYxLlVwZGF0ZVdvcmtzcGFjZVBsYXRmb3JtVXNlclJlcXVlc3QaLi50YWlsb3IudjEuVXBkYXRlV29ya3NwYWNlUGxhdGZvcm1Vc2VyUmVzcG9uc2UiABJ4ChhHZXRXb3Jrc3BhY2VQbGF0Zm9ybVVzZXISKi50YWlsb3IudjEuR2V0V29ya3NwYWNlUGxhdGZvcm1Vc2VyUmVxdWVzdBorLnRhaWxvci52MS5HZXRXb3Jrc3BhY2VQbGF0Zm9ybVVzZXJSZXNwb25zZSIDkAIBEmAKEEdldFdvcmtzcGFjZVJvbGUSIi50YWlsb3IudjEuR2V0V29ya3NwYWNlUm9sZVJlcXVlc3QaIy50YWlsb3IudjEuR2V0V29ya3NwYWNlUm9sZVJlc3BvbnNlIgOQAgESYwoSVXBkYXRlT3JnYW5pemF0aW9uEiQudGFpbG9yLnYxLlVwZGF0ZU9yZ2FuaXphdGlvblJlcXVlc3QaJS50YWlsb3IudjEuVXBkYXRlT3JnYW5pemF0aW9uUmVzcG9uc2UiABJdCg9HZXRPcmdhbml6YXRpb24SIS50YWlsb3IudjEuR2V0T3JnYW5pemF0aW9uUmVxdWVzdBoiLnRhaWxvci52MS5HZXRPcmdhbml6YXRpb25SZXNwb25zZSIDkAIBEmMKEUxpc3RPcmdhbml6YXRpb25zEiMudGFpbG9yLnYxLkxpc3RPcmdhbml6YXRpb25zUmVxdWVzdBokLnRhaWxvci52MS5MaXN0T3JnYW5pemF0aW9uc1Jlc3BvbnNlIgOQAgESbwoVTGlzdFVzZXJPcmdhbml6YXRpb25zEicudGFpbG9yLnYxLkxpc3RVc2VyT3JnYW5pemF0aW9uc1JlcXVlc3QaKC50YWlsb3IudjEuTGlzdFVzZXJPcmdhbml6YXRpb25zUmVzcG9uc2UiA5ACARJyChdHcmFudE9yZ2FuaXphdGlvbkFjY2VzcxIpLnRhaWxvci52MS5HcmFudE9yZ2FuaXphdGlvbkFjY2Vzc1JlcXVlc3QaKi50YWlsb3IudjEuR3JhbnRPcmdhbml6YXRpb25BY2Nlc3NSZXNwb25zZSIAEnUKGFVwZGF0ZU9yZ2FuaXphdGlvbkFjY2VzcxIqLnRhaWxvci52MS5VcGRhdGVPcmdhbml6YXRpb25BY2Nlc3NSZXF1ZXN0GisudGFpbG9yLnYxLlVwZGF0ZU9yZ2FuaXphdGlvbkFjY2Vzc1Jlc3BvbnNlIgASdQoYUmV2b2tlT3JnYW5pemF0aW9uQWNjZXNzEioudGFpbG9yLnYxLlJldm9rZU9yZ2FuaXphdGlvbkFjY2Vzc1JlcXVlc3QaKy50YWlsb3IudjEuUmV2b2tlT3JnYW5pemF0aW9uQWNjZXNzUmVzcG9uc2UiABJ4ChhMaXN0T3JnYW5pemF0aW9uQWNjZXNzZXMSKi50YWlsb3IudjEuTGlzdE9yZ2FuaXphdGlvbkFjY2Vzc2VzUmVxdWVzdBorLnRhaWxvci52MS5MaXN0T3JnYW5pemF0aW9uQWNjZXNzZXNSZXNwb25zZSIDkAIBEm8KFUdldE9yZ2FuaXphdGlvbkFjY2VzcxInLnRhaWxvci52MS5HZXRPcmdhbml6YXRpb25BY2Nlc3NSZXF1ZXN0GigudGFpbG9yLnYxLkdldE9yZ2FuaXphdGlvbkFjY2Vzc1Jlc3BvbnNlIgOQAgESdQoYQ3JlYXRlT3JnYW5pemF0aW9uRm9sZGVyEioudGFpbG9yLnYxLkNyZWF0ZU9yZ2FuaXphdGlvbkZvbGRlclJlcXVlc3QaKy50YWlsb3IudjEuQ3JlYXRlT3JnYW5pemF0aW9uRm9sZGVyUmVzcG9uc2UiABJ1ChhVcGRhdGVPcmdhbml6YXRpb25Gb2xkZXISKi50YWlsb3IudjEuVXBkYXRlT3JnYW5pemF0aW9uRm9sZGVyUmVxdWVzdBorLnRhaWxvci52MS5VcGRhdGVPcmdhbml6YXRpb25Gb2xkZXJSZXNwb25zZSIAEnUKGERlbGV0ZU9yZ2FuaXphdGlvbkZvbGRlchIqLnRhaWxvci52MS5EZWxldGVPcmdhbml6YXRpb25Gb2xkZXJSZXF1ZXN0GisudGFpbG9yLnYxLkRlbGV0ZU9yZ2FuaXphdGlvbkZvbGRlclJlc3BvbnNlIgASbwoVR2V0T3JnYW5pemF0aW9uRm9sZGVyEicudGFpbG9yLnYxLkdldE9yZ2FuaXphdGlvbkZvbGRlclJlcXVlc3QaKC50YWlsb3IudjEuR2V0T3JnYW5pemF0aW9uRm9sZGVyUmVzcG9uc2UiA5ACARJ1ChdMaXN0T3JnYW5pemF0aW9uRm9sZGVycxIpLnRhaWxvci52MS5MaXN0T3JnYW5pemF0aW9uRm9sZGVyc1JlcXVlc3QaKi50YWlsb3IudjEuTGlzdE9yZ2FuaXphdGlvbkZvbGRlcnNSZXNwb25zZSIDkAIBEoQBCh1HcmFudE9yZ2FuaXphdGlvbkZvbGRlckFjY2VzcxIvLnRhaWxvci52MS5HcmFudE9yZ2FuaXphdGlvbkZvbGRlckFjY2Vzc1JlcXVlc3QaMC50YWlsb3IudjEuR3JhbnRPcmdhbml6YXRpb25Gb2xkZXJBY2Nlc3NSZXNwb25zZSIAEocBCh5VcGRhdGVPcmdhbml6YXRpb25Gb2xkZXJBY2Nlc3MSMC50YWlsb3IudjEuVXBkYXRlT3JnYW5pemF0aW9uRm9sZGVyQWNjZXNzUmVxdWVzdBoxLnRhaWxvci52MS5VcGRhdGVPcmdhbml6YXRpb25Gb2xkZXJBY2Nlc3NSZXNwb25zZSIAEocBCh5SZXZva2VPcmdhbml6YXRpb25Gb2xkZXJBY2Nlc3MSMC50YWlsb3IudjEuUmV2b2tlT3JnYW5pemF0aW9uRm9sZGVyQWNjZXNzUmVxdWVzdBoxLnRhaWxvci52MS5SZXZva2VPcmdhbml6YXRpb25Gb2xkZXJBY2Nlc3NSZXNwb25zZSIAEooBCh5MaXN0T3JnYW5pemF0aW9uRm9sZGVyQWNjZXNzZXMSMC50YWlsb3IudjEuTGlzdE9yZ2FuaXphdGlvbkZvbGRlckFjY2Vzc2VzUmVxdWVzdBoxLnRhaWxvci52MS5MaXN0T3JnYW5pemF0aW9uRm9sZGVyQWNjZXNzZXNSZXNwb25zZSIDkAIBEoEBChtHZXRPcmdhbml6YXRpb25Gb2xkZXJBY2Nlc3MSLS50YWlsb3IudjEuR2V0T3JnYW5pemF0aW9uRm9sZGVyQWNjZXNzUmVxdWVzdBouLnRhaWxvci52MS5HZXRPcmdhbml6YXRpb25Gb2xkZXJBY2Nlc3NSZXNwb25zZSIDkAIBEooBCh9VcHNlcnRPcmdhbml6YXRpb25JUFJlc3RyaWN0aW9uEjEudGFpbG9yLnYxLlVwc2VydE9yZ2FuaXphdGlvbklQUmVzdHJpY3Rpb25SZXF1ZXN0GjIudGFpbG9yLnYxLlVwc2VydE9yZ2FuaXphdGlvbklQUmVzdHJpY3Rpb25SZXNwb25zZSIAEoQBChxHZXRPcmdhbml6YXRpb25JUFJlc3RyaWN0aW9uEi4udGFpbG9yLnYxLkdldE9yZ2FuaXphdGlvbklQUmVzdHJpY3Rpb25SZXF1ZXN0Gi8udGFpbG9yLnYxLkdldE9yZ2FuaXphdGlvbklQUmVzdHJpY3Rpb25SZXNwb25zZSIDkAIBEooBCh9EZWxldGVPcmdhbml6YXRpb25JUFJlc3RyaWN0aW9uEjEudGFpbG9yLnYxLkRlbGV0ZU9yZ2FuaXphdGlvbklQUmVzdHJpY3Rpb25SZXF1ZXN0GjIudGFpbG9yLnYxLkRlbGV0ZU9yZ2FuaXphdGlvbklQUmVzdHJpY3Rpb25SZXNwb25zZSIAEpwBCiVVcHNlcnRPcmdhbml6YXRpb25Gb2xkZXJJUFJlc3RyaWN0aW9uEjcudGFpbG9yLnYxLlVwc2VydE9yZ2FuaXphdGlvbkZvbGRlcklQUmVzdHJpY3Rpb25SZXF1ZXN0GjgudGFpbG9yLnYxLlVwc2VydE9yZ2FuaXphdGlvbkZvbGRlcklQUmVzdHJpY3Rpb25SZXNwb25zZSIAEpYBCiJHZXRPcmdhbml6YXRpb25Gb2xkZXJJUFJlc3RyaWN0aW9uEjQudGFpbG9yLnYxLkdldE9yZ2FuaXphdGlvbkZvbGRlcklQUmVzdHJpY3Rpb25SZXF1ZXN0GjUudGFpbG9yLnYxLkdldE9yZ2FuaXphdGlvbkZvbGRlcklQUmVzdHJpY3Rpb25SZXNwb25zZSIDkAIBEpwBCiVEZWxldGVPcmdhbml6YXRpb25Gb2xkZXJJUFJlc3RyaWN0aW9uEjcudGFpbG9yLnYxLkRlbGV0ZU9yZ2FuaXphdGlvbkZvbGRlcklQUmVzdHJpY3Rpb25SZXF1ZXN0GjgudGFpbG9yLnYxLkRlbGV0ZU9yZ2FuaXphdGlvbkZvbGRlcklQUmVzdHJpY3Rpb25SZXNwb25zZSIAEm8KFkNyZWF0ZU9yZ2FuaXphdGlvblRlYW0SKC50YWlsb3IudjEuQ3JlYXRlT3JnYW5pemF0aW9uVGVhbVJlcXVlc3QaKS50YWlsb3IudjEuQ3JlYXRlT3JnYW5pemF0aW9uVGVhbVJlc3BvbnNlIgASbwoWVXBkYXRlT3JnYW5pemF0aW9uVGVhbRIoLnRhaWxvci52MS5VcGRhdGVPcmdhbml6YXRpb25UZWFtUmVxdWVzdBopLnRhaWxvci52MS5VcGRhdGVPcmdhbml6YXRpb25UZWFtUmVzcG9uc2UiABJvChZEZWxldGVPcmdhbml6YXRpb25UZWFtEigudGFpbG9yLnYxLkRlbGV0ZU9yZ2FuaXphdGlvblRlYW1SZXF1ZXN0GikudGFpbG9yLnYxLkRlbGV0ZU9yZ2FuaXphdGlvblRlYW1SZXNwb25zZSIAEmkKE0dldE9yZ2FuaXphdGlvblRlYW0SJS50YWlsb3IudjEuR2V0T3JnYW5pemF0aW9uVGVhbVJlcXVlc3QaJi50YWlsb3IudjEuR2V0T3JnYW5pemF0aW9uVGVhbVJlc3BvbnNlIgOQAgESbwoVTGlzdE9yZ2FuaXphdGlvblRlYW1zEicudGFpbG9yLnYxLkxpc3RPcmdhbml6YXRpb25UZWFtc1JlcXVlc3QaKC50YWlsb3IudjEuTGlzdE9yZ2FuaXphdGlvblRlYW1zUmVzcG9uc2UiA5ACARJ4ChlBZGRPcmdhbml6YXRpb25UZWFtTWVtYmVyEisudGFpbG9yLnYxLkFkZE9yZ2FuaXphdGlvblRlYW1NZW1iZXJSZXF1ZXN0GiwudGFpbG9yLnYxLkFkZE9yZ2FuaXphdGlvblRlYW1NZW1iZXJSZXNwb25zZSIAEoEBChxVcGRhdGVPcmdhbml6YXRpb25UZWFtTWVtYmVyEi4udGFpbG9yLnYxLlVwZGF0ZU9yZ2FuaXphdGlvblRlYW1NZW1iZXJSZXF1ZXN0Gi8udGFpbG9yLnYxLlVwZGF0ZU9yZ2FuaXphdGlvblRlYW1NZW1iZXJSZXNwb25zZSIAEoEBChxSZW1vdmVPcmdhbml6YXRpb25UZWFtTWVtYmVyEi4udGFpbG9yLnYxLlJlbW92ZU9yZ2FuaXphdGlvblRlYW1NZW1iZXJSZXF1ZXN0Gi8udGFpbG9yLnYxLlJlbW92ZU9yZ2FuaXphdGlvblRlYW1NZW1iZXJSZXNwb25zZSIAEoEBChtMaXN0T3JnYW5pemF0aW9uVGVhbU1lbWJlcnMSLS50YWlsb3IudjEuTGlzdE9yZ2FuaXphdGlvblRlYW1NZW1iZXJzUmVxdWVzdBouLnRhaWxvci52MS5MaXN0T3JnYW5pemF0aW9uVGVhbU1lbWJlcnNSZXNwb25zZSIDkAIBEnsKGUdldE9yZ2FuaXphdGlvblRlYW1NZW1iZXISKy50YWlsb3IudjEuR2V0T3JnYW5pemF0aW9uVGVhbU1lbWJlclJlcXVlc3QaLC50YWlsb3IudjEuR2V0T3JnYW5pemF0aW9uVGVhbU1lbWJlclJlc3BvbnNlIgOQAgEScgoWR2V0UGxhdGZvcm1BY2NvdW50UGxhbhIoLnRhaWxvci52MS5HZXRQbGF0Zm9ybUFjY291bnRQbGFuUmVxdWVzdBopLnRhaWxvci52MS5HZXRQbGF0Zm9ybUFjY291bnRQbGFuUmVzcG9uc2UiA5ACARJgChFDcmVhdGVBcHBsaWNhdGlvbhIjLnRhaWxvci52MS5DcmVhdGVBcHBsaWNhdGlvblJlcXVlc3QaJC50YWlsb3IudjEuQ3JlYXRlQXBwbGljYXRpb25SZXNwb25zZSIAEmAKEVVwZGF0ZUFwcGxpY2F0aW9uEiMudGFpbG9yLnYxLlVwZGF0ZUFwcGxpY2F0aW9uUmVxdWVzdBokLnRhaWxvci52MS5VcGRhdGVBcHBsaWNhdGlvblJlc3BvbnNlIgASYAoRRGVsZXRlQXBwbGljYXRpb24SIy50YWlsb3IudjEuRGVsZXRlQXBwbGljYXRpb25SZXF1ZXN0GiQudGFpbG9yLnYxLkRlbGV0ZUFwcGxpY2F0aW9uUmVzcG9uc2UiABJgChBMaXN0QXBwbGljYXRpb25zEiIudGFpbG9yLnYxLkxpc3RBcHBsaWNhdGlvbnNSZXF1ZXN0GiMudGFpbG9yLnYxLkxpc3RBcHBsaWNhdGlvbnNSZXNwb25zZSIDkAIBEloKDkdldEFwcGxpY2F0aW9uEiAudGFpbG9yLnYxLkdldEFwcGxpY2F0aW9uUmVxdWVzdBohLnRhaWxvci52MS5HZXRBcHBsaWNhdGlvblJlc3BvbnNlIgOQAgESfgoaR2V0QXBwbGljYXRpb25TY2hlbWFIZWFsdGgSLC50YWlsb3IudjEuR2V0QXBwbGljYXRpb25TY2hlbWFIZWFsdGhSZXF1ZXN0Gi0udGFpbG9yLnYxLkdldEFwcGxpY2F0aW9uU2NoZW1hSGVhbHRoUmVzcG9uc2UiA5ACARJpChRDbG9uZUFwcGxpY2F0aW9uRGF0YRImLnRhaWxvci52MS5DbG9uZUFwcGxpY2F0aW9uRGF0YVJlcXVlc3QaJy50YWlsb3IudjEuQ2xvbmVBcHBsaWNhdGlvbkRhdGFSZXNwb25zZSIAEpABCiBHZXRDbG9uZUFwcGxpY2F0aW9uRGF0YU9wZXJhdGlvbhIyLnRhaWxvci52MS5HZXRDbG9uZUFwcGxpY2F0aW9uRGF0YU9wZXJhdGlvblJlcXVlc3QaMy50YWlsb3IudjEuR2V0Q2xvbmVBcHBsaWNhdGlvbkRhdGFPcGVyYXRpb25SZXNwb25zZSIDkAIBEloKD0NyZWF0ZUFJR2F0ZXdheRIhLnRhaWxvci52MS5DcmVhdGVBSUdhdGV3YXlSZXF1ZXN0GiIudGFpbG9yLnYxLkNyZWF0ZUFJR2F0ZXdheVJlc3BvbnNlIgASWgoPVXBkYXRlQUlHYXRld2F5EiEudGFpbG9yLnYxLlVwZGF0ZUFJR2F0ZXdheVJlcXVlc3QaIi50YWlsb3IudjEuVXBkYXRlQUlHYXRld2F5UmVzcG9uc2UiABJaCg9EZWxldGVBSUdhdGV3YXkSIS50YWlsb3IudjEuRGVsZXRlQUlHYXRld2F5UmVxdWVzdBoiLnRhaWxvci52MS5EZWxldGVBSUdhdGV3YXlSZXNwb25zZSIAElQKDEdldEFJR2F0ZXdheRIeLnRhaWxvci52MS5HZXRBSUdhdGV3YXlSZXF1ZXN0Gh8udGFpbG9yLnYxLkdldEFJR2F0ZXdheVJlc3BvbnNlIgOQAgESWgoOTGlzdEFJR2F0ZXdheXMSIC50YWlsb3IudjEuTGlzdEFJR2F0ZXdheXNSZXF1ZXN0GiEudGFpbG9yLnYxLkxpc3RBSUdhdGV3YXlzUmVzcG9uc2UiA5ACARJjChJDb21wb3NlVGFpbG9yREJTREwSJC50YWlsb3IudjEuQ29tcG9zZVRhaWxvckRCU0RMUmVxdWVzdBolLnRhaWxvci52MS5Db21wb3NlVGFpbG9yREJTRExSZXNwb25zZSIAEmwKFUNyZWF0ZVRhaWxvckRCU2VydmljZRInLnRhaWxvci52MS5DcmVhdGVUYWlsb3JEQlNlcnZpY2VSZXF1ZXN0GigudGFpbG9yLnYxLkNyZWF0ZVRhaWxvckRCU2VydmljZVJlc3BvbnNlIgASbAoVVXBkYXRlVGFpbG9yREJTZXJ2aWNlEicudGFpbG9yLnYxLlVwZGF0ZVRhaWxvckRCU2VydmljZVJlcXVlc3QaKC50YWlsb3IudjEuVXBkYXRlVGFpbG9yREJTZXJ2aWNlUmVzcG9uc2UiABJsChVEZWxldGVUYWlsb3JEQlNlcnZpY2USJy50YWlsb3IudjEuRGVsZXRlVGFpbG9yREJTZXJ2aWNlUmVxdWVzdBooLnRhaWxvci52MS5EZWxldGVUYWlsb3JEQlNlcnZpY2VSZXNwb25zZSIAEmYKEkdldFRhaWxvckRCU2VydmljZRIkLnRhaWxvci52MS5HZXRUYWlsb3JEQlNlcnZpY2VSZXF1ZXN0GiUudGFpbG9yLnYxLkdldFRhaWxvckRCU2VydmljZVJlc3BvbnNlIgOQAgESbAoUTGlzdFRhaWxvckRCU2VydmljZXMSJi50YWlsb3IudjEuTGlzdFRhaWxvckRCU2VydmljZXNSZXF1ZXN0GicudGFpbG9yLnYxLkxpc3RUYWlsb3JEQlNlcnZpY2VzUmVzcG9uc2UiA5ACARJjChJDcmVhdGVUYWlsb3JEQlR5cGUSJC50YWlsb3IudjEuQ3JlYXRlVGFpbG9yREJUeXBlUmVxdWVzdBolLnRhaWxvci52MS5DcmVhdGVUYWlsb3JEQlR5cGVSZXNwb25zZSIAEmMKElVwZGF0ZVRhaWxvckRCVHlwZRIkLnRhaWxvci52MS5VcGRhdGVUYWlsb3JEQlR5cGVSZXF1ZXN0GiUudGFpbG9yLnYxLlVwZGF0ZVRhaWxvckRCVHlwZVJlc3BvbnNlIgASYwoSRGVsZXRlVGFpbG9yREJUeXBlEiQudGFpbG9yLnYxLkRlbGV0ZVRhaWxvckRCVHlwZVJlcXVlc3QaJS50YWlsb3IudjEuRGVsZXRlVGFpbG9yREJUeXBlUmVzcG9uc2UiABJsChVUcnVuY2F0ZVRhaWxvckRCVHlwZXMSJy50YWlsb3IudjEuVHJ1bmNhdGVUYWlsb3JEQlR5cGVzUmVxdWVzdBooLnRhaWxvci52MS5UcnVuY2F0ZVRhaWxvckRCVHlwZXNSZXNwb25zZSIAEmkKFFRydW5jYXRlVGFpbG9yREJUeXBlEiYudGFpbG9yLnYxLlRydW5jYXRlVGFpbG9yREJUeXBlUmVxdWVzdBonLnRhaWxvci52MS5UcnVuY2F0ZVRhaWxvckRCVHlwZVJlc3BvbnNlIgASYwoRTGlzdFRhaWxvckRCVHlwZXMSIy50YWlsb3IudjEuTGlzdFRhaWxvckRCVHlwZXNSZXF1ZXN0GiQudGFpbG9yLnYxLkxpc3RUYWlsb3JEQlR5cGVzUmVzcG9uc2UiA5ACARJdCg9HZXRUYWlsb3JEQlR5cGUSIS50YWlsb3IudjEuR2V0VGFpbG9yREJUeXBlUmVxdWVzdBoiLnRhaWxvci52MS5HZXRUYWlsb3JEQlR5cGVSZXNwb25zZSIDkAIBEn4KG0NyZWF0ZVRhaWxvckRCR1FMUGVybWlzc2lvbhItLnRhaWxvci52MS5DcmVhdGVUYWlsb3JEQkdRTFBlcm1pc3Npb25SZXF1ZXN0Gi4udGFpbG9yLnYxLkNyZWF0ZVRhaWxvckRCR1FMUGVybWlzc2lvblJlc3BvbnNlIgASeAoYR2V0VGFpbG9yREJHUUxQZXJtaXNzaW9uEioudGFpbG9yLnYxLkdldFRhaWxvckRCR1FMUGVybWlzc2lvblJlcXVlc3QaKy50YWlsb3IudjEuR2V0VGFpbG9yREJHUUxQZXJtaXNzaW9uUmVzcG9uc2UiA5ACARJ+ChpMaXN0VGFpbG9yREJHUUxQZXJtaXNzaW9ucxIsLnRhaWxvci52MS5MaXN0VGFpbG9yREJHUUxQZXJtaXNzaW9uc1JlcXVlc3QaLS50YWlsb3IudjEuTGlzdFRhaWxvckRCR1FMUGVybWlzc2lvbnNSZXNwb25zZSIDkAIBEn4KG1VwZGF0ZVRhaWxvckRCR1FMUGVybWlzc2lvbhItLnRhaWxvci52MS5VcGRhdGVUYWlsb3JEQkdRTFBlcm1pc3Npb25SZXF1ZXN0Gi4udGFpbG9yLnYxLlVwZGF0ZVRhaWxvckRCR1FMUGVybWlzc2lvblJlc3BvbnNlIgASfgobRGVsZXRlVGFpbG9yREJHUUxQZXJtaXNzaW9uEi0udGFpbG9yLnYxLkRlbGV0ZVRhaWxvckRCR1FMUGVybWlzc2lvblJlcXVlc3QaLi50YWlsb3IudjEuRGVsZXRlVGFpbG9yREJHUUxQZXJtaXNzaW9uUmVzcG9uc2UiABJsChVDcmVhdGVQaXBlbGluZVNlcnZpY2USJy50YWlsb3IudjEuQ3JlYXRlUGlwZWxpbmVTZXJ2aWNlUmVxdWVzdBooLnRhaWxvci52MS5DcmVhdGVQaXBlbGluZVNlcnZpY2VSZXNwb25zZSIAEmwKFVVwZGF0ZVBpcGVsaW5lU2VydmljZRInLnRhaWxvci52MS5VcGRhdGVQaXBlbGluZVNlcnZpY2VSZXF1ZXN0GigudGFpbG9yLnYxLlVwZGF0ZVBpcGVsaW5lU2VydmljZVJlc3BvbnNlIgASbAoVRGVsZXRlUGlwZWxpbmVTZXJ2aWNlEicudGFpbG9yLnYxLkRlbGV0ZVBpcGVsaW5lU2VydmljZVJlcXVlc3QaKC50YWlsb3IudjEuRGVsZXRlUGlwZWxpbmVTZXJ2aWNlUmVzcG9uc2UiABJmChJHZXRQaXBlbGluZVNlcnZpY2USJC50YWlsb3IudjEuR2V0UGlwZWxpbmVTZXJ2aWNlUmVxdWVzdBolLnRhaWxvci52MS5HZXRQaXBlbGluZVNlcnZpY2VSZXNwb25zZSIDkAIBEmwKFExpc3RQaXBlbGluZVNlcnZpY2VzEiYudGFpbG9yLnYxLkxpc3RQaXBlbGluZVNlcnZpY2VzUmVxdWVzdBonLnRhaWxvci52MS5MaXN0UGlwZWxpbmVTZXJ2aWNlc1Jlc3BvbnNlIgOQAgESaQoTR2V0UGlwZWxpbmVSZXNvbHZlchIlLnRhaWxvci52MS5HZXRQaXBlbGluZVJlc29sdmVyUmVxdWVzdBomLnRhaWxvci52MS5HZXRQaXBlbGluZVJlc29sdmVyUmVzcG9uc2UiA5ACARJvChVMaXN0UGlwZWxpbmVSZXNvbHZlcnMSJy50YWlsb3IudjEuTGlzdFBpcGVsaW5lUmVzb2x2ZXJzUmVxdWVzdBooLnRhaWxvci52MS5MaXN0UGlwZWxpbmVSZXNvbHZlcnNSZXNwb25zZSIDkAIBEm8KFkNyZWF0ZVBpcGVsaW5lUmVzb2x2ZXISKC50YWlsb3IudjEuQ3JlYXRlUGlwZWxpbmVSZXNvbHZlclJlcXVlc3QaKS50YWlsb3IudjEuQ3JlYXRlUGlwZWxpbmVSZXNvbHZlclJlc3BvbnNlIgASbwoWVXBkYXRlUGlwZWxpbmVSZXNvbHZlchIoLnRhaWxvci52MS5VcGRhdGVQaXBlbGluZVJlc29sdmVyUmVxdWVzdBopLnRhaWxvci52MS5VcGRhdGVQaXBlbGluZVJlc29sdmVyUmVzcG9uc2UiABJvChZEZWxldGVQaXBlbGluZVJlc29sdmVyEigudGFpbG9yLnYxLkRlbGV0ZVBpcGVsaW5lUmVzb2x2ZXJSZXF1ZXN0GikudGFpbG9yLnYxLkRlbGV0ZVBpcGVsaW5lUmVzb2x2ZXJSZXNwb25zZSIAEmMKEkNvbXBvc2VQaXBlbGluZVNETBIkLnRhaWxvci52MS5Db21wb3NlUGlwZWxpbmVTRExSZXF1ZXN0GiUudGFpbG9yLnYxLkNvbXBvc2VQaXBlbGluZVNETFJlc3BvbnNlIgASnAEKJExpc3RQaXBlbGluZVJlc29sdmVyRXhlY3V0aW9uUmVzdWx0cxI2LnRhaWxvci52MS5MaXN0UGlwZWxpbmVSZXNvbHZlckV4ZWN1dGlvblJlc3VsdHNSZXF1ZXN0GjcudGFpbG9yLnYxLkxpc3RQaXBlbGluZVJlc29sdmVyRXhlY3V0aW9uUmVzdWx0c1Jlc3BvbnNlIgOQAgESlgEKIkdldFBpcGVsaW5lUmVzb2x2ZXJFeGVjdXRpb25SZXN1bHQSNC50YWlsb3IudjEuR2V0UGlwZWxpbmVSZXNvbHZlckV4ZWN1dGlvblJlc3VsdFJlcXVlc3QaNS50YWlsb3IudjEuR2V0UGlwZWxpbmVSZXNvbHZlckV4ZWN1dGlvblJlc3VsdFJlc3BvbnNlIgOQAgEScgoXUmVzdGFydFBpcGVsaW5lUmVzb2x2ZXISKS50YWlsb3IudjEuUmVzdGFydFBpcGVsaW5lUmVzb2x2ZXJSZXF1ZXN0GioudGFpbG9yLnYxLlJlc3RhcnRQaXBlbGluZVJlc29sdmVyUmVzcG9uc2UiABJvChZDcmVhdGVTdGF0ZWZsb3dTZXJ2aWNlEigudGFpbG9yLnYxLkNyZWF0ZVN0YXRlZmxvd1NlcnZpY2VSZXF1ZXN0GikudGFpbG9yLnYxLkNyZWF0ZVN0YXRlZmxvd1NlcnZpY2VSZXNwb25zZSIAEm8KFlVwZGF0ZVN0YXRlZmxvd1NlcnZpY2USKC50YWlsb3IudjEuVXBkYXRlU3RhdGVmbG93U2VydmljZVJlcXVlc3QaKS50YWlsb3IudjEuVXBkYXRlU3RhdGVmbG93U2VydmljZVJlc3BvbnNlIgASbwoWRGVsZXRlU3RhdGVmbG93U2VydmljZRIoLnRhaWxvci52MS5EZWxldGVTdGF0ZWZsb3dTZXJ2aWNlUmVxdWVzdBopLnRhaWxvci52MS5EZWxldGVTdGF0ZWZsb3dTZXJ2aWNlUmVzcG9uc2UiABJpChNHZXRTdGF0ZWZsb3dTZXJ2aWNlEiUudGFpbG9yLnYxLkdldFN0YXRlZmxvd1NlcnZpY2VSZXF1ZXN0GiYudGFpbG9yLnYxLkdldFN0YXRlZmxvd1NlcnZpY2VSZXNwb25zZSIDkAIBEm8KFUxpc3RTdGF0ZWZsb3dTZXJ2aWNlcxInLnRhaWxvci52MS5MaXN0U3RhdGVmbG93U2VydmljZXNSZXF1ZXN0GigudGFpbG9yLnYxLkxpc3RTdGF0ZWZsb3dTZXJ2aWNlc1Jlc3BvbnNlIgOQAgESbwoWQ3JlYXRlRXhlY3V0b3JFeGVjdXRvchIoLnRhaWxvci52MS5DcmVhdGVFeGVjdXRvckV4ZWN1dG9yUmVxdWVzdBopLnRhaWxvci52MS5DcmVhdGVFeGVjdXRvckV4ZWN1dG9yUmVzcG9uc2UiABJvChZVcGRhdGVFeGVjdXRvckV4ZWN1dG9yEigudGFpbG9yLnYxLlVwZGF0ZUV4ZWN1dG9yRXhlY3V0b3JSZXF1ZXN0GikudGFpbG9yLnYxLlVwZGF0ZUV4ZWN1dG9yRXhlY3V0b3JSZXNwb25zZSIAEmkKE0dldEV4ZWN1dG9yRXhlY3V0b3ISJS50YWlsb3IudjEuR2V0RXhlY3V0b3JFeGVjdXRvclJlcXVlc3QaJi50YWlsb3IudjEuR2V0RXhlY3V0b3JFeGVjdXRvclJlc3BvbnNlIgOQAgESbwoWRGVsZXRlRXhlY3V0b3JFeGVjdXRvchIoLnRhaWxvci52MS5EZWxldGVFeGVjdXRvckV4ZWN1dG9yUmVxdWVzdBopLnRhaWxvci52MS5EZWxldGVFeGVjdXRvckV4ZWN1dG9yUmVzcG9uc2UiABJvChVMaXN0RXhlY3V0b3JFeGVjdXRvcnMSJy50YWlsb3IudjEuTGlzdEV4ZWN1dG9yRXhlY3V0b3JzUmVxdWVzdBooLnRhaWxvci52MS5MaXN0RXhlY3V0b3JFeGVjdXRvcnNSZXNwb25zZSIDkAIBEloKDkdldEV4ZWN1dG9ySm9iEiAudGFpbG9yLnYxLkdldEV4ZWN1dG9ySm9iUmVxdWVzdBohLnRhaWxvci52MS5HZXRFeGVjdXRvckpvYlJlc3BvbnNlIgOQAgESYAoQTGlzdEV4ZWN1dG9ySm9icxIiLnRhaWxvci52MS5MaXN0RXhlY3V0b3JKb2JzUmVxdWVzdBojLnRhaWxvci52MS5MaXN0RXhlY3V0b3JKb2JzUmVzcG9uc2UiA5ACARJ1ChdMaXN0RXhlY3V0b3JKb2JBdHRlbXB0cxIpLnRhaWxvci52MS5MaXN0RXhlY3V0b3JKb2JBdHRlbXB0c1JlcXVlc3QaKi50YWlsb3IudjEuTGlzdEV4ZWN1dG9ySm9iQXR0ZW1wdHNSZXNwb25zZSIDkAIBEoQBChxMaXN0RXhlY3V0b3JJbmNvbWluZ1dlYmhvb2tzEi4udGFpbG9yLnYxLkxpc3RFeGVjdXRvckluY29taW5nV2ViaG9va3NSZXF1ZXN0Gi8udGFpbG9yLnYxLkxpc3RFeGVjdXRvckluY29taW5nV2ViaG9va3NSZXNwb25zZSIDkAIBEn4KGkdldEV4ZWN1dG9ySW5jb21pbmdXZWJob29rEiwudGFpbG9yLnYxLkdldEV4ZWN1dG9ySW5jb21pbmdXZWJob29rUmVxdWVzdBotLnRhaWxvci52MS5HZXRFeGVjdXRvckluY29taW5nV2ViaG9va1Jlc3BvbnNlIgOQAgESWgoPVHJpZ2dlckV4ZWN1dG9yEiEudGFpbG9yLnYxLlRyaWdnZXJFeGVjdXRvclJlcXVlc3QaIi50YWlsb3IudjEuVHJpZ2dlckV4ZWN1dG9yUmVzcG9uc2UiABJ1ChhDcmVhdGVTZWNyZXRNYW5hZ2VyVmF1bHQSKi50YWlsb3IudjEuQ3JlYXRlU2VjcmV0TWFuYWdlclZhdWx0UmVxdWVzdBorLnRhaWxvci52MS5DcmVhdGVTZWNyZXRNYW5hZ2VyVmF1bHRSZXNwb25zZSIAEm8KFUdldFNlY3JldE1hbmFnZXJWYXVsdBInLnRhaWxvci52MS5HZXRTZWNyZXRNYW5hZ2VyVmF1bHRSZXF1ZXN0GigudGFpbG9yLnYxLkdldFNlY3JldE1hbmFnZXJWYXVsdFJlc3BvbnNlIgOQAgESdQoYRGVsZXRlU2VjcmV0TWFuYWdlclZhdWx0EioudGFpbG9yLnYxLkRlbGV0ZVNlY3JldE1hbmFnZXJWYXVsdFJlcXVlc3QaKy50YWlsb3IudjEuRGVsZXRlU2VjcmV0TWFuYWdlclZhdWx0UmVzcG9uc2UiABJ1ChdMaXN0U2VjcmV0TWFuYWdlclZhdWx0cxIpLnRhaWxvci52MS5MaXN0U2VjcmV0TWFuYWdlclZhdWx0c1JlcXVlc3QaKi50YWlsb3IudjEuTGlzdFNlY3JldE1hbmFnZXJWYXVsdHNSZXNwb25zZSIDkAIBEngKGUNyZWF0ZVNlY3JldE1hbmFnZXJTZWNyZXQSKy50YWlsb3IudjEuQ3JlYXRlU2VjcmV0TWFuYWdlclNlY3JldFJlcXVlc3QaLC50YWlsb3IudjEuQ3JlYXRlU2VjcmV0TWFuYWdlclNlY3JldFJlc3BvbnNlIgASeAoZVXBkYXRlU2VjcmV0TWFuYWdlclNlY3JldBIrLnRhaWxvci52MS5VcGRhdGVTZWNyZXRNYW5hZ2VyU2VjcmV0UmVxdWVzdBosLnRhaWxvci52MS5VcGRhdGVTZWNyZXRNYW5hZ2VyU2VjcmV0UmVzcG9uc2UiABJyChZHZXRTZWNyZXRNYW5hZ2VyU2VjcmV0EigudGFpbG9yLnYxLkdldFNlY3JldE1hbmFnZXJTZWNyZXRSZXF1ZXN0GikudGFpbG9yLnYxLkdldFNlY3JldE1hbmFnZXJTZWNyZXRSZXNwb25zZSIDkAIBEngKGURlbGV0ZVNlY3JldE1hbmFnZXJTZWNyZXQSKy50YWlsb3IudjEuRGVsZXRlU2VjcmV0TWFuYWdlclNlY3JldFJlcXVlc3QaLC50YWlsb3IudjEuRGVsZXRlU2VjcmV0TWFuYWdlclNlY3JldFJlc3BvbnNlIgASeAoYTGlzdFNlY3JldE1hbmFnZXJTZWNyZXRzEioudGFpbG9yLnYxLkxpc3RTZWNyZXRNYW5hZ2VyU2VjcmV0c1JlcXVlc3QaKy50YWlsb3IudjEuTGlzdFNlY3JldE1hbmFnZXJTZWNyZXRzUmVzcG9uc2UiA5ACARJgChFDcmVhdGVBdXRoU2VydmljZRIjLnRhaWxvci52MS5DcmVhdGVBdXRoU2VydmljZVJlcXVlc3QaJC50YWlsb3IudjEuQ3JlYXRlQXV0aFNlcnZpY2VSZXNwb25zZSIAEmAKEVVwZGF0ZUF1dGhTZXJ2aWNlEiMudGFpbG9yLnYxLlVwZGF0ZUF1dGhTZXJ2aWNlUmVxdWVzdBokLnRhaWxvci52MS5VcGRhdGVBdXRoU2VydmljZVJlc3BvbnNlIgASYAoRRGVsZXRlQXV0aFNlcnZpY2USIy50YWlsb3IudjEuRGVsZXRlQXV0aFNlcnZpY2VSZXF1ZXN0GiQudGFpbG9yLnYxLkRlbGV0ZUF1dGhTZXJ2aWNlUmVzcG9uc2UiABJaCg5HZXRBdXRoU2VydmljZRIgLnRhaWxvci52MS5HZXRBdXRoU2VydmljZVJlcXVlc3QaIS50YWlsb3IudjEuR2V0QXV0aFNlcnZpY2VSZXNwb25zZSIDkAIBEmAKEExpc3RBdXRoU2VydmljZXMSIi50YWlsb3IudjEuTGlzdEF1dGhTZXJ2aWNlc1JlcXVlc3QaIy50YWlsb3IudjEuTGlzdEF1dGhTZXJ2aWNlc1Jlc3BvbnNlIgOQAgESZgoTQ3JlYXRlQXV0aElEUENvbmZpZxIlLnRhaWxvci52MS5DcmVhdGVBdXRoSURQQ29uZmlnUmVxdWVzdBomLnRhaWxvci52MS5DcmVhdGVBdXRoSURQQ29uZmlnUmVzcG9uc2UiABJmChNVcGRhdGVBdXRoSURQQ29uZmlnEiUudGFpbG9yLnYxLlVwZGF0ZUF1dGhJRFBDb25maWdSZXF1ZXN0GiYudGFpbG9yLnYxLlVwZGF0ZUF1dGhJRFBDb25maWdSZXNwb25zZSIAEmYKE0RlbGV0ZUF1dGhJRFBDb25maWcSJS50YWlsb3IudjEuRGVsZXRlQXV0aElEUENvbmZpZ1JlcXVlc3QaJi50YWlsb3IudjEuRGVsZXRlQXV0aElEUENvbmZpZ1Jlc3BvbnNlIgASYAoQR2V0QXV0aElEUENvbmZpZxIiLnRhaWxvci52MS5HZXRBdXRoSURQQ29uZmlnUmVxdWVzdBojLnRhaWxvci52MS5HZXRBdXRoSURQQ29uZmlnUmVzcG9uc2UiA5ACARJmChJMaXN0QXV0aElEUENvbmZpZ3MSJC50YWlsb3IudjEuTGlzdEF1dGhJRFBDb25maWdzUmVxdWVzdBolLnRhaWxvci52MS5MaXN0QXV0aElEUENvbmZpZ3NSZXNwb25zZSIDkAIBEnIKF0NyZWF0ZVVzZXJQcm9maWxlQ29uZmlnEikudGFpbG9yLnYxLkNyZWF0ZVVzZXJQcm9maWxlQ29uZmlnUmVxdWVzdBoqLnRhaWxvci52MS5DcmVhdGVVc2VyUHJvZmlsZUNvbmZpZ1Jlc3BvbnNlIgAScgoXVXBkYXRlVXNlclByb2ZpbGVDb25maWcSKS50YWlsb3IudjEuVXBkYXRlVXNlclByb2ZpbGVDb25maWdSZXF1ZXN0GioudGFpbG9yLnYxLlVwZGF0ZVVzZXJQcm9maWxlQ29uZmlnUmVzcG9uc2UiABJyChdEZWxldGVVc2VyUHJvZmlsZUNvbmZpZxIpLnRhaWxvci52MS5EZWxldGVVc2VyUHJvZmlsZUNvbmZpZ1JlcXVlc3QaKi50YWlsb3IudjEuRGVsZXRlVXNlclByb2ZpbGVDb25maWdSZXNwb25zZSIAEmwKFEdldFVzZXJQcm9maWxlQ29uZmlnEiYudGFpbG9yLnYxLkdldFVzZXJQcm9maWxlQ29uZmlnUmVxdWVzdBonLnRhaWxvci52MS5HZXRVc2VyUHJvZmlsZUNvbmZpZ1Jlc3BvbnNlIgOQAgESYwoSQ3JlYXRlVGVuYW50Q29uZmlnEiQudGFpbG9yLnYxLkNyZWF0ZVRlbmFudENvbmZpZ1JlcXVlc3QaJS50YWlsb3IudjEuQ3JlYXRlVGVuYW50Q29uZmlnUmVzcG9uc2UiABJjChJVcGRhdGVUZW5hbnRDb25maWcSJC50YWlsb3IudjEuVXBkYXRlVGVuYW50Q29uZmlnUmVxdWVzdBolLnRhaWxvci52MS5VcGRhdGVUZW5hbnRDb25maWdSZXNwb25zZSIAEmMKEkRlbGV0ZVRlbmFudENvbmZpZxIkLnRhaWxvci52MS5EZWxldGVUZW5hbnRDb25maWdSZXF1ZXN0GiUudGFpbG9yLnYxLkRlbGV0ZVRlbmFudENvbmZpZ1Jlc3BvbnNlIgASXQoPR2V0VGVuYW50Q29uZmlnEiEudGFpbG9yLnYxLkdldFRlbmFudENvbmZpZ1JlcXVlc3QaIi50YWlsb3IudjEuR2V0VGVuYW50Q29uZmlnUmVzcG9uc2UiA5ACARJ4ChlDcmVhdGVQZXJzb25hbEFjY2Vzc1Rva2VuEisudGFpbG9yLnYxLkNyZWF0ZVBlcnNvbmFsQWNjZXNzVG9rZW5SZXF1ZXN0GiwudGFpbG9yLnYxLkNyZWF0ZVBlcnNvbmFsQWNjZXNzVG9rZW5SZXNwb25zZSIAEngKGURlbGV0ZVBlcnNvbmFsQWNjZXNzVG9rZW4SKy50YWlsb3IudjEuRGVsZXRlUGVyc29uYWxBY2Nlc3NUb2tlblJlcXVlc3QaLC50YWlsb3IudjEuRGVsZXRlUGVyc29uYWxBY2Nlc3NUb2tlblJlc3BvbnNlIgASeAoYTGlzdFBlcnNvbmFsQWNjZXNzVG9rZW5zEioudGFpbG9yLnYxLkxpc3RQZXJzb25hbEFjY2Vzc1Rva2Vuc1JlcXVlc3QaKy50YWlsb3IudjEuTGlzdFBlcnNvbmFsQWNjZXNzVG9rZW5zUmVzcG9uc2UiA5ACARJsChVDcmVhdGVBdXRoTWFjaGluZVVzZXISJy50YWlsb3IudjEuQ3JlYXRlQXV0aE1hY2hpbmVVc2VyUmVxdWVzdBooLnRhaWxvci52MS5DcmVhdGVBdXRoTWFjaGluZVVzZXJSZXNwb25zZSIAEmwKFVVwZGF0ZUF1dGhNYWNoaW5lVXNlchInLnRhaWxvci52MS5VcGRhdGVBdXRoTWFjaGluZVVzZXJSZXF1ZXN0GigudGFpbG9yLnYxLlVwZGF0ZUF1dGhNYWNoaW5lVXNlclJlc3BvbnNlIgASbAoVRGVsZXRlQXV0aE1hY2hpbmVVc2VyEicudGFpbG9yLnYxLkRlbGV0ZUF1dGhNYWNoaW5lVXNlclJlcXVlc3QaKC50YWlsb3IudjEuRGVsZXRlQXV0aE1hY2hpbmVVc2VyUmVzcG9uc2UiABJmChJHZXRBdXRoTWFjaGluZVVzZXISJC50YWlsb3IudjEuR2V0QXV0aE1hY2hpbmVVc2VyUmVxdWVzdBolLnRhaWxvci52MS5HZXRBdXRoTWFjaGluZVVzZXJSZXNwb25zZSIDkAIBEmwKFExpc3RBdXRoTWFjaGluZVVzZXJzEiYudGFpbG9yLnYxLkxpc3RBdXRoTWFjaGluZVVzZXJzUmVxdWVzdBonLnRhaWxvci52MS5MaXN0QXV0aE1hY2hpbmVVc2Vyc1Jlc3BvbnNlIgOQAgESaQoUQ3JlYXRlQXV0aFNDSU1Db25maWcSJi50YWlsb3IudjEuQ3JlYXRlQXV0aFNDSU1Db25maWdSZXF1ZXN0GicudGFpbG9yLnYxLkNyZWF0ZUF1dGhTQ0lNQ29uZmlnUmVzcG9uc2UiABJpChRVcGRhdGVBdXRoU0NJTUNvbmZpZxImLnRhaWxvci52MS5VcGRhdGVBdXRoU0NJTUNvbmZpZ1JlcXVlc3QaJy50YWlsb3IudjEuVXBkYXRlQXV0aFNDSU1Db25maWdSZXNwb25zZSIAEmkKFERlbGV0ZUF1dGhTQ0lNQ29uZmlnEiYudGFpbG9yLnYxLkRlbGV0ZUF1dGhTQ0lNQ29uZmlnUmVxdWVzdBonLnRhaWxvci52MS5EZWxldGVBdXRoU0NJTUNvbmZpZ1Jlc3BvbnNlIgASYwoRR2V0QXV0aFNDSU1Db25maWcSIy50YWlsb3IudjEuR2V0QXV0aFNDSU1Db25maWdSZXF1ZXN0GiQudGFpbG9yLnYxLkdldEF1dGhTQ0lNQ29uZmlnUmVzcG9uc2UiA5ACARJvChZDcmVhdGVBdXRoU0NJTVJlc291cmNlEigudGFpbG9yLnYxLkNyZWF0ZUF1dGhTQ0lNUmVzb3VyY2VSZXF1ZXN0GikudGFpbG9yLnYxLkNyZWF0ZUF1dGhTQ0lNUmVzb3VyY2VSZXNwb25zZSIAEm8KFlVwZGF0ZUF1dGhTQ0lNUmVzb3VyY2USKC50YWlsb3IudjEuVXBkYXRlQXV0aFNDSU1SZXNvdXJjZVJlcXVlc3QaKS50YWlsb3IudjEuVXBkYXRlQXV0aFNDSU1SZXNvdXJjZVJlc3BvbnNlIgASbwoWRGVsZXRlQXV0aFNDSU1SZXNvdXJjZRIoLnRhaWxvci52MS5EZWxldGVBdXRoU0NJTVJlc291cmNlUmVxdWVzdBopLnRhaWxvci52MS5EZWxldGVBdXRoU0NJTVJlc291cmNlUmVzcG9uc2UiABJpChNHZXRBdXRoU0NJTVJlc291cmNlEiUudGFpbG9yLnYxLkdldEF1dGhTQ0lNUmVzb3VyY2VSZXF1ZXN0GiYudGFpbG9yLnYxLkdldEF1dGhTQ0lNUmVzb3VyY2VSZXNwb25zZSIDkAIBEmwKFEdldEF1dGhTQ0lNUmVzb3VyY2VzEiYudGFpbG9yLnYxLkdldEF1dGhTQ0lNUmVzb3VyY2VzUmVxdWVzdBonLnRhaWxvci52MS5HZXRBdXRoU0NJTVJlc291cmNlc1Jlc3BvbnNlIgOQAgESVwoOQ3JlYXRlQXV0aEhvb2sSIC50YWlsb3IudjEuQ3JlYXRlQXV0aEhvb2tSZXF1ZXN0GiEudGFpbG9yLnYxLkNyZWF0ZUF1dGhIb29rUmVzcG9uc2UiABJXCg5VcGRhdGVBdXRoSG9vaxIgLnRhaWxvci52MS5VcGRhdGVBdXRoSG9va1JlcXVlc3QaIS50YWlsb3IudjEuVXBkYXRlQXV0aEhvb2tSZXNwb25zZSIAElcKDkRlbGV0ZUF1dGhIb29rEiAudGFpbG9yLnYxLkRlbGV0ZUF1dGhIb29rUmVxdWVzdBohLnRhaWxvci52MS5EZWxldGVBdXRoSG9va1Jlc3BvbnNlIgASUQoLR2V0QXV0aEhvb2sSHS50YWlsb3IudjEuR2V0QXV0aEhvb2tSZXF1ZXN0Gh4udGFpbG9yLnYxLkdldEF1dGhIb29rUmVzcG9uc2UiA5ACARJpChRDcmVhdGVBdXRoQ29ubmVjdGlvbhImLnRhaWxvci52MS5DcmVhdGVBdXRoQ29ubmVjdGlvblJlcXVlc3QaJy50YWlsb3IudjEuQ3JlYXRlQXV0aENvbm5lY3Rpb25SZXNwb25zZSIAEmkKFFVwZGF0ZUF1dGhDb25uZWN0aW9uEiYudGFpbG9yLnYxLlVwZGF0ZUF1dGhDb25uZWN0aW9uUmVxdWVzdBonLnRhaWxvci52MS5VcGRhdGVBdXRoQ29ubmVjdGlvblJlc3BvbnNlIgASaQoTTGlzdEF1dGhDb25uZWN0aW9ucxIlLnRhaWxvci52MS5MaXN0QXV0aENvbm5lY3Rpb25zUmVxdWVzdBomLnRhaWxvci52MS5MaXN0QXV0aENvbm5lY3Rpb25zUmVzcG9uc2UiA5ACARJpChRSZXZva2VBdXRoQ29ubmVjdGlvbhImLnRhaWxvci52MS5SZXZva2VBdXRoQ29ubmVjdGlvblJlcXVlc3QaJy50YWlsb3IudjEuUmV2b2tlQXV0aENvbm5lY3Rpb25SZXNwb25zZSIAEmkKFERlbGV0ZUF1dGhDb25uZWN0aW9uEiYudGFpbG9yLnYxLkRlbGV0ZUF1dGhDb25uZWN0aW9uUmVxdWVzdBonLnRhaWxvci52MS5EZWxldGVBdXRoQ29ubmVjdGlvblJlc3BvbnNlIgAShAEKHVJlZ2lzdGVyQXV0aENvbm5lY3Rpb25TZXNzaW9uEi8udGFpbG9yLnYxLlJlZ2lzdGVyQXV0aENvbm5lY3Rpb25TZXNzaW9uUmVxdWVzdBowLnRhaWxvci52MS5SZWdpc3RlckF1dGhDb25uZWN0aW9uU2Vzc2lvblJlc3BvbnNlIgASogEKJ0V4Y2hhbmdlQXV0aENvbm5lY3Rpb25BdXRob3JpemF0aW9uQ29kZRI5LnRhaWxvci52MS5FeGNoYW5nZUF1dGhDb25uZWN0aW9uQXV0aG9yaXphdGlvbkNvZGVSZXF1ZXN0GjoudGFpbG9yLnYxLkV4Y2hhbmdlQXV0aENvbm5lY3Rpb25BdXRob3JpemF0aW9uQ29kZVJlc3BvbnNlIgASbwoWQ3JlYXRlQXV0aE9BdXRoMkNsaWVudBIoLnRhaWxvci52MS5DcmVhdGVBdXRoT0F1dGgyQ2xpZW50UmVxdWVzdBopLnRhaWxvci52MS5DcmVhdGVBdXRoT0F1dGgyQ2xpZW50UmVzcG9uc2UiABJvChZVcGRhdGVBdXRoT0F1dGgyQ2xpZW50EigudGFpbG9yLnYxLlVwZGF0ZUF1dGhPQXV0aDJDbGllbnRSZXF1ZXN0GikudGFpbG9yLnYxLlVwZGF0ZUF1dGhPQXV0aDJDbGllbnRSZXNwb25zZSIAEm8KFkRlbGV0ZUF1dGhPQXV0aDJDbGllbnQSKC50YWlsb3IudjEuRGVsZXRlQXV0aE9BdXRoMkNsaWVudFJlcXVlc3QaKS50YWlsb3IudjEuRGVsZXRlQXV0aE9BdXRoMkNsaWVudFJlc3BvbnNlIgASaQoTR2V0QXV0aE9BdXRoMkNsaWVudBIlLnRhaWxvci52MS5HZXRBdXRoT0F1dGgyQ2xpZW50UmVxdWVzdBomLnRhaWxvci52MS5HZXRBdXRoT0F1dGgyQ2xpZW50UmVzcG9uc2UiA5ACARJvChVMaXN0QXV0aE9BdXRoMkNsaWVudHMSJy50YWlsb3IudjEuTGlzdEF1dGhPQXV0aDJDbGllbnRzUmVxdWVzdBooLnRhaWxvci52MS5MaXN0QXV0aE9BdXRoMkNsaWVudHNSZXNwb25zZSIDkAIBEmkKE0xpc3REYXRhcGxhbmVFdmVudHMSJS50YWlsb3IudjEuTGlzdERhdGFwbGFuZUV2ZW50c1JlcXVlc3QaJi50YWlsb3IudjEuTGlzdERhdGFwbGFuZUV2ZW50c1Jlc3BvbnNlIgOQAgEShAEKHExpc3RDb250cm9scGxhbmVBY3Rpdml0eUxvZ3MSLi50YWlsb3IudjEuTGlzdENvbnRyb2xwbGFuZUFjdGl2aXR5TG9nc1JlcXVlc3QaLy50YWlsb3IudjEuTGlzdENvbnRyb2xwbGFuZUFjdGl2aXR5TG9nc1Jlc3BvbnNlIgOQAgESSwoKRXhlY1NjcmlwdBIcLnRhaWxvci52MS5FeGVjU2NyaXB0UmVxdWVzdBodLnRhaWxvci52MS5FeGVjU2NyaXB0UmVzcG9uc2UiABJaCg5UZXN0RXhlY1NjcmlwdBIgLnRhaWxvci52MS5UZXN0RXhlY1NjcmlwdFJlcXVlc3QaIS50YWlsb3IudjEuVGVzdEV4ZWNTY3JpcHRSZXNwb25zZSIDiAIBEmwKFEdldEZ1bmN0aW9uRXhlY3V0aW9uEiYudGFpbG9yLnYxLkdldEZ1bmN0aW9uRXhlY3V0aW9uUmVxdWVzdBonLnRhaWxvci52MS5HZXRGdW5jdGlvbkV4ZWN1dGlvblJlc3BvbnNlIgOQAgEScgoWTGlzdEZ1bmN0aW9uRXhlY3V0aW9ucxIoLnRhaWxvci52MS5MaXN0RnVuY3Rpb25FeGVjdXRpb25zUmVxdWVzdBopLnRhaWxvci52MS5MaXN0RnVuY3Rpb25FeGVjdXRpb25zUmVzcG9uc2UiA5ACARJxChZDcmVhdGVGdW5jdGlvblJlZ2lzdHJ5EigudGFpbG9yLnYxLkNyZWF0ZUZ1bmN0aW9uUmVnaXN0cnlSZXF1ZXN0GikudGFpbG9yLnYxLkNyZWF0ZUZ1bmN0aW9uUmVnaXN0cnlSZXNwb25zZSIAKAEScQoWVXBkYXRlRnVuY3Rpb25SZWdpc3RyeRIoLnRhaWxvci52MS5VcGRhdGVGdW5jdGlvblJlZ2lzdHJ5UmVxdWVzdBopLnRhaWxvci52MS5VcGRhdGVGdW5jdGlvblJlZ2lzdHJ5UmVzcG9uc2UiACgBEmkKE0dldEZ1bmN0aW9uUmVnaXN0cnkSJS50YWlsb3IudjEuR2V0RnVuY3Rpb25SZWdpc3RyeVJlcXVlc3QaJi50YWlsb3IudjEuR2V0RnVuY3Rpb25SZWdpc3RyeVJlc3BvbnNlIgOQAgEScgoWTGlzdEZ1bmN0aW9uUmVnaXN0cmllcxIoLnRhaWxvci52MS5MaXN0RnVuY3Rpb25SZWdpc3RyaWVzUmVxdWVzdBopLnRhaWxvci52MS5MaXN0RnVuY3Rpb25SZWdpc3RyaWVzUmVzcG9uc2UiA5ACARJvChZEZWxldGVGdW5jdGlvblJlZ2lzdHJ5EigudGFpbG9yLnYxLkRlbGV0ZUZ1bmN0aW9uUmVnaXN0cnlSZXF1ZXN0GikudGFpbG9yLnYxLkRlbGV0ZUZ1bmN0aW9uUmVnaXN0cnlSZXNwb25zZSIAEowBCh5Eb3dubG9hZEZ1bmN0aW9uUmVnaXN0cnlTY3JpcHQSMC50YWlsb3IudjEuRG93bmxvYWRGdW5jdGlvblJlZ2lzdHJ5U2NyaXB0UmVxdWVzdBoxLnRhaWxvci52MS5Eb3dubG9hZEZ1bmN0aW9uUmVnaXN0cnlTY3JpcHRSZXNwb25zZSIDkAIBMAEScgoWTGlzdE1ldGVyUmVxdWVzdENvdW50cxIoLnRhaWxvci52MS5MaXN0TWV0ZXJSZXF1ZXN0Q291bnRzUmVxdWVzdBopLnRhaWxvci52MS5MaXN0TWV0ZXJSZXF1ZXN0Q291bnRzUmVzcG9uc2UiA5ACARJ4ChhMaXN0TWV0ZXJFeGVjdXRpb25Db3VudHMSKi50YWlsb3IudjEuTGlzdE1ldGVyRXhlY3V0aW9uQ291bnRzUmVxdWVzdBorLnRhaWxvci52MS5MaXN0TWV0ZXJFeGVjdXRpb25Db3VudHNSZXNwb25zZSIDkAIBEmwKFExpc3RNZXRlckV2ZW50Q291bnRzEiYudGFpbG9yLnYxLkxpc3RNZXRlckV2ZW50Q291bnRzUmVxdWVzdBonLnRhaWxvci52MS5MaXN0TWV0ZXJFdmVudENvdW50c1Jlc3BvbnNlIgOQAgEScgoWTGlzdE1ldGVyQUlUb2tlblVzYWdlcxIoLnRhaWxvci52MS5MaXN0TWV0ZXJBSVRva2VuVXNhZ2VzUmVxdWVzdBopLnRhaWxvci52MS5MaXN0TWV0ZXJBSVRva2VuVXNhZ2VzUmVzcG9uc2UiA5ACARJdCg9MaXN0SWRQU2VydmljZXMSIS50YWlsb3IudjEuTGlzdElkUFNlcnZpY2VzUmVxdWVzdBoiLnRhaWxvci52MS5MaXN0SWRQU2VydmljZXNSZXNwb25zZSIDkAIBEl0KEENyZWF0ZUlkUFNlcnZpY2USIi50YWlsb3IudjEuQ3JlYXRlSWRQU2VydmljZVJlcXVlc3QaIy50YWlsb3IudjEuQ3JlYXRlSWRQU2VydmljZVJlc3BvbnNlIgASXQoQVXBkYXRlSWRQU2VydmljZRIiLnRhaWxvci52MS5VcGRhdGVJZFBTZXJ2aWNlUmVxdWVzdBojLnRhaWxvci52MS5VcGRhdGVJZFBTZXJ2aWNlUmVzcG9uc2UiABJdChBEZWxldGVJZFBTZXJ2aWNlEiIudGFpbG9yLnYxLkRlbGV0ZUlkUFNlcnZpY2VSZXF1ZXN0GiMudGFpbG9yLnYxLkRlbGV0ZUlkUFNlcnZpY2VSZXNwb25zZSIAElcKDUdldElkUFNlcnZpY2USHy50YWlsb3IudjEuR2V0SWRQU2VydmljZVJlcXVlc3QaIC50YWlsb3IudjEuR2V0SWRQU2VydmljZVJlc3BvbnNlIgOQAgESWgoOTGlzdElkUENsaWVudHMSIC50YWlsb3IudjEuTGlzdElkUENsaWVudHNSZXF1ZXN0GiEudGFpbG9yLnYxLkxpc3RJZFBDbGllbnRzUmVzcG9uc2UiA5ACARJaCg9DcmVhdGVJZFBDbGllbnQSIS50YWlsb3IudjEuQ3JlYXRlSWRQQ2xpZW50UmVxdWVzdBoiLnRhaWxvci52MS5DcmVhdGVJZFBDbGllbnRSZXNwb25zZSIAEloKD0RlbGV0ZUlkUENsaWVudBIhLnRhaWxvci52MS5EZWxldGVJZFBDbGllbnRSZXF1ZXN0GiIudGFpbG9yLnYxLkRlbGV0ZUlkUENsaWVudFJlc3BvbnNlIgASVAoMR2V0SWRQQ2xpZW50Eh4udGFpbG9yLnYxLkdldElkUENsaWVudFJlcXVlc3QaHy50YWlsb3IudjEuR2V0SWRQQ2xpZW50UmVzcG9uc2UiA5ACARJmChNDcmVhdGVTdGF0aWNXZWJzaXRlEiUudGFpbG9yLnYxLkNyZWF0ZVN0YXRpY1dlYnNpdGVSZXF1ZXN0GiYudGFpbG9yLnYxLkNyZWF0ZVN0YXRpY1dlYnNpdGVSZXNwb25zZSIAEmYKE1VwZGF0ZVN0YXRpY1dlYnNpdGUSJS50YWlsb3IudjEuVXBkYXRlU3RhdGljV2Vic2l0ZVJlcXVlc3QaJi50YWlsb3IudjEuVXBkYXRlU3RhdGljV2Vic2l0ZVJlc3BvbnNlIgASZgoTRGVsZXRlU3RhdGljV2Vic2l0ZRIlLnRhaWxvci52MS5EZWxldGVTdGF0aWNXZWJzaXRlUmVxdWVzdBomLnRhaWxvci52MS5EZWxldGVTdGF0aWNXZWJzaXRlUmVzcG9uc2UiABJgChBHZXRTdGF0aWNXZWJzaXRlEiIudGFpbG9yLnYxLkdldFN0YXRpY1dlYnNpdGVSZXF1ZXN0GiMudGFpbG9yLnYxLkdldFN0YXRpY1dlYnNpdGVSZXNwb25zZSIDkAIBEmYKEkxpc3RTdGF0aWNXZWJzaXRlcxIkLnRhaWxvci52MS5MaXN0U3RhdGljV2Vic2l0ZXNSZXF1ZXN0GiUudGFpbG9yLnYxLkxpc3RTdGF0aWNXZWJzaXRlc1Jlc3BvbnNlIgOQAgESWgoPQWRkQ3VzdG9tRG9tYWluEiEudGFpbG9yLnYxLkFkZEN1c3RvbURvbWFpblJlcXVlc3QaIi50YWlsb3IudjEuQWRkQ3VzdG9tRG9tYWluUmVzcG9uc2UiABJdCg9HZXRDdXN0b21Eb21haW4SIS50YWlsb3IudjEuR2V0Q3VzdG9tRG9tYWluUmVxdWVzdBoiLnRhaWxvci52MS5HZXRDdXN0b21Eb21haW5SZXNwb25zZSIDkAIBEmMKEUxpc3RDdXN0b21Eb21haW5zEiMudGFpbG9yLnYxLkxpc3RDdXN0b21Eb21haW5zUmVxdWVzdBokLnRhaWxvci52MS5MaXN0Q3VzdG9tRG9tYWluc1Jlc3BvbnNlIgOQAgESYwoSUmVtb3ZlQ3VzdG9tRG9tYWluEiQudGFpbG9yLnYxLlJlbW92ZUN1c3RvbURvbWFpblJlcXVlc3QaJS50YWlsb3IudjEuUmVtb3ZlQ3VzdG9tRG9tYWluUmVzcG9uc2UiABJdChBDcmVhdGVEZXBsb3ltZW50EiIudGFpbG9yLnYxLkNyZWF0ZURlcGxveW1lbnRSZXF1ZXN0GiMudGFpbG9yLnYxLkNyZWF0ZURlcGxveW1lbnRSZXNwb25zZSIAEk0KClVwbG9hZEZpbGUSHC50YWlsb3IudjEuVXBsb2FkRmlsZVJlcXVlc3QaHS50YWlsb3IudjEuVXBsb2FkRmlsZVJlc3BvbnNlIgAoARJgChFQdWJsaXNoRGVwbG95bWVudBIjLnRhaWxvci52MS5QdWJsaXNoRGVwbG95bWVudFJlcXVlc3QaJC50YWlsb3IudjEuUHVibGlzaERlcGxveW1lbnRSZXNwb25zZSIAElcKDkNyZWF0ZVdvcmtmbG93EiAudGFpbG9yLnYxLkNyZWF0ZVdvcmtmbG93UmVxdWVzdBohLnRhaWxvci52MS5DcmVhdGVXb3JrZmxvd1Jlc3BvbnNlIgASVwoOVXBkYXRlV29ya2Zsb3cSIC50YWlsb3IudjEuVXBkYXRlV29ya2Zsb3dSZXF1ZXN0GiEudGFpbG9yLnYxLlVwZGF0ZVdvcmtmbG93UmVzcG9uc2UiABJXCg5EZWxldGVXb3JrZmxvdxIgLnRhaWxvci52MS5EZWxldGVXb3JrZmxvd1JlcXVlc3QaIS50YWlsb3IudjEuRGVsZXRlV29ya2Zsb3dSZXNwb25zZSIAElEKC0dldFdvcmtmbG93Eh0udGFpbG9yLnYxLkdldFdvcmtmbG93UmVxdWVzdBoeLnRhaWxvci52MS5HZXRXb3JrZmxvd1Jlc3BvbnNlIgOQAgESYwoRR2V0V29ya2Zsb3dCeU5hbWUSIy50YWlsb3IudjEuR2V0V29ya2Zsb3dCeU5hbWVSZXF1ZXN0GiQudGFpbG9yLnYxLkdldFdvcmtmbG93QnlOYW1lUmVzcG9uc2UiA5ACARJXCg1MaXN0V29ya2Zsb3dzEh8udGFpbG9yLnYxLkxpc3RXb3JrZmxvd3NSZXF1ZXN0GiAudGFpbG9yLnYxLkxpc3RXb3JrZmxvd3NSZXNwb25zZSIDkAIBEngKGUNyZWF0ZVdvcmtmbG93Sm9iRnVuY3Rpb24SKy50YWlsb3IudjEuQ3JlYXRlV29ya2Zsb3dKb2JGdW5jdGlvblJlcXVlc3QaLC50YWlsb3IudjEuQ3JlYXRlV29ya2Zsb3dKb2JGdW5jdGlvblJlc3BvbnNlIgASeAoZVXBkYXRlV29ya2Zsb3dKb2JGdW5jdGlvbhIrLnRhaWxvci52MS5VcGRhdGVXb3JrZmxvd0pvYkZ1bmN0aW9uUmVxdWVzdBosLnRhaWxvci52MS5VcGRhdGVXb3JrZmxvd0pvYkZ1bmN0aW9uUmVzcG9uc2UiABJ4ChlEZWxldGVXb3JrZmxvd0pvYkZ1bmN0aW9uEisudGFpbG9yLnYxLkRlbGV0ZVdvcmtmbG93Sm9iRnVuY3Rpb25SZXF1ZXN0GiwudGFpbG9yLnYxLkRlbGV0ZVdvcmtmbG93Sm9iRnVuY3Rpb25SZXNwb25zZSIAEnIKFkdldFdvcmtmbG93Sm9iRnVuY3Rpb24SKC50YWlsb3IudjEuR2V0V29ya2Zsb3dKb2JGdW5jdGlvblJlcXVlc3QaKS50YWlsb3IudjEuR2V0V29ya2Zsb3dKb2JGdW5jdGlvblJlc3BvbnNlIgOQAgEShAEKHEdldFdvcmtmbG93Sm9iRnVuY3Rpb25CeU5hbWUSLi50YWlsb3IudjEuR2V0V29ya2Zsb3dKb2JGdW5jdGlvbkJ5TmFtZVJlcXVlc3QaLy50YWlsb3IudjEuR2V0V29ya2Zsb3dKb2JGdW5jdGlvbkJ5TmFtZVJlc3BvbnNlIgOQAgESeAoYTGlzdFdvcmtmbG93Sm9iRnVuY3Rpb25zEioudGFpbG9yLnYxLkxpc3RXb3JrZmxvd0pvYkZ1bmN0aW9uc1JlcXVlc3QaKy50YWlsb3IudjEuTGlzdFdvcmtmbG93Sm9iRnVuY3Rpb25zUmVzcG9uc2UiA5ACARJsChRHZXRXb3JrZmxvd0V4ZWN1dGlvbhImLnRhaWxvci52MS5HZXRXb3JrZmxvd0V4ZWN1dGlvblJlcXVlc3QaJy50YWlsb3IudjEuR2V0V29ya2Zsb3dFeGVjdXRpb25SZXNwb25zZSIDkAIBEnIKFkxpc3RXb3JrZmxvd0V4ZWN1dGlvbnMSKC50YWlsb3IudjEuTGlzdFdvcmtmbG93RXhlY3V0aW9uc1JlcXVlc3QaKS50YWlsb3IudjEuTGlzdFdvcmtmbG93RXhlY3V0aW9uc1Jlc3BvbnNlIgOQAgESVAoNU3RhcnRXb3JrZmxvdxIfLnRhaWxvci52MS5TdGFydFdvcmtmbG93UmVxdWVzdBogLnRhaWxvci52MS5TdGFydFdvcmtmbG93UmVzcG9uc2UiABJyChdSZXN1bWVXb3JrZmxvd0V4ZWN1dGlvbhIpLnRhaWxvci52MS5SZXN1bWVXb3JrZmxvd0V4ZWN1dGlvblJlcXVlc3QaKi50YWlsb3IudjEuUmVzdW1lV29ya2Zsb3dFeGVjdXRpb25SZXNwb25zZSIAEmMKEVRlc3RTdGFydFdvcmtmbG93EiMudGFpbG9yLnYxLlRlc3RTdGFydFdvcmtmbG93UmVxdWVzdBokLnRhaWxvci52MS5UZXN0U3RhcnRXb3JrZmxvd1Jlc3BvbnNlIgOIAgESZgoSVGVzdFJlc3VtZVdvcmtmbG93EiQudGFpbG9yLnYxLlRlc3RSZXN1bWVXb3JrZmxvd1JlcXVlc3QaJS50YWlsb3IudjEuVGVzdFJlc3VtZVdvcmtmbG93UmVzcG9uc2UiA4gCARKlAQooQ3JlYXRlV29ya2Zsb3dKb2JGdW5jdGlvbkV4ZWN1dGlvblBvbGljeRI6LnRhaWxvci52MS5DcmVhdGVXb3JrZmxvd0pvYkZ1bmN0aW9uRXhlY3V0aW9uUG9saWN5UmVxdWVzdBo7LnRhaWxvci52MS5DcmVhdGVXb3JrZmxvd0pvYkZ1bmN0aW9uRXhlY3V0aW9uUG9saWN5UmVzcG9uc2UiABKlAQooVXBkYXRlV29ya2Zsb3dKb2JGdW5jdGlvbkV4ZWN1dGlvblBvbGljeRI6LnRhaWxvci52MS5VcGRhdGVXb3JrZmxvd0pvYkZ1bmN0aW9uRXhlY3V0aW9uUG9saWN5UmVxdWVzdBo7LnRhaWxvci52MS5VcGRhdGVXb3JrZmxvd0pvYkZ1bmN0aW9uRXhlY3V0aW9uUG9saWN5UmVzcG9uc2UiABKlAQooRGVsZXRlV29ya2Zsb3dKb2JGdW5jdGlvbkV4ZWN1dGlvblBvbGljeRI6LnRhaWxvci52MS5EZWxldGVXb3JrZmxvd0pvYkZ1bmN0aW9uRXhlY3V0aW9uUG9saWN5UmVxdWVzdBo7LnRhaWxvci52MS5EZWxldGVXb3JrZmxvd0pvYkZ1bmN0aW9uRXhlY3V0aW9uUG9saWN5UmVzcG9uc2UiABKfAQolR2V0V29ya2Zsb3dKb2JGdW5jdGlvbkV4ZWN1dGlvblBvbGljeRI3LnRhaWxvci52MS5HZXRXb3JrZmxvd0pvYkZ1bmN0aW9uRXhlY3V0aW9uUG9saWN5UmVxdWVzdBo4LnRhaWxvci52MS5HZXRXb3JrZmxvd0pvYkZ1bmN0aW9uRXhlY3V0aW9uUG9saWN5UmVzcG9uc2UiA5ACARKuAQoqR2V0V29ya2Zsb3dKb2JGdW5jdGlvbkV4ZWN1dGlvblBvbGljeUJ5S2V5EjwudGFpbG9yLnYxLkdldFdvcmtmbG93Sm9iRnVuY3Rpb25FeGVjdXRpb25Qb2xpY3lCeUtleVJlcXVlc3QaPS50YWlsb3IudjEuR2V0V29ya2Zsb3dKb2JGdW5jdGlvbkV4ZWN1dGlvblBvbGljeUJ5S2V5UmVzcG9uc2UiA5ACARKoAQooTGlzdFdvcmtmbG93Sm9iRnVuY3Rpb25FeGVjdXRpb25Qb2xpY2llcxI6LnRhaWxvci52MS5MaXN0V29ya2Zsb3dKb2JGdW5jdGlvbkV4ZWN1dGlvblBvbGljaWVzUmVxdWVzdBo7LnRhaWxvci52MS5MaXN0V29ya2Zsb3dKb2JGdW5jdGlvbkV4ZWN1dGlvblBvbGljaWVzUmVzcG9uc2UiA5ACARJOCgtTZXRNZXRhZGF0YRIdLnRhaWxvci52MS5TZXRNZXRhZGF0YVJlcXVlc3QaHi50YWlsb3IudjEuU2V0TWV0YWRhdGFSZXNwb25zZSIAElEKC0dldE1ldGFkYXRhEh0udGFpbG9yLnYxLkdldE1ldGFkYXRhUmVxdWVzdBoeLnRhaWxvci52MS5HZXRNZXRhZGF0YVJlc3BvbnNlIgOQAgESWgoPQnVsa1NldE1ldGFkYXRhEiEudGFpbG9yLnYxLkJ1bGtTZXRNZXRhZGF0YVJlcXVlc3QaIi50YWlsb3IudjEuQnVsa1NldE1ldGFkYXRhUmVzcG9uc2UiABJUCgxMaXN0TWV0YWRhdGESHi50YWlsb3IudjEuTGlzdE1ldGFkYXRhUmVxdWVzdBofLnRhaWxvci52MS5MaXN0TWV0YWRhdGFSZXNwb25zZSIDkAIBEoQBCh1DcmVhdGVDb250cm9scGxhbmVNYWNoaW5lVXNlchIvLnRhaWxvci52MS5DcmVhdGVDb250cm9scGxhbmVNYWNoaW5lVXNlclJlcXVlc3QaMC50YWlsb3IudjEuQ3JlYXRlQ29udHJvbHBsYW5lTWFjaGluZVVzZXJSZXNwb25zZSIAEoQBCh1VcGRhdGVDb250cm9scGxhbmVNYWNoaW5lVXNlchIvLnRhaWxvci52MS5VcGRhdGVDb250cm9scGxhbmVNYWNoaW5lVXNlclJlcXVlc3QaMC50YWlsb3IudjEuVXBkYXRlQ29udHJvbHBsYW5lTWFjaGluZVVzZXJSZXNwb25zZSIAEn4KGkdldENvbnRyb2xwbGFuZU1hY2hpbmVVc2VyEiwudGFpbG9yLnYxLkdldENvbnRyb2xwbGFuZU1hY2hpbmVVc2VyUmVxdWVzdBotLnRhaWxvci52MS5HZXRDb250cm9scGxhbmVNYWNoaW5lVXNlclJlc3BvbnNlIgOQAgESkAEKIEdldENvbnRyb2xwbGFuZU1hY2hpbmVVc2VyQnlOYW1lEjIudGFpbG9yLnYxLkdldENvbnRyb2xwbGFuZU1hY2hpbmVVc2VyQnlOYW1lUmVxdWVzdBozLnRhaWxvci52MS5HZXRDb250cm9scGxhbmVNYWNoaW5lVXNlckJ5TmFtZVJlc3BvbnNlIgOQAgEShAEKHExpc3RDb250cm9scGxhbmVNYWNoaW5lVXNlcnMSLi50YWlsb3IudjEuTGlzdENvbnRyb2xwbGFuZU1hY2hpbmVVc2Vyc1JlcXVlc3QaLy50YWlsb3IudjEuTGlzdENvbnRyb2xwbGFuZU1hY2hpbmVVc2Vyc1Jlc3BvbnNlIgOQAgEShAEKHURlbGV0ZUNvbnRyb2xwbGFuZU1hY2hpbmVVc2VyEi8udGFpbG9yLnYxLkRlbGV0ZUNvbnRyb2xwbGFuZU1hY2hpbmVVc2VyUmVxdWVzdBowLnRhaWxvci52MS5EZWxldGVDb250cm9scGxhbmVNYWNoaW5lVXNlclJlc3BvbnNlIgASYwoSQ3JlYXRlT1RMUEV4cG9ydGVyEiQudGFpbG9yLnYxLkNyZWF0ZU9UTFBFeHBvcnRlclJlcXVlc3QaJS50YWlsb3IudjEuQ3JlYXRlT1RMUEV4cG9ydGVyUmVzcG9uc2UiABJjChJVcGRhdGVPVExQRXhwb3J0ZXISJC50YWlsb3IudjEuVXBkYXRlT1RMUEV4cG9ydGVyUmVxdWVzdBolLnRhaWxvci52MS5VcGRhdGVPVExQRXhwb3J0ZXJSZXNwb25zZSIAEl0KD0dldE9UTFBFeHBvcnRlchIhLnRhaWxvci52MS5HZXRPVExQRXhwb3J0ZXJSZXF1ZXN0GiIudGFpbG9yLnYxLkdldE9UTFBFeHBvcnRlclJlc3BvbnNlIgOQAgESYwoRTGlzdE9UTFBFeHBvcnRlcnMSIy50YWlsb3IudjEuTGlzdE9UTFBFeHBvcnRlcnNSZXF1ZXN0GiQudGFpbG9yLnYxLkxpc3RPVExQRXhwb3J0ZXJzUmVzcG9uc2UiA5ACARJjChJEZWxldGVPVExQRXhwb3J0ZXISJC50YWlsb3IudjEuRGVsZXRlT1RMUEV4cG9ydGVyUmVxdWVzdBolLnRhaWxvci52MS5EZWxldGVPVExQRXhwb3J0ZXJSZXNwb25zZSIAEl0KEFRlc3RPVExQRXhwb3J0ZXISIi50YWlsb3IudjEuVGVzdE9UTFBFeHBvcnRlclJlcXVlc3QaIy50YWlsb3IudjEuVGVzdE9UTFBFeHBvcnRlclJlc3BvbnNlIgAShwEKHkNyZWF0ZVJlc291cmNlQXR0cmlidXRlc0NvbmZpZxIwLnRhaWxvci52MS5DcmVhdGVSZXNvdXJjZUF0dHJpYnV0ZXNDb25maWdSZXF1ZXN0GjEudGFpbG9yLnYxLkNyZWF0ZVJlc291cmNlQXR0cmlidXRlc0NvbmZpZ1Jlc3BvbnNlIgASgQEKG0dldFJlc291cmNlQXR0cmlidXRlc0NvbmZpZxItLnRhaWxvci52MS5HZXRSZXNvdXJjZUF0dHJpYnV0ZXNDb25maWdSZXF1ZXN0Gi4udGFpbG9yLnYxLkdldFJlc291cmNlQXR0cmlidXRlc0NvbmZpZ1Jlc3BvbnNlIgOQAgEShwEKHlVwZGF0ZVJlc291cmNlQXR0cmlidXRlc0NvbmZpZxIwLnRhaWxvci52MS5VcGRhdGVSZXNvdXJjZUF0dHJpYnV0ZXNDb25maWdSZXF1ZXN0GjEudGFpbG9yLnYxLlVwZGF0ZVJlc291cmNlQXR0cmlidXRlc0NvbmZpZ1Jlc3BvbnNlIgAShwEKHkRlbGV0ZVJlc291cmNlQXR0cmlidXRlc0NvbmZpZxIwLnRhaWxvci52MS5EZWxldGVSZXNvdXJjZUF0dHJpYnV0ZXNDb25maWdSZXF1ZXN0GjEudGFpbG9yLnYxLkRlbGV0ZVJlc291cmNlQXR0cmlidXRlc0NvbmZpZ1Jlc3BvbnNlIgBiBnByb3RvMw`,[s,_,n,y(`ChZ0YWlsb3IvdjEvZXZlbnRzLnByb3RvEgl0YWlsb3IudjEiuAEKGkxpc3REYXRhcGxhbmVFdmVudHNSZXF1ZXN0EhIKCnBhZ2VfdG9rZW4YASABKAkSEQoJcGFnZV9zaXplGAIgASgNEh4KDHdvcmtzcGFjZV9pZBgDIAEoCUIIukgFcgOwAQESMAoOcGFnZV9kaXJlY3Rpb24YBCABKA4yGC50YWlsb3IudjEuUGFnZURpcmVjdGlvbhIhCgZmaWx0ZXIYBSABKAsyES50YWlsb3IudjEuRmlsdGVyInYKG0xpc3REYXRhcGxhbmVFdmVudHNSZXNwb25zZRIXCg9uZXh0X3BhZ2VfdG9rZW4YASABKAkSKQoGZXZlbnRzGAIgAygLMhkudGFpbG9yLnYxLkRhdGFwbGFuZUV2ZW50EhMKC3RvdGFsX2NvdW50GAMgASgDIsEBCiNMaXN0Q29udHJvbHBsYW5lQWN0aXZpdHlMb2dzUmVxdWVzdBISCgpwYWdlX3Rva2VuGAEgASgJEhEKCXBhZ2Vfc2l6ZRgCIAEoDRIeCgx3b3Jrc3BhY2VfaWQYAyABKAlCCLpIBXIDsAEBEjAKDnBhZ2VfZGlyZWN0aW9uGAQgASgOMhgudGFpbG9yLnYxLlBhZ2VEaXJlY3Rpb24SIQoGZmlsdGVyGAUgASgLMhEudGFpbG9yLnYxLkZpbHRlciKGAQokTGlzdENvbnRyb2xwbGFuZUFjdGl2aXR5TG9nc1Jlc3BvbnNlEhcKD25leHRfcGFnZV90b2tlbhgBIAEoCRIwCgRsb2dzGAIgAygLMiIudGFpbG9yLnYxLkNvbnRyb2xwbGFuZUFjdGl2aXR5TG9nEhMKC3RvdGFsX2NvdW50GAMgASgDYgZwcm90bzM`,[g,y(`Ch90YWlsb3IvdjEvZXZlbnRzX3Jlc291cmNlLnByb3RvEgl0YWlsb3IudjEitgEKDkRhdGFwbGFuZUV2ZW50EhcKD2lkZW1wb3RlbmN5X2tleRgBIAEoCRIUCgx3b3Jrc3BhY2VfaWQYAiABKAkSEgoKZXZlbnRfdHlwZRgDIAEoCRIQCghhY3Rvcl9pZBgEIAEoCRIlCgRkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIoCgR0aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLBAQoXQ29udHJvbHBsYW5lQWN0aXZpdHlMb2cSFwoPaWRlbXBvdGVuY3lfa2V5GAEgASgJEhQKDHdvcmtzcGFjZV9pZBgCIAEoCRIQCghhY3Rvcl9pZBgDIAEoCRIQCghyZXNvdXJjZRgEIAEoCRIOCgZhY3Rpb24YBSABKAkSEgoKaWRlbnRpZmllchgGIAEoCRIvCgtvcGVyYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBiBnByb3RvMw`,[w,T]),d]),o,y(`Chh0YWlsb3IvdjEvZnVuY3Rpb24ucHJvdG8SCXRhaWxvci52MSKcAQoVVGVzdEV4ZWNTY3JpcHRSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQESDAoEbmFtZRgCIAEoCRIMCgRjb2RlGAMgASgJEhAKA2FyZxgEIAEoCUgAiAEBEicKB2ludm9rZXIYBSABKAsyFi50YWlsb3IudjEuQXV0aEludm9rZXJCBgoEX2FyZ0oECAYQByJOChZUZXN0RXhlY1NjcmlwdFJlc3BvbnNlEg4KBnJlc3VsdBgBIAEoCRIeCgxleGVjdXRpb25faWQYAyABKAlCCLpIBXIDsAEBSgQIAhADIpIBChFFeGVjU2NyaXB0UmVxdWVzdBIeCgx3b3Jrc3BhY2VfaWQYASABKAlCCLpIBXIDsAEBEgwKBG5hbWUYAiABKAkSDAoEY29kZRgDIAEoCRIQCgNhcmcYBCABKAlIAIgBARInCgdpbnZva2VyGAUgASgLMhYudGFpbG9yLnYxLkF1dGhJbnZva2VyQgYKBF9hcmciRAoSRXhlY1NjcmlwdFJlc3BvbnNlEg4KBnJlc3VsdBgBIAEoCRIeCgxleGVjdXRpb25faWQYAiABKAlCCLpIBXIDsAEBIl0KG0dldEZ1bmN0aW9uRXhlY3V0aW9uUmVxdWVzdBIeCgx3b3Jrc3BhY2VfaWQYASABKAlCCLpIBXIDsAEBEh4KDGV4ZWN1dGlvbl9pZBgCIAEoCUIIukgFcgOwAQEiTwocR2V0RnVuY3Rpb25FeGVjdXRpb25SZXNwb25zZRIvCglleGVjdXRpb24YASABKAsyHC50YWlsb3IudjEuRnVuY3Rpb25FeGVjdXRpb24i6gEKHUxpc3RGdW5jdGlvbkV4ZWN1dGlvbnNSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQESEgoKcGFnZV90b2tlbhgCIAEoCRIRCglwYWdlX3NpemUYAyABKA0SMAoOcGFnZV9kaXJlY3Rpb24YBCABKA4yGC50YWlsb3IudjEuUGFnZURpcmVjdGlvbhIhCgZmaWx0ZXIYBSABKAsyES50YWlsb3IudjEuRmlsdGVyEi0KB3NvcnRfYnkYBiABKAlCHLpIGXIXMhVeKFthLXpfXVthLXowLTlfXSopPyQigAEKHkxpc3RGdW5jdGlvbkV4ZWN1dGlvbnNSZXNwb25zZRIwCgpleGVjdXRpb25zGAEgAygLMhwudGFpbG9yLnYxLkZ1bmN0aW9uRXhlY3V0aW9uEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRITCgt0b3RhbF9jb3VudBgDIAEoA2IGcHJvdG8z`,[g,l,u,d]),y(`CiF0YWlsb3IvdjEvZnVuY3Rpb25fcmVnaXN0cnkucHJvdG8SCXRhaWxvci52MSLhAQoQRnVuY3Rpb25SZWdpc3RyeRIKCgJpZBgBIAEoCRIUCgx3b3Jrc3BhY2VfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRISCgpzaXplX2J5dGVzGAQgASgDEhQKDGNvbnRlbnRfaGFzaBgFIAEoCRITCgtkZXNjcmlwdGlvbhgGIAEoCRIuCgpjcmVhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJyCh1DcmVhdGVGdW5jdGlvblJlZ2lzdHJ5UmVxdWVzdBI1CgRpbmZvGAEgASgLMiUudGFpbG9yLnYxLkNyZWF0ZUZ1bmN0aW9uUmVnaXN0cnlJbmZvSAASDwoFY2h1bmsYAiABKAxIAEIJCgdwYXlsb2FkItoBChpDcmVhdGVGdW5jdGlvblJlZ2lzdHJ5SW5mbxIeCgx3b3Jrc3BhY2VfaWQYASABKAlCCLpIBXIDsAEBEjIKBG5hbWUYAiABKAlCJLpIIXIfEAEY/wEyGF5bYS16QS1aXVthLXpBLVowLTlfLV0qJBITCgtkZXNjcmlwdGlvbhgDIAEoCRIgCgpzaXplX2J5dGVzGAQgASgDQgy6SAkiBxiAgIAKIAASMQoMY29udGVudF9oYXNoGAUgASgJQhu6SBhyFjIRXlthLWZBLUYwLTldezY0fSSYAUAiTwoeQ3JlYXRlRnVuY3Rpb25SZWdpc3RyeVJlc3BvbnNlEi0KCGZ1bmN0aW9uGAEgASgLMhsudGFpbG9yLnYxLkZ1bmN0aW9uUmVnaXN0cnkicgodVXBkYXRlRnVuY3Rpb25SZWdpc3RyeVJlcXVlc3QSNQoEaW5mbxgBIAEoCzIlLnRhaWxvci52MS5VcGRhdGVGdW5jdGlvblJlZ2lzdHJ5SW5mb0gAEg8KBWNodW5rGAIgASgMSABCCQoHcGF5bG9hZCLaAQoaVXBkYXRlRnVuY3Rpb25SZWdpc3RyeUluZm8SHgoMd29ya3NwYWNlX2lkGAEgASgJQgi6SAVyA7ABARIyCgRuYW1lGAIgASgJQiS6SCFyHxABGP8BMhheW2EtekEtWl1bYS16QS1aMC05Xy1dKiQSEwoLZGVzY3JpcHRpb24YAyABKAkSIAoKc2l6ZV9ieXRlcxgEIAEoA0IMukgJIgcYgICACiAAEjEKDGNvbnRlbnRfaGFzaBgFIAEoCUIbukgYchYyEV5bYS1mQS1GMC05XXs2NH0kmAFAIk8KHlVwZGF0ZUZ1bmN0aW9uUmVnaXN0cnlSZXNwb25zZRItCghmdW5jdGlvbhgBIAEoCzIbLnRhaWxvci52MS5GdW5jdGlvblJlZ2lzdHJ5IlMKGkdldEZ1bmN0aW9uUmVnaXN0cnlSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQESFQoEbmFtZRgCIAEoCUIHukgEcgIQASJMChtHZXRGdW5jdGlvblJlZ2lzdHJ5UmVzcG9uc2USLQoIZnVuY3Rpb24YASABKAsyGy50YWlsb3IudjEuRnVuY3Rpb25SZWdpc3RyeSLqAQodTGlzdEZ1bmN0aW9uUmVnaXN0cmllc1JlcXVlc3QSHgoMd29ya3NwYWNlX2lkGAEgASgJQgi6SAVyA7ABARISCgpwYWdlX3Rva2VuGAIgASgJEhEKCXBhZ2Vfc2l6ZRgDIAEoDRIwCg5wYWdlX2RpcmVjdGlvbhgEIAEoDjIYLnRhaWxvci52MS5QYWdlRGlyZWN0aW9uEiEKBmZpbHRlchgFIAEoCzIRLnRhaWxvci52MS5GaWx0ZXISLQoHc29ydF9ieRgGIAEoCUIcukgZchcyFV4oW2Etel9dW2EtejAtOV9dKik/JCJ+Ch5MaXN0RnVuY3Rpb25SZWdpc3RyaWVzUmVzcG9uc2USLgoJZnVuY3Rpb25zGAEgAygLMhsudGFpbG9yLnYxLkZ1bmN0aW9uUmVnaXN0cnkSFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJEhMKC3RvdGFsX2NvdW50GAMgASgDIlYKHURlbGV0ZUZ1bmN0aW9uUmVnaXN0cnlSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQESFQoEbmFtZRgCIAEoCUIHukgEcgIQASIgCh5EZWxldGVGdW5jdGlvblJlZ2lzdHJ5UmVzcG9uc2UipwEKJURvd25sb2FkRnVuY3Rpb25SZWdpc3RyeVNjcmlwdFJlcXVlc3QSHgoMd29ya3NwYWNlX2lkGAEgASgJQgi6SAVyA7ABARIVCgRuYW1lGAIgASgJQge6SARyAhABEjYKDGNvbnRlbnRfaGFzaBgDIAEoCUIbukgYchYyEV5bYS1mQS1GMC05XXs2NH0kmAFASACIAQFCDwoNX2NvbnRlbnRfaGFzaCKDAQomRG93bmxvYWRGdW5jdGlvblJlZ2lzdHJ5U2NyaXB0UmVzcG9uc2USPQoIbWV0YWRhdGEYASABKAsyKS50YWlsb3IudjEuRnVuY3Rpb25SZWdpc3RyeVNjcmlwdE1ldGFkYXRhSAASDwoFY2h1bmsYAiABKAxIAEIJCgdwYXlsb2FkIk8KHkZ1bmN0aW9uUmVnaXN0cnlTY3JpcHRNZXRhZGF0YRItCghmdW5jdGlvbhgBIAEoCzIbLnRhaWxvci52MS5GdW5jdGlvblJlZ2lzdHJ5YgZwcm90bzM`,[g,T,d]),i,v,y(`ChV0YWlsb3IvdjEvbWV0ZXIucHJvdG8SCXRhaWxvci52MSLsAQodTGlzdE1ldGVyUmVxdWVzdENvdW50c1JlcXVlc3QSHgoMd29ya3NwYWNlX2lkGAEgASgJQgi6SAVyA7ABARI2CgpzdGFydF90aW1lGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEjQKCGVuZF90aW1lGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEj0KBHN0ZXAYBCABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CFLpIEcgBAaoBCyIECICjBTIDCJAcIsUCCh5MaXN0TWV0ZXJSZXF1ZXN0Q291bnRzUmVzcG9uc2USTgoOcmVxdWVzdF9jb3VudHMYASADKAsyNi50YWlsb3IudjEuTGlzdE1ldGVyUmVxdWVzdENvdW50c1Jlc3BvbnNlLlJlcXVlc3RDb3VudBppCgxSZXF1ZXN0Q291bnQSGAoQYXBwbGljYXRpb25fbmFtZRgBIAEoCRI/CgZ2YWx1ZXMYAiADKAsyLy50YWlsb3IudjEuTGlzdE1ldGVyUmVxdWVzdENvdW50c1Jlc3BvbnNlLlZhbHVlGmgKBVZhbHVlEigKBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgVjb3VudBgDIAEoAyLuAQofTGlzdE1ldGVyRXhlY3V0aW9uQ291bnRzUmVxdWVzdBIeCgx3b3Jrc3BhY2VfaWQYASABKAlCCLpIBXIDsAEBEjYKCnN0YXJ0X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESNAoIZW5kX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESPQoEc3RlcBgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkIUukgRyAEBqgELIgQIgKMFMgMIkBwizQIKIExpc3RNZXRlckV4ZWN1dGlvbkNvdW50c1Jlc3BvbnNlElQKEGV4ZWN1dGlvbl9jb3VudHMYASADKAsyOi50YWlsb3IudjEuTGlzdE1ldGVyRXhlY3V0aW9uQ291bnRzUmVzcG9uc2UuRXhlY3V0aW9uQ291bnQaaQoORXhlY3V0aW9uQ291bnQSFAoMc2VydmljZV9uYW1lGAEgASgJEkEKBnZhbHVlcxgCIAMoCzIxLnRhaWxvci52MS5MaXN0TWV0ZXJFeGVjdXRpb25Db3VudHNSZXNwb25zZS5WYWx1ZRpoCgVWYWx1ZRIoCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBImCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFY291bnQYAyABKAMi6gEKG0xpc3RNZXRlckV2ZW50Q291bnRzUmVxdWVzdBIeCgx3b3Jrc3BhY2VfaWQYASABKAlCCLpIBXIDsAEBEjYKCnN0YXJ0X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESNAoIZW5kX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESPQoEc3RlcBgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkIUukgRyAEBqgELIgQIgKMFMgMIkBwitQIKHExpc3RNZXRlckV2ZW50Q291bnRzUmVzcG9uc2USSAoMZXZlbnRfY291bnRzGAEgAygLMjIudGFpbG9yLnYxLkxpc3RNZXRlckV2ZW50Q291bnRzUmVzcG9uc2UuRXZlbnRDb3VudBphCgpFdmVudENvdW50EhQKDHNlcnZpY2VfbmFtZRgBIAEoCRI9CgZ2YWx1ZXMYAiADKAsyLS50YWlsb3IudjEuTGlzdE1ldGVyRXZlbnRDb3VudHNSZXNwb25zZS5WYWx1ZRpoCgVWYWx1ZRIoCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBImCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFY291bnQYAyABKAMi7AEKHUxpc3RNZXRlckFJVG9rZW5Vc2FnZXNSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQESNgoKc3RhcnRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARI0CghlbmRfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARI9CgRzdGVwGAQgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQhS6SBHIAQGqAQsiBAiAowUyAwiQHCLbAgoeTGlzdE1ldGVyQUlUb2tlblVzYWdlc1Jlc3BvbnNlEkQKBnVzYWdlcxgBIAMoCzI0LnRhaWxvci52MS5MaXN0TWV0ZXJBSVRva2VuVXNhZ2VzUmVzcG9uc2UuVG9rZW5Vc2FnZRqIAQoKVG9rZW5Vc2FnZRIWCg5haWdhdGV3YXlfbmFtZRgBIAEoCRINCgVtb2RlbBgCIAEoCRISCgp0b2tlbl90eXBlGAMgASgJEj8KBnZhbHVlcxgEIAMoCzIvLnRhaWxvci52MS5MaXN0TWV0ZXJBSVRva2VuVXNhZ2VzUmVzcG9uc2UuVmFsdWUaaAoFVmFsdWUSKAoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoCdG8YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBWNvdW50GAMgASgDYgZwcm90bzM`,[g,S,T]),r,t,y(`Chl0YWlsb3IvdjEvc3RhdGVmbG93LnByb3RvEgl0YWlsb3IudjEiqAEKHUNyZWF0ZVN0YXRlZmxvd1NlcnZpY2VSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQESQAoObmFtZXNwYWNlX25hbWUYAiABKAlCKLpIJXIjMiFeW2EtejAtOV1bYS16MC05LV17MSw2MX1bYS16MC05XSQSJQoOYWRtaW5fdXNlcl9pZHMYAyADKAlCDbpICpIBByIFcgOwAQEiWAoeQ3JlYXRlU3RhdGVmbG93U2VydmljZVJlc3BvbnNlEjYKEXN0YXRlZmxvd19zZXJ2aWNlGAEgASgLMhsudGFpbG9yLnYxLlN0YXRlZmxvd1NlcnZpY2UiqAEKHVVwZGF0ZVN0YXRlZmxvd1NlcnZpY2VSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQESQAoObmFtZXNwYWNlX25hbWUYAiABKAlCKLpIJXIjMiFeW2EtejAtOV1bYS16MC05LV17MSw2MX1bYS16MC05XSQSJQoOYWRtaW5fdXNlcl9pZHMYAyADKAlCDbpICpIBByIFcgOwAQEiWAoeVXBkYXRlU3RhdGVmbG93U2VydmljZVJlc3BvbnNlEjYKEXN0YXRlZmxvd19zZXJ2aWNlGAEgASgLMhsudGFpbG9yLnYxLlN0YXRlZmxvd1NlcnZpY2UigQEKHURlbGV0ZVN0YXRlZmxvd1NlcnZpY2VSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQESQAoObmFtZXNwYWNlX25hbWUYAiABKAlCKLpIJXIjMiFeW2EtejAtOV1bYS16MC05LV17MSw2MX1bYS16MC05XSQiIAoeRGVsZXRlU3RhdGVmbG93U2VydmljZVJlc3BvbnNlIn4KGkdldFN0YXRlZmxvd1NlcnZpY2VSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQESQAoObmFtZXNwYWNlX25hbWUYAiABKAlCKLpIJXIjMiFeW2EtejAtOV1bYS16MC05LV17MSw2MX1bYS16MC05XSQiVQobR2V0U3RhdGVmbG93U2VydmljZVJlc3BvbnNlEjYKEXN0YXRlZmxvd19zZXJ2aWNlGAEgASgLMhsudGFpbG9yLnYxLlN0YXRlZmxvd1NlcnZpY2UilwEKHExpc3RTdGF0ZWZsb3dTZXJ2aWNlc1JlcXVlc3QSHgoMd29ya3NwYWNlX2lkGAEgASgJQgi6SAVyA7ABARISCgpwYWdlX3Rva2VuGAIgASgJEhEKCXBhZ2Vfc2l6ZRgDIAEoDRIwCg5wYWdlX2RpcmVjdGlvbhgEIAEoDjIYLnRhaWxvci52MS5QYWdlRGlyZWN0aW9uIoYBCh1MaXN0U3RhdGVmbG93U2VydmljZXNSZXNwb25zZRI3ChJzdGF0ZWZsb3dfc2VydmljZXMYASADKAsyGy50YWlsb3IudjEuU3RhdGVmbG93U2VydmljZRIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkSEwoLdG90YWxfY291bnQYAyABKANiBnByb3RvMw`,[g,d,y(`CiJ0YWlsb3IvdjEvc3RhdGVmbG93X3Jlc291cmNlLnByb3RvEgl0YWlsb3IudjEilQEKEFN0YXRlZmxvd1NlcnZpY2USJwoJbmFtZXNwYWNlGAEgASgLMhQudGFpbG9yLnYxLk5hbWVzcGFjZRI6CgthZG1pbl91c2VycxgCIAMoCzIlLnRhaWxvci52MS5TdGF0ZWZsb3dTZXJ2aWNlLkFkbWluVXNlchocCglBZG1pblVzZXISDwoHdXNlcl9pZBgBIAEoCWIGcHJvdG8z`,[d])]),c,m,y(`Ch90YWlsb3IvdjEvdGVsZW1ldHJ5cm91dGVyLnByb3RvEgl0YWlsb3IudjEicwoZQ3JlYXRlT1RMUEV4cG9ydGVyUmVxdWVzdBIeCgx3b3Jrc3BhY2VfaWQYASABKAlCCLpIBXIDsAEBEjYKDW90bHBfZXhwb3J0ZXIYAiABKAsyFy50YWlsb3IudjEuT1RMUEV4cG9ydGVyQga6SAPIAQEiTAoaQ3JlYXRlT1RMUEV4cG9ydGVyUmVzcG9uc2USLgoNb3RscF9leHBvcnRlchgBIAEoCzIXLnRhaWxvci52MS5PVExQRXhwb3J0ZXIicwoZVXBkYXRlT1RMUEV4cG9ydGVyUmVxdWVzdBIeCgx3b3Jrc3BhY2VfaWQYASABKAlCCLpIBXIDsAEBEjYKDW90bHBfZXhwb3J0ZXIYAiABKAsyFy50YWlsb3IudjEuT1RMUEV4cG9ydGVyQga6SAPIAQEiTAoaVXBkYXRlT1RMUEV4cG9ydGVyUmVzcG9uc2USLgoNb3RscF9leHBvcnRlchgBIAEoCzIXLnRhaWxvci52MS5PVExQRXhwb3J0ZXIicAoWR2V0T1RMUEV4cG9ydGVyUmVxdWVzdBIeCgx3b3Jrc3BhY2VfaWQYASABKAlCCLpIBXIDsAEBEjYKBG5hbWUYAiABKAlCKLpIJXIjMiFeW2EtejAtOV1bYS16MC05LV17MSw2MX1bYS16MC05XSQiSQoXR2V0T1RMUEV4cG9ydGVyUmVzcG9uc2USLgoNb3RscF9leHBvcnRlchgBIAEoCzIXLnRhaWxvci52MS5PVExQRXhwb3J0ZXIikwEKGExpc3RPVExQRXhwb3J0ZXJzUmVxdWVzdBIeCgx3b3Jrc3BhY2VfaWQYASABKAlCCLpIBXIDsAEBEhIKCnBhZ2VfdG9rZW4YAiABKAkSEQoJcGFnZV9zaXplGAMgASgNEjAKDnBhZ2VfZGlyZWN0aW9uGAQgASgOMhgudGFpbG9yLnYxLlBhZ2VEaXJlY3Rpb24iegoZTGlzdE9UTFBFeHBvcnRlcnNSZXNwb25zZRIvCg5vdGxwX2V4cG9ydGVycxgBIAMoCzIXLnRhaWxvci52MS5PVExQRXhwb3J0ZXISFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJEhMKC3RvdGFsX2NvdW50GAMgASgDInMKGURlbGV0ZU9UTFBFeHBvcnRlclJlcXVlc3QSHgoMd29ya3NwYWNlX2lkGAEgASgJQgi6SAVyA7ABARI2CgRuYW1lGAIgASgJQii6SCVyIzIhXlthLXowLTldW2EtejAtOS1dezEsNjF9W2EtejAtOV0kIhwKGkRlbGV0ZU9UTFBFeHBvcnRlclJlc3BvbnNlInEKF1Rlc3RPVExQRXhwb3J0ZXJSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQESNgoEbmFtZRgCIAEoCUIoukglciMyIV5bYS16MC05XVthLXowLTktXXsxLDYxfVthLXowLTldJCI8ChhUZXN0T1RMUEV4cG9ydGVyUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJIpgBCiVDcmVhdGVSZXNvdXJjZUF0dHJpYnV0ZXNDb25maWdSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQESTwoacmVzb3VyY2VfYXR0cmlidXRlc19jb25maWcYAiABKAsyIy50YWlsb3IudjEuUmVzb3VyY2VBdHRyaWJ1dGVzQ29uZmlnQga6SAPIAQEicQomQ3JlYXRlUmVzb3VyY2VBdHRyaWJ1dGVzQ29uZmlnUmVzcG9uc2USRwoacmVzb3VyY2VfYXR0cmlidXRlc19jb25maWcYASABKAsyIy50YWlsb3IudjEuUmVzb3VyY2VBdHRyaWJ1dGVzQ29uZmlnIkQKIkdldFJlc291cmNlQXR0cmlidXRlc0NvbmZpZ1JlcXVlc3QSHgoMd29ya3NwYWNlX2lkGAEgASgJQgi6SAVyA7ABASJuCiNHZXRSZXNvdXJjZUF0dHJpYnV0ZXNDb25maWdSZXNwb25zZRJHChpyZXNvdXJjZV9hdHRyaWJ1dGVzX2NvbmZpZxgBIAEoCzIjLnRhaWxvci52MS5SZXNvdXJjZUF0dHJpYnV0ZXNDb25maWcimAEKJVVwZGF0ZVJlc291cmNlQXR0cmlidXRlc0NvbmZpZ1JlcXVlc3QSHgoMd29ya3NwYWNlX2lkGAEgASgJQgi6SAVyA7ABARJPChpyZXNvdXJjZV9hdHRyaWJ1dGVzX2NvbmZpZxgCIAEoCzIjLnRhaWxvci52MS5SZXNvdXJjZUF0dHJpYnV0ZXNDb25maWdCBrpIA8gBASJxCiZVcGRhdGVSZXNvdXJjZUF0dHJpYnV0ZXNDb25maWdSZXNwb25zZRJHChpyZXNvdXJjZV9hdHRyaWJ1dGVzX2NvbmZpZxgBIAEoCzIjLnRhaWxvci52MS5SZXNvdXJjZUF0dHJpYnV0ZXNDb25maWciRwolRGVsZXRlUmVzb3VyY2VBdHRyaWJ1dGVzQ29uZmlnUmVxdWVzdBIeCgx3b3Jrc3BhY2VfaWQYASABKAlCCLpIBXIDsAEBIigKJkRlbGV0ZVJlc291cmNlQXR0cmlidXRlc0NvbmZpZ1Jlc3BvbnNlYgZwcm90bzM`,[g,d,y(`Cih0YWlsb3IvdjEvdGVsZW1ldHJ5cm91dGVyX3Jlc291cmNlLnByb3RvEgl0YWlsb3IudjEisgQKDE9UTFBFeHBvcnRlchI2CgRuYW1lGAEgASgJQii6SCVyIzIhXlthLXowLTldW2EtejAtOS1dezEsNjF9W2EtejAtOV0kEg8KB2VuYWJsZWQYAiABKAgSGQoIZW5kcG9pbnQYAyABKAlCB7pIBHICEAESPQoIcHJvdG9jb2wYBCABKA4yHy50YWlsb3IudjEuT1RMUEV4cG9ydGVyUHJvdG9jb2xCCrpIB4IBBBABIAASNQoHaGVhZGVycxgFIAMoCzIkLnRhaWxvci52MS5PVExQRXhwb3J0ZXIuSGVhZGVyc0VudHJ5Ei8KBGF1dGgYBiABKAsyIS50YWlsb3IudjEuT1RMUEV4cG9ydGVyQXV0aENvbmZpZxInCgZ0cmFjZXMYByABKAsyFy50YWlsb3IudjEuVHJhY2VzQ29uZmlnEikKB21ldHJpY3MYCCABKAsyGC50YWlsb3IudjEuTWV0cmljc0NvbmZpZxIjCgRsb2dzGAkgASgLMhUudGFpbG9yLnYxLkxvZ3NDb25maWcSMwoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCA+BBAxIzCgp1cGRhdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEID4EEDGi4KDEhlYWRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBSgQIDBANIh8KDFRyYWNlc0NvbmZpZxIPCgdlbmFibGVkGAEgASgIIiAKDU1ldHJpY3NDb25maWcSDwoHZW5hYmxlZBgBIAEoCCJPCgpMb2dzQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSMAoLYWNjZXNzX2xvZ3MYAiABKAsyGy50YWlsb3IudjEuQWNjZXNzTG9nc0NvbmZpZyIjChBBY2Nlc3NMb2dzQ29uZmlnEg8KB2luY2x1ZGUYASABKAgimAEKFk9UTFBFeHBvcnRlckF1dGhDb25maWcSNAoHYXBpX2tleRgBIAEoCzIhLnRhaWxvci52MS5PVExQRXhwb3J0ZXJBcGlLZXlBdXRoSAASPgoMYmVhcmVyX3Rva2VuGAIgASgLMiYudGFpbG9yLnYxLk9UTFBFeHBvcnRlckJlYXJlclRva2VuQXV0aEgAQggKBm1ldGhvZCJsChZPVExQRXhwb3J0ZXJBcGlLZXlBdXRoEhwKC2hlYWRlcl9uYW1lGAEgASgJQge6SARyAhABEjQKDHNlY3JldF92YWx1ZRgCIAEoCzIWLnRhaWxvci52MS5TZWNyZXRWYWx1ZUIGukgDyAEBIlMKG09UTFBFeHBvcnRlckJlYXJlclRva2VuQXV0aBI0CgxzZWNyZXRfdmFsdWUYASABKAsyFi50YWlsb3IudjEuU2VjcmV0VmFsdWVCBrpIA8gBASL6AQoYUmVzb3VyY2VBdHRyaWJ1dGVzQ29uZmlnEkUKE3NlcnZpY2VfbmFtZV9wcmVmaXgYASABKAlCKLpIJXIjMiFeW2EtejAtOV1bYS16MC05LV17MSw2MX1bYS16MC05XSQSLQobZGVwbG95bWVudF9lbnZpcm9ubWVudF9uYW1lGAIgASgJQgi6SAVyAxiAAhIzCgpjcmVhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEID4EEDEjMKCnVwZGF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgPgQQMqgAEKFE9UTFBFeHBvcnRlclByb3RvY29sEiYKIk9UTFBfRVhQT1JURVJfUFJPVE9DT0xfVU5TUEVDSUZJRUQQABIfChtPVExQX0VYUE9SVEVSX1BST1RPQ09MX0dSUEMQARIfChtPVExQX0VYUE9SVEVSX1BST1RPQ09MX0hUVFAQAmIGcHJvdG8z`,[g,e,T,a])]),f,y(`Chl0YWlsb3IvdjEvd29ya3NwYWNlLnByb3RvEgl0YWlsb3IudjEiJgokTGlzdEF2YWlsYWJsZVdvcmtzcGFjZVJlZ2lvbnNSZXF1ZXN0IjgKJUxpc3RBdmFpbGFibGVXb3Jrc3BhY2VSZWdpb25zUmVzcG9uc2USDwoHcmVnaW9ucxgBIAMoCSLVAQoWQ3JlYXRlV29ya3NwYWNlUmVxdWVzdBJACg53b3Jrc3BhY2VfbmFtZRgBIAEoCUIoukglciMyIV5bYS16MC05XVthLXowLTktXXsxLDYxfVthLXowLTldJBIYChB3b3Jrc3BhY2VfcmVnaW9uGAIgASgJEiQKD29yZ2FuaXphdGlvbl9pZBgDIAEoCUILukgI2AEBcgOwAQESHgoJZm9sZGVyX2lkGAQgASgJQgu6SAjYAQFyA7ABARIZChFkZWxldGVfcHJvdGVjdGlvbhgFIAEoCCJCChdDcmVhdGVXb3Jrc3BhY2VSZXNwb25zZRInCgl3b3Jrc3BhY2UYASABKAsyFC50YWlsb3IudjEuV29ya3NwYWNlItgCChZVcGRhdGVXb3Jrc3BhY2VSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQESQwoOd29ya3NwYWNlX25hbWUYAiABKAlCK7pIKNgBAXIjMiFeW2EtejAtOV1bYS16MC05LV17MSw2MX1bYS16MC05XSQSJAoPb3JnYW5pemF0aW9uX2lkGAMgASgJQgu6SAjYAQFyA7ABARIeCglmb2xkZXJfaWQYBCABKAlCC7pICNgBAXIDsAEBEhkKEWRlbGV0ZV9wcm90ZWN0aW9uGAUgASgIEngKC3VwZGF0ZV9tYXNrGGQgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFza0JHivkrDndvcmtzcGFjZV9uYW1livkrD29yZ2FuaXphdGlvbl9pZIr5Kwlmb2xkZXJfaWSK+SsRZGVsZXRlX3Byb3RlY3Rpb24iQgoXVXBkYXRlV29ya3NwYWNlUmVzcG9uc2USJwoJd29ya3NwYWNlGAEgASgLMhQudGFpbG9yLnYxLldvcmtzcGFjZSI4ChZEZWxldGVXb3Jrc3BhY2VSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQEiGQoXRGVsZXRlV29ya3NwYWNlUmVzcG9uc2Ui8wEKFUxpc3RXb3Jrc3BhY2VzUmVxdWVzdBISCgpwYWdlX3Rva2VuGAEgASgJEhEKCXBhZ2Vfc2l6ZRgCIAEoDRIwCg5wYWdlX2RpcmVjdGlvbhgDIAEoDjIYLnRhaWxvci52MS5QYWdlRGlyZWN0aW9uEkIKBHZpZXcYBCABKA4yJS50YWlsb3IudjEuTGlzdFdvcmtzcGFjZXNSZXF1ZXN0LlZpZXdCDbpICtgBAYIBBBABIAAiPQoEVmlldxIUChBWSUVXX1VOU1BFQ0lGSUVEEAASDAoIVklFV19BTEwQARIRCg1WSUVXX1BFUlNPTkFMEAIicAoWTGlzdFdvcmtzcGFjZXNSZXNwb25zZRIoCgp3b3Jrc3BhY2VzGAEgAygLMhQudGFpbG9yLnYxLldvcmtzcGFjZRIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkSEwoLdG90YWxfY291bnQYAyABKAMivwEKIUxpc3RPcmdhbml6YXRpb25Xb3Jrc3BhY2VzUmVxdWVzdBISCgpwYWdlX3Rva2VuGAEgASgJEhEKCXBhZ2Vfc2l6ZRgCIAEoDRIwCg5wYWdlX2RpcmVjdGlvbhgDIAEoDjIYLnRhaWxvci52MS5QYWdlRGlyZWN0aW9uEiEKD29yZ2FuaXphdGlvbl9pZBgEIAEoCUIIukgFcgOwAQESHgoJZm9sZGVyX2lkGAUgASgJQgu6SAjYAQFyA7ABASJ8CiJMaXN0T3JnYW5pemF0aW9uV29ya3NwYWNlc1Jlc3BvbnNlEhcKD25leHRfcGFnZV90b2tlbhgBIAEoCRITCgt0b3RhbF9jb3VudBgCIAEoAxIoCgp3b3Jrc3BhY2VzGAMgAygLMhQudGFpbG9yLnYxLldvcmtzcGFjZSI5ChdSZXN0b3JlV29ya3NwYWNlUmVxdWVzdBIeCgx3b3Jrc3BhY2VfaWQYASABKAlCCLpIBXIDsAEBIhoKGFJlc3RvcmVXb3Jrc3BhY2VSZXNwb25zZSI1ChNHZXRXb3Jrc3BhY2VSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQEiPwoUR2V0V29ya3NwYWNlUmVzcG9uc2USJwoJd29ya3NwYWNlGAEgASgLMhQudGFpbG9yLnYxLldvcmtzcGFjZSKcAQohTGlzdFdvcmtzcGFjZVBsYXRmb3JtVXNlcnNSZXF1ZXN0EhIKCnBhZ2VfdG9rZW4YASABKAkSEQoJcGFnZV9zaXplGAIgASgNEh4KDHdvcmtzcGFjZV9pZBgDIAEoCUIIukgFcgOwAQESMAoOcGFnZV9kaXJlY3Rpb24YBCABKA4yGC50YWlsb3IudjEuUGFnZURpcmVjdGlvbiKWAQoiTGlzdFdvcmtzcGFjZVBsYXRmb3JtVXNlcnNSZXNwb25zZRIXCg9uZXh0X3BhZ2VfdG9rZW4YASABKAkSQgoYd29ya3NwYWNlX3BsYXRmb3JtX3VzZXJzGAIgAygLMiAudGFpbG9yLnYxLldvcmtzcGFjZVBsYXRmb3JtVXNlchITCgt0b3RhbF9jb3VudBgDIAEoAyIwCi5MaXN0QXZhaWxhYmxlV29ya3NwYWNlUGxhdGZvcm1Vc2VyUm9sZXNSZXF1ZXN0ImYKL0xpc3RBdmFpbGFibGVXb3Jrc3BhY2VQbGF0Zm9ybVVzZXJSb2xlc1Jlc3BvbnNlEjMKBXJvbGVzGAEgAygOMiQudGFpbG9yLnYxLldvcmtzcGFjZVBsYXRmb3JtVXNlclJvbGUikAEKIkludml0ZVdvcmtzcGFjZVBsYXRmb3JtVXNlclJlcXVlc3QSHgoMd29ya3NwYWNlX2lkGAEgASgJQgi6SAVyA7ABARIWCgVlbWFpbBgCIAEoCUIHukgEcgJgARIyCgRyb2xlGAMgASgOMiQudGFpbG9yLnYxLldvcmtzcGFjZVBsYXRmb3JtVXNlclJvbGUiJQojSW52aXRlV29ya3NwYWNlUGxhdGZvcm1Vc2VyUmVzcG9uc2UiXAoiUmVtb3ZlV29ya3NwYWNlUGxhdGZvcm1Vc2VyUmVxdWVzdBIeCgx3b3Jrc3BhY2VfaWQYASABKAlCCLpIBXIDsAEBEhYKBWVtYWlsGAIgASgJQge6SARyAmABIiUKI1JlbW92ZVdvcmtzcGFjZVBsYXRmb3JtVXNlclJlc3BvbnNlIpABCiJVcGRhdGVXb3Jrc3BhY2VQbGF0Zm9ybVVzZXJSZXF1ZXN0Eh4KDHdvcmtzcGFjZV9pZBgBIAEoCUIIukgFcgOwAQESFgoFZW1haWwYAiABKAlCB7pIBHICYAESMgoEcm9sZRgDIAEoDjIkLnRhaWxvci52MS5Xb3Jrc3BhY2VQbGF0Zm9ybVVzZXJSb2xlIiUKI1VwZGF0ZVdvcmtzcGFjZVBsYXRmb3JtVXNlclJlc3BvbnNlIkEKH0dldFdvcmtzcGFjZVBsYXRmb3JtVXNlclJlcXVlc3QSHgoMd29ya3NwYWNlX2lkGAEgASgJQgi6SAVyA7ABASJlCiBHZXRXb3Jrc3BhY2VQbGF0Zm9ybVVzZXJSZXNwb25zZRJBChd3b3Jrc3BhY2VfcGxhdGZvcm1fdXNlchgBIAEoCzIgLnRhaWxvci52MS5Xb3Jrc3BhY2VQbGF0Zm9ybVVzZXIiOQoXR2V0V29ya3NwYWNlUm9sZVJlcXVlc3QSHgoMd29ya3NwYWNlX2lkGAEgASgJQgi6SAVyA7ABASJOChhHZXRXb3Jrc3BhY2VSb2xlUmVzcG9uc2USMgoEcm9sZRgBIAEoDjIkLnRhaWxvci52MS5Xb3Jrc3BhY2VQbGF0Zm9ybVVzZXJSb2xlImIKGVVwZGF0ZU9yZ2FuaXphdGlvblJlcXVlc3QSIQoPb3JnYW5pemF0aW9uX2lkGAEgASgJQgi6SAVyA7ABARIiChFvcmdhbml6YXRpb25fbmFtZRgCIAEoCUIHukgEcgIQASJLChpVcGRhdGVPcmdhbml6YXRpb25SZXNwb25zZRItCgxvcmdhbml6YXRpb24YASABKAsyFy50YWlsb3IudjEuT3JnYW5pemF0aW9uIjsKFkdldE9yZ2FuaXphdGlvblJlcXVlc3QSIQoPb3JnYW5pemF0aW9uX2lkGAEgASgJQgi6SAVyA7ABASJIChdHZXRPcmdhbml6YXRpb25SZXNwb25zZRItCgxvcmdhbml6YXRpb24YASABKAsyFy50YWlsb3IudjEuT3JnYW5pemF0aW9uInMKGExpc3RPcmdhbml6YXRpb25zUmVxdWVzdBISCgpwYWdlX3Rva2VuGAEgASgJEhEKCXBhZ2Vfc2l6ZRgCIAEoDRIwCg5wYWdlX2RpcmVjdGlvbhgDIAEoDjIYLnRhaWxvci52MS5QYWdlRGlyZWN0aW9uInkKGUxpc3RPcmdhbml6YXRpb25zUmVzcG9uc2USLgoNb3JnYW5pemF0aW9ucxgBIAMoCzIXLnRhaWxvci52MS5Pcmdhbml6YXRpb24SFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJEhMKC3RvdGFsX2NvdW50GAMgASgDIh4KHExpc3RVc2VyT3JnYW5pemF0aW9uc1JlcXVlc3QihwIKHUxpc3RVc2VyT3JnYW5pemF0aW9uc1Jlc3BvbnNlElUKEnVzZXJfb3JnYW5pemF0aW9ucxgBIAMoCzI5LnRhaWxvci52MS5MaXN0VXNlck9yZ2FuaXphdGlvbnNSZXNwb25zZS5Vc2VyT3JnYW5pemF0aW9uGo4BChBVc2VyT3JnYW5pemF0aW9uEhcKD29yZ2FuaXphdGlvbl9pZBgBIAEoCRIZChFvcmdhbml6YXRpb25fbmFtZRgCIAEoCRIWCg5yb290X2ZvbGRlcl9pZBgDIAEoCRIYChByb290X2ZvbGRlcl9uYW1lGAQgASgJEhQKDGRpc3BsYXlfbmFtZRgFIAEoCSLnAQoeR3JhbnRPcmdhbml6YXRpb25BY2Nlc3NSZXF1ZXN0EiEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESNQoEcm9sZRgCIAEoDjIbLnRhaWxvci52MS5Pcmdhbml6YXRpb25Sb2xlQgq6SAeCAQQQASAAEhsKB3RlYW1faWQYAyABKAlCCLpIBXIDsAEBSAASGAoFZW1haWwYBCABKAlCB7pIBHICYAFIABIjCg9tYWNoaW5lX3VzZXJfaWQYBSABKAlCCLpIBXIDsAEBSABCDwoGbWVtYmVyEgW6SAIIASIhCh9HcmFudE9yZ2FuaXphdGlvbkFjY2Vzc1Jlc3BvbnNlIugBCh9VcGRhdGVPcmdhbml6YXRpb25BY2Nlc3NSZXF1ZXN0EiEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESNQoEcm9sZRgCIAEoDjIbLnRhaWxvci52MS5Pcmdhbml6YXRpb25Sb2xlQgq6SAeCAQQQASAAEhsKB3RlYW1faWQYAyABKAlCCLpIBXIDsAEBSAASGAoFZW1haWwYBCABKAlCB7pIBHICYAFIABIjCg9tYWNoaW5lX3VzZXJfaWQYBSABKAlCCLpIBXIDsAEBSABCDwoGbWVtYmVyEgW6SAIIASIiCiBVcGRhdGVPcmdhbml6YXRpb25BY2Nlc3NSZXNwb25zZSKxAQofUmV2b2tlT3JnYW5pemF0aW9uQWNjZXNzUmVxdWVzdBIhCg9vcmdhbml6YXRpb25faWQYASABKAlCCLpIBXIDsAEBEhsKB3RlYW1faWQYAiABKAlCCLpIBXIDsAEBSAASGAoFZW1haWwYAyABKAlCB7pIBHICYAFIABIjCg9tYWNoaW5lX3VzZXJfaWQYBCABKAlCCLpIBXIDsAEBSABCDwoGbWVtYmVyEgW6SAIIASIiCiBSZXZva2VPcmdhbml6YXRpb25BY2Nlc3NSZXNwb25zZSKdAQofTGlzdE9yZ2FuaXphdGlvbkFjY2Vzc2VzUmVxdWVzdBISCgpwYWdlX3Rva2VuGAEgASgJEhEKCXBhZ2Vfc2l6ZRgCIAEoDRIwCg5wYWdlX2RpcmVjdGlvbhgDIAEoDjIYLnRhaWxvci52MS5QYWdlRGlyZWN0aW9uEiEKD29yZ2FuaXphdGlvbl9pZBgEIAEoCUIIukgFcgOwAQEijgEKIExpc3RPcmdhbml6YXRpb25BY2Nlc3Nlc1Jlc3BvbnNlEjwKFW9yZ2FuaXphdGlvbl9hY2Nlc3NlcxgBIAMoCzIdLnRhaWxvci52MS5Pcmdhbml6YXRpb25BY2Nlc3MSFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJEhMKC3RvdGFsX2NvdW50GAMgASgDIq4BChxHZXRPcmdhbml6YXRpb25BY2Nlc3NSZXF1ZXN0EiEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESGwoHdGVhbV9pZBgCIAEoCUIIukgFcgOwAQFIABIYCgVlbWFpbBgDIAEoCUIHukgEcgJgAUgAEiMKD21hY2hpbmVfdXNlcl9pZBgEIAEoCUIIukgFcgOwAQFIAEIPCgZtZW1iZXISBbpIAggBIlsKHUdldE9yZ2FuaXphdGlvbkFjY2Vzc1Jlc3BvbnNlEjoKE29yZ2FuaXphdGlvbl9hY2Nlc3MYASABKAsyHS50YWlsb3IudjEuT3JnYW5pemF0aW9uQWNjZXNzIokBCh9DcmVhdGVPcmdhbml6YXRpb25Gb2xkZXJSZXF1ZXN0EiEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESJQoQcGFyZW50X2ZvbGRlcl9pZBgCIAEoCUILukgI2AEBcgOwAQESHAoLZm9sZGVyX25hbWUYAyABKAlCB7pIBHICEAEiRQogQ3JlYXRlT3JnYW5pemF0aW9uRm9sZGVyUmVzcG9uc2USIQoGZm9sZGVyGAEgASgLMhEudGFpbG9yLnYxLkZvbGRlciKmAQofVXBkYXRlT3JnYW5pemF0aW9uRm9sZGVyUmVxdWVzdBIhCg9vcmdhbml6YXRpb25faWQYASABKAlCCLpIBXIDsAEBEhsKCWZvbGRlcl9pZBgCIAEoCUIIukgFcgOwAQESJQoQcGFyZW50X2ZvbGRlcl9pZBgDIAEoCUILukgI2AEBcgOwAQESHAoLZm9sZGVyX25hbWUYBCABKAlCB7pIBHICEAEiRQogVXBkYXRlT3JnYW5pemF0aW9uRm9sZGVyUmVzcG9uc2USIQoGZm9sZGVyGAEgASgLMhEudGFpbG9yLnYxLkZvbGRlciJhCh9EZWxldGVPcmdhbml6YXRpb25Gb2xkZXJSZXF1ZXN0EiEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESGwoJZm9sZGVyX2lkGAIgASgJQgi6SAVyA7ABASIiCiBEZWxldGVPcmdhbml6YXRpb25Gb2xkZXJSZXNwb25zZSJeChxHZXRPcmdhbml6YXRpb25Gb2xkZXJSZXF1ZXN0EiEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESGwoJZm9sZGVyX2lkGAIgASgJQgi6SAVyA7ABASJCCh1HZXRPcmdhbml6YXRpb25Gb2xkZXJSZXNwb25zZRIhCgZmb2xkZXIYASABKAsyES50YWlsb3IudjEuRm9sZGVyIsMBCh5MaXN0T3JnYW5pemF0aW9uRm9sZGVyc1JlcXVlc3QSEgoKcGFnZV90b2tlbhgBIAEoCRIRCglwYWdlX3NpemUYAiABKA0SMAoOcGFnZV9kaXJlY3Rpb24YAyABKA4yGC50YWlsb3IudjEuUGFnZURpcmVjdGlvbhIhCg9vcmdhbml6YXRpb25faWQYBCABKAlCCLpIBXIDsAEBEiUKEHBhcmVudF9mb2xkZXJfaWQYBSABKAlCC7pICNgBAXIDsAEBInMKH0xpc3RPcmdhbml6YXRpb25Gb2xkZXJzUmVzcG9uc2USFwoPbmV4dF9wYWdlX3Rva2VuGAEgASgJEhMKC3RvdGFsX2NvdW50GAIgASgDEiIKB2ZvbGRlcnMYAyADKAsyES50YWlsb3IudjEuRm9sZGVyIoQCCiRHcmFudE9yZ2FuaXphdGlvbkZvbGRlckFjY2Vzc1JlcXVlc3QSIQoPb3JnYW5pemF0aW9uX2lkGAEgASgJQgi6SAVyA7ABARIbCglmb2xkZXJfaWQYAiABKAlCCLpIBXIDsAEBEi8KBHJvbGUYAyABKA4yFS50YWlsb3IudjEuRm9sZGVyUm9sZUIKukgHggEEEAEgABIbCgd0ZWFtX2lkGAQgASgJQgi6SAVyA7ABAUgAEhgKBWVtYWlsGAUgASgJQge6SARyAmABSAASIwoPbWFjaGluZV91c2VyX2lkGAYgASgJQgi6SAVyA7ABAUgAQg8KBm1lbWJlchIFukgCCAEiJwolR3JhbnRPcmdhbml6YXRpb25Gb2xkZXJBY2Nlc3NSZXNwb25zZSKFAgolVXBkYXRlT3JnYW5pemF0aW9uRm9sZGVyQWNjZXNzUmVxdWVzdBIhCg9vcmdhbml6YXRpb25faWQYASABKAlCCLpIBXIDsAEBEhsKCWZvbGRlcl9pZBgCIAEoCUIIukgFcgOwAQESLwoEcm9sZRgDIAEoDjIVLnRhaWxvci52MS5Gb2xkZXJSb2xlQgq6SAeCAQQQASAAEhsKB3RlYW1faWQYBCABKAlCCLpIBXIDsAEBSAASGAoFZW1haWwYBSABKAlCB7pIBHICYAFIABIjCg9tYWNoaW5lX3VzZXJfaWQYBiABKAlCCLpIBXIDsAEBSABCDwoGbWVtYmVyEgW6SAIIASIoCiZVcGRhdGVPcmdhbml6YXRpb25Gb2xkZXJBY2Nlc3NSZXNwb25zZSLUAQolUmV2b2tlT3JnYW5pemF0aW9uRm9sZGVyQWNjZXNzUmVxdWVzdBIhCg9vcmdhbml6YXRpb25faWQYASABKAlCCLpIBXIDsAEBEhsKCWZvbGRlcl9pZBgCIAEoCUIIukgFcgOwAQESGwoHdGVhbV9pZBgDIAEoCUIIukgFcgOwAQFIABIYCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgAEiMKD21hY2hpbmVfdXNlcl9pZBgFIAEoCUIIukgFcgOwAQFIAEIPCgZtZW1iZXISBbpIAggBIigKJlJldm9rZU9yZ2FuaXphdGlvbkZvbGRlckFjY2Vzc1Jlc3BvbnNlIsABCiVMaXN0T3JnYW5pemF0aW9uRm9sZGVyQWNjZXNzZXNSZXF1ZXN0EhIKCnBhZ2VfdG9rZW4YASABKAkSEQoJcGFnZV9zaXplGAIgASgNEjAKDnBhZ2VfZGlyZWN0aW9uGAMgASgOMhgudGFpbG9yLnYxLlBhZ2VEaXJlY3Rpb24SIQoPb3JnYW5pemF0aW9uX2lkGAQgASgJQgi6SAVyA7ABARIbCglmb2xkZXJfaWQYBSABKAlCCLpIBXIDsAEBIogBCiZMaXN0T3JnYW5pemF0aW9uRm9sZGVyQWNjZXNzZXNSZXNwb25zZRIwCg9mb2xkZXJfYWNjZXNzZXMYASADKAsyFy50YWlsb3IudjEuRm9sZGVyQWNjZXNzEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRITCgt0b3RhbF9jb3VudBgDIAEoAyLRAQoiR2V0T3JnYW5pemF0aW9uRm9sZGVyQWNjZXNzUmVxdWVzdBIhCg9vcmdhbml6YXRpb25faWQYASABKAlCCLpIBXIDsAEBEhsKCWZvbGRlcl9pZBgCIAEoCUIIukgFcgOwAQESGwoHdGVhbV9pZBgDIAEoCUIIukgFcgOwAQFIABIYCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgAEiMKD21hY2hpbmVfdXNlcl9pZBgFIAEoCUIIukgFcgOwAQFIAEIPCgZtZW1iZXISBbpIAggBIlUKI0dldE9yZ2FuaXphdGlvbkZvbGRlckFjY2Vzc1Jlc3BvbnNlEi4KDWZvbGRlcl9hY2Nlc3MYASABKAsyFy50YWlsb3IudjEuRm9sZGVyQWNjZXNzIrIBChlPcmdhbml6YXRpb25JUFJlc3RyaWN0aW9uEhcKD29yZ2FuaXphdGlvbl9pZBgBIAEoCRIcChRhbGxvd2VkX2lwX2FkZHJlc3NlcxgCIAMoCRIuCgpjcmVhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLLAQofT3JnYW5pemF0aW9uRm9sZGVySVBSZXN0cmljdGlvbhIXCg9vcmdhbml6YXRpb25faWQYASABKAkSEQoJZm9sZGVyX2lkGAIgASgJEhwKFGFsbG93ZWRfaXBfYWRkcmVzc2VzGAMgAygJEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wInsKJlVwc2VydE9yZ2FuaXphdGlvbklQUmVzdHJpY3Rpb25SZXF1ZXN0EiEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESLgoUYWxsb3dlZF9pcF9hZGRyZXNzZXMYAiADKAlCELpIDZIBCggBGAEiBHICEAEidAonVXBzZXJ0T3JnYW5pemF0aW9uSVBSZXN0cmljdGlvblJlc3BvbnNlEkkKG29yZ2FuaXphdGlvbl9pcF9yZXN0cmljdGlvbhgBIAEoCzIkLnRhaWxvci52MS5Pcmdhbml6YXRpb25JUFJlc3RyaWN0aW9uIkgKI0dldE9yZ2FuaXphdGlvbklQUmVzdHJpY3Rpb25SZXF1ZXN0EiEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUIIukgFcgOwAQEicQokR2V0T3JnYW5pemF0aW9uSVBSZXN0cmljdGlvblJlc3BvbnNlEkkKG29yZ2FuaXphdGlvbl9pcF9yZXN0cmljdGlvbhgBIAEoCzIkLnRhaWxvci52MS5Pcmdhbml6YXRpb25JUFJlc3RyaWN0aW9uIksKJkRlbGV0ZU9yZ2FuaXphdGlvbklQUmVzdHJpY3Rpb25SZXF1ZXN0EiEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUIIukgFcgOwAQEiKQonRGVsZXRlT3JnYW5pemF0aW9uSVBSZXN0cmljdGlvblJlc3BvbnNlIp4BCixVcHNlcnRPcmdhbml6YXRpb25Gb2xkZXJJUFJlc3RyaWN0aW9uUmVxdWVzdBIhCg9vcmdhbml6YXRpb25faWQYASABKAlCCLpIBXIDsAEBEhsKCWZvbGRlcl9pZBgCIAEoCUIIukgFcgOwAQESLgoUYWxsb3dlZF9pcF9hZGRyZXNzZXMYAyADKAlCELpIDZIBCggBGAEiBHICEAEihwEKLVVwc2VydE9yZ2FuaXphdGlvbkZvbGRlcklQUmVzdHJpY3Rpb25SZXNwb25zZRJWCiJvcmdhbml6YXRpb25fZm9sZGVyX2lwX3Jlc3RyaWN0aW9uGAEgASgLMioudGFpbG9yLnYxLk9yZ2FuaXphdGlvbkZvbGRlcklQUmVzdHJpY3Rpb24iawopR2V0T3JnYW5pemF0aW9uRm9sZGVySVBSZXN0cmljdGlvblJlcXVlc3QSIQoPb3JnYW5pemF0aW9uX2lkGAEgASgJQgi6SAVyA7ABARIbCglmb2xkZXJfaWQYAiABKAlCCLpIBXIDsAEBIoQBCipHZXRPcmdhbml6YXRpb25Gb2xkZXJJUFJlc3RyaWN0aW9uUmVzcG9uc2USVgoib3JnYW5pemF0aW9uX2ZvbGRlcl9pcF9yZXN0cmljdGlvbhgBIAEoCzIqLnRhaWxvci52MS5Pcmdhbml6YXRpb25Gb2xkZXJJUFJlc3RyaWN0aW9uIm4KLERlbGV0ZU9yZ2FuaXphdGlvbkZvbGRlcklQUmVzdHJpY3Rpb25SZXF1ZXN0EiEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESGwoJZm9sZGVyX2lkGAIgASgJQgi6SAVyA7ABASIvCi1EZWxldGVPcmdhbml6YXRpb25Gb2xkZXJJUFJlc3RyaWN0aW9uUmVzcG9uc2UiXgodQ3JlYXRlT3JnYW5pemF0aW9uVGVhbVJlcXVlc3QSIQoPb3JnYW5pemF0aW9uX2lkGAEgASgJQgi6SAVyA7ABARIaCgl0ZWFtX25hbWUYAiABKAlCB7pIBHICEAEiPwoeQ3JlYXRlT3JnYW5pemF0aW9uVGVhbVJlc3BvbnNlEh0KBHRlYW0YASABKAsyDy50YWlsb3IudjEuVGVhbSJ5Ch1VcGRhdGVPcmdhbml6YXRpb25UZWFtUmVxdWVzdBIhCg9vcmdhbml6YXRpb25faWQYASABKAlCCLpIBXIDsAEBEhkKB3RlYW1faWQYAiABKAlCCLpIBXIDsAEBEhoKCXRlYW1fbmFtZRgDIAEoCUIHukgEcgIQASI/Ch5VcGRhdGVPcmdhbml6YXRpb25UZWFtUmVzcG9uc2USHQoEdGVhbRgBIAEoCzIPLnRhaWxvci52MS5UZWFtIl0KHURlbGV0ZU9yZ2FuaXphdGlvblRlYW1SZXF1ZXN0EiEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESGQoHdGVhbV9pZBgCIAEoCUIIukgFcgOwAQEiIAoeRGVsZXRlT3JnYW5pemF0aW9uVGVhbVJlc3BvbnNlIpoBChxMaXN0T3JnYW5pemF0aW9uVGVhbXNSZXF1ZXN0EhIKCnBhZ2VfdG9rZW4YASABKAkSEQoJcGFnZV9zaXplGAIgASgNEjAKDnBhZ2VfZGlyZWN0aW9uGAMgASgOMhgudGFpbG9yLnYxLlBhZ2VEaXJlY3Rpb24SIQoPb3JnYW5pemF0aW9uX2lkGAQgASgJQgi6SAVyA7ABASJtCh1MaXN0T3JnYW5pemF0aW9uVGVhbXNSZXNwb25zZRIeCgV0ZWFtcxgBIAMoCzIPLnRhaWxvci52MS5UZWFtEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRITCgt0b3RhbF9jb3VudBgDIAEoAyJaChpHZXRPcmdhbml6YXRpb25UZWFtUmVxdWVzdBIhCg9vcmdhbml6YXRpb25faWQYASABKAlCCLpIBXIDsAEBEhkKB3RlYW1faWQYAiABKAlCCLpIBXIDsAEBIjwKG0dldE9yZ2FuaXphdGlvblRlYW1SZXNwb25zZRIdCgR0ZWFtGAEgASgLMg8udGFpbG9yLnYxLlRlYW0ipwEKIEFkZE9yZ2FuaXphdGlvblRlYW1NZW1iZXJSZXF1ZXN0EiEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESGQoHdGVhbV9pZBgCIAEoCUIIukgFcgOwAQESFgoFZW1haWwYAyABKAlCB7pIBHICYAESLQoEcm9sZRgEIAEoDjITLnRhaWxvci52MS5UZWFtUm9sZUIKukgHggEEEAEgACIjCiFBZGRPcmdhbml6YXRpb25UZWFtTWVtYmVyUmVzcG9uc2UiqgEKI1VwZGF0ZU9yZ2FuaXphdGlvblRlYW1NZW1iZXJSZXF1ZXN0EiEKD29yZ2FuaXphdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESGQoHdGVhbV9pZBgCIAEoCUIIukgFcgOwAQESFgoFZW1haWwYAyABKAlCB7pIBHICYAESLQoEcm9sZRgEIAEoDjITLnRhaWxvci52MS5UZWFtUm9sZUIKukgHggEEEAEgACImCiRVcGRhdGVPcmdhbml6YXRpb25UZWFtTWVtYmVyUmVzcG9uc2UiewojUmVtb3ZlT3JnYW5pemF0aW9uVGVhbU1lbWJlclJlcXVlc3QSIQoPb3JnYW5pemF0aW9uX2lkGAEgASgJQgi6SAVyA7ABARIZCgd0ZWFtX2lkGAIgASgJQgi6SAVyA7ABARIWCgVlbWFpbBgDIAEoCUIHukgEcgJgASImCiRSZW1vdmVPcmdhbml6YXRpb25UZWFtTWVtYmVyUmVzcG9uc2UiuwEKIkxpc3RPcmdhbml6YXRpb25UZWFtTWVtYmVyc1JlcXVlc3QSEgoKcGFnZV90b2tlbhgBIAEoCRIRCglwYWdlX3NpemUYAiABKA0SMAoOcGFnZV9kaXJlY3Rpb24YAyABKA4yGC50YWlsb3IudjEuUGFnZURpcmVjdGlvbhIhCg9vcmdhbml6YXRpb25faWQYBCABKAlCCLpIBXIDsAEBEhkKB3RlYW1faWQYBSABKAlCCLpIBXIDsAEBIoABCiNMaXN0T3JnYW5pemF0aW9uVGVhbU1lbWJlcnNSZXNwb25zZRIrCgx0ZWFtX21lbWJlcnMYASADKAsyFS50YWlsb3IudjEuVGVhbU1lbWJlchIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkSEwoLdG90YWxfY291bnQYAyABKAMieAogR2V0T3JnYW5pemF0aW9uVGVhbU1lbWJlclJlcXVlc3QSIQoPb3JnYW5pemF0aW9uX2lkGAEgASgJQgi6SAVyA7ABARIZCgd0ZWFtX2lkGAIgASgJQgi6SAVyA7ABARIWCgVlbWFpbBgDIAEoCUIHukgEcgJgASJPCiFHZXRPcmdhbml6YXRpb25UZWFtTWVtYmVyUmVzcG9uc2USKgoLdGVhbV9tZW1iZXIYASABKAsyFS50YWlsb3IudjEuVGVhbU1lbWJlciIfCh1HZXRQbGF0Zm9ybUFjY291bnRQbGFuUmVxdWVzdCJWCh5HZXRQbGF0Zm9ybUFjY291bnRQbGFuUmVzcG9uc2USNAoMY3VycmVudF9wbGFuGAEgASgLMh4udGFpbG9yLnYxLlBsYXRmb3JtQWNjb3VudFBsYW5iBnByb3RvMw`,[g,C,T,p,d,h])]),D=b(E,0),O=b(E,1),k=x(E,0);export{E as i,D as n,O as r,k as t};
|
|
2
|
-
//# sourceMappingURL=service_pb-DprmLNsq.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
function mapFieldTypeToColumnType(e){switch(e){case`uuid`:case`string`:case`decimal`:return`string`;case`integer`:case`float`:return`number`;case`date`:case`datetime`:return`Timestamp`;case`bool`:case`boolean`:return`boolean`;case`enum`:case`nested`:throw Error(`Field type "${e}" has no scalar column type; resolve it before mapping.`);default:return`string`}}const e=new Map([[`Timestamp`,{select:`Date`,write:`Date | string`}]]),t=new TextEncoder;function mapFieldTypeToPostgresType(e){switch(e){case`uuid`:return`uuid`;case`string`:case`enum`:return`text`;case`boolean`:case`bool`:return`boolean`;case`integer`:return`integer`;case`float`:return`double precision`;case`decimal`:return`numeric`;case`date`:return`date`;case`datetime`:return`timestamptz`;case`time`:return`time`;case`nested`:return`jsonb`;default:throw Error(`Field type "${e}" has no PostgreSQL column type.`)}}function identifier(e){return`"${e.replaceAll(`"`,`""`)}"`}function fnv1aHex(e){let n=2166136261;for(let r of t.encode(e))n=Math.imul(n^r,16777619)>>>0;return n.toString(16).padStart(8,`0`)}function derivedIdentifier(e,n,r){let i=`_${fnv1aHex(JSON.stringify([e,n,r]))}_${r}`,a=`${e}_${n}`;for(;t.encode(a+i).length>63;)a=a.slice(0,-1);return identifier(a+i)}function stringLiteral(e){return`'${e.replaceAll(`'`,`''`)}'`}function columnType(e){let t=e.type===`decimal`?`numeric(1000, ${e.scale??6})`:mapFieldTypeToPostgresType(e.type);return e.array&&e.type!==`nested`?`${t}[]`:t}function scalarLiteral(e,t,n){let r=mapFieldTypeToPostgresType(t.type);if(e instanceof Date){if(Number.isNaN(e.getTime()))throw Error(`Default of field ${n} is an invalid Date.`);return`${stringLiteral(e.toISOString())}::${r}`}switch(typeof e){case`string`:return r===`text`?stringLiteral(e):`${stringLiteral(e)}::${r}`;case`number`:if(!Number.isFinite(e))throw Error(`Default of field ${n} is not a finite number.`);return String(e);case`boolean`:return e?`TRUE`:`FALSE`;default:throw Error(`Default of field ${n} cannot be rendered as a SQL literal.`)}}const n=new Map([[`datetime`,`now()`],[`date`,`CURRENT_DATE`],[`time`,`LOCALTIME`]]);function defaultExpression(e,t){let r=e.default,i=n.get(e.type);if(r===`now`&&i!==void 0)return i;if(e.array){if(!Array.isArray(r))throw Error(`Default of array field ${t} must be an array.`);let n=columnType(e);return r.length===0?`'{}'::${n}`:`ARRAY[${r.map(n=>scalarLiteral(n,e,t)).join(`, `)}]::${n}`}return scalarLiteral(r,e,t)}function parseSerialFormat(e,t){let n=/^(?<prefix>[^%]*)%(?<zero>0?)(?<width>\d*)(?<conversion>[a-zA-Z])(?<suffix>[^%]*)$/.exec(e)?.groups,r=n?.conversion;if(!n||r!==`d`&&r!==`x`&&r!==`X`)throw Error(`Serial format "${e}" of field ${t} is not supported; use a single %d, %x, or %X specifier with an optional width (e.g. "INV-%05d").`);return{prefix:n.prefix??``,zeroPad:n.zero===`0`,width:n.width?Number(n.width):0,conversion:r,suffix:n.suffix??``}}function sequenceName(e,t){return derivedIdentifier(e,t,`seq`)}function sequenceRange(e){let t=[`START WITH ${e.start}`,`MINVALUE ${e.start}`];return e.maxValue!==void 0&&t.push(`MAXVALUE ${e.maxValue}`),t.join(` `)}const r={d:e=>e,x:e=>`to_hex(${e})`,X:e=>`upper(to_hex(${e}))`};function serialStringDefault(e,t,n){let i=`nextval(${stringLiteral(e)})`;if(t===void 0)return`(${i}::text)`;let{prefix:a,width:o,zeroPad:s,conversion:c,suffix:l}=parseSerialFormat(t,n),u=r[c](i),d=c===`d`?`${u}::text`:u;return o>0&&(d=`format('%${o}s', ${u})`,s&&(d=`translate(${d}, ' ', '0')`)),`(${[...a?[stringLiteral(a)]:[],d,...l?[stringLiteral(l)]:[]].join(` || `)})`}function columnDefinition(e,t,n){let r=identifier(t),i=`${identifier(e)}.${r}`,a=[r,columnType(n)];if(n.serial)return n.type===`integer`?(a.push(`GENERATED BY DEFAULT AS IDENTITY (${sequenceRange(n.serial)})`),n.unique&&a.push(`UNIQUE`),a.join(` `)):(n.required&&a.push(`NOT NULL`),n.unique&&a.push(`UNIQUE`),a.push(`DEFAULT ${serialStringDefault(sequenceName(e,t),n.serial.format,i)}`),a.join(` `));let o=n.default!==void 0,s=n.hooks?.create!==void 0||n.optionalOnCreate===!0;return n.required&&(o||!s)&&a.push(`NOT NULL`),n.unique&&a.push(`UNIQUE`),o&&a.push(`DEFAULT ${defaultExpression(n,i)}`),a.join(` `)}function generateTableDDL(e){let t=identifier(e.name),n=[],r=[],i=[` "id" uuid PRIMARY KEY DEFAULT gen_random_uuid()`];for(let[a,o]of Object.entries(e.fields))if(a!==`id`){if(o.serial&&o.type!==`integer`){let i=sequenceName(e.name,a);n.push(`CREATE SEQUENCE IF NOT EXISTS ${i} ${sequenceRange(o.serial)}`),r.push(`ALTER SEQUENCE ${i} OWNED BY ${t}.${identifier(a)}`)}i.push(` ${columnDefinition(e.name,a,o)}`)}let a=Object.entries(e.indexes??{}).filter(([,e])=>e.unique).map(([n,r])=>`CREATE UNIQUE INDEX IF NOT EXISTS ${derivedIdentifier(e.name,n,`idx`)} ON ${t} (${r.fields.map(identifier).join(`, `)})`);return[...n,`CREATE TABLE IF NOT EXISTS ${t} (\n${i.join(`,
|
|
2
|
-
`)}\n)`,...r,...a]}function generateSchemaDDL(e){return e.map(e=>generateTableDDL(e).map(e=>`${e};`).join(`
|
|
3
|
-
`)).join(`
|
|
4
|
-
|
|
5
|
-
`)}function templateLiteral(e){return`\`${e.replaceAll(`\\`,`\\\\`).replaceAll("`","\\`").replaceAll("${","\\${").replaceAll(`\r`,`\\r`)}\``}function generatePgliteSchemaModule(e,t){let n=e.map(({namespace:e,tables:t})=>` ${JSON.stringify(e)}: ${templateLiteral(generateSchemaDDL(t))},`);return[`/**`,` * Auto-generated PGlite schema for TailorDB tables.`," * Create a namespace's tables in a test with `pglite.exec(pgliteSchema[namespace])`.",` *`,` * DO NOT EDIT - This file is auto-generated by ${t.generatedBy}.`,` */`,``,`export const pgliteSchema = {`,...n,`} as const;`,``].join(`
|
|
6
|
-
`)}export{e as n,mapFieldTypeToColumnType as r,generatePgliteSchemaModule as t};
|
|
7
|
-
//# sourceMappingURL=tailordb-ddl-Fgm2cNvT.mjs.map
|