@code-yeongyu/senpi 2026.10.21-1 → 2026.10.21-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/bundle/chunks/{anthropic-messages-S5BTP7U2.js → anthropic-messages-2IQD75YN.js} +1 -1
  3. package/dist/bundle/chunks/args-SV2KM4KA.js +2 -0
  4. package/dist/bundle/chunks/azure-openai-responses-HFI6SDH5.js +2 -0
  5. package/dist/bundle/chunks/{chunk-WQLMQGOW.js → chunk-2AJB5S4C.js} +1 -1
  6. package/dist/bundle/chunks/{chunk-XSRM367N.js → chunk-3AK3WUN4.js} +2 -2
  7. package/dist/bundle/chunks/{chunk-6TL72TUD.js → chunk-4HJTPWZY.js} +1 -1
  8. package/dist/bundle/chunks/chunk-4NPBDGC4.js +26 -0
  9. package/dist/bundle/chunks/{chunk-E4WOCULF.js → chunk-4XR5HDWC.js} +72 -69
  10. package/dist/bundle/chunks/{chunk-6IWSMXBA.js → chunk-5GC4IQ3A.js} +1 -1
  11. package/dist/bundle/chunks/{chunk-7I7ZMSBF.js → chunk-A4B4CMOR.js} +1 -1
  12. package/dist/bundle/chunks/chunk-B4N4N7BR.js +8 -0
  13. package/dist/bundle/chunks/{chunk-X23XXKMH.js → chunk-BVFJAXWO.js} +1 -1
  14. package/dist/bundle/chunks/{chunk-25B6JQC4.js → chunk-C3BJRXEV.js} +1 -1
  15. package/dist/bundle/chunks/{chunk-DKBJM22C.js → chunk-CQDU6S6C.js} +2 -2
  16. package/dist/bundle/chunks/{chunk-MF57DS3V.js → chunk-EV4TWAJI.js} +1 -1
  17. package/dist/bundle/chunks/{chunk-JJXDWX46.js → chunk-F3JGTOLH.js} +1 -1
  18. package/dist/bundle/chunks/{chunk-CRY5CP3B.js → chunk-G42JHX5Q.js} +3 -3
  19. package/dist/bundle/chunks/{chunk-5VRI3CME.js → chunk-G7VYQRE7.js} +2 -2
  20. package/dist/bundle/chunks/chunk-GVSBCJFI.js +2 -0
  21. package/dist/bundle/chunks/{chunk-KUZPBZUK.js → chunk-HKDGQE6D.js} +2 -2
  22. package/dist/bundle/chunks/{chunk-HD67U37N.js → chunk-HRV7NEOJ.js} +1 -1
  23. package/dist/bundle/chunks/chunk-JDETIKL7.js +7 -0
  24. package/dist/bundle/chunks/{chunk-MVNVDGYF.js → chunk-JGMG227A.js} +1 -1
  25. package/dist/bundle/chunks/chunk-MHD7SSHF.js +2 -0
  26. package/dist/bundle/chunks/{chunk-CEQMTVYS.js → chunk-MXLEWTWC.js} +2 -2
  27. package/dist/bundle/chunks/{chunk-C5W3D56I.js → chunk-N6UN2SDS.js} +3 -3
  28. package/dist/bundle/chunks/chunk-NTK2MHJ5.js +2 -0
  29. package/dist/bundle/chunks/chunk-OMN4QWFA.js +3 -0
  30. package/dist/bundle/chunks/chunk-PLQ5WRXN.js +2 -0
  31. package/dist/bundle/chunks/{chunk-2MOGCBPT.js → chunk-PUMCQ5HS.js} +1 -1
  32. package/dist/bundle/chunks/{chunk-55YTTFNY.js → chunk-PUQFKAB4.js} +1 -1
  33. package/dist/bundle/chunks/{chunk-IJT3GSB2.js → chunk-SN7PTZTC.js} +1 -1
  34. package/dist/bundle/chunks/{chunk-FWHSGCWR.js → chunk-T2IIUI3J.js} +3 -3
  35. package/dist/bundle/chunks/{chunk-5AOKDC6G.js → chunk-TSETMVJP.js} +1 -1
  36. package/dist/bundle/chunks/{chunk-SR7DBNWN.js → chunk-V6AYNGMX.js} +1 -1
  37. package/dist/bundle/chunks/chunk-VDPJ7W52.js +11 -0
  38. package/dist/bundle/chunks/{chunk-EPQK674G.js → chunk-VLKULV6F.js} +1 -1
  39. package/dist/bundle/chunks/{chunk-SL7TSFR5.js → chunk-VXACHCLB.js} +1 -1
  40. package/dist/bundle/chunks/{chunk-FM7NDZR5.js → chunk-VYSRUDEU.js} +1 -1
  41. package/dist/bundle/chunks/chunk-YMFGBSO3.js +2 -0
  42. package/dist/bundle/chunks/cli-main-RA6EBOOU.js +3 -0
  43. package/dist/bundle/chunks/{cloudflare-workers-ai-system-one-4QEQ7MGK.js → cloudflare-workers-ai-system-one-BVENEDT6.js} +1 -1
  44. package/dist/bundle/chunks/cursor-agent.js +3 -3
  45. package/dist/bundle/chunks/google-generative-ai-ONS2KSGN.js +2 -0
  46. package/dist/bundle/chunks/google-vertex-5VS7ZESH.js +2 -0
  47. package/dist/bundle/chunks/help-fast-path-FZY53UXB.js +2 -0
  48. package/dist/bundle/chunks/host-command-TNUIHEFP.js +2 -0
  49. package/dist/bundle/chunks/{host-lifecycle-EZQ5VCQV.js → host-lifecycle-LDOHAYLK.js} +1 -1
  50. package/dist/bundle/chunks/host-session-command-OKASUQPA.js +20 -0
  51. package/dist/bundle/chunks/interactive-mode-PSGTSURY.js +2 -0
  52. package/dist/bundle/chunks/{mistral-conversations-5EHLE7PZ.js → mistral-conversations-RLDMF2BI.js} +1 -1
  53. package/dist/bundle/chunks/{multi-session-host-OMJZ5VXM.js → multi-session-host-J5BVVUG3.js} +7 -6
  54. package/dist/bundle/chunks/openai-codex-responses-VRIJIZJG.js +10 -0
  55. package/dist/bundle/chunks/{openai-completions-NHDMDAS7.js → openai-completions-EZBOIXHP.js} +2 -2
  56. package/dist/bundle/chunks/{openai-images-PNXQDBSP.js → openai-images-KKM343F2.js} +1 -1
  57. package/dist/bundle/chunks/openai-responses-CMBH3DCY.js +3 -0
  58. package/dist/bundle/chunks/{package-manager-cli-7GQDB5DX.js → package-manager-cli-JHVRG35I.js} +1 -1
  59. package/dist/bundle/chunks/{role-WQWYL4ZD.js → role-LNF5MFGC.js} +1 -1
  60. package/dist/bundle/chunks/rotation-stream-JK3Q4IWI.js +2 -0
  61. package/dist/bundle/chunks/rpc-mode-HVSPPRTT.js +2 -0
  62. package/dist/bundle/chunks/{rpc-monitor-source-FI7H7LGY.js → rpc-monitor-source-2DQZLFFJ.js} +1 -1
  63. package/dist/bundle/chunks/{runtime-session-IQAKNRTV.js → runtime-session-CLNODAYE.js} +1 -1
  64. package/dist/bundle/chunks/{schedule-command-XXJC4QQN.js → schedule-command-OMI4VWUV.js} +1 -1
  65. package/dist/bundle/chunks/session-control-endpoint-UPYF4OFP.js +3 -0
  66. package/dist/bundle/chunks/session-picker-NR7CRVNQ.js +2 -0
  67. package/dist/bundle/chunks/session-worker.js +143 -139
  68. package/dist/bundle/chunks/{typesafe-system-one-W2ZTYF7X.js → typesafe-system-one-PJIWA5SP.js} +1 -1
  69. package/dist/bundle/cli.js +2 -2
  70. package/dist/bundle/index.js +1 -1
  71. package/dist/bundle/rpc-entry.js +1 -1
  72. package/dist/bundle/runtime-manifest.json +1 -1
  73. package/dist/cli/host-command.d.ts +2 -0
  74. package/dist/cli/host-command.js +14 -19
  75. package/dist/cli/host-handover-args.d.ts +4 -0
  76. package/dist/cli/host-handover-args.js +20 -0
  77. package/dist/core/agent-session.d.ts +29 -1
  78. package/dist/core/agent-session.js +74 -19
  79. package/dist/core/auth-storage.d.ts +44 -1
  80. package/dist/core/auth-storage.js +120 -3
  81. package/dist/core/client-message-identity.d.ts +3 -0
  82. package/dist/core/credential-accounts.d.ts +2 -0
  83. package/dist/core/credential-accounts.js +8 -1
  84. package/dist/core/credential-pool/rotation-slots.js +3 -2
  85. package/dist/core/extensions/builtin/account/index.js +6 -1
  86. package/dist/core/extensions/builtin/compaction/openai-remote.d.ts +2 -1
  87. package/dist/core/extensions/builtin/compaction/openai-remote.js +6 -5
  88. package/dist/core/extensions/builtin/goal/provider-retry.d.ts +2 -2
  89. package/dist/core/extensions/builtin/goal/provider-retry.js +18 -6
  90. package/dist/core/extensions/builtin/terminal/command-monitor-source.d.ts +17 -4
  91. package/dist/core/extensions/builtin/terminal/command-monitor-source.js +33 -6
  92. package/dist/core/extensions/builtin/terminal/durable-command.js +1 -0
  93. package/dist/core/extensions/builtin/terminal/extension.js +28 -0
  94. package/dist/core/extensions/builtin/terminal/monitor-notify-details.d.ts +6 -0
  95. package/dist/core/extensions/builtin/terminal/monitor-notify-details.js +19 -0
  96. package/dist/core/extensions/builtin/terminal/monitor-notify-format.d.ts +18 -0
  97. package/dist/core/extensions/builtin/terminal/monitor-notify-format.js +52 -0
  98. package/dist/core/extensions/builtin/terminal/monitor-notify.d.ts +8 -1
  99. package/dist/core/extensions/builtin/terminal/monitor-notify.js +65 -119
  100. package/dist/core/extensions/builtin/terminal/monitor-overflow-file.d.ts +7 -0
  101. package/dist/core/extensions/builtin/terminal/monitor-overflow-file.js +67 -0
  102. package/dist/core/extensions/builtin/terminal/monitor-overflow.d.ts +37 -0
  103. package/dist/core/extensions/builtin/terminal/monitor-overflow.js +75 -0
  104. package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts +10 -0
  105. package/dist/core/extensions/builtin/terminal/monitor-registry.js +24 -1
  106. package/dist/core/extensions/builtin/terminal/monitor-types.d.ts +5 -0
  107. package/dist/core/extensions/builtin/terminal/monitor-wake-fit.d.ts +9 -0
  108. package/dist/core/extensions/builtin/terminal/monitor-wake-fit.js +34 -0
  109. package/dist/core/extensions/builtin/terminal/monitor-wake-pacing.d.ts +10 -0
  110. package/dist/core/extensions/builtin/terminal/monitor-wake-pacing.js +41 -0
  111. package/dist/core/extensions/builtin/terminal/restore-session.js +2 -0
  112. package/dist/core/extensions/builtin/terminal/rpc-monitor-observer.js +5 -1
  113. package/dist/core/extensions/builtin/terminal/settings.d.ts +10 -0
  114. package/dist/core/extensions/builtin/terminal/settings.js +13 -1
  115. package/dist/core/extensions/builtin/terminal/shared.d.ts +17 -10
  116. package/dist/core/extensions/builtin/terminal/shared.js +19 -10
  117. package/dist/core/extensions/builtin/terminal/terminal-manifest-model.d.ts +3 -0
  118. package/dist/core/extensions/builtin/terminal/terminal-manifest-parse.js +7 -0
  119. package/dist/core/extensions/builtin/terminal/terminal-manifest.js +1 -0
  120. package/dist/core/extensions/builtin/terminal/tools/monitor-schema.d.ts +1 -0
  121. package/dist/core/extensions/builtin/terminal/tools/monitor-schema.js +6 -1
  122. package/dist/core/extensions/builtin/terminal/tools/monitor.d.ts +1 -0
  123. package/dist/core/extensions/builtin/terminal/tools/monitor.js +9 -1
  124. package/dist/core/extensions/builtin/tps.js +1 -8
  125. package/dist/core/extensions/loader.js +3 -1
  126. package/dist/core/extensions/runner.d.ts +1 -0
  127. package/dist/core/extensions/runner.js +12 -1
  128. package/dist/core/extensions/types.d.ts +3 -1
  129. package/dist/core/session-manager.d.ts +10 -1
  130. package/dist/core/session-manager.js +4 -3
  131. package/dist/core/terminal-settings.d.ts +3 -0
  132. package/dist/index.d.ts +1 -1
  133. package/dist/main.d.ts +14 -0
  134. package/dist/main.js +25 -8
  135. package/dist/modes/index.d.ts +1 -0
  136. package/dist/modes/index.js +1 -0
  137. package/dist/modes/interactive/components/footer.js +4 -2
  138. package/dist/modes/interactive/interactive-mode.d.ts +5 -0
  139. package/dist/modes/interactive/interactive-mode.js +13 -1
  140. package/dist/modes/rpc/client-admission-record.d.ts +5 -0
  141. package/dist/modes/rpc/client-admission-record.js +2 -0
  142. package/dist/modes/rpc/connection-handler.d.ts +3 -0
  143. package/dist/modes/rpc/connection-handler.js +33 -5
  144. package/dist/modes/rpc/connection-roles.d.ts +30 -0
  145. package/dist/modes/rpc/connection-roles.js +53 -0
  146. package/dist/modes/rpc/custom-capability.d.ts +6 -0
  147. package/dist/modes/rpc/custom-capability.js +6 -0
  148. package/dist/modes/rpc/host-capabilities.js +2 -1
  149. package/dist/modes/rpc/host-decision.d.ts +4 -1
  150. package/dist/modes/rpc/host-decision.js +6 -3
  151. package/dist/modes/rpc/host-ensure-liveness.d.ts +11 -0
  152. package/dist/modes/rpc/host-ensure-liveness.js +26 -0
  153. package/dist/modes/rpc/host-ensure.js +2 -3
  154. package/dist/modes/rpc/host-holder.d.ts +27 -0
  155. package/dist/modes/rpc/host-holder.js +18 -0
  156. package/dist/modes/rpc/host-runner.d.ts +2 -0
  157. package/dist/modes/rpc/host-runner.js +8 -1
  158. package/dist/modes/rpc/host-status-all.js +1 -0
  159. package/dist/modes/rpc/host-status.d.ts +1 -0
  160. package/dist/modes/rpc/host-status.js +5 -0
  161. package/dist/modes/rpc/host-stop-generation.d.ts +22 -0
  162. package/dist/modes/rpc/host-stop-generation.js +36 -0
  163. package/dist/modes/rpc/host-stop-start-time.d.ts +15 -0
  164. package/dist/modes/rpc/host-stop-start-time.js +30 -0
  165. package/dist/modes/rpc/host-stop.d.ts +13 -1
  166. package/dist/modes/rpc/host-stop.js +78 -9
  167. package/dist/modes/rpc/rpc-client.d.ts +9 -0
  168. package/dist/modes/rpc/rpc-client.js +15 -0
  169. package/dist/modes/rpc/rpc-types.d.ts +18 -0
  170. package/dist/modes/rpc/rpc-types.js +2 -0
  171. package/dist/modes/rpc/session-binding.d.ts +1 -1
  172. package/dist/modes/rpc/session-command-router.d.ts +1 -0
  173. package/dist/modes/rpc/session-command-router.js +13 -0
  174. package/dist/modes/rpc/session-worker-client.d.ts +1 -1
  175. package/dist/modes/rpc/session-worker-client.js +12 -1
  176. package/dist/modes/rpc/session-worker-protocol.d.ts +3 -0
  177. package/dist/modes/rpc/session-worker.js +9 -0
  178. package/docs/rpc.md +54 -2
  179. package/docs/session-format.md +5 -0
  180. package/package.json +6 -6
  181. package/dist/bundle/chunks/args-CRXNC7IS.js +0 -2
  182. package/dist/bundle/chunks/azure-openai-responses-2DCY6QKO.js +0 -2
  183. package/dist/bundle/chunks/chunk-5ZBDN3LB.js +0 -26
  184. package/dist/bundle/chunks/chunk-AEJUOQ7U.js +0 -2
  185. package/dist/bundle/chunks/chunk-LAWS3FYQ.js +0 -11
  186. package/dist/bundle/chunks/chunk-LM76EMEJ.js +0 -7
  187. package/dist/bundle/chunks/chunk-M237EDHB.js +0 -2
  188. package/dist/bundle/chunks/chunk-V6RY5A6T.js +0 -2
  189. package/dist/bundle/chunks/chunk-WIAXG52U.js +0 -2
  190. package/dist/bundle/chunks/chunk-WTFD4TII.js +0 -8
  191. package/dist/bundle/chunks/chunk-Z33PKFXM.js +0 -3
  192. package/dist/bundle/chunks/cli-main-RKC5Z25H.js +0 -3
  193. package/dist/bundle/chunks/google-generative-ai-3SKUSCIL.js +0 -2
  194. package/dist/bundle/chunks/google-vertex-YHSIIE4G.js +0 -2
  195. package/dist/bundle/chunks/help-fast-path-FWS5ARO5.js +0 -2
  196. package/dist/bundle/chunks/host-command-L66Y7ZL5.js +0 -2
  197. package/dist/bundle/chunks/host-session-command-2YNQNTEH.js +0 -20
  198. package/dist/bundle/chunks/interactive-mode-XOKTNBLA.js +0 -2
  199. package/dist/bundle/chunks/openai-codex-responses-4BIPACKV.js +0 -10
  200. package/dist/bundle/chunks/openai-responses-2UOPEJLP.js +0 -3
  201. package/dist/bundle/chunks/rotation-stream-J2NUPRMG.js +0 -2
  202. package/dist/bundle/chunks/rpc-mode-WM5WH7TH.js +0 -2
  203. package/dist/bundle/chunks/session-control-endpoint-MTOAYRRY.js +0 -3
  204. package/dist/bundle/chunks/session-picker-LU7BPLNI.js +0 -2
@@ -15,7 +15,7 @@ Run independent searches and reads together in one batch. Keep dependent steps i
15
15
 
16
16
  A task is finished when the requested behavior is in place and you have watched it work: the relevant test, build, or command run, and its output read. Until you have that, keep going. If something remains unproven or broken, say which part and why.
17
17
 
18
- When asked a question, answer it from the code and stop there. Edit when a change was requested or when a fix is confirmed.`,COMPOSER_MODEL_ID_PATTERN=/(?:^|[/:._-])composer(?:[/:._-]|\d|$)/i;function isCursorComposerModel(modelId){return COMPOSER_MODEL_ID_PATTERN.test(modelId)}var FifoQueue=class{constructor(){this.incoming=[],this.outgoing=[]}get length(){return this.incoming.length+this.outgoing.length}enqueue(value){this.incoming.push(value)}dequeue(){if(this.outgoing.length===0)for(;this.incoming.length>0;)this.outgoing.push(this.incoming.pop());return this.outgoing.pop()}},EventStream=class{#queue;#queueHead;#failed;#error;#localWorkDepth;constructor(isComplete,extractResult){this.#queue=[],this.#queueHead=0,this.waiting=new FifoQueue,this.done=!1,this.#failed=!1,this.#localWorkDepth=0,this.isComplete=isComplete,this.extractResult=extractResult,this.finalResultPromise=new Promise((resolve,reject)=>{this.resolveFinalResult=resolve,this.rejectFinalResult=reject}),this.finalResultPromise.catch(()=>{})}get queue(){return this.#queue.slice(this.#queueHead)}#enqueue(event){this.#queue.push(event)}#dequeue(){let event=this.#queue[this.#queueHead];if(event===void 0)throw new Error("EventStream queue underflow");return this.#queueHead++,this.#queueHead>1024&&this.#queueHead*2>=this.#queue.length&&(this.#queue=this.#queue.slice(this.#queueHead),this.#queueHead=0),event}push(event){if(this.done)return;this.isComplete(event)&&(this.done=!0,this.resolveFinalResult(this.extractResult(event)));let waiter=this.waiting.dequeue();waiter?waiter.resolve({value:event,done:!1}):this.#enqueue(event)}end(result){for(this.done=!0,result!==void 0&&this.resolveFinalResult(result);this.waiting.length>0;){let waiter=this.waiting.dequeue();waiter&&waiter.resolve({value:void 0,done:!0})}}fail(error){if(!this.done)for(this.done=!0,this.#failed=!0,this.#error=error,this.rejectFinalResult(error);this.waiting.length>0;){let waiter=this.waiting.dequeue();waiter&&waiter.reject(error)}}[Symbol.asyncIterator](){return{next:()=>this.#queueHead<this.#queue.length?Promise.resolve({value:this.#dequeue(),done:!1}):this.#failed?Promise.reject(this.#error):this.done?Promise.resolve({value:void 0,done:!0}):new Promise((resolve,reject)=>this.waiting.enqueue({resolve,reject}))}}result(){return this.finalResultPromise}async trackLocalWork(work){this.#localWorkDepth++;try{return await work}finally{this.#localWorkDepth--}}hasPendingLocalWork(){return this.#localWorkDepth>0}},AssistantMessageEventStream=class extends EventStream{constructor(){super(event=>event.type==="done"||event.type==="error",event=>{if(event.type==="done")return event.message;if(event.type==="error")return event.error;throw new Error("Unexpected event type for final result")})}};function costCardAt(cost,atMs){let card=cost,startedAt=Number.NEGATIVE_INFINITY;for(let rate of cost.effectiveRates??[]){let from=Date.parse(rate.effectiveFrom);from<=atMs&&from>startedAt&&(card=rate,startedAt=from)}return card}function contentText(content,separator=`
18
+ When asked a question, answer it from the code and stop there. Edit when a change was requested or when a fix is confirmed.`,COMPOSER_MODEL_ID_PATTERN=/(?:^|[/:._-])composer(?:[/:._-]|\d|$)/i;function isCursorComposerModel(modelId){return COMPOSER_MODEL_ID_PATTERN.test(modelId)}var CURSOR_MULTIMODAL_ID_PATTERN=/^default$|claude|gemini|gpt-|codex|kimi-k3|muse-|cursor-grok-4\.[56]/;function cursorDiscoveredInput(modelId){return CURSOR_MULTIMODAL_ID_PATTERN.test(modelId.toLowerCase())?["text","image"]:["text"]}var FifoQueue=class{constructor(){this.incoming=[],this.outgoing=[]}get length(){return this.incoming.length+this.outgoing.length}enqueue(value){this.incoming.push(value)}dequeue(){if(this.outgoing.length===0)for(;this.incoming.length>0;)this.outgoing.push(this.incoming.pop());return this.outgoing.pop()}},EventStream=class{#queue;#queueHead;#failed;#error;#localWorkDepth;constructor(isComplete,extractResult){this.#queue=[],this.#queueHead=0,this.waiting=new FifoQueue,this.done=!1,this.#failed=!1,this.#localWorkDepth=0,this.isComplete=isComplete,this.extractResult=extractResult,this.finalResultPromise=new Promise((resolve,reject)=>{this.resolveFinalResult=resolve,this.rejectFinalResult=reject}),this.finalResultPromise.catch(()=>{})}get queue(){return this.#queue.slice(this.#queueHead)}#enqueue(event){this.#queue.push(event)}#dequeue(){let event=this.#queue[this.#queueHead];if(event===void 0)throw new Error("EventStream queue underflow");return this.#queueHead++,this.#queueHead>1024&&this.#queueHead*2>=this.#queue.length&&(this.#queue=this.#queue.slice(this.#queueHead),this.#queueHead=0),event}push(event){if(this.done)return;this.isComplete(event)&&(this.done=!0,this.resolveFinalResult(this.extractResult(event)));let waiter=this.waiting.dequeue();waiter?waiter.resolve({value:event,done:!1}):this.#enqueue(event)}end(result){for(this.done=!0,result!==void 0&&this.resolveFinalResult(result);this.waiting.length>0;){let waiter=this.waiting.dequeue();waiter&&waiter.resolve({value:void 0,done:!0})}}fail(error){if(!this.done)for(this.done=!0,this.#failed=!0,this.#error=error,this.rejectFinalResult(error);this.waiting.length>0;){let waiter=this.waiting.dequeue();waiter&&waiter.reject(error)}}[Symbol.asyncIterator](){return{next:()=>this.#queueHead<this.#queue.length?Promise.resolve({value:this.#dequeue(),done:!1}):this.#failed?Promise.reject(this.#error):this.done?Promise.resolve({value:void 0,done:!0}):new Promise((resolve,reject)=>this.waiting.enqueue({resolve,reject}))}}result(){return this.finalResultPromise}async trackLocalWork(work){this.#localWorkDepth++;try{return await work}finally{this.#localWorkDepth--}}hasPendingLocalWork(){return this.#localWorkDepth>0}},AssistantMessageEventStream=class extends EventStream{constructor(){super(event=>event.type==="done"||event.type==="error",event=>{if(event.type==="done")return event.message;if(event.type==="error")return event.error;throw new Error("Unexpected event type for final result")})}};function costCardAt(cost,atMs){let card=cost,startedAt=Number.NEGATIVE_INFINITY;for(let rate of cost.effectiveRates??[]){let from=Date.parse(rate.effectiveFrom);from<=atMs&&from>startedAt&&(card=rate,startedAt=from)}return card}function contentText(content,separator=`
19
19
  `){return typeof content=="string"?content:content.filter(block=>block.type==="text").map(block=>block.text).join(separator)}function getSystemMessageText(message){let parts=[contentText(message.content)];for(let text of Object.values(message.sections??{}))text!==null&&parts.push(text);return parts.filter(part=>part.length>0).join(`
20
20
 
21
21
  `)}function isSystemMessage(message){return message.role==="system"}function getCurrentTools(messages){let tools=new Map;for(let message of messages)if(isSystemMessage(message)){for(let tool of message.toolsRemoved??[])tools.delete(tool.name);for(let tool of message.toolsAdded??[])tools.set(tool.name,tool)}return[...tools.values()]}function getCurrentSystemMessage(messages){let content=[],sections=new Map,timestamp;for(let message of messages){if(!isSystemMessage(message))continue;timestamp??=message.timestamp;let text=contentText(message.content);text.length>0&&content.push(text);for(let[name,value]of Object.entries(message.sections??{}))value===null?sections.delete(name):sections.set(name,value)}let tools=getCurrentTools(messages);if(!(timestamp===void 0&&tools.length===0))return{role:"system",content:content.join(`
@@ -25,7 +25,7 @@ When asked a question, answer it from the code and stop there. Edit when a chang
25
25
  `:return"\\n";case"\r":return"\\r";case" ":return"\\t";default:return`\\u${char.codePointAt(0)?.toString(16).padStart(4,"0")??"0000"}`}}function repairJson(json){let repaired="",inString=!1;for(let index=0;index<json.length;index++){let char=json[index];if(!inString){repaired+=char,char==='"'&&(inString=!0);continue}if(char==='"'){repaired+=char,inString=!1;continue}if(char==="\\"){let nextChar=json[index+1];if(nextChar===void 0){repaired+="\\\\";continue}if(nextChar==="u"){let unicodeDigits=json.slice(index+2,index+6);if(/^[0-9a-fA-F]{4}$/.test(unicodeDigits)){repaired+=`\\u${unicodeDigits}`,index+=5;continue}}if(VALID_JSON_ESCAPES.has(nextChar)){repaired+=`\\${nextChar}`,index+=1;continue}repaired+="\\\\";continue}repaired+=isControlCharacter(char)?escapeControlCharacter(char):char}return repaired}function parseJsonWithRepair(json){try{return JSON.parse(json)}catch(error){let repairedJson=repairJson(json);if(repairedJson!==json)return JSON.parse(repairedJson);throw error}}function parseStreamingJson(partialJson){if(!partialJson||partialJson.trim()==="")return{};try{return parseJsonWithRepair(partialJson)}catch{try{return(0,import_partial_json.parse)(partialJson)??{}}catch{try{return(0,import_partial_json.parse)(repairJson(partialJson))??{}}catch{return{}}}}}function sanitizeSurrogates(text){return text.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"")}import{createHash}from"node:crypto";function deterministicUuid(seed){let hex=createHash("sha256").update(seed).digest("hex");return`${hex.slice(0,8)}-${hex.slice(8,12)}-${hex.slice(12,16)}-${hex.slice(16,20)}-${hex.slice(20,32)}`}function armExecHeartbeat(options){let active=!0,timer,schedule=()=>{!active||options.isClosed()||(timer=setTimeout(()=>{timer=void 0,!(!active||options.isClosed())&&options.writeHeartbeat(error=>{error||!active||options.isClosed()||schedule()})},options.intervalMs))};return schedule(),()=>{active=!1,timer!==void 0&&(clearTimeout(timer),timer=void 0)}}var file_agent=fileDesc("CgthZ2VudC5wcm90bxIIYWdlbnQudjEicgoOR2xvYlRvb2xSZXN1bHQSLAoHc3VjY2VzcxgBIAEoCzIZLmFnZW50LnYxLkdsb2JUb29sU3VjY2Vzc0gAEigKBWVycm9yGAIgASgLMhcuYWdlbnQudjEuR2xvYlRvb2xFcnJvckgAQggKBnJlc3VsdCIeCg1HbG9iVG9vbEVycm9yEg0KBWVycm9yGAEgASgJIokBCg9HbG9iVG9vbFN1Y2Nlc3MSDwoHcGF0dGVybhgBIAEoCRIMCgRwYXRoGAIgASgJEg0KBWZpbGVzGAMgAygJEhMKC3RvdGFsX2ZpbGVzGAQgASgFEhgKEGNsaWVudF90cnVuY2F0ZWQYBSABKAgSGQoRcmlwZ3JlcF90cnVuY2F0ZWQYBiABKAgiRgoMR2xvYlRvb2xDYWxsEgwKBGFyZ3MYASABKAwSKAoGcmVzdWx0GAIgASgLMhguYWdlbnQudjEuR2xvYlRvb2xSZXN1bHQibQoRUmVhZExpbnRzVG9vbENhbGwSKQoEYXJncxgBIAEoCzIbLmFnZW50LnYxLlJlYWRMaW50c1Rvb2xBcmdzEi0KBnJlc3VsdBgCIAEoCzIdLmFnZW50LnYxLlJlYWRMaW50c1Rvb2xSZXN1bHQiIgoRUmVhZExpbnRzVG9vbEFyZ3MSDQoFcGF0aHMYASADKAkigQEKE1JlYWRMaW50c1Rvb2xSZXN1bHQSMQoHc3VjY2VzcxgBIAEoCzIeLmFnZW50LnYxLlJlYWRMaW50c1Rvb2xTdWNjZXNzSAASLQoFZXJyb3IYAiABKAsyHC5hZ2VudC52MS5SZWFkTGludHNUb29sRXJyb3JIAEIICgZyZXN1bHQiewoUUmVhZExpbnRzVG9vbFN1Y2Nlc3MSMwoQZmlsZV9kaWFnbm9zdGljcxgBIAMoCzIZLmFnZW50LnYxLkZpbGVEaWFnbm9zdGljcxITCgt0b3RhbF9maWxlcxgCIAEoBRIZChF0b3RhbF9kaWFnbm9zdGljcxgDIAEoBSJpCg9GaWxlRGlhZ25vc3RpY3MSDAoEcGF0aBgBIAEoCRItCgtkaWFnbm9zdGljcxgCIAMoCzIYLmFnZW50LnYxLkRpYWdub3N0aWNJdGVtEhkKEWRpYWdub3N0aWNzX2NvdW50GAMgASgFIqsBCg5EaWFnbm9zdGljSXRlbRIuCghzZXZlcml0eRgBIAEoDjIcLmFnZW50LnYxLkRpYWdub3N0aWNTZXZlcml0eRIoCgVyYW5nZRgCIAEoCzIZLmFnZW50LnYxLkRpYWdub3N0aWNSYW5nZRIPCgdtZXNzYWdlGAMgASgJEg4KBnNvdXJjZRgEIAEoCRIMCgRjb2RlGAUgASgJEhAKCGlzX3N0YWxlGAYgASgIIlUKD0RpYWdub3N0aWNSYW5nZRIhCgVzdGFydBgBIAEoCzISLmFnZW50LnYxLlBvc2l0aW9uEh8KA2VuZBgCIAEoCzISLmFnZW50LnYxLlBvc2l0aW9uIisKElJlYWRMaW50c1Rvb2xFcnJvchIVCg1lcnJvcl9tZXNzYWdlGAEgASgJIj0KDE1jcFRvb2xFcnJvchINCgVlcnJvchgBIAEoCRIeChZyZWFkX3Rvb2xfZGVmX3JlbWluZGVyGAIgASgJItIBCg1NY3BUb29sUmVzdWx0EicKB3N1Y2Nlc3MYASABKAsyFC5hZ2VudC52MS5NY3BTdWNjZXNzSAASJwoFZXJyb3IYAiABKAsyFi5hZ2VudC52MS5NY3BUb29sRXJyb3JIABIpCghyZWplY3RlZBgDIAEoCzIVLmFnZW50LnYxLk1jcFJlamVjdGVkSAASOgoRcGVybWlzc2lvbl9kZW5pZWQYBCABKAsyHS5hZ2VudC52MS5NY3BQZXJtaXNzaW9uRGVuaWVkSABCCAoGcmVzdWx0IoEBCgtNY3BUb29sQ2FsbBIfCgRhcmdzGAEgASgLMhEuYWdlbnQudjEuTWNwQXJncxInCgZyZXN1bHQYAiABKAsyFy5hZ2VudC52MS5NY3BUb29sUmVzdWx0EhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQFCDgoMX2Rlc2NyaXB0aW9uIm0KEVNlbVNlYXJjaFRvb2xDYWxsEikKBGFyZ3MYASABKAsyGy5hZ2VudC52MS5TZW1TZWFyY2hUb29sQXJncxItCgZyZXN1bHQYAiABKAsyHS5hZ2VudC52MS5TZW1TZWFyY2hUb29sUmVzdWx0IlMKEVNlbVNlYXJjaFRvb2xBcmdzEg0KBXF1ZXJ5GAEgASgJEhoKEnRhcmdldF9kaXJlY3RvcmllcxgCIAMoCRITCgtleHBsYW5hdGlvbhgDIAEoCSKBAQoTU2VtU2VhcmNoVG9vbFJlc3VsdBIxCgdzdWNjZXNzGAEgASgLMh4uYWdlbnQudjEuU2VtU2VhcmNoVG9vbFN1Y2Nlc3NIABItCgVlcnJvchgCIAEoCzIcLmFnZW50LnYxLlNlbVNlYXJjaFRvb2xFcnJvckgAQggKBnJlc3VsdCI9ChRTZW1TZWFyY2hUb29sU3VjY2VzcxIPCgdyZXN1bHRzGAEgASgJEhQKDGNvZGVfcmVzdWx0cxgCIAMoDCIrChJTZW1TZWFyY2hUb29sRXJyb3ISFQoNZXJyb3JfbWVzc2FnZRgBIAEoCSKCAQoYTGlzdE1jcFJlc291cmNlc1Rvb2xDYWxsEjAKBGFyZ3MYASABKAsyIi5hZ2VudC52MS5MaXN0TWNwUmVzb3VyY2VzRXhlY0FyZ3MSNAoGcmVzdWx0GAIgASgLMiQuYWdlbnQudjEuTGlzdE1jcFJlc291cmNlc0V4ZWNSZXN1bHQifwoXUmVhZE1jcFJlc291cmNlVG9vbENhbGwSLwoEYXJncxgBIAEoCzIhLmFnZW50LnYxLlJlYWRNY3BSZXNvdXJjZUV4ZWNBcmdzEjMKBnJlc3VsdBgCIAEoCzIjLmFnZW50LnYxLlJlYWRNY3BSZXNvdXJjZUV4ZWNSZXN1bHQiWQoNRmV0Y2hUb29sQ2FsbBIhCgRhcmdzGAEgASgLMhMuYWdlbnQudjEuRmV0Y2hBcmdzEiUKBnJlc3VsdBgCIAEoCzIVLmFnZW50LnYxLkZldGNoUmVzdWx0Im4KFFJlY29yZFNjcmVlblRvb2xDYWxsEigKBGFyZ3MYASABKAsyGi5hZ2VudC52MS5SZWNvcmRTY3JlZW5BcmdzEiwKBnJlc3VsdBgCIAEoCzIcLmFnZW50LnYxLlJlY29yZFNjcmVlblJlc3VsdCJ3ChdXcml0ZVNoZWxsU3RkaW5Ub29sQ2FsbBIrCgRhcmdzGAEgASgLMh0uYWdlbnQudjEuV3JpdGVTaGVsbFN0ZGluQXJncxIvCgZyZXN1bHQYAiABKAsyHy5hZ2VudC52MS5Xcml0ZVNoZWxsU3RkaW5SZXN1bHQisQEKC1JlZmxlY3RBcmdzEiIKGnVuZXhwZWN0ZWRfYWN0aW9uX291dGNvbWVzGAEgASgJEh0KFXJlbGV2YW50X2luc3RydWN0aW9ucxgCIAEoCRIZChFzY2VuYXJpb19hbmFseXNpcxgDIAEoCRIaChJjcml0aWNhbF9zeW50aGVzaXMYBCABKAkSEgoKbmV4dF9zdGVwcxgFIAEoCRIUCgx0b29sX2NhbGxfaWQYBiABKAkibwoNUmVmbGVjdFJlc3VsdBIrCgdzdWNjZXNzGAEgASgLMhguYWdlbnQudjEuUmVmbGVjdFN1Y2Nlc3NIABInCgVlcnJvchgCIAEoCzIWLmFnZW50LnYxLlJlZmxlY3RFcnJvckgAQggKBnJlc3VsdCIQCg5SZWZsZWN0U3VjY2VzcyIdCgxSZWZsZWN0RXJyb3ISDQoFZXJyb3IYASABKAkiXwoPUmVmbGVjdFRvb2xDYWxsEiMKBGFyZ3MYASABKAsyFS5hZ2VudC52MS5SZWZsZWN0QXJncxInCgZyZXN1bHQYAiABKAsyFy5hZ2VudC52MS5SZWZsZWN0UmVzdWx0IlkKF1N0YXJ0R3JpbmRFeGVjdXRpb25BcmdzEhgKC2V4cGxhbmF0aW9uGAEgASgJSACIAQESFAoMdG9vbF9jYWxsX2lkGAIgASgJQg4KDF9leHBsYW5hdGlvbiKTAQoZU3RhcnRHcmluZEV4ZWN1dGlvblJlc3VsdBI3CgdzdWNjZXNzGAEgASgLMiQuYWdlbnQudjEuU3RhcnRHcmluZEV4ZWN1dGlvblN1Y2Nlc3NIABIzCgVlcnJvchgCIAEoCzIiLmFnZW50LnYxLlN0YXJ0R3JpbmRFeGVjdXRpb25FcnJvckgAQggKBnJlc3VsdCIcChpTdGFydEdyaW5kRXhlY3V0aW9uU3VjY2VzcyIpChhTdGFydEdyaW5kRXhlY3V0aW9uRXJyb3ISDQoFZXJyb3IYASABKAkigwEKG1N0YXJ0R3JpbmRFeGVjdXRpb25Ub29sQ2FsbBIvCgRhcmdzGAEgASgLMiEuYWdlbnQudjEuU3RhcnRHcmluZEV4ZWN1dGlvbkFyZ3MSMwoGcmVzdWx0GAIgASgLMiMuYWdlbnQudjEuU3RhcnRHcmluZEV4ZWN1dGlvblJlc3VsdCJYChZTdGFydEdyaW5kUGxhbm5pbmdBcmdzEhgKC2V4cGxhbmF0aW9uGAEgASgJSACIAQESFAoMdG9vbF9jYWxsX2lkGAIgASgJQg4KDF9leHBsYW5hdGlvbiKQAQoYU3RhcnRHcmluZFBsYW5uaW5nUmVzdWx0EjYKB3N1Y2Nlc3MYASABKAsyIy5hZ2VudC52MS5TdGFydEdyaW5kUGxhbm5pbmdTdWNjZXNzSAASMgoFZXJyb3IYAiABKAsyIS5hZ2VudC52MS5TdGFydEdyaW5kUGxhbm5pbmdFcnJvckgAQggKBnJlc3VsdCIbChlTdGFydEdyaW5kUGxhbm5pbmdTdWNjZXNzIigKF1N0YXJ0R3JpbmRQbGFubmluZ0Vycm9yEg0KBWVycm9yGAEgASgJIoABChpTdGFydEdyaW5kUGxhbm5pbmdUb29sQ2FsbBIuCgRhcmdzGAEgASgLMiAuYWdlbnQudjEuU3RhcnRHcmluZFBsYW5uaW5nQXJncxIyCgZyZXN1bHQYAiABKAsyIi5hZ2VudC52MS5TdGFydEdyaW5kUGxhbm5pbmdSZXN1bHQinAEKCFRhc2tBcmdzEhMKC2Rlc2NyaXB0aW9uGAEgASgJEg4KBnByb21wdBgCIAEoCRItCg1zdWJhZ2VudF90eXBlGAMgASgLMhYuYWdlbnQudjEuU3ViYWdlbnRUeXBlEhIKBW1vZGVsGAQgASgJSACIAQESEwoGcmVzdW1lGAUgASgJSAGIAQFCCAoGX21vZGVsQgkKB19yZXN1bWUiqgEKC1Rhc2tTdWNjZXNzEjYKEmNvbnZlcnNhdGlvbl9zdGVwcxgBIAMoCzIaLmFnZW50LnYxLkNvbnZlcnNhdGlvblN0ZXASFQoIYWdlbnRfaWQYAiABKAlIAIgBARIVCg1pc19iYWNrZ3JvdW5kGAMgASgIEhgKC2R1cmF0aW9uX21zGAQgASgESAGIAQFCCwoJX2FnZW50X2lkQg4KDF9kdXJhdGlvbl9tcyIaCglUYXNrRXJyb3ISDQoFZXJyb3IYASABKAkiZgoKVGFza1Jlc3VsdBIoCgdzdWNjZXNzGAEgASgLMhUuYWdlbnQudjEuVGFza1N1Y2Nlc3NIABIkCgVlcnJvchgCIAEoCzITLmFnZW50LnYxLlRhc2tFcnJvckgAQggKBnJlc3VsdCJWCgxUYXNrVG9vbENhbGwSIAoEYXJncxgBIAEoCzISLmFnZW50LnYxLlRhc2tBcmdzEiQKBnJlc3VsdBgCIAEoCzIULmFnZW50LnYxLlRhc2tSZXN1bHQiTAoRVGFza1Rvb2xDYWxsRGVsdGESNwoSaW50ZXJhY3Rpb25fdXBkYXRlGAEgASgLMhsuYWdlbnQudjEuSW50ZXJhY3Rpb25VcGRhdGUihhQKCFRvb2xDYWxsEjIKD3NoZWxsX3Rvb2xfY2FsbBgBIAEoCzIXLmFnZW50LnYxLlNoZWxsVG9vbENhbGxIABI0ChBkZWxldGVfdG9vbF9jYWxsGAMgASgLMhguYWdlbnQudjEuRGVsZXRlVG9vbENhbGxIABIwCg5nbG9iX3Rvb2xfY2FsbBgEIAEoCzIWLmFnZW50LnYxLkdsb2JUb29sQ2FsbEgAEjAKDmdyZXBfdG9vbF9jYWxsGAUgASgLMhYuYWdlbnQudjEuR3JlcFRvb2xDYWxsSAASMAoOcmVhZF90b29sX2NhbGwYCCABKAsyFi5hZ2VudC52MS5SZWFkVG9vbENhbGxIABI/ChZ1cGRhdGVfdG9kb3NfdG9vbF9jYWxsGAkgASgLMh0uYWdlbnQudjEuVXBkYXRlVG9kb3NUb29sQ2FsbEgAEjsKFHJlYWRfdG9kb3NfdG9vbF9jYWxsGAogASgLMhsuYWdlbnQudjEuUmVhZFRvZG9zVG9vbENhbGxIABIwCg5lZGl0X3Rvb2xfY2FsbBgMIAEoCzIWLmFnZW50LnYxLkVkaXRUb29sQ2FsbEgAEiwKDGxzX3Rvb2xfY2FsbBgNIAEoCzIULmFnZW50LnYxLkxzVG9vbENhbGxIABI7ChRyZWFkX2xpbnRzX3Rvb2xfY2FsbBgOIAEoCzIbLmFnZW50LnYxLlJlYWRMaW50c1Rvb2xDYWxsSAASLgoNbWNwX3Rvb2xfY2FsbBgPIAEoCzIVLmFnZW50LnYxLk1jcFRvb2xDYWxsSAASOwoUc2VtX3NlYXJjaF90b29sX2NhbGwYECABKAsyGy5hZ2VudC52MS5TZW1TZWFyY2hUb29sQ2FsbEgAEj0KFWNyZWF0ZV9wbGFuX3Rvb2xfY2FsbBgRIAEoCzIcLmFnZW50LnYxLkNyZWF0ZVBsYW5Ub29sQ2FsbEgAEjsKFHdlYl9zZWFyY2hfdG9vbF9jYWxsGBIgASgLMhsuYWdlbnQudjEuV2ViU2VhcmNoVG9vbENhbGxIABIwCg50YXNrX3Rvb2xfY2FsbBgTIAEoCzIWLmFnZW50LnYxLlRhc2tUb29sQ2FsbEgAEkoKHGxpc3RfbWNwX3Jlc291cmNlc190b29sX2NhbGwYFCABKAsyIi5hZ2VudC52MS5MaXN0TWNwUmVzb3VyY2VzVG9vbENhbGxIABJIChtyZWFkX21jcF9yZXNvdXJjZV90b29sX2NhbGwYFSABKAsyIS5hZ2VudC52MS5SZWFkTWNwUmVzb3VyY2VUb29sQ2FsbEgAEkYKGmFwcGx5X2FnZW50X2RpZmZfdG9vbF9jYWxsGBYgASgLMiAuYWdlbnQudjEuQXBwbHlBZ2VudERpZmZUb29sQ2FsbEgAEj8KFmFza19xdWVzdGlvbl90b29sX2NhbGwYFyABKAsyHS5hZ2VudC52MS5Bc2tRdWVzdGlvblRvb2xDYWxsSAASMgoPZmV0Y2hfdG9vbF9jYWxsGBggASgLMhcuYWdlbnQudjEuRmV0Y2hUb29sQ2FsbEgAEj0KFXN3aXRjaF9tb2RlX3Rvb2xfY2FsbBgZIAEoCzIcLmFnZW50LnYxLlN3aXRjaE1vZGVUb29sQ2FsbEgAEjsKFGV4YV9zZWFyY2hfdG9vbF9jYWxsGBogASgLMhsuYWdlbnQudjEuRXhhU2VhcmNoVG9vbENhbGxIABI5ChNleGFfZmV0Y2hfdG9vbF9jYWxsGBsgASgLMhouYWdlbnQudjEuRXhhRmV0Y2hUb29sQ2FsbEgAEkMKGGdlbmVyYXRlX2ltYWdlX3Rvb2xfY2FsbBgcIAEoCzIfLmFnZW50LnYxLkdlbmVyYXRlSW1hZ2VUb29sQ2FsbEgAEkEKF3JlY29yZF9zY3JlZW5fdG9vbF9jYWxsGB0gASgLMh4uYWdlbnQudjEuUmVjb3JkU2NyZWVuVG9vbENhbGxIABI/ChZjb21wdXRlcl91c2VfdG9vbF9jYWxsGB4gASgLMh0uYWdlbnQudjEuQ29tcHV0ZXJVc2VUb29sQ2FsbEgAEkgKG3dyaXRlX3NoZWxsX3N0ZGluX3Rvb2xfY2FsbBgfIAEoCzIhLmFnZW50LnYxLldyaXRlU2hlbGxTdGRpblRvb2xDYWxsSAASNgoRcmVmbGVjdF90b29sX2NhbGwYICABKAsyGS5hZ2VudC52MS5SZWZsZWN0VG9vbENhbGxIABJOCh5zZXR1cF92bV9lbnZpcm9ubWVudF90b29sX2NhbGwYISABKAsyJC5hZ2VudC52MS5TZXR1cFZtRW52aXJvbm1lbnRUb29sQ2FsbEgAEjoKE3RydW5jYXRlZF90b29sX2NhbGwYIiABKAsyGy5hZ2VudC52MS5UcnVuY2F0ZWRUb29sQ2FsbEgAElAKH3N0YXJ0X2dyaW5kX2V4ZWN1dGlvbl90b29sX2NhbGwYIyABKAsyJS5hZ2VudC52MS5TdGFydEdyaW5kRXhlY3V0aW9uVG9vbENhbGxIABJOCh5zdGFydF9ncmluZF9wbGFubmluZ190b29sX2NhbGwYJCABKAsyJC5hZ2VudC52MS5TdGFydEdyaW5kUGxhbm5pbmdUb29sQ2FsbEgAEjUKEXBpX3JlYWRfdG9vbF9jYWxsGD0gASgLMhguYWdlbnQudjEuUGlSZWFkVG9vbENhbGxIABI1ChFwaV9iYXNoX3Rvb2xfY2FsbBg+IAEoCzIYLmFnZW50LnYxLlBpQmFzaFRvb2xDYWxsSAASNQoRcGlfZWRpdF90b29sX2NhbGwYPyABKAsyGC5hZ2VudC52MS5QaUVkaXRUb29sQ2FsbEgAEjcKEnBpX3dyaXRlX3Rvb2xfY2FsbBhAIAEoCzIZLmFnZW50LnYxLlBpV3JpdGVUb29sQ2FsbEgAEjUKEXBpX2dyZXBfdG9vbF9jYWxsGEEgASgLMhguYWdlbnQudjEuUGlHcmVwVG9vbENhbGxIABI1ChFwaV9maW5kX3Rvb2xfY2FsbBhCIAEoCzIYLmFnZW50LnYxLlBpRmluZFRvb2xDYWxsSAASMQoPcGlfbHNfdG9vbF9jYWxsGEMgASgLMhYuYWdlbnQudjEuUGlMc1Rvb2xDYWxsSAASPQoVY29ubmVjdF9zY21fdG9vbF9jYWxsGEQgASgLMhwuYWdlbnQudjEuQ29ubmVjdFNjbVRvb2xDYWxsSAASTwoec2VhcmNoX2NvbnZlcnNhdGlvbnNfdG9vbF9jYWxsGEUgASgLMiUuYWdlbnQudjEuU2VhcmNoQ29udmVyc2F0aW9uc1Rvb2xDYWxsSAASGQoMdG9vbF9jYWxsX2lkGDkgASgJSAGIAQFCBgoEdG9vbEIPCg1fdG9vbF9jYWxsX2lkIhcKFVRydW5jYXRlZFRvb2xDYWxsQXJncyIaChhUcnVuY2F0ZWRUb29sQ2FsbFN1Y2Nlc3MiJwoWVHJ1bmNhdGVkVG9vbENhbGxFcnJvchINCgVlcnJvchgBIAEoCSKNAQoXVHJ1bmNhdGVkVG9vbENhbGxSZXN1bHQSNQoHc3VjY2VzcxgBIAEoCzIiLmFnZW50LnYxLlRydW5jYXRlZFRvb2xDYWxsU3VjY2Vzc0gAEjEKBWVycm9yGAIgASgLMiAuYWdlbnQudjEuVHJ1bmNhdGVkVG9vbENhbGxFcnJvckgAQggKBnJlc3VsdCKUAQoRVHJ1bmNhdGVkVG9vbENhbGwSHQoVb3JpZ2luYWxfc3RlcF9ibG9iX2lkGAEgASgMEi0KBGFyZ3MYAiABKAsyHy5hZ2VudC52MS5UcnVuY2F0ZWRUb29sQ2FsbEFyZ3MSMQoGcmVzdWx0GAMgASgLMiEuYWdlbnQudjEuVHJ1bmNhdGVkVG9vbENhbGxSZXN1bHQi0QEKDVRvb2xDYWxsRGVsdGESPQoVc2hlbGxfdG9vbF9jYWxsX2RlbHRhGAEgASgLMhwuYWdlbnQudjEuU2hlbGxUb29sQ2FsbERlbHRhSAASOwoUdGFza190b29sX2NhbGxfZGVsdGEYAiABKAsyGy5hZ2VudC52MS5UYXNrVG9vbENhbGxEZWx0YUgAEjsKFGVkaXRfdG9vbF9jYWxsX2RlbHRhGAMgASgLMhsuYWdlbnQudjEuRWRpdFRvb2xDYWxsRGVsdGFIAEIHCgVkZWx0YSK2AQoQQ29udmVyc2F0aW9uU3RlcBI3ChFhc3Npc3RhbnRfbWVzc2FnZRgBIAEoCzIaLmFnZW50LnYxLkFzc2lzdGFudE1lc3NhZ2VIABInCgl0b29sX2NhbGwYAiABKAsyEi5hZ2VudC52MS5Ub29sQ2FsbEgAEjUKEHRoaW5raW5nX21lc3NhZ2UYAyABKAsyGS5hZ2VudC52MS5UaGlua2luZ01lc3NhZ2VIAEIJCgdtZXNzYWdlIoEEChJDb252ZXJzYXRpb25BY3Rpb24SOgoTdXNlcl9tZXNzYWdlX2FjdGlvbhgBIAEoCzIbLmFnZW50LnYxLlVzZXJNZXNzYWdlQWN0aW9uSAASLwoNcmVzdW1lX2FjdGlvbhgCIAEoCzIWLmFnZW50LnYxLlJlc3VtZUFjdGlvbkgAEi8KDWNhbmNlbF9hY3Rpb24YAyABKAsyFi5hZ2VudC52MS5DYW5jZWxBY3Rpb25IABI1ChBzdW1tYXJpemVfYWN0aW9uGAQgASgLMhkuYWdlbnQudjEuU3VtbWFyaXplQWN0aW9uSAASPAoUc2hlbGxfY29tbWFuZF9hY3Rpb24YBSABKAsyHC5hZ2VudC52MS5TaGVsbENvbW1hbmRBY3Rpb25IABI2ChFzdGFydF9wbGFuX2FjdGlvbhgGIAEoCzIZLmFnZW50LnYxLlN0YXJ0UGxhbkFjdGlvbkgAEjoKE2V4ZWN1dGVfcGxhbl9hY3Rpb24YByABKAsyGy5hZ2VudC52MS5FeGVjdXRlUGxhbkFjdGlvbkgAEloKJGFzeW5jX2Fza19xdWVzdGlvbl9jb21wbGV0aW9uX2FjdGlvbhgIIAEoCzIqLmFnZW50LnYxLkFzeW5jQXNrUXVlc3Rpb25Db21wbGV0aW9uQWN0aW9uSABCCAoGYWN0aW9uIr8BChFVc2VyTWVzc2FnZUFjdGlvbhIrCgx1c2VyX21lc3NhZ2UYASABKAsyFS5hZ2VudC52MS5Vc2VyTWVzc2FnZRIxCg9yZXF1ZXN0X2NvbnRleHQYAiABKAsyGC5hZ2VudC52MS5SZXF1ZXN0Q29udGV4dBIpChxzZW5kX3RvX2ludGVyYWN0aW9uX2xpc3RlbmVyGAMgASgISACIAQFCHwodX3NlbmRfdG9faW50ZXJhY3Rpb25fbGlzdGVuZXIiDgoMQ2FuY2VsQWN0aW9uIkEKDFJlc3VtZUFjdGlvbhIxCg9yZXF1ZXN0X2NvbnRleHQYAiABKAsyGC5hZ2VudC52MS5SZXF1ZXN0Q29udGV4dCKgAQogQXN5bmNBc2tRdWVzdGlvbkNvbXBsZXRpb25BY3Rpb24SHQoVb3JpZ2luYWxfdG9vbF9jYWxsX2lkGAEgASgJEjAKDW9yaWdpbmFsX2FyZ3MYAiABKAsyGS5hZ2VudC52MS5Bc2tRdWVzdGlvbkFyZ3MSKwoGcmVzdWx0GAMgASgLMhsuYWdlbnQudjEuQXNrUXVlc3Rpb25SZXN1bHQiEQoPU3VtbWFyaXplQWN0aW9uIlQKElNoZWxsQ29tbWFuZEFjdGlvbhItCg1zaGVsbF9jb21tYW5kGAEgASgLMhYuYWdlbnQudjEuU2hlbGxDb21tYW5kEg8KB2V4ZWNfaWQYAiABKAkiggEKD1N0YXJ0UGxhbkFjdGlvbhIrCgx1c2VyX21lc3NhZ2UYASABKAsyFS5hZ2VudC52MS5Vc2VyTWVzc2FnZRIxCg9yZXF1ZXN0X2NvbnRleHQYAiABKAsyGC5hZ2VudC52MS5SZXF1ZXN0Q29udGV4dBIPCgdpc19zcGVjGAMgASgIIuIBChFFeGVjdXRlUGxhbkFjdGlvbhIxCg9yZXF1ZXN0X2NvbnRleHQYASABKAsyGC5hZ2VudC52MS5SZXF1ZXN0Q29udGV4dBItCgRwbGFuGAIgASgLMhouYWdlbnQudjEuQ29udmVyc2F0aW9uUGxhbkgAiAEBEhoKDXBsYW5fZmlsZV91cmkYAyABKAlIAYgBARIeChFwbGFuX2ZpbGVfY29udGVudBgEIAEoCUgCiAEBQgcKBV9wbGFuQhAKDl9wbGFuX2ZpbGVfdXJpQhQKEl9wbGFuX2ZpbGVfY29udGVudCLoAgoLVXNlck1lc3NhZ2USDAoEdGV4dBgBIAEoCRISCgptZXNzYWdlX2lkGAIgASgJEjgKEHNlbGVjdGVkX2NvbnRleHQYAyABKAsyGS5hZ2VudC52MS5TZWxlY3RlZENvbnRleHRIAIgBARIMCgRtb2RlGAQgASgFEh0KEGlzX3NpbXVsYXRlZF9tc2cYBSABKAhIAYgBARIfChJiZXN0X29mX25fZ3JvdXBfaWQYBiABKAlIAogBARIoCht0cnlfdXNlX2Jlc3Rfb2Zfbl9wcm9tb3Rpb24YByABKAhIA4gBARIWCglyaWNoX3RleHQYCCABKAlIBIgBAUITChFfc2VsZWN0ZWRfY29udGV4dEITChFfaXNfc2ltdWxhdGVkX21zZ0IVChNfYmVzdF9vZl9uX2dyb3VwX2lkQh4KHF90cnlfdXNlX2Jlc3Rfb2Zfbl9wcm9tb3Rpb25CDAoKX3JpY2hfdGV4dCIgChBBc3Npc3RhbnRNZXNzYWdlEgwKBHRleHQYASABKAkiNAoPVGhpbmtpbmdNZXNzYWdlEgwKBHRleHQYASABKAkSEwoLZHVyYXRpb25fbXMYAiABKA0iHwoMU2hlbGxDb21tYW5kEg8KB2NvbW1hbmQYASABKAkiQAoLU2hlbGxPdXRwdXQSDgoGc3Rkb3V0GAEgASgJEg4KBnN0ZGVychgCIAEoCRIRCglleGl0X2NvZGUYAyABKAUiogEKEENvbnZlcnNhdGlvblR1cm4SQgoXYWdlbnRfY29udmVyc2F0aW9uX3R1cm4YASABKAsyHy5hZ2VudC52MS5BZ2VudENvbnZlcnNhdGlvblR1cm5IABJCChdzaGVsbF9jb252ZXJzYXRpb25fdHVybhgCIAEoCzIfLmFnZW50LnYxLlNoZWxsQ29udmVyc2F0aW9uVHVybkgAQgYKBHR1cm4iIAoQQ29udmVyc2F0aW9uUGxhbhIMCgRwbGFuGAEgASgJIr0BChlDb252ZXJzYXRpb25UdXJuU3RydWN0dXJlEksKF2FnZW50X2NvbnZlcnNhdGlvbl90dXJuGAEgASgLMiguYWdlbnQudjEuQWdlbnRDb252ZXJzYXRpb25UdXJuU3RydWN0dXJlSAASSwoXc2hlbGxfY29udmVyc2F0aW9uX3R1cm4YAiABKAsyKC5hZ2VudC52MS5TaGVsbENvbnZlcnNhdGlvblR1cm5TdHJ1Y3R1cmVIAEIGCgR0dXJuIpcBChVBZ2VudENvbnZlcnNhdGlvblR1cm4SKwoMdXNlcl9tZXNzYWdlGAEgASgLMhUuYWdlbnQudjEuVXNlck1lc3NhZ2USKQoFc3RlcHMYAiADKAsyGi5hZ2VudC52MS5Db252ZXJzYXRpb25TdGVwEhcKCnJlcXVlc3RfaWQYAyABKAlIAIgBAUINCgtfcmVxdWVzdF9pZCJtCh5BZ2VudENvbnZlcnNhdGlvblR1cm5TdHJ1Y3R1cmUSFAoMdXNlcl9tZXNzYWdlGAEgASgMEg0KBXN0ZXBzGAIgAygMEhcKCnJlcXVlc3RfaWQYAyABKAlIAIgBAUINCgtfcmVxdWVzdF9pZCJzChVTaGVsbENvbnZlcnNhdGlvblR1cm4SLQoNc2hlbGxfY29tbWFuZBgBIAEoCzIWLmFnZW50LnYxLlNoZWxsQ29tbWFuZBIrCgxzaGVsbF9vdXRwdXQYAiABKAsyFS5hZ2VudC52MS5TaGVsbE91dHB1dCJNCh5TaGVsbENvbnZlcnNhdGlvblR1cm5TdHJ1Y3R1cmUSFQoNc2hlbGxfY29tbWFuZBgBIAEoDBIUCgxzaGVsbF9vdXRwdXQYAiABKAwiJgoTQ29udmVyc2F0aW9uU3VtbWFyeRIPCgdzdW1tYXJ5GAEgASgJIngKGkNvbnZlcnNhdGlvblN1bW1hcnlBcmNoaXZlEhsKE3N1bW1hcml6ZWRfbWVzc2FnZXMYASADKAwSDwoHc3VtbWFyeRgCIAEoCRITCgt3aW5kb3dfdGFpbBgDIAEoDRIXCg9zdW1tYXJ5X21lc3NhZ2UYBCABKAwiQwoYQ29udmVyc2F0aW9uVG9rZW5EZXRhaWxzEhMKC3VzZWRfdG9rZW5zGAEgASgNEhIKCm1heF90b2tlbnMYAiABKA0iXwoJRmlsZVN0YXRlEhQKB2NvbnRlbnQYASABKAlIAIgBARIcCg9pbml0aWFsX2NvbnRlbnQYAiABKAlIAYgBAUIKCghfY29udGVudEISChBfaW5pdGlhbF9jb250ZW50ImgKEkZpbGVTdGF0ZVN0cnVjdHVyZRIUCgdjb250ZW50GAEgASgMSACIAQESHAoPaW5pdGlhbF9jb250ZW50GAIgASgMSAGIAQFCCgoIX2NvbnRlbnRCEgoQX2luaXRpYWxfY29udGVudCI3CgpTdGVwVGltaW5nEhMKC2R1cmF0aW9uX21zGAEgASgEEhQKDHRpbWVzdGFtcF9tcxgCIAEoBCL2BAoRQ29udmVyc2F0aW9uU3RhdGUSIQoZcm9vdF9wcm9tcHRfbWVzc2FnZXNfanNvbhgBIAMoCRIpCgV0dXJucxgIIAMoCzIaLmFnZW50LnYxLkNvbnZlcnNhdGlvblR1cm4SIQoFdG9kb3MYAyADKAsyEi5hZ2VudC52MS5Ub2RvSXRlbRIaChJwZW5kaW5nX3Rvb2xfY2FsbHMYBCADKAkSOQoNdG9rZW5fZGV0YWlscxgFIAEoCzIiLmFnZW50LnYxLkNvbnZlcnNhdGlvblRva2VuRGV0YWlscxIzCgdzdW1tYXJ5GAYgASgLMh0uYWdlbnQudjEuQ29udmVyc2F0aW9uU3VtbWFyeUgAiAEBEi0KBHBsYW4YByABKAsyGi5hZ2VudC52MS5Db252ZXJzYXRpb25QbGFuSAGIAQESQgoPc3VtbWFyeV9hcmNoaXZlGAkgASgLMiQuYWdlbnQudjEuQ29udmVyc2F0aW9uU3VtbWFyeUFyY2hpdmVIAogBARJACgtmaWxlX3N0YXRlcxgKIAMoCzIrLmFnZW50LnYxLkNvbnZlcnNhdGlvblN0YXRlLkZpbGVTdGF0ZXNFbnRyeRI+ChBzdW1tYXJ5X2FyY2hpdmVzGAsgAygLMiQuYWdlbnQudjEuQ29udmVyc2F0aW9uU3VtbWFyeUFyY2hpdmUaRgoPRmlsZVN0YXRlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLmFnZW50LnYxLkZpbGVTdGF0ZToCOAFCCgoIX3N1bW1hcnlCBwoFX3BsYW5CEgoQX3N1bW1hcnlfYXJjaGl2ZSLHAQoWU3ViYWdlbnRQZXJzaXN0ZWRTdGF0ZRJAChJjb252ZXJzYXRpb25fc3RhdGUYASABKAsyJC5hZ2VudC52MS5Db252ZXJzYXRpb25TdGF0ZVN0cnVjdHVyZRIcChRjcmVhdGVkX3RpbWVzdGFtcF9tcxgCIAEoBBIeChZsYXN0X3VzZWRfdGltZXN0YW1wX21zGAMgASgEEi0KDXN1YmFnZW50X3R5cGUYBCABKAsyFi5hZ2VudC52MS5TdWJhZ2VudFR5cGUitwcKGkNvbnZlcnNhdGlvblN0YXRlU3RydWN0dXJlEhEKCXR1cm5zX29sZBgCIAMoDBIhChlyb290X3Byb21wdF9tZXNzYWdlc19qc29uGAEgAygMEg0KBXR1cm5zGAggAygMEg0KBXRvZG9zGAMgAygMEhoKEnBlbmRpbmdfdG9vbF9jYWxscxgEIAMoCRI5Cg10b2tlbl9kZXRhaWxzGAUgASgLMiIuYWdlbnQudjEuQ29udmVyc2F0aW9uVG9rZW5EZXRhaWxzEhQKB3N1bW1hcnkYBiABKAxIAIgBARIRCgRwbGFuGAcgASgMSAGIAQESHwoXcHJldmlvdXNfd29ya3NwYWNlX3VyaXMYCSADKAkSEQoEbW9kZRgKIAEoBUgCiAEBEhwKD3N1bW1hcnlfYXJjaGl2ZRgLIAEoDEgDiAEBEkkKC2ZpbGVfc3RhdGVzGAwgAygLMjQuYWdlbnQudjEuQ29udmVyc2F0aW9uU3RhdGVTdHJ1Y3R1cmUuRmlsZVN0YXRlc0VudHJ5Ek4KDmZpbGVfc3RhdGVzX3YyGA8gAygLMjYuYWdlbnQudjEuQ29udmVyc2F0aW9uU3RhdGVTdHJ1Y3R1cmUuRmlsZVN0YXRlc1YyRW50cnkSGAoQc3VtbWFyeV9hcmNoaXZlcxgNIAMoDBIqCgx0dXJuX3RpbWluZ3MYDiADKAsyFC5hZ2VudC52MS5TdGVwVGltaW5nElEKD3N1YmFnZW50X3N0YXRlcxgQIAMoCzI4LmFnZW50LnYxLkNvbnZlcnNhdGlvblN0YXRlU3RydWN0dXJlLlN1YmFnZW50U3RhdGVzRW50cnkSGgoSc2VsZl9zdW1tYXJ5X2NvdW50GBEgASgNEhIKCnJlYWRfcGF0aHMYEiADKAkaMQoPRmlsZVN0YXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDDoCOAEaUQoRRmlsZVN0YXRlc1YyRW50cnkSCwoDa2V5GAEgASgJEisKBXZhbHVlGAIgASgLMhwuYWdlbnQudjEuRmlsZVN0YXRlU3RydWN0dXJlOgI4ARpXChNTdWJhZ2VudFN0YXRlc0VudHJ5EgsKA2tleRgBIAEoCRIvCgV2YWx1ZRgCIAEoCzIgLmFnZW50LnYxLlN1YmFnZW50UGVyc2lzdGVkU3RhdGU6AjgBQgoKCF9zdW1tYXJ5QgcKBV9wbGFuQgcKBV9tb2RlQhIKEF9zdW1tYXJ5X2FyY2hpdmUiEQoPVGhpbmtpbmdEZXRhaWxzIkgKEUFwaUtleUNyZWRlbnRpYWxzEg8KB2FwaV9rZXkYASABKAkSFQoIYmFzZV91cmwYAiABKAlIAIgBAUILCglfYmFzZV91cmwiSQoQQXp1cmVDcmVkZW50aWFscxIPCgdhcGlfa2V5GAEgASgJEhAKCGJhc2VfdXJsGAIgASgJEhIKCmRlcGxveW1lbnQYAyABKAkiegoSQmVkcm9ja0NyZWRlbnRpYWxzEhIKCmFjY2Vzc19rZXkYASABKAkSEgoKc2VjcmV0X2tleRgCIAEoCRIOCgZyZWdpb24YAyABKAkSGgoNc2Vzc2lvbl90b2tlbhgEIAEoCUgAiAEBQhAKDl9zZXNzaW9uX3Rva2VuIrEDCgxNb2RlbERldGFpbHMSEAoIbW9kZWxfaWQYASABKAkSGAoQZGlzcGxheV9tb2RlbF9pZBgDIAEoCRIUCgxkaXNwbGF5X25hbWUYBCABKAkSGgoSZGlzcGxheV9uYW1lX3Nob3J0GAUgASgJEg8KB2FsaWFzZXMYBiADKAkSOAoQdGhpbmtpbmdfZGV0YWlscxgCIAEoCzIZLmFnZW50LnYxLlRoaW5raW5nRGV0YWlsc0gBiAEBEhUKCG1heF9tb2RlGAcgASgISAKIAQESOgoTYXBpX2tleV9jcmVkZW50aWFscxgIIAEoCzIbLmFnZW50LnYxLkFwaUtleUNyZWRlbnRpYWxzSAASNwoRYXp1cmVfY3JlZGVudGlhbHMYCSABKAsyGi5hZ2VudC52MS5BenVyZUNyZWRlbnRpYWxzSAASOwoTYmVkcm9ja19jcmVkZW50aWFscxgKIAEoCzIcLmFnZW50LnYxLkJlZHJvY2tDcmVkZW50aWFsc0gAQg0KC2NyZWRlbnRpYWxzQhMKEV90aGlua2luZ19kZXRhaWxzQgsKCV9tYXhfbW9kZSK3AgoOUmVxdWVzdGVkTW9kZWwSEAoIbW9kZWxfaWQYASABKAkSEAoIbWF4X21vZGUYAiABKAgSQAoKcGFyYW1ldGVycxgDIAMoCzIsLmFnZW50LnYxLlJlcXVlc3RlZE1vZGVsX01vZGVsUGFyYW1ldGVyYnl0ZXMSOgoTYXBpX2tleV9jcmVkZW50aWFscxgEIAEoCzIbLmFnZW50LnYxLkFwaUtleUNyZWRlbnRpYWxzSAASNwoRYXp1cmVfY3JlZGVudGlhbHMYBSABKAsyGi5hZ2VudC52MS5BenVyZUNyZWRlbnRpYWxzSAASOwoTYmVkcm9ja19jcmVkZW50aWFscxgGIAEoCzIcLmFnZW50LnYxLkJlZHJvY2tDcmVkZW50aWFsc0gAQg0KC2NyZWRlbnRpYWxzIj8KIlJlcXVlc3RlZE1vZGVsX01vZGVsUGFyYW1ldGVyYnl0ZXMSCgoCaWQYASABKAkSDQoFdmFsdWUYAiABKAkiuQQKD0FnZW50UnVuUmVxdWVzdBJAChJjb252ZXJzYXRpb25fc3RhdGUYASABKAsyJC5hZ2VudC52MS5Db252ZXJzYXRpb25TdGF0ZVN0cnVjdHVyZRIsCgZhY3Rpb24YAiABKAsyHC5hZ2VudC52MS5Db252ZXJzYXRpb25BY3Rpb24SLQoNbW9kZWxfZGV0YWlscxgDIAEoCzIWLmFnZW50LnYxLk1vZGVsRGV0YWlscxI2Cg9yZXF1ZXN0ZWRfbW9kZWwYCSABKAsyGC5hZ2VudC52MS5SZXF1ZXN0ZWRNb2RlbEgAiAEBEiUKCW1jcF90b29scxgEIAEoCzISLmFnZW50LnYxLk1jcFRvb2xzEhwKD2NvbnZlcnNhdGlvbl9pZBgFIAEoCUgBiAEBEkQKF21jcF9maWxlX3N5c3RlbV9vcHRpb25zGAYgASgLMh4uYWdlbnQudjEuTWNwRmlsZVN5c3RlbU9wdGlvbnNIAogBARIyCg1za2lsbF9vcHRpb25zGAcgASgLMhYuYWdlbnQudjEuU2tpbGxPcHRpb25zSAOIAQESIQoUY3VzdG9tX3N5c3RlbV9wcm9tcHQYCCABKAlIBIgBAUISChBfcmVxdWVzdGVkX21vZGVsQhIKEF9jb252ZXJzYXRpb25faWRCGgoYX21jcF9maWxlX3N5c3RlbV9vcHRpb25zQhAKDl9za2lsbF9vcHRpb25zQhcKFV9jdXN0b21fc3lzdGVtX3Byb21wdCIfCg9UZXh0RGVsdGFVcGRhdGUSDAoEdGV4dBgBIAEoCSJmChVUb29sQ2FsbFN0YXJ0ZWRVcGRhdGUSDwoHY2FsbF9pZBgBIAEoCRIlCgl0b29sX2NhbGwYAiABKAsyEi5hZ2VudC52MS5Ub29sQ2FsbBIVCg1tb2RlbF9jYWxsX2lkGAMgASgJImgKF1Rvb2xDYWxsQ29tcGxldGVkVXBkYXRlEg8KB2NhbGxfaWQYASABKAkSJQoJdG9vbF9jYWxsGAIgASgLMhIuYWdlbnQudjEuVG9vbENhbGwSFQoNbW9kZWxfY2FsbF9pZBgDIAEoCSJvChNUb29sQ2FsbERlbHRhVXBkYXRlEg8KB2NhbGxfaWQYASABKAkSMAoPdG9vbF9jYWxsX2RlbHRhGAIgASgLMhcuYWdlbnQudjEuVG9vbENhbGxEZWx0YRIVCg1tb2RlbF9jYWxsX2lkGAMgASgJIn8KFVBhcnRpYWxUb29sQ2FsbFVwZGF0ZRIPCgdjYWxsX2lkGAEgASgJEiUKCXRvb2xfY2FsbBgCIAEoCzISLmFnZW50LnYxLlRvb2xDYWxsEhcKD2FyZ3NfdGV4dF9kZWx0YRgDIAEoCRIVCg1tb2RlbF9jYWxsX2lkGAQgASgJIiMKE1RoaW5raW5nRGVsdGFVcGRhdGUSDAoEdGV4dBgBIAEoCSI3ChdUaGlua2luZ0NvbXBsZXRlZFVwZGF0ZRIcChR0aGlua2luZ19kdXJhdGlvbl9tcxgBIAEoBSIiChBUb2tlbkRlbHRhVXBkYXRlEg4KBnRva2VucxgBIAEoBSIgCg1TdW1tYXJ5VXBkYXRlEg8KB3N1bW1hcnkYASABKAkiFgoUU3VtbWFyeVN0YXJ0ZWRVcGRhdGUiEQoPSGVhcnRiZWF0VXBkYXRlIhgKFlN1bW1hcnlDb21wbGV0ZWRVcGRhdGUi1wEKFlNoZWxsT3V0cHV0RGVsdGFVcGRhdGUSLQoGc3Rkb3V0GAEgASgLMhsuYWdlbnQudjEuU2hlbGxTdHJlYW1TdGRvdXRIABItCgZzdGRlcnIYAiABKAsyGy5hZ2VudC52MS5TaGVsbFN0cmVhbVN0ZGVyckgAEikKBGV4aXQYAyABKAsyGS5hZ2VudC52MS5TaGVsbFN0cmVhbUV4aXRIABIrCgVzdGFydBgEIAEoCzIaLmFnZW50LnYxLlNoZWxsU3RyZWFtU3RhcnRIAEIHCgVldmVudCKNAgoPVHVybkVuZGVkVXBkYXRlEhkKDGlucHV0X3Rva2VucxgBIAEoA0gAiAEBEhoKDW91dHB1dF90b2tlbnMYAiABKANIAYgBARIeChFjYWNoZV9yZWFkX3Rva2VucxgDIAEoA0gCiAEBEh8KEmNhY2hlX3dyaXRlX3Rva2VucxgEIAEoA0gDiAEBEh0KEHJlYXNvbmluZ190b2tlbnMYBSABKANIBIgBAUIPCg1faW5wdXRfdG9rZW5zQhAKDl9vdXRwdXRfdG9rZW5zQhQKEl9jYWNoZV9yZWFkX3Rva2Vuc0IVChNfY2FjaGVfd3JpdGVfdG9rZW5zQhMKEV9yZWFzb25pbmdfdG9rZW5zIkgKGVVzZXJNZXNzYWdlQXBwZW5kZWRVcGRhdGUSKwoMdXNlcl9tZXNzYWdlGAEgASgLMhUuYWdlbnQudjEuVXNlck1lc3NhZ2UiJAoRU3RlcFN0YXJ0ZWRVcGRhdGUSDwoHc3RlcF9pZBgBIAEoBCJAChNTdGVwQ29tcGxldGVkVXBkYXRlEg8KB3N0ZXBfaWQYASABKAQSGAoQc3RlcF9kdXJhdGlvbl9tcxgCIAEoAyLvBwoRSW50ZXJhY3Rpb25VcGRhdGUSLwoKdGV4dF9kZWx0YRgBIAEoCzIZLmFnZW50LnYxLlRleHREZWx0YVVwZGF0ZUgAEjwKEXBhcnRpYWxfdG9vbF9jYWxsGAcgASgLMh8uYWdlbnQudjEuUGFydGlhbFRvb2xDYWxsVXBkYXRlSAASOAoPdG9vbF9jYWxsX2RlbHRhGA8gASgLMh0uYWdlbnQudjEuVG9vbENhbGxEZWx0YVVwZGF0ZUgAEjwKEXRvb2xfY2FsbF9zdGFydGVkGAIgASgLMh8uYWdlbnQudjEuVG9vbENhbGxTdGFydGVkVXBkYXRlSAASQAoTdG9vbF9jYWxsX2NvbXBsZXRlZBgDIAEoCzIhLmFnZW50LnYxLlRvb2xDYWxsQ29tcGxldGVkVXBkYXRlSAASNwoOdGhpbmtpbmdfZGVsdGEYBCABKAsyHS5hZ2VudC52MS5UaGlua2luZ0RlbHRhVXBkYXRlSAASPwoSdGhpbmtpbmdfY29tcGxldGVkGAUgASgLMiEuYWdlbnQudjEuVGhpbmtpbmdDb21wbGV0ZWRVcGRhdGVIABJEChV1c2VyX21lc3NhZ2VfYXBwZW5kZWQYBiABKAsyIy5hZ2VudC52MS5Vc2VyTWVzc2FnZUFwcGVuZGVkVXBkYXRlSAASMQoLdG9rZW5fZGVsdGEYCCABKAsyGi5hZ2VudC52MS5Ub2tlbkRlbHRhVXBkYXRlSAASKgoHc3VtbWFyeRgJIAEoCzIXLmFnZW50LnYxLlN1bW1hcnlVcGRhdGVIABI5Cg9zdW1tYXJ5X3N0YXJ0ZWQYCiABKAsyHi5hZ2VudC52MS5TdW1tYXJ5U3RhcnRlZFVwZGF0ZUgAEj0KEXN1bW1hcnlfY29tcGxldGVkGAsgASgLMiAuYWdlbnQudjEuU3VtbWFyeUNvbXBsZXRlZFVwZGF0ZUgAEj4KEnNoZWxsX291dHB1dF9kZWx0YRgMIAEoCzIgLmFnZW50LnYxLlNoZWxsT3V0cHV0RGVsdGFVcGRhdGVIABIuCgloZWFydGJlYXQYDSABKAsyGS5hZ2VudC52MS5IZWFydGJlYXRVcGRhdGVIABIvCgp0dXJuX2VuZGVkGA4gASgLMhkuYWdlbnQudjEuVHVybkVuZGVkVXBkYXRlSAASMwoMc3RlcF9zdGFydGVkGBAgASgLMhsuYWdlbnQudjEuU3RlcFN0YXJ0ZWRVcGRhdGVIABI3Cg5zdGVwX2NvbXBsZXRlZBgRIAEoCzIdLmFnZW50LnYxLlN0ZXBDb21wbGV0ZWRVcGRhdGVIAEIJCgdtZXNzYWdlIpoEChBJbnRlcmFjdGlvblF1ZXJ5EgoKAmlkGAEgASgNEkMKGHdlYl9zZWFyY2hfcmVxdWVzdF9xdWVyeRgCIAEoCzIfLmFnZW50LnYxLldlYlNlYXJjaFJlcXVlc3RRdWVyeUgAEk8KHmFza19xdWVzdGlvbl9pbnRlcmFjdGlvbl9xdWVyeRgDIAEoCzIlLmFnZW50LnYxLkFza1F1ZXN0aW9uSW50ZXJhY3Rpb25RdWVyeUgAEkUKGXN3aXRjaF9tb2RlX3JlcXVlc3RfcXVlcnkYBCABKAsyIC5hZ2VudC52MS5Td2l0Y2hNb2RlUmVxdWVzdFF1ZXJ5SAASQwoYZXhhX3NlYXJjaF9yZXF1ZXN0X3F1ZXJ5GAUgASgLMh8uYWdlbnQudjEuRXhhU2VhcmNoUmVxdWVzdFF1ZXJ5SAASQQoXZXhhX2ZldGNoX3JlcXVlc3RfcXVlcnkYBiABKAsyHi5hZ2VudC52MS5FeGFGZXRjaFJlcXVlc3RRdWVyeUgAEkUKGWNyZWF0ZV9wbGFuX3JlcXVlc3RfcXVlcnkYByABKAsyIC5hZ2VudC52MS5DcmVhdGVQbGFuUmVxdWVzdFF1ZXJ5SAASRQoZc2V0dXBfdm1fZW52aXJvbm1lbnRfYXJncxgIIAEoCzIgLmFnZW50LnYxLlNldHVwVm1FbnZpcm9ubWVudEFyZ3NIAEIHCgVxdWVyeSLGBAoTSW50ZXJhY3Rpb25SZXNwb25zZRIKCgJpZBgBIAEoDRJJCht3ZWJfc2VhcmNoX3JlcXVlc3RfcmVzcG9uc2UYAiABKAsyIi5hZ2VudC52MS5XZWJTZWFyY2hSZXF1ZXN0UmVzcG9uc2VIABJVCiFhc2tfcXVlc3Rpb25faW50ZXJhY3Rpb25fcmVzcG9uc2UYAyABKAsyKC5hZ2VudC52MS5Bc2tRdWVzdGlvbkludGVyYWN0aW9uUmVzcG9uc2VIABJLChxzd2l0Y2hfbW9kZV9yZXF1ZXN0X3Jlc3BvbnNlGAQgASgLMiMuYWdlbnQudjEuU3dpdGNoTW9kZVJlcXVlc3RSZXNwb25zZUgAEkkKG2V4YV9zZWFyY2hfcmVxdWVzdF9yZXNwb25zZRgFIAEoCzIiLmFnZW50LnYxLkV4YVNlYXJjaFJlcXVlc3RSZXNwb25zZUgAEkcKGmV4YV9mZXRjaF9yZXF1ZXN0X3Jlc3BvbnNlGAYgASgLMiEuYWdlbnQudjEuRXhhRmV0Y2hSZXF1ZXN0UmVzcG9uc2VIABJLChxjcmVhdGVfcGxhbl9yZXF1ZXN0X3Jlc3BvbnNlGAcgASgLMiMuYWdlbnQudjEuQ3JlYXRlUGxhblJlcXVlc3RSZXNwb25zZUgAEkkKG3NldHVwX3ZtX2Vudmlyb25tZW50X3Jlc3VsdBgIIAEoCzIiLmFnZW50LnYxLlNldHVwVm1FbnZpcm9ubWVudFJlc3VsdEgAQggKBnJlc3VsdCJcChtBc2tRdWVzdGlvbkludGVyYWN0aW9uUXVlcnkSJwoEYXJncxgBIAEoCzIZLmFnZW50LnYxLkFza1F1ZXN0aW9uQXJncxIUCgx0b29sX2NhbGxfaWQYAiABKAkiTQoeQXNrUXVlc3Rpb25JbnRlcmFjdGlvblJlc3BvbnNlEisKBnJlc3VsdBgBIAEoCzIbLmFnZW50LnYxLkFza1F1ZXN0aW9uUmVzdWx0IhEKD0NsaWVudEhlYXJ0YmVhdCLGBAoOUHJld2FybVJlcXVlc3QSLQoNbW9kZWxfZGV0YWlscxgBIAEoCzIWLmFnZW50LnYxLk1vZGVsRGV0YWlscxI2Cg9yZXF1ZXN0ZWRfbW9kZWwYCSABKAsyGC5hZ2VudC52MS5SZXF1ZXN0ZWRNb2RlbEgAiAEBEhwKD2NvbnZlcnNhdGlvbl9pZBgCIAEoCUgBiAEBEkAKEmNvbnZlcnNhdGlvbl9zdGF0ZRgDIAEoCzIkLmFnZW50LnYxLkNvbnZlcnNhdGlvblN0YXRlU3RydWN0dXJlEiUKCW1jcF90b29scxgEIAEoCzISLmFnZW50LnYxLk1jcFRvb2xzEkQKF21jcF9maWxlX3N5c3RlbV9vcHRpb25zGAUgASgLMh4uYWdlbnQudjEuTWNwRmlsZVN5c3RlbU9wdGlvbnNIAogBARIfChJiZXN0X29mX25fZ3JvdXBfaWQYBiABKAlIA4gBARIoCht0cnlfdXNlX2Jlc3Rfb2Zfbl9wcm9tb3Rpb24YByABKAhIBIgBARIhChRjdXN0b21fc3lzdGVtX3Byb21wdBgIIAEoCUgFiAEBQhIKEF9yZXF1ZXN0ZWRfbW9kZWxCEgoQX2NvbnZlcnNhdGlvbl9pZEIaChhfbWNwX2ZpbGVfc3lzdGVtX29wdGlvbnNCFQoTX2Jlc3Rfb2Zfbl9ncm91cF9pZEIeChxfdHJ5X3VzZV9iZXN0X29mX25fcHJvbW90aW9uQhcKFV9jdXN0b21fc3lzdGVtX3Byb21wdCIdCg9FeGVjU2VydmVyQWJvcnQSCgoCaWQYASABKA0iUQoYRXhlY1NlcnZlckNvbnRyb2xNZXNzYWdlEioKBWFib3J0GAEgASgLMhkuYWdlbnQudjEuRXhlY1NlcnZlckFib3J0SABCCQoHbWVzc2FnZSL4AwoSQWdlbnRDbGllbnRNZXNzYWdlEjAKC3J1bl9yZXF1ZXN0GAEgASgLMhkuYWdlbnQudjEuQWdlbnRSdW5SZXF1ZXN0SAASOgoTZXhlY19jbGllbnRfbWVzc2FnZRgCIAEoCzIbLmFnZW50LnYxLkV4ZWNDbGllbnRNZXNzYWdlSAASSQobZXhlY19jbGllbnRfY29udHJvbF9tZXNzYWdlGAUgASgLMiIuYWdlbnQudjEuRXhlY0NsaWVudENvbnRyb2xNZXNzYWdlSAASNgoRa3ZfY2xpZW50X21lc3NhZ2UYAyABKAsyGS5hZ2VudC52MS5LdkNsaWVudE1lc3NhZ2VIABI7ChNjb252ZXJzYXRpb25fYWN0aW9uGAQgASgLMhwuYWdlbnQudjEuQ29udmVyc2F0aW9uQWN0aW9uSAASPQoUaW50ZXJhY3Rpb25fcmVzcG9uc2UYBiABKAsyHS5hZ2VudC52MS5JbnRlcmFjdGlvblJlc3BvbnNlSAASNQoQY2xpZW50X2hlYXJ0YmVhdBgHIAEoCzIZLmFnZW50LnYxLkNsaWVudEhlYXJ0YmVhdEgAEjMKD3ByZXdhcm1fcmVxdWVzdBgIIAEoCzIYLmFnZW50LnYxLlByZXdhcm1SZXF1ZXN0SABCCQoHbWVzc2FnZSKiAwoSQWdlbnRTZXJ2ZXJNZXNzYWdlEjkKEmludGVyYWN0aW9uX3VwZGF0ZRgBIAEoCzIbLmFnZW50LnYxLkludGVyYWN0aW9uVXBkYXRlSAASOgoTZXhlY19zZXJ2ZXJfbWVzc2FnZRgCIAEoCzIbLmFnZW50LnYxLkV4ZWNTZXJ2ZXJNZXNzYWdlSAASSQobZXhlY19zZXJ2ZXJfY29udHJvbF9tZXNzYWdlGAUgASgLMiIuYWdlbnQudjEuRXhlY1NlcnZlckNvbnRyb2xNZXNzYWdlSAASTgoeY29udmVyc2F0aW9uX2NoZWNrcG9pbnRfdXBkYXRlGAMgASgLMiQuYWdlbnQudjEuQ29udmVyc2F0aW9uU3RhdGVTdHJ1Y3R1cmVIABI2ChFrdl9zZXJ2ZXJfbWVzc2FnZRgEIAEoCzIZLmFnZW50LnYxLkt2U2VydmVyTWVzc2FnZUgAEjcKEWludGVyYWN0aW9uX3F1ZXJ5GAcgASgLMhouYWdlbnQudjEuSW50ZXJhY3Rpb25RdWVyeUgAQgkKB21lc3NhZ2UiKAoQTmFtZUFnZW50UmVxdWVzdBIUCgx1c2VyX21lc3NhZ2UYASABKAkiIQoRTmFtZUFnZW50UmVzcG9uc2USDAoEbmFtZRgBIAEoCSIyChZHZXRVc2FibGVNb2RlbHNSZXF1ZXN0EhgKEGN1c3RvbV9tb2RlbF9pZHMYASADKAkiQQoXR2V0VXNhYmxlTW9kZWxzUmVzcG9uc2USJgoGbW9kZWxzGAEgAygLMhYuYWdlbnQudjEuTW9kZWxEZXRhaWxzIh4KHEdldERlZmF1bHRNb2RlbEZvckNsaVJlcXVlc3QiRgodR2V0RGVmYXVsdE1vZGVsRm9yQ2xpUmVzcG9uc2USJQoFbW9kZWwYASABKAsyFi5hZ2VudC52MS5Nb2RlbERldGFpbHMiHwodR2V0QWxsb3dlZE1vZGVsSW50ZW50c1JlcXVlc3QiNwoeR2V0QWxsb3dlZE1vZGVsSW50ZW50c1Jlc3BvbnNlEhUKDW1vZGVsX2ludGVudHMYASADKAkilwIKE0lkZUVkaXRvcnNTdGF0ZUZpbGUSFQoNcmVsYXRpdmVfcGF0aBgBIAEoCRIVCg1hYnNvbHV0ZV9wYXRoGAIgASgJEiEKFGlzX2N1cnJlbnRseV9mb2N1c2VkGAMgASgISACIAQESIAoTY3VycmVudF9saW5lX251bWJlchgEIAEoBUgBiAEBEh4KEWN1cnJlbnRfbGluZV90ZXh0GAUgASgJSAKIAQESFwoKbGluZV9jb3VudBgGIAEoBUgDiAEBQhcKFV9pc19jdXJyZW50bHlfZm9jdXNlZEIWChRfY3VycmVudF9saW5lX251bWJlckIUChJfY3VycmVudF9saW5lX3RleHRCDQoLX2xpbmVfY291bnQiUwoTSWRlRWRpdG9yc1N0YXRlTGl0ZRI8ChVyZWNlbnRseV92aWV3ZWRfZmlsZXMYASADKAsyHS5hZ2VudC52MS5JZGVFZGl0b3JzU3RhdGVGaWxlInQKFkFwcGx5QWdlbnREaWZmVG9vbENhbGwSKgoEYXJncxgBIAEoCzIcLmFnZW50LnYxLkFwcGx5QWdlbnREaWZmQXJncxIuCgZyZXN1bHQYAiABKAsyHi5hZ2VudC52MS5BcHBseUFnZW50RGlmZlJlc3VsdCImChJBcHBseUFnZW50RGlmZkFyZ3MSEAoIYWdlbnRfaWQYASABKAkihAEKFEFwcGx5QWdlbnREaWZmUmVzdWx0EjIKB3N1Y2Nlc3MYASABKAsyHy5hZ2VudC52MS5BcHBseUFnZW50RGlmZlN1Y2Nlc3NIABIuCgVlcnJvchgCIAEoCzIdLmFnZW50LnYxLkFwcGx5QWdlbnREaWZmRXJyb3JIAEIICgZyZXN1bHQiTgoVQXBwbHlBZ2VudERpZmZTdWNjZXNzEjUKD2FwcGxpZWRfY2hhbmdlcxgBIAMoCzIcLmFnZW50LnYxLkFwcGxpZWRBZ2VudENoYW5nZSLpAQoSQXBwbGllZEFnZW50Q2hhbmdlEgwKBHBhdGgYASABKAkSEwoLY2hhbmdlX3R5cGUYAiABKAUSGwoOYmVmb3JlX2NvbnRlbnQYAyABKAlIAIgBARIaCg1hZnRlcl9jb250ZW50GAQgASgJSAGIAQESEgoFZXJyb3IYBSABKAlIAogBARIeChFtZXNzYWdlX2Zvcl9tb2RlbBgGIAEoCUgDiAEBQhEKD19iZWZvcmVfY29udGVudEIQCg5fYWZ0ZXJfY29udGVudEIICgZfZXJyb3JCFAoSX21lc3NhZ2VfZm9yX21vZGVsIlsKE0FwcGx5QWdlbnREaWZmRXJyb3ISDQoFZXJyb3IYASABKAkSNQoPYXBwbGllZF9jaGFuZ2VzGAIgAygLMhwuYWdlbnQudjEuQXBwbGllZEFnZW50Q2hhbmdlImsKE0Fza1F1ZXN0aW9uVG9vbENhbGwSJwoEYXJncxgBIAEoCzIZLmFnZW50LnYxLkFza1F1ZXN0aW9uQXJncxIrCgZyZXN1bHQYAiABKAsyGy5hZ2VudC52MS5Bc2tRdWVzdGlvblJlc3VsdCKPAQoPQXNrUXVlc3Rpb25BcmdzEg0KBXRpdGxlGAEgASgJEjUKCXF1ZXN0aW9ucxgCIAMoCzIiLmFnZW50LnYxLkFza1F1ZXN0aW9uQXJnc19RdWVzdGlvbhIRCglydW5fYXN5bmMYBSABKAgSIwobYXN5bmNfb3JpZ2luYWxfdG9vbF9jYWxsX2lkGAYgASgJIoEBChhBc2tRdWVzdGlvbkFyZ3NfUXVlc3Rpb24SCgoCaWQYASABKAkSDgoGcHJvbXB0GAIgASgJEjEKB29wdGlvbnMYAyADKAsyIC5hZ2VudC52MS5Bc2tRdWVzdGlvbkFyZ3NfT3B0aW9uEhYKDmFsbG93X211bHRpcGxlGAQgASgIIjMKFkFza1F1ZXN0aW9uQXJnc19PcHRpb24SCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkiEgoQQXNrUXVlc3Rpb25Bc3luYyLbAQoRQXNrUXVlc3Rpb25SZXN1bHQSLwoHc3VjY2VzcxgBIAEoCzIcLmFnZW50LnYxLkFza1F1ZXN0aW9uU3VjY2Vzc0gAEisKBWVycm9yGAIgASgLMhouYWdlbnQudjEuQXNrUXVlc3Rpb25FcnJvckgAEjEKCHJlamVjdGVkGAMgASgLMh0uYWdlbnQudjEuQXNrUXVlc3Rpb25SZWplY3RlZEgAEisKBWFzeW5jGAQgASgLMhouYWdlbnQudjEuQXNrUXVlc3Rpb25Bc3luY0gAQggKBnJlc3VsdCJKChJBc2tRdWVzdGlvblN1Y2Nlc3MSNAoHYW5zd2VycxgBIAMoCzIjLmFnZW50LnYxLkFza1F1ZXN0aW9uU3VjY2Vzc19BbnN3ZXIiTQoZQXNrUXVlc3Rpb25TdWNjZXNzX0Fuc3dlchITCgtxdWVzdGlvbl9pZBgBIAEoCRIbChNzZWxlY3RlZF9vcHRpb25faWRzGAIgAygJIikKEEFza1F1ZXN0aW9uRXJyb3ISFQoNZXJyb3JfbWVzc2FnZRgBIAEoCSIlChNBc2tRdWVzdGlvblJlamVjdGVkEg4KBnJlYXNvbhgBIAEoCSL9BQoYQmFja2dyb3VuZFNoZWxsU3Bhd25BcmdzEg8KB2NvbW1hbmQYASABKAkSGQoRd29ya2luZ19kaXJlY3RvcnkYAiABKAkSFAoMdG9vbF9jYWxsX2lkGAMgASgJEjsKDnBhcnNpbmdfcmVzdWx0GAQgASgLMiMuYWdlbnQudjEuU2hlbGxDb21tYW5kUGFyc2luZ1Jlc3VsdBI0Cg5zYW5kYm94X3BvbGljeRgFIAEoCzIXLmFnZW50LnYxLlNhbmRib3hQb2xpY3lIAIgBARIlCh1lbmFibGVfd3JpdGVfc2hlbGxfc3RkaW5fdG9vbBgGIAEoCBIYCgtkZXNjcmlwdGlvbhgHIAEoCUgBiAEBEkEKEWNsYXNzaWZpZXJfcmVzdWx0GAggASgLMiEuYWdlbnQudjEuQ29tbWFuZENsYXNzaWZpZXJSZXN1bHRIAogBARJJChNvdXRwdXRfbm90aWZpY2F0aW9uGAkgASgLMicuYWdlbnQudjEuU2hlbGxPdXRwdXROb3RpZmljYXRpb25Db25maWdIA4gBARI9ChNzbWFydF9tb2RlX2FwcHJvdmFsGAogASgLMhsuYWdlbnQudjEuU21hcnRNb2RlQXBwcm92YWxIBIgBARJOChlob29rX2FwcHJvdmFsX3JlcXVpcmVtZW50GAsgASgLMiYuYWdlbnQudjEuU2hlbGxIb29rQXBwcm92YWxSZXF1aXJlbWVudEgFiAEBEhUKDXNraXBfYXBwcm92YWwYDCABKAgSHAoPY29udmVyc2F0aW9uX2lkGA0gASgJSAaIAQFCEQoPX3NhbmRib3hfcG9saWN5Qg4KDF9kZXNjcmlwdGlvbkIUChJfY2xhc3NpZmllcl9yZXN1bHRCFgoUX291dHB1dF9ub3RpZmljYXRpb25CFgoUX3NtYXJ0X21vZGVfYXBwcm92YWxCHAoaX2hvb2tfYXBwcm92YWxfcmVxdWlyZW1lbnRCEgoQX2NvbnZlcnNhdGlvbl9pZCKBAgoaQmFja2dyb3VuZFNoZWxsU3Bhd25SZXN1bHQSOAoHc3VjY2VzcxgBIAEoCzIlLmFnZW50LnYxLkJhY2tncm91bmRTaGVsbFNwYXduU3VjY2Vzc0gAEjQKBWVycm9yGAIgASgLMiMuYWdlbnQudjEuQmFja2dyb3VuZFNoZWxsU3Bhd25FcnJvckgAEisKCHJlamVjdGVkGAMgASgLMhcuYWdlbnQudjEuU2hlbGxSZWplY3RlZEgAEjwKEXBlcm1pc3Npb25fZGVuaWVkGAQgASgLMh8uYWdlbnQudjEuU2hlbGxQZXJtaXNzaW9uRGVuaWVkSABCCAoGcmVzdWx0InUKG0JhY2tncm91bmRTaGVsbFNwYXduU3VjY2VzcxIQCghzaGVsbF9pZBgBIAEoDRIPCgdjb21tYW5kGAIgASgJEhkKEXdvcmtpbmdfZGlyZWN0b3J5GAMgASgJEhAKA3BpZBgEIAEoDUgAiAEBQgYKBF9waWQiVgoZQmFja2dyb3VuZFNoZWxsU3Bhd25FcnJvchIPCgdjb21tYW5kGAEgASgJEhkKEXdvcmtpbmdfZGlyZWN0b3J5GAIgASgJEg0KBWVycm9yGAMgASgJIjYKE1dyaXRlU2hlbGxTdGRpbkFyZ3MSEAoIc2hlbGxfaWQYASABKA0SDQoFY2hhcnMYAiABKAkihwEKFVdyaXRlU2hlbGxTdGRpblJlc3VsdBIzCgdzdWNjZXNzGAEgASgLMiAuYWdlbnQudjEuV3JpdGVTaGVsbFN0ZGluU3VjY2Vzc0gAEi8KBWVycm9yGAIgASgLMh4uYWdlbnQudjEuV3JpdGVTaGVsbFN0ZGluRXJyb3JIAEIICgZyZXN1bHQiXQoWV3JpdGVTaGVsbFN0ZGluU3VjY2VzcxIQCghzaGVsbF9pZBgBIAEoDRIxCil0ZXJtaW5hbF9maWxlX2xlbmd0aF9iZWZvcmVfaW5wdXRfd3JpdHRlbhgCIAEoDSIlChRXcml0ZVNoZWxsU3RkaW5FcnJvchINCgVlcnJvchgBIAEoCSIiCgpDb29yZGluYXRlEgkKAXgYASABKAUSCQoBeRgCIAEoBSJVCg9Db21wdXRlclVzZUFyZ3MSFAoMdG9vbF9jYWxsX2lkGAEgASgJEiwKB2FjdGlvbnMYAiADKAsyGy5hZ2VudC52MS5Db21wdXRlclVzZUFjdGlvbiKBBAoRQ29tcHV0ZXJVc2VBY3Rpb24SLwoKbW91c2VfbW92ZRgBIAEoCzIZLmFnZW50LnYxLk1vdXNlTW92ZUFjdGlvbkgAEiYKBWNsaWNrGAIgASgLMhUuYWdlbnQudjEuQ2xpY2tBY3Rpb25IABIvCgptb3VzZV9kb3duGAMgASgLMhkuYWdlbnQudjEuTW91c2VEb3duQWN0aW9uSAASKwoIbW91c2VfdXAYBCABKAsyFy5hZ2VudC52MS5Nb3VzZVVwQWN0aW9uSAASJAoEZHJhZxgFIAEoCzIULmFnZW50LnYxLkRyYWdBY3Rpb25IABIoCgZzY3JvbGwYBiABKAsyFi5hZ2VudC52MS5TY3JvbGxBY3Rpb25IABIkCgR0eXBlGAcgASgLMhQuYWdlbnQudjEuVHlwZUFjdGlvbkgAEiIKA2tleRgIIAEoCzITLmFnZW50LnYxLktleUFjdGlvbkgAEiQKBHdhaXQYCSABKAsyFC5hZ2VudC52MS5XYWl0QWN0aW9uSAASMAoKc2NyZWVuc2hvdBgKIAEoCzIaLmFnZW50LnYxLlNjcmVlbnNob3RBY3Rpb25IABI5Cg9jdXJzb3JfcG9zaXRpb24YCyABKAsyHi5hZ2VudC52MS5DdXJzb3JQb3NpdGlvbkFjdGlvbkgAQggKBmFjdGlvbiI7Cg9Nb3VzZU1vdmVBY3Rpb24SKAoKY29vcmRpbmF0ZRgBIAEoCzIULmFnZW50LnYxLkNvb3JkaW5hdGUimAEKC0NsaWNrQWN0aW9uEi0KCmNvb3JkaW5hdGUYASABKAsyFC5hZ2VudC52MS5Db29yZGluYXRlSACIAQESDgoGYnV0dG9uGAIgASgFEg0KBWNvdW50GAMgASgFEhoKDW1vZGlmaWVyX2tleXMYBCABKAlIAYgBAUINCgtfY29vcmRpbmF0ZUIQCg5fbW9kaWZpZXJfa2V5cyIhCg9Nb3VzZURvd25BY3Rpb24SDgoGYnV0dG9uGAEgASgFIh8KDU1vdXNlVXBBY3Rpb24SDgoGYnV0dG9uGAEgASgFIkAKCkRyYWdBY3Rpb24SIgoEcGF0aBgBIAMoCzIULmFnZW50LnYxLkNvb3JkaW5hdGUSDgoGYnV0dG9uGAIgASgFIp0BCgxTY3JvbGxBY3Rpb24SLQoKY29vcmRpbmF0ZRgBIAEoCzIULmFnZW50LnYxLkNvb3JkaW5hdGVIAIgBARIRCglkaXJlY3Rpb24YAiABKAUSDgoGYW1vdW50GAMgASgFEhoKDW1vZGlmaWVyX2tleXMYBCABKAlIAYgBAUINCgtfY29vcmRpbmF0ZUIQCg5fbW9kaWZpZXJfa2V5cyIaCgpUeXBlQWN0aW9uEgwKBHRleHQYASABKAkiTAoJS2V5QWN0aW9uEgsKA2tleRgBIAEoCRIdChBob2xkX2R1cmF0aW9uX21zGAIgASgFSACIAQFCEwoRX2hvbGRfZHVyYXRpb25fbXMiIQoKV2FpdEFjdGlvbhITCgtkdXJhdGlvbl9tcxgBIAEoBSISChBTY3JlZW5zaG90QWN0aW9uIhYKFEN1cnNvclBvc2l0aW9uQWN0aW9uInsKEUNvbXB1dGVyVXNlUmVzdWx0Ei8KB3N1Y2Nlc3MYASABKAsyHC5hZ2VudC52MS5Db21wdXRlclVzZVN1Y2Nlc3NIABIrCgVlcnJvchgCIAEoCzIaLmFnZW50LnYxLkNvbXB1dGVyVXNlRXJyb3JIAEIICgZyZXN1bHQi+wEKEkNvbXB1dGVyVXNlU3VjY2VzcxIUCgxhY3Rpb25fY291bnQYASABKAUSEwoLZHVyYXRpb25fbXMYAiABKAUSFwoKc2NyZWVuc2hvdBgDIAEoCUgAiAEBEhAKA2xvZxgEIAEoCUgBiAEBEhwKD3NjcmVlbnNob3RfcGF0aBgFIAEoCUgCiAEBEjIKD2N1cnNvcl9wb3NpdGlvbhgGIAEoCzIULmFnZW50LnYxLkNvb3JkaW5hdGVIA4gBAUINCgtfc2NyZWVuc2hvdEIGCgRfbG9nQhIKEF9zY3JlZW5zaG90X3BhdGhCEgoQX2N1cnNvcl9wb3NpdGlvbiLAAQoQQ29tcHV0ZXJVc2VFcnJvchINCgVlcnJvchgBIAEoCRIUCgxhY3Rpb25fY291bnQYAiABKAUSEwoLZHVyYXRpb25fbXMYAyABKAUSEAoDbG9nGAQgASgJSACIAQESFwoKc2NyZWVuc2hvdBgFIAEoCUgBiAEBEhwKD3NjcmVlbnNob3RfcGF0aBgGIAEoCUgCiAEBQgYKBF9sb2dCDQoLX3NjcmVlbnNob3RCEgoQX3NjcmVlbnNob3RfcGF0aCJrChNDb21wdXRlclVzZVRvb2xDYWxsEicKBGFyZ3MYASABKAsyGS5hZ2VudC52MS5Db21wdXRlclVzZUFyZ3MSKwoGcmVzdWx0GAIgASgLMhsuYWdlbnQudjEuQ29tcHV0ZXJVc2VSZXN1bHQiaAoSQ3JlYXRlUGxhblRvb2xDYWxsEiYKBGFyZ3MYASABKAsyGC5hZ2VudC52MS5DcmVhdGVQbGFuQXJncxIqCgZyZXN1bHQYAiABKAsyGi5hZ2VudC52MS5DcmVhdGVQbGFuUmVzdWx0IjgKBVBoYXNlEgwKBG5hbWUYASABKAkSIQoFdG9kb3MYAiADKAsyEi5hZ2VudC52MS5Ub2RvSXRlbSKWAQoOQ3JlYXRlUGxhbkFyZ3MSDAoEcGxhbhgBIAEoCRIhCgV0b2RvcxgCIAMoCzISLmFnZW50LnYxLlRvZG9JdGVtEhAKCG92ZXJ2aWV3GAMgASgJEgwKBG5hbWUYBCABKAkSEgoKaXNfcHJvamVjdBgFIAEoCBIfCgZwaGFzZXMYBiADKAsyDy5hZ2VudC52MS5QaGFzZSKKAQoQQ3JlYXRlUGxhblJlc3VsdBIQCghwbGFuX3VyaRgDIAEoCRIuCgdzdWNjZXNzGAEgASgLMhsuYWdlbnQudjEuQ3JlYXRlUGxhblN1Y2Nlc3NIABIqCgVlcnJvchgCIAEoCzIZLmFnZW50LnYxLkNyZWF0ZVBsYW5FcnJvckgAQggKBnJlc3VsdCITChFDcmVhdGVQbGFuU3VjY2VzcyIgCg9DcmVhdGVQbGFuRXJyb3ISDQoFZXJyb3IYASABKAkiVgoWQ3JlYXRlUGxhblJlcXVlc3RRdWVyeRImCgRhcmdzGAEgASgLMhguYWdlbnQudjEuQ3JlYXRlUGxhbkFyZ3MSFAoMdG9vbF9jYWxsX2lkGAIgASgJIkcKGUNyZWF0ZVBsYW5SZXF1ZXN0UmVzcG9uc2USKgoGcmVzdWx0GAEgASgLMhouYWdlbnQudjEuQ3JlYXRlUGxhblJlc3VsdCIWChRDdXJzb3JSdWxlVHlwZUdsb2JhbCIoChdDdXJzb3JSdWxlVHlwZUZpbGVHbG9icxINCgVnbG9icxgBIAMoCSIxChpDdXJzb3JSdWxlVHlwZUFnZW50RmV0Y2hlZBITCgtkZXNjcmlwdGlvbhgBIAEoCSIgCh5DdXJzb3JSdWxlVHlwZU1hbnVhbGx5QXR0YWNoZWQiiwIKDkN1cnNvclJ1bGVUeXBlEjAKBmdsb2JhbBgBIAEoCzIeLmFnZW50LnYxLkN1cnNvclJ1bGVUeXBlR2xvYmFsSAASOQoMZmlsZV9nbG9iYmVkGAIgASgLMiEuYWdlbnQudjEuQ3Vyc29yUnVsZVR5cGVGaWxlR2xvYnNIABI9Cg1hZ2VudF9mZXRjaGVkGAMgASgLMiQuYWdlbnQudjEuQ3Vyc29yUnVsZVR5cGVBZ2VudEZldGNoZWRIABJFChFtYW51YWxseV9hdHRhY2hlZBgEIAEoCzIoLmFnZW50LnYxLkN1cnNvclJ1bGVUeXBlTWFudWFsbHlBdHRhY2hlZEgAQgYKBHR5cGUiyAEKCkN1cnNvclJ1bGUSEQoJZnVsbF9wYXRoGAEgASgJEg8KB2NvbnRlbnQYAiABKAkSJgoEdHlwZRgDIAEoCzIYLmFnZW50LnYxLkN1cnNvclJ1bGVUeXBlEg4KBnNvdXJjZRgEIAEoBRIeChFnaXRfcmVtb3RlX29yaWdpbhgFIAEoCUgAiAEBEhgKC3BhcnNlX2Vycm9yGAYgASgJSAGIAQFCFAoSX2dpdF9yZW1vdGVfb3JpZ2luQg4KDF9wYXJzZV9lcnJvciIwCgpEZWxldGVBcmdzEgwKBHBhdGgYASABKAkSFAoMdG9vbF9jYWxsX2lkGAIgASgJIu0CCgxEZWxldGVSZXN1bHQSKgoHc3VjY2VzcxgBIAEoCzIXLmFnZW50LnYxLkRlbGV0ZVN1Y2Nlc3NIABI2Cg5maWxlX25vdF9mb3VuZBgCIAEoCzIcLmFnZW50LnYxLkRlbGV0ZUZpbGVOb3RGb3VuZEgAEisKCG5vdF9maWxlGAMgASgLMhcuYWdlbnQudjEuRGVsZXRlTm90RmlsZUgAEj0KEXBlcm1pc3Npb25fZGVuaWVkGAQgASgLMiAuYWdlbnQudjEuRGVsZXRlUGVybWlzc2lvbkRlbmllZEgAEi0KCWZpbGVfYnVzeRgFIAEoCzIYLmFnZW50LnYxLkRlbGV0ZUZpbGVCdXN5SAASLAoIcmVqZWN0ZWQYBiABKAsyGC5hZ2VudC52MS5EZWxldGVSZWplY3RlZEgAEiYKBWVycm9yGAcgASgLMhUuYWdlbnQudjEuRGVsZXRlRXJyb3JIAEIICgZyZXN1bHQiXAoNRGVsZXRlU3VjY2VzcxIMCgRwYXRoGAEgASgJEhQKDGRlbGV0ZWRfZmlsZRgCIAEoCRIRCglmaWxlX3NpemUYAyABKAMSFAoMcHJldl9jb250ZW50GAQgASgJIiIKEkRlbGV0ZUZpbGVOb3RGb3VuZBIMCgRwYXRoGAEgASgJIjIKDURlbGV0ZU5vdEZpbGUSDAoEcGF0aBgBIAEoCRITCgthY3R1YWxfdHlwZRgCIAEoCSJZChZEZWxldGVQZXJtaXNzaW9uRGVuaWVkEgwKBHBhdGgYASABKAkSHAoUY2xpZW50X3Zpc2libGVfZXJyb3IYAiABKAkSEwoLaXNfcmVhZG9ubHkYAyABKAgiHgoORGVsZXRlRmlsZUJ1c3kSDAoEcGF0aBgBIAEoCSIuCg5EZWxldGVSZWplY3RlZBIMCgRwYXRoGAEgASgJEg4KBnJlYXNvbhgCIAEoCSIqCgtEZWxldGVFcnJvchIMCgRwYXRoGAEgASgJEg0KBWVycm9yGAIgASgJIlwKDkRlbGV0ZVRvb2xDYWxsEiIKBGFyZ3MYASABKAsyFC5hZ2VudC52MS5EZWxldGVBcmdzEiYKBnJlc3VsdBgCIAEoCzIWLmFnZW50LnYxLkRlbGV0ZVJlc3VsdCI1Cg9EaWFnbm9zdGljc0FyZ3MSDAoEcGF0aBgBIAEoCRIUCgx0b29sX2NhbGxfaWQYAiABKAkirwIKEURpYWdub3N0aWNzUmVzdWx0Ei8KB3N1Y2Nlc3MYASABKAsyHC5hZ2VudC52MS5EaWFnbm9zdGljc1N1Y2Nlc3NIABIrCgVlcnJvchgCIAEoCzIaLmFnZW50LnYxLkRpYWdub3N0aWNzRXJyb3JIABIxCghyZWplY3RlZBgDIAEoCzIdLmFnZW50LnYxLkRpYWdub3N0aWNzUmVqZWN0ZWRIABI7Cg5maWxlX25vdF9mb3VuZBgEIAEoCzIhLmFnZW50LnYxLkRpYWdub3N0aWNzRmlsZU5vdEZvdW5kSAASQgoRcGVybWlzc2lvbl9kZW5pZWQYBSABKAsyJS5hZ2VudC52MS5EaWFnbm9zdGljc1Blcm1pc3Npb25EZW5pZWRIAEIICgZyZXN1bHQiaAoSRGlhZ25vc3RpY3NTdWNjZXNzEgwKBHBhdGgYASABKAkSKQoLZGlhZ25vc3RpY3MYAiADKAsyFC5hZ2VudC52MS5EaWFnbm9zdGljEhkKEXRvdGFsX2RpYWdub3N0aWNzGAMgASgFIn8KCkRpYWdub3N0aWMSEAoIc2V2ZXJpdHkYASABKAUSHgoFcmFuZ2UYAiABKAsyDy5hZ2VudC52MS5SYW5nZRIPCgdtZXNzYWdlGAMgASgJEg4KBnNvdXJjZRgEIAEoCRIMCgRjb2RlGAUgASgJEhAKCGlzX3N0YWxlGAYgASgIIi8KEERpYWdub3N0aWNzRXJyb3ISDAoEcGF0aBgBIAEoCRINCgVlcnJvchgCIAEoCSIzChNEaWFnbm9zdGljc1JlamVjdGVkEgwKBHBhdGgYASABKAkSDgoGcmVhc29uGAIgASgJIicKF0RpYWdub3N0aWNzRmlsZU5vdEZvdW5kEgwKBHBhdGgYASABKAkiKwobRGlhZ25vc3RpY3NQZXJtaXNzaW9uRGVuaWVkEgwKBHBhdGgYASABKAkiSAoIRWRpdEFyZ3MSDAoEcGF0aBgBIAEoCRIbCg5zdHJlYW1fY29udGVudBgGIAEoCUgAiAEBQhEKD19zdHJlYW1fY29udGVudCLWAgoKRWRpdFJlc3VsdBIoCgdzdWNjZXNzGAEgASgLMhUuYWdlbnQudjEuRWRpdFN1Y2Nlc3NIABI0Cg5maWxlX25vdF9mb3VuZBgCIAEoCzIaLmFnZW50LnYxLkVkaXRGaWxlTm90Rm91bmRIABJEChZyZWFkX3Blcm1pc3Npb25fZGVuaWVkGAMgASgLMiIuYWdlbnQudjEuRWRpdFJlYWRQZXJtaXNzaW9uRGVuaWVkSAASRgoXd3JpdGVfcGVybWlzc2lvbl9kZW5pZWQYBCABKAsyIy5hZ2VudC52MS5FZGl0V3JpdGVQZXJtaXNzaW9uRGVuaWVkSAASKgoIcmVqZWN0ZWQYBiABKAsyFi5hZ2VudC52MS5FZGl0UmVqZWN0ZWRIABIkCgVlcnJvchgHIAEoCzITLmFnZW50LnYxLkVkaXRFcnJvckgAQggKBnJlc3VsdCKkAgoLRWRpdFN1Y2Nlc3MSDAoEcGF0aBgBIAEoCRIYCgtsaW5lc19hZGRlZBgDIAEoBUgAiAEBEhoKDWxpbmVzX3JlbW92ZWQYBCABKAVIAYgBARIYCgtkaWZmX3N0cmluZxgFIAEoCUgCiAEBEiUKGGJlZm9yZV9mdWxsX2ZpbGVfY29udGVudBgGIAEoCUgDiAEBEh8KF2FmdGVyX2Z1bGxfZmlsZV9jb250ZW50GAcgASgJEhQKB21lc3NhZ2UYCCABKAlIBIgBAUIOCgxfbGluZXNfYWRkZWRCEAoOX2xpbmVzX3JlbW92ZWRCDgoMX2RpZmZfc3RyaW5nQhsKGV9iZWZvcmVfZnVsbF9maWxlX2NvbnRlbnRCCgoIX21lc3NhZ2UiIAoQRWRpdEZpbGVOb3RGb3VuZBIMCgRwYXRoGAEgASgJIigKGEVkaXRSZWFkUGVybWlzc2lvbkRlbmllZBIMCgRwYXRoGAEgASgJIk0KGUVkaXRXcml0ZVBlcm1pc3Npb25EZW5pZWQSDAoEcGF0aBgBIAEoCRINCgVlcnJvchgCIAEoCRITCgtpc19yZWFkb25seRgDIAEoCCIsCgxFZGl0UmVqZWN0ZWQSDAoEcGF0aBgBIAEoCRIOCgZyZWFzb24YAiABKAkiYgoJRWRpdEVycm9yEgwKBHBhdGgYASABKAkSDQoFZXJyb3IYAiABKAkSIAoTbW9kZWxfdmlzaWJsZV9lcnJvchgFIAEoCUgAiAEBQhYKFF9tb2RlbF92aXNpYmxlX2Vycm9yIlYKDEVkaXRUb29sQ2FsbBIgCgRhcmdzGAEgASgLMhIuYWdlbnQudjEuRWRpdEFyZ3MSJAoGcmVzdWx0GAIgASgLMhQuYWdlbnQudjEuRWRpdFJlc3VsdCIxChFFZGl0VG9vbENhbGxEZWx0YRIcChRzdHJlYW1fY29udGVudF9kZWx0YRgBIAEoCSIxCgxFeGFGZXRjaEFyZ3MSCwoDaWRzGAEgAygJEhQKDHRvb2xfY2FsbF9pZBgCIAEoCSKiAQoORXhhRmV0Y2hSZXN1bHQSLAoHc3VjY2VzcxgBIAEoCzIZLmFnZW50LnYxLkV4YUZldGNoU3VjY2Vzc0gAEigKBWVycm9yGAIgASgLMhcuYWdlbnQudjEuRXhhRmV0Y2hFcnJvckgAEi4KCHJlamVjdGVkGAMgASgLMhouYWdlbnQudjEuRXhhRmV0Y2hSZWplY3RlZEgAQggKBnJlc3VsdCI+Cg9FeGFGZXRjaFN1Y2Nlc3MSKwoIY29udGVudHMYASADKAsyGS5hZ2VudC52MS5FeGFGZXRjaENvbnRlbnQiHgoNRXhhRmV0Y2hFcnJvchINCgVlcnJvchgBIAEoCSIiChBFeGFGZXRjaFJlamVjdGVkEg4KBnJlYXNvbhgBIAEoCSJTCg9FeGFGZXRjaENvbnRlbnQSDQoFdGl0bGUYASABKAkSCwoDdXJsGAIgASgJEgwKBHRleHQYAyABKAkSFgoOcHVibGlzaGVkX2RhdGUYBCABKAkiYgoQRXhhRmV0Y2hUb29sQ2FsbBIkCgRhcmdzGAEgASgLMhYuYWdlbnQudjEuRXhhRmV0Y2hBcmdzEigKBnJlc3VsdBgCIAEoCzIYLmFnZW50LnYxLkV4YUZldGNoUmVzdWx0IjwKFEV4YUZldGNoUmVxdWVzdFF1ZXJ5EiQKBGFyZ3MYASABKAsyFi5hZ2VudC52MS5FeGFGZXRjaEFyZ3MiowEKF0V4YUZldGNoUmVxdWVzdFJlc3BvbnNlEj4KCGFwcHJvdmVkGAEgASgLMiouYWdlbnQudjEuRXhhRmV0Y2hSZXF1ZXN0UmVzcG9uc2VfQXBwcm92ZWRIABI+CghyZWplY3RlZBgCIAEoCzIqLmFnZW50LnYxLkV4YUZldGNoUmVxdWVzdFJlc3BvbnNlX1JlamVjdGVkSABCCAoGcmVzdWx0IiIKIEV4YUZldGNoUmVxdWVzdFJlc3BvbnNlX0FwcHJvdmVkIjIKIEV4YUZldGNoUmVxdWVzdFJlc3BvbnNlX1JlamVjdGVkEg4KBnJlYXNvbhgBIAEoCSJXCg1FeGFTZWFyY2hBcmdzEg0KBXF1ZXJ5GAEgASgJEgwKBHR5cGUYAiABKAkSEwoLbnVtX3Jlc3VsdHMYAyABKAUSFAoMdG9vbF9jYWxsX2lkGAQgASgJIqYBCg9FeGFTZWFyY2hSZXN1bHQSLQoHc3VjY2VzcxgBIAEoCzIaLmFnZW50LnYxLkV4YVNlYXJjaFN1Y2Nlc3NIABIpCgVlcnJvchgCIAEoCzIYLmFnZW50LnYxLkV4YVNlYXJjaEVycm9ySAASLwoIcmVqZWN0ZWQYAyABKAsyGy5hZ2VudC52MS5FeGFTZWFyY2hSZWplY3RlZEgAQggKBnJlc3VsdCJEChBFeGFTZWFyY2hTdWNjZXNzEjAKCnJlZmVyZW5jZXMYASADKAsyHC5hZ2VudC52MS5FeGFTZWFyY2hSZWZlcmVuY2UiHwoORXhhU2VhcmNoRXJyb3ISDQoFZXJyb3IYASABKAkiIwoRRXhhU2VhcmNoUmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJIlYKEkV4YVNlYXJjaFJlZmVyZW5jZRINCgV0aXRsZRgBIAEoCRILCgN1cmwYAiABKAkSDAoEdGV4dBgDIAEoCRIWCg5wdWJsaXNoZWRfZGF0ZRgEIAEoCSJlChFFeGFTZWFyY2hUb29sQ2FsbBIlCgRhcmdzGAEgASgLMhcuYWdlbnQudjEuRXhhU2VhcmNoQXJncxIpCgZyZXN1bHQYAiABKAsyGS5hZ2VudC52MS5FeGFTZWFyY2hSZXN1bHQiPgoVRXhhU2VhcmNoUmVxdWVzdFF1ZXJ5EiUKBGFyZ3MYASABKAsyFy5hZ2VudC52MS5FeGFTZWFyY2hBcmdzIqYBChhFeGFTZWFyY2hSZXF1ZXN0UmVzcG9uc2USPwoIYXBwcm92ZWQYASABKAsyKy5hZ2VudC52MS5FeGFTZWFyY2hSZXF1ZXN0UmVzcG9uc2VfQXBwcm92ZWRIABI/CghyZWplY3RlZBgCIAEoCzIrLmFnZW50LnYxLkV4YVNlYXJjaFJlcXVlc3RSZXNwb25zZV9SZWplY3RlZEgAQggKBnJlc3VsdCIjCiFFeGFTZWFyY2hSZXF1ZXN0UmVzcG9uc2VfQXBwcm92ZWQiMwohRXhhU2VhcmNoUmVxdWVzdFJlc3BvbnNlX1JlamVjdGVkEg4KBnJlYXNvbhgBIAEoCSIjChVFeGVjQ2xpZW50U3RyZWFtQ2xvc2USCgoCaWQYASABKA0ifgoPRXhlY0NsaWVudFRocm93EgoKAmlkGAEgASgNEg0KBWVycm9yGAIgASgJEhgKC3N0YWNrX3RyYWNlGAMgASgJSACIAQESFwoKZXJyb3JfY29kZRgEIAEoCUgBiAEBQg4KDF9zdGFja190cmFjZUINCgtfZXJyb3JfY29kZSIhChNFeGVjQ2xpZW50SGVhcnRiZWF0EgoKAmlkGAEgASgNIr4BChhFeGVjQ2xpZW50Q29udHJvbE1lc3NhZ2USNwoMc3RyZWFtX2Nsb3NlGAEgASgLMh8uYWdlbnQudjEuRXhlY0NsaWVudFN0cmVhbUNsb3NlSAASKgoFdGhyb3cYAiABKAsyGS5hZ2VudC52MS5FeGVjQ2xpZW50VGhyb3dIABIyCgloZWFydGJlYXQYAyABKAsyHS5hZ2VudC52MS5FeGVjQ2xpZW50SGVhcnRiZWF0SABCCQoHbWVzc2FnZSKEAQoLU3BhbkNvbnRleHQSEAoIdHJhY2VfaWQYASABKAkSDwoHc3Bhbl9pZBgCIAEoCRIYCgt0cmFjZV9mbGFncxgDIAEoDUgAiAEBEhgKC3RyYWNlX3N0YXRlGAQgASgJSAGIAQFCDgoMX3RyYWNlX2ZsYWdzQg4KDF90cmFjZV9zdGF0ZSILCglBYm9ydEFyZ3MiDQoLQWJvcnRSZXN1bHQi2hMKEUV4ZWNTZXJ2ZXJNZXNzYWdlEgoKAmlkGAEgASgNEg8KB2V4ZWNfaWQYDyABKAkSMAoMc3Bhbl9jb250ZXh0GBMgASgLMhUuYWdlbnQudjEuU3BhbkNvbnRleHRIAYgBARIpCgpzaGVsbF9hcmdzGAIgASgLMhMuYWdlbnQudjEuU2hlbGxBcmdzSAASKQoKd3JpdGVfYXJncxgDIAEoCzITLmFnZW50LnYxLldyaXRlQXJnc0gAEisKC2RlbGV0ZV9hcmdzGAQgASgLMhQuYWdlbnQudjEuRGVsZXRlQXJnc0gAEicKCWdyZXBfYXJncxgFIAEoCzISLmFnZW50LnYxLkdyZXBBcmdzSAASJwoJcmVhZF9hcmdzGAcgASgLMhIuYWdlbnQudjEuUmVhZEFyZ3NIABIjCgdsc19hcmdzGAggASgLMhAuYWdlbnQudjEuTHNBcmdzSAASNQoQZGlhZ25vc3RpY3NfYXJncxgJIAEoCzIZLmFnZW50LnYxLkRpYWdub3N0aWNzQXJnc0gAEjwKFHJlcXVlc3RfY29udGV4dF9hcmdzGAogASgLMhwuYWdlbnQudjEuUmVxdWVzdENvbnRleHRBcmdzSAASJQoIbWNwX2FyZ3MYCyABKAsyES5hZ2VudC52MS5NY3BBcmdzSAASMAoRc2hlbGxfc3RyZWFtX2FyZ3MYDiABKAsyEy5hZ2VudC52MS5TaGVsbEFyZ3NIABJJChtiYWNrZ3JvdW5kX3NoZWxsX3NwYXduX2FyZ3MYECABKAsyIi5hZ2VudC52MS5CYWNrZ3JvdW5kU2hlbGxTcGF3bkFyZ3NIABJKChxsaXN0X21jcF9yZXNvdXJjZXNfZXhlY19hcmdzGBEgASgLMiIuYWdlbnQudjEuTGlzdE1jcFJlc291cmNlc0V4ZWNBcmdzSAASSAobcmVhZF9tY3BfcmVzb3VyY2VfZXhlY19hcmdzGBIgASgLMiEuYWdlbnQudjEuUmVhZE1jcFJlc291cmNlRXhlY0FyZ3NIABIpCgpmZXRjaF9hcmdzGBQgASgLMhMuYWdlbnQudjEuRmV0Y2hBcmdzSAASOAoScmVjb3JkX3NjcmVlbl9hcmdzGBUgASgLMhouYWdlbnQudjEuUmVjb3JkU2NyZWVuQXJnc0gAEjYKEWNvbXB1dGVyX3VzZV9hcmdzGBYgASgLMhkuYWdlbnQudjEuQ29tcHV0ZXJVc2VBcmdzSAASPwoWd3JpdGVfc2hlbGxfc3RkaW5fYXJncxgXIAEoCzIdLmFnZW50LnYxLldyaXRlU2hlbGxTdGRpbkFyZ3NIABIwChJyZWRhY3RlZF9yZWFkX2FyZ3MYHSABKAsyEi5hZ2VudC52MS5SZWFkQXJnc0gAEjkKE21jcF9zdGF0ZV9leGVjX2FyZ3MYJCABKAsyGi5hZ2VudC52MS5NY3BTdGF0ZUV4ZWNBcmdzSAASNgoRZXhlY3V0ZV9ob29rX2FyZ3MYGyABKAsyGS5hZ2VudC52MS5FeGVjdXRlSG9va0FyZ3NIABIvCg1zdWJhZ2VudF9hcmdzGBwgASgLMhYuYWdlbnQudjEuU3ViYWdlbnRBcmdzSAASSQobZm9yY2VfYmFja2dyb3VuZF9zaGVsbF9hcmdzGB4gASgLMiIuYWdlbnQudjEuRm9yY2VCYWNrZ3JvdW5kU2hlbGxBcmdzSAASTwoeZm9yY2VfYmFja2dyb3VuZF9zdWJhZ2VudF9hcmdzGB8gASgLMiUuYWdlbnQudjEuRm9yY2VCYWNrZ3JvdW5kU3ViYWdlbnRBcmdzSAASOgoTc3ViYWdlbnRfYXdhaXRfYXJncxglIAEoCzIbLmFnZW50LnYxLlN1YmFnZW50QXdhaXRBcmdzSAASRwoac21hcnRfbW9kZV9jbGFzc2lmaWVyX2FyZ3MYJiABKAsyIS5hZ2VudC52MS5TbWFydE1vZGVDbGFzc2lmaWVyQXJnc0gAEkIKF2NhbnZhc19kaWFnbm9zdGljc19hcmdzGCggASgLMh8uYWdlbnQudjEuQ2FudmFzRGlhZ25vc3RpY3NBcmdzSAASTQodc2hlbGxfYWxsb3dsaXN0X3ByZWNoZWNrX2FyZ3MYKSABKAsyJC5hZ2VudC52MS5TaGVsbEFsbG93bGlzdFByZWNoZWNrQXJnc0gAEkkKG21jcF9hbGxvd2xpc3RfcHJlY2hlY2tfYXJncxgqIAEoCzIiLmFnZW50LnYxLk1jcEFsbG93bGlzdFByZWNoZWNrQXJnc0gAElQKIXdlYl9mZXRjaF9hbGxvd2xpc3RfcHJlY2hlY2tfYXJncxgrIAEoCzInLmFnZW50LnYxLldlYkZldGNoQWxsb3dsaXN0UHJlY2hlY2tBcmdzSAASNAoQZ2l0X2RpZmZfcmVxdWVzdBgsIAEoCzIYLmFnZW50LnYxLkdldERpZmZSZXF1ZXN0SAASMAoMcGlfcmVhZF9hcmdzGC0gASgLMhguYWdlbnQudjEuUGlSZWFkRXhlY0FyZ3NIABIwCgxwaV9iYXNoX2FyZ3MYLiABKAsyGC5hZ2VudC52MS5QaUJhc2hFeGVjQXJnc0gAEjAKDHBpX2VkaXRfYXJncxgvIAEoCzIYLmFnZW50LnYxLlBpRWRpdEV4ZWNBcmdzSAASMgoNcGlfd3JpdGVfYXJncxgwIAEoCzIZLmFnZW50LnYxLlBpV3JpdGVFeGVjQXJnc0gAEjAKDHBpX2dyZXBfYXJncxgxIAEoCzIYLmFnZW50LnYxLlBpR3JlcEV4ZWNBcmdzSAASMAoMcGlfZmluZF9hcmdzGDIgASgLMhguYWdlbnQudjEuUGlGaW5kRXhlY0FyZ3NIABIsCgpwaV9sc19hcmdzGDMgASgLMhYuYWdlbnQudjEuUGlMc0V4ZWNBcmdzSAASNwoYbWluaV9zd2VfYWdlbnRfYmFzaF9hcmdzGDQgASgLMhMuYWdlbnQudjEuU2hlbGxBcmdzSAASRAoYY29udmVyc2F0aW9uX3NlYXJjaF9hcmdzGDUgASgLMiAuYWdlbnQudjEuQ29udmVyc2F0aW9uU2VhcmNoQXJnc0gAEkUKGWFnZW50X3N0b3JlX2NvbmZsaWN0X2FyZ3MYNiABKAsyIC5hZ2VudC52MS5BZ2VudFN0b3JlQ29uZmxpY3RBcmdzSAASLAofYWNjZXB0X2hvb2tfYWRkaXRpb25hbF9jb250ZXh0cxg3IAEoCEgCiAEBQgkKB21lc3NhZ2VCDwoNX3NwYW5fY29udGV4dEIiCiBfYWNjZXB0X2hvb2tfYWRkaXRpb25hbF9jb250ZXh0cyLhFAoRRXhlY0NsaWVudE1lc3NhZ2USCgoCaWQYASABKA0SDwoHZXhlY19pZBgPIAEoCRItCgxzaGVsbF9yZXN1bHQYAiABKAsyFS5hZ2VudC52MS5TaGVsbFJlc3VsdEgAEi0KDHdyaXRlX3Jlc3VsdBgDIAEoCzIVLmFnZW50LnYxLldyaXRlUmVzdWx0SAASLwoNZGVsZXRlX3Jlc3VsdBgEIAEoCzIWLmFnZW50LnYxLkRlbGV0ZVJlc3VsdEgAEisKC2dyZXBfcmVzdWx0GAUgASgLMhQuYWdlbnQudjEuR3JlcFJlc3VsdEgAEisKC3JlYWRfcmVzdWx0GAcgASgLMhQuYWdlbnQudjEuUmVhZFJlc3VsdEgAEicKCWxzX3Jlc3VsdBgIIAEoCzISLmFnZW50LnYxLkxzUmVzdWx0SAASOQoSZGlhZ25vc3RpY3NfcmVzdWx0GAkgASgLMhsuYWdlbnQudjEuRGlhZ25vc3RpY3NSZXN1bHRIABJAChZyZXF1ZXN0X2NvbnRleHRfcmVzdWx0GAogASgLMh4uYWdlbnQudjEuUmVxdWVzdENvbnRleHRSZXN1bHRIABIpCgptY3BfcmVzdWx0GAsgASgLMhMuYWdlbnQudjEuTWNwUmVzdWx0SAASLQoMc2hlbGxfc3RyZWFtGA4gASgLMhUuYWdlbnQudjEuU2hlbGxTdHJlYW1IABJNCh1iYWNrZ3JvdW5kX3NoZWxsX3NwYXduX3Jlc3VsdBgQIAEoCzIkLmFnZW50LnYxLkJhY2tncm91bmRTaGVsbFNwYXduUmVzdWx0SAASTgoebGlzdF9tY3BfcmVzb3VyY2VzX2V4ZWNfcmVzdWx0GBEgASgLMiQuYWdlbnQudjEuTGlzdE1jcFJlc291cmNlc0V4ZWNSZXN1bHRIABJMCh1yZWFkX21jcF9yZXNvdXJjZV9leGVjX3Jlc3VsdBgSIAEoCzIjLmFnZW50LnYxLlJlYWRNY3BSZXNvdXJjZUV4ZWNSZXN1bHRIABItCgxmZXRjaF9yZXN1bHQYFCABKAsyFS5hZ2VudC52MS5GZXRjaFJlc3VsdEgAEjwKFHJlY29yZF9zY3JlZW5fcmVzdWx0GBUgASgLMhwuYWdlbnQudjEuUmVjb3JkU2NyZWVuUmVzdWx0SAASOgoTY29tcHV0ZXJfdXNlX3Jlc3VsdBgWIAEoCzIbLmFnZW50LnYxLkNvbXB1dGVyVXNlUmVzdWx0SAASQwoYd3JpdGVfc2hlbGxfc3RkaW5fcmVzdWx0GBcgASgLMh8uYWdlbnQudjEuV3JpdGVTaGVsbFN0ZGluUmVzdWx0SAASNAoUcmVkYWN0ZWRfcmVhZF9yZXN1bHQYHSABKAsyFC5hZ2VudC52MS5SZWFkUmVzdWx0SAASPQoVbWNwX3N0YXRlX2V4ZWNfcmVzdWx0GCQgASgLMhwuYWdlbnQudjEuTWNwU3RhdGVFeGVjUmVzdWx0SAASOgoTZXhlY3V0ZV9ob29rX3Jlc3VsdBgbIAEoCzIbLmFnZW50LnYxLkV4ZWN1dGVIb29rUmVzdWx0SAASMwoPc3ViYWdlbnRfcmVzdWx0GBwgASgLMhguYWdlbnQudjEuU3ViYWdlbnRSZXN1bHRIABJNCh1mb3JjZV9iYWNrZ3JvdW5kX3NoZWxsX3Jlc3VsdBgeIAEoCzIkLmFnZW50LnYxLkZvcmNlQmFja2dyb3VuZFNoZWxsUmVzdWx0SAASUwogZm9yY2VfYmFja2dyb3VuZF9zdWJhZ2VudF9yZXN1bHQYHyABKAsyJy5hZ2VudC52MS5Gb3JjZUJhY2tncm91bmRTdWJhZ2VudFJlc3VsdEgAEj4KFXN1YmFnZW50X2F3YWl0X3Jlc3VsdBglIAEoCzIdLmFnZW50LnYxLlN1YmFnZW50QXdhaXRSZXN1bHRIABJLChxzbWFydF9tb2RlX2NsYXNzaWZpZXJfcmVzdWx0GCYgASgLMiMuYWdlbnQudjEuU21hcnRNb2RlQ2xhc3NpZmllclJlc3VsdEgAEkYKGWNhbnZhc19kaWFnbm9zdGljc19yZXN1bHQYKCABKAsyIS5hZ2VudC52MS5DYW52YXNEaWFnbm9zdGljc1Jlc3VsdEgAElEKH3NoZWxsX2FsbG93bGlzdF9wcmVjaGVja19yZXN1bHQYKSABKAsyJi5hZ2VudC52MS5TaGVsbEFsbG93bGlzdFByZWNoZWNrUmVzdWx0SAASTQodbWNwX2FsbG93bGlzdF9wcmVjaGVja19yZXN1bHQYKiABKAsyJC5hZ2VudC52MS5NY3BBbGxvd2xpc3RQcmVjaGVja1Jlc3VsdEgAElgKI3dlYl9mZXRjaF9hbGxvd2xpc3RfcHJlY2hlY2tfcmVzdWx0GCsgASgLMikuYWdlbnQudjEuV2ViRmV0Y2hBbGxvd2xpc3RQcmVjaGVja1Jlc3VsdEgAEjYKEWdpdF9kaWZmX3Jlc3BvbnNlGCwgASgLMhkuYWdlbnQudjEuR2V0RGlmZlJlc3BvbnNlSAASNAoOcGlfcmVhZF9yZXN1bHQYLiABKAsyGi5hZ2VudC52MS5QaVJlYWRFeGVjUmVzdWx0SAASNAoOcGlfYmFzaF9yZXN1bHQYLyABKAsyGi5hZ2VudC52MS5QaUJhc2hFeGVjUmVzdWx0SAASNAoOcGlfZWRpdF9yZXN1bHQYMCABKAsyGi5hZ2VudC52MS5QaUVkaXRFeGVjUmVzdWx0SAASNgoPcGlfd3JpdGVfcmVzdWx0GDEgASgLMhsuYWdlbnQudjEuUGlXcml0ZUV4ZWNSZXN1bHRIABI0Cg5waV9ncmVwX3Jlc3VsdBgyIAEoCzIaLmFnZW50LnYxLlBpR3JlcEV4ZWNSZXN1bHRIABI0Cg5waV9maW5kX3Jlc3VsdBgzIAEoCzIaLmFnZW50LnYxLlBpRmluZEV4ZWNSZXN1bHRIABIwCgxwaV9sc19yZXN1bHQYNCABKAsyGC5hZ2VudC52MS5QaUxzRXhlY1Jlc3VsdEgAEkgKGmNvbnZlcnNhdGlvbl9zZWFyY2hfcmVzdWx0GDUgASgLMiIuYWdlbnQudjEuQ29udmVyc2F0aW9uU2VhcmNoUmVzdWx0SAASSQobYWdlbnRfc3RvcmVfY29uZmxpY3RfcmVzdWx0GDYgASgLMiIuYWdlbnQudjEuQWdlbnRTdG9yZUNvbmZsaWN0UmVzdWx0SAASOwoabWluaV9zd2VfYWdlbnRfYmFzaF9yZXN1bHQYNyABKAsyFS5hZ2VudC52MS5TaGVsbFJlc3VsdEgAEiQKF2xvY2FsX2V4ZWN1dGlvbl90aW1lX21zGCcgASgFSAGIAQESQQoYaG9va19hZGRpdGlvbmFsX2NvbnRleHRzGC0gAygLMh8uYWdlbnQudjEuSG9va0FkZGl0aW9uYWxDb250ZXh0QgkKB21lc3NhZ2VCGgoYX2xvY2FsX2V4ZWN1dGlvbl90aW1lX21zIi4KCUZldGNoQXJncxILCgN1cmwYASABKAkSFAoMdG9vbF9jYWxsX2lkGAIgASgJImkKC0ZldGNoUmVzdWx0EikKB3N1Y2Nlc3MYASABKAsyFi5hZ2VudC52MS5GZXRjaFN1Y2Nlc3NIABIlCgVlcnJvchgCIAEoCzIULmFnZW50LnYxLkZldGNoRXJyb3JIAEIICgZyZXN1bHQiVwoMRmV0Y2hTdWNjZXNzEgsKA3VybBgBIAEoCRIPCgdjb250ZW50GAIgASgJEhMKC3N0YXR1c19jb2RlGAMgASgFEhQKDGNvbnRlbnRfdHlwZRgEIAEoCSIoCgpGZXRjaEVycm9yEgsKA3VybBgBIAEoCRINCgVlcnJvchgCIAEoCSJtChFHZW5lcmF0ZUltYWdlQXJncxITCgtkZXNjcmlwdGlvbhgBIAEoCRIWCglmaWxlX3BhdGgYAiABKAlIAIgBARIdChVyZWZlcmVuY2VfaW1hZ2VfcGF0aHMYBSADKAlCDAoKX2ZpbGVfcGF0aCKBAQoTR2VuZXJhdGVJbWFnZVJlc3VsdBIxCgdzdWNjZXNzGAEgASgLMh4uYWdlbnQudjEuR2VuZXJhdGVJbWFnZVN1Y2Nlc3NIABItCgVlcnJvchgCIAEoCzIcLmFnZW50LnYxLkdlbmVyYXRlSW1hZ2VFcnJvckgAQggKBnJlc3VsdCI9ChRHZW5lcmF0ZUltYWdlU3VjY2VzcxIRCglmaWxlX3BhdGgYASABKAkSEgoKaW1hZ2VfZGF0YRgCIAEoCSIjChJHZW5lcmF0ZUltYWdlRXJyb3ISDQoFZXJyb3IYASABKAkicQoVR2VuZXJhdGVJbWFnZVRvb2xDYWxsEikKBGFyZ3MYASABKAsyGy5hZ2VudC52MS5HZW5lcmF0ZUltYWdlQXJncxItCgZyZXN1bHQYAiABKAsyHS5hZ2VudC52MS5HZW5lcmF0ZUltYWdlUmVzdWx0IuYECghHcmVwQXJncxIPCgdwYXR0ZXJuGAEgASgJEhEKBHBhdGgYAiABKAlIAIgBARIRCgRnbG9iGAMgASgJSAGIAQESGAoLb3V0cHV0X21vZGUYBCABKAlIAogBARIbCg5jb250ZXh0X2JlZm9yZRgFIAEoBUgDiAEBEhoKDWNvbnRleHRfYWZ0ZXIYBiABKAVIBIgBARIUCgdjb250ZXh0GAcgASgFSAWIAQESHQoQY2FzZV9pbnNlbnNpdGl2ZRgIIAEoCEgGiAEBEhEKBHR5cGUYCSABKAlIB4gBARIXCgpoZWFkX2xpbWl0GAogASgFSAiIAQESFgoJbXVsdGlsaW5lGAsgASgISAmIAQESEQoEc29ydBgMIAEoCUgKiAEBEhsKDnNvcnRfYXNjZW5kaW5nGA0gASgISAuIAQESFAoMdG9vbF9jYWxsX2lkGA4gASgJEjQKDnNhbmRib3hfcG9saWN5GA8gASgLMhcuYWdlbnQudjEuU2FuZGJveFBvbGljeUgMiAEBEhMKBm9mZnNldBgQIAEoBUgNiAEBQgcKBV9wYXRoQgcKBV9nbG9iQg4KDF9vdXRwdXRfbW9kZUIRCg9fY29udGV4dF9iZWZvcmVCEAoOX2NvbnRleHRfYWZ0ZXJCCgoIX2NvbnRleHRCEwoRX2Nhc2VfaW5zZW5zaXRpdmVCBwoFX3R5cGVCDQoLX2hlYWRfbGltaXRCDAoKX211bHRpbGluZUIHCgVfc29ydEIRCg9fc29ydF9hc2NlbmRpbmdCEQoPX3NhbmRib3hfcG9saWN5QgkKB19vZmZzZXQiZgoKR3JlcFJlc3VsdBIoCgdzdWNjZXNzGAEgASgLMhUuYWdlbnQudjEuR3JlcFN1Y2Nlc3NIABIkCgVlcnJvchgCIAEoCzITLmFnZW50LnYxLkdyZXBFcnJvckgAQggKBnJlc3VsdCIaCglHcmVwRXJyb3ISDQoFZXJyb3IYASABKAkitAIKC0dyZXBTdWNjZXNzEg8KB3BhdHRlcm4YASABKAkSDAoEcGF0aBgCIAEoCRITCgtvdXRwdXRfbW9kZRgDIAEoCRJGChF3b3Jrc3BhY2VfcmVzdWx0cxgEIAMoCzIrLmFnZW50LnYxLkdyZXBTdWNjZXNzLldvcmtzcGFjZVJlc3VsdHNFbnRyeRI8ChRhY3RpdmVfZWRpdG9yX3Jlc3VsdBgFIAEoCzIZLmFnZW50LnYxLkdyZXBVbmlvblJlc3VsdEgAiAEBGlIKFVdvcmtzcGFjZVJlc3VsdHNFbnRyeRILCgNrZXkYASABKAkSKAoFdmFsdWUYAiABKAsyGS5hZ2VudC52MS5HcmVwVW5pb25SZXN1bHQ6AjgBQhcKFV9hY3RpdmVfZWRpdG9yX3Jlc3VsdCKjAQoPR3JlcFVuaW9uUmVzdWx0EioKBWNvdW50GAEgASgLMhkuYWdlbnQudjEuR3JlcENvdW50UmVzdWx0SAASKgoFZmlsZXMYAiABKAsyGS5hZ2VudC52MS5HcmVwRmlsZXNSZXN1bHRIABIuCgdjb250ZW50GAMgASgLMhsuYWdlbnQudjEuR3JlcENvbnRlbnRSZXN1bHRIAEIICgZyZXN1bHQigwIKD0dyZXBDb3VudFJlc3VsdBInCgZjb3VudHMYASADKAsyFy5hZ2VudC52MS5HcmVwRmlsZUNvdW50EhMKC3RvdGFsX2ZpbGVzGAIgASgFEhUKDXRvdGFsX21hdGNoZXMYAyABKAUSGAoQY2xpZW50X3RydW5jYXRlZBgEIAEoCBIZChFyaXBncmVwX3RydW5jYXRlZBgFIAEoCBIfChJoZWFkX2xpbWl0X2FwcGxpZWQYBiABKAVIAIgBARIbCg5vZmZzZXRfYXBwbGllZBgHIAEoBUgBiAEBQhUKE19oZWFkX2xpbWl0X2FwcGxpZWRCEQoPX29mZnNldF9hcHBsaWVkIiwKDUdyZXBGaWxlQ291bnQSDAoEZmlsZRgBIAEoCRINCgVjb3VudBgCIAEoBSLSAQoPR3JlcEZpbGVzUmVzdWx0Eg0KBWZpbGVzGAEgAygJEhMKC3RvdGFsX2ZpbGVzGAIgASgFEhgKEGNsaWVudF90cnVuY2F0ZWQYAyABKAgSGQoRcmlwZ3JlcF90cnVuY2F0ZWQYBCABKAgSHwoSaGVhZF9saW1pdF9hcHBsaWVkGAUgASgFSACIAQESGwoOb2Zmc2V0X2FwcGxpZWQYBiABKAVIAYgBAUIVChNfaGVhZF9saW1pdF9hcHBsaWVkQhEKD19vZmZzZXRfYXBwbGllZCKMAgoRR3JlcENvbnRlbnRSZXN1bHQSKAoHbWF0Y2hlcxgBIAMoCzIXLmFnZW50LnYxLkdyZXBGaWxlTWF0Y2gSEwoLdG90YWxfbGluZXMYAiABKAUSGwoTdG90YWxfbWF0Y2hlZF9saW5lcxgDIAEoBRIYChBjbGllbnRfdHJ1bmNhdGVkGAQgASgIEhkKEXJpcGdyZXBfdHJ1bmNhdGVkGAUgASgIEh8KEmhlYWRfbGltaXRfYXBwbGllZBgGIAEoBUgAiAEBEhsKDm9mZnNldF9hcHBsaWVkGAcgASgFSAGIAQFCFQoTX2hlYWRfbGltaXRfYXBwbGllZEIRCg9fb2Zmc2V0X2FwcGxpZWQiSgoNR3JlcEZpbGVNYXRjaBIMCgRmaWxlGAEgASgJEisKB21hdGNoZXMYAiADKAsyGi5hZ2VudC52MS5HcmVwQ29udGVudE1hdGNoImwKEEdyZXBDb250ZW50TWF0Y2gSEwoLbGluZV9udW1iZXIYASABKAUSDwoHY29udGVudBgCIAEoCRIZChFjb250ZW50X3RydW5jYXRlZBgDIAEoCBIXCg9pc19jb250ZXh0X2xpbmUYBCABKAgiHQoKR3JlcFN0cmVhbRIPCgdwYXR0ZXJuGAEgASgJIlYKDEdyZXBUb29sQ2FsbBIgCgRhcmdzGAEgASgLMhIuYWdlbnQudjEuR3JlcEFyZ3MSJAoGcmVzdWx0GAIgASgLMhQuYWdlbnQudjEuR3JlcFJlc3VsdCIeCgtHZXRCbG9iQXJncxIPCgdibG9iX2lkGAEgASgMIjUKDUdldEJsb2JSZXN1bHQSFgoJYmxvYl9kYXRhGAEgASgMSACIAQFCDAoKX2Jsb2JfZGF0YSIxCgtTZXRCbG9iQXJncxIPCgdibG9iX2lkGAEgASgMEhEKCWJsb2JfZGF0YRgCIAEoDCI+Cg1TZXRCbG9iUmVzdWx0EiMKBWVycm9yGAEgASgLMg8uYWdlbnQudjEuRXJyb3JIAIgBAUIICgZfZXJyb3IiywEKD0t2U2VydmVyTWVzc2FnZRIKCgJpZBgBIAEoDRIwCgxzcGFuX2NvbnRleHQYBCABKAsyFS5hZ2VudC52MS5TcGFuQ29udGV4dEgBiAEBEi4KDWdldF9ibG9iX2FyZ3MYAiABKAsyFS5hZ2VudC52MS5HZXRCbG9iQXJnc0gAEi4KDXNldF9ibG9iX2FyZ3MYAyABKAsyFS5hZ2VudC52MS5TZXRCbG9iQXJnc0gAQgkKB21lc3NhZ2VCDwoNX3NwYW5fY29udGV4dCKQAQoPS3ZDbGllbnRNZXNzYWdlEgoKAmlkGAEgASgNEjIKD2dldF9ibG9iX3Jlc3VsdBgCIAEoCzIXLmFnZW50LnYxLkdldEJsb2JSZXN1bHRIABIyCg9zZXRfYmxvYl9yZXN1bHQYAyABKAsyFy5hZ2VudC52MS5TZXRCbG9iUmVzdWx0SABCCQoHbWVzc2FnZSKtAQoGTHNBcmdzEgwKBHBhdGgYASABKAkSDgoGaWdub3JlGAIgAygJEhQKDHRvb2xfY2FsbF9pZBgDIAEoCRI0Cg5zYW5kYm94X3BvbGljeRgEIAEoCzIXLmFnZW50LnYxLlNhbmRib3hQb2xpY3lIAIgBARIXCgp0aW1lb3V0X21zGAUgASgNSAGIAQFCEQoPX3NhbmRib3hfcG9saWN5Qg0KC190aW1lb3V0X21zIrIBCghMc1Jlc3VsdBImCgdzdWNjZXNzGAEgASgLMhMuYWdlbnQudjEuTHNTdWNjZXNzSAASIgoFZXJyb3IYAiABKAsyES5hZ2VudC52MS5Mc0Vycm9ySAASKAoIcmVqZWN0ZWQYAyABKAsyFC5hZ2VudC52MS5Mc1JlamVjdGVkSAASJgoHdGltZW91dBgEIAEoCzITLmFnZW50LnYxLkxzVGltZW91dEgAQggKBnJlc3VsdCJHCglMc1N1Y2Nlc3MSOgoTZGlyZWN0b3J5X3RyZWVfcm9vdBgBIAEoCzIdLmFnZW50LnYxLkxzRGlyZWN0b3J5VHJlZU5vZGUi9gIKE0xzRGlyZWN0b3J5VHJlZU5vZGUSEAoIYWJzX3BhdGgYASABKAkSNAoNY2hpbGRyZW5fZGlycxgCIAMoCzIdLmFnZW50LnYxLkxzRGlyZWN0b3J5VHJlZU5vZGUSOgoOY2hpbGRyZW5fZmlsZXMYAyADKAsyIi5hZ2VudC52MS5Mc0RpcmVjdG9yeVRyZWVOb2RlX0ZpbGUSHwoXY2hpbGRyZW5fd2VyZV9wcm9jZXNzZWQYBCABKAgSZAodZnVsbF9zdWJ0cmVlX2V4dGVuc2lvbl9jb3VudHMYBSADKAsyPS5hZ2VudC52MS5Mc0RpcmVjdG9yeVRyZWVOb2RlLkZ1bGxTdWJ0cmVlRXh0ZW5zaW9uQ291bnRzRW50cnkSEQoJbnVtX2ZpbGVzGAYgASgFGkEKH0Z1bGxTdWJ0cmVlRXh0ZW5zaW9uQ291bnRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ASJ6ChhMc0RpcmVjdG9yeVRyZWVOb2RlX0ZpbGUSDAoEbmFtZRgBIAEoCRI6ChF0ZXJtaW5hbF9tZXRhZGF0YRgCIAEoCzIaLmFnZW50LnYxLlRlcm1pbmFsTWV0YWRhdGFIAIgBAUIUChJfdGVybWluYWxfbWV0YWRhdGEiJgoHTHNFcnJvchIMCgRwYXRoGAEgASgJEg0KBWVycm9yGAIgASgJIioKCkxzUmVqZWN0ZWQSDAoEcGF0aBgBIAEoCRIOCgZyZWFzb24YAiABKAkiRwoJTHNUaW1lb3V0EjoKE2RpcmVjdG9yeV90cmVlX3Jvb3QYASABKAsyHS5hZ2VudC52MS5Mc0RpcmVjdG9yeVRyZWVOb2RlIvEBChBUZXJtaW5hbE1ldGFkYXRhEhAKA2N3ZBgBIAEoCUgAiAEBEjkKDWxhc3RfY29tbWFuZHMYAiADKAsyIi5hZ2VudC52MS5UZXJtaW5hbE1ldGFkYXRhX0NvbW1hbmQSHQoQbGFzdF9tb2RpZmllZF9tcxgDIAEoA0gBiAEBEkAKD2N1cnJlbnRfY29tbWFuZBgEIAEoCzIiLmFnZW50LnYxLlRlcm1pbmFsTWV0YWRhdGFfQ29tbWFuZEgCiAEBQgYKBF9jd2RCEwoRX2xhc3RfbW9kaWZpZWRfbXNCEgoQX2N1cnJlbnRfY29tbWFuZCKnAQoYVGVybWluYWxNZXRhZGF0YV9Db21tYW5kEg8KB2NvbW1hbmQYASABKAkSFgoJZXhpdF9jb2RlGAIgASgFSACIAQESGQoMdGltZXN0YW1wX21zGAMgASgDSAGIAQESGAoLZHVyYXRpb25fbXMYBCABKANIAogBAUIMCgpfZXhpdF9jb2RlQg8KDV90aW1lc3RhbXBfbXNCDgoMX2R1cmF0aW9uX21zIlAKCkxzVG9vbENhbGwSHgoEYXJncxgBIAEoCzIQLmFnZW50LnYxLkxzQXJncxIiCgZyZXN1bHQYAiABKAsyEi5hZ2VudC52MS5Mc1Jlc3VsdCLgAgoHTWNwQXJncxIMCgRuYW1lGAEgASgJEikKBGFyZ3MYAiADKAsyGy5hZ2VudC52MS5NY3BBcmdzLkFyZ3NFbnRyeRIUCgx0b29sX2NhbGxfaWQYAyABKAkSGwoTcHJvdmlkZXJfaWRlbnRpZmllchgEIAEoCRIRCgl0b29sX25hbWUYBSABKAkSPQoTc21hcnRfbW9kZV9hcHByb3ZhbBgGIAEoCzIbLmFnZW50LnYxLlNtYXJ0TW9kZUFwcHJvdmFsSACIAQESIAoYc21hcnRfbW9kZV9hcHByb3ZhbF9vbmx5GAcgASgIEhUKDXNraXBfYXBwcm92YWwYCCABKAgSGQoRc2VydmVyX2lkZW50aWZpZXIYCSABKAkaKwoJQXJnc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDDoCOAFCFgoUX3NtYXJ0X21vZGVfYXBwcm92YWwi4wIKCU1jcFJlc3VsdBInCgdzdWNjZXNzGAEgASgLMhQuYWdlbnQudjEuTWNwU3VjY2Vzc0gAEiMKBWVycm9yGAIgASgLMhIuYWdlbnQudjEuTWNwRXJyb3JIABIpCghyZWplY3RlZBgDIAEoCzIVLmFnZW50LnYxLk1jcFJlamVjdGVkSAASOgoRcGVybWlzc2lvbl9kZW5pZWQYBCABKAsyHS5hZ2VudC52MS5NY3BQZXJtaXNzaW9uRGVuaWVkSAASMwoOdG9vbF9ub3RfZm91bmQYBSABKAsyGS5hZ2VudC52MS5NY3BUb29sTm90Rm91bmRIABI3ChBzZXJ2ZXJfbm90X2ZvdW5kGAYgASgLMhsuYWdlbnQudjEuTWNwU2VydmVyTm90Rm91bmRIABIpCghhcHByb3ZlZBgHIAEoCzIVLmFnZW50LnYxLk1jcEFwcHJvdmVkSABCCAoGcmVzdWx0IjgKD01jcFRvb2xOb3RGb3VuZBIMCgRuYW1lGAEgASgJEhcKD2F2YWlsYWJsZV90b29scxgCIAMoCSJqCg5NY3BUZXh0Q29udGVudBIMCgR0ZXh0GAEgASgJEjYKD291dHB1dF9sb2NhdGlvbhgCIAEoCzIYLmFnZW50LnYxLk91dHB1dExvY2F0aW9uSACIAQFCEgoQX291dHB1dF9sb2NhdGlvbiIyCg9NY3BJbWFnZUNvbnRlbnQSDAoEZGF0YRgBIAEoDBIRCgltaW1lX3R5cGUYAiABKAkiewoYTWNwVG9vbFJlc3VsdENvbnRlbnRJdGVtEigKBHRleHQYASABKAsyGC5hZ2VudC52MS5NY3BUZXh0Q29udGVudEgAEioKBWltYWdlGAIgASgLMhkuYWdlbnQudjEuTWNwSW1hZ2VDb250ZW50SABCCQoHY29udGVudCJTCgpNY3BTdWNjZXNzEjMKB2NvbnRlbnQYASADKAsyIi5hZ2VudC52MS5NY3BUb29sUmVzdWx0Q29udGVudEl0ZW0SEAoIaXNfZXJyb3IYAiABKAgiGQoITWNwRXJyb3ISDQoFZXJyb3IYASABKAkiMgoLTWNwUmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJEhMKC2lzX3JlYWRvbmx5GAIgASgIIjkKE01jcFBlcm1pc3Npb25EZW5pZWQSDQoFZXJyb3IYASABKAkSEwoLaXNfcmVhZG9ubHkYAiABKAgiOgoYTGlzdE1jcFJlc291cmNlc0V4ZWNBcmdzEhMKBnNlcnZlchgBIAEoCUgAiAEBQgkKB19zZXJ2ZXIixgEKGkxpc3RNY3BSZXNvdXJjZXNFeGVjUmVzdWx0EjQKB3N1Y2Nlc3MYASABKAsyIS5hZ2VudC52MS5MaXN0TWNwUmVzb3VyY2VzU3VjY2Vzc0gAEjAKBWVycm9yGAIgASgLMh8uYWdlbnQudjEuTGlzdE1jcFJlc291cmNlc0Vycm9ySAASNgoIcmVqZWN0ZWQYAyABKAsyIi5hZ2VudC52MS5MaXN0TWNwUmVzb3VyY2VzUmVqZWN0ZWRIAEIICgZyZXN1bHQivQIKJkxpc3RNY3BSZXNvdXJjZXNFeGVjUmVzdWx0X01jcFJlc291cmNlEgsKA3VyaRgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARIWCgltaW1lX3R5cGUYBCABKAlIAogBARIOCgZzZXJ2ZXIYBSABKAkSVgoLYW5ub3RhdGlvbnMYBiADKAsyQS5hZ2VudC52MS5MaXN0TWNwUmVzb3VyY2VzRXhlY1Jlc3VsdF9NY3BSZXNvdXJjZS5Bbm5vdGF0aW9uc0VudHJ5GjIKEEFubm90YXRpb25zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDAoKX21pbWVfdHlwZSJeChdMaXN0TWNwUmVzb3VyY2VzU3VjY2VzcxJDCglyZXNvdXJjZXMYASADKAsyMC5hZ2VudC52MS5MaXN0TWNwUmVzb3VyY2VzRXhlY1Jlc3VsdF9NY3BSZXNvdXJjZSImChVMaXN0TWNwUmVzb3VyY2VzRXJyb3ISDQoFZXJyb3IYASABKAkiKgoYTGlzdE1jcFJlc291cmNlc1JlamVjdGVkEg4KBnJlYXNvbhgBIAEoCSLRAQoXUmVhZE1jcFJlc291cmNlRXhlY0FyZ3MSDgoGc2VydmVyGAEgASgJEgsKA3VyaRgCIAEoCRIaCg1kb3dubG9hZF9wYXRoGAMgASgJSACIAQESFAoMdG9vbF9jYWxsX2lkGAQgASgJEj0KE3NtYXJ0X21vZGVfYXBwcm92YWwYBSABKAsyGy5hZ2VudC52MS5TbWFydE1vZGVBcHByb3ZhbEgBiAEBQhAKDl9kb3dubG9hZF9wYXRoQhYKFF9zbWFydF9tb2RlX2FwcHJvdmFsIvoBChlSZWFkTWNwUmVzb3VyY2VFeGVjUmVzdWx0EjMKB3N1Y2Nlc3MYASABKAsyIC5hZ2VudC52MS5SZWFkTWNwUmVzb3VyY2VTdWNjZXNzSAASLwoFZXJyb3IYAiABKAsyHi5hZ2VudC52MS5SZWFkTWNwUmVzb3VyY2VFcnJvckgAEjUKCHJlamVjdGVkGAMgASgLMiEuYWdlbnQudjEuUmVhZE1jcFJlc291cmNlUmVqZWN0ZWRIABI2Cglub3RfZm91bmQYBCABKAsyIS5hZ2VudC52MS5SZWFkTWNwUmVzb3VyY2VOb3RGb3VuZEgAQggKBnJlc3VsdCKyAwoWUmVhZE1jcFJlc291cmNlU3VjY2VzcxILCgN1cmkYASABKAkSEQoEbmFtZRgCIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAKIAQESFgoJbWltZV90eXBlGAQgASgJSAOIAQESRgoLYW5ub3RhdGlvbnMYByADKAsyMS5hZ2VudC52MS5SZWFkTWNwUmVzb3VyY2VTdWNjZXNzLkFubm90YXRpb25zRW50cnkSGgoNZG93bmxvYWRfcGF0aBgIIAEoCUgEiAEBEg4KBHRleHQYBSABKAlIABIOCgRibG9iGAYgASgMSAASNgoPb3V0cHV0X2xvY2F0aW9uGAkgASgLMhguYWdlbnQudjEuT3V0cHV0TG9jYXRpb25IBYgBARoyChBBbm5vdGF0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCQoHY29udGVudEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDAoKX21pbWVfdHlwZUIQCg5fZG93bmxvYWRfcGF0aEISChBfb3V0cHV0X2xvY2F0aW9uIjIKFFJlYWRNY3BSZXNvdXJjZUVycm9yEgsKA3VyaRgBIAEoCRINCgVlcnJvchgCIAEoCSI2ChdSZWFkTWNwUmVzb3VyY2VSZWplY3RlZBILCgN1cmkYASABKAkSDgoGcmVhc29uGAIgASgJIiYKF1JlYWRNY3BSZXNvdXJjZU5vdEZvdW5kEgsKA3VyaRgBIAEoCSKyAQoRTWNwVG9vbERlZmluaXRpb24SDAoEbmFtZRgBIAEoCRIbChNwcm92aWRlcl9pZGVudGlmaWVyGAQgASgJEhEKCXRvb2xfbmFtZRgFIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIUCgxpbnB1dF9zY2hlbWEYAyABKAwSHgoRaW5wdXRfc2NoZW1hX2pzb24YBiABKAlIAIgBAUIUChJfaW5wdXRfc2NoZW1hX2pzb24iOgoITWNwVG9vbHMSLgoJbWNwX3Rvb2xzGAEgAygLMhsuYWdlbnQudjEuTWNwVG9vbERlZmluaXRpb24iVwoPTWNwSW5zdHJ1Y3Rpb25zEhMKC3NlcnZlcl9uYW1lGAEgASgJEhQKDGluc3RydWN0aW9ucxgCIAEoCRIZChFzZXJ2ZXJfaWRlbnRpZmllchgDIAEoCSL9AgoNTWNwRGVzY3JpcHRvchITCgtzZXJ2ZXJfbmFtZRgBIAEoCRIZChFzZXJ2ZXJfaWRlbnRpZmllchgCIAEoCRIYCgtmb2xkZXJfcGF0aBgDIAEoCUgAiAEBEiQKF3NlcnZlcl91c2VfaW5zdHJ1Y3Rpb25zGAQgASgJSAGIAQESKgoFdG9vbHMYBSADKAsyGy5hZ2VudC52MS5NY3BUb29sRGVzY3JpcHRvchITCgZwbHVnaW4YByABKAlIAogBARIYCgttYXJrZXRwbGFjZRgIIAEoCUgDiAEBEhkKDHBsdWdpbl9kYl9pZBgJIAEoCUgEiAEBEhsKDm1hcmtldHBsYWNlX2lkGAogASgJSAWIAQFCDgoMX2ZvbGRlcl9wYXRoQhoKGF9zZXJ2ZXJfdXNlX2luc3RydWN0aW9uc0IJCgdfcGx1Z2luQg4KDF9tYXJrZXRwbGFjZUIPCg1fcGx1Z2luX2RiX2lkQhEKD19tYXJrZXRwbGFjZV9pZCK4AQoRTWNwVG9vbERlc2NyaXB0b3ISEQoJdG9vbF9uYW1lGAEgASgJEhwKD2RlZmluaXRpb25fcGF0aBgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESHgoRaW5wdXRfc2NoZW1hX2pzb24YBSABKAlIAogBAUISChBfZGVmaW5pdGlvbl9wYXRoQg4KDF9kZXNjcmlwdGlvbkIUChJfaW5wdXRfc2NoZW1hX2pzb24ieAoUTWNwRmlsZVN5c3RlbU9wdGlvbnMSDwoHZW5hYmxlZBgBIAEoCBIdChV3b3Jrc3BhY2VfcHJvamVjdF9kaXIYAiABKAkSMAoPbWNwX2Rlc2NyaXB0b3JzGAMgAygLMhcuYWdlbnQudjEuTWNwRGVzY3JpcHRvciKaAQoIUmVhZEFyZ3MSDAoEcGF0aBgBIAEoCRIUCgx0b29sX2NhbGxfaWQYAiABKAkSEwoGb2Zmc2V0GAQgASgFSACIAQESEgoFbGltaXQYBSABKA1IAYgBARIaCg1lbmNvZGluZ19oaW50GAYgASgJSAKIAQFCCQoHX29mZnNldEIICgZfbGltaXRCEAoOX2VuY29kaW5nX2hpbnQiuAIKClJlYWRSZXN1bHQSKAoHc3VjY2VzcxgBIAEoCzIVLmFnZW50LnYxLlJlYWRTdWNjZXNzSAASJAoFZXJyb3IYAiABKAsyEy5hZ2VudC52MS5SZWFkRXJyb3JIABIqCghyZWplY3RlZBgDIAEoCzIWLmFnZW50LnYxLlJlYWRSZWplY3RlZEgAEjQKDmZpbGVfbm90X2ZvdW5kGAQgASgLMhouYWdlbnQudjEuUmVhZEZpbGVOb3RGb3VuZEgAEjsKEXBlcm1pc3Npb25fZGVuaWVkGAUgASgLMh4uYWdlbnQudjEuUmVhZFBlcm1pc3Npb25EZW5pZWRIABIxCgxpbnZhbGlkX2ZpbGUYBiABKAsyGS5hZ2VudC52MS5SZWFkSW52YWxpZEZpbGVIAEIICgZyZXN1bHQiygEKC1JlYWRTdWNjZXNzEgwKBHBhdGgYASABKAkSEwoLdG90YWxfbGluZXMYAyABKAUSEQoJZmlsZV9zaXplGAQgASgDEhEKCXRydW5jYXRlZBgGIAEoCBIbCg5vdXRwdXRfYmxvYl9pZBgHIAEoDEgBiAEBEhEKB2NvbnRlbnQYAiABKAlIABIOCgRkYXRhGAUgASgMSAASFQoNcmFuZ2VfYXBwbGllZBgIIAEoCEIICgZvdXRwdXRCEQoPX291dHB1dF9ibG9iX2lkIigKCVJlYWRFcnJvchIMCgRwYXRoGAEgASgJEg0KBWVycm9yGAIgASgJIiwKDFJlYWRSZWplY3RlZBIMCgRwYXRoGAEgASgJEg4KBnJlYXNvbhgCIAEoCSIgChBSZWFkRmlsZU5vdEZvdW5kEgwKBHBhdGgYASABKAkiJAoUUmVhZFBlcm1pc3Npb25EZW5pZWQSDAoEcGF0aBgBIAEoCSIvCg9SZWFkSW52YWxpZEZpbGUSDAoEcGF0aBgBIAEoCRIOCgZyZWFzb24YAiABKAkiXgoMUmVhZFRvb2xDYWxsEiQKBGFyZ3MYASABKAsyFi5hZ2VudC52MS5SZWFkVG9vbEFyZ3MSKAoGcmVzdWx0GAIgASgLMhguYWdlbnQudjEuUmVhZFRvb2xSZXN1bHQiWgoMUmVhZFRvb2xBcmdzEgwKBHBhdGgYASABKAkSEwoGb2Zmc2V0GAIgASgFSACIAQESEgoFbGltaXQYAyABKAVIAYgBAUIJCgdfb2Zmc2V0QggKBl9saW1pdCJyCg5SZWFkVG9vbFJlc3VsdBIsCgdzdWNjZXNzGAEgASgLMhkuYWdlbnQudjEuUmVhZFRvb2xTdWNjZXNzSAASKAoFZXJyb3IYAiABKAsyFy5hZ2VudC52MS5SZWFkVG9vbEVycm9ySABCCAoGcmVzdWx0IjEKCVJlYWRSYW5nZRISCgpzdGFydF9saW5lGAEgASgNEhAKCGVuZF9saW5lGAIgASgNIo4CCg9SZWFkVG9vbFN1Y2Nlc3MSEAoIaXNfZW1wdHkYAiABKAgSFgoOZXhjZWVkZWRfbGltaXQYAyABKAgSEwoLdG90YWxfbGluZXMYBCABKA0SEQoJZmlsZV9zaXplGAUgASgNEgwKBHBhdGgYByABKAkSLAoKcmVhZF9yYW5nZRgIIAEoCzITLmFnZW50LnYxLlJlYWRSYW5nZUgBiAEBEhEKB2NvbnRlbnQYASABKAlIABIOCgRkYXRhGAYgASgMSAASFgoMZGF0YV9ibG9iX2lkGAkgASgMSAASGQoPY29udGVudF9ibG9iX2lkGAogASgMSABCCAoGb3V0cHV0Qg0KC19yZWFkX3JhbmdlIiYKDVJlYWRUb29sRXJyb3ISFQoNZXJyb3JfbWVzc2FnZRgBIAEoCSJqChBSZWNvcmRTY3JlZW5BcmdzEgwKBG1vZGUYASABKAUSFAoMdG9vbF9jYWxsX2lkGAIgASgJEh0KEHNhdmVfYXNfZmlsZW5hbWUYAyABKAlIAIgBAUITChFfc2F2ZV9hc19maWxlbmFtZSKJAgoSUmVjb3JkU2NyZWVuUmVzdWx0EjsKDXN0YXJ0X3N1Y2Nlc3MYASABKAsyIi5hZ2VudC52MS5SZWNvcmRTY3JlZW5TdGFydFN1Y2Nlc3NIABI5CgxzYXZlX3N1Y2Nlc3MYAiABKAsyIS5hZ2VudC52MS5SZWNvcmRTY3JlZW5TYXZlU3VjY2Vzc0gAEj8KD2Rpc2NhcmRfc3VjY2VzcxgDIAEoCzIkLmFnZW50LnYxLlJlY29yZFNjcmVlbkRpc2NhcmRTdWNjZXNzSAASMAoHZmFpbHVyZRgEIAEoCzIdLmFnZW50LnYxLlJlY29yZFNjcmVlbkZhaWx1cmVIAEIICgZyZXN1bHQiZwoYUmVjb3JkU2NyZWVuU3RhcnRTdWNjZXNzEiUKHXdhc19wcmlvcl9yZWNvcmRpbmdfY2FuY2VsbGVkGAEgASgIEiQKHHdhc19zYXZlX2FzX2ZpbGVuYW1lX2lnbm9yZWQYAiABKAgioAEKF1JlY29yZFNjcmVlblNhdmVTdWNjZXNzEgwKBHBhdGgYASABKAkSHQoVcmVjb3JkaW5nX2R1cmF0aW9uX21zGAIgASgDEjAKI3JlcXVlc3RlZF9maWxlX3BhdGhfcmVqZWN0ZWRfcmVhc29uGAMgASgFSACIAQFCJgokX3JlcXVlc3RlZF9maWxlX3BhdGhfcmVqZWN0ZWRfcmVhc29uIhwKGlJlY29yZFNjcmVlbkRpc2NhcmRTdWNjZXNzIiQKE1JlY29yZFNjcmVlbkZhaWx1cmUSDQoFZXJyb3IYASABKAkiNgoTQ3Vyc29yUGFja2FnZVByb21wdBIMCgRuYW1lGAEgASgJEhEKCWZpbGVfcGF0aBgCIAEoCSLiAQoNQ3Vyc29yUGFja2FnZRIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhMKC2ZvbGRlcl9wYXRoGAMgASgJEg8KB2VuYWJsZWQYBCABKAgSGAoLcGFyc2VfZXJyb3IYBSABKAlIAIgBARIuCgdwcm9tcHRzGAYgAygLMh0uYWdlbnQudjEuQ3Vyc29yUGFja2FnZVByb21wdBIYChByZWFkbWVfZmlsZV9wYXRoGAcgASgJEhQKDHBhY2thZ2VfdHlwZRgIIAEoBUIOCgxfcGFyc2VfZXJyb3IiqwIKFlJlcG9zaXRvcnlJbmRleGluZ0luZm8SHwoXcmVsYXRpdmVfd29ya3NwYWNlX3BhdGgYASABKAkSEwoLcmVtb3RlX3VybHMYAiADKAkSFAoMcmVtb3RlX25hbWVzGAMgAygJEhEKCXJlcG9fbmFtZRgEIAEoCRISCgpyZXBvX293bmVyGAUgASgJEhIKCmlzX3RyYWNrZWQYBiABKAgSEAoIaXNfbG9jYWwYByABKAgSJgoZb3J0aG9nb25hbF90cmFuc2Zvcm1fc2VlZBgIIAEoAUgAiAEBEhUKDXdvcmtzcGFjZV91cmkYCSABKAkSGwoTcGF0aF9lbmNyeXB0aW9uX2tleRgKIAEoCUIcChpfb3J0aG9nb25hbF90cmFuc2Zvcm1fc2VlZCKsAgoSUmVxdWVzdENvbnRleHRBcmdzEh0KEG5vdGVzX3Nlc3Npb25faWQYAiABKAlIAIgBARIZCgx3b3Jrc3BhY2VfaWQYAyABKAlIAYgBARImChlyZWFkX29ubHlfcGlubmVkX3RyZWVfc2hhGAQgASgJSAKIAQESKAobcmVhZF9vbmx5X3BsdWdpbl9jYWNoZV9yb290GAUgASgJSAOIAQESFwoKdXNlX2NhY2hlZBgHIAEoCEgEiAEBQhMKEV9ub3Rlc19zZXNzaW9uX2lkQg8KDV93b3Jrc3BhY2VfaWRCHAoaX3JlYWRfb25seV9waW5uZWRfdHJlZV9zaGFCHgocX3JlYWRfb25seV9wbHVnaW5fY2FjaGVfcm9vdEINCgtfdXNlX2NhY2hlZCK6AQoUUmVxdWVzdENvbnRleHRSZXN1bHQSMgoHc3VjY2VzcxgBIAEoCzIfLmFnZW50LnYxLlJlcXVlc3RDb250ZXh0U3VjY2Vzc0gAEi4KBWVycm9yGAIgASgLMh0uYWdlbnQudjEuUmVxdWVzdENvbnRleHRFcnJvckgAEjQKCHJlamVjdGVkGAMgASgLMiAuYWdlbnQudjEuUmVxdWVzdENvbnRleHRSZWplY3RlZEgAQggKBnJlc3VsdCKKAQoVUmVxdWVzdENvbnRleHRTdWNjZXNzEjEKD3JlcXVlc3RfY29udGV4dBgBIAEoCzIYLmFnZW50LnYxLlJlcXVlc3RDb250ZXh0EiMKFnNlcnZlZF9mcm9tX2Rpc2tfY2FjaGUYAiABKAhIAIgBAUIZChdfc2VydmVkX2Zyb21fZGlza19jYWNoZSIkChNSZXF1ZXN0Q29udGV4dEVycm9yEg0KBWVycm9yGAEgASgJIigKFlJlcXVlc3RDb250ZXh0UmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJIsIBCgpJbWFnZVByb3RvEgwKBGRhdGEYASABKAwSDAoEdXVpZBgCIAEoCRIMCgRwYXRoGAMgASgJEjEKCWRpbWVuc2lvbhgEIAEoCzIeLmFnZW50LnYxLkltYWdlUHJvdG9fRGltZW5zaW9uEiYKGXRhc2tfc3BlY2lmaWNfZGVzY3JpcHRpb24YBiABKAlIAIgBARIRCgltaW1lX3R5cGUYByABKAlCHAoaX3Rhc2tfc3BlY2lmaWNfZGVzY3JpcHRpb24iNQoUSW1hZ2VQcm90b19EaW1lbnNpb24SDQoFd2lkdGgYASABKAUSDgoGaGVpZ2h0GAIgASgFImgKC0dpdFJlcG9JbmZvEgwKBHBhdGgYASABKAkSDgoGc3RhdHVzGAIgASgJEhMKC2JyYW5jaF9uYW1lGAMgASgJEhcKCnJlbW90ZV91cmwYBCABKAlIAIgBAUINCgtfcmVtb3RlX3VybCKbAgoRUmVxdWVzdENvbnRleHRFbnYSEgoKb3NfdmVyc2lvbhgBIAEoCRIXCg93b3Jrc3BhY2VfcGF0aHMYAiADKAkSDQoFc2hlbGwYAyABKAkSFwoPc2FuZGJveF9lbmFibGVkGAUgASgIEhgKEHRlcm1pbmFsc19mb2xkZXIYByABKAkSIQoZYWdlbnRfc2hhcmVkX25vdGVzX2ZvbGRlchgIIAEoCRInCh9hZ2VudF9jb252ZXJzYXRpb25fbm90ZXNfZm9sZGVyGAkgASgJEhEKCXRpbWVfem9uZRgKIAEoCRIWCg5wcm9qZWN0X2ZvbGRlchgLIAEoCRIgChhhZ2VudF90cmFuc2NyaXB0c19mb2xkZXIYDCABKAkiPAoPRGVidWdNb2RlQ29uZmlnEhAKCGxvZ19wYXRoGAEgASgJEhcKD3NlcnZlcl9lbmRwb2ludBgCIAEoCSK0AQoPU2tpbGxEZXNjcmlwdG9yEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSEwoLZm9sZGVyX3BhdGgYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBIYCgtwYXJzZV9lcnJvchgFIAEoCUgAiAEBEhgKEHJlYWRtZV9maWxlX3BhdGgYBiABKAkSFAoMcGFja2FnZV90eXBlGAcgASgFQg4KDF9wYXJzZV9lcnJvciJECgxTa2lsbE9wdGlvbnMSNAoRc2tpbGxfZGVzY3JpcHRvcnMYASADKAsyGS5hZ2VudC52MS5Ta2lsbERlc2NyaXB0b3Ii9ggKDlJlcXVlc3RDb250ZXh0EiMKBXJ1bGVzGAIgAygLMhQuYWdlbnQudjEuQ3Vyc29yUnVsZRIoCgNlbnYYBCABKAsyGy5hZ2VudC52MS5SZXF1ZXN0Q29udGV4dEVudhI5Cg9yZXBvc2l0b3J5X2luZm8YBiADKAsyIC5hZ2VudC52MS5SZXBvc2l0b3J5SW5kZXhpbmdJbmZvEioKBXRvb2xzGAcgAygLMhsuYWdlbnQudjEuTWNwVG9vbERlZmluaXRpb24SJwoaY29udmVyc2F0aW9uX25vdGVzX2xpc3RpbmcYCCABKAlIAIgBARIhChRzaGFyZWRfbm90ZXNfbGlzdGluZxgJIAEoCUgBiAEBEigKCWdpdF9yZXBvcxgLIAMoCzIVLmFnZW50LnYxLkdpdFJlcG9JbmZvEjYKD3Byb2plY3RfbGF5b3V0cxgNIAMoCzIdLmFnZW50LnYxLkxzRGlyZWN0b3J5VHJlZU5vZGUSMwoQbWNwX2luc3RydWN0aW9ucxgOIAMoCzIZLmFnZW50LnYxLk1jcEluc3RydWN0aW9ucxI5ChFkZWJ1Z19tb2RlX2NvbmZpZxgPIAEoCzIZLmFnZW50LnYxLkRlYnVnTW9kZUNvbmZpZ0gCiAEBEhcKCmNsb3VkX3J1bGUYECABKAlIA4gBARIfChJ3ZWJfc2VhcmNoX2VuYWJsZWQYESABKAhIBIgBARIyCg1za2lsbF9vcHRpb25zGBIgASgLMhYuYWdlbnQudjEuU2tpbGxPcHRpb25zSAWIAQESLgohcmVwb3NpdG9yeV9pbmZvX3Nob3VsZF9xdWVyeV9wcm9kGBMgASgISAaIAQESQQoNZmlsZV9jb250ZW50cxgUIAMoCzIqLmFnZW50LnYxLlJlcXVlc3RDb250ZXh0LkZpbGVDb250ZW50c0VudHJ5EiAKE3VzZXJfaW50ZW50X3N1bW1hcnkYFSABKAlIB4gBARIyChBjdXN0b21fc3ViYWdlbnRzGBYgAygLMhguYWdlbnQudjEuQ3VzdG9tU3ViYWdlbnQSRAoXbWNwX2ZpbGVfc3lzdGVtX29wdGlvbnMYFyABKAsyHi5hZ2VudC52MS5NY3BGaWxlU3lzdGVtT3B0aW9uc0gIiAEBGjMKEUZpbGVDb250ZW50c0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCHQobX2NvbnZlcnNhdGlvbl9ub3Rlc19saXN0aW5nQhcKFV9zaGFyZWRfbm90ZXNfbGlzdGluZ0IUChJfZGVidWdfbW9kZV9jb25maWdCDQoLX2Nsb3VkX3J1bGVCFQoTX3dlYl9zZWFyY2hfZW5hYmxlZEIQCg5fc2tpbGxfb3B0aW9uc0IkCiJfcmVwb3NpdG9yeV9pbmZvX3Nob3VsZF9xdWVyeV9wcm9kQhYKFF91c2VyX2ludGVudF9zdW1tYXJ5QhoKGF9tY3BfZmlsZV9zeXN0ZW1fb3B0aW9ucyKyAgoNU2FuZGJveFBvbGljeRIMCgR0eXBlGAEgASgFEhsKDm5ldHdvcmtfYWNjZXNzGAIgASgISACIAQESIgoaYWRkaXRpb25hbF9yZWFkd3JpdGVfcGF0aHMYAyADKAkSIQoZYWRkaXRpb25hbF9yZWFkb25seV9wYXRocxgEIAMoCRIdChBkZWJ1Z19vdXRwdXRfZGlyGAUgASgJSAGIAQESHQoQYmxvY2tfZ2l0X3dyaXRlcxgGIAEoCEgCiAEBEh4KEWRpc2FibGVfdG1wX3dyaXRlGAcgASgISAOIAQFCEQoPX25ldHdvcmtfYWNjZXNzQhMKEV9kZWJ1Z19vdXRwdXRfZGlyQhMKEV9ibG9ja19naXRfd3JpdGVzQhQKEl9kaXNhYmxlX3RtcF93cml0ZSLvAQoNU2VsZWN0ZWRJbWFnZRIMCgR1dWlkGAIgASgJEgwKBHBhdGgYAyABKAkSNAoJZGltZW5zaW9uGAQgASgLMiEuYWdlbnQudjEuU2VsZWN0ZWRJbWFnZV9EaW1lbnNpb24SEQoJbWltZV90eXBlGAcgASgJEhEKB2Jsb2JfaWQYASABKAxIABIOCgRkYXRhGAggASgMSAASQwoRYmxvYl9pZF93aXRoX2RhdGEYCSABKAsyJi5hZ2VudC52MS5TZWxlY3RlZEltYWdlX0Jsb2JJZFdpdGhEYXRhSABCEQoPZGF0YV9vcl9ibG9iX2lkIj0KHFNlbGVjdGVkSW1hZ2VfQmxvYklkV2l0aERhdGESDwoHYmxvYl9pZBgBIAEoDBIMCgRkYXRhGAIgASgMIjgKF1NlbGVjdGVkSW1hZ2VfRGltZW5zaW9uEg0KBXdpZHRoGAEgASgFEg4KBmhlaWdodBgCIAEoBSJJChFFeHRyYUNvbnRleHRFbnRyeRIOCgRkYXRhGAEgASgJSAASEQoHYmxvYl9pZBgCIAEoDEgAQhEKD2RhdGFfb3JfYmxvYl9pZCJbCgxTZWxlY3RlZEZpbGUSDwoHY29udGVudBgBIAEoCRIMCgRwYXRoGAIgASgJEhoKDXJlbGF0aXZlX3BhdGgYAyABKAlIAIgBAUIQCg5fcmVsYXRpdmVfcGF0aCKEAQoVU2VsZWN0ZWRDb2RlU2VsZWN0aW9uEg8KB2NvbnRlbnQYASABKAkSDAoEcGF0aBgCIAEoCRIaCg1yZWxhdGl2ZV9wYXRoGAMgASgJSACIAQESHgoFcmFuZ2UYBCABKAsyDy5hZ2VudC52MS5SYW5nZUIQCg5fcmVsYXRpdmVfcGF0aCJdChBTZWxlY3RlZFRlcm1pbmFsEg8KB2NvbnRlbnQYASABKAkSEgoFdGl0bGUYAiABKAlIAIgBARIRCgRwYXRoGAMgASgJSAGIAQFCCAoGX3RpdGxlQgcKBV9wYXRoIoYBChlTZWxlY3RlZFRlcm1pbmFsU2VsZWN0aW9uEg8KB2NvbnRlbnQYASABKAkSEgoFdGl0bGUYAiABKAlIAIgBARIRCgRwYXRoGAMgASgJSAGIAQESHgoFcmFuZ2UYBCABKAsyDy5hZ2VudC52MS5SYW5nZUIICgZfdGl0bGVCBwoFX3BhdGgigwEKDlNlbGVjdGVkRm9sZGVyEgwKBHBhdGgYASABKAkSGgoNcmVsYXRpdmVfcGF0aBgCIAEoCUgAiAEBEjUKDmRpcmVjdG9yeV90cmVlGAMgASgLMh0uYWdlbnQudjEuTHNEaXJlY3RvcnlUcmVlTm9kZUIQCg5fcmVsYXRpdmVfcGF0aCKfAQoUU2VsZWN0ZWRFeHRlcm5hbExpbmsSCwoDdXJsGAEgASgJEgwKBHV1aWQYAiABKAkSGAoLcGRmX2NvbnRlbnQYAyABKAlIAIgBARITCgZpc19wZGYYBCABKAhIAYgBARIVCghmaWxlbmFtZRgFIAEoCUgCiAEBQg4KDF9wZGZfY29udGVudEIJCgdfaXNfcGRmQgsKCV9maWxlbmFtZSI4ChJTZWxlY3RlZEN1cnNvclJ1bGUSIgoEcnVsZRgBIAEoCzIULmFnZW50LnYxLkN1cnNvclJ1bGUiIgoPU2VsZWN0ZWRHaXREaWZmEg8KB2NvbnRlbnQYASABKAkiMgofU2VsZWN0ZWRHaXREaWZmRnJvbUJyYW5jaFRvTWFpbhIPCgdjb250ZW50GAEgASgJImkKEVNlbGVjdGVkR2l0Q29tbWl0EgsKA3NoYRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDAoEZGlmZhgEIAEoCUIOCgxfZGVzY3JpcHRpb24i3QEKE1NlbGVjdGVkUHVsbFJlcXVlc3QSDgoGbnVtYmVyGAEgASgFEgsKA3VybBgCIAEoCRISCgV0aXRsZRgDIAEoCUgAiAEBEhMKC2ZvbGRlcl9wYXRoGAQgASgJEhkKDHN1bW1hcnlfanNvbhgFIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAYgASgJSAKIAQESFAoHYmxvYl9pZBgHIAEoDEgDiAEBQggKBl90aXRsZUIPCg1fc3VtbWFyeV9qc29uQg4KDF9kZXNjcmlwdGlvbkIKCghfYmxvYl9pZCKzAQoaU2VsZWN0ZWRHaXRQUkRpZmZTZWxlY3Rpb24SDgoGcHJfdXJsGAEgASgJEhEKCWZpbGVfcGF0aBgCIAEoCRISCgpzdGFydF9saW5lGAMgASgFEhAKCGVuZF9saW5lGAQgASgFEhkKDGRpZmZfY29udGVudBgFIAEoCUgAiAEBEhQKB2Jsb2JfaWQYBiABKAxIAYgBAUIPCg1fZGlmZl9jb250ZW50QgoKCF9ibG9iX2lkIjYKFVNlbGVjdGVkQ3Vyc29yQ29tbWFuZBIMCgRuYW1lGAEgASgJEg8KB2NvbnRlbnQYAiABKAkiNQoVU2VsZWN0ZWREb2N1bWVudGF0aW9uEg4KBmRvY19pZBgBIAEoCRIMCgRuYW1lGAIgASgJIjIKEFNlbGVjdGVkUGFzdENoYXQSEAoIYWdlbnRfaWQYASABKAkSDAoEbmFtZRgCIAEoCSKrAQoJQ2FsbEZyYW1lEhoKDWZ1bmN0aW9uX25hbWUYASABKAlIAIgBARIQCgN1cmwYAiABKAlIAYgBARIYCgtsaW5lX251bWJlchgDIAEoBUgCiAEBEhoKDWNvbHVtbl9udW1iZXIYBCABKAVIA4gBAUIQCg5fZnVuY3Rpb25fbmFtZUIGCgRfdXJsQg4KDF9saW5lX251bWJlckIQCg5fY29sdW1uX251bWJlciJoCgpTdGFja1RyYWNlEigKC2NhbGxfZnJhbWVzGAEgAygLMhMuYWdlbnQudjEuQ2FsbEZyYW1lEhwKD3Jhd19zdGFja190cmFjZRgCIAEoCUgAiAEBQhIKEF9yYXdfc3RhY2tfdHJhY2Ui5AEKElNlbGVjdGVkQ29uc29sZUxvZxIPCgdtZXNzYWdlGAEgASgJEhEKCXRpbWVzdGFtcBgCIAEoARINCgVsZXZlbBgDIAEoCRITCgtjbGllbnRfbmFtZRgEIAEoCRISCgpzZXNzaW9uX2lkGAUgASgJEi4KC3N0YWNrX3RyYWNlGAYgASgLMhQuYWdlbnQudjEuU3RhY2tUcmFjZUgAiAEBEh0KEG9iamVjdF9kYXRhX2pzb24YByABKAlIAYgBAUIOCgxfc3RhY2tfdHJhY2VCEwoRX29iamVjdF9kYXRhX2pzb24iugEKEVNlbGVjdGVkVUlFbGVtZW50Eg8KB2VsZW1lbnQYASABKAkSDQoFeHBhdGgYAiABKAkSFAoMdGV4dF9jb250ZW50GAMgASgJEg0KBWV4dHJhGAQgASgJEhYKCWNvbXBvbmVudBgFIAEoCUgAiAEBEiEKFGNvbXBvbmVudF9wcm9wc19qc29uGAYgASgJSAGIAQFCDAoKX2NvbXBvbmVudEIXChVfY29tcG9uZW50X3Byb3BzX2pzb24iIAoQU2VsZWN0ZWRTdWJhZ2VudBIMCgRuYW1lGAEgASgJIoIKCg9TZWxlY3RlZENvbnRleHQSMAoPc2VsZWN0ZWRfaW1hZ2VzGAEgAygLMhcuYWdlbnQudjEuU2VsZWN0ZWRJbWFnZRI8ChJpbnZvY2F0aW9uX2NvbnRleHQYAiABKAsyGy5hZ2VudC52MS5JbnZvY2F0aW9uQ29udGV4dEgAiAEBEhUKDWV4dHJhX2NvbnRleHQYAyADKAkSOgoVZXh0cmFfY29udGV4dF9lbnRyaWVzGBAgAygLMhsuYWdlbnQudjEuRXh0cmFDb250ZXh0RW50cnkSJQoFZmlsZXMYBCADKAsyFi5hZ2VudC52MS5TZWxlY3RlZEZpbGUSOAoPY29kZV9zZWxlY3Rpb25zGAUgAygLMh8uYWdlbnQudjEuU2VsZWN0ZWRDb2RlU2VsZWN0aW9uEi0KCXRlcm1pbmFscxgGIAMoCzIaLmFnZW50LnYxLlNlbGVjdGVkVGVybWluYWwSQAoTdGVybWluYWxfc2VsZWN0aW9ucxgHIAMoCzIjLmFnZW50LnYxLlNlbGVjdGVkVGVybWluYWxTZWxlY3Rpb24SKQoHZm9sZGVycxgIIAMoCzIYLmFnZW50LnYxLlNlbGVjdGVkRm9sZGVyEjYKDmV4dGVybmFsX2xpbmtzGAkgAygLMh4uYWdlbnQudjEuU2VsZWN0ZWRFeHRlcm5hbExpbmsSMgoMY3Vyc29yX3J1bGVzGAogAygLMhwuYWdlbnQudjEuU2VsZWN0ZWRDdXJzb3JSdWxlEjAKCGdpdF9kaWZmGBIgASgLMhkuYWdlbnQudjEuU2VsZWN0ZWRHaXREaWZmSAGIAQESVAocZ2l0X2RpZmZfZnJvbV9icmFuY2hfdG9fbWFpbhgLIAEoCzIpLmFnZW50LnYxLlNlbGVjdGVkR2l0RGlmZkZyb21CcmFuY2hUb01haW5IAogBARI4Cg9jdXJzb3JfY29tbWFuZHMYDCADKAsyHy5hZ2VudC52MS5TZWxlY3RlZEN1cnNvckNvbW1hbmQSNwoOZG9jdW1lbnRhdGlvbnMYDSADKAsyHy5hZ2VudC52MS5TZWxlY3RlZERvY3VtZW50YXRpb24SMAoLdWlfZWxlbWVudHMYDiADKAsyGy5hZ2VudC52MS5TZWxlY3RlZFVJRWxlbWVudBIyCgxjb25zb2xlX2xvZ3MYDyADKAsyHC5hZ2VudC52MS5TZWxlY3RlZENvbnNvbGVMb2cSMAoLZ2l0X2NvbW1pdHMYESADKAsyGy5hZ2VudC52MS5TZWxlY3RlZEdpdENvbW1pdBIuCgpwYXN0X2NoYXRzGBMgAygLMhouYWdlbnQudjEuU2VsZWN0ZWRQYXN0Q2hhdBJEChZnaXRfcHJfZGlmZl9zZWxlY3Rpb25zGBQgAygLMiQuYWdlbnQudjEuU2VsZWN0ZWRHaXRQUkRpZmZTZWxlY3Rpb24SPQoWc2VsZWN0ZWRfcHVsbF9yZXF1ZXN0cxgVIAMoCzIdLmFnZW50LnYxLlNlbGVjdGVkUHVsbFJlcXVlc3QSNgoSc2VsZWN0ZWRfc3ViYWdlbnRzGBYgAygLMhouYWdlbnQudjEuU2VsZWN0ZWRTdWJhZ2VudEIVChNfaW52b2NhdGlvbl9jb250ZXh0QgsKCV9naXRfZGlmZkIfCh1fZ2l0X2RpZmZfZnJvbV9icmFuY2hfdG9fbWFpbiLlAQoRSW52b2NhdGlvbkNvbnRleHQSPwoMc2xhY2tfdGhyZWFkGAEgASgLMicuYWdlbnQudjEuSW52b2NhdGlvbkNvbnRleHRfU2xhY2tUaHJlYWRIABI5CglnaXRodWJfcHIYAiABKAsyJC5hZ2VudC52MS5JbnZvY2F0aW9uQ29udGV4dF9HaXRodWJQUkgAEjkKCWlkZV9zdGF0ZRgDIAEoCzIkLmFnZW50LnYxLkludm9jYXRpb25Db250ZXh0X0lkZVN0YXRlSAASEQoHYmxvYl9pZBgKIAEoDEgAQgYKBGRhdGEiuwEKHUludm9jYXRpb25Db250ZXh0X1NsYWNrVGhyZWFkEg4KBnRocmVhZBgBIAEoCRIZCgxjaGFubmVsX25hbWUYAiABKAlIAIgBARIcCg9jaGFubmVsX3B1cnBvc2UYAyABKAlIAYgBARIaCg1jaGFubmVsX3RvcGljGAQgASgJSAKIAQFCDwoNX2NoYW5uZWxfbmFtZUISChBfY2hhbm5lbF9wdXJwb3NlQhAKDl9jaGFubmVsX3RvcGljInwKGkludm9jYXRpb25Db250ZXh0X0dpdGh1YlBSEg0KBXRpdGxlGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhAKCGNvbW1lbnRzGAMgASgJEhgKC2NpX2ZhaWx1cmVzGAQgASgJSACIAQFCDgoMX2NpX2ZhaWx1cmVzIv4BChpJbnZvY2F0aW9uQ29udGV4dF9JZGVTdGF0ZRJACg12aXNpYmxlX2ZpbGVzGAEgAygLMikuYWdlbnQudjEuSW52b2NhdGlvbkNvbnRleHRfSWRlU3RhdGVfRmlsZRJIChVyZWNlbnRseV92aWV3ZWRfZmlsZXMYAiADKAsyKS5hZ2VudC52MS5JbnZvY2F0aW9uQ29udGV4dF9JZGVTdGF0ZV9GaWxlElQKFGN1cnJlbnRseV92aWV3ZWRfcHJzGAMgAygLMjYuYWdlbnQudjEuSW52b2NhdGlvbkNvbnRleHRfSWRlU3RhdGVfVmlld2VkUHVsbFJlcXVlc3QijgIKH0ludm9jYXRpb25Db250ZXh0X0lkZVN0YXRlX0ZpbGUSDAoEcGF0aBgBIAEoCRIaCg1yZWxhdGl2ZV9wYXRoGAIgASgJSACIAQESVgoPY3Vyc29yX3Bvc2l0aW9uGAMgASgLMjguYWdlbnQudjEuSW52b2NhdGlvbkNvbnRleHRfSWRlU3RhdGVfRmlsZV9DdXJzb3JQb3NpdGlvbkgBiAEBEhMKC3RvdGFsX2xpbmVzGAQgASgFEhsKDmFjdGl2ZV9jb21tYW5kGAUgASgJSAKIAQFCEAoOX3JlbGF0aXZlX3BhdGhCEgoQX2N1cnNvcl9wb3NpdGlvbkIRCg9fYWN0aXZlX2NvbW1hbmQiTAouSW52b2NhdGlvbkNvbnRleHRfSWRlU3RhdGVfRmlsZV9DdXJzb3JQb3NpdGlvbhIMCgRsaW5lGAEgASgFEgwKBHRleHQYAiABKAki6QEKLEludm9jYXRpb25Db250ZXh0X0lkZVN0YXRlX1ZpZXdlZFB1bGxSZXF1ZXN0Eg4KBm51bWJlchgBIAEoBRILCgN1cmwYAiABKAkSEgoFdGl0bGUYAyABKAlIAIgBARIYCgtmb2xkZXJfcGF0aBgEIAEoCUgBiAEBEhkKDHN1bW1hcnlfanNvbhgFIAEoCUgCiAEBEhgKC2Rlc2NyaXB0aW9uGAYgASgJSAOIAQFCCAoGX3RpdGxlQg4KDF9mb2xkZXJfcGF0aEIPCg1fc3VtbWFyeV9qc29uQg4KDF9kZXNjcmlwdGlvbiJIChZTZXR1cFZtRW52aXJvbm1lbnRBcmdzEhcKD2luc3RhbGxfY29tbWFuZBgCIAEoCRIVCg1zdGFydF9jb21tYW5kGAMgASgJIlwKGFNldHVwVm1FbnZpcm9ubWVudFJlc3VsdBI2CgdzdWNjZXNzGAEgASgLMiMuYWdlbnQudjEuU2V0dXBWbUVudmlyb25tZW50U3VjY2Vzc0gAQggKBnJlc3VsdCIbChlTZXR1cFZtRW52aXJvbm1lbnRTdWNjZXNzIoABChpTZXR1cFZtRW52aXJvbm1lbnRUb29sQ2FsbBIuCgRhcmdzGAEgASgLMiAuYWdlbnQudjEuU2V0dXBWbUVudmlyb25tZW50QXJncxIyCgZyZXN1bHQYAiABKAsyIi5hZ2VudC52MS5TZXR1cFZtRW52aXJvbm1lbnRSZXN1bHQiyQIKGVNoZWxsQ29tbWFuZFBhcnNpbmdSZXN1bHQSFgoOcGFyc2luZ19mYWlsZWQYASABKAgSUgoTZXhlY3V0YWJsZV9jb21tYW5kcxgCIAMoCzI1LmFnZW50LnYxLlNoZWxsQ29tbWFuZFBhcnNpbmdSZXN1bHRfRXhlY3V0YWJsZUNvbW1hbmQSFQoNaGFzX3JlZGlyZWN0cxgDIAEoCBIgChhoYXNfY29tbWFuZF9zdWJzdGl0dXRpb24YBCABKAgSJwoaYWxsX3JlZGlyZWN0c19hcmVfZGV2X251bGwYBSABKAhIAIgBARI/CglyZWRpcmVjdHMYBiADKAsyLC5hZ2VudC52MS5TaGVsbENvbW1hbmRQYXJzaW5nUmVzdWx0X1JlZGlyZWN0Qh0KG19hbGxfcmVkaXJlY3RzX2FyZV9kZXZfbnVsbCJNCi5TaGVsbENvbW1hbmRQYXJzaW5nUmVzdWx0X0V4ZWN1dGFibGVDb21tYW5kQXJnEgwKBHR5cGUYASABKAkSDQoFdmFsdWUYAiABKAkilgEKK1NoZWxsQ29tbWFuZFBhcnNpbmdSZXN1bHRfRXhlY3V0YWJsZUNvbW1hbmQSDAoEbmFtZRgBIAEoCRJGCgRhcmdzGAIgAygLMjguYWdlbnQudjEuU2hlbGxDb21tYW5kUGFyc2luZ1Jlc3VsdF9FeGVjdXRhYmxlQ29tbWFuZEFyZxIRCglmdWxsX3RleHQYAyABKAki+gcKCVNoZWxsQXJncxIPCgdjb21tYW5kGAEgASgJEhkKEXdvcmtpbmdfZGlyZWN0b3J5GAIgASgJEg8KB3RpbWVvdXQYAyABKAUSFAoMdG9vbF9jYWxsX2lkGAQgASgJEhcKD3NpbXBsZV9jb21tYW5kcxgFIAMoCRIaChJoYXNfaW5wdXRfcmVkaXJlY3QYBiABKAgSGwoTaGFzX291dHB1dF9yZWRpcmVjdBgHIAEoCBI7Cg5wYXJzaW5nX3Jlc3VsdBgIIAEoCzIjLmFnZW50LnYxLlNoZWxsQ29tbWFuZFBhcnNpbmdSZXN1bHQSPgoYcmVxdWVzdGVkX3NhbmRib3hfcG9saWN5GAkgASgLMhcuYWdlbnQudjEuU2FuZGJveFBvbGljeUgAiAEBEigKG2ZpbGVfb3V0cHV0X3RocmVzaG9sZF9ieXRlcxgKIAEoBEgBiAEBEhUKDWlzX2JhY2tncm91bmQYCyABKAgSFQoNc2tpcF9hcHByb3ZhbBgMIAEoCBIYChB0aW1lb3V0X2JlaGF2aW9yGA0gASgFEhkKDGhhcmRfdGltZW91dBgOIAEoBUgCiAEBEhgKC2Rlc2NyaXB0aW9uGA8gASgJSAOIAQESQQoRY2xhc3NpZmllcl9yZXN1bHQYECABKAsyIS5hZ2VudC52MS5Db21tYW5kQ2xhc3NpZmllclJlc3VsdEgEiAEBEhMKC2Nsb3NlX3N0ZGluGBEgASgIEkkKE291dHB1dF9ub3RpZmljYXRpb24YEiABKAsyJy5hZ2VudC52MS5TaGVsbE91dHB1dE5vdGlmaWNhdGlvbkNvbmZpZ0gFiAEBEj0KE3NtYXJ0X21vZGVfYXBwcm92YWwYEyABKAsyGy5hZ2VudC52MS5TbWFydE1vZGVBcHByb3ZhbEgGiAEBEk4KGWhvb2tfYXBwcm92YWxfcmVxdWlyZW1lbnQYFCABKAsyJi5hZ2VudC52MS5TaGVsbEhvb2tBcHByb3ZhbFJlcXVpcmVtZW50SAeIAQESHAoPY29udmVyc2F0aW9uX2lkGBUgASgJSAiIAQFCGwoZX3JlcXVlc3RlZF9zYW5kYm94X3BvbGljeUIeChxfZmlsZV9vdXRwdXRfdGhyZXNob2xkX2J5dGVzQg8KDV9oYXJkX3RpbWVvdXRCDgoMX2Rlc2NyaXB0aW9uQhQKEl9jbGFzc2lmaWVyX3Jlc3VsdEIWChRfb3V0cHV0X25vdGlmaWNhdGlvbkIWChRfc21hcnRfbW9kZV9hcHByb3ZhbEIcChpfaG9va19hcHByb3ZhbF9yZXF1aXJlbWVudEISChBfY29udmVyc2F0aW9uX2lkIvoDCgtTaGVsbFJlc3VsdBI0Cg5zYW5kYm94X3BvbGljeRhlIAEoCzIXLmFnZW50LnYxLlNhbmRib3hQb2xpY3lIAYgBARIaCg1pc19iYWNrZ3JvdW5kGGYgASgISAKIAQESHQoQdGVybWluYWxzX2ZvbGRlchhnIAEoCUgDiAEBEhAKA3BpZBhoIAEoDUgEiAEBEikKB3N1Y2Nlc3MYASABKAsyFi5hZ2VudC52MS5TaGVsbFN1Y2Nlc3NIABIpCgdmYWlsdXJlGAIgASgLMhYuYWdlbnQudjEuU2hlbGxGYWlsdXJlSAASKQoHdGltZW91dBgDIAEoCzIWLmFnZW50LnYxLlNoZWxsVGltZW91dEgAEisKCHJlamVjdGVkGAQgASgLMhcuYWdlbnQudjEuU2hlbGxSZWplY3RlZEgAEjAKC3NwYXduX2Vycm9yGAUgASgLMhkuYWdlbnQudjEuU2hlbGxTcGF3bkVycm9ySAASPAoRcGVybWlzc2lvbl9kZW5pZWQYByABKAsyHy5hZ2VudC52MS5TaGVsbFBlcm1pc3Npb25EZW5pZWRIAEIICgZyZXN1bHRCEQoPX3NhbmRib3hfcG9saWN5QhAKDl9pc19iYWNrZ3JvdW5kQhMKEV90ZXJtaW5hbHNfZm9sZGVyQgYKBF9waWQiIQoRU2hlbGxTdHJlYW1TdGRvdXQSDAoEZGF0YRgBIAEoCSIhChFTaGVsbFN0cmVhbVN0ZGVychIMCgRkYXRhGAEgASgJIvcBCg9TaGVsbFN0cmVhbUV4aXQSDAoEY29kZRgBIAEoDRILCgNjd2QYAiABKAkSNgoPb3V0cHV0X2xvY2F0aW9uGAMgASgLMhguYWdlbnQudjEuT3V0cHV0TG9jYXRpb25IAIgBARIPCgdhYm9ydGVkGAQgASgIEhkKDGFib3J0X3JlYXNvbhgFIAEoBUgBiAEBEiQKF2xvY2FsX2V4ZWN1dGlvbl90aW1lX21zGAYgASgFSAKIAQFCEgoQX291dHB1dF9sb2NhdGlvbkIPCg1fYWJvcnRfcmVhc29uQhoKGF9sb2NhbF9leGVjdXRpb25fdGltZV9tcyJbChBTaGVsbFN0cmVhbVN0YXJ0EjQKDnNhbmRib3hfcG9saWN5GAEgASgLMhcuYWdlbnQudjEuU2FuZGJveFBvbGljeUgAiAEBQhEKD19zYW5kYm94X3BvbGljeSLaAQoXU2hlbGxTdHJlYW1CYWNrZ3JvdW5kZWQSEAoIc2hlbGxfaWQYASABKA0SDwoHY29tbWFuZBgCIAEoCRIZChF3b3JraW5nX2RpcmVjdG9yeRgDIAEoCRIQCgNwaWQYBCABKA1IAIgBARIXCgptc190b193YWl0GAUgASgFSAGIAQESNAoGcmVhc29uGAYgASgOMh8uYWdlbnQudjEuU2hlbGxCYWNrZ3JvdW5kUmVhc29uSAKIAQFCBgoEX3BpZEINCgtfbXNfdG9fd2FpdEIJCgdfcmVhc29uIqwDCgtTaGVsbFN0cmVhbRItCgZzdGRvdXQYASABKAsyGy5hZ2VudC52MS5TaGVsbFN0cmVhbVN0ZG91dEgAEi0KBnN0ZGVychgCIAEoCzIbLmFnZW50LnYxLlNoZWxsU3RyZWFtU3RkZXJySAASKQoEZXhpdBgDIAEoCzIZLmFnZW50LnYxLlNoZWxsU3RyZWFtRXhpdEgAEisKBXN0YXJ0GAQgASgLMhouYWdlbnQudjEuU2hlbGxTdHJlYW1TdGFydEgAEisKCHJlamVjdGVkGAUgASgLMhcuYWdlbnQudjEuU2hlbGxSZWplY3RlZEgAEjwKEXBlcm1pc3Npb25fZGVuaWVkGAYgASgLMh8uYWdlbnQudjEuU2hlbGxQZXJtaXNzaW9uRGVuaWVkSAASOQoMYmFja2dyb3VuZGVkGAcgASgLMiEuYWdlbnQudjEuU2hlbGxTdHJlYW1CYWNrZ3JvdW5kZWRIABI4Cgxob29rX2NvbnRleHQYCCABKAsyIC5hZ2VudC52MS5TaGVsbFN0cmVhbUhvb2tDb250ZXh0SABCBwoFZXZlbnQiSwoOT3V0cHV0TG9jYXRpb24SEQoJZmlsZV9wYXRoGAEgASgJEhIKCnNpemVfYnl0ZXMYAiABKAMSEgoKbGluZV9jb3VudBgDIAEoAyKYBQoMU2hlbGxTdWNjZXNzEg8KB2NvbW1hbmQYASABKAkSGQoRd29ya2luZ19kaXJlY3RvcnkYAiABKAkSEQoJZXhpdF9jb2RlGAMgASgFEg4KBnNpZ25hbBgEIAEoCRIOCgZzdGRvdXQYBSABKAkSDgoGc3RkZXJyGAYgASgJEhYKDmV4ZWN1dGlvbl90aW1lGAcgASgFEjYKD291dHB1dF9sb2NhdGlvbhgIIAEoCzIYLmFnZW50LnYxLk91dHB1dExvY2F0aW9uSACIAQESFQoIc2hlbGxfaWQYCSABKA1IAYgBARIfChJpbnRlcmxlYXZlZF9vdXRwdXQYCiABKAlIAogBARIQCgNwaWQYCyABKA1IA4gBARIXCgptc190b193YWl0GAwgASgFSASIAQESJAoXbG9jYWxfZXhlY3V0aW9uX3RpbWVfbXMYDSABKAVIBYgBARI/ChFiYWNrZ3JvdW5kX3JlYXNvbhgOIAEoDjIfLmFnZW50LnYxLlNoZWxsQmFja2dyb3VuZFJlYXNvbkgGiAEBEhgKC291dHB1dF9oZWFkGA8gASgJSAeIAQESGAoLb3V0cHV0X3RhaWwYECABKAlICIgBARIZCgxlbGlkZWRfY2hhcnMYESABKA1ICYgBAUISChBfb3V0cHV0X2xvY2F0aW9uQgsKCV9zaGVsbF9pZEIVChNfaW50ZXJsZWF2ZWRfb3V0cHV0QgYKBF9waWRCDQoLX21zX3RvX3dhaXRCGgoYX2xvY2FsX2V4ZWN1dGlvbl90aW1lX21zQhQKEl9iYWNrZ3JvdW5kX3JlYXNvbkIOCgxfb3V0cHV0X2hlYWRCDgoMX291dHB1dF90YWlsQg8KDV9lbGlkZWRfY2hhcnMimAQKDFNoZWxsRmFpbHVyZRIPCgdjb21tYW5kGAEgASgJEhkKEXdvcmtpbmdfZGlyZWN0b3J5GAIgASgJEhEKCWV4aXRfY29kZRgDIAEoBRIOCgZzaWduYWwYBCABKAkSDgoGc3Rkb3V0GAUgASgJEg4KBnN0ZGVychgGIAEoCRIWCg5leGVjdXRpb25fdGltZRgHIAEoBRI2Cg9vdXRwdXRfbG9jYXRpb24YCCABKAsyGC5hZ2VudC52MS5PdXRwdXRMb2NhdGlvbkgAiAEBEh8KEmludGVybGVhdmVkX291dHB1dBgJIAEoCUgBiAEBEhkKDGFib3J0X3JlYXNvbhgKIAEoBUgCiAEBEg8KB2Fib3J0ZWQYCyABKAgSJAoXbG9jYWxfZXhlY3V0aW9uX3RpbWVfbXMYDCABKAVIA4gBARIYCgtvdXRwdXRfaGVhZBgNIAEoCUgEiAEBEhgKC291dHB1dF90YWlsGA4gASgJSAWIAQESGQoMZWxpZGVkX2NoYXJzGA8gASgNSAaIAQFCEgoQX291dHB1dF9sb2NhdGlvbkIVChNfaW50ZXJsZWF2ZWRfb3V0cHV0Qg8KDV9hYm9ydF9yZWFzb25CGgoYX2xvY2FsX2V4ZWN1dGlvbl90aW1lX21zQg4KDF9vdXRwdXRfaGVhZEIOCgxfb3V0cHV0X3RhaWxCDwoNX2VsaWRlZF9jaGFycyJOCgxTaGVsbFRpbWVvdXQSDwoHY29tbWFuZBgBIAEoCRIZChF3b3JraW5nX2RpcmVjdG9yeRgCIAEoCRISCgp0aW1lb3V0X21zGAMgASgFImAKDVNoZWxsUmVqZWN0ZWQSDwoHY29tbWFuZBgBIAEoCRIZChF3b3JraW5nX2RpcmVjdG9yeRgCIAEoCRIOCgZyZWFzb24YAyABKAkSEwoLaXNfcmVhZG9ubHkYBCABKAgiZwoVU2hlbGxQZXJtaXNzaW9uRGVuaWVkEg8KB2NvbW1hbmQYASABKAkSGQoRd29ya2luZ19kaXJlY3RvcnkYAiABKAkSDQoFZXJyb3IYAyABKAkSEwoLaXNfcmVhZG9ubHkYBCABKAgiTAoPU2hlbGxTcGF3bkVycm9yEg8KB2NvbW1hbmQYASABKAkSGQoRd29ya2luZ19kaXJlY3RvcnkYAiABKAkSDQoFZXJyb3IYAyABKAkiQAoSU2hlbGxQYXJ0aWFsUmVzdWx0EhQKDHN0ZG91dF9kZWx0YRgBIAEoCRIUCgxzdGRlcnJfZGVsdGEYAiABKAkiWQoNU2hlbGxUb29sQ2FsbBIhCgRhcmdzGAEgASgLMhMuYWdlbnQudjEuU2hlbGxBcmdzEiUKBnJlc3VsdBgCIAEoCzIVLmFnZW50LnYxLlNoZWxsUmVzdWx0IisKGFNoZWxsVG9vbENhbGxTdGRvdXREZWx0YRIPCgdjb250ZW50GAEgASgJIisKGFNoZWxsVG9vbENhbGxTdGRlcnJEZWx0YRIPCgdjb250ZW50GAEgASgJIokBChJTaGVsbFRvb2xDYWxsRGVsdGESNAoGc3Rkb3V0GAEgASgLMiIuYWdlbnQudjEuU2hlbGxUb29sQ2FsbFN0ZG91dERlbHRhSAASNAoGc3RkZXJyGAIgASgLMiIuYWdlbnQudjEuU2hlbGxUb29sQ2FsbFN0ZGVyckRlbHRhSABCBwoFZGVsdGEi7QEKDFN1YmFnZW50VHlwZRI4Cgt1bnNwZWNpZmllZBgBIAEoCzIhLmFnZW50LnYxLlN1YmFnZW50VHlwZVVuc3BlY2lmaWVkSAASOQoMY29tcHV0ZXJfdXNlGAIgASgLMiEuYWdlbnQudjEuU3ViYWdlbnRUeXBlQ29tcHV0ZXJVc2VIABIuCgZjdXN0b20YAyABKAsyHC5hZ2VudC52MS5TdWJhZ2VudFR5cGVDdXN0b21IABIwCgdleHBsb3JlGAQgASgLMh0uYWdlbnQudjEuU3ViYWdlbnRUeXBlRXhwbG9yZUgAQgYKBHR5cGUiGQoXU3ViYWdlbnRUeXBlVW5zcGVjaWZpZWQiGQoXU3ViYWdlbnRUeXBlQ29tcHV0ZXJVc2UiFQoTU3ViYWdlbnRUeXBlRXhwbG9yZSIiChJTdWJhZ2VudFR5cGVDdXN0b20SDAoEbmFtZRgBIAEoCSKNAQoOQ3VzdG9tU3ViYWdlbnQSEQoJZnVsbF9wYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDQoFdG9vbHMYBCADKAkSDQoFbW9kZWwYBSABKAkSDgoGcHJvbXB0GAYgASgJEhcKD3Blcm1pc3Npb25fbW9kZRgHIAEoBSJoCg5Td2l0Y2hNb2RlQXJncxIWCg50YXJnZXRfbW9kZV9pZBgBIAEoCRIYCgtleHBsYW5hdGlvbhgCIAEoCUgAiAEBEhQKDHRvb2xfY2FsbF9pZBgDIAEoCUIOCgxfZXhwbGFuYXRpb24iqgEKEFN3aXRjaE1vZGVSZXN1bHQSLgoHc3VjY2VzcxgBIAEoCzIbLmFnZW50LnYxLlN3aXRjaE1vZGVTdWNjZXNzSAASKgoFZXJyb3IYAiABKAsyGS5hZ2VudC52MS5Td2l0Y2hNb2RlRXJyb3JIABIwCghyZWplY3RlZBgDIAEoCzIcLmFnZW50LnYxLlN3aXRjaE1vZGVSZWplY3RlZEgAQggKBnJlc3VsdCI9ChFTd2l0Y2hNb2RlU3VjY2VzcxIUCgxmcm9tX21vZGVfaWQYASABKAkSEgoKdG9fbW9kZV9pZBgCIAEoCSIgCg9Td2l0Y2hNb2RlRXJyb3ISDQoFZXJyb3IYASABKAkiJAoSU3dpdGNoTW9kZVJlamVjdGVkEg4KBnJlYXNvbhgBIAEoCSJoChJTd2l0Y2hNb2RlVG9vbENhbGwSJgoEYXJncxgBIAEoCzIYLmFnZW50LnYxLlN3aXRjaE1vZGVBcmdzEioKBnJlc3VsdBgCIAEoCzIaLmFnZW50LnYxLlN3aXRjaE1vZGVSZXN1bHQiQAoWU3dpdGNoTW9kZVJlcXVlc3RRdWVyeRImCgRhcmdzGAEgASgLMhguYWdlbnQudjEuU3dpdGNoTW9kZUFyZ3MiqQEKGVN3aXRjaE1vZGVSZXF1ZXN0UmVzcG9uc2USQAoIYXBwcm92ZWQYASABKAsyLC5hZ2VudC52MS5Td2l0Y2hNb2RlUmVxdWVzdFJlc3BvbnNlX0FwcHJvdmVkSAASQAoIcmVqZWN0ZWQYAiABKAsyLC5hZ2VudC52MS5Td2l0Y2hNb2RlUmVxdWVzdFJlc3BvbnNlX1JlamVjdGVkSABCCAoGcmVzdWx0IiQKIlN3aXRjaE1vZGVSZXF1ZXN0UmVzcG9uc2VfQXBwcm92ZWQiNAoiU3dpdGNoTW9kZVJlcXVlc3RSZXNwb25zZV9SZWplY3RlZBIOCgZyZWFzb24YASABKAkidQoIVG9kb0l0ZW0SCgoCaWQYASABKAkSDwoHY29udGVudBgCIAEoCRIOCgZzdGF0dXMYAyABKAUSEgoKY3JlYXRlZF9hdBgEIAEoAxISCgp1cGRhdGVkX2F0GAUgASgDEhQKDGRlcGVuZGVuY2llcxgGIAMoCSJrChNVcGRhdGVUb2Rvc1Rvb2xDYWxsEicKBGFyZ3MYASABKAsyGS5hZ2VudC52MS5VcGRhdGVUb2Rvc0FyZ3MSKwoGcmVzdWx0GAIgASgLMhsuYWdlbnQudjEuVXBkYXRlVG9kb3NSZXN1bHQiQwoPVXBkYXRlVG9kb3NBcmdzEiEKBXRvZG9zGAEgAygLMhIuYWdlbnQudjEuVG9kb0l0ZW0SDQoFbWVyZ2UYAiABKAgiewoRVXBkYXRlVG9kb3NSZXN1bHQSLwoHc3VjY2VzcxgBIAEoCzIcLmFnZW50LnYxLlVwZGF0ZVRvZG9zU3VjY2Vzc0gAEisKBWVycm9yGAIgASgLMhouYWdlbnQudjEuVXBkYXRlVG9kb3NFcnJvckgAQggKBnJlc3VsdCJfChJVcGRhdGVUb2Rvc1N1Y2Nlc3MSIQoFdG9kb3MYASADKAsyEi5hZ2VudC52MS5Ub2RvSXRlbRITCgt0b3RhbF9jb3VudBgCIAEoBRIRCgl3YXNfbWVyZ2UYAyABKAgiIQoQVXBkYXRlVG9kb3NFcnJvchINCgVlcnJvchgBIAEoCSJlChFSZWFkVG9kb3NUb29sQ2FsbBIlCgRhcmdzGAEgASgLMhcuYWdlbnQudjEuUmVhZFRvZG9zQXJncxIpCgZyZXN1bHQYAiABKAsyGS5hZ2VudC52MS5SZWFkVG9kb3NSZXN1bHQiOQoNUmVhZFRvZG9zQXJncxIVCg1zdGF0dXNfZmlsdGVyGAEgAygFEhEKCWlkX2ZpbHRlchgCIAMoCSJ1Cg9SZWFkVG9kb3NSZXN1bHQSLQoHc3VjY2VzcxgBIAEoCzIaLmFnZW50LnYxLlJlYWRUb2Rvc1N1Y2Nlc3NIABIpCgVlcnJvchgCIAEoCzIYLmFnZW50LnYxLlJlYWRUb2Rvc0Vycm9ySABCCAoGcmVzdWx0IkoKEFJlYWRUb2Rvc1N1Y2Nlc3MSIQoFdG9kb3MYASADKAsyEi5hZ2VudC52MS5Ub2RvSXRlbRITCgt0b3RhbF9jb3VudBgCIAEoBSIfCg5SZWFkVG9kb3NFcnJvchINCgVlcnJvchgBIAEoCSJLCgVSYW5nZRIhCgVzdGFydBgBIAEoCzISLmFnZW50LnYxLlBvc2l0aW9uEh8KA2VuZBgCIAEoCzISLmFnZW50LnYxLlBvc2l0aW9uIigKCFBvc2l0aW9uEgwKBGxpbmUYASABKA0SDgoGY29sdW1uGAIgASgNIhgKBUVycm9yEg8KB21lc3NhZ2UYASABKAkiOgoNV2ViU2VhcmNoQXJncxITCgtzZWFyY2hfdGVybRgBIAEoCRIUCgx0b29sX2NhbGxfaWQYAiABKAkipgEKD1dlYlNlYXJjaFJlc3VsdBItCgdzdWNjZXNzGAEgASgLMhouYWdlbnQudjEuV2ViU2VhcmNoU3VjY2Vzc0gAEikKBWVycm9yGAIgASgLMhguYWdlbnQudjEuV2ViU2VhcmNoRXJyb3JIABIvCghyZWplY3RlZBgDIAEoCzIbLmFnZW50LnYxLldlYlNlYXJjaFJlamVjdGVkSABCCAoGcmVzdWx0IkQKEFdlYlNlYXJjaFN1Y2Nlc3MSMAoKcmVmZXJlbmNlcxgBIAMoCzIcLmFnZW50LnYxLldlYlNlYXJjaFJlZmVyZW5jZSIfCg5XZWJTZWFyY2hFcnJvchINCgVlcnJvchgBIAEoCSIjChFXZWJTZWFyY2hSZWplY3RlZBIOCgZyZWFzb24YASABKAkiPwoSV2ViU2VhcmNoUmVmZXJlbmNlEg0KBXRpdGxlGAEgASgJEgsKA3VybBgCIAEoCRINCgVjaHVuaxgDIAEoCSJlChFXZWJTZWFyY2hUb29sQ2FsbBIlCgRhcmdzGAEgASgLMhcuYWdlbnQudjEuV2ViU2VhcmNoQXJncxIpCgZyZXN1bHQYAiABKAsyGS5hZ2VudC52MS5XZWJTZWFyY2hSZXN1bHQiPgoVV2ViU2VhcmNoUmVxdWVzdFF1ZXJ5EiUKBGFyZ3MYASABKAsyFy5hZ2VudC52MS5XZWJTZWFyY2hBcmdzIqYBChhXZWJTZWFyY2hSZXF1ZXN0UmVzcG9uc2USPwoIYXBwcm92ZWQYASABKAsyKy5hZ2VudC52MS5XZWJTZWFyY2hSZXF1ZXN0UmVzcG9uc2VfQXBwcm92ZWRIABI/CghyZWplY3RlZBgCIAEoCzIrLmFnZW50LnYxLldlYlNlYXJjaFJlcXVlc3RSZXNwb25zZV9SZWplY3RlZEgAQggKBnJlc3VsdCIjCiFXZWJTZWFyY2hSZXF1ZXN0UmVzcG9uc2VfQXBwcm92ZWQiMwohV2ViU2VhcmNoUmVxdWVzdFJlc3BvbnNlX1JlamVjdGVkEg4KBnJlYXNvbhgBIAEoCSKtAQoJV3JpdGVBcmdzEgwKBHBhdGgYASABKAkSEQoJZmlsZV90ZXh0GAIgASgJEhQKDHRvb2xfY2FsbF9pZBgDIAEoCRInCh9yZXR1cm5fZmlsZV9jb250ZW50X2FmdGVyX3dyaXRlGAQgASgIEhIKCmZpbGVfYnl0ZXMYBSABKAwSGgoNZW5jb2RpbmdfaGludBgGIAEoCUgAiAEBQhAKDl9lbmNvZGluZ19oaW50IoACCgtXcml0ZVJlc3VsdBIpCgdzdWNjZXNzGAEgASgLMhYuYWdlbnQudjEuV3JpdGVTdWNjZXNzSAASPAoRcGVybWlzc2lvbl9kZW5pZWQYAyABKAsyHy5hZ2VudC52MS5Xcml0ZVBlcm1pc3Npb25EZW5pZWRIABIqCghub19zcGFjZRgEIAEoCzIWLmFnZW50LnYxLldyaXRlTm9TcGFjZUgAEiUKBWVycm9yGAUgASgLMhQuYWdlbnQudjEuV3JpdGVFcnJvckgAEisKCHJlamVjdGVkGAYgASgLMhcuYWdlbnQudjEuV3JpdGVSZWplY3RlZEgAQggKBnJlc3VsdCKKAQoMV3JpdGVTdWNjZXNzEgwKBHBhdGgYASABKAkSFQoNbGluZXNfY3JlYXRlZBgCIAEoBRIRCglmaWxlX3NpemUYAyABKAUSJQoYZmlsZV9jb250ZW50X2FmdGVyX3dyaXRlGAQgASgJSACIAQFCGwoZX2ZpbGVfY29udGVudF9hZnRlcl93cml0ZSJvChVXcml0ZVBlcm1pc3Npb25EZW5pZWQSDAoEcGF0aBgBIAEoCRIRCglkaXJlY3RvcnkYAiABKAkSEQoJb3BlcmF0aW9uGAMgASgJEg0KBWVycm9yGAQgASgJEhMKC2lzX3JlYWRvbmx5GAUgASgIIhwKDFdyaXRlTm9TcGFjZRIMCgRwYXRoGAEgASgJIikKCldyaXRlRXJyb3ISDAoEcGF0aBgBIAEoCRINCgVlcnJvchgCIAEoCSItCg1Xcml0ZVJlamVjdGVkEgwKBHBhdGgYASABKAkSDgoGcmVhc29uGAIgASgJIoMBChdCb290c3RyYXBTdGF0c2lnUmVxdWVzdBIeChFpZ25vcmVfZGV2X3N0YXR1cxgBIAEoCEgAiAEBEh0KEG9wZXJhdGluZ19zeXN0ZW0YAiABKAVIAYgBAUIUChJfaWdub3JlX2Rldl9zdGF0dXNCEwoRX29wZXJhdGluZ19zeXN0ZW0iDgoMUGluZ1Jlc3BvbnNlIrcBCgtFeGVjUmVxdWVzdBIPCgdjb21tYW5kGAEgASgJEhAKA2N3ZBgCIAEoCUgAiAEBEgwKBGFyZ3MYAyADKAkSOwoLZW52aXJvbm1lbnQYBCADKAsyJi5hZ2VudC52MS5FeGVjUmVxdWVzdC5FbnZpcm9ubWVudEVudHJ5GjIKEEVudmlyb25tZW50RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIGCgRfY3dkIqABCgxFeGVjUmVzcG9uc2USLQoMc3Rkb3V0X2V2ZW50GAEgASgLMhUuYWdlbnQudjEuU3Rkb3V0RXZlbnRIABItCgxzdGRlcnJfZXZlbnQYAiABKAsyFS5hZ2VudC52MS5TdGRlcnJFdmVudEgAEikKCmV4aXRfZXZlbnQYAyABKAsyEy5hZ2VudC52MS5FeGl0RXZlbnRIAEIHCgVldmVudCIbCgtTdGRvdXRFdmVudBIMCgRkYXRhGAEgASgJIhsKC1N0ZGVyckV2ZW50EgwKBGRhdGEYASABKAkiHgoJRXhpdEV2ZW50EhEKCWV4aXRfY29kZRgBIAEoBSIjChNSZWFkVGV4dEZpbGVSZXF1ZXN0EgwKBHBhdGgYASABKAkiJwoUUmVhZFRleHRGaWxlUmVzcG9uc2USDwoHY29udGVudBgBIAEoCSI1ChRXcml0ZVRleHRGaWxlUmVxdWVzdBIMCgRwYXRoGAEgASgJEg8KB2NvbnRlbnQYAiABKAkiFwoVV3JpdGVUZXh0RmlsZVJlc3BvbnNlIiUKFVJlYWRCaW5hcnlGaWxlUmVxdWVzdBIMCgRwYXRoGAEgASgJIikKFlJlYWRCaW5hcnlGaWxlUmVzcG9uc2USDwoHY29udGVudBgBIAEoDCI3ChZXcml0ZUJpbmFyeUZpbGVSZXF1ZXN0EgwKBHBhdGgYASABKAkSDwoHY29udGVudBgCIAEoDCIZChdXcml0ZUJpbmFyeUZpbGVSZXNwb25zZSJFCh5HZXRXb3Jrc3BhY2VDaGFuZ2VzSGFzaFJlcXVlc3QSEQoJcm9vdF9wYXRoGAEgASgJEhAKCGJhc2VfcmVmGAIgASgJIi8KH0dldFdvcmtzcGFjZUNoYW5nZXNIYXNoUmVzcG9uc2USDAoEaGFzaBgBIAEoCSJQCh9SZWZyZXNoR2l0aHViQWNjZXNzVG9rZW5SZXF1ZXN0EhsKE2dpdGh1Yl9hY2Nlc3NfdG9rZW4YASABKAkSEAoIaG9zdG5hbWUYAiABKAkiIgogUmVmcmVzaEdpdGh1YkFjY2Vzc1Rva2VuUmVzcG9uc2UiVwodV2FybVJlbW90ZUFjY2Vzc1NlcnZlclJlcXVlc3QSDgoGY29tbWl0GAEgASgJEgwKBHBvcnQYAiABKAUSGAoQY29ubmVjdGlvbl90b2tlbhgDIAEoCSIgCh5XYXJtUmVtb3RlQWNjZXNzU2VydmVyUmVzcG9uc2UiFgoUTGlzdEFydGlmYWN0c1JlcXVlc3QiigIKFkFydGlmYWN0VXBsb2FkTWV0YWRhdGESFQoNYWJzb2x1dGVfcGF0aBgBIAEoCRISCgpzaXplX2J5dGVzGAIgASgEEhoKEnVwZGF0ZWRfYXRfdW5peF9tcxgDIAEoAxIOCgZzdGF0dXMYBCABKAUSFgoOYnl0ZXNfdXBsb2FkZWQYBSABKAQSEgoKbGFzdF9lcnJvchgGIAEoCRIXCg91cGxvYWRfYXR0ZW1wdHMYByABKA0SHwoXbGFzdF9zdGFydGVkX2F0X3VuaXhfbXMYCCABKAMSIAoYbGFzdF9maW5pc2hlZF9hdF91bml4X21zGAkgASgDEhEKCXVwbG9hZF9pZBgKIAEoCSJMChVMaXN0QXJ0aWZhY3RzUmVzcG9uc2USMwoJYXJ0aWZhY3RzGAEgAygLMiAuYWdlbnQudjEuQXJ0aWZhY3RVcGxvYWRNZXRhZGF0YSJOChZVcGxvYWRBcnRpZmFjdHNSZXF1ZXN0EjQKB3VwbG9hZHMYASADKAsyIy5hZ2VudC52MS5BcnRpZmFjdFVwbG9hZEluc3RydWN0aW9uItcCChlBcnRpZmFjdFVwbG9hZEluc3RydWN0aW9uEhUKDWFic29sdXRlX3BhdGgYASABKAkSEgoKdXBsb2FkX3VybBgCIAEoCRIOCgZtZXRob2QYAyABKAkSQQoHaGVhZGVycxgEIAMoCzIwLmFnZW50LnYxLkFydGlmYWN0VXBsb2FkSW5zdHJ1Y3Rpb24uSGVhZGVyc0VudHJ5EhkKDGNvbnRlbnRfdHlwZRgFIAEoCUgAiAEBEh0KEHNsYWNrX3VwbG9hZF91cmwYBiABKAlIAYgBARIaCg1zbGFja19maWxlX2lkGAcgASgJSAKIAQEaLgoMSGVhZGVyc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDwoNX2NvbnRlbnRfdHlwZUITChFfc2xhY2tfdXBsb2FkX3VybEIQCg5fc2xhY2tfZmlsZV9pZCKEAQocQXJ0aWZhY3RVcGxvYWREaXNwYXRjaFJlc3VsdBIVCg1hYnNvbHV0ZV9wYXRoGAEgASgJEg4KBnN0YXR1cxgCIAEoBRIPCgdtZXNzYWdlGAMgASgJEhoKDXNsYWNrX2ZpbGVfaWQYBCABKAlIAIgBAUIQCg5fc2xhY2tfZmlsZV9pZCJSChdVcGxvYWRBcnRpZmFjdHNSZXNwb25zZRI3CgdyZXN1bHRzGAEgAygLMiYuYWdlbnQudjEuQXJ0aWZhY3RVcGxvYWREaXNwYXRjaFJlc3VsdCIcChpHZXRNY3BSZWZyZXNoVG9rZW5zUmVxdWVzdCKlAQobR2V0TWNwUmVmcmVzaFRva2Vuc1Jlc3BvbnNlElAKDnJlZnJlc2hfdG9rZW5zGAEgAygLMjguYWdlbnQudjEuR2V0TWNwUmVmcmVzaFRva2Vuc1Jlc3BvbnNlLlJlZnJlc2hUb2tlbnNFbnRyeRo0ChJSZWZyZXNoVG9rZW5zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKjAQohVXBkYXRlRW52aXJvbm1lbnRWYXJpYWJsZXNSZXF1ZXN0EkEKA2VudhgBIAMoCzI0LmFnZW50LnYxLlVwZGF0ZUVudmlyb25tZW50VmFyaWFibGVzUmVxdWVzdC5FbnZFbnRyeRIPCgdyZXBsYWNlGAIgASgIGioKCEVudkVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiRgoiVXBkYXRlRW52aXJvbm1lbnRWYXJpYWJsZXNSZXNwb25zZRIPCgdhcHBsaWVkGAEgASgNEg8KB3JlbW92ZWQYAiABKA0igwEKEk1jcE9BdXRoU3RvcmVkRGF0YRIVCg1yZWZyZXNoX3Rva2VuGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCRIaCg1jbGllbnRfc2VjcmV0GAMgASgJSACIAQESFQoNcmVkaXJlY3RfdXJpcxgEIAMoCUIQCg5fY2xpZW50X3NlY3JldCJOCgVGcmFtZRIKCgJpZBgBIAEoCRIOCgZtZXRob2QYAiABKAkSDAoEZGF0YRgDIAEoDBIMCgRraW5kGAQgASgFEg0KBWVycm9yGAUgASgJIgcKBUVtcHR5IiMKDUJpZGlSZXF1ZXN0SWQSEgoKcmVxdWVzdF9pZBgBIAEoCSKBAgoMUGlUcnVuY2F0aW9uEhEKCXRydW5jYXRlZBgBIAEoCBIUCgx0cnVuY2F0ZWRfYnkYAiABKAkSEwoLdG90YWxfbGluZXMYAyABKA0SFAoMb3V0cHV0X2xpbmVzGAQgASgNEhQKDG91dHB1dF9ieXRlcxgFIAEoDRIWCgltYXhfbGluZXMYBiABKA1IAIgBARIWCgltYXhfYnl0ZXMYByABKA1IAYgBARIgChhmaXJzdF9saW5lX2V4Y2VlZHNfbGltaXQYCCABKAgSGQoRbGFzdF9saW5lX3BhcnRpYWwYCSABKAhCDAoKX21heF9saW5lc0IMCgpfbWF4X2J5dGVzIjcKEVBpRWRpdFJlcGxhY2VtZW50EhAKCG9sZF90ZXh0GAEgASgJEhAKCG5ld190ZXh0GAIgASgJIlwKDlBpUmVhZEV4ZWNBcmdzEgwKBHBhdGgYASABKAkSEwoGb2Zmc2V0GAIgASgFSACIAQESEgoFbGltaXQYAyABKAVIAYgBAUIJCgdfb2Zmc2V0QggKBl9saW1pdCJjChFQaVJlYWRFeGVjU3VjY2VzcxIOCgZvdXRwdXQYASABKAkSLwoKdHJ1bmNhdGlvbhgCIAEoCzIWLmFnZW50LnYxLlBpVHJ1bmNhdGlvbkgAiAEBQg0KC190cnVuY2F0aW9uIiAKD1BpUmVhZEV4ZWNFcnJvchINCgVlcnJvchgBIAEoCSJ4ChBQaVJlYWRFeGVjUmVzdWx0Ei4KB3N1Y2Nlc3MYASABKAsyGy5hZ2VudC52MS5QaVJlYWRFeGVjU3VjY2Vzc0gAEioKBWVycm9yGAIgASgLMhkuYWdlbnQudjEuUGlSZWFkRXhlY0Vycm9ySABCCAoGcmVzdWx0IkMKDlBpQmFzaEV4ZWNBcmdzEg8KB2NvbW1hbmQYASABKAkSFAoHdGltZW91dBgCIAEoAUgAiAEBQgoKCF90aW1lb3V0IpcBChFQaUJhc2hFeGVjU3VjY2VzcxIOCgZvdXRwdXQYASABKAkSLwoKdHJ1bmNhdGlvbhgCIAEoCzIWLmFnZW50LnYxLlBpVHJ1bmNhdGlvbkgAiAEBEh0KEGZ1bGxfb3V0cHV0X3BhdGgYAyABKAlIAYgBAUINCgtfdHJ1bmNhdGlvbkITChFfZnVsbF9vdXRwdXRfcGF0aCKUAQoPUGlCYXNoRXhlY0Vycm9yEg0KBWVycm9yGAEgASgJEi8KCnRydW5jYXRpb24YAiABKAsyFi5hZ2VudC52MS5QaVRydW5jYXRpb25IAIgBARIdChBmdWxsX291dHB1dF9wYXRoGAMgASgJSAGIAQFCDQoLX3RydW5jYXRpb25CEwoRX2Z1bGxfb3V0cHV0X3BhdGgieAoQUGlCYXNoRXhlY1Jlc3VsdBIuCgdzdWNjZXNzGAEgASgLMhsuYWdlbnQudjEuUGlCYXNoRXhlY1N1Y2Nlc3NIABIqCgVlcnJvchgCIAEoCzIZLmFnZW50LnYxLlBpQmFzaEV4ZWNFcnJvckgAQggKBnJlc3VsdCJKCg5QaUVkaXRFeGVjQXJncxIMCgRwYXRoGAEgASgJEioKBWVkaXRzGAIgAygLMhsuYWdlbnQudjEuUGlFZGl0UmVwbGFjZW1lbnQieAoRUGlFZGl0RXhlY1N1Y2Nlc3MSDgoGb3V0cHV0GAEgASgJEgwKBGRpZmYYAiABKAkSDQoFcGF0Y2gYAyABKAkSHwoSZmlyc3RfY2hhbmdlZF9saW5lGAQgASgNSACIAQFCFQoTX2ZpcnN0X2NoYW5nZWRfbGluZSIgCg9QaUVkaXRFeGVjRXJyb3ISDQoFZXJyb3IYASABKAkiJAoSUGlFZGl0RXhlY1JlamVjdGVkEg4KBnJlYXNvbhgBIAEoCSKqAQoQUGlFZGl0RXhlY1Jlc3VsdBIuCgdzdWNjZXNzGAEgASgLMhsuYWdlbnQudjEuUGlFZGl0RXhlY1N1Y2Nlc3NIABIqCgVlcnJvchgCIAEoCzIZLmFnZW50LnYxLlBpRWRpdEV4ZWNFcnJvckgAEjAKCHJlamVjdGVkGAMgASgLMhwuYWdlbnQudjEuUGlFZGl0RXhlY1JlamVjdGVkSABCCAoGcmVzdWx0IjAKD1BpV3JpdGVFeGVjQXJncxIMCgRwYXRoGAEgASgJEg8KB2NvbnRlbnQYAiABKAkiJAoSUGlXcml0ZUV4ZWNTdWNjZXNzEg4KBm91dHB1dBgBIAEoCSIhChBQaVdyaXRlRXhlY0Vycm9yEg0KBWVycm9yGAEgASgJIiUKE1BpV3JpdGVFeGVjUmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJIq4BChFQaVdyaXRlRXhlY1Jlc3VsdBIvCgdzdWNjZXNzGAEgASgLMhwuYWdlbnQudjEuUGlXcml0ZUV4ZWNTdWNjZXNzSAASKwoFZXJyb3IYAiABKAsyGi5hZ2VudC52MS5QaVdyaXRlRXhlY0Vycm9ySAASMQoIcmVqZWN0ZWQYAyABKAsyHS5hZ2VudC52MS5QaVdyaXRlRXhlY1JlamVjdGVkSABCCAoGcmVzdWx0IuUBCg5QaUdyZXBFeGVjQXJncxIPCgdwYXR0ZXJuGAEgASgJEhEKBHBhdGgYAiABKAlIAIgBARIRCgRnbG9iGAMgASgJSAGIAQESGAoLaWdub3JlX2Nhc2UYBCABKAhIAogBARIUCgdsaXRlcmFsGAUgASgISAOIAQESFAoHY29udGV4dBgGIAEoBUgEiAEBEhIKBWxpbWl0GAcgASgFSAWIAQFCBwoFX3BhdGhCBwoFX2dsb2JCDgoMX2lnbm9yZV9jYXNlQgoKCF9saXRlcmFsQgoKCF9jb250ZXh0QggKBl9saW1pdCK2AQoRUGlHcmVwRXhlY1N1Y2Nlc3MSDgoGb3V0cHV0GAEgASgJEi8KCnRydW5jYXRpb24YAiABKAsyFi5hZ2VudC52MS5QaVRydW5jYXRpb25IAIgBARIgChNtYXRjaF9saW1pdF9yZWFjaGVkGAMgASgNSAGIAQESFwoPbGluZXNfdHJ1bmNhdGVkGAQgASgIQg0KC190cnVuY2F0aW9uQhYKFF9tYXRjaF9saW1pdF9yZWFjaGVkIiAKD1BpR3JlcEV4ZWNFcnJvchINCgVlcnJvchgBIAEoCSJ4ChBQaUdyZXBFeGVjUmVzdWx0Ei4KB3N1Y2Nlc3MYASABKAsyGy5hZ2VudC52MS5QaUdyZXBFeGVjU3VjY2Vzc0gAEioKBWVycm9yGAIgASgLMhkuYWdlbnQudjEuUGlHcmVwRXhlY0Vycm9ySABCCAoGcmVzdWx0IlsKDlBpRmluZEV4ZWNBcmdzEg8KB3BhdHRlcm4YASABKAkSEQoEcGF0aBgCIAEoCUgAiAEBEhIKBWxpbWl0GAMgASgFSAGIAQFCBwoFX3BhdGhCCAoGX2xpbWl0Ip8BChFQaUZpbmRFeGVjU3VjY2VzcxIOCgZvdXRwdXQYASABKAkSLwoKdHJ1bmNhdGlvbhgCIAEoCzIWLmFnZW50LnYxLlBpVHJ1bmNhdGlvbkgAiAEBEiEKFHJlc3VsdF9saW1pdF9yZWFjaGVkGAMgASgNSAGIAQFCDQoLX3RydW5jYXRpb25CFwoVX3Jlc3VsdF9saW1pdF9yZWFjaGVkIiAKD1BpRmluZEV4ZWNFcnJvchINCgVlcnJvchgBIAEoCSJ4ChBQaUZpbmRFeGVjUmVzdWx0Ei4KB3N1Y2Nlc3MYASABKAsyGy5hZ2VudC52MS5QaUZpbmRFeGVjU3VjY2Vzc0gAEioKBWVycm9yGAIgASgLMhkuYWdlbnQudjEuUGlGaW5kRXhlY0Vycm9ySABCCAoGcmVzdWx0IkgKDFBpTHNFeGVjQXJncxIRCgRwYXRoGAEgASgJSACIAQESEgoFbGltaXQYAiABKAVIAYgBAUIHCgVfcGF0aEIICgZfbGltaXQimwEKD1BpTHNFeGVjU3VjY2VzcxIOCgZvdXRwdXQYASABKAkSLwoKdHJ1bmNhdGlvbhgCIAEoCzIWLmFnZW50LnYxLlBpVHJ1bmNhdGlvbkgAiAEBEiAKE2VudHJ5X2xpbWl0X3JlYWNoZWQYAyABKA1IAYgBAUINCgtfdHJ1bmNhdGlvbkIWChRfZW50cnlfbGltaXRfcmVhY2hlZCIeCg1QaUxzRXhlY0Vycm9yEg0KBWVycm9yGAEgASgJInIKDlBpTHNFeGVjUmVzdWx0EiwKB3N1Y2Nlc3MYASABKAsyGS5hZ2VudC52MS5QaUxzRXhlY1N1Y2Nlc3NIABIoCgVlcnJvchgCIAEoCzIXLmFnZW50LnYxLlBpTHNFeGVjRXJyb3JIAEIICgZyZXN1bHQiPAoRTWNwU2VydmVyTm90Rm91bmQSDAoEbmFtZRgBIAEoCRIZChFhdmFpbGFibGVfc2VydmVycxgCIAMoCSINCgtNY3BBcHByb3ZlZCJBChBNY3BTdGF0ZUV4ZWNBcmdzEhoKEnNlcnZlcl9pZGVudGlmaWVycxgBIAMoCRIRCglraWNrX29ubHkYAiABKAgihwIKDk1jcFN0YXRlU2VydmVyEhMKC3NlcnZlcl9uYW1lGAEgASgJEhkKEXNlcnZlcl9pZGVudGlmaWVyGAIgASgJEhMKBnBsdWdpbhgDIAEoCUgAiAEBEhgKC21hcmtldHBsYWNlGAQgASgJSAGIAQESKgoFdG9vbHMYBSADKAsyGy5hZ2VudC52MS5NY3BUb29sRGVmaW5pdGlvbhIvCgxpbnN0cnVjdGlvbnMYBiADKAsyGS5hZ2VudC52MS5NY3BJbnN0cnVjdGlvbnMSEwoGc3RhdHVzGAcgASgJSAKIAQFCCQoHX3BsdWdpbkIOCgxfbWFya2V0cGxhY2VCCQoHX3N0YXR1cyI8Cg9NY3BTdGF0ZVN1Y2Nlc3MSKQoHc2VydmVycxgBIAMoCzIYLmFnZW50LnYxLk1jcFN0YXRlU2VydmVyIh4KDU1jcFN0YXRlRXJyb3ISDQoFZXJyb3IYASABKAkiIgoQTWNwU3RhdGVSZWplY3RlZBIOCgZyZWFzb24YASABKAkipgEKEk1jcFN0YXRlRXhlY1Jlc3VsdBIsCgdzdWNjZXNzGAEgASgLMhkuYWdlbnQudjEuTWNwU3RhdGVTdWNjZXNzSAASKAoFZXJyb3IYAiABKAsyFy5hZ2VudC52MS5NY3BTdGF0ZUVycm9ySAASLgoIcmVqZWN0ZWQYAyABKAsyGi5hZ2VudC52MS5NY3BTdGF0ZVJlamVjdGVkSABCCAoGcmVzdWx0Iq0BCilDb21tYW5kQ2xhc3NpZmllclJlc3VsdF9DbGFzc2lmaWVkQ29tbWFuZBIMCgRuYW1lGAEgASgJEhEKCWFyZ3VtZW50cxgCIAMoCRImChlzdWdnZXN0ZWRfYWxsb3dsaXN0X2VudHJ5GAMgASgJSACIAQESGQoRc3ViY29tbWFuZF90b2tlbnMYBCADKAlCHAoaX3N1Z2dlc3RlZF9hbGxvd2xpc3RfZW50cnki1wEKF0NvbW1hbmRDbGFzc2lmaWVyUmVzdWx0EkUKCGNvbW1hbmRzGAEgAygLMjMuYWdlbnQudjEuQ29tbWFuZENsYXNzaWZpZXJSZXN1bHRfQ2xhc3NpZmllZENvbW1hbmQSVgoWc3VnZ2VzdGVkX3NhbmRib3hfbW9kZRgCIAEoDjI2LmFnZW50LnYxLkNvbW1hbmRDbGFzc2lmaWVyUmVzdWx0X1N1Z2dlc3RlZFNhbmRib3hNb2RlEh0KFWNsYXNzaWZpY2F0aW9uX2ZhaWxlZBgDIAEoCCKTAQoiU2hlbGxDb21tYW5kUGFyc2luZ1Jlc3VsdF9SZWRpcmVjdBIQCghvcGVyYXRvchgBIAEoCRIXCg9kZXN0aW5hdGlvbl9mZHMYAiADKA0SGAoQdGFyZ2V0X25vZGVfdHlwZRgDIAEoCRIYCgt0YXJnZXRfdGV4dBgEIAEoCUgAiAEBQg4KDF90YXJnZXRfdGV4dCKKAgoaU2hlbGxBbGxvd2xpc3RQcmVjaGVja0FyZ3MSDwoHY29tbWFuZBgBIAEoCRIZChF3b3JraW5nX2RpcmVjdG9yeRgCIAEoCRI7Cg5wYXJzaW5nX3Jlc3VsdBgDIAEoCzIjLmFnZW50LnYxLlNoZWxsQ29tbWFuZFBhcnNpbmdSZXN1bHQSQQoRY2xhc3NpZmllcl9yZXN1bHQYBCABKAsyIS5hZ2VudC52MS5Db21tYW5kQ2xhc3NpZmllclJlc3VsdEgAiAEBEhkKDHRvb2xfY2FsbF9pZBgFIAEoCUgBiAEBQhQKEl9jbGFzc2lmaWVyX3Jlc3VsdEIPCg1fdG9vbF9jYWxsX2lkIjMKHFNoZWxsQWxsb3dsaXN0UHJlY2hlY2tSZXN1bHQSEwoLYWxsb3dsaXN0ZWQYASABKAgidgoYTWNwQWxsb3dsaXN0UHJlY2hlY2tBcmdzEhsKE3Byb3ZpZGVyX2lkZW50aWZpZXIYASABKAkSEQoJdG9vbF9uYW1lGAIgASgJEhkKDHRvb2xfY2FsbF9pZBgDIAEoCUgAiAEBQg8KDV90b29sX2NhbGxfaWQiMQoaTWNwQWxsb3dsaXN0UHJlY2hlY2tSZXN1bHQSEwoLYWxsb3dsaXN0ZWQYASABKAgiWAodV2ViRmV0Y2hBbGxvd2xpc3RQcmVjaGVja0FyZ3MSCwoDdXJsGAEgASgJEhkKDHRvb2xfY2FsbF9pZBgCIAEoCUgAiAEBQg8KDV90b29sX2NhbGxfaWQiNgofV2ViRmV0Y2hBbGxvd2xpc3RQcmVjaGVja1Jlc3VsdBITCgthbGxvd2xpc3RlZBgBIAEoCCI3ChFTbWFydE1vZGVBcHByb3ZhbBISCgpyZXF1ZXN0X2lkGAEgASgJEg4KBnJlYXNvbhgCIAEoCSKcAQodU2hlbGxPdXRwdXROb3RpZmljYXRpb25Db25maWcSDwoHcGF0dGVybhgBIAEoCRIOCgZyZWFzb24YAiABKAkSFQoIZGVib3VuY2UYAyABKAFIAIgBARIfChJub3RpZmljYXRpb25fbGltaXQYBCABKAVIAYgBAUILCglfZGVib3VuY2VCFQoTX25vdGlmaWNhdGlvbl9saW1pdCJ5ChxTaGVsbEhvb2tBcHByb3ZhbFJlcXVpcmVtZW50EjkKBGtpbmQYASABKA4yKy5hZ2VudC52MS5TaGVsbEhvb2tBcHByb3ZhbFJlcXVpcmVtZW50X0tpbmQSEwoGcmVhc29uGAIgASgJSACIAQFCCQoHX3JlYXNvbiIwChhGb3JjZUJhY2tncm91bmRTaGVsbEFyZ3MSFAoMdG9vbF9jYWxsX2lkGAEgASgJIpUBChpGb3JjZUJhY2tncm91bmRTaGVsbFJlc3VsdBI0CgZzdGF0dXMYASABKA4yJC5hZ2VudC52MS5Gb3JjZUJhY2tncm91bmRTaGVsbFN0YXR1cxIwCgxzaGVsbF9yZXN1bHQYAiABKAsyFS5hZ2VudC52MS5TaGVsbFJlc3VsdEgAiAEBQg8KDV9zaGVsbF9yZXN1bHQiQQoVSG9va0FkZGl0aW9uYWxDb250ZXh0EhcKD2hvb2tfZXZlbnRfbmFtZRgBIAEoCRIPCgdjb250ZW50GAIgASgJIlsKFlNoZWxsU3RyZWFtSG9va0NvbnRleHQSQQoYaG9va19hZGRpdGlvbmFsX2NvbnRleHRzGAEgAygLMh8uYWdlbnQudjEuSG9va0FkZGl0aW9uYWxDb250ZXh0IksKDFN1YmFnZW50QXJncxIUCgx0b29sX2NhbGxfaWQYASABKAkSFQoNc3ViYWdlbnRfdHlwZRgCIAEoCRIOCgZwcm9tcHQYBCABKAki2wEKD1N1YmFnZW50U3VjY2VzcxIQCghhZ2VudF9pZBgBIAEoCRIaCg1maW5hbF9tZXNzYWdlGAIgASgJSACIAQESFwoPdG9vbF9jYWxsX2NvdW50GAMgASgFEj0KEWJhY2tncm91bmRfcmVhc29uGAQgASgOMiIuYWdlbnQudjEuU3ViYWdlbnRCYWNrZ3JvdW5kUmVhc29uEhwKD3RyYW5zY3JpcHRfcGF0aBgFIAEoCUgBiAEBQhAKDl9maW5hbF9tZXNzYWdlQhIKEF90cmFuc2NyaXB0X3BhdGgiQgoNU3ViYWdlbnRFcnJvchIVCghhZ2VudF9pZBgBIAEoCUgAiAEBEg0KBWVycm9yGAIgASgJQgsKCV9hZ2VudF9pZCJyCg5TdWJhZ2VudFJlc3VsdBIsCgdzdWNjZXNzGAEgASgLMhkuYWdlbnQudjEuU3ViYWdlbnRTdWNjZXNzSAASKAoFZXJyb3IYAiABKAsyFy5hZ2VudC52MS5TdWJhZ2VudEVycm9ySABCCAoGcmVzdWx0IjkKEVN1YmFnZW50QXdhaXRBcmdzEhAKCGFnZW50X2lkGAEgASgJEhIKCnRpbWVvdXRfbXMYAiABKA0iogEKFVN1YmFnZW50QXdhaXRDb21wbGV0ZRIQCghhZ2VudF9pZBgBIAEoCRIcCg90cmFuc2NyaXB0X3BhdGgYAiABKAlIAIgBARIXCg90b29sX2NhbGxfY291bnQYAyABKAUSGgoNZmluYWxfbWVzc2FnZRgEIAEoCUgBiAEBQhIKEF90cmFuc2NyaXB0X3BhdGhCEAoOX2ZpbmFsX21lc3NhZ2UiXwoZU3ViYWdlbnRBd2FpdFN0aWxsUnVubmluZxIQCghhZ2VudF9pZBgBIAEoCRIcCg90cmFuc2NyaXB0X3BhdGgYAiABKAlIAIgBAUISChBfdHJhbnNjcmlwdF9wYXRoIikKFVN1YmFnZW50QXdhaXROb3RGb3VuZBIQCghhZ2VudF9pZBgBIAEoCSJHChJTdWJhZ2VudEF3YWl0RXJyb3ISFQoIYWdlbnRfaWQYASABKAlIAIgBARINCgVlcnJvchgCIAEoCUILCglfYWdlbnRfaWQi9wEKE1N1YmFnZW50QXdhaXRSZXN1bHQSMwoIY29tcGxldGUYASABKAsyHy5hZ2VudC52MS5TdWJhZ2VudEF3YWl0Q29tcGxldGVIABI8Cg1zdGlsbF9ydW5uaW5nGAIgASgLMiMuYWdlbnQudjEuU3ViYWdlbnRBd2FpdFN0aWxsUnVubmluZ0gAEjQKCW5vdF9mb3VuZBgDIAEoCzIfLmFnZW50LnYxLlN1YmFnZW50QXdhaXROb3RGb3VuZEgAEi0KBWVycm9yGAQgASgLMhwuYWdlbnQudjEuU3ViYWdlbnRBd2FpdEVycm9ySABCCAoGcmVzdWx0IjMKG0ZvcmNlQmFja2dyb3VuZFN1YmFnZW50QXJncxIUCgx0b29sX2NhbGxfaWQYASABKAkiWAodRm9yY2VCYWNrZ3JvdW5kU3ViYWdlbnRSZXN1bHQSNwoGc3RhdHVzGAEgASgOMicuYWdlbnQudjEuRm9yY2VCYWNrZ3JvdW5kU3ViYWdlbnRTdGF0dXMiGAoWUHJlQ29tcGFjdFJlcXVlc3RRdWVyeSIbChlTdWJhZ2VudFN0YXJ0UmVxdWVzdFF1ZXJ5IhoKGFN1YmFnZW50U3RvcFJlcXVlc3RRdWVyeSIYChZQcmVUb29sVXNlUmVxdWVzdFF1ZXJ5IhkKF1Bvc3RUb29sVXNlUmVxdWVzdFF1ZXJ5IiAKHlBvc3RUb29sVXNlRmFpbHVyZVJlcXVlc3RRdWVyeSIgCh5CZWZvcmVTdWJtaXRQcm9tcHRSZXF1ZXN0UXVlcnkiIAoeQWZ0ZXJBZ2VudFJlc3BvbnNlUmVxdWVzdFF1ZXJ5Ih8KHUFmdGVyQWdlbnRUaG91Z2h0UmVxdWVzdFF1ZXJ5IhIKEFN0b3BSZXF1ZXN0UXVlcnkiRwoZUHJlQ29tcGFjdFJlcXVlc3RSZXNwb25zZRIZCgx1c2VyX21lc3NhZ2UYASABKAlIAIgBAUIPCg1fdXNlcl9tZXNzYWdlIqoBChxTdWJhZ2VudFN0YXJ0UmVxdWVzdFJlc3BvbnNlEhcKCnBlcm1pc3Npb24YASABKAlIAIgBARIZCgx1c2VyX21lc3NhZ2UYAiABKAlIAYgBARIfChJhZGRpdGlvbmFsX2NvbnRleHQYAyABKAlIAogBAUINCgtfcGVybWlzc2lvbkIPCg1fdXNlcl9tZXNzYWdlQhUKE19hZGRpdGlvbmFsX2NvbnRleHQiiQEKG1N1YmFnZW50U3RvcFJlcXVlc3RSZXNwb25zZRIdChBmb2xsb3d1cF9tZXNzYWdlGAEgASgJSACIAQESHwoSYWRkaXRpb25hbF9jb250ZXh0GAIgASgJSAGIAQFCEwoRX2ZvbGxvd3VwX21lc3NhZ2VCFQoTX2FkZGl0aW9uYWxfY29udGV4dCKDAgoZUHJlVG9vbFVzZVJlcXVlc3RSZXNwb25zZRIXCgpwZXJtaXNzaW9uGAEgASgJSACIAQESGQoMdXNlcl9tZXNzYWdlGAIgASgJSAGIAQESGgoNYWdlbnRfbWVzc2FnZRgDIAEoCUgCiAEBEhoKDXVwZGF0ZWRfaW5wdXQYBCABKAlIA4gBARIfChJhZGRpdGlvbmFsX2NvbnRleHQYBSABKAlIBIgBAUINCgtfcGVybWlzc2lvbkIPCg1fdXNlcl9tZXNzYWdlQhAKDl9hZ2VudF9tZXNzYWdlQhAKDl91cGRhdGVkX2lucHV0QhUKE19hZGRpdGlvbmFsX2NvbnRleHQiVAoaUG9zdFRvb2xVc2VSZXF1ZXN0UmVzcG9uc2USHwoSYWRkaXRpb25hbF9jb250ZXh0GAEgASgJSACIAQFCFQoTX2FkZGl0aW9uYWxfY29udGV4dCJbCiFQb3N0VG9vbFVzZUZhaWx1cmVSZXF1ZXN0UmVzcG9uc2USHwoSYWRkaXRpb25hbF9jb250ZXh0GAEgASgJSACIAQFCFQoTX2FkZGl0aW9uYWxfY29udGV4dCKrAQohQmVmb3JlU3VibWl0UHJvbXB0UmVxdWVzdFJlc3BvbnNlEhUKCGNvbnRpbnVlGAEgASgISACIAQESGQoMdXNlcl9tZXNzYWdlGAIgASgJSAGIAQESHwoSYWRkaXRpb25hbF9jb250ZXh0GAMgASgJSAKIAQFCCwoJX2NvbnRpbnVlQg8KDV91c2VyX21lc3NhZ2VCFQoTX2FkZGl0aW9uYWxfY29udGV4dCIjCiFBZnRlckFnZW50UmVzcG9uc2VSZXF1ZXN0UmVzcG9uc2UiIgogQWZ0ZXJBZ2VudFRob3VnaHRSZXF1ZXN0UmVzcG9uc2UiSQoTU3RvcFJlcXVlc3RSZXNwb25zZRIdChBmb2xsb3d1cF9tZXNzYWdlGAEgASgJSACIAQFCEwoRX2ZvbGxvd3VwX21lc3NhZ2UinQUKEkV4ZWN1dGVIb29rUmVxdWVzdBI3CgtwcmVfY29tcGFjdBgBIAEoCzIgLmFnZW50LnYxLlByZUNvbXBhY3RSZXF1ZXN0UXVlcnlIABI9Cg5zdWJhZ2VudF9zdGFydBgCIAEoCzIjLmFnZW50LnYxLlN1YmFnZW50U3RhcnRSZXF1ZXN0UXVlcnlIABI7Cg1zdWJhZ2VudF9zdG9wGAMgASgLMiIuYWdlbnQudjEuU3ViYWdlbnRTdG9wUmVxdWVzdFF1ZXJ5SAASOAoMcHJlX3Rvb2xfdXNlGAQgASgLMiAuYWdlbnQudjEuUHJlVG9vbFVzZVJlcXVlc3RRdWVyeUgAEjoKDXBvc3RfdG9vbF91c2UYBSABKAsyIS5hZ2VudC52MS5Qb3N0VG9vbFVzZVJlcXVlc3RRdWVyeUgAEkkKFXBvc3RfdG9vbF91c2VfZmFpbHVyZRgGIAEoCzIoLmFnZW50LnYxLlBvc3RUb29sVXNlRmFpbHVyZVJlcXVlc3RRdWVyeUgAEkgKFGJlZm9yZV9zdWJtaXRfcHJvbXB0GAcgASgLMiguYWdlbnQudjEuQmVmb3JlU3VibWl0UHJvbXB0UmVxdWVzdFF1ZXJ5SAASSAoUYWZ0ZXJfYWdlbnRfcmVzcG9uc2UYCCABKAsyKC5hZ2VudC52MS5BZnRlckFnZW50UmVzcG9uc2VSZXF1ZXN0UXVlcnlIABJGChNhZnRlcl9hZ2VudF90aG91Z2h0GAkgASgLMicuYWdlbnQudjEuQWZ0ZXJBZ2VudFRob3VnaHRSZXF1ZXN0UXVlcnlIABIqCgRzdG9wGAsgASgLMhouYWdlbnQudjEuU3RvcFJlcXVlc3RRdWVyeUgAQgkKB3JlcXVlc3QivQUKE0V4ZWN1dGVIb29rUmVzcG9uc2USOgoLcHJlX2NvbXBhY3QYASABKAsyIy5hZ2VudC52MS5QcmVDb21wYWN0UmVxdWVzdFJlc3BvbnNlSAASQAoOc3ViYWdlbnRfc3RhcnQYAiABKAsyJi5hZ2VudC52MS5TdWJhZ2VudFN0YXJ0UmVxdWVzdFJlc3BvbnNlSAASPgoNc3ViYWdlbnRfc3RvcBgDIAEoCzIlLmFnZW50LnYxLlN1YmFnZW50U3RvcFJlcXVlc3RSZXNwb25zZUgAEjsKDHByZV90b29sX3VzZRgEIAEoCzIjLmFnZW50LnYxLlByZVRvb2xVc2VSZXF1ZXN0UmVzcG9uc2VIABI9Cg1wb3N0X3Rvb2xfdXNlGAUgASgLMiQuYWdlbnQudjEuUG9zdFRvb2xVc2VSZXF1ZXN0UmVzcG9uc2VIABJMChVwb3N0X3Rvb2xfdXNlX2ZhaWx1cmUYBiABKAsyKy5hZ2VudC52MS5Qb3N0VG9vbFVzZUZhaWx1cmVSZXF1ZXN0UmVzcG9uc2VIABJLChRiZWZvcmVfc3VibWl0X3Byb21wdBgHIAEoCzIrLmFnZW50LnYxLkJlZm9yZVN1Ym1pdFByb21wdFJlcXVlc3RSZXNwb25zZUgAEksKFGFmdGVyX2FnZW50X3Jlc3BvbnNlGAggASgLMisuYWdlbnQudjEuQWZ0ZXJBZ2VudFJlc3BvbnNlUmVxdWVzdFJlc3BvbnNlSAASSQoTYWZ0ZXJfYWdlbnRfdGhvdWdodBgJIAEoCzIqLmFnZW50LnYxLkFmdGVyQWdlbnRUaG91Z2h0UmVxdWVzdFJlc3BvbnNlSAASLQoEc3RvcBgLIAEoCzIdLmFnZW50LnYxLlN0b3BSZXF1ZXN0UmVzcG9uc2VIAEIKCghyZXNwb25zZSJACg9FeGVjdXRlSG9va0FyZ3MSLQoHcmVxdWVzdBgBIAEoCzIcLmFnZW50LnYxLkV4ZWN1dGVIb29rUmVxdWVzdCJEChFFeGVjdXRlSG9va1Jlc3VsdBIvCghyZXNwb25zZRgBIAEoCzIdLmFnZW50LnYxLkV4ZWN1dGVIb29rUmVzcG9uc2UiJQoTU21hcnRNb2RlUmlza1RhcmdldBIOCgZhY3Rpb24YASABKAkiRwomU21hcnRNb2RlQ2xhc3NpZmllckNvbnZlcnNhdGlvbk1lc3NhZ2USDAoEcm9sZRgBIAEoCRIPCgdjb250ZW50GAIgASgJIu4BChdTbWFydE1vZGVDbGFzc2lmaWVyQXJncxIUCgx0b29sX2NhbGxfaWQYASABKAkSIwoWcGFyZW50X2NvbnZlcnNhdGlvbl9pZBgCIAEoCUgAiAEBEi0KBnRhcmdldBgDIAEoCzIdLmFnZW50LnYxLlNtYXJ0TW9kZVJpc2tUYXJnZXQSTgoUY29udmVyc2F0aW9uX2NvbnRleHQYBCADKAsyMC5hZ2VudC52MS5TbWFydE1vZGVDbGFzc2lmaWVyQ29udmVyc2F0aW9uTWVzc2FnZUIZChdfcGFyZW50X2NvbnZlcnNhdGlvbl9pZCKBAQoaU21hcnRNb2RlQ2xhc3NpZmllclN1Y2Nlc3MSNwoIZGVjaXNpb24YASABKA4yJS5hZ2VudC52MS5TbWFydE1vZGVDbGFzc2lmaWVyRGVjaXNpb24SGQoMYmxvY2tfcmVhc29uGAIgASgJSACIAQFCDwoNX2Jsb2NrX3JlYXNvbiIpChhTbWFydE1vZGVDbGFzc2lmaWVyRXJyb3ISDQoFZXJyb3IYASABKAkikwEKGVNtYXJ0TW9kZUNsYXNzaWZpZXJSZXN1bHQSNwoHc3VjY2VzcxgBIAEoCzIkLmFnZW50LnYxLlNtYXJ0TW9kZUNsYXNzaWZpZXJTdWNjZXNzSAASMwoFZXJyb3IYAiABKAsyIi5hZ2VudC52MS5TbWFydE1vZGVDbGFzc2lmaWVyRXJyb3JIAEIICgZyZXN1bHQiOwoVQ2FudmFzRGlhZ25vc3RpY3NBcmdzEgwKBHBhdGgYASABKAkSFAoMdG9vbF9jYWxsX2lkGAIgASgJIlMKGENhbnZhc0RpYWdub3N0aWNzU3VjY2VzcxIMCgRwYXRoGAEgASgJEikKC2RpYWdub3N0aWNzGAIgAygLMhQuYWdlbnQudjEuRGlhZ25vc3RpYyI1ChZDYW52YXNEaWFnbm9zdGljc0Vycm9yEgwKBHBhdGgYASABKAkSDQoFZXJyb3IYAiABKAkijQEKF0NhbnZhc0RpYWdub3N0aWNzUmVzdWx0EjUKB3N1Y2Nlc3MYASABKAsyIi5hZ2VudC52MS5DYW52YXNEaWFnbm9zdGljc1N1Y2Nlc3NIABIxCgVlcnJvchgCIAEoCzIgLmFnZW50LnYxLkNhbnZhc0RpYWdub3N0aWNzRXJyb3JIAEIICgZyZXN1bHQirAEKFUNvbnZlcnNhdGlvblNlYXJjaEhpdBIXCg9jb252ZXJzYXRpb25faWQYASABKAkSDQoFdGl0bGUYAiABKAkSMgoGc291cmNlGAMgASgOMiIuYWdlbnQudjEuQ29udmVyc2F0aW9uU2VhcmNoU291cmNlEhUKDXVwZGF0ZWRfYXRfbXMYBCABKAMSFAoHc25pcHBldBgFIAEoCUgAiAEBQgoKCF9zbmlwcGV0IoIBChlDb252ZXJzYXRpb25TZWFyY2hTdWNjZXNzEi0KBGhpdHMYASADKAsyHy5hZ2VudC52MS5Db252ZXJzYXRpb25TZWFyY2hIaXQSEQoJdHJ1bmNhdGVkGAIgASgIEg8KB3BhcnRpYWwYAyABKAgSEgoKcmVidWlsZGluZxgEIAEoCCIoChdDb252ZXJzYXRpb25TZWFyY2hFcnJvchINCgVlcnJvchgBIAEoCSJbChZDb252ZXJzYXRpb25TZWFyY2hBcmdzEg0KBXF1ZXJ5GAEgASgJEhQKDHRvb2xfY2FsbF9pZBgCIAEoCRISCgVsaW1pdBgDIAEoBUgAiAEBQggKBl9saW1pdCKQAQoYQ29udmVyc2F0aW9uU2VhcmNoUmVzdWx0EjYKB3N1Y2Nlc3MYASABKAsyIy5hZ2VudC52MS5Db252ZXJzYXRpb25TZWFyY2hTdWNjZXNzSAASMgoFZXJyb3IYAiABKAsyIS5hZ2VudC52MS5Db252ZXJzYXRpb25TZWFyY2hFcnJvckgAQggKBnJlc3VsdCJVChhBZ2VudFN0b3JlQ29uZmxpY3RDdXJzb3ISFQoNam91cm5hbF9lcG9jaBgBIAEoCRILCgNzZXEYAiABKAQSFQoNbGFzdF9ldmVudF9pZBgDIAEoCSKlAwoXQWdlbnRTdG9yZUNvbmZsaWN0RXZlbnQSCQoBdhgBIAEoDRIQCghldmVudF9pZBgCIAEoCRIVCg1qb3VybmFsX2Vwb2NoGAMgASgJEgsKA3NlcRgEIAEoBBINCgV0c19tcxgFIAEoBBIMCgRraW5kGAYgASgJEhUKCHN0b3JlX2lkGAcgASgJSACIAQESHgoRb3JpZ2luYWxfcmVsX3BhdGgYCCABKAlIAYgBARIeChFjb25mbGljdF9yZWxfcGF0aBgJIAEoCUgCiAEBEh4KEW9yaWdpbmFsX2Fic19wYXRoGAogASgJSAOIAQESHgoRY29uZmxpY3RfYWJzX3BhdGgYCyABKAlIBIgBARIcCg9wcmVzZXJ2ZWRfYnl0ZXMYDCABKARIBYgBAUILCglfc3RvcmVfaWRCFAoSX29yaWdpbmFsX3JlbF9wYXRoQhQKEl9jb25mbGljdF9yZWxfcGF0aEIUChJfb3JpZ2luYWxfYWJzX3BhdGhCFAoSX2NvbmZsaWN0X2Fic19wYXRoQhIKEF9wcmVzZXJ2ZWRfYnl0ZXMilAEKGUFnZW50U3RvcmVDb25mbGljdFN1Y2Nlc3MSMQoGZXZlbnRzGAEgAygLMiEuYWdlbnQudjEuQWdlbnRTdG9yZUNvbmZsaWN0RXZlbnQSNwoLbmV4dF9jdXJzb3IYAiABKAsyIi5hZ2VudC52MS5BZ2VudFN0b3JlQ29uZmxpY3RDdXJzb3ISCwoDZ2FwGAMgASgIIigKF0FnZW50U3RvcmVDb25mbGljdEVycm9yEg0KBWVycm9yGAEgASgJIn4KFkFnZW50U3RvcmVDb25mbGljdEFyZ3MSNwoGY3Vyc29yGAEgASgLMiIuYWdlbnQudjEuQWdlbnRTdG9yZUNvbmZsaWN0Q3Vyc29ySACIAQESFAoHYWR2YW5jZRgCIAEoCEgBiAEBQgkKB19jdXJzb3JCCgoIX2FkdmFuY2UikAEKGEFnZW50U3RvcmVDb25mbGljdFJlc3VsdBI2CgdzdWNjZXNzGAEgASgLMiMuYWdlbnQudjEuQWdlbnRTdG9yZUNvbmZsaWN0U3VjY2Vzc0gAEjIKBWVycm9yGAIgASgLMiEuYWdlbnQudjEuQWdlbnRTdG9yZUNvbmZsaWN0RXJyb3JIAEIICgZyZXN1bHQifAoORmlsZURpZmZfQ2h1bmsSDwoHY29udGVudBgBIAEoCRINCgVsaW5lcxgCIAMoCRIRCglvbGRfc3RhcnQYAyABKAUSEQoJb2xkX2xpbmVzGAQgASgFEhEKCW5ld19zdGFydBgFIAEoBRIRCgluZXdfbGluZXMYBiABKAUikAIKCEZpbGVEaWZmEg0KBWFkZGVkGAQgASgFEg8KB3JlbW92ZWQYBSABKAUSDAoEZnJvbRgBIAEoCRIKCgJ0bxgCIAEoCRIoCgZjaHVua3MYAyADKAsyGC5hZ2VudC52MS5GaWxlRGlmZl9DaHVuaxIhChRiZWZvcmVfZmlsZV9jb250ZW50cxgGIAEoCUgAiAEBEiAKE2FmdGVyX2ZpbGVfY29udGVudHMYByABKAlIAYgBARIZCgxpc19nZW5lcmF0ZWQYCCABKAhIAogBAUIXChVfYmVmb3JlX2ZpbGVfY29udGVudHNCFgoUX2FmdGVyX2ZpbGVfY29udGVudHNCDwoNX2lzX2dlbmVyYXRlZCJbCgdHaXREaWZmEiEKBWRpZmZzGAEgAygLMhIuYWdlbnQudjEuRmlsZURpZmYSLQoJZGlmZl90eXBlGAIgASgOMhouYWdlbnQudjEuR2l0RGlmZl9EaWZmVHlwZSJoCh1HZXREaWZmUmVzcG9uc2VfU3VibW9kdWxlRGlmZhIVCg1yZWxhdGl2ZV9wYXRoGAEgASgJEh8KBGRpZmYYAiABKAsyES5hZ2VudC52MS5HaXREaWZmEg8KB2Vycm9yZWQYAyABKAgi8gMKDkdldERpZmZSZXF1ZXN0EgsKA2N3ZBgBIAEoCRILCgNyZWYYAiABKAkSEAoIYmFzZV9yZWYYAyABKAkSEgoKbWVyZ2VfYmFzZRgEIAEoCBIUCgx0YXJnZXRfcGF0aHMYBSADKAkSIgoVdW5pZmllZF9jb250ZXh0X2xpbmVzGAYgASgFSACIAQESGwoTbWF4X3VudHJhY2tlZF9maWxlcxgHIAEoBRIfChdzdWJtb2R1bGVfcmVjdXJzZV9kZXB0aBgJIAEoBRIdChVpbmNsdWRlX3NwYWNlX2NoYW5nZXMYCiABKAgSFgoOY29tbWl0dGVkX29ubHkYCyABKAgSGAoQY29tcHV0ZV9wYXRjaF9pZBgMIAEoCBIcCg9yZXR1cm5faGVhZF9zaGEYDSABKAhIAYgBARIfChJtYXhfcmVzcG9uc2VfYnl0ZXMYDiABKAVIAogBARJBCg1vdXRwdXRfZm9ybWF0GAggASgOMiUuYWdlbnQudjEuR2V0RGlmZlJlcXVlc3RfT3V0cHV0Rm9ybWF0SAOIAQFCGAoWX3VuaWZpZWRfY29udGV4dF9saW5lc0ISChBfcmV0dXJuX2hlYWRfc2hhQhUKE19tYXhfcmVzcG9uc2VfYnl0ZXNCEAoOX291dHB1dF9mb3JtYXQi/gEKD0dldERpZmZSZXNwb25zZRIfCgRkaWZmGAEgASgLMhEuYWdlbnQudjEuR2l0RGlmZhJACg9zdWJtb2R1bGVfZGlmZnMYAiADKAsyJy5hZ2VudC52MS5HZXREaWZmUmVzcG9uc2VfU3VibW9kdWxlRGlmZhIVCghwYXRjaF9pZBgDIAEoCUgAiAEBEhUKCGhlYWRfc2hhGAQgASgJSAGIAQESJAoXaGFzX3VuY29tbWl0dGVkX2NoYW5nZXMYBSABKAhIAogBAUILCglfcGF0Y2hfaWRCCwoJX2hlYWRfc2hhQhoKGF9oYXNfdW5jb21taXR0ZWRfY2hhbmdlcyJkCg5QaVJlYWRUb29sQ2FsbBImCgRhcmdzGAEgASgLMhguYWdlbnQudjEuUGlSZWFkRXhlY0FyZ3MSKgoGcmVzdWx0GAIgASgLMhouYWdlbnQudjEuUGlSZWFkRXhlY1Jlc3VsdCJkCg5QaUJhc2hUb29sQ2FsbBImCgRhcmdzGAEgASgLMhguYWdlbnQudjEuUGlCYXNoRXhlY0FyZ3MSKgoGcmVzdWx0GAIgASgLMhouYWdlbnQudjEuUGlCYXNoRXhlY1Jlc3VsdCJkCg5QaUVkaXRUb29sQ2FsbBImCgRhcmdzGAEgASgLMhguYWdlbnQudjEuUGlFZGl0RXhlY0FyZ3MSKgoGcmVzdWx0GAIgASgLMhouYWdlbnQudjEuUGlFZGl0RXhlY1Jlc3VsdCJnCg9QaVdyaXRlVG9vbENhbGwSJwoEYXJncxgBIAEoCzIZLmFnZW50LnYxLlBpV3JpdGVFeGVjQXJncxIrCgZyZXN1bHQYAiABKAsyGy5hZ2VudC52MS5QaVdyaXRlRXhlY1Jlc3VsdCJkCg5QaUdyZXBUb29sQ2FsbBImCgRhcmdzGAEgASgLMhguYWdlbnQudjEuUGlHcmVwRXhlY0FyZ3MSKgoGcmVzdWx0GAIgASgLMhouYWdlbnQudjEuUGlHcmVwRXhlY1Jlc3VsdCJkCg5QaUZpbmRUb29sQ2FsbBImCgRhcmdzGAEgASgLMhguYWdlbnQudjEuUGlGaW5kRXhlY0FyZ3MSKgoGcmVzdWx0GAIgASgLMhouYWdlbnQudjEuUGlGaW5kRXhlY1Jlc3VsdCJeCgxQaUxzVG9vbENhbGwSJAoEYXJncxgBIAEoCzIWLmFnZW50LnYxLlBpTHNFeGVjQXJncxIoCgZyZXN1bHQYAiABKAsyGC5hZ2VudC52MS5QaUxzRXhlY1Jlc3VsdCKBAQobU2VhcmNoQ29udmVyc2F0aW9uc1Rvb2xDYWxsEi4KBGFyZ3MYASABKAsyIC5hZ2VudC52MS5Db252ZXJzYXRpb25TZWFyY2hBcmdzEjIKBnJlc3VsdBgCIAEoCzIiLmFnZW50LnYxLkNvbnZlcnNhdGlvblNlYXJjaFJlc3VsdCI5ChpDb25uZWN0U2NtR2l0aHViUmVwb3NpdG9yeRINCgVvd25lchgBIAEoCRIMCgRyZXBvGAIgASgJIn4KEENvbm5lY3RTY21HaXRodWISOAoKcmVwb3NpdG9yeRgBIAEoCzIkLmFnZW50LnYxLkNvbm5lY3RTY21HaXRodWJSZXBvc2l0b3J5EhwKD2doZV9hcHBsaWNhdGlvbhgCIAEoCUgAiAEBQhIKEF9naGVfYXBwbGljYXRpb24iXgoOQ29ubmVjdFNjbUFyZ3MSFAoMdG9vbF9jYWxsX2lkGAEgASgJEiwKBmdpdGh1YhgCIAEoCzIaLmFnZW50LnYxLkNvbm5lY3RTY21HaXRodWJIAEIICgZ0YXJnZXQiEwoRQ29ubmVjdFNjbVN1Y2Nlc3MiIAoPQ29ubmVjdFNjbUVycm9yEg0KBWVycm9yGAEgASgJIiQKEkNvbm5lY3RTY21SZWplY3RlZBIOCgZyZWFzb24YASABKAkiqgEKEENvbm5lY3RTY21SZXN1bHQSLgoHc3VjY2VzcxgBIAEoCzIbLmFnZW50LnYxLkNvbm5lY3RTY21TdWNjZXNzSAASKgoFZXJyb3IYAiABKAsyGS5hZ2VudC52MS5Db25uZWN0U2NtRXJyb3JIABIwCghyZWplY3RlZBgDIAEoCzIcLmFnZW50LnYxLkNvbm5lY3RTY21SZWplY3RlZEgAQggKBnJlc3VsdCJoChJDb25uZWN0U2NtVG9vbENhbGwSJgoEYXJncxgBIAEoCzIYLmFnZW50LnYxLkNvbm5lY3RTY21BcmdzEioKBnJlc3VsdBgCIAEoCzIaLmFnZW50LnYxLkNvbm5lY3RTY21SZXN1bHQqiAEKHUFwcGxpZWRBZ2VudENoYW5nZV9DaGFuZ2VUeXBlEhsKF0NIQU5HRV9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTQ0hBTkdFX1RZUEVfQ1JFQVRFRBABEhgKFENIQU5HRV9UWVBFX01PRElGSUVEEAISFwoTQ0hBTkdFX1RZUEVfREVMRVRFRBADKqQBCgtNb3VzZUJ1dHRvbhIcChhNT1VTRV9CVVRUT05fVU5TUEVDSUZJRUQQABIVChFNT1VTRV9CVVRUT05fTEVGVBABEhYKEk1PVVNFX0JVVFRPTl9SSUdIVBACEhcKE01PVVNFX0JVVFRPTl9NSURETEUQAxIVChFNT1VTRV9CVVRUT05fQkFDSxAEEhgKFE1PVVNFX0JVVFRPTl9GT1JXQVJEEAUqngEKD1Njcm9sbERpcmVjdGlvbhIgChxTQ1JPTExfRElSRUNUSU9OX1VOU1BFQ0lGSUVEEAASFwoTU0NST0xMX0RJUkVDVElPTl9VUBABEhkKFVNDUk9MTF9ESVJFQ1RJT05fRE9XThACEhkKFVNDUk9MTF9ESVJFQ1RJT05fTEVGVBADEhoKFlNDUk9MTF9ESVJFQ1RJT05fUklHSFQQBCpwChBDdXJzb3JSdWxlU291cmNlEiIKHkNVUlNPUl9SVUxFX1NPVVJDRV9VTlNQRUNJRklFRBAAEhsKF0NVUlNPUl9SVUxFX1NPVVJDRV9URUFNEAESGwoXQ1VSU09SX1JVTEVfU09VUkNFX1VTRVIQAiq8AQoSRGlhZ25vc3RpY1NldmVyaXR5EiMKH0RJQUdOT1NUSUNfU0VWRVJJVFlfVU5TUEVDSUZJRUQQABIdChlESUFHTk9TVElDX1NFVkVSSVRZX0VSUk9SEAESHwobRElBR05PU1RJQ19TRVZFUklUWV9XQVJOSU5HEAISIwofRElBR05PU1RJQ19TRVZFUklUWV9JTkZPUk1BVElPThADEhwKGERJQUdOT1NUSUNfU0VWRVJJVFlfSElOVBAEKpwBCg1SZWNvcmRpbmdNb2RlEh4KGlJFQ09SRElOR19NT0RFX1VOU1BFQ0lGSUVEEAASIgoeUkVDT1JESU5HX01PREVfU1RBUlRfUkVDT1JESU5HEAESIQodUkVDT1JESU5HX01PREVfU0FWRV9SRUNPUkRJTkcQAhIkCiBSRUNPUkRJTkdfTU9ERV9ESVNDQVJEX1JFQ09SRElORxADKpMBCh9SZXF1ZXN0ZWRGaWxlUGF0aFJlamVjdGVkUmVhc29uEjMKL1JFUVVFU1RFRF9GSUxFX1BBVEhfUkVKRUNURURfUkVBU09OX1VOU1BFQ0lGSUVEEAASOwo3UkVRVUVTVEVEX0ZJTEVfUEFUSF9SRUpFQ1RFRF9SRUFTT05fU0xBU0hFU19OT1RfQUxMT1dFRBABKq0BCgtQYWNrYWdlVHlwZRIcChhQQUNLQUdFX1RZUEVfVU5TUEVDSUZJRUQQABIfChtQQUNLQUdFX1RZUEVfQ1VSU09SX1BST0pFQ1QQARIgChxQQUNLQUdFX1RZUEVfQ1VSU09SX1BFUlNPTkFMEAISHQoZUEFDS0FHRV9UWVBFX0NMQVVERV9TS0lMTBADEh4KGlBBQ0tBR0VfVFlQRV9DTEFVREVfUExVR0lOEAQqfQoSU2FuZGJveFBvbGljeV9UeXBlEhQKEFRZUEVfVU5TUEVDSUZJRUQQABIWChJUWVBFX0lOU0VDVVJFX05PTkUQARIcChhUWVBFX1dPUktTUEFDRV9SRUFEV1JJVEUQAhIbChdUWVBFX1dPUktTUEFDRV9SRUFET05MWRADKnEKD1RpbWVvdXRCZWhhdmlvchIgChxUSU1FT1VUX0JFSEFWSU9SX1VOU1BFQ0lGSUVEEAASGwoXVElNRU9VVF9CRUhBVklPUl9DQU5DRUwQARIfChtUSU1FT1VUX0JFSEFWSU9SX0JBQ0tHUk9VTkQQAip5ChBTaGVsbEFib3J0UmVhc29uEiIKHlNIRUxMX0FCT1JUX1JFQVNPTl9VTlNQRUNJRklFRBAAEiEKHVNIRUxMX0FCT1JUX1JFQVNPTl9VU0VSX0FCT1JUEAESHgoaU0hFTExfQUJPUlRfUkVBU09OX1RJTUVPVVQQAiqqAQocQ3VzdG9tU3ViYWdlbnRQZXJtaXNzaW9uTW9kZRIvCitDVVNUT01fU1VCQUdFTlRfUEVSTUlTU0lPTl9NT0RFX1VOU1BFQ0lGSUVEEAASKwonQ1VTVE9NX1NVQkFHRU5UX1BFUk1JU1NJT05fTU9ERV9ERUZBVUxUEAESLAooQ1VTVE9NX1NVQkFHRU5UX1BFUk1JU1NJT05fTU9ERV9SRUFET05MWRACKpUBCgpUb2RvU3RhdHVzEhsKF1RPRE9fU1RBVFVTX1VOU1BFQ0lGSUVEEAASFwoTVE9ET19TVEFUVVNfUEVORElORxABEhsKF1RPRE9fU1RBVFVTX0lOX1BST0dSRVNTEAISGQoVVE9ET19TVEFUVVNfQ09NUExFVEVEEAMSGQoVVE9ET19TVEFUVVNfQ0FOQ0VMTEVEEAQqZgoIQ2xpZW50T1MSGQoVQ0xJRU5UX09TX1VOU1BFQ0lGSUVEEAASFQoRQ0xJRU5UX09TX1dJTkRPV1MQARITCg9DTElFTlRfT1NfTUFDT1MQAhITCg9DTElFTlRfT1NfTElOVVgQAyrsAQocQXJ0aWZhY3RVcGxvYWREaXNwYXRjaFN0YXR1cxIvCitBUlRJRkFDVF9VUExPQURfRElTUEFUQ0hfU1RBVFVTX1VOU1BFQ0lGSUVEEAASLAooQVJUSUZBQ1RfVVBMT0FEX0RJU1BBVENIX1NUQVRVU19BQ0NFUFRFRBABEiwKKEFSVElGQUNUX1VQTE9BRF9ESVNQQVRDSF9TVEFUVVNfUkVKRUNURUQQAhI/CjtBUlRJRkFDVF9VUExPQURfRElTUEFUQ0hfU1RBVFVTX1NLSVBQRURfQUxSRUFEWV9JTl9QUk9HUkVTUxADKlcKCkZyYW1lX0tpbmQSFAoQS0lORF9VTlNQRUNJRklFRBAAEhAKDEtJTkRfUkVRVUVTVBABEhEKDUtJTkRfUkVTUE9OU0UQAhIOCgpLSU5EX0VSUk9SEAMqsAIKF0J1Z2JvdERlZXBsaW5rRXZlbnRLaW5kEioKJkJVR0JPVF9ERUVQTElOS19FVkVOVF9LSU5EX1VOU1BFQ0lGSUVEEAASJgoiQlVHQk9UX0RFRVBMSU5LX0VWRU5UX0tJTkRfQ0xJQ0tFRBABEjMKL0JVR0JPVF9ERUVQTElOS19FVkVOVF9LSU5EX0hBTkRMRURfRElBTE9HX1NIT1dOEAISMwovQlVHQk9UX0RFRVBMSU5LX0VWRU5UX0tJTkRfSEFORExFRF9DSEFUX0NSRUFURUQQAxIkCiBCVUdCT1RfREVFUExJTktfRVZFTlRfS0lORF9FUlJPUhAEEjEKLUJVR0JPVF9ERUVQTElOS19FVkVOVF9LSU5EX0hBTkRMRURfRklYX0lOX1dFQhAFKsoBCixDb21tYW5kQ2xhc3NpZmllclJlc3VsdF9TdWdnZXN0ZWRTYW5kYm94TW9kZRImCiJTVUdHRVNURURfU0FOREJPWF9NT0RFX1VOU1BFQ0lGSUVEEAASIgoeU1VHR0VTVEVEX1NBTkRCT1hfTU9ERV9TQU5EQk9YEAESJQohU1VHR0VTVEVEX1NBTkRCT1hfTU9ERV9OT19TQU5EQk9YEAISJwojU1VHR0VTVEVEX1NBTkRCT1hfTU9ERV9VTkRFVEVSTUlORUQQAyqQAQohU2hlbGxIb29rQXBwcm92YWxSZXF1aXJlbWVudF9LaW5kEjQKMFNIRUxMX0hPT0tfQVBQUk9WQUxfUkVRVUlSRU1FTlRfS0lORF9VTlNQRUNJRklFRBAAEjUKMVNIRUxMX0hPT0tfQVBQUk9WQUxfUkVRVUlSRU1FTlRfS0lORF9GT1JDRV9QUk9NUFQQASqPAQoVU2hlbGxCYWNrZ3JvdW5kUmVhc29uEicKI1NIRUxMX0JBQ0tHUk9VTkRfUkVBU09OX1VOU1BFQ0lGSUVEEAASIwofU0hFTExfQkFDS0dST1VORF9SRUFTT05fVElNRU9VVBABEigKJFNIRUxMX0JBQ0tHUk9VTkRfUkVBU09OX1VTRVJfUkVRVUVTVBACKqQBChpGb3JjZUJhY2tncm91bmRTaGVsbFN0YXR1cxItCilGT1JDRV9CQUNLR1JPVU5EX1NIRUxMX1NUQVRVU19VTlNQRUNJRklFRBAAEioKJkZPUkNFX0JBQ0tHUk9VTkRfU0hFTExfU1RBVFVTX0FDQ0VQVEVEEAESKwonRk9SQ0VfQkFDS0dST1VORF9TSEVMTF9TVEFUVVNfTk9UX0ZPVU5EEAIq0gEKGFN1YmFnZW50QmFja2dyb3VuZFJlYXNvbhIqCiZTVUJBR0VOVF9CQUNLR1JPVU5EX1JFQVNPTl9VTlNQRUNJRklFRBAAEiwKKFNVQkFHRU5UX0JBQ0tHUk9VTkRfUkVBU09OX0FHRU5UX1JFUVVFU1QQARIrCidTVUJBR0VOVF9CQUNLR1JPVU5EX1JFQVNPTl9VU0VSX1JFUVVFU1QQAhIvCitTVUJBR0VOVF9CQUNLR1JPVU5EX1JFQVNPTl9RVUVVRURfRk9MTE9XX1VQEAMqsAEKHUZvcmNlQmFja2dyb3VuZFN1YmFnZW50U3RhdHVzEjAKLEZPUkNFX0JBQ0tHUk9VTkRfU1VCQUdFTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASLQopRk9SQ0VfQkFDS0dST1VORF9TVUJBR0VOVF9TVEFUVVNfQUNDRVBURUQQARIuCipGT1JDRV9CQUNLR1JPVU5EX1NVQkFHRU5UX1NUQVRVU19OT1RfRk9VTkQQAiqhAQobU21hcnRNb2RlQ2xhc3NpZmllckRlY2lzaW9uEi4KKlNNQVJUX01PREVfQ0xBU1NJRklFUl9ERUNJU0lPTl9VTlNQRUNJRklFRBAAEigKJFNNQVJUX01PREVfQ0xBU1NJRklFUl9ERUNJU0lPTl9BTExPVxABEigKJFNNQVJUX01PREVfQ0xBU1NJRklFUl9ERUNJU0lPTl9CTE9DSxACKpgBChhDb252ZXJzYXRpb25TZWFyY2hTb3VyY2USKgomQ09OVkVSU0FUSU9OX1NFQVJDSF9TT1VSQ0VfVU5TUEVDSUZJRUQQABIkCiBDT05WRVJTQVRJT05fU0VBUkNIX1NPVVJDRV9MT0NBTBABEioKJkNPTlZFUlNBVElPTl9TRUFSQ0hfU09VUkNFX0NMT1VEX0NBQ0hFEAIq0wEKG0dldERpZmZSZXF1ZXN0X091dHB1dEZvcm1hdBIdChlPVVRQVVRfRk9STUFUX1VOU1BFQ0lGSUVEEAASHQoZT1VUUFVUX0ZPUk1BVF9OQU1FX1NUQVRVUxABEikKJU9VVFBVVF9GT1JNQVRfTkFNRV9TVEFUVVNfQU5EX05VTVNUQVQQAhIcChhPVVRQVVRfRk9STUFUX0ZJTEVfRElGRlMQAxItCilPVVRQVVRfRk9STUFUX0RJRkZTX1dJVEhfQkVGT1JFX0FORF9BRlRFUhAEKnEKEEdpdERpZmZfRGlmZlR5cGUSGQoVRElGRl9UWVBFX1VOU1BFQ0lGSUVEEAASGgoWRElGRl9UWVBFX0RJRkZfVE9fSEVBRBABEiYKIkRJRkZfVFlQRV9ESUZGX0ZST01fQlJBTkNIX1RPX01BSU4QAjKHBAoMQWdlbnRTZXJ2aWNlEkEKA1J1bhIcLmFnZW50LnYxLkFnZW50Q2xpZW50TWVzc2FnZRocLmFnZW50LnYxLkFnZW50U2VydmVyTWVzc2FnZRI/CgZSdW5TU0USFy5hZ2VudC52MS5CaWRpUmVxdWVzdElkGhwuYWdlbnQudjEuQWdlbnRTZXJ2ZXJNZXNzYWdlEkQKCU5hbWVBZ2VudBIaLmFnZW50LnYxLk5hbWVBZ2VudFJlcXVlc3QaGy5hZ2VudC52MS5OYW1lQWdlbnRSZXNwb25zZRJWCg9HZXRVc2FibGVNb2RlbHMSIC5hZ2VudC52MS5HZXRVc2FibGVNb2RlbHNSZXF1ZXN0GiEuYWdlbnQudjEuR2V0VXNhYmxlTW9kZWxzUmVzcG9uc2USaAoVR2V0RGVmYXVsdE1vZGVsRm9yQ2xpEiYuYWdlbnQudjEuR2V0RGVmYXVsdE1vZGVsRm9yQ2xpUmVxdWVzdBonLmFnZW50LnYxLkdldERlZmF1bHRNb2RlbEZvckNsaVJlc3BvbnNlEmsKFkdldEFsbG93ZWRNb2RlbEludGVudHMSJy5hZ2VudC52MS5HZXRBbGxvd2VkTW9kZWxJbnRlbnRzUmVxdWVzdBooLmFnZW50LnYxLkdldEFsbG93ZWRNb2RlbEludGVudHNSZXNwb25zZTK1CAoOQ29udHJvbFNlcnZpY2USTQoMUmVhZFRleHRGaWxlEh0uYWdlbnQudjEuUmVhZFRleHRGaWxlUmVxdWVzdBoeLmFnZW50LnYxLlJlYWRUZXh0RmlsZVJlc3BvbnNlElAKDVdyaXRlVGV4dEZpbGUSHi5hZ2VudC52MS5Xcml0ZVRleHRGaWxlUmVxdWVzdBofLmFnZW50LnYxLldyaXRlVGV4dEZpbGVSZXNwb25zZRJTCg5SZWFkQmluYXJ5RmlsZRIfLmFnZW50LnYxLlJlYWRCaW5hcnlGaWxlUmVxdWVzdBogLmFnZW50LnYxLlJlYWRCaW5hcnlGaWxlUmVzcG9uc2USVgoPV3JpdGVCaW5hcnlGaWxlEiAuYWdlbnQudjEuV3JpdGVCaW5hcnlGaWxlUmVxdWVzdBohLmFnZW50LnYxLldyaXRlQmluYXJ5RmlsZVJlc3BvbnNlEm4KF0dldFdvcmtzcGFjZUNoYW5nZXNIYXNoEiguYWdlbnQudjEuR2V0V29ya3NwYWNlQ2hhbmdlc0hhc2hSZXF1ZXN0GikuYWdlbnQudjEuR2V0V29ya3NwYWNlQ2hhbmdlc0hhc2hSZXNwb25zZRJxChhSZWZyZXNoR2l0aHViQWNjZXNzVG9rZW4SKS5hZ2VudC52MS5SZWZyZXNoR2l0aHViQWNjZXNzVG9rZW5SZXF1ZXN0GiouYWdlbnQudjEuUmVmcmVzaEdpdGh1YkFjY2Vzc1Rva2VuUmVzcG9uc2USawoWV2FybVJlbW90ZUFjY2Vzc1NlcnZlchInLmFnZW50LnYxLldhcm1SZW1vdGVBY2Nlc3NTZXJ2ZXJSZXF1ZXN0GiguYWdlbnQudjEuV2FybVJlbW90ZUFjY2Vzc1NlcnZlclJlc3BvbnNlElAKDUxpc3RBcnRpZmFjdHMSHi5hZ2VudC52MS5MaXN0QXJ0aWZhY3RzUmVxdWVzdBofLmFnZW50LnYxLkxpc3RBcnRpZmFjdHNSZXNwb25zZRJWCg9VcGxvYWRBcnRpZmFjdHMSIC5hZ2VudC52MS5VcGxvYWRBcnRpZmFjdHNSZXF1ZXN0GiEuYWdlbnQudjEuVXBsb2FkQXJ0aWZhY3RzUmVzcG9uc2USYgoTR2V0TWNwUmVmcmVzaFRva2VucxIkLmFnZW50LnYxLkdldE1jcFJlZnJlc2hUb2tlbnNSZXF1ZXN0GiUuYWdlbnQudjEuR2V0TWNwUmVmcmVzaFRva2Vuc1Jlc3BvbnNlEncKGlVwZGF0ZUVudmlyb25tZW50VmFyaWFibGVzEisuYWdlbnQudjEuVXBkYXRlRW52aXJvbm1lbnRWYXJpYWJsZXNSZXF1ZXN0GiwuYWdlbnQudjEuVXBkYXRlRW52aXJvbm1lbnRWYXJpYWJsZXNSZXNwb25zZTINCgtFeGVjU2VydmljZTJRCiJQcml2YXRlV29ya2VyQnJpZGdlRXh0ZXJuYWxTZXJ2aWNlEisKB0Nvbm5lY3QSDy5hZ2VudC52MS5GcmFtZRoPLmFnZW50LnYxLkZyYW1lMngKEExpZmVjeWNsZVNlcnZpY2USMQoNUmVzZXRJbnN0YW5jZRIPLmFnZW50LnYxLkVtcHR5Gg8uYWdlbnQudjEuRW1wdHkSMQoNUmVuZXdJbnN0YW5jZRIPLmFnZW50LnYxLkVtcHR5Gg8uYWdlbnQudjEuRW1wdHliBnByb3RvMw");var McpToolErrorSchema=messageDesc(file_agent,12),McpToolResultSchema=messageDesc(file_agent,13),McpToolCallSchema=messageDesc(file_agent,14);var ToolCallSchema=messageDesc(file_agent,46);var ConversationStepSchema=messageDesc(file_agent,53),ConversationActionSchema=messageDesc(file_agent,54),UserMessageActionSchema=messageDesc(file_agent,55);var ResumeActionSchema=messageDesc(file_agent,57);var UserMessageSchema=messageDesc(file_agent,63),AssistantMessageSchema=messageDesc(file_agent,64);var ConversationTurnStructureSchema=messageDesc(file_agent,70);var AgentConversationTurnStructureSchema=messageDesc(file_agent,72);var ConversationStateStructureSchema=messageDesc(file_agent,83);var ModelDetailsSchema=messageDesc(file_agent,88),RequestedModelSchema=messageDesc(file_agent,89),RequestedModel_ModelParameterbytesSchema=messageDesc(file_agent,90),AgentRunRequestSchema=messageDesc(file_agent,91);var ClientHeartbeatSchema=messageDesc(file_agent,114);var AgentClientMessageSchema=messageDesc(file_agent,118),AgentServerMessageSchema=messageDesc(file_agent,119);var GetUsableModelsRequestSchema=messageDesc(file_agent,122),GetUsableModelsResponseSchema=messageDesc(file_agent,123);var BackgroundShellSpawnResultSchema=messageDesc(file_agent,147);var WriteShellStdinResultSchema=messageDesc(file_agent,151);var WriteShellStdinErrorSchema=messageDesc(file_agent,153);var ComputerUseResultSchema=messageDesc(file_agent,168);var ComputerUseErrorSchema=messageDesc(file_agent,170);var DeleteResultSchema=messageDesc(file_agent,187),DeleteSuccessSchema=messageDesc(file_agent,188);var DeleteRejectedSchema=messageDesc(file_agent,193),DeleteErrorSchema=messageDesc(file_agent,194);var DiagnosticsResultSchema=messageDesc(file_agent,197),DiagnosticsSuccessSchema=messageDesc(file_agent,198);var DiagnosticsErrorSchema=messageDesc(file_agent,200),DiagnosticsRejectedSchema=messageDesc(file_agent,201);var ExecClientStreamCloseSchema=messageDesc(file_agent,236),ExecClientThrowSchema=messageDesc(file_agent,237),ExecClientHeartbeatSchema=messageDesc(file_agent,238),ExecClientControlMessageSchema=messageDesc(file_agent,239);var ExecClientMessageSchema=messageDesc(file_agent,244);var FetchResultSchema=messageDesc(file_agent,246);var FetchErrorSchema=messageDesc(file_agent,248);var GrepResultSchema=messageDesc(file_agent,255),GrepErrorSchema=messageDesc(file_agent,256),GrepSuccessSchema=messageDesc(file_agent,257),GrepUnionResultSchema=messageDesc(file_agent,258),GrepCountResultSchema=messageDesc(file_agent,259),GrepFileCountSchema=messageDesc(file_agent,260),GrepFilesResultSchema=messageDesc(file_agent,261),GrepContentResultSchema=messageDesc(file_agent,262),GrepFileMatchSchema=messageDesc(file_agent,263),GrepContentMatchSchema=messageDesc(file_agent,264);var GetBlobResultSchema=messageDesc(file_agent,268);var SetBlobResultSchema=messageDesc(file_agent,270);var KvClientMessageSchema=messageDesc(file_agent,272);var LsResultSchema=messageDesc(file_agent,274),LsSuccessSchema=messageDesc(file_agent,275),LsDirectoryTreeNodeSchema=messageDesc(file_agent,276),LsDirectoryTreeNode_FileSchema=messageDesc(file_agent,277),LsErrorSchema=messageDesc(file_agent,278),LsRejectedSchema=messageDesc(file_agent,279);var McpArgsSchema=messageDesc(file_agent,284),McpResultSchema=messageDesc(file_agent,285),McpToolNotFoundSchema=messageDesc(file_agent,286),McpTextContentSchema=messageDesc(file_agent,287),McpImageContentSchema=messageDesc(file_agent,288),McpToolResultContentItemSchema=messageDesc(file_agent,289),McpSuccessSchema=messageDesc(file_agent,290),McpErrorSchema=messageDesc(file_agent,291),McpRejectedSchema=messageDesc(file_agent,292);var ListMcpResourcesExecResultSchema=messageDesc(file_agent,295);var ListMcpResourcesSuccessSchema=messageDesc(file_agent,297);var ReadMcpResourceExecResultSchema=messageDesc(file_agent,301);var ReadMcpResourceNotFoundSchema=messageDesc(file_agent,305),McpToolDefinitionSchema=messageDesc(file_agent,306);var ReadResultSchema=messageDesc(file_agent,313),ReadSuccessSchema=messageDesc(file_agent,314),ReadErrorSchema=messageDesc(file_agent,315),ReadRejectedSchema=messageDesc(file_agent,316);var RecordScreenResultSchema=messageDesc(file_agent,327);var RecordScreenFailureSchema=messageDesc(file_agent,331);var RequestContextResultSchema=messageDesc(file_agent,336),RequestContextSuccessSchema=messageDesc(file_agent,337);var RequestContextSchema=messageDesc(file_agent,347);var SelectedImageSchema=messageDesc(file_agent,349);var SelectedContextSchema=messageDesc(file_agent,373);var ShellResultSchema=messageDesc(file_agent,389),ShellStreamStdoutSchema=messageDesc(file_agent,390),ShellStreamStderrSchema=messageDesc(file_agent,391),ShellStreamExitSchema=messageDesc(file_agent,392),ShellStreamStartSchema=messageDesc(file_agent,393);var ShellStreamSchema=messageDesc(file_agent,395);var ShellSuccessSchema=messageDesc(file_agent,397),ShellFailureSchema=messageDesc(file_agent,398);var ShellRejectedSchema=messageDesc(file_agent,400);var WriteResultSchema=messageDesc(file_agent,450),WriteSuccessSchema=messageDesc(file_agent,451);var WriteErrorSchema=messageDesc(file_agent,454),WriteRejectedSchema=messageDesc(file_agent,455);var PiTruncationSchema=messageDesc(file_agent,492);var PiReadExecSuccessSchema=messageDesc(file_agent,495),PiReadExecErrorSchema=messageDesc(file_agent,496),PiReadExecResultSchema=messageDesc(file_agent,497);var PiBashExecSuccessSchema=messageDesc(file_agent,499),PiBashExecErrorSchema=messageDesc(file_agent,500),PiBashExecResultSchema=messageDesc(file_agent,501);var PiEditExecSuccessSchema=messageDesc(file_agent,503),PiEditExecErrorSchema=messageDesc(file_agent,504),PiEditExecRejectedSchema=messageDesc(file_agent,505),PiEditExecResultSchema=messageDesc(file_agent,506);var PiWriteExecSuccessSchema=messageDesc(file_agent,508),PiWriteExecErrorSchema=messageDesc(file_agent,509),PiWriteExecRejectedSchema=messageDesc(file_agent,510),PiWriteExecResultSchema=messageDesc(file_agent,511);var PiGrepExecSuccessSchema=messageDesc(file_agent,513),PiGrepExecErrorSchema=messageDesc(file_agent,514),PiGrepExecResultSchema=messageDesc(file_agent,515);var PiFindExecSuccessSchema=messageDesc(file_agent,517),PiFindExecErrorSchema=messageDesc(file_agent,518),PiFindExecResultSchema=messageDesc(file_agent,519);var PiLsExecSuccessSchema=messageDesc(file_agent,521),PiLsExecErrorSchema=messageDesc(file_agent,522),PiLsExecResultSchema=messageDesc(file_agent,523);var McpApprovedSchema=messageDesc(file_agent,525);var McpStateServerSchema=messageDesc(file_agent,527),McpStateSuccessSchema=messageDesc(file_agent,528);var McpStateExecResultSchema=messageDesc(file_agent,531);var ShellAllowlistPrecheckResultSchema=messageDesc(file_agent,536);var McpAllowlistPrecheckResultSchema=messageDesc(file_agent,538);var WebFetchAllowlistPrecheckResultSchema=messageDesc(file_agent,540);var ForceBackgroundShellResultSchema=messageDesc(file_agent,545);var SubagentErrorSchema=messageDesc(file_agent,550),SubagentResultSchema=messageDesc(file_agent,551);var SubagentAwaitNotFoundSchema=messageDesc(file_agent,555);var SubagentAwaitResultSchema=messageDesc(file_agent,557);var ForceBackgroundSubagentResultSchema=messageDesc(file_agent,559);var PreCompactRequestResponseSchema=messageDesc(file_agent,570),SubagentStartRequestResponseSchema=messageDesc(file_agent,571),SubagentStopRequestResponseSchema=messageDesc(file_agent,572),PreToolUseRequestResponseSchema=messageDesc(file_agent,573),PostToolUseRequestResponseSchema=messageDesc(file_agent,574),PostToolUseFailureRequestResponseSchema=messageDesc(file_agent,575),BeforeSubmitPromptRequestResponseSchema=messageDesc(file_agent,576),AfterAgentResponseRequestResponseSchema=messageDesc(file_agent,577),AfterAgentThoughtRequestResponseSchema=messageDesc(file_agent,578),StopRequestResponseSchema=messageDesc(file_agent,579);var ExecuteHookResponseSchema=messageDesc(file_agent,581);var ExecuteHookResultSchema=messageDesc(file_agent,583);var SmartModeClassifierErrorSchema=messageDesc(file_agent,588),SmartModeClassifierResultSchema=messageDesc(file_agent,589);var CanvasDiagnosticsErrorSchema=messageDesc(file_agent,592),CanvasDiagnosticsResultSchema=messageDesc(file_agent,593);var ConversationSearchErrorSchema=messageDesc(file_agent,596);var ConversationSearchResultSchema=messageDesc(file_agent,598);var AgentStoreConflictErrorSchema=messageDesc(file_agent,602);var AgentStoreConflictResultSchema=messageDesc(file_agent,604);var ForceBackgroundShellStatus={UNSPECIFIED:0,ACCEPTED:1,NOT_FOUND:2};var ForceBackgroundSubagentStatus={UNSPECIFIED:0,ACCEPTED:1,NOT_FOUND:2};function piOutputText(toolResult){return toolResult.content.map(item=>item.type==="text"?item.text:`[${item.mimeType} image]`).join(`
26
26
  `)}function bagValue(bag,key){if(!(!bag||typeof bag!="object"||!(key in bag)))return Reflect.get(bag,key)}function detailCount(toolResult,key){let value=bagValue(toolResult.details,key);return positiveCount(value)}function positiveCount(value){return typeof value=="number"&&Number.isFinite(value)&&value>0?Math.floor(value):void 0}function resultLimitReached(toolResult){let flat=detailCount(toolResult,"resultLimitReached");if(flat!==void 0)return flat;let limits=bagValue(bagValue(toolResult.details,"meta"),"limits");return positiveCount(bagValue(bagValue(limits,"resultLimit"),"reached"))}function piTruncation(toolResult){let direct=bagValue(toolResult.details,"truncation"),truncation=direct!==void 0?direct:bagValue(bagValue(toolResult.details,"meta"),"truncation");if(truncation==null)return;let flag=bagValue(truncation,"truncated");if(flag!==void 0&&flag!==!0)return;let truncatedBy=bagValue(truncation,"truncatedBy"),totalLines=bagValue(truncation,"totalLines"),outputLines=bagValue(truncation,"outputLines"),outputBytes=bagValue(truncation,"outputBytes");return create(PiTruncationSchema,{truncated:!0,truncatedBy:typeof truncatedBy=="string"?truncatedBy:"",totalLines:typeof totalLines=="number"?totalLines:0,outputLines:typeof outputLines=="number"?outputLines:0,outputBytes:typeof outputBytes=="number"?outputBytes:0,firstLineExceedsLimit:bagValue(truncation,"firstLineExceedsLimit")===!0,lastLinePartial:bagValue(truncation,"lastLinePartial")===!0})}function buildPiReadResult(toolResult){let text=piOutputText(toolResult);return toolResult.isError?buildPiReadError(text||"Read failed"):create(PiReadExecResultSchema,{result:{case:"success",value:create(PiReadExecSuccessSchema,{output:text,truncation:piTruncation(toolResult)})}})}function buildPiReadError(error){return create(PiReadExecResultSchema,{result:{case:"error",value:create(PiReadExecErrorSchema,{error})}})}function buildPiBashResult(toolResult){let text=piOutputText(toolResult),truncation=piTruncation(toolResult);return toolResult.isError?create(PiBashExecResultSchema,{result:{case:"error",value:create(PiBashExecErrorSchema,{error:text||"Command failed",truncation})}}):create(PiBashExecResultSchema,{result:{case:"success",value:create(PiBashExecSuccessSchema,{output:text,truncation})}})}function buildPiBashError(error){return create(PiBashExecResultSchema,{result:{case:"error",value:create(PiBashExecErrorSchema,{error})}})}function buildPiEditResult(toolResult){let text=piOutputText(toolResult);if(toolResult.isError)return buildPiEditError(text||"Edit failed");let diff=bagValue(toolResult.details,"diff"),patch=bagValue(toolResult.details,"patch");return create(PiEditExecResultSchema,{result:{case:"success",value:create(PiEditExecSuccessSchema,{output:text,diff:typeof diff=="string"?diff:"",patch:typeof patch=="string"?patch:"",firstChangedLine:detailCount(toolResult,"firstChangedLine")})}})}function buildPiEditError(error){return create(PiEditExecResultSchema,{result:{case:"error",value:create(PiEditExecErrorSchema,{error})}})}function buildPiEditRejected(reason){return create(PiEditExecResultSchema,{result:{case:"rejected",value:create(PiEditExecRejectedSchema,{reason})}})}function buildPiWriteResult(toolResult){let text=piOutputText(toolResult);return toolResult.isError?buildPiWriteError(text||"Write failed"):create(PiWriteExecResultSchema,{result:{case:"success",value:create(PiWriteExecSuccessSchema,{output:text})}})}function buildPiWriteError(error){return create(PiWriteExecResultSchema,{result:{case:"error",value:create(PiWriteExecErrorSchema,{error})}})}function buildPiWriteRejected(reason){return create(PiWriteExecResultSchema,{result:{case:"rejected",value:create(PiWriteExecRejectedSchema,{reason})}})}function buildPiGrepResult(toolResult){let text=piOutputText(toolResult);if(toolResult.isError)return buildPiGrepError(text||"Grep failed");let matchLimitReached=detailCount(toolResult,"perFileLimitReached");return create(PiGrepExecResultSchema,{result:{case:"success",value:create(PiGrepExecSuccessSchema,{output:text,truncation:piTruncation(toolResult)??grepInternalCapTruncation(toolResult,text,matchLimitReached),matchLimitReached,linesTruncated:bagValue(toolResult.details,"linesTruncated")===!0})}})}function grepInternalCapTruncation(toolResult,text,matchLimitReached){if(matchLimitReached===void 0&&bagValue(toolResult.details,"truncated")===!0)return create(PiTruncationSchema,{truncated:!0,truncatedBy:"matches",totalLines:0,outputLines:text?text.split(`
27
27
  `).length:0,outputBytes:Buffer.byteLength(text,"utf-8"),firstLineExceedsLimit:!1,lastLinePartial:!1})}function buildPiGrepError(error){return create(PiGrepExecResultSchema,{result:{case:"error",value:create(PiGrepExecErrorSchema,{error})}})}function buildPiFindResult(toolResult){let text=piOutputText(toolResult);return toolResult.isError?buildPiFindError(text||"Find failed"):create(PiFindExecResultSchema,{result:{case:"success",value:create(PiFindExecSuccessSchema,{output:text,truncation:piTruncation(toolResult),resultLimitReached:resultLimitReached(toolResult)})}})}function buildPiFindError(error){return create(PiFindExecResultSchema,{result:{case:"error",value:create(PiFindExecErrorSchema,{error})}})}function buildPiLsResult(toolResult){let text=piOutputText(toolResult);return toolResult.isError?buildPiLsError(text||"Ls failed"):create(PiLsExecResultSchema,{result:{case:"success",value:create(PiLsExecSuccessSchema,{output:text,truncation:piTruncation(toolResult),entryLimitReached:resultLimitReached(toolResult)})}})}function buildPiLsError(error){return create(PiLsExecResultSchema,{result:{case:"error",value:create(PiLsExecErrorSchema,{error})}})}function buildMcpStateResult(tools,serverIdentifiers){let byProvider=new Map;for(let tool of tools){let identifier=tool.providerIdentifier,existing=byProvider.get(identifier);existing?existing.push(tool):byProvider.set(identifier,[tool])}let wanted=serverIdentifiers.length>0?new Set(serverIdentifiers):void 0,servers=[];for(let[identifier,serverTools]of byProvider)wanted&&!wanted.has(identifier)||servers.push(create(McpStateServerSchema,{serverName:identifier,serverIdentifier:identifier,tools:serverTools,status:"connected"}));return create(McpStateExecResultSchema,{result:{case:"success",value:create(McpStateSuccessSchema,{servers})}})}function buildNeutralHookResult(request){let response;switch(request?.request.case){case"preCompact":response=create(ExecuteHookResponseSchema,{response:{case:"preCompact",value:create(PreCompactRequestResponseSchema,{})}});break;case"subagentStart":response=create(ExecuteHookResponseSchema,{response:{case:"subagentStart",value:create(SubagentStartRequestResponseSchema,{})}});break;case"subagentStop":response=create(ExecuteHookResponseSchema,{response:{case:"subagentStop",value:create(SubagentStopRequestResponseSchema,{})}});break;case"preToolUse":response=create(ExecuteHookResponseSchema,{response:{case:"preToolUse",value:create(PreToolUseRequestResponseSchema,{})}});break;case"postToolUse":response=create(ExecuteHookResponseSchema,{response:{case:"postToolUse",value:create(PostToolUseRequestResponseSchema,{})}});break;case"postToolUseFailure":response=create(ExecuteHookResponseSchema,{response:{case:"postToolUseFailure",value:create(PostToolUseFailureRequestResponseSchema,{})}});break;case"beforeSubmitPrompt":response=create(ExecuteHookResponseSchema,{response:{case:"beforeSubmitPrompt",value:create(BeforeSubmitPromptRequestResponseSchema,{})}});break;case"afterAgentResponse":response=create(ExecuteHookResponseSchema,{response:{case:"afterAgentResponse",value:create(AfterAgentResponseRequestResponseSchema,{})}});break;case"afterAgentThought":response=create(ExecuteHookResponseSchema,{response:{case:"afterAgentThought",value:create(AfterAgentThoughtRequestResponseSchema,{})}});break;case"stop":response=create(ExecuteHookResponseSchema,{response:{case:"stop",value:create(StopRequestResponseSchema,{})}});break;default:return null}return create(ExecuteHookResultSchema,{response})}function piReadArgs(path,offset,limit){return limit!==void 0&&Math.floor(limit)<=0?null:{path,offset:offset!==void 0?Math.max(1,Math.floor(offset)):void 0,limit:limit!==void 0?Math.floor(limit):void 0}}function piLsPath(basePath){return basePath||"."}function piLimit(limit){return limit===void 0?void 0:Math.max(1,Math.floor(limit))}function piTimeout(timeout){return timeout!==void 0&&timeout>=0?timeout:void 0}function composeShellCommand(command,workingDirectory){return workingDirectory?`cd ${`'${workingDirectory.replace(/'/g,"'\\''")}'`} && { ${command}
28
- }`:command}function omitUndefinedArgs(args){let out={};for(let key of Object.keys(args)){let value=args[key];value!==void 0&&(out[key]=value)}return out}var cursor_variant_aliases_default={$schema:"cursor-variant-aliases/v1",source:"union of GetUsableModels live capture (204 ids) and cursor-agent CLI listing capture (203 ids), 2026-08-18",aliases:{"claude-4-sonnet":{targetId:"claude-4-sonnet",legacyVariantId:"claude-4-sonnet",encoding:"legacy-variant"},"claude-4-sonnet-thinking":{targetId:"claude-4-sonnet-thinking",legacyVariantId:"claude-4-sonnet-thinking",encoding:"legacy-variant"},"claude-4.5-opus-high":{targetId:"claude-4.5-opus",level:"high",legacyVariantId:"claude-4.5-opus-high",encoding:"legacy-variant"},"claude-4.5-opus-high-thinking":{targetId:"claude-4.5-opus-thinking",level:"high",legacyVariantId:"claude-4.5-opus-high-thinking",encoding:"legacy-variant"},"claude-4.5-sonnet":{targetId:"claude-4.5-sonnet",legacyVariantId:"claude-4.5-sonnet",encoding:"legacy-variant"},"claude-4.5-sonnet-thinking":{targetId:"claude-4.5-sonnet-thinking",legacyVariantId:"claude-4.5-sonnet-thinking",encoding:"legacy-variant"},"claude-4.6-opus-high":{targetId:"claude-4.6-opus",level:"high",legacyVariantId:"claude-4.6-opus-high",encoding:"legacy-variant"},"claude-4.6-opus-max":{targetId:"claude-4.6-opus",level:"max",legacyVariantId:"claude-4.6-opus-max",encoding:"legacy-variant"},"claude-4.6-opus-high-thinking":{targetId:"claude-4.6-opus-thinking",level:"high",legacyVariantId:"claude-4.6-opus-high-thinking",encoding:"legacy-variant"},"claude-4.6-opus-max-thinking":{targetId:"claude-4.6-opus-thinking",level:"max",legacyVariantId:"claude-4.6-opus-max-thinking",encoding:"legacy-variant"},"claude-4.6-sonnet-medium":{targetId:"claude-4.6-sonnet",level:"medium",legacyVariantId:"claude-4.6-sonnet-medium",encoding:"legacy-variant"},"claude-4.6-sonnet-medium-thinking":{targetId:"claude-4.6-sonnet-thinking",level:"medium",legacyVariantId:"claude-4.6-sonnet-medium-thinking",encoding:"legacy-variant"},"claude-fable-5-high":{targetId:"claude-fable-5",level:"high",legacyVariantId:"claude-fable-5-high",encoding:"legacy-variant"},"claude-fable-5-low":{targetId:"claude-fable-5",level:"low",legacyVariantId:"claude-fable-5-low",encoding:"legacy-variant"},"claude-fable-5-max":{targetId:"claude-fable-5",level:"max",legacyVariantId:"claude-fable-5-max",encoding:"legacy-variant"},"claude-fable-5-medium":{targetId:"claude-fable-5",level:"medium",legacyVariantId:"claude-fable-5-medium",encoding:"legacy-variant"},"claude-fable-5-xhigh":{targetId:"claude-fable-5",level:"xhigh",legacyVariantId:"claude-fable-5-xhigh",encoding:"legacy-variant"},"claude-fable-5-thinking-high":{targetId:"claude-fable-5-thinking",level:"high",legacyVariantId:"claude-fable-5-thinking-high",encoding:"legacy-variant"},"claude-fable-5-thinking-low":{targetId:"claude-fable-5-thinking",level:"low",legacyVariantId:"claude-fable-5-thinking-low",encoding:"legacy-variant"},"claude-fable-5-thinking-max":{targetId:"claude-fable-5-thinking",level:"max",legacyVariantId:"claude-fable-5-thinking-max",encoding:"legacy-variant"},"claude-fable-5-thinking-medium":{targetId:"claude-fable-5-thinking",level:"medium",legacyVariantId:"claude-fable-5-thinking-medium",encoding:"legacy-variant"},"claude-fable-5-thinking-xhigh":{targetId:"claude-fable-5-thinking",level:"xhigh",legacyVariantId:"claude-fable-5-thinking-xhigh",encoding:"legacy-variant"},"claude-opus-4-7-high":{targetId:"claude-opus-4-7",level:"high",legacyVariantId:"claude-opus-4-7-high",encoding:"legacy-variant"},"claude-opus-4-7-low":{targetId:"claude-opus-4-7",level:"low",legacyVariantId:"claude-opus-4-7-low",encoding:"legacy-variant"},"claude-opus-4-7-max":{targetId:"claude-opus-4-7",level:"max",legacyVariantId:"claude-opus-4-7-max",encoding:"legacy-variant"},"claude-opus-4-7-medium":{targetId:"claude-opus-4-7",level:"medium",legacyVariantId:"claude-opus-4-7-medium",encoding:"legacy-variant"},"claude-opus-4-7-xhigh":{targetId:"claude-opus-4-7",level:"xhigh",legacyVariantId:"claude-opus-4-7-xhigh",encoding:"legacy-variant"},"claude-opus-4-7-high-fast":{targetId:"claude-opus-4-7-high-fast",legacyVariantId:"claude-opus-4-7-high-fast",encoding:"legacy-variant"},"claude-opus-4-7-low-fast":{targetId:"claude-opus-4-7-low-fast",legacyVariantId:"claude-opus-4-7-low-fast",encoding:"legacy-variant"},"claude-opus-4-7-max-fast":{targetId:"claude-opus-4-7-max-fast",legacyVariantId:"claude-opus-4-7-max-fast",encoding:"legacy-variant"},"claude-opus-4-7-medium-fast":{targetId:"claude-opus-4-7-medium-fast",legacyVariantId:"claude-opus-4-7-medium-fast",encoding:"legacy-variant"},"claude-opus-4-7-xhigh-fast":{targetId:"claude-opus-4-7-xhigh-fast",legacyVariantId:"claude-opus-4-7-xhigh-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-high":{targetId:"claude-opus-4-7-thinking",level:"high",legacyVariantId:"claude-opus-4-7-thinking-high",encoding:"legacy-variant"},"claude-opus-4-7-thinking-low":{targetId:"claude-opus-4-7-thinking",level:"low",legacyVariantId:"claude-opus-4-7-thinking-low",encoding:"legacy-variant"},"claude-opus-4-7-thinking-max":{targetId:"claude-opus-4-7-thinking",level:"max",legacyVariantId:"claude-opus-4-7-thinking-max",encoding:"legacy-variant"},"claude-opus-4-7-thinking-medium":{targetId:"claude-opus-4-7-thinking",level:"medium",legacyVariantId:"claude-opus-4-7-thinking-medium",encoding:"legacy-variant"},"claude-opus-4-7-thinking-xhigh":{targetId:"claude-opus-4-7-thinking",level:"xhigh",legacyVariantId:"claude-opus-4-7-thinking-xhigh",encoding:"legacy-variant"},"claude-opus-4-7-thinking-high-fast":{targetId:"claude-opus-4-7-thinking-high-fast",legacyVariantId:"claude-opus-4-7-thinking-high-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-low-fast":{targetId:"claude-opus-4-7-thinking-low-fast",legacyVariantId:"claude-opus-4-7-thinking-low-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-max-fast":{targetId:"claude-opus-4-7-thinking-max-fast",legacyVariantId:"claude-opus-4-7-thinking-max-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-medium-fast":{targetId:"claude-opus-4-7-thinking-medium-fast",legacyVariantId:"claude-opus-4-7-thinking-medium-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-xhigh-fast":{targetId:"claude-opus-4-7-thinking-xhigh-fast",legacyVariantId:"claude-opus-4-7-thinking-xhigh-fast",encoding:"legacy-variant"},"claude-opus-4-8-high":{targetId:"claude-opus-4-8",level:"high",legacyVariantId:"claude-opus-4-8-high",encoding:"legacy-variant"},"claude-opus-4-8-low":{targetId:"claude-opus-4-8",level:"low",legacyVariantId:"claude-opus-4-8-low",encoding:"legacy-variant"},"claude-opus-4-8-max":{targetId:"claude-opus-4-8",level:"max",legacyVariantId:"claude-opus-4-8-max",encoding:"legacy-variant"},"claude-opus-4-8-medium":{targetId:"claude-opus-4-8",level:"medium",legacyVariantId:"claude-opus-4-8-medium",encoding:"legacy-variant"},"claude-opus-4-8-xhigh":{targetId:"claude-opus-4-8",level:"xhigh",legacyVariantId:"claude-opus-4-8-xhigh",encoding:"legacy-variant"},"claude-opus-4-8-high-fast":{targetId:"claude-opus-4-8-high-fast",legacyVariantId:"claude-opus-4-8-high-fast",encoding:"legacy-variant"},"claude-opus-4-8-low-fast":{targetId:"claude-opus-4-8-low-fast",legacyVariantId:"claude-opus-4-8-low-fast",encoding:"legacy-variant"},"claude-opus-4-8-max-fast":{targetId:"claude-opus-4-8-max-fast",legacyVariantId:"claude-opus-4-8-max-fast",encoding:"legacy-variant"},"claude-opus-4-8-medium-fast":{targetId:"claude-opus-4-8-medium-fast",legacyVariantId:"claude-opus-4-8-medium-fast",encoding:"legacy-variant"},"claude-opus-4-8-xhigh-fast":{targetId:"claude-opus-4-8-xhigh-fast",legacyVariantId:"claude-opus-4-8-xhigh-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-high":{targetId:"claude-opus-4-8-thinking",level:"high",legacyVariantId:"claude-opus-4-8-thinking-high",encoding:"legacy-variant"},"claude-opus-4-8-thinking-low":{targetId:"claude-opus-4-8-thinking",level:"low",legacyVariantId:"claude-opus-4-8-thinking-low",encoding:"legacy-variant"},"claude-opus-4-8-thinking-max":{targetId:"claude-opus-4-8-thinking",level:"max",legacyVariantId:"claude-opus-4-8-thinking-max",encoding:"legacy-variant"},"claude-opus-4-8-thinking-medium":{targetId:"claude-opus-4-8-thinking",level:"medium",legacyVariantId:"claude-opus-4-8-thinking-medium",encoding:"legacy-variant"},"claude-opus-4-8-thinking-xhigh":{targetId:"claude-opus-4-8-thinking",level:"xhigh",legacyVariantId:"claude-opus-4-8-thinking-xhigh",encoding:"legacy-variant"},"claude-opus-4-8-thinking-high-fast":{targetId:"claude-opus-4-8-thinking-high-fast",legacyVariantId:"claude-opus-4-8-thinking-high-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-low-fast":{targetId:"claude-opus-4-8-thinking-low-fast",legacyVariantId:"claude-opus-4-8-thinking-low-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-max-fast":{targetId:"claude-opus-4-8-thinking-max-fast",legacyVariantId:"claude-opus-4-8-thinking-max-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-medium-fast":{targetId:"claude-opus-4-8-thinking-medium-fast",legacyVariantId:"claude-opus-4-8-thinking-medium-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-xhigh-fast":{targetId:"claude-opus-4-8-thinking-xhigh-fast",legacyVariantId:"claude-opus-4-8-thinking-xhigh-fast",encoding:"legacy-variant"},"claude-opus-5-high":{targetId:"claude-opus-5",level:"high",legacyVariantId:"claude-opus-5-high",encoding:"legacy-variant"},"claude-opus-5-low":{targetId:"claude-opus-5",level:"low",legacyVariantId:"claude-opus-5-low",encoding:"legacy-variant"},"claude-opus-5-medium":{targetId:"claude-opus-5",level:"medium",legacyVariantId:"claude-opus-5-medium",encoding:"legacy-variant"},"claude-opus-5-max":{targetId:"claude-opus-5",level:"max",legacyVariantId:"claude-opus-5-max",encoding:"legacy-variant"},"claude-opus-5-high-fast":{targetId:"claude-opus-5-high-fast",legacyVariantId:"claude-opus-5-high-fast",encoding:"legacy-variant"},"claude-opus-5-low-fast":{targetId:"claude-opus-5-low-fast",legacyVariantId:"claude-opus-5-low-fast",encoding:"legacy-variant"},"claude-opus-5-medium-fast":{targetId:"claude-opus-5-medium-fast",legacyVariantId:"claude-opus-5-medium-fast",encoding:"legacy-variant"},"claude-opus-5-max-fast":{targetId:"claude-opus-5-max-fast",legacyVariantId:"claude-opus-5-max-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-high":{targetId:"claude-opus-5-thinking",level:"high",legacyVariantId:"claude-opus-5-thinking-high",encoding:"legacy-variant"},"claude-opus-5-thinking-low":{targetId:"claude-opus-5-thinking",level:"low",legacyVariantId:"claude-opus-5-thinking-low",encoding:"legacy-variant"},"claude-opus-5-thinking-max":{targetId:"claude-opus-5-thinking",level:"max",legacyVariantId:"claude-opus-5-thinking-max",encoding:"legacy-variant"},"claude-opus-5-thinking-medium":{targetId:"claude-opus-5-thinking",level:"medium",legacyVariantId:"claude-opus-5-thinking-medium",encoding:"legacy-variant"},"claude-opus-5-thinking-xhigh":{targetId:"claude-opus-5-thinking",level:"xhigh",legacyVariantId:"claude-opus-5-thinking-xhigh",encoding:"legacy-variant"},"claude-opus-5-thinking-high-fast":{targetId:"claude-opus-5-thinking-high-fast",legacyVariantId:"claude-opus-5-thinking-high-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-low-fast":{targetId:"claude-opus-5-thinking-low-fast",legacyVariantId:"claude-opus-5-thinking-low-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-max-fast":{targetId:"claude-opus-5-thinking-max-fast",legacyVariantId:"claude-opus-5-thinking-max-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-medium-fast":{targetId:"claude-opus-5-thinking-medium-fast",legacyVariantId:"claude-opus-5-thinking-medium-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-xhigh-fast":{targetId:"claude-opus-5-thinking-xhigh-fast",legacyVariantId:"claude-opus-5-thinking-xhigh-fast",encoding:"legacy-variant"},"claude-sonnet-5-high":{targetId:"claude-sonnet-5",level:"high",legacyVariantId:"claude-sonnet-5-high",encoding:"legacy-variant"},"claude-sonnet-5-low":{targetId:"claude-sonnet-5",level:"low",legacyVariantId:"claude-sonnet-5-low",encoding:"legacy-variant"},"claude-sonnet-5-max":{targetId:"claude-sonnet-5",level:"max",legacyVariantId:"claude-sonnet-5-max",encoding:"legacy-variant"},"claude-sonnet-5-medium":{targetId:"claude-sonnet-5",level:"medium",legacyVariantId:"claude-sonnet-5-medium",encoding:"legacy-variant"},"claude-sonnet-5-xhigh":{targetId:"claude-sonnet-5",level:"xhigh",legacyVariantId:"claude-sonnet-5-xhigh",encoding:"legacy-variant"},"claude-sonnet-5-thinking-high":{targetId:"claude-sonnet-5-thinking",level:"high",legacyVariantId:"claude-sonnet-5-thinking-high",encoding:"legacy-variant"},"claude-sonnet-5-thinking-low":{targetId:"claude-sonnet-5-thinking",level:"low",legacyVariantId:"claude-sonnet-5-thinking-low",encoding:"legacy-variant"},"claude-sonnet-5-thinking-max":{targetId:"claude-sonnet-5-thinking",level:"max",legacyVariantId:"claude-sonnet-5-thinking-max",encoding:"legacy-variant"},"claude-sonnet-5-thinking-medium":{targetId:"claude-sonnet-5-thinking",level:"medium",legacyVariantId:"claude-sonnet-5-thinking-medium",encoding:"legacy-variant"},"claude-sonnet-5-thinking-xhigh":{targetId:"claude-sonnet-5-thinking",level:"xhigh",legacyVariantId:"claude-sonnet-5-thinking-xhigh",encoding:"legacy-variant"},"composer-2.5":{targetId:"composer-2.5",legacyVariantId:"composer-2.5",encoding:"legacy-variant"},"composer-2.5-fast":{targetId:"composer-2.5-fast",legacyVariantId:"composer-2.5-fast",encoding:"legacy-variant"},"cursor-grok-4.5-high":{targetId:"cursor-grok-4.5",level:"high",legacyVariantId:"cursor-grok-4.5-high",encoding:"legacy-variant"},"cursor-grok-4.5-low":{targetId:"cursor-grok-4.5",level:"low",legacyVariantId:"cursor-grok-4.5-low",encoding:"legacy-variant"},"cursor-grok-4.5-medium":{targetId:"cursor-grok-4.5",level:"medium",legacyVariantId:"cursor-grok-4.5-medium",encoding:"legacy-variant"},"cursor-grok-4.5-max":{targetId:"cursor-grok-4.5",level:"max",legacyVariantId:"cursor-grok-4.5-max",encoding:"legacy-variant"},"cursor-grok-4.5-thinking-low":{targetId:"cursor-grok-4.5",level:"low",legacyVariantId:"cursor-grok-4.5-thinking-low",encoding:"legacy-variant"},"cursor-grok-4.5-thinking-medium":{targetId:"cursor-grok-4.5",level:"medium",legacyVariantId:"cursor-grok-4.5-thinking-medium",encoding:"legacy-variant"},"cursor-grok-4.5-thinking-max":{targetId:"cursor-grok-4.5",level:"max",legacyVariantId:"cursor-grok-4.5-thinking-max",encoding:"legacy-variant"},"cursor-grok-4.5-high-fast":{targetId:"cursor-grok-4.5-high-fast",legacyVariantId:"cursor-grok-4.5-high-fast",encoding:"legacy-variant"},"cursor-grok-4.5-low-fast":{targetId:"cursor-grok-4.5-low-fast",legacyVariantId:"cursor-grok-4.5-low-fast",encoding:"legacy-variant"},"cursor-grok-4.5-medium-fast":{targetId:"cursor-grok-4.5-medium-fast",legacyVariantId:"cursor-grok-4.5-medium-fast",encoding:"legacy-variant"},"cursor-grok-4.5-max-fast":{targetId:"cursor-grok-4.5-max-fast",legacyVariantId:"cursor-grok-4.5-max-fast",encoding:"legacy-variant"},"cursor-grok-4.6-high":{targetId:"cursor-grok-4.6",level:"high",legacyVariantId:"cursor-grok-4.6-high",encoding:"legacy-variant"},"cursor-grok-4.6-low":{targetId:"cursor-grok-4.6",level:"low",legacyVariantId:"cursor-grok-4.6-low",encoding:"legacy-variant"},"cursor-grok-4.6-medium":{targetId:"cursor-grok-4.6",level:"medium",legacyVariantId:"cursor-grok-4.6-medium",encoding:"legacy-variant"},"cursor-grok-4.6-xhigh":{targetId:"cursor-grok-4.6",level:"xhigh",legacyVariantId:"cursor-grok-4.6-xhigh",encoding:"legacy-variant"},"cursor-grok-4.6-max":{targetId:"cursor-grok-4.6",level:"max",legacyVariantId:"cursor-grok-4.6-max",encoding:"legacy-variant"},"cursor-grok-4.6-thinking-low":{targetId:"cursor-grok-4.6",level:"low",legacyVariantId:"cursor-grok-4.6-thinking-low",encoding:"legacy-variant"},"cursor-grok-4.6-thinking-medium":{targetId:"cursor-grok-4.6",level:"medium",legacyVariantId:"cursor-grok-4.6-thinking-medium",encoding:"legacy-variant"},"cursor-grok-4.6-thinking-max":{targetId:"cursor-grok-4.6",level:"max",legacyVariantId:"cursor-grok-4.6-thinking-max",encoding:"legacy-variant"},"cursor-grok-4.6-high-fast":{targetId:"cursor-grok-4.6-high-fast",legacyVariantId:"cursor-grok-4.6-high-fast",encoding:"legacy-variant"},"cursor-grok-4.6-low-fast":{targetId:"cursor-grok-4.6-low-fast",legacyVariantId:"cursor-grok-4.6-low-fast",encoding:"legacy-variant"},"cursor-grok-4.6-medium-fast":{targetId:"cursor-grok-4.6-medium-fast",legacyVariantId:"cursor-grok-4.6-medium-fast",encoding:"legacy-variant"},"cursor-grok-4.6-xhigh-fast":{targetId:"cursor-grok-4.6-xhigh-fast",legacyVariantId:"cursor-grok-4.6-xhigh-fast",encoding:"legacy-variant"},"cursor-grok-4.6-max-fast":{targetId:"cursor-grok-4.6-max-fast",legacyVariantId:"cursor-grok-4.6-max-fast",encoding:"legacy-variant"},default:{targetId:"default",legacyVariantId:"default",encoding:"legacy-variant"},"gemini-3-flash":{targetId:"gemini-3-flash",legacyVariantId:"gemini-3-flash",encoding:"legacy-variant"},"gemini-3.1-pro":{targetId:"gemini-3.1-pro",legacyVariantId:"gemini-3.1-pro",encoding:"legacy-variant"},"gemini-3.5-flash":{targetId:"gemini-3.5-flash",legacyVariantId:"gemini-3.5-flash",encoding:"legacy-variant"},"gemini-3.6-flash-high":{targetId:"gemini-3.6-flash",level:"high",legacyVariantId:"gemini-3.6-flash-high",encoding:"legacy-variant"},"gemini-3.6-flash-low":{targetId:"gemini-3.6-flash",level:"low",legacyVariantId:"gemini-3.6-flash-low",encoding:"legacy-variant"},"gemini-3.6-flash-medium":{targetId:"gemini-3.6-flash",level:"medium",legacyVariantId:"gemini-3.6-flash-medium",encoding:"legacy-variant"},"gemini-3.6-flash-minimal":{targetId:"gemini-3.6-flash",level:"minimal",legacyVariantId:"gemini-3.6-flash-minimal",encoding:"legacy-variant"},"gemini-3.7-flash-high":{targetId:"gemini-3.7-flash",level:"high",legacyVariantId:"gemini-3.7-flash-high",encoding:"legacy-variant"},"gemini-3.7-flash-low":{targetId:"gemini-3.7-flash",level:"low",legacyVariantId:"gemini-3.7-flash-low",encoding:"legacy-variant"},"gemini-3.7-flash-medium":{targetId:"gemini-3.7-flash",level:"medium",legacyVariantId:"gemini-3.7-flash-medium",encoding:"legacy-variant"},"gemini-3.7-flash-max":{targetId:"gemini-3.7-flash",level:"max",legacyVariantId:"gemini-3.7-flash-max",encoding:"legacy-variant"},"gemini-3.7-flash-thinking-low":{targetId:"gemini-3.7-flash",level:"low",legacyVariantId:"gemini-3.7-flash-thinking-low",encoding:"legacy-variant"},"gemini-3.7-flash-thinking-medium":{targetId:"gemini-3.7-flash",level:"medium",legacyVariantId:"gemini-3.7-flash-thinking-medium",encoding:"legacy-variant"},"gemini-3.7-flash-thinking-max":{targetId:"gemini-3.7-flash",level:"max",legacyVariantId:"gemini-3.7-flash-thinking-max",encoding:"legacy-variant"},"glm-5.2-high":{targetId:"glm-5.2",level:"high",legacyVariantId:"glm-5.2-high",encoding:"legacy-variant"},"glm-5.2-max":{targetId:"glm-5.2",level:"max",legacyVariantId:"glm-5.2-max",encoding:"legacy-variant"},"gpt-5-mini":{targetId:"gpt-5-mini",legacyVariantId:"gpt-5-mini",encoding:"legacy-variant"},"gpt-5.1":{targetId:"gpt-5.1",legacyVariantId:"gpt-5.1",encoding:"legacy-variant"},"gpt-5.1-high":{targetId:"gpt-5.1",level:"high",legacyVariantId:"gpt-5.1-high",encoding:"legacy-variant"},"gpt-5.1-low":{targetId:"gpt-5.1",level:"low",legacyVariantId:"gpt-5.1-low",encoding:"legacy-variant"},"gpt-5.2":{targetId:"gpt-5.2",legacyVariantId:"gpt-5.2",encoding:"legacy-variant"},"gpt-5.2-high":{targetId:"gpt-5.2",level:"high",legacyVariantId:"gpt-5.2-high",encoding:"legacy-variant"},"gpt-5.2-low":{targetId:"gpt-5.2",level:"low",legacyVariantId:"gpt-5.2-low",encoding:"legacy-variant"},"gpt-5.2-xhigh":{targetId:"gpt-5.2",level:"xhigh",legacyVariantId:"gpt-5.2-xhigh",encoding:"legacy-variant"},"gpt-5.2-medium":{targetId:"gpt-5.2",level:"medium",legacyVariantId:"gpt-5.2-medium",encoding:"legacy-variant"},"gpt-5.2-max":{targetId:"gpt-5.2",level:"max",legacyVariantId:"gpt-5.2-max",encoding:"legacy-variant"},"gpt-5.2-thinking-low":{targetId:"gpt-5.2",level:"low",legacyVariantId:"gpt-5.2-thinking-low",encoding:"legacy-variant"},"gpt-5.2-thinking-medium":{targetId:"gpt-5.2",level:"medium",legacyVariantId:"gpt-5.2-thinking-medium",encoding:"legacy-variant"},"gpt-5.2-thinking-max":{targetId:"gpt-5.2",level:"max",legacyVariantId:"gpt-5.2-thinking-max",encoding:"legacy-variant"},"gpt-5.2-fast":{targetId:"gpt-5.2-fast",legacyVariantId:"gpt-5.2-fast",encoding:"legacy-variant"},"gpt-5.2-high-fast":{targetId:"gpt-5.2-high-fast",legacyVariantId:"gpt-5.2-high-fast",encoding:"legacy-variant"},"gpt-5.2-low-fast":{targetId:"gpt-5.2-low-fast",legacyVariantId:"gpt-5.2-low-fast",encoding:"legacy-variant"},"gpt-5.2-xhigh-fast":{targetId:"gpt-5.2-xhigh-fast",legacyVariantId:"gpt-5.2-xhigh-fast",encoding:"legacy-variant"},"gpt-5.2-medium-fast":{targetId:"gpt-5.2-medium-fast",legacyVariantId:"gpt-5.2-medium-fast",encoding:"legacy-variant"},"gpt-5.2-max-fast":{targetId:"gpt-5.2-max-fast",legacyVariantId:"gpt-5.2-max-fast",encoding:"legacy-variant"},"gpt-5.3-codex":{targetId:"gpt-5.3-codex",legacyVariantId:"gpt-5.3-codex",encoding:"legacy-variant"},"gpt-5.3-codex-high":{targetId:"gpt-5.3-codex",level:"high",legacyVariantId:"gpt-5.3-codex-high",encoding:"legacy-variant"},"gpt-5.3-codex-low":{targetId:"gpt-5.3-codex",level:"low",legacyVariantId:"gpt-5.3-codex-low",encoding:"legacy-variant"},"gpt-5.3-codex-xhigh":{targetId:"gpt-5.3-codex",level:"xhigh",legacyVariantId:"gpt-5.3-codex-xhigh",encoding:"legacy-variant"},"gpt-5.3-codex-medium":{targetId:"gpt-5.3-codex",level:"medium",legacyVariantId:"gpt-5.3-codex-medium",encoding:"legacy-variant"},"gpt-5.3-codex-max":{targetId:"gpt-5.3-codex",level:"max",legacyVariantId:"gpt-5.3-codex-max",encoding:"legacy-variant"},"gpt-5.3-codex-thinking-low":{targetId:"gpt-5.3-codex",level:"low",legacyVariantId:"gpt-5.3-codex-thinking-low",encoding:"legacy-variant"},"gpt-5.3-codex-thinking-medium":{targetId:"gpt-5.3-codex",level:"medium",legacyVariantId:"gpt-5.3-codex-thinking-medium",encoding:"legacy-variant"},"gpt-5.3-codex-thinking-max":{targetId:"gpt-5.3-codex",level:"max",legacyVariantId:"gpt-5.3-codex-thinking-max",encoding:"legacy-variant"},"gpt-5.3-codex-fast":{targetId:"gpt-5.3-codex-fast",legacyVariantId:"gpt-5.3-codex-fast",encoding:"legacy-variant"},"gpt-5.3-codex-high-fast":{targetId:"gpt-5.3-codex-high-fast",legacyVariantId:"gpt-5.3-codex-high-fast",encoding:"legacy-variant"},"gpt-5.3-codex-low-fast":{targetId:"gpt-5.3-codex-low-fast",legacyVariantId:"gpt-5.3-codex-low-fast",encoding:"legacy-variant"},"gpt-5.3-codex-xhigh-fast":{targetId:"gpt-5.3-codex-xhigh-fast",legacyVariantId:"gpt-5.3-codex-xhigh-fast",encoding:"legacy-variant"},"gpt-5.3-codex-medium-fast":{targetId:"gpt-5.3-codex-medium-fast",legacyVariantId:"gpt-5.3-codex-medium-fast",encoding:"legacy-variant"},"gpt-5.3-codex-max-fast":{targetId:"gpt-5.3-codex-max-fast",legacyVariantId:"gpt-5.3-codex-max-fast",encoding:"legacy-variant"},"gpt-5.4-high":{targetId:"gpt-5.4",level:"high",legacyVariantId:"gpt-5.4-high",encoding:"legacy-variant"},"gpt-5.4-low":{targetId:"gpt-5.4",level:"low",legacyVariantId:"gpt-5.4-low",encoding:"legacy-variant"},"gpt-5.4-medium":{targetId:"gpt-5.4",level:"medium",legacyVariantId:"gpt-5.4-medium",encoding:"legacy-variant"},"gpt-5.4-xhigh":{targetId:"gpt-5.4",level:"xhigh",legacyVariantId:"gpt-5.4-xhigh",encoding:"legacy-variant"},"gpt-5.4-high-fast":{targetId:"gpt-5.4-high-fast",legacyVariantId:"gpt-5.4-high-fast",encoding:"legacy-variant"},"gpt-5.4-medium-fast":{targetId:"gpt-5.4-medium-fast",legacyVariantId:"gpt-5.4-medium-fast",encoding:"legacy-variant"},"gpt-5.4-xhigh-fast":{targetId:"gpt-5.4-xhigh-fast",legacyVariantId:"gpt-5.4-xhigh-fast",encoding:"legacy-variant"},"gpt-5.4-mini-high":{targetId:"gpt-5.4-mini",level:"high",legacyVariantId:"gpt-5.4-mini-high",encoding:"legacy-variant"},"gpt-5.4-mini-low":{targetId:"gpt-5.4-mini",level:"low",legacyVariantId:"gpt-5.4-mini-low",encoding:"legacy-variant"},"gpt-5.4-mini-medium":{targetId:"gpt-5.4-mini",level:"medium",legacyVariantId:"gpt-5.4-mini-medium",encoding:"legacy-variant"},"gpt-5.4-mini-none":{targetId:"gpt-5.4-mini",level:"off",legacyVariantId:"gpt-5.4-mini-none",encoding:"legacy-variant"},"gpt-5.4-mini-xhigh":{targetId:"gpt-5.4-mini",level:"xhigh",legacyVariantId:"gpt-5.4-mini-xhigh",encoding:"legacy-variant"},"gpt-5.4-nano-high":{targetId:"gpt-5.4-nano",level:"high",legacyVariantId:"gpt-5.4-nano-high",encoding:"legacy-variant"},"gpt-5.4-nano-low":{targetId:"gpt-5.4-nano",level:"low",legacyVariantId:"gpt-5.4-nano-low",encoding:"legacy-variant"},"gpt-5.4-nano-medium":{targetId:"gpt-5.4-nano",level:"medium",legacyVariantId:"gpt-5.4-nano-medium",encoding:"legacy-variant"},"gpt-5.4-nano-none":{targetId:"gpt-5.4-nano",level:"off",legacyVariantId:"gpt-5.4-nano-none",encoding:"legacy-variant"},"gpt-5.4-nano-xhigh":{targetId:"gpt-5.4-nano",level:"xhigh",legacyVariantId:"gpt-5.4-nano-xhigh",encoding:"legacy-variant"},"gpt-5.5-extra-high":{targetId:"gpt-5.5",level:"extra-high",legacyVariantId:"gpt-5.5-extra-high",encoding:"legacy-variant"},"gpt-5.5-high":{targetId:"gpt-5.5",level:"high",legacyVariantId:"gpt-5.5-high",encoding:"legacy-variant"},"gpt-5.5-low":{targetId:"gpt-5.5",level:"low",legacyVariantId:"gpt-5.5-low",encoding:"legacy-variant"},"gpt-5.5-medium":{targetId:"gpt-5.5",level:"medium",legacyVariantId:"gpt-5.5-medium",encoding:"legacy-variant"},"gpt-5.5-none":{targetId:"gpt-5.5",level:"off",legacyVariantId:"gpt-5.5-none",encoding:"legacy-variant"},"gpt-5.5-max":{targetId:"gpt-5.5",level:"max",legacyVariantId:"gpt-5.5-max",encoding:"legacy-variant"},"gpt-5.5-thinking-low":{targetId:"gpt-5.5",level:"low",legacyVariantId:"gpt-5.5-thinking-low",encoding:"legacy-variant"},"gpt-5.5-thinking-medium":{targetId:"gpt-5.5",level:"medium",legacyVariantId:"gpt-5.5-thinking-medium",encoding:"legacy-variant"},"gpt-5.5-thinking-max":{targetId:"gpt-5.5",level:"max",legacyVariantId:"gpt-5.5-thinking-max",encoding:"legacy-variant"},"gpt-5.5-extra-high-fast":{targetId:"gpt-5.5-extra-high-fast",legacyVariantId:"gpt-5.5-extra-high-fast",encoding:"legacy-variant"},"gpt-5.5-high-fast":{targetId:"gpt-5.5-high-fast",legacyVariantId:"gpt-5.5-high-fast",encoding:"legacy-variant"},"gpt-5.5-low-fast":{targetId:"gpt-5.5-low-fast",legacyVariantId:"gpt-5.5-low-fast",encoding:"legacy-variant"},"gpt-5.5-medium-fast":{targetId:"gpt-5.5-medium-fast",legacyVariantId:"gpt-5.5-medium-fast",encoding:"legacy-variant"},"gpt-5.5-none-fast":{targetId:"gpt-5.5-none-fast",legacyVariantId:"gpt-5.5-none-fast",encoding:"legacy-variant"},"gpt-5.5-max-fast":{targetId:"gpt-5.5-max-fast",legacyVariantId:"gpt-5.5-max-fast",encoding:"legacy-variant"},"gpt-5.6-luna-high":{targetId:"gpt-5.6-luna",level:"high",legacyVariantId:"gpt-5.6-luna-high",encoding:"legacy-variant"},"gpt-5.6-luna-low":{targetId:"gpt-5.6-luna",level:"low",legacyVariantId:"gpt-5.6-luna-low",encoding:"legacy-variant"},"gpt-5.6-luna-max":{targetId:"gpt-5.6-luna",level:"max",legacyVariantId:"gpt-5.6-luna-max",encoding:"legacy-variant"},"gpt-5.6-luna-medium":{targetId:"gpt-5.6-luna",level:"medium",legacyVariantId:"gpt-5.6-luna-medium",encoding:"legacy-variant"},"gpt-5.6-luna-none":{targetId:"gpt-5.6-luna",level:"off",legacyVariantId:"gpt-5.6-luna-none",encoding:"legacy-variant"},"gpt-5.6-luna-xhigh":{targetId:"gpt-5.6-luna",level:"xhigh",legacyVariantId:"gpt-5.6-luna-xhigh",encoding:"legacy-variant"},"gpt-5.6-luna-thinking-low":{targetId:"gpt-5.6-luna",level:"low",legacyVariantId:"gpt-5.6-luna-thinking-low",encoding:"legacy-variant"},"gpt-5.6-luna-thinking-medium":{targetId:"gpt-5.6-luna",level:"medium",legacyVariantId:"gpt-5.6-luna-thinking-medium",encoding:"legacy-variant"},"gpt-5.6-luna-thinking-max":{targetId:"gpt-5.6-luna",level:"max",legacyVariantId:"gpt-5.6-luna-thinking-max",encoding:"legacy-variant"},"gpt-5.6-luna-high-fast":{targetId:"gpt-5.6-luna-high-fast",legacyVariantId:"gpt-5.6-luna-high-fast",encoding:"legacy-variant"},"gpt-5.6-luna-low-fast":{targetId:"gpt-5.6-luna-low-fast",legacyVariantId:"gpt-5.6-luna-low-fast",encoding:"legacy-variant"},"gpt-5.6-luna-max-fast":{targetId:"gpt-5.6-luna-max-fast",legacyVariantId:"gpt-5.6-luna-max-fast",encoding:"legacy-variant"},"gpt-5.6-luna-medium-fast":{targetId:"gpt-5.6-luna-medium-fast",legacyVariantId:"gpt-5.6-luna-medium-fast",encoding:"legacy-variant"},"gpt-5.6-luna-none-fast":{targetId:"gpt-5.6-luna-none-fast",legacyVariantId:"gpt-5.6-luna-none-fast",encoding:"legacy-variant"},"gpt-5.6-luna-xhigh-fast":{targetId:"gpt-5.6-luna-xhigh-fast",legacyVariantId:"gpt-5.6-luna-xhigh-fast",encoding:"legacy-variant"},"gpt-5.6-sol-high":{targetId:"gpt-5.6-sol",level:"high",legacyVariantId:"gpt-5.6-sol-high",encoding:"legacy-variant"},"gpt-5.6-sol-low":{targetId:"gpt-5.6-sol",level:"low",legacyVariantId:"gpt-5.6-sol-low",encoding:"legacy-variant"},"gpt-5.6-sol-max":{targetId:"gpt-5.6-sol",level:"max",legacyVariantId:"gpt-5.6-sol-max",encoding:"legacy-variant"},"gpt-5.6-sol-medium":{targetId:"gpt-5.6-sol",level:"medium",legacyVariantId:"gpt-5.6-sol-medium",encoding:"legacy-variant"},"gpt-5.6-sol-none":{targetId:"gpt-5.6-sol",level:"off",legacyVariantId:"gpt-5.6-sol-none",encoding:"legacy-variant"},"gpt-5.6-sol-xhigh":{targetId:"gpt-5.6-sol",level:"xhigh",legacyVariantId:"gpt-5.6-sol-xhigh",encoding:"legacy-variant"},"gpt-5.6-sol-thinking-low":{targetId:"gpt-5.6-sol",level:"low",legacyVariantId:"gpt-5.6-sol-thinking-low",encoding:"legacy-variant"},"gpt-5.6-sol-thinking-medium":{targetId:"gpt-5.6-sol",level:"medium",legacyVariantId:"gpt-5.6-sol-thinking-medium",encoding:"legacy-variant"},"gpt-5.6-sol-thinking-max":{targetId:"gpt-5.6-sol",level:"max",legacyVariantId:"gpt-5.6-sol-thinking-max",encoding:"legacy-variant"},"gpt-5.6-sol-high-fast":{targetId:"gpt-5.6-sol-high-fast",legacyVariantId:"gpt-5.6-sol-high-fast",encoding:"legacy-variant"},"gpt-5.6-sol-low-fast":{targetId:"gpt-5.6-sol-low-fast",legacyVariantId:"gpt-5.6-sol-low-fast",encoding:"legacy-variant"},"gpt-5.6-sol-max-fast":{targetId:"gpt-5.6-sol-max-fast",legacyVariantId:"gpt-5.6-sol-max-fast",encoding:"legacy-variant"},"gpt-5.6-sol-medium-fast":{targetId:"gpt-5.6-sol-medium-fast",legacyVariantId:"gpt-5.6-sol-medium-fast",encoding:"legacy-variant"},"gpt-5.6-sol-none-fast":{targetId:"gpt-5.6-sol-none-fast",legacyVariantId:"gpt-5.6-sol-none-fast",encoding:"legacy-variant"},"gpt-5.6-sol-xhigh-fast":{targetId:"gpt-5.6-sol-xhigh-fast",legacyVariantId:"gpt-5.6-sol-xhigh-fast",encoding:"legacy-variant"},"gpt-5.6-terra-high":{targetId:"gpt-5.6-terra",level:"high",legacyVariantId:"gpt-5.6-terra-high",encoding:"legacy-variant"},"gpt-5.6-terra-low":{targetId:"gpt-5.6-terra",level:"low",legacyVariantId:"gpt-5.6-terra-low",encoding:"legacy-variant"},"gpt-5.6-terra-max":{targetId:"gpt-5.6-terra",level:"max",legacyVariantId:"gpt-5.6-terra-max",encoding:"legacy-variant"},"gpt-5.6-terra-medium":{targetId:"gpt-5.6-terra",level:"medium",legacyVariantId:"gpt-5.6-terra-medium",encoding:"legacy-variant"},"gpt-5.6-terra-none":{targetId:"gpt-5.6-terra",level:"off",legacyVariantId:"gpt-5.6-terra-none",encoding:"legacy-variant"},"gpt-5.6-terra-xhigh":{targetId:"gpt-5.6-terra",level:"xhigh",legacyVariantId:"gpt-5.6-terra-xhigh",encoding:"legacy-variant"},"gpt-5.6-terra-high-fast":{targetId:"gpt-5.6-terra-high-fast",legacyVariantId:"gpt-5.6-terra-high-fast",encoding:"legacy-variant"},"gpt-5.6-terra-low-fast":{targetId:"gpt-5.6-terra-low-fast",legacyVariantId:"gpt-5.6-terra-low-fast",encoding:"legacy-variant"},"gpt-5.6-terra-max-fast":{targetId:"gpt-5.6-terra-max-fast",legacyVariantId:"gpt-5.6-terra-max-fast",encoding:"legacy-variant"},"gpt-5.6-terra-medium-fast":{targetId:"gpt-5.6-terra-medium-fast",legacyVariantId:"gpt-5.6-terra-medium-fast",encoding:"legacy-variant"},"gpt-5.6-terra-none-fast":{targetId:"gpt-5.6-terra-none-fast",legacyVariantId:"gpt-5.6-terra-none-fast",encoding:"legacy-variant"},"gpt-5.6-terra-xhigh-fast":{targetId:"gpt-5.6-terra-xhigh-fast",legacyVariantId:"gpt-5.6-terra-xhigh-fast",encoding:"legacy-variant"},"kimi-k2.7-code":{targetId:"kimi-k2.7-code",legacyVariantId:"kimi-k2.7-code",encoding:"legacy-variant"},"kimi-k3-high":{targetId:"kimi-k3",level:"high",legacyVariantId:"kimi-k3-high",encoding:"legacy-variant"},"kimi-k3-low":{targetId:"kimi-k3",level:"low",legacyVariantId:"kimi-k3-low",encoding:"legacy-variant"},"kimi-k3-max":{targetId:"kimi-k3",level:"max",legacyVariantId:"kimi-k3-max",encoding:"legacy-variant"},auto:{targetId:"auto",legacyVariantId:"auto",encoding:"legacy-variant"},"claude-fable-5-low-fast":{targetId:"claude-fable-5-low-fast",legacyVariantId:"claude-fable-5-low-fast",encoding:"legacy-variant"},"claude-fable-5-medium-fast":{targetId:"claude-fable-5-medium-fast",legacyVariantId:"claude-fable-5-medium-fast",encoding:"legacy-variant"},"claude-fable-5-max-fast":{targetId:"claude-fable-5-max-fast",legacyVariantId:"claude-fable-5-max-fast",encoding:"legacy-variant"},"claude-sonnet-5-low-fast":{targetId:"claude-sonnet-5-low-fast",legacyVariantId:"claude-sonnet-5-low-fast",encoding:"legacy-variant"},"claude-sonnet-5-medium-fast":{targetId:"claude-sonnet-5-medium-fast",legacyVariantId:"claude-sonnet-5-medium-fast",encoding:"legacy-variant"},"claude-sonnet-5-max-fast":{targetId:"claude-sonnet-5-max-fast",legacyVariantId:"claude-sonnet-5-max-fast",encoding:"legacy-variant"},"claude-sonnet-4-7-low":{targetId:"claude-sonnet-4-7",level:"low",legacyVariantId:"claude-sonnet-4-7-low",encoding:"legacy-variant"},"claude-sonnet-4-7-medium":{targetId:"claude-sonnet-4-7",level:"medium",legacyVariantId:"claude-sonnet-4-7-medium",encoding:"legacy-variant"},"claude-sonnet-4-7-max":{targetId:"claude-sonnet-4-7",level:"max",legacyVariantId:"claude-sonnet-4-7-max",encoding:"legacy-variant"},"claude-sonnet-4-7-low-fast":{targetId:"claude-sonnet-4-7-low-fast",legacyVariantId:"claude-sonnet-4-7-low-fast",encoding:"legacy-variant"},"claude-sonnet-4-7-medium-fast":{targetId:"claude-sonnet-4-7-medium-fast",legacyVariantId:"claude-sonnet-4-7-medium-fast",encoding:"legacy-variant"},"claude-sonnet-4-7-max-fast":{targetId:"claude-sonnet-4-7-max-fast",legacyVariantId:"claude-sonnet-4-7-max-fast",encoding:"legacy-variant"},"claude-sonnet-4-7-thinking-low":{targetId:"claude-sonnet-4-7-thinking",level:"low",legacyVariantId:"claude-sonnet-4-7-thinking-low",encoding:"legacy-variant"},"claude-sonnet-4-7-thinking-medium":{targetId:"claude-sonnet-4-7-thinking",level:"medium",legacyVariantId:"claude-sonnet-4-7-thinking-medium",encoding:"legacy-variant"},"claude-sonnet-4-7-thinking-max":{targetId:"claude-sonnet-4-7-thinking",level:"max",legacyVariantId:"claude-sonnet-4-7-thinking-max",encoding:"legacy-variant"},"claude-mythos-5-low":{targetId:"claude-mythos-5",level:"low",legacyVariantId:"claude-mythos-5-low",encoding:"legacy-variant"},"claude-mythos-5-medium":{targetId:"claude-mythos-5",level:"medium",legacyVariantId:"claude-mythos-5-medium",encoding:"legacy-variant"},"claude-mythos-5-max":{targetId:"claude-mythos-5",level:"max",legacyVariantId:"claude-mythos-5-max",encoding:"legacy-variant"},"claude-mythos-5-low-fast":{targetId:"claude-mythos-5-low-fast",legacyVariantId:"claude-mythos-5-low-fast",encoding:"legacy-variant"},"claude-mythos-5-medium-fast":{targetId:"claude-mythos-5-medium-fast",legacyVariantId:"claude-mythos-5-medium-fast",encoding:"legacy-variant"},"claude-mythos-5-max-fast":{targetId:"claude-mythos-5-max-fast",legacyVariantId:"claude-mythos-5-max-fast",encoding:"legacy-variant"},"claude-mythos-5-thinking-low":{targetId:"claude-mythos-5-thinking",level:"low",legacyVariantId:"claude-mythos-5-thinking-low",encoding:"legacy-variant"},"claude-mythos-5-thinking-medium":{targetId:"claude-mythos-5-thinking",level:"medium",legacyVariantId:"claude-mythos-5-thinking-medium",encoding:"legacy-variant"},"claude-mythos-5-thinking-max":{targetId:"claude-mythos-5-thinking",level:"max",legacyVariantId:"claude-mythos-5-thinking-max",encoding:"legacy-variant"},"gpt-5.4-codex-low":{targetId:"gpt-5.4-codex",level:"low",legacyVariantId:"gpt-5.4-codex-low",encoding:"legacy-variant"},"gpt-5.4-codex-medium":{targetId:"gpt-5.4-codex",level:"medium",legacyVariantId:"gpt-5.4-codex-medium",encoding:"legacy-variant"},"gpt-5.4-codex-max":{targetId:"gpt-5.4-codex",level:"max",legacyVariantId:"gpt-5.4-codex-max",encoding:"legacy-variant"},"gpt-5.4-codex-thinking-low":{targetId:"gpt-5.4-codex",level:"low",legacyVariantId:"gpt-5.4-codex-thinking-low",encoding:"legacy-variant"},"gpt-5.4-codex-thinking-medium":{targetId:"gpt-5.4-codex",level:"medium",legacyVariantId:"gpt-5.4-codex-thinking-medium",encoding:"legacy-variant"},"gpt-5.4-codex-thinking-max":{targetId:"gpt-5.4-codex",level:"max",legacyVariantId:"gpt-5.4-codex-thinking-max",encoding:"legacy-variant"},"gpt-5.4-codex-low-fast":{targetId:"gpt-5.4-codex-low-fast",legacyVariantId:"gpt-5.4-codex-low-fast",encoding:"legacy-variant"},"gpt-5.4-codex-medium-fast":{targetId:"gpt-5.4-codex-medium-fast",legacyVariantId:"gpt-5.4-codex-medium-fast",encoding:"legacy-variant"},"gpt-5.4-codex-max-fast":{targetId:"gpt-5.4-codex-max-fast",legacyVariantId:"gpt-5.4-codex-max-fast",encoding:"legacy-variant"},"gemini-3.7-flash-low-fast":{targetId:"gemini-3.7-flash-low-fast",legacyVariantId:"gemini-3.7-flash-low-fast",encoding:"legacy-variant"},"gemini-3.7-flash-medium-fast":{targetId:"gemini-3.7-flash-medium-fast",legacyVariantId:"gemini-3.7-flash-medium-fast",encoding:"legacy-variant"},"gemini-3.7-flash-max-fast":{targetId:"gemini-3.7-flash-max-fast",legacyVariantId:"gemini-3.7-flash-max-fast",encoding:"legacy-variant"},"gemini-3.7-pro-low":{targetId:"gemini-3.7-pro",level:"low",legacyVariantId:"gemini-3.7-pro-low",encoding:"legacy-variant"},"gemini-3.7-pro-medium":{targetId:"gemini-3.7-pro",level:"medium",legacyVariantId:"gemini-3.7-pro-medium",encoding:"legacy-variant"},"gemini-3.7-pro-max":{targetId:"gemini-3.7-pro",level:"max",legacyVariantId:"gemini-3.7-pro-max",encoding:"legacy-variant"},"gemini-3.7-pro-thinking-low":{targetId:"gemini-3.7-pro",level:"low",legacyVariantId:"gemini-3.7-pro-thinking-low",encoding:"legacy-variant"},"gemini-3.7-pro-thinking-medium":{targetId:"gemini-3.7-pro",level:"medium",legacyVariantId:"gemini-3.7-pro-thinking-medium",encoding:"legacy-variant"},"gemini-3.7-pro-thinking-max":{targetId:"gemini-3.7-pro",level:"max",legacyVariantId:"gemini-3.7-pro-thinking-max",encoding:"legacy-variant"},"gemini-3.7-pro-low-fast":{targetId:"gemini-3.7-pro-low-fast",legacyVariantId:"gemini-3.7-pro-low-fast",encoding:"legacy-variant"},"gemini-3.7-pro-medium-fast":{targetId:"gemini-3.7-pro-medium-fast",legacyVariantId:"gemini-3.7-pro-medium-fast",encoding:"legacy-variant"},"gemini-3.7-pro-max-fast":{targetId:"gemini-3.7-pro-max-fast",legacyVariantId:"gemini-3.7-pro-max-fast",encoding:"legacy-variant"},"gemini-3.6-pro-low":{targetId:"gemini-3.6-pro",level:"low",legacyVariantId:"gemini-3.6-pro-low",encoding:"legacy-variant"},"gemini-3.6-pro-medium":{targetId:"gemini-3.6-pro",level:"medium",legacyVariantId:"gemini-3.6-pro-medium",encoding:"legacy-variant"},"gemini-3.6-pro-max":{targetId:"gemini-3.6-pro",level:"max",legacyVariantId:"gemini-3.6-pro-max",encoding:"legacy-variant"},"gemini-3.6-pro-thinking-low":{targetId:"gemini-3.6-pro",level:"low",legacyVariantId:"gemini-3.6-pro-thinking-low",encoding:"legacy-variant"},"gemini-3.6-pro-thinking-medium":{targetId:"gemini-3.6-pro",level:"medium",legacyVariantId:"gemini-3.6-pro-thinking-medium",encoding:"legacy-variant"},"gemini-3.6-pro-thinking-max":{targetId:"gemini-3.6-pro",level:"max",legacyVariantId:"gemini-3.6-pro-thinking-max",encoding:"legacy-variant"},"gemini-3.6-pro-low-fast":{targetId:"gemini-3.6-pro-low-fast",legacyVariantId:"gemini-3.6-pro-low-fast",encoding:"legacy-variant"},"gemini-3.6-pro-medium-fast":{targetId:"gemini-3.6-pro-medium-fast",legacyVariantId:"gemini-3.6-pro-medium-fast",encoding:"legacy-variant"},"gemini-3.6-pro-max-fast":{targetId:"gemini-3.6-pro-max-fast",legacyVariantId:"gemini-3.6-pro-max-fast",encoding:"legacy-variant"},"gemini-3.5-pro-low":{targetId:"gemini-3.5-pro",level:"low",legacyVariantId:"gemini-3.5-pro-low",encoding:"legacy-variant"},"gemini-3.5-pro-medium":{targetId:"gemini-3.5-pro",level:"medium",legacyVariantId:"gemini-3.5-pro-medium",encoding:"legacy-variant"},"gemini-3.5-pro-max":{targetId:"gemini-3.5-pro",level:"max",legacyVariantId:"gemini-3.5-pro-max",encoding:"legacy-variant"},"gemini-3.5-pro-thinking-low":{targetId:"gemini-3.5-pro",level:"low",legacyVariantId:"gemini-3.5-pro-thinking-low",encoding:"legacy-variant"},"gemini-3.5-pro-thinking-medium":{targetId:"gemini-3.5-pro",level:"medium",legacyVariantId:"gemini-3.5-pro-thinking-medium",encoding:"legacy-variant"},"gemini-3.5-pro-thinking-max":{targetId:"gemini-3.5-pro",level:"max",legacyVariantId:"gemini-3.5-pro-thinking-max",encoding:"legacy-variant"},"gemini-3.5-pro-low-fast":{targetId:"gemini-3.5-pro-low-fast",legacyVariantId:"gemini-3.5-pro-low-fast",encoding:"legacy-variant"},"gemini-3.5-pro-medium-fast":{targetId:"gemini-3.5-pro-medium-fast",legacyVariantId:"gemini-3.5-pro-medium-fast",encoding:"legacy-variant"},"gemini-3.5-pro-max-fast":{targetId:"gemini-3.5-pro-max-fast",legacyVariantId:"gemini-3.5-pro-max-fast",encoding:"legacy-variant"},"composer-2.6-low":{targetId:"composer-2.6",level:"low",legacyVariantId:"composer-2.6-low",encoding:"legacy-variant"},"composer-2.6-medium":{targetId:"composer-2.6",level:"medium",legacyVariantId:"composer-2.6-medium",encoding:"legacy-variant"},"composer-2.6-max":{targetId:"composer-2.6",level:"max",legacyVariantId:"composer-2.6-max",encoding:"legacy-variant"},"composer-2.6-thinking-low":{targetId:"composer-2.6",level:"low",legacyVariantId:"composer-2.6-thinking-low",encoding:"legacy-variant"},"composer-2.6-thinking-medium":{targetId:"composer-2.6",level:"medium",legacyVariantId:"composer-2.6-thinking-medium",encoding:"legacy-variant"},"composer-2.6-thinking-max":{targetId:"composer-2.6",level:"max",legacyVariantId:"composer-2.6-thinking-max",encoding:"legacy-variant"},"composer-2.6-low-fast":{targetId:"composer-2.6-low-fast",legacyVariantId:"composer-2.6-low-fast",encoding:"legacy-variant"},"composer-2.6-medium-fast":{targetId:"composer-2.6-medium-fast",legacyVariantId:"composer-2.6-medium-fast",encoding:"legacy-variant"},"composer-2.6-max-fast":{targetId:"composer-2.6-max-fast",legacyVariantId:"composer-2.6-max-fast",encoding:"legacy-variant"},"composer-2.6-lite-low":{targetId:"composer-2.6-lite",level:"low",legacyVariantId:"composer-2.6-lite-low",encoding:"legacy-variant"},"composer-2.6-lite-medium":{targetId:"composer-2.6-lite",level:"medium",legacyVariantId:"composer-2.6-lite-medium",encoding:"legacy-variant"},"composer-2.6-lite-max":{targetId:"composer-2.6-lite",level:"max",legacyVariantId:"composer-2.6-lite-max",encoding:"legacy-variant"},"composer-2.6-lite-thinking-low":{targetId:"composer-2.6-lite",level:"low",legacyVariantId:"composer-2.6-lite-thinking-low",encoding:"legacy-variant"},"composer-2.6-lite-thinking-medium":{targetId:"composer-2.6-lite",level:"medium",legacyVariantId:"composer-2.6-lite-thinking-medium",encoding:"legacy-variant"},"composer-2.6-lite-thinking-max":{targetId:"composer-2.6-lite",level:"max",legacyVariantId:"composer-2.6-lite-thinking-max",encoding:"legacy-variant"},"composer-2.6-lite-low-fast":{targetId:"composer-2.6-lite-low-fast",legacyVariantId:"composer-2.6-lite-low-fast",encoding:"legacy-variant"},"composer-2.6-lite-medium-fast":{targetId:"composer-2.6-lite-medium-fast",legacyVariantId:"composer-2.6-lite-medium-fast",encoding:"legacy-variant"},"composer-2.6-lite-max-fast":{targetId:"composer-2.6-lite-max-fast",legacyVariantId:"composer-2.6-lite-max-fast",encoding:"legacy-variant"},"deepseek-v4-low":{targetId:"deepseek-v4",level:"low",legacyVariantId:"deepseek-v4-low",encoding:"legacy-variant"},"deepseek-v4-medium":{targetId:"deepseek-v4",level:"medium",legacyVariantId:"deepseek-v4-medium",encoding:"legacy-variant"},"deepseek-v4-max":{targetId:"deepseek-v4",level:"max",legacyVariantId:"deepseek-v4-max",encoding:"legacy-variant"},"deepseek-v4-thinking-low":{targetId:"deepseek-v4",level:"low",legacyVariantId:"deepseek-v4-thinking-low",encoding:"legacy-variant"},"deepseek-v4-thinking-medium":{targetId:"deepseek-v4",level:"medium",legacyVariantId:"deepseek-v4-thinking-medium",encoding:"legacy-variant"},"deepseek-v4-thinking-max":{targetId:"deepseek-v4",level:"max",legacyVariantId:"deepseek-v4-thinking-max",encoding:"legacy-variant"},"deepseek-v4-low-fast":{targetId:"deepseek-v4-low-fast",legacyVariantId:"deepseek-v4-low-fast",encoding:"legacy-variant"},"deepseek-v4-medium-fast":{targetId:"deepseek-v4-medium-fast",legacyVariantId:"deepseek-v4-medium-fast",encoding:"legacy-variant"},"deepseek-v4-max-fast":{targetId:"deepseek-v4-max-fast",legacyVariantId:"deepseek-v4-max-fast",encoding:"legacy-variant"}}};var P="parameters",V="variant-id";function ladder(values,encoding=P){let out={};for(let value of values)out[value==="none"?"off":value]={value,encoding};return out}var CLAUDE_ORDER=["thinking","context","effort"],GPT_ORDER=["context","reasoning","fast"];function claude(window,maxWindow,levels,defaultContext){return{evidence:"available-models",window,maxWindow,parameterOrder:CLAUDE_ORDER,defaultContext,requestContext:window>=1e6?"1m":defaultContext,levels:ladder(levels)}}function gpt(levels,order=GPT_ORDER,window=4e5,maxWindow=4e5){return{evidence:"available-models",window,maxWindow,parameterOrder:order,defaultContext:"272k",requestContext:order.includes("context")&&window>=1e6?"1m":void 0,levels:ladder(levels)}}var CURSOR_MODEL_CAPABILITIES={"claude-fable-5":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-sonnet-5":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-opus-4-7":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-opus-4-8":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-opus-5":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-4.6-opus":claude(1e6,1e6,["high","max"],"200k"),"claude-4.6-sonnet":claude(1e6,1e6,["medium"],"200k"),"claude-4.5-opus":{evidence:"available-models",window:2e5,parameterOrder:["thinking"],levels:{high:{value:"high",encoding:V}}},"gpt-5.6-sol":gpt(["none","low","medium","high","xhigh","max"],GPT_ORDER,1e6,1e6),"gpt-5.6-luna":gpt(["none","low","medium","high","xhigh","max"],GPT_ORDER,1e6,1e6),"gpt-5.6-terra":gpt(["none","low","medium","high","xhigh","max"],GPT_ORDER,272e3,272e3),"gpt-5.5":{...gpt(["none","low","medium","high"],GPT_ORDER,1e6,1e6),levels:{...ladder(["none","low","medium","high"]),xhigh:{value:"extra-high",encoding:P}}},"gpt-5.3-codex":{...gpt([],["reasoning","fast"]),maxWindow:void 0,defaultContext:void 0,levels:{...ladder(["low","medium","high"]),xhigh:{value:"extra-high",encoding:P}}},"gpt-5.1":{...gpt([],["reasoning"]),maxWindow:void 0,defaultContext:void 0,levels:ladder(["low","high"])},"gpt-5.2":{...gpt([],["reasoning"]),maxWindow:void 0,defaultContext:void 0,levels:{...ladder(["low","high"]),xhigh:{value:"xhigh",encoding:V}}},"gpt-5.4":{...gpt([],["reasoning"]),maxWindow:void 0,defaultContext:void 0,levels:{...ladder(["low","medium","high"]),xhigh:{value:"xhigh",encoding:V}}},"gpt-5.4-mini":{evidence:"available-models",window:4e5,parameterOrder:[],levels:ladder(["none","low","medium","high","xhigh"],V)},"gpt-5.4-nano":{...gpt([],["reasoning"]),maxWindow:void 0,defaultContext:void 0,levels:ladder(["none","low","medium","high","xhigh"])},"gemini-3.7-flash":{evidence:"cli-live",window:1048576,parameterOrder:["effort"],levels:ladder(["low","medium","high"])},"gemini-3.6-flash":{evidence:"suffix-only",window:1048576,parameterOrder:[],levels:ladder(["minimal","low","medium","high"],V)},"cursor-grok-4.6":{evidence:"available-models",window:5e5,parameterOrder:["effort","fast"],levels:ladder(["low","medium","high","xhigh"])},"cursor-grok-4.5":{evidence:"suffix-only",window:5e5,parameterOrder:[],levels:ladder(["low","medium","high"],V)},"glm-5.2":{evidence:"available-models",window:1e6,parameterOrder:["reasoning"],levels:ladder(["high","max"])},"kimi-k3":{evidence:"available-models",window:1048576,parameterOrder:["reasoning"],levels:ladder(["low","high","max"])},"composer-2.5":{evidence:"available-models",window:2e5,parameterOrder:["fast"],levels:{}},"claude-haiku-4-5":{evidence:"available-models",window:2e5,parameterOrder:["thinking"],levels:{}},"claude-4-sonnet":{evidence:"available-models",window:2e5,parameterOrder:["thinking","context"],defaultContext:"200k",levels:{}},"claude-4.5-sonnet":{evidence:"available-models",window:2e5,parameterOrder:["thinking","context"],defaultContext:"200k",levels:{}},"kimi-k2.7-code":{evidence:"available-models",window:262144,parameterOrder:[],levels:{}},"gemini-3-flash":{evidence:"available-models",window:1e6,parameterOrder:[],levels:{}},"gemini-3.1-pro":{evidence:"available-models",window:1e6,parameterOrder:[],levels:{}},"gemini-3.5-flash":{evidence:"available-models",window:1048576,parameterOrder:[],levels:{}},"gpt-5-mini":{evidence:"available-models",window:4e5,parameterOrder:[],levels:{}}},ALIASES=cursor_variant_aliases_default.aliases;function getCursorVariantAlias(originalId){return ALIASES[originalId]}function identityCompat(model){return model.compat?.cursorReasoning}function suffixAliasId(compat,level,spec){let suffixes=level==="off"?["none"]:spec.value===level?[spec.value]:[spec.value,level];for(let suffix of suffixes){let candidates=compat.thinkingMode===!0?[`${compat.capabilityId}-thinking-${suffix}`,`${compat.capabilityId}-${suffix}-thinking`]:[`${compat.capabilityId}-${suffix}`];for(let candidate of candidates){let alias=getCursorVariantAlias(candidate);if(alias)return alias.legacyVariantId}}}function buildParameters(capabilityId,value,thinkingMode){let capability=CURSOR_MODEL_CAPABILITIES[capabilityId];if(!capability)return[];let out=[];for(let id of capability.parameterOrder)switch(id){case"thinking":out.push({id,value:thinkingMode===!0?"true":"false"});break;case"context":{let context=capability.requestContext??capability.defaultContext;context!==void 0&&out.push({id,value:context});break}case"effort":case"reasoning":out.push({id,value});break;case"fast":out.push({id,value:"false"});break}return out}function resolveCursorSelectionDescriptor(model,selection){let compat=identityCompat(model),fallback={modelId:model.upstreamModelId??model.id,parameters:[]};if(!compat)return fallback;if(selection===void 0)return{modelId:compat.representativeVariantId,parameters:[]};if(selection.source==="legacy-variant"){let legacyId=selection.legacyVariantId;return legacyId!==void 0&&(getCursorVariantAlias(legacyId)!==void 0||Object.values(compat.variantIds??{}).includes(legacyId))?{modelId:legacyId,parameters:[]}:{modelId:compat.representativeVariantId,parameters:[]}}let derivedVariantId=compat.variantIds?.[selection.level];if(derivedVariantId!==void 0)return{modelId:derivedVariantId,parameters:[]};if(compat.variantIds!==void 0)return{modelId:compat.representativeVariantId,parameters:[]};let capability=CURSOR_MODEL_CAPABILITIES[compat.capabilityId],spec=capability?.levels[selection.level];if(!capability||!spec)return{modelId:compat.representativeVariantId,parameters:[]};let suffixId=suffixAliasId(compat,selection.level,spec);return suffixId!==void 0?{modelId:suffixId,parameters:[]}:spec.encoding==="variant-id"?{modelId:compat.representativeVariantId,parameters:[]}:{modelId:compat.capabilityId,parameters:buildParameters(compat.capabilityId,spec.value,compat.thinkingMode)}}function buildRequestedModelFields(model,selection){let resolved=resolveCursorSelectionDescriptor(model,selection);return{modelId:resolved.modelId,maxMode:model.compat?.cursorMaxMode===!0,parameters:resolved.parameters.map(parameter=>({id:parameter.id,value:parameter.value}))}}function buildRequestedModel(model,selection){let fields=buildRequestedModelFields(model,selection);return create(RequestedModelSchema,{modelId:fields.modelId,maxMode:fields.maxMode,parameters:fields.parameters.map(parameter=>create(RequestedModel_ModelParameterbytesSchema,{id:parameter.id,value:parameter.value}))})}var CursorRetryableStreamError=class extends Error{constructor(message,retryCause,options){super(message,options),this.name="CursorRetryableStreamError",this.retryCause=retryCause}};function isCursorRetryableStreamError(error){return error instanceof CursorRetryableStreamError}function cursorStreamRetryDelayMs(options){if(options.fixedDelayMs!==void 0)return Math.max(0,options.fixedDelayMs);let baseDelayMs=options.baseDelayMs??1e3,backoffMs=Math.min(baseDelayMs*2**options.attempt,6e4),jitter=Math.floor(backoffMs*.2*(options.random??Math.random)());return backoffMs+jitter}function shouldRetryCursorStream(options){return!options.sawTurnEnded&&!options.aborted&&options.retries<options.maxRetries&&isCursorRetryableStreamError(options.error)}async function waitForCursorStreamRetry(delayMs,signal){delayMs<=0||signal?.aborted||await new Promise(resolve=>{let timer=setTimeout(resolve,delayMs);signal?.addEventListener("abort",()=>{clearTimeout(timer),resolve()},{once:!0})})}import{randomUUID}from"node:crypto";import{mkdirSync as mkdirSync2,readFileSync as readFileSync2,writeFileSync as writeFileSync2}from"node:fs";import{dirname as dirname2}from"node:path";var MAX_CURSOR_CONVERSATION_ROTATIONS=3,MAX_CURSOR_CONVERSATION_ROTATION_RECORDS=512,CURSOR_CONVERSATION_POISONED_MESSAGE="Cursor conversation is poisoned for this session; use another provider",RESOURCE_EXHAUSTED_PATTERN=/resource.?exhausted/i;function isZeroTokenResourceExhausted(errorMessage,sawTokenDelta){return!sawTokenDelta&&RESOURCE_EXHAUSTED_PATTERN.test(errorMessage)}function createConversationRotationStore(options){let randomId=options.randomId??randomUUID,maxRecords=options.maxRecords??readRotationRecordLimit(process.env.PI_CURSOR_ROTATION_RECORD_LIMIT)??MAX_CURSOR_CONVERSATION_ROTATION_RECORDS,records=loadRecords(options.persistPath),trimRecords=()=>{let keys=Object.keys(records);for(let i=0;i<keys.length-maxRecords;i++)delete records[keys[i]]},persist=()=>{trimRecords(),mkdirSync2(dirname2(options.persistPath),{recursive:!0}),writeFileSync2(options.persistPath,`${JSON.stringify(records,null,2)}
28
+ }`:command}function omitUndefinedArgs(args){let out={};for(let key of Object.keys(args)){let value=args[key];value!==void 0&&(out[key]=value)}return out}var P="parameters",V="variant-id";function ladder(values,encoding=P){let out={};for(let value of values)out[value==="none"?"off":value]={value,encoding};return out}var CLAUDE_ORDER=["thinking","context","effort"],GPT_ORDER=["context","reasoning","fast"];function claude(window,maxWindow,levels,defaultContext){return{evidence:"available-models",window,maxWindow,parameterOrder:CLAUDE_ORDER,defaultContext,requestContext:window>=1e6?"1m":defaultContext,levels:ladder(levels)}}function gpt(levels,order=GPT_ORDER,window=4e5,maxWindow=4e5){return{evidence:"available-models",window,maxWindow,parameterOrder:order,defaultContext:"272k",requestContext:order.includes("context")&&window>=1e6?"1m":void 0,levels:ladder(levels)}}var LEVELS_LOW_MAX=["low","medium","high","xhigh","max"],CONTEXT_TOKEN={3e5:"300k",256e3:"256k"};function served(window,maxWindow,order,levels){let context=order.includes("context")?CONTEXT_TOKEN[window]:void 0;return{evidence:"served-checkpoint",window,...maxWindow!==void 0?{maxWindow}:{},parameterOrder:order,...context!==void 0?{defaultContext:context,requestContext:context}:{},levels:ladder(levels)}}var CURSOR_MODEL_CAPABILITIES={"claude-fable-5":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-sonnet-5":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-opus-4-7":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-opus-4-8":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-opus-5":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-4.6-opus":claude(1e6,1e6,["high","max"],"200k"),"claude-4.6-sonnet":claude(1e6,1e6,["medium"],"200k"),"claude-4.5-opus":{evidence:"available-models",window:2e5,parameterOrder:["thinking"],levels:{high:{value:"high",encoding:V}}},"gpt-5.6-sol":gpt(["none","low","medium","high","xhigh","max"],GPT_ORDER,1e6,1e6),"gpt-5.6-luna":gpt(["none","low","medium","high","xhigh","max"],GPT_ORDER,1e6,1e6),"gpt-5.6-terra":gpt(["none","low","medium","high","xhigh","max"],GPT_ORDER,272e3,272e3),"gpt-5.5":{...gpt(["none","low","medium","high"],GPT_ORDER,1e6,1e6),levels:{...ladder(["none","low","medium","high"]),xhigh:{value:"extra-high",encoding:P}}},"gpt-5.3-codex":{...gpt([],["reasoning","fast"]),maxWindow:void 0,defaultContext:void 0,levels:{...ladder(["low","medium","high"]),xhigh:{value:"extra-high",encoding:P}}},"gpt-5.1":{...gpt([],["reasoning"]),maxWindow:void 0,defaultContext:void 0,levels:ladder(["low","high"])},"gpt-5.2":{...gpt([],["reasoning"]),maxWindow:void 0,defaultContext:void 0,levels:{...ladder(["low","high"]),xhigh:{value:"xhigh",encoding:V}}},"gpt-5.4":{...gpt([],["reasoning"]),maxWindow:void 0,defaultContext:void 0,levels:{...ladder(["low","medium","high"]),xhigh:{value:"xhigh",encoding:V}}},"gpt-5.4-mini":{evidence:"available-models",window:4e5,parameterOrder:[],levels:ladder(["none","low","medium","high","xhigh"],V)},"gpt-5.4-nano":{...gpt([],["reasoning"]),maxWindow:void 0,defaultContext:void 0,levels:ladder(["none","low","medium","high","xhigh"])},"gemini-3.7-flash":{evidence:"cli-live",window:1048576,parameterOrder:["effort"],levels:ladder(["low","medium","high"])},"gemini-3.6-flash":{evidence:"suffix-only",window:1048576,parameterOrder:[],levels:ladder(["minimal","low","medium","high"],V)},"cursor-grok-4.6":{evidence:"available-models",window:5e5,parameterOrder:["effort","fast"],levels:ladder(["low","medium","high","xhigh"])},"cursor-grok-4.5":{evidence:"suffix-only",window:5e5,parameterOrder:[],levels:ladder(["low","medium","high"],V)},"glm-5.2":{evidence:"available-models",window:1e6,parameterOrder:["reasoning"],levels:ladder(["high","max"])},"kimi-k3":{evidence:"available-models",window:1048576,parameterOrder:["reasoning"],levels:ladder(["low","high","max"])},"composer-2.5":{evidence:"available-models",window:2e5,parameterOrder:["fast"],levels:{}},"claude-haiku-4-5":{evidence:"available-models",window:2e5,parameterOrder:["thinking"],levels:{}},"claude-4-sonnet":{evidence:"available-models",window:2e5,parameterOrder:["thinking","context"],defaultContext:"200k",levels:{}},"claude-4.5-sonnet":{evidence:"available-models",window:2e5,parameterOrder:["thinking","context"],defaultContext:"200k",levels:{}},"kimi-k2.7-code":{evidence:"available-models",window:262144,parameterOrder:[],levels:{}},"gemini-3-flash":{evidence:"available-models",window:1e6,parameterOrder:[],levels:{}},"gemini-3.1-pro":{evidence:"available-models",window:1e6,parameterOrder:[],levels:{}},"gemini-3.5-flash":{evidence:"available-models",window:1048576,parameterOrder:[],levels:{}},"gpt-5-mini":{evidence:"available-models",window:4e5,parameterOrder:[],levels:{}},"claude-opus-5-5":served(3e5,1e6,["context","effort","fast"],LEVELS_LOW_MAX),"claude-fable-5-1":served(3e5,1e6,["thinking","context","effort"],LEVELS_LOW_MAX),"claude-sonnet-5-5":served(3e5,1e6,["context","reasoning_effort"],LEVELS_LOW_MAX),"claude-haiku-5-5":served(3e5,1e6,["thinking","context","reasoning_effort"],LEVELS_LOW_MAX),"muse-wonder-1.0":served(3e5,1e6,["context","reasoning_effort"],["minimal",...LEVELS_LOW_MAX]),"muse-spark-1.3":served(3e5,1e6,["context","effort"],["minimal",...LEVELS_LOW_MAX]),"grok-4.7":served(256e3,5e5,["context","reasoning_effort","fast"],["low","medium","high","xhigh"]),"gemini-4-argon":served(2e5,void 0,["reasoning_effort"],["low","medium","high"]),"gemini-3.8-flash":served(2e5,void 0,["reasoning_effort"],["low","medium","high"]),default:served(256e3,void 0,[],[])};var cursor_variant_aliases_default={$schema:"cursor-variant-aliases/v1",source:"union of GetUsableModels live capture (204 ids) and cursor-agent CLI listing capture (203 ids), 2026-08-18",aliases:{"claude-4-sonnet":{targetId:"claude-4-sonnet",legacyVariantId:"claude-4-sonnet",encoding:"legacy-variant"},"claude-4-sonnet-thinking":{targetId:"claude-4-sonnet-thinking",legacyVariantId:"claude-4-sonnet-thinking",encoding:"legacy-variant"},"claude-4.5-opus-high":{targetId:"claude-4.5-opus",level:"high",legacyVariantId:"claude-4.5-opus-high",encoding:"legacy-variant"},"claude-4.5-opus-high-thinking":{targetId:"claude-4.5-opus-thinking",level:"high",legacyVariantId:"claude-4.5-opus-high-thinking",encoding:"legacy-variant"},"claude-4.5-sonnet":{targetId:"claude-4.5-sonnet",legacyVariantId:"claude-4.5-sonnet",encoding:"legacy-variant"},"claude-4.5-sonnet-thinking":{targetId:"claude-4.5-sonnet-thinking",legacyVariantId:"claude-4.5-sonnet-thinking",encoding:"legacy-variant"},"claude-4.6-opus-high":{targetId:"claude-4.6-opus",level:"high",legacyVariantId:"claude-4.6-opus-high",encoding:"legacy-variant"},"claude-4.6-opus-max":{targetId:"claude-4.6-opus",level:"max",legacyVariantId:"claude-4.6-opus-max",encoding:"legacy-variant"},"claude-4.6-opus-high-thinking":{targetId:"claude-4.6-opus-thinking",level:"high",legacyVariantId:"claude-4.6-opus-high-thinking",encoding:"legacy-variant"},"claude-4.6-opus-max-thinking":{targetId:"claude-4.6-opus-thinking",level:"max",legacyVariantId:"claude-4.6-opus-max-thinking",encoding:"legacy-variant"},"claude-4.6-sonnet-medium":{targetId:"claude-4.6-sonnet",level:"medium",legacyVariantId:"claude-4.6-sonnet-medium",encoding:"legacy-variant"},"claude-4.6-sonnet-medium-thinking":{targetId:"claude-4.6-sonnet-thinking",level:"medium",legacyVariantId:"claude-4.6-sonnet-medium-thinking",encoding:"legacy-variant"},"claude-fable-5-high":{targetId:"claude-fable-5",level:"high",legacyVariantId:"claude-fable-5-high",encoding:"legacy-variant"},"claude-fable-5-low":{targetId:"claude-fable-5",level:"low",legacyVariantId:"claude-fable-5-low",encoding:"legacy-variant"},"claude-fable-5-max":{targetId:"claude-fable-5",level:"max",legacyVariantId:"claude-fable-5-max",encoding:"legacy-variant"},"claude-fable-5-medium":{targetId:"claude-fable-5",level:"medium",legacyVariantId:"claude-fable-5-medium",encoding:"legacy-variant"},"claude-fable-5-xhigh":{targetId:"claude-fable-5",level:"xhigh",legacyVariantId:"claude-fable-5-xhigh",encoding:"legacy-variant"},"claude-fable-5-thinking-high":{targetId:"claude-fable-5-thinking",level:"high",legacyVariantId:"claude-fable-5-thinking-high",encoding:"legacy-variant"},"claude-fable-5-thinking-low":{targetId:"claude-fable-5-thinking",level:"low",legacyVariantId:"claude-fable-5-thinking-low",encoding:"legacy-variant"},"claude-fable-5-thinking-max":{targetId:"claude-fable-5-thinking",level:"max",legacyVariantId:"claude-fable-5-thinking-max",encoding:"legacy-variant"},"claude-fable-5-thinking-medium":{targetId:"claude-fable-5-thinking",level:"medium",legacyVariantId:"claude-fable-5-thinking-medium",encoding:"legacy-variant"},"claude-fable-5-thinking-xhigh":{targetId:"claude-fable-5-thinking",level:"xhigh",legacyVariantId:"claude-fable-5-thinking-xhigh",encoding:"legacy-variant"},"claude-opus-4-7-high":{targetId:"claude-opus-4-7",level:"high",legacyVariantId:"claude-opus-4-7-high",encoding:"legacy-variant"},"claude-opus-4-7-low":{targetId:"claude-opus-4-7",level:"low",legacyVariantId:"claude-opus-4-7-low",encoding:"legacy-variant"},"claude-opus-4-7-max":{targetId:"claude-opus-4-7",level:"max",legacyVariantId:"claude-opus-4-7-max",encoding:"legacy-variant"},"claude-opus-4-7-medium":{targetId:"claude-opus-4-7",level:"medium",legacyVariantId:"claude-opus-4-7-medium",encoding:"legacy-variant"},"claude-opus-4-7-xhigh":{targetId:"claude-opus-4-7",level:"xhigh",legacyVariantId:"claude-opus-4-7-xhigh",encoding:"legacy-variant"},"claude-opus-4-7-high-fast":{targetId:"claude-opus-4-7-high-fast",legacyVariantId:"claude-opus-4-7-high-fast",encoding:"legacy-variant"},"claude-opus-4-7-low-fast":{targetId:"claude-opus-4-7-low-fast",legacyVariantId:"claude-opus-4-7-low-fast",encoding:"legacy-variant"},"claude-opus-4-7-max-fast":{targetId:"claude-opus-4-7-max-fast",legacyVariantId:"claude-opus-4-7-max-fast",encoding:"legacy-variant"},"claude-opus-4-7-medium-fast":{targetId:"claude-opus-4-7-medium-fast",legacyVariantId:"claude-opus-4-7-medium-fast",encoding:"legacy-variant"},"claude-opus-4-7-xhigh-fast":{targetId:"claude-opus-4-7-xhigh-fast",legacyVariantId:"claude-opus-4-7-xhigh-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-high":{targetId:"claude-opus-4-7-thinking",level:"high",legacyVariantId:"claude-opus-4-7-thinking-high",encoding:"legacy-variant"},"claude-opus-4-7-thinking-low":{targetId:"claude-opus-4-7-thinking",level:"low",legacyVariantId:"claude-opus-4-7-thinking-low",encoding:"legacy-variant"},"claude-opus-4-7-thinking-max":{targetId:"claude-opus-4-7-thinking",level:"max",legacyVariantId:"claude-opus-4-7-thinking-max",encoding:"legacy-variant"},"claude-opus-4-7-thinking-medium":{targetId:"claude-opus-4-7-thinking",level:"medium",legacyVariantId:"claude-opus-4-7-thinking-medium",encoding:"legacy-variant"},"claude-opus-4-7-thinking-xhigh":{targetId:"claude-opus-4-7-thinking",level:"xhigh",legacyVariantId:"claude-opus-4-7-thinking-xhigh",encoding:"legacy-variant"},"claude-opus-4-7-thinking-high-fast":{targetId:"claude-opus-4-7-thinking-high-fast",legacyVariantId:"claude-opus-4-7-thinking-high-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-low-fast":{targetId:"claude-opus-4-7-thinking-low-fast",legacyVariantId:"claude-opus-4-7-thinking-low-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-max-fast":{targetId:"claude-opus-4-7-thinking-max-fast",legacyVariantId:"claude-opus-4-7-thinking-max-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-medium-fast":{targetId:"claude-opus-4-7-thinking-medium-fast",legacyVariantId:"claude-opus-4-7-thinking-medium-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-xhigh-fast":{targetId:"claude-opus-4-7-thinking-xhigh-fast",legacyVariantId:"claude-opus-4-7-thinking-xhigh-fast",encoding:"legacy-variant"},"claude-opus-4-8-high":{targetId:"claude-opus-4-8",level:"high",legacyVariantId:"claude-opus-4-8-high",encoding:"legacy-variant"},"claude-opus-4-8-low":{targetId:"claude-opus-4-8",level:"low",legacyVariantId:"claude-opus-4-8-low",encoding:"legacy-variant"},"claude-opus-4-8-max":{targetId:"claude-opus-4-8",level:"max",legacyVariantId:"claude-opus-4-8-max",encoding:"legacy-variant"},"claude-opus-4-8-medium":{targetId:"claude-opus-4-8",level:"medium",legacyVariantId:"claude-opus-4-8-medium",encoding:"legacy-variant"},"claude-opus-4-8-xhigh":{targetId:"claude-opus-4-8",level:"xhigh",legacyVariantId:"claude-opus-4-8-xhigh",encoding:"legacy-variant"},"claude-opus-4-8-high-fast":{targetId:"claude-opus-4-8-high-fast",legacyVariantId:"claude-opus-4-8-high-fast",encoding:"legacy-variant"},"claude-opus-4-8-low-fast":{targetId:"claude-opus-4-8-low-fast",legacyVariantId:"claude-opus-4-8-low-fast",encoding:"legacy-variant"},"claude-opus-4-8-max-fast":{targetId:"claude-opus-4-8-max-fast",legacyVariantId:"claude-opus-4-8-max-fast",encoding:"legacy-variant"},"claude-opus-4-8-medium-fast":{targetId:"claude-opus-4-8-medium-fast",legacyVariantId:"claude-opus-4-8-medium-fast",encoding:"legacy-variant"},"claude-opus-4-8-xhigh-fast":{targetId:"claude-opus-4-8-xhigh-fast",legacyVariantId:"claude-opus-4-8-xhigh-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-high":{targetId:"claude-opus-4-8-thinking",level:"high",legacyVariantId:"claude-opus-4-8-thinking-high",encoding:"legacy-variant"},"claude-opus-4-8-thinking-low":{targetId:"claude-opus-4-8-thinking",level:"low",legacyVariantId:"claude-opus-4-8-thinking-low",encoding:"legacy-variant"},"claude-opus-4-8-thinking-max":{targetId:"claude-opus-4-8-thinking",level:"max",legacyVariantId:"claude-opus-4-8-thinking-max",encoding:"legacy-variant"},"claude-opus-4-8-thinking-medium":{targetId:"claude-opus-4-8-thinking",level:"medium",legacyVariantId:"claude-opus-4-8-thinking-medium",encoding:"legacy-variant"},"claude-opus-4-8-thinking-xhigh":{targetId:"claude-opus-4-8-thinking",level:"xhigh",legacyVariantId:"claude-opus-4-8-thinking-xhigh",encoding:"legacy-variant"},"claude-opus-4-8-thinking-high-fast":{targetId:"claude-opus-4-8-thinking-high-fast",legacyVariantId:"claude-opus-4-8-thinking-high-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-low-fast":{targetId:"claude-opus-4-8-thinking-low-fast",legacyVariantId:"claude-opus-4-8-thinking-low-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-max-fast":{targetId:"claude-opus-4-8-thinking-max-fast",legacyVariantId:"claude-opus-4-8-thinking-max-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-medium-fast":{targetId:"claude-opus-4-8-thinking-medium-fast",legacyVariantId:"claude-opus-4-8-thinking-medium-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-xhigh-fast":{targetId:"claude-opus-4-8-thinking-xhigh-fast",legacyVariantId:"claude-opus-4-8-thinking-xhigh-fast",encoding:"legacy-variant"},"claude-opus-5-high":{targetId:"claude-opus-5",level:"high",legacyVariantId:"claude-opus-5-high",encoding:"legacy-variant"},"claude-opus-5-low":{targetId:"claude-opus-5",level:"low",legacyVariantId:"claude-opus-5-low",encoding:"legacy-variant"},"claude-opus-5-medium":{targetId:"claude-opus-5",level:"medium",legacyVariantId:"claude-opus-5-medium",encoding:"legacy-variant"},"claude-opus-5-max":{targetId:"claude-opus-5",level:"max",legacyVariantId:"claude-opus-5-max",encoding:"legacy-variant"},"claude-opus-5-high-fast":{targetId:"claude-opus-5-high-fast",legacyVariantId:"claude-opus-5-high-fast",encoding:"legacy-variant"},"claude-opus-5-low-fast":{targetId:"claude-opus-5-low-fast",legacyVariantId:"claude-opus-5-low-fast",encoding:"legacy-variant"},"claude-opus-5-medium-fast":{targetId:"claude-opus-5-medium-fast",legacyVariantId:"claude-opus-5-medium-fast",encoding:"legacy-variant"},"claude-opus-5-max-fast":{targetId:"claude-opus-5-max-fast",legacyVariantId:"claude-opus-5-max-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-high":{targetId:"claude-opus-5-thinking",level:"high",legacyVariantId:"claude-opus-5-thinking-high",encoding:"legacy-variant"},"claude-opus-5-thinking-low":{targetId:"claude-opus-5-thinking",level:"low",legacyVariantId:"claude-opus-5-thinking-low",encoding:"legacy-variant"},"claude-opus-5-thinking-max":{targetId:"claude-opus-5-thinking",level:"max",legacyVariantId:"claude-opus-5-thinking-max",encoding:"legacy-variant"},"claude-opus-5-thinking-medium":{targetId:"claude-opus-5-thinking",level:"medium",legacyVariantId:"claude-opus-5-thinking-medium",encoding:"legacy-variant"},"claude-opus-5-thinking-xhigh":{targetId:"claude-opus-5-thinking",level:"xhigh",legacyVariantId:"claude-opus-5-thinking-xhigh",encoding:"legacy-variant"},"claude-opus-5-thinking-high-fast":{targetId:"claude-opus-5-thinking-high-fast",legacyVariantId:"claude-opus-5-thinking-high-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-low-fast":{targetId:"claude-opus-5-thinking-low-fast",legacyVariantId:"claude-opus-5-thinking-low-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-max-fast":{targetId:"claude-opus-5-thinking-max-fast",legacyVariantId:"claude-opus-5-thinking-max-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-medium-fast":{targetId:"claude-opus-5-thinking-medium-fast",legacyVariantId:"claude-opus-5-thinking-medium-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-xhigh-fast":{targetId:"claude-opus-5-thinking-xhigh-fast",legacyVariantId:"claude-opus-5-thinking-xhigh-fast",encoding:"legacy-variant"},"claude-sonnet-5-high":{targetId:"claude-sonnet-5",level:"high",legacyVariantId:"claude-sonnet-5-high",encoding:"legacy-variant"},"claude-sonnet-5-low":{targetId:"claude-sonnet-5",level:"low",legacyVariantId:"claude-sonnet-5-low",encoding:"legacy-variant"},"claude-sonnet-5-max":{targetId:"claude-sonnet-5",level:"max",legacyVariantId:"claude-sonnet-5-max",encoding:"legacy-variant"},"claude-sonnet-5-medium":{targetId:"claude-sonnet-5",level:"medium",legacyVariantId:"claude-sonnet-5-medium",encoding:"legacy-variant"},"claude-sonnet-5-xhigh":{targetId:"claude-sonnet-5",level:"xhigh",legacyVariantId:"claude-sonnet-5-xhigh",encoding:"legacy-variant"},"claude-sonnet-5-thinking-high":{targetId:"claude-sonnet-5-thinking",level:"high",legacyVariantId:"claude-sonnet-5-thinking-high",encoding:"legacy-variant"},"claude-sonnet-5-thinking-low":{targetId:"claude-sonnet-5-thinking",level:"low",legacyVariantId:"claude-sonnet-5-thinking-low",encoding:"legacy-variant"},"claude-sonnet-5-thinking-max":{targetId:"claude-sonnet-5-thinking",level:"max",legacyVariantId:"claude-sonnet-5-thinking-max",encoding:"legacy-variant"},"claude-sonnet-5-thinking-medium":{targetId:"claude-sonnet-5-thinking",level:"medium",legacyVariantId:"claude-sonnet-5-thinking-medium",encoding:"legacy-variant"},"claude-sonnet-5-thinking-xhigh":{targetId:"claude-sonnet-5-thinking",level:"xhigh",legacyVariantId:"claude-sonnet-5-thinking-xhigh",encoding:"legacy-variant"},"composer-2.5":{targetId:"composer-2.5",legacyVariantId:"composer-2.5",encoding:"legacy-variant"},"composer-2.5-fast":{targetId:"composer-2.5-fast",legacyVariantId:"composer-2.5-fast",encoding:"legacy-variant"},"cursor-grok-4.5-high":{targetId:"cursor-grok-4.5",level:"high",legacyVariantId:"cursor-grok-4.5-high",encoding:"legacy-variant"},"cursor-grok-4.5-low":{targetId:"cursor-grok-4.5",level:"low",legacyVariantId:"cursor-grok-4.5-low",encoding:"legacy-variant"},"cursor-grok-4.5-medium":{targetId:"cursor-grok-4.5",level:"medium",legacyVariantId:"cursor-grok-4.5-medium",encoding:"legacy-variant"},"cursor-grok-4.5-max":{targetId:"cursor-grok-4.5",level:"max",legacyVariantId:"cursor-grok-4.5-max",encoding:"legacy-variant"},"cursor-grok-4.5-thinking-low":{targetId:"cursor-grok-4.5",level:"low",legacyVariantId:"cursor-grok-4.5-thinking-low",encoding:"legacy-variant"},"cursor-grok-4.5-thinking-medium":{targetId:"cursor-grok-4.5",level:"medium",legacyVariantId:"cursor-grok-4.5-thinking-medium",encoding:"legacy-variant"},"cursor-grok-4.5-thinking-max":{targetId:"cursor-grok-4.5",level:"max",legacyVariantId:"cursor-grok-4.5-thinking-max",encoding:"legacy-variant"},"cursor-grok-4.5-high-fast":{targetId:"cursor-grok-4.5-high-fast",legacyVariantId:"cursor-grok-4.5-high-fast",encoding:"legacy-variant"},"cursor-grok-4.5-low-fast":{targetId:"cursor-grok-4.5-low-fast",legacyVariantId:"cursor-grok-4.5-low-fast",encoding:"legacy-variant"},"cursor-grok-4.5-medium-fast":{targetId:"cursor-grok-4.5-medium-fast",legacyVariantId:"cursor-grok-4.5-medium-fast",encoding:"legacy-variant"},"cursor-grok-4.5-max-fast":{targetId:"cursor-grok-4.5-max-fast",legacyVariantId:"cursor-grok-4.5-max-fast",encoding:"legacy-variant"},"cursor-grok-4.6-high":{targetId:"cursor-grok-4.6",level:"high",legacyVariantId:"cursor-grok-4.6-high",encoding:"legacy-variant"},"cursor-grok-4.6-low":{targetId:"cursor-grok-4.6",level:"low",legacyVariantId:"cursor-grok-4.6-low",encoding:"legacy-variant"},"cursor-grok-4.6-medium":{targetId:"cursor-grok-4.6",level:"medium",legacyVariantId:"cursor-grok-4.6-medium",encoding:"legacy-variant"},"cursor-grok-4.6-xhigh":{targetId:"cursor-grok-4.6",level:"xhigh",legacyVariantId:"cursor-grok-4.6-xhigh",encoding:"legacy-variant"},"cursor-grok-4.6-max":{targetId:"cursor-grok-4.6",level:"max",legacyVariantId:"cursor-grok-4.6-max",encoding:"legacy-variant"},"cursor-grok-4.6-thinking-low":{targetId:"cursor-grok-4.6",level:"low",legacyVariantId:"cursor-grok-4.6-thinking-low",encoding:"legacy-variant"},"cursor-grok-4.6-thinking-medium":{targetId:"cursor-grok-4.6",level:"medium",legacyVariantId:"cursor-grok-4.6-thinking-medium",encoding:"legacy-variant"},"cursor-grok-4.6-thinking-max":{targetId:"cursor-grok-4.6",level:"max",legacyVariantId:"cursor-grok-4.6-thinking-max",encoding:"legacy-variant"},"cursor-grok-4.6-high-fast":{targetId:"cursor-grok-4.6-high-fast",legacyVariantId:"cursor-grok-4.6-high-fast",encoding:"legacy-variant"},"cursor-grok-4.6-low-fast":{targetId:"cursor-grok-4.6-low-fast",legacyVariantId:"cursor-grok-4.6-low-fast",encoding:"legacy-variant"},"cursor-grok-4.6-medium-fast":{targetId:"cursor-grok-4.6-medium-fast",legacyVariantId:"cursor-grok-4.6-medium-fast",encoding:"legacy-variant"},"cursor-grok-4.6-xhigh-fast":{targetId:"cursor-grok-4.6-xhigh-fast",legacyVariantId:"cursor-grok-4.6-xhigh-fast",encoding:"legacy-variant"},"cursor-grok-4.6-max-fast":{targetId:"cursor-grok-4.6-max-fast",legacyVariantId:"cursor-grok-4.6-max-fast",encoding:"legacy-variant"},default:{targetId:"default",legacyVariantId:"default",encoding:"legacy-variant"},"gemini-3-flash":{targetId:"gemini-3-flash",legacyVariantId:"gemini-3-flash",encoding:"legacy-variant"},"gemini-3.1-pro":{targetId:"gemini-3.1-pro",legacyVariantId:"gemini-3.1-pro",encoding:"legacy-variant"},"gemini-3.5-flash":{targetId:"gemini-3.5-flash",legacyVariantId:"gemini-3.5-flash",encoding:"legacy-variant"},"gemini-3.6-flash-high":{targetId:"gemini-3.6-flash",level:"high",legacyVariantId:"gemini-3.6-flash-high",encoding:"legacy-variant"},"gemini-3.6-flash-low":{targetId:"gemini-3.6-flash",level:"low",legacyVariantId:"gemini-3.6-flash-low",encoding:"legacy-variant"},"gemini-3.6-flash-medium":{targetId:"gemini-3.6-flash",level:"medium",legacyVariantId:"gemini-3.6-flash-medium",encoding:"legacy-variant"},"gemini-3.6-flash-minimal":{targetId:"gemini-3.6-flash",level:"minimal",legacyVariantId:"gemini-3.6-flash-minimal",encoding:"legacy-variant"},"gemini-3.7-flash-high":{targetId:"gemini-3.7-flash",level:"high",legacyVariantId:"gemini-3.7-flash-high",encoding:"legacy-variant"},"gemini-3.7-flash-low":{targetId:"gemini-3.7-flash",level:"low",legacyVariantId:"gemini-3.7-flash-low",encoding:"legacy-variant"},"gemini-3.7-flash-medium":{targetId:"gemini-3.7-flash",level:"medium",legacyVariantId:"gemini-3.7-flash-medium",encoding:"legacy-variant"},"gemini-3.7-flash-max":{targetId:"gemini-3.7-flash",level:"max",legacyVariantId:"gemini-3.7-flash-max",encoding:"legacy-variant"},"gemini-3.7-flash-thinking-low":{targetId:"gemini-3.7-flash",level:"low",legacyVariantId:"gemini-3.7-flash-thinking-low",encoding:"legacy-variant"},"gemini-3.7-flash-thinking-medium":{targetId:"gemini-3.7-flash",level:"medium",legacyVariantId:"gemini-3.7-flash-thinking-medium",encoding:"legacy-variant"},"gemini-3.7-flash-thinking-max":{targetId:"gemini-3.7-flash",level:"max",legacyVariantId:"gemini-3.7-flash-thinking-max",encoding:"legacy-variant"},"glm-5.2-high":{targetId:"glm-5.2",level:"high",legacyVariantId:"glm-5.2-high",encoding:"legacy-variant"},"glm-5.2-max":{targetId:"glm-5.2",level:"max",legacyVariantId:"glm-5.2-max",encoding:"legacy-variant"},"gpt-5-mini":{targetId:"gpt-5-mini",legacyVariantId:"gpt-5-mini",encoding:"legacy-variant"},"gpt-5.1":{targetId:"gpt-5.1",legacyVariantId:"gpt-5.1",encoding:"legacy-variant"},"gpt-5.1-high":{targetId:"gpt-5.1",level:"high",legacyVariantId:"gpt-5.1-high",encoding:"legacy-variant"},"gpt-5.1-low":{targetId:"gpt-5.1",level:"low",legacyVariantId:"gpt-5.1-low",encoding:"legacy-variant"},"gpt-5.2":{targetId:"gpt-5.2",legacyVariantId:"gpt-5.2",encoding:"legacy-variant"},"gpt-5.2-high":{targetId:"gpt-5.2",level:"high",legacyVariantId:"gpt-5.2-high",encoding:"legacy-variant"},"gpt-5.2-low":{targetId:"gpt-5.2",level:"low",legacyVariantId:"gpt-5.2-low",encoding:"legacy-variant"},"gpt-5.2-xhigh":{targetId:"gpt-5.2",level:"xhigh",legacyVariantId:"gpt-5.2-xhigh",encoding:"legacy-variant"},"gpt-5.2-medium":{targetId:"gpt-5.2",level:"medium",legacyVariantId:"gpt-5.2-medium",encoding:"legacy-variant"},"gpt-5.2-max":{targetId:"gpt-5.2",level:"max",legacyVariantId:"gpt-5.2-max",encoding:"legacy-variant"},"gpt-5.2-thinking-low":{targetId:"gpt-5.2",level:"low",legacyVariantId:"gpt-5.2-thinking-low",encoding:"legacy-variant"},"gpt-5.2-thinking-medium":{targetId:"gpt-5.2",level:"medium",legacyVariantId:"gpt-5.2-thinking-medium",encoding:"legacy-variant"},"gpt-5.2-thinking-max":{targetId:"gpt-5.2",level:"max",legacyVariantId:"gpt-5.2-thinking-max",encoding:"legacy-variant"},"gpt-5.2-fast":{targetId:"gpt-5.2-fast",legacyVariantId:"gpt-5.2-fast",encoding:"legacy-variant"},"gpt-5.2-high-fast":{targetId:"gpt-5.2-high-fast",legacyVariantId:"gpt-5.2-high-fast",encoding:"legacy-variant"},"gpt-5.2-low-fast":{targetId:"gpt-5.2-low-fast",legacyVariantId:"gpt-5.2-low-fast",encoding:"legacy-variant"},"gpt-5.2-xhigh-fast":{targetId:"gpt-5.2-xhigh-fast",legacyVariantId:"gpt-5.2-xhigh-fast",encoding:"legacy-variant"},"gpt-5.2-medium-fast":{targetId:"gpt-5.2-medium-fast",legacyVariantId:"gpt-5.2-medium-fast",encoding:"legacy-variant"},"gpt-5.2-max-fast":{targetId:"gpt-5.2-max-fast",legacyVariantId:"gpt-5.2-max-fast",encoding:"legacy-variant"},"gpt-5.3-codex":{targetId:"gpt-5.3-codex",legacyVariantId:"gpt-5.3-codex",encoding:"legacy-variant"},"gpt-5.3-codex-high":{targetId:"gpt-5.3-codex",level:"high",legacyVariantId:"gpt-5.3-codex-high",encoding:"legacy-variant"},"gpt-5.3-codex-low":{targetId:"gpt-5.3-codex",level:"low",legacyVariantId:"gpt-5.3-codex-low",encoding:"legacy-variant"},"gpt-5.3-codex-xhigh":{targetId:"gpt-5.3-codex",level:"xhigh",legacyVariantId:"gpt-5.3-codex-xhigh",encoding:"legacy-variant"},"gpt-5.3-codex-medium":{targetId:"gpt-5.3-codex",level:"medium",legacyVariantId:"gpt-5.3-codex-medium",encoding:"legacy-variant"},"gpt-5.3-codex-max":{targetId:"gpt-5.3-codex",level:"max",legacyVariantId:"gpt-5.3-codex-max",encoding:"legacy-variant"},"gpt-5.3-codex-thinking-low":{targetId:"gpt-5.3-codex",level:"low",legacyVariantId:"gpt-5.3-codex-thinking-low",encoding:"legacy-variant"},"gpt-5.3-codex-thinking-medium":{targetId:"gpt-5.3-codex",level:"medium",legacyVariantId:"gpt-5.3-codex-thinking-medium",encoding:"legacy-variant"},"gpt-5.3-codex-thinking-max":{targetId:"gpt-5.3-codex",level:"max",legacyVariantId:"gpt-5.3-codex-thinking-max",encoding:"legacy-variant"},"gpt-5.3-codex-fast":{targetId:"gpt-5.3-codex-fast",legacyVariantId:"gpt-5.3-codex-fast",encoding:"legacy-variant"},"gpt-5.3-codex-high-fast":{targetId:"gpt-5.3-codex-high-fast",legacyVariantId:"gpt-5.3-codex-high-fast",encoding:"legacy-variant"},"gpt-5.3-codex-low-fast":{targetId:"gpt-5.3-codex-low-fast",legacyVariantId:"gpt-5.3-codex-low-fast",encoding:"legacy-variant"},"gpt-5.3-codex-xhigh-fast":{targetId:"gpt-5.3-codex-xhigh-fast",legacyVariantId:"gpt-5.3-codex-xhigh-fast",encoding:"legacy-variant"},"gpt-5.3-codex-medium-fast":{targetId:"gpt-5.3-codex-medium-fast",legacyVariantId:"gpt-5.3-codex-medium-fast",encoding:"legacy-variant"},"gpt-5.3-codex-max-fast":{targetId:"gpt-5.3-codex-max-fast",legacyVariantId:"gpt-5.3-codex-max-fast",encoding:"legacy-variant"},"gpt-5.4-high":{targetId:"gpt-5.4",level:"high",legacyVariantId:"gpt-5.4-high",encoding:"legacy-variant"},"gpt-5.4-low":{targetId:"gpt-5.4",level:"low",legacyVariantId:"gpt-5.4-low",encoding:"legacy-variant"},"gpt-5.4-medium":{targetId:"gpt-5.4",level:"medium",legacyVariantId:"gpt-5.4-medium",encoding:"legacy-variant"},"gpt-5.4-xhigh":{targetId:"gpt-5.4",level:"xhigh",legacyVariantId:"gpt-5.4-xhigh",encoding:"legacy-variant"},"gpt-5.4-high-fast":{targetId:"gpt-5.4-high-fast",legacyVariantId:"gpt-5.4-high-fast",encoding:"legacy-variant"},"gpt-5.4-medium-fast":{targetId:"gpt-5.4-medium-fast",legacyVariantId:"gpt-5.4-medium-fast",encoding:"legacy-variant"},"gpt-5.4-xhigh-fast":{targetId:"gpt-5.4-xhigh-fast",legacyVariantId:"gpt-5.4-xhigh-fast",encoding:"legacy-variant"},"gpt-5.4-mini-high":{targetId:"gpt-5.4-mini",level:"high",legacyVariantId:"gpt-5.4-mini-high",encoding:"legacy-variant"},"gpt-5.4-mini-low":{targetId:"gpt-5.4-mini",level:"low",legacyVariantId:"gpt-5.4-mini-low",encoding:"legacy-variant"},"gpt-5.4-mini-medium":{targetId:"gpt-5.4-mini",level:"medium",legacyVariantId:"gpt-5.4-mini-medium",encoding:"legacy-variant"},"gpt-5.4-mini-none":{targetId:"gpt-5.4-mini",level:"off",legacyVariantId:"gpt-5.4-mini-none",encoding:"legacy-variant"},"gpt-5.4-mini-xhigh":{targetId:"gpt-5.4-mini",level:"xhigh",legacyVariantId:"gpt-5.4-mini-xhigh",encoding:"legacy-variant"},"gpt-5.4-nano-high":{targetId:"gpt-5.4-nano",level:"high",legacyVariantId:"gpt-5.4-nano-high",encoding:"legacy-variant"},"gpt-5.4-nano-low":{targetId:"gpt-5.4-nano",level:"low",legacyVariantId:"gpt-5.4-nano-low",encoding:"legacy-variant"},"gpt-5.4-nano-medium":{targetId:"gpt-5.4-nano",level:"medium",legacyVariantId:"gpt-5.4-nano-medium",encoding:"legacy-variant"},"gpt-5.4-nano-none":{targetId:"gpt-5.4-nano",level:"off",legacyVariantId:"gpt-5.4-nano-none",encoding:"legacy-variant"},"gpt-5.4-nano-xhigh":{targetId:"gpt-5.4-nano",level:"xhigh",legacyVariantId:"gpt-5.4-nano-xhigh",encoding:"legacy-variant"},"gpt-5.5-extra-high":{targetId:"gpt-5.5",level:"extra-high",legacyVariantId:"gpt-5.5-extra-high",encoding:"legacy-variant"},"gpt-5.5-high":{targetId:"gpt-5.5",level:"high",legacyVariantId:"gpt-5.5-high",encoding:"legacy-variant"},"gpt-5.5-low":{targetId:"gpt-5.5",level:"low",legacyVariantId:"gpt-5.5-low",encoding:"legacy-variant"},"gpt-5.5-medium":{targetId:"gpt-5.5",level:"medium",legacyVariantId:"gpt-5.5-medium",encoding:"legacy-variant"},"gpt-5.5-none":{targetId:"gpt-5.5",level:"off",legacyVariantId:"gpt-5.5-none",encoding:"legacy-variant"},"gpt-5.5-max":{targetId:"gpt-5.5",level:"max",legacyVariantId:"gpt-5.5-max",encoding:"legacy-variant"},"gpt-5.5-thinking-low":{targetId:"gpt-5.5",level:"low",legacyVariantId:"gpt-5.5-thinking-low",encoding:"legacy-variant"},"gpt-5.5-thinking-medium":{targetId:"gpt-5.5",level:"medium",legacyVariantId:"gpt-5.5-thinking-medium",encoding:"legacy-variant"},"gpt-5.5-thinking-max":{targetId:"gpt-5.5",level:"max",legacyVariantId:"gpt-5.5-thinking-max",encoding:"legacy-variant"},"gpt-5.5-extra-high-fast":{targetId:"gpt-5.5-extra-high-fast",legacyVariantId:"gpt-5.5-extra-high-fast",encoding:"legacy-variant"},"gpt-5.5-high-fast":{targetId:"gpt-5.5-high-fast",legacyVariantId:"gpt-5.5-high-fast",encoding:"legacy-variant"},"gpt-5.5-low-fast":{targetId:"gpt-5.5-low-fast",legacyVariantId:"gpt-5.5-low-fast",encoding:"legacy-variant"},"gpt-5.5-medium-fast":{targetId:"gpt-5.5-medium-fast",legacyVariantId:"gpt-5.5-medium-fast",encoding:"legacy-variant"},"gpt-5.5-none-fast":{targetId:"gpt-5.5-none-fast",legacyVariantId:"gpt-5.5-none-fast",encoding:"legacy-variant"},"gpt-5.5-max-fast":{targetId:"gpt-5.5-max-fast",legacyVariantId:"gpt-5.5-max-fast",encoding:"legacy-variant"},"gpt-5.6-luna-high":{targetId:"gpt-5.6-luna",level:"high",legacyVariantId:"gpt-5.6-luna-high",encoding:"legacy-variant"},"gpt-5.6-luna-low":{targetId:"gpt-5.6-luna",level:"low",legacyVariantId:"gpt-5.6-luna-low",encoding:"legacy-variant"},"gpt-5.6-luna-max":{targetId:"gpt-5.6-luna",level:"max",legacyVariantId:"gpt-5.6-luna-max",encoding:"legacy-variant"},"gpt-5.6-luna-medium":{targetId:"gpt-5.6-luna",level:"medium",legacyVariantId:"gpt-5.6-luna-medium",encoding:"legacy-variant"},"gpt-5.6-luna-none":{targetId:"gpt-5.6-luna",level:"off",legacyVariantId:"gpt-5.6-luna-none",encoding:"legacy-variant"},"gpt-5.6-luna-xhigh":{targetId:"gpt-5.6-luna",level:"xhigh",legacyVariantId:"gpt-5.6-luna-xhigh",encoding:"legacy-variant"},"gpt-5.6-luna-thinking-low":{targetId:"gpt-5.6-luna",level:"low",legacyVariantId:"gpt-5.6-luna-thinking-low",encoding:"legacy-variant"},"gpt-5.6-luna-thinking-medium":{targetId:"gpt-5.6-luna",level:"medium",legacyVariantId:"gpt-5.6-luna-thinking-medium",encoding:"legacy-variant"},"gpt-5.6-luna-thinking-max":{targetId:"gpt-5.6-luna",level:"max",legacyVariantId:"gpt-5.6-luna-thinking-max",encoding:"legacy-variant"},"gpt-5.6-luna-high-fast":{targetId:"gpt-5.6-luna-high-fast",legacyVariantId:"gpt-5.6-luna-high-fast",encoding:"legacy-variant"},"gpt-5.6-luna-low-fast":{targetId:"gpt-5.6-luna-low-fast",legacyVariantId:"gpt-5.6-luna-low-fast",encoding:"legacy-variant"},"gpt-5.6-luna-max-fast":{targetId:"gpt-5.6-luna-max-fast",legacyVariantId:"gpt-5.6-luna-max-fast",encoding:"legacy-variant"},"gpt-5.6-luna-medium-fast":{targetId:"gpt-5.6-luna-medium-fast",legacyVariantId:"gpt-5.6-luna-medium-fast",encoding:"legacy-variant"},"gpt-5.6-luna-none-fast":{targetId:"gpt-5.6-luna-none-fast",legacyVariantId:"gpt-5.6-luna-none-fast",encoding:"legacy-variant"},"gpt-5.6-luna-xhigh-fast":{targetId:"gpt-5.6-luna-xhigh-fast",legacyVariantId:"gpt-5.6-luna-xhigh-fast",encoding:"legacy-variant"},"gpt-5.6-sol-high":{targetId:"gpt-5.6-sol",level:"high",legacyVariantId:"gpt-5.6-sol-high",encoding:"legacy-variant"},"gpt-5.6-sol-low":{targetId:"gpt-5.6-sol",level:"low",legacyVariantId:"gpt-5.6-sol-low",encoding:"legacy-variant"},"gpt-5.6-sol-max":{targetId:"gpt-5.6-sol",level:"max",legacyVariantId:"gpt-5.6-sol-max",encoding:"legacy-variant"},"gpt-5.6-sol-medium":{targetId:"gpt-5.6-sol",level:"medium",legacyVariantId:"gpt-5.6-sol-medium",encoding:"legacy-variant"},"gpt-5.6-sol-none":{targetId:"gpt-5.6-sol",level:"off",legacyVariantId:"gpt-5.6-sol-none",encoding:"legacy-variant"},"gpt-5.6-sol-xhigh":{targetId:"gpt-5.6-sol",level:"xhigh",legacyVariantId:"gpt-5.6-sol-xhigh",encoding:"legacy-variant"},"gpt-5.6-sol-thinking-low":{targetId:"gpt-5.6-sol",level:"low",legacyVariantId:"gpt-5.6-sol-thinking-low",encoding:"legacy-variant"},"gpt-5.6-sol-thinking-medium":{targetId:"gpt-5.6-sol",level:"medium",legacyVariantId:"gpt-5.6-sol-thinking-medium",encoding:"legacy-variant"},"gpt-5.6-sol-thinking-max":{targetId:"gpt-5.6-sol",level:"max",legacyVariantId:"gpt-5.6-sol-thinking-max",encoding:"legacy-variant"},"gpt-5.6-sol-high-fast":{targetId:"gpt-5.6-sol-high-fast",legacyVariantId:"gpt-5.6-sol-high-fast",encoding:"legacy-variant"},"gpt-5.6-sol-low-fast":{targetId:"gpt-5.6-sol-low-fast",legacyVariantId:"gpt-5.6-sol-low-fast",encoding:"legacy-variant"},"gpt-5.6-sol-max-fast":{targetId:"gpt-5.6-sol-max-fast",legacyVariantId:"gpt-5.6-sol-max-fast",encoding:"legacy-variant"},"gpt-5.6-sol-medium-fast":{targetId:"gpt-5.6-sol-medium-fast",legacyVariantId:"gpt-5.6-sol-medium-fast",encoding:"legacy-variant"},"gpt-5.6-sol-none-fast":{targetId:"gpt-5.6-sol-none-fast",legacyVariantId:"gpt-5.6-sol-none-fast",encoding:"legacy-variant"},"gpt-5.6-sol-xhigh-fast":{targetId:"gpt-5.6-sol-xhigh-fast",legacyVariantId:"gpt-5.6-sol-xhigh-fast",encoding:"legacy-variant"},"gpt-5.6-terra-high":{targetId:"gpt-5.6-terra",level:"high",legacyVariantId:"gpt-5.6-terra-high",encoding:"legacy-variant"},"gpt-5.6-terra-low":{targetId:"gpt-5.6-terra",level:"low",legacyVariantId:"gpt-5.6-terra-low",encoding:"legacy-variant"},"gpt-5.6-terra-max":{targetId:"gpt-5.6-terra",level:"max",legacyVariantId:"gpt-5.6-terra-max",encoding:"legacy-variant"},"gpt-5.6-terra-medium":{targetId:"gpt-5.6-terra",level:"medium",legacyVariantId:"gpt-5.6-terra-medium",encoding:"legacy-variant"},"gpt-5.6-terra-none":{targetId:"gpt-5.6-terra",level:"off",legacyVariantId:"gpt-5.6-terra-none",encoding:"legacy-variant"},"gpt-5.6-terra-xhigh":{targetId:"gpt-5.6-terra",level:"xhigh",legacyVariantId:"gpt-5.6-terra-xhigh",encoding:"legacy-variant"},"gpt-5.6-terra-high-fast":{targetId:"gpt-5.6-terra-high-fast",legacyVariantId:"gpt-5.6-terra-high-fast",encoding:"legacy-variant"},"gpt-5.6-terra-low-fast":{targetId:"gpt-5.6-terra-low-fast",legacyVariantId:"gpt-5.6-terra-low-fast",encoding:"legacy-variant"},"gpt-5.6-terra-max-fast":{targetId:"gpt-5.6-terra-max-fast",legacyVariantId:"gpt-5.6-terra-max-fast",encoding:"legacy-variant"},"gpt-5.6-terra-medium-fast":{targetId:"gpt-5.6-terra-medium-fast",legacyVariantId:"gpt-5.6-terra-medium-fast",encoding:"legacy-variant"},"gpt-5.6-terra-none-fast":{targetId:"gpt-5.6-terra-none-fast",legacyVariantId:"gpt-5.6-terra-none-fast",encoding:"legacy-variant"},"gpt-5.6-terra-xhigh-fast":{targetId:"gpt-5.6-terra-xhigh-fast",legacyVariantId:"gpt-5.6-terra-xhigh-fast",encoding:"legacy-variant"},"kimi-k2.7-code":{targetId:"kimi-k2.7-code",legacyVariantId:"kimi-k2.7-code",encoding:"legacy-variant"},"kimi-k3-high":{targetId:"kimi-k3",level:"high",legacyVariantId:"kimi-k3-high",encoding:"legacy-variant"},"kimi-k3-low":{targetId:"kimi-k3",level:"low",legacyVariantId:"kimi-k3-low",encoding:"legacy-variant"},"kimi-k3-max":{targetId:"kimi-k3",level:"max",legacyVariantId:"kimi-k3-max",encoding:"legacy-variant"},auto:{targetId:"auto",legacyVariantId:"auto",encoding:"legacy-variant"},"claude-fable-5-low-fast":{targetId:"claude-fable-5-low-fast",legacyVariantId:"claude-fable-5-low-fast",encoding:"legacy-variant"},"claude-fable-5-medium-fast":{targetId:"claude-fable-5-medium-fast",legacyVariantId:"claude-fable-5-medium-fast",encoding:"legacy-variant"},"claude-fable-5-max-fast":{targetId:"claude-fable-5-max-fast",legacyVariantId:"claude-fable-5-max-fast",encoding:"legacy-variant"},"claude-sonnet-5-low-fast":{targetId:"claude-sonnet-5-low-fast",legacyVariantId:"claude-sonnet-5-low-fast",encoding:"legacy-variant"},"claude-sonnet-5-medium-fast":{targetId:"claude-sonnet-5-medium-fast",legacyVariantId:"claude-sonnet-5-medium-fast",encoding:"legacy-variant"},"claude-sonnet-5-max-fast":{targetId:"claude-sonnet-5-max-fast",legacyVariantId:"claude-sonnet-5-max-fast",encoding:"legacy-variant"},"claude-sonnet-4-7-low":{targetId:"claude-sonnet-4-7",level:"low",legacyVariantId:"claude-sonnet-4-7-low",encoding:"legacy-variant"},"claude-sonnet-4-7-medium":{targetId:"claude-sonnet-4-7",level:"medium",legacyVariantId:"claude-sonnet-4-7-medium",encoding:"legacy-variant"},"claude-sonnet-4-7-max":{targetId:"claude-sonnet-4-7",level:"max",legacyVariantId:"claude-sonnet-4-7-max",encoding:"legacy-variant"},"claude-sonnet-4-7-low-fast":{targetId:"claude-sonnet-4-7-low-fast",legacyVariantId:"claude-sonnet-4-7-low-fast",encoding:"legacy-variant"},"claude-sonnet-4-7-medium-fast":{targetId:"claude-sonnet-4-7-medium-fast",legacyVariantId:"claude-sonnet-4-7-medium-fast",encoding:"legacy-variant"},"claude-sonnet-4-7-max-fast":{targetId:"claude-sonnet-4-7-max-fast",legacyVariantId:"claude-sonnet-4-7-max-fast",encoding:"legacy-variant"},"claude-sonnet-4-7-thinking-low":{targetId:"claude-sonnet-4-7-thinking",level:"low",legacyVariantId:"claude-sonnet-4-7-thinking-low",encoding:"legacy-variant"},"claude-sonnet-4-7-thinking-medium":{targetId:"claude-sonnet-4-7-thinking",level:"medium",legacyVariantId:"claude-sonnet-4-7-thinking-medium",encoding:"legacy-variant"},"claude-sonnet-4-7-thinking-max":{targetId:"claude-sonnet-4-7-thinking",level:"max",legacyVariantId:"claude-sonnet-4-7-thinking-max",encoding:"legacy-variant"},"claude-mythos-5-low":{targetId:"claude-mythos-5",level:"low",legacyVariantId:"claude-mythos-5-low",encoding:"legacy-variant"},"claude-mythos-5-medium":{targetId:"claude-mythos-5",level:"medium",legacyVariantId:"claude-mythos-5-medium",encoding:"legacy-variant"},"claude-mythos-5-max":{targetId:"claude-mythos-5",level:"max",legacyVariantId:"claude-mythos-5-max",encoding:"legacy-variant"},"claude-mythos-5-low-fast":{targetId:"claude-mythos-5-low-fast",legacyVariantId:"claude-mythos-5-low-fast",encoding:"legacy-variant"},"claude-mythos-5-medium-fast":{targetId:"claude-mythos-5-medium-fast",legacyVariantId:"claude-mythos-5-medium-fast",encoding:"legacy-variant"},"claude-mythos-5-max-fast":{targetId:"claude-mythos-5-max-fast",legacyVariantId:"claude-mythos-5-max-fast",encoding:"legacy-variant"},"claude-mythos-5-thinking-low":{targetId:"claude-mythos-5-thinking",level:"low",legacyVariantId:"claude-mythos-5-thinking-low",encoding:"legacy-variant"},"claude-mythos-5-thinking-medium":{targetId:"claude-mythos-5-thinking",level:"medium",legacyVariantId:"claude-mythos-5-thinking-medium",encoding:"legacy-variant"},"claude-mythos-5-thinking-max":{targetId:"claude-mythos-5-thinking",level:"max",legacyVariantId:"claude-mythos-5-thinking-max",encoding:"legacy-variant"},"gpt-5.4-codex-low":{targetId:"gpt-5.4-codex",level:"low",legacyVariantId:"gpt-5.4-codex-low",encoding:"legacy-variant"},"gpt-5.4-codex-medium":{targetId:"gpt-5.4-codex",level:"medium",legacyVariantId:"gpt-5.4-codex-medium",encoding:"legacy-variant"},"gpt-5.4-codex-max":{targetId:"gpt-5.4-codex",level:"max",legacyVariantId:"gpt-5.4-codex-max",encoding:"legacy-variant"},"gpt-5.4-codex-thinking-low":{targetId:"gpt-5.4-codex",level:"low",legacyVariantId:"gpt-5.4-codex-thinking-low",encoding:"legacy-variant"},"gpt-5.4-codex-thinking-medium":{targetId:"gpt-5.4-codex",level:"medium",legacyVariantId:"gpt-5.4-codex-thinking-medium",encoding:"legacy-variant"},"gpt-5.4-codex-thinking-max":{targetId:"gpt-5.4-codex",level:"max",legacyVariantId:"gpt-5.4-codex-thinking-max",encoding:"legacy-variant"},"gpt-5.4-codex-low-fast":{targetId:"gpt-5.4-codex-low-fast",legacyVariantId:"gpt-5.4-codex-low-fast",encoding:"legacy-variant"},"gpt-5.4-codex-medium-fast":{targetId:"gpt-5.4-codex-medium-fast",legacyVariantId:"gpt-5.4-codex-medium-fast",encoding:"legacy-variant"},"gpt-5.4-codex-max-fast":{targetId:"gpt-5.4-codex-max-fast",legacyVariantId:"gpt-5.4-codex-max-fast",encoding:"legacy-variant"},"gemini-3.7-flash-low-fast":{targetId:"gemini-3.7-flash-low-fast",legacyVariantId:"gemini-3.7-flash-low-fast",encoding:"legacy-variant"},"gemini-3.7-flash-medium-fast":{targetId:"gemini-3.7-flash-medium-fast",legacyVariantId:"gemini-3.7-flash-medium-fast",encoding:"legacy-variant"},"gemini-3.7-flash-max-fast":{targetId:"gemini-3.7-flash-max-fast",legacyVariantId:"gemini-3.7-flash-max-fast",encoding:"legacy-variant"},"gemini-3.7-pro-low":{targetId:"gemini-3.7-pro",level:"low",legacyVariantId:"gemini-3.7-pro-low",encoding:"legacy-variant"},"gemini-3.7-pro-medium":{targetId:"gemini-3.7-pro",level:"medium",legacyVariantId:"gemini-3.7-pro-medium",encoding:"legacy-variant"},"gemini-3.7-pro-max":{targetId:"gemini-3.7-pro",level:"max",legacyVariantId:"gemini-3.7-pro-max",encoding:"legacy-variant"},"gemini-3.7-pro-thinking-low":{targetId:"gemini-3.7-pro",level:"low",legacyVariantId:"gemini-3.7-pro-thinking-low",encoding:"legacy-variant"},"gemini-3.7-pro-thinking-medium":{targetId:"gemini-3.7-pro",level:"medium",legacyVariantId:"gemini-3.7-pro-thinking-medium",encoding:"legacy-variant"},"gemini-3.7-pro-thinking-max":{targetId:"gemini-3.7-pro",level:"max",legacyVariantId:"gemini-3.7-pro-thinking-max",encoding:"legacy-variant"},"gemini-3.7-pro-low-fast":{targetId:"gemini-3.7-pro-low-fast",legacyVariantId:"gemini-3.7-pro-low-fast",encoding:"legacy-variant"},"gemini-3.7-pro-medium-fast":{targetId:"gemini-3.7-pro-medium-fast",legacyVariantId:"gemini-3.7-pro-medium-fast",encoding:"legacy-variant"},"gemini-3.7-pro-max-fast":{targetId:"gemini-3.7-pro-max-fast",legacyVariantId:"gemini-3.7-pro-max-fast",encoding:"legacy-variant"},"gemini-3.6-pro-low":{targetId:"gemini-3.6-pro",level:"low",legacyVariantId:"gemini-3.6-pro-low",encoding:"legacy-variant"},"gemini-3.6-pro-medium":{targetId:"gemini-3.6-pro",level:"medium",legacyVariantId:"gemini-3.6-pro-medium",encoding:"legacy-variant"},"gemini-3.6-pro-max":{targetId:"gemini-3.6-pro",level:"max",legacyVariantId:"gemini-3.6-pro-max",encoding:"legacy-variant"},"gemini-3.6-pro-thinking-low":{targetId:"gemini-3.6-pro",level:"low",legacyVariantId:"gemini-3.6-pro-thinking-low",encoding:"legacy-variant"},"gemini-3.6-pro-thinking-medium":{targetId:"gemini-3.6-pro",level:"medium",legacyVariantId:"gemini-3.6-pro-thinking-medium",encoding:"legacy-variant"},"gemini-3.6-pro-thinking-max":{targetId:"gemini-3.6-pro",level:"max",legacyVariantId:"gemini-3.6-pro-thinking-max",encoding:"legacy-variant"},"gemini-3.6-pro-low-fast":{targetId:"gemini-3.6-pro-low-fast",legacyVariantId:"gemini-3.6-pro-low-fast",encoding:"legacy-variant"},"gemini-3.6-pro-medium-fast":{targetId:"gemini-3.6-pro-medium-fast",legacyVariantId:"gemini-3.6-pro-medium-fast",encoding:"legacy-variant"},"gemini-3.6-pro-max-fast":{targetId:"gemini-3.6-pro-max-fast",legacyVariantId:"gemini-3.6-pro-max-fast",encoding:"legacy-variant"},"gemini-3.5-pro-low":{targetId:"gemini-3.5-pro",level:"low",legacyVariantId:"gemini-3.5-pro-low",encoding:"legacy-variant"},"gemini-3.5-pro-medium":{targetId:"gemini-3.5-pro",level:"medium",legacyVariantId:"gemini-3.5-pro-medium",encoding:"legacy-variant"},"gemini-3.5-pro-max":{targetId:"gemini-3.5-pro",level:"max",legacyVariantId:"gemini-3.5-pro-max",encoding:"legacy-variant"},"gemini-3.5-pro-thinking-low":{targetId:"gemini-3.5-pro",level:"low",legacyVariantId:"gemini-3.5-pro-thinking-low",encoding:"legacy-variant"},"gemini-3.5-pro-thinking-medium":{targetId:"gemini-3.5-pro",level:"medium",legacyVariantId:"gemini-3.5-pro-thinking-medium",encoding:"legacy-variant"},"gemini-3.5-pro-thinking-max":{targetId:"gemini-3.5-pro",level:"max",legacyVariantId:"gemini-3.5-pro-thinking-max",encoding:"legacy-variant"},"gemini-3.5-pro-low-fast":{targetId:"gemini-3.5-pro-low-fast",legacyVariantId:"gemini-3.5-pro-low-fast",encoding:"legacy-variant"},"gemini-3.5-pro-medium-fast":{targetId:"gemini-3.5-pro-medium-fast",legacyVariantId:"gemini-3.5-pro-medium-fast",encoding:"legacy-variant"},"gemini-3.5-pro-max-fast":{targetId:"gemini-3.5-pro-max-fast",legacyVariantId:"gemini-3.5-pro-max-fast",encoding:"legacy-variant"},"composer-2.6-low":{targetId:"composer-2.6",level:"low",legacyVariantId:"composer-2.6-low",encoding:"legacy-variant"},"composer-2.6-medium":{targetId:"composer-2.6",level:"medium",legacyVariantId:"composer-2.6-medium",encoding:"legacy-variant"},"composer-2.6-max":{targetId:"composer-2.6",level:"max",legacyVariantId:"composer-2.6-max",encoding:"legacy-variant"},"composer-2.6-thinking-low":{targetId:"composer-2.6",level:"low",legacyVariantId:"composer-2.6-thinking-low",encoding:"legacy-variant"},"composer-2.6-thinking-medium":{targetId:"composer-2.6",level:"medium",legacyVariantId:"composer-2.6-thinking-medium",encoding:"legacy-variant"},"composer-2.6-thinking-max":{targetId:"composer-2.6",level:"max",legacyVariantId:"composer-2.6-thinking-max",encoding:"legacy-variant"},"composer-2.6-low-fast":{targetId:"composer-2.6-low-fast",legacyVariantId:"composer-2.6-low-fast",encoding:"legacy-variant"},"composer-2.6-medium-fast":{targetId:"composer-2.6-medium-fast",legacyVariantId:"composer-2.6-medium-fast",encoding:"legacy-variant"},"composer-2.6-max-fast":{targetId:"composer-2.6-max-fast",legacyVariantId:"composer-2.6-max-fast",encoding:"legacy-variant"},"composer-2.6-lite-low":{targetId:"composer-2.6-lite",level:"low",legacyVariantId:"composer-2.6-lite-low",encoding:"legacy-variant"},"composer-2.6-lite-medium":{targetId:"composer-2.6-lite",level:"medium",legacyVariantId:"composer-2.6-lite-medium",encoding:"legacy-variant"},"composer-2.6-lite-max":{targetId:"composer-2.6-lite",level:"max",legacyVariantId:"composer-2.6-lite-max",encoding:"legacy-variant"},"composer-2.6-lite-thinking-low":{targetId:"composer-2.6-lite",level:"low",legacyVariantId:"composer-2.6-lite-thinking-low",encoding:"legacy-variant"},"composer-2.6-lite-thinking-medium":{targetId:"composer-2.6-lite",level:"medium",legacyVariantId:"composer-2.6-lite-thinking-medium",encoding:"legacy-variant"},"composer-2.6-lite-thinking-max":{targetId:"composer-2.6-lite",level:"max",legacyVariantId:"composer-2.6-lite-thinking-max",encoding:"legacy-variant"},"composer-2.6-lite-low-fast":{targetId:"composer-2.6-lite-low-fast",legacyVariantId:"composer-2.6-lite-low-fast",encoding:"legacy-variant"},"composer-2.6-lite-medium-fast":{targetId:"composer-2.6-lite-medium-fast",legacyVariantId:"composer-2.6-lite-medium-fast",encoding:"legacy-variant"},"composer-2.6-lite-max-fast":{targetId:"composer-2.6-lite-max-fast",legacyVariantId:"composer-2.6-lite-max-fast",encoding:"legacy-variant"},"deepseek-v4-low":{targetId:"deepseek-v4",level:"low",legacyVariantId:"deepseek-v4-low",encoding:"legacy-variant"},"deepseek-v4-medium":{targetId:"deepseek-v4",level:"medium",legacyVariantId:"deepseek-v4-medium",encoding:"legacy-variant"},"deepseek-v4-max":{targetId:"deepseek-v4",level:"max",legacyVariantId:"deepseek-v4-max",encoding:"legacy-variant"},"deepseek-v4-thinking-low":{targetId:"deepseek-v4",level:"low",legacyVariantId:"deepseek-v4-thinking-low",encoding:"legacy-variant"},"deepseek-v4-thinking-medium":{targetId:"deepseek-v4",level:"medium",legacyVariantId:"deepseek-v4-thinking-medium",encoding:"legacy-variant"},"deepseek-v4-thinking-max":{targetId:"deepseek-v4",level:"max",legacyVariantId:"deepseek-v4-thinking-max",encoding:"legacy-variant"},"deepseek-v4-low-fast":{targetId:"deepseek-v4-low-fast",legacyVariantId:"deepseek-v4-low-fast",encoding:"legacy-variant"},"deepseek-v4-medium-fast":{targetId:"deepseek-v4-medium-fast",legacyVariantId:"deepseek-v4-medium-fast",encoding:"legacy-variant"},"deepseek-v4-max-fast":{targetId:"deepseek-v4-max-fast",legacyVariantId:"deepseek-v4-max-fast",encoding:"legacy-variant"}}};var ALIASES=cursor_variant_aliases_default.aliases;function getCursorVariantAlias(originalId){return ALIASES[originalId]}function identityCompat(model){return model.compat?.cursorReasoning}function suffixAliasId(compat,level,spec){let suffixes=level==="off"?["none"]:spec.value===level?[spec.value]:[spec.value,level];for(let suffix of suffixes){let candidates=compat.thinkingMode===!0?[`${compat.capabilityId}-thinking-${suffix}`,`${compat.capabilityId}-${suffix}-thinking`]:[`${compat.capabilityId}-${suffix}`];for(let candidate of candidates){let alias=getCursorVariantAlias(candidate);if(alias)return alias.legacyVariantId}}}function buildParameters(capabilityId,value,thinkingMode){let capability=CURSOR_MODEL_CAPABILITIES[capabilityId];if(!capability)return[];let out=[];for(let id of capability.parameterOrder)switch(id){case"thinking":out.push({id,value:thinkingMode===!0?"true":"false"});break;case"context":{let context=capability.requestContext??capability.defaultContext;context!==void 0&&out.push({id,value:context});break}case"effort":case"reasoning":case"reasoning_effort":out.push({id,value});break;case"fast":out.push({id,value:"false"});break}return out}function resolveCursorSelectionDescriptor(model,selection){let compat=identityCompat(model),fallback={modelId:model.upstreamModelId??model.id,parameters:[]};if(!compat)return fallback;if(selection===void 0)return{modelId:compat.representativeVariantId,parameters:[]};if(selection.source==="legacy-variant"){let legacyId=selection.legacyVariantId;return legacyId!==void 0&&(getCursorVariantAlias(legacyId)!==void 0||Object.values(compat.variantIds??{}).includes(legacyId))?{modelId:legacyId,parameters:[]}:{modelId:compat.representativeVariantId,parameters:[]}}let derivedVariantId=compat.variantIds?.[selection.level];if(derivedVariantId!==void 0)return{modelId:derivedVariantId,parameters:[]};if(compat.variantIds!==void 0)return{modelId:compat.representativeVariantId,parameters:[]};let capability=CURSOR_MODEL_CAPABILITIES[compat.capabilityId],spec=capability?.levels[selection.level];if(!capability||!spec)return{modelId:compat.representativeVariantId,parameters:[]};let suffixId=suffixAliasId(compat,selection.level,spec);return suffixId!==void 0?{modelId:suffixId,parameters:[]}:spec.encoding==="variant-id"?{modelId:compat.representativeVariantId,parameters:[]}:{modelId:compat.capabilityId,parameters:buildParameters(compat.capabilityId,spec.value,compat.thinkingMode)}}function buildRequestedModelFields(model,selection){let resolved=resolveCursorSelectionDescriptor(model,selection);return{modelId:resolved.modelId,maxMode:model.compat?.cursorMaxMode===!0,parameters:resolved.parameters.map(parameter=>({id:parameter.id,value:parameter.value}))}}function buildRequestedModel(model,selection){let fields=buildRequestedModelFields(model,selection);return create(RequestedModelSchema,{modelId:fields.modelId,maxMode:fields.maxMode,parameters:fields.parameters.map(parameter=>create(RequestedModel_ModelParameterbytesSchema,{id:parameter.id,value:parameter.value}))})}var CursorRetryableStreamError=class extends Error{constructor(message,retryCause,options){super(message,options),this.name="CursorRetryableStreamError",this.retryCause=retryCause}};function isCursorRetryableStreamError(error){return error instanceof CursorRetryableStreamError}function cursorStreamRetryDelayMs(options){if(options.fixedDelayMs!==void 0)return Math.max(0,options.fixedDelayMs);let baseDelayMs=options.baseDelayMs??1e3,backoffMs=Math.min(baseDelayMs*2**options.attempt,6e4),jitter=Math.floor(backoffMs*.2*(options.random??Math.random)());return backoffMs+jitter}function shouldRetryCursorStream(options){return!options.sawTurnEnded&&!options.aborted&&options.retries<options.maxRetries&&isCursorRetryableStreamError(options.error)}async function waitForCursorStreamRetry(delayMs,signal){delayMs<=0||signal?.aborted||await new Promise(resolve=>{let timer=setTimeout(resolve,delayMs);signal?.addEventListener("abort",()=>{clearTimeout(timer),resolve()},{once:!0})})}import{randomUUID}from"node:crypto";import{mkdirSync as mkdirSync2,readFileSync as readFileSync2,writeFileSync as writeFileSync2}from"node:fs";import{dirname as dirname2}from"node:path";var MAX_CURSOR_CONVERSATION_ROTATIONS=3,MAX_CURSOR_CONVERSATION_ROTATION_RECORDS=512,CURSOR_CONVERSATION_POISONED_MESSAGE="Cursor conversation is poisoned for this session; use another provider",RESOURCE_EXHAUSTED_PATTERN=/resource.?exhausted/i;function isZeroTokenResourceExhausted(errorMessage,sawTokenDelta){return!sawTokenDelta&&RESOURCE_EXHAUSTED_PATTERN.test(errorMessage)}function createConversationRotationStore(options){let randomId=options.randomId??randomUUID,maxRecords=options.maxRecords??readRotationRecordLimit(process.env.PI_CURSOR_ROTATION_RECORD_LIMIT)??MAX_CURSOR_CONVERSATION_ROTATION_RECORDS,records=loadRecords(options.persistPath),trimRecords=()=>{let keys=Object.keys(records);for(let i=0;i<keys.length-maxRecords;i++)delete records[keys[i]]},persist=()=>{trimRecords(),mkdirSync2(dirname2(options.persistPath),{recursive:!0}),writeFileSync2(options.persistPath,`${JSON.stringify(records,null,2)}
29
29
  `)};return{getWireId(baseId){let existing=records[baseId];if(!existing)return baseId;if(!existing.skip)return existing.wireId;let wireId=randomId();return existing.wireId=wireId,existing.skip=!1,existing.poisonCount=0,existing.surfaced=!1,records[baseId]=existing,persist(),wireId},shouldSkip(baseId){return records[baseId]?.skip===!0},shouldSurfaceBeforeRotating(baseId){return records[baseId]?.surfaced!==!0},markSurfaced(baseId,currentWireId){let existing=records[baseId]??{wireId:currentWireId,poisonCount:0,skip:!1,surfaced:!1};existing.surfaced||(existing.surfaced=!0,records[baseId]=existing,persist())},recordCount(){return Object.keys(records).length},recordZeroTokenPoison(baseId,currentWireId){let existing=records[baseId]??{wireId:currentWireId,poisonCount:0,skip:!1,surfaced:!1};if(existing.skip||existing.poisonCount>=MAX_CURSOR_CONVERSATION_ROTATIONS)return existing.skip=!0,existing.wireId=currentWireId,records[baseId]=existing,persist(),{kind:"exhausted"};let wireId=randomId();return existing.wireId=wireId,existing.poisonCount+=1,records[baseId]=existing,persist(),{kind:"rotated",wireId}}}}function resolveConversationRotationPersistPath(env=process.env){return env.CURSOR_CONVERSATION_ID_STORE?env.CURSOR_CONVERSATION_ID_STORE:`${(env.SENPI_CODING_AGENT_DIR??env.CODING_AGENT_DIR??`${(env.HOME??".").replace(/\/$/,"")}/.senpi/agent`).replace(/\/$/,"")}/cursor-conversation-ids.json`}function readRotationRecordLimit(raw){let parsed=Number(raw);return Number.isFinite(parsed)&&parsed>0?Math.floor(parsed):void 0}function loadRecords(persistPath){try{let parsed=JSON.parse(readFileSync2(persistPath,"utf8"));if(!parsed||typeof parsed!="object"||Array.isArray(parsed))return{};let records={};for(let[baseId,value]of Object.entries(parsed)){if(!value||typeof value!="object")continue;let raw=value;typeof raw.wireId!="string"||raw.wireId.length===0||(records[baseId]={wireId:raw.wireId,poisonCount:typeof raw.poisonCount=="number"&&raw.poisonCount>=0?raw.poisonCount:0,skip:raw.skip===!0,surfaced:raw.surfaced===!0})}return records}catch{return{}}}function isUsableCursorTaskArgs(args){if(!args||typeof args!="object"||Array.isArray(args))return!1;let rec=args;return!!(rec.category||rec.subagent_type||typeof rec.prompt=="string"&&rec.prompt.trim()||Array.isArray(rec.tasks)&&rec.tasks.length>0)}function keepUsableCursorTaskArgs(previous,next){return isUsableCursorTaskArgs(next)?next:isUsableCursorTaskArgs(previous)?previous:next}function hashBytes(input){let out=new Uint8Array(32),b=typeof input=="string"?new TextEncoder().encode(input):input;for(let i=0;i<b.length;i++)out[i%32]=out[i%32]+b[i]+i&255;return out}function createHash2(input){let data=typeof input=="string"?input:new TextDecoder().decode(input);return{update(v){return data+=typeof v=="string"?v:new TextDecoder().decode(v),this},digest(format){let b=hashBytes(data);return format==="hex"?[...b].map(x=>x.toString(16).padStart(2,"0")).join(""):b}}}function deterministicUuid2(s){let h=[...hashBytes(s)].map(x=>x.toString(16).padStart(2,"0")).join("");return`${h.slice(0,8)}-${h.slice(8,12)}-${h.slice(12,16)}-${h.slice(16,20)}-${h.slice(20,32)}`}function randomUUID2(){let h=[...hashBytes(String(Math.random())+Date.now())].map(x=>x.toString(16).padStart(2,"0")).join("");return`${h.slice(0,8)}-${h.slice(8,12)}-${h.slice(12,16)}-${h.slice(16,20)}-${h.slice(20,32)}`}function storeCursorBlob(m,d){let id=hashBytes(d);return m.set([...id].map(x=>x.toString(16).padStart(2,"0")).join(""),d),id}function readCursorBlob(m,id){let d=m.get([...id].map(x=>x.toString(16).padStart(2,"0")).join(""));if(!d)throw Error("Cursor blob not found");return d}function toolResultToText(r){return r.content.map(i=>i.type==="text"?i.text:`[${i.mimeType} image]`).join(`
30
30
  `)}function extractUserMessageText(msg){if(msg.role!=="user")return"";let content=msg.content;return typeof content=="string"?content.trim():content.filter(c=>c.type==="text").map(c=>c.text).join(`
31
31
  `).trim()}function hasUserMessageImages(msg){return msg.role==="user"&&Array.isArray(msg.content)&&msg.content.some(item=>item.type==="image")}function buildCursorRootPromptContent(content){if(typeof content=="string"){let text=content.trim();return text?[{type:"text",text}]:[]}let parts=[];for(let item of content)if(item.type==="text"){let text=item.text.trim();text&&parts.push({type:"text",text})}else parts.push({type:"image",image:`data:${item.mimeType};base64,${item.data}`,mediaType:item.mimeType});return parts}function cursorUserContentKey(content){if(typeof content=="string")return content.trim();let hash=createHash2("sha256");for(let item of content)hash.update(item.type),item.type==="text"?hash.update(item.text):(hash.update(item.mimeType),hash.update(item.data));return hash.digest("hex")}function buildCursorAssistantContent(msg){let content=[];for(let item of msg.content)item.type==="text"?item.text&&content.push({type:"text",text:item.text}):item.type==="toolCall"&&content.push({type:"tool-call",toolCallId:item.id,toolName:item.name,args:item.arguments});return content}function findLastUserMessageIndex(messages){for(let i=messages.length-1;i>=0;i--)if(messages[i].role==="user")return i;return-1}function buildRootPromptMessagesJson(messages,systemPromptIds,blobStore,activeUserMessageIndex=findLastUserMessageIndex(messages)){let entries=[...systemPromptIds],pushJson=obj=>{let bytes=new TextEncoder().encode(JSON.stringify(obj));entries.push(storeCursorBlob(blobStore,bytes))};for(let i=0;i<messages.length&&i!==activeUserMessageIndex;i++){let msg=messages[i];if(msg.role==="user"){let content=buildCursorRootPromptContent(msg.content);if(content.length===0)continue;pushJson({role:"user",content})}else if(msg.role==="assistant"){let content=buildCursorAssistantContent(msg);if(content.length===0)continue;pushJson({role:"assistant",content})}else msg.role==="toolResult"&&pushJson({role:"tool",id:msg.toolCallId,content:[{type:"tool-result",toolName:msg.toolName,toolCallId:msg.toolCallId,result:toolResultToText(msg),...msg.isError?{isError:!0}:{}}]})}return entries}function isPlainRecord(value){if(value===null||typeof value!="object"||Array.isArray(value))return!1;let prototype=Object.getPrototypeOf(value);return prototype===Object.prototype||prototype===null}function isJsonValue(value){if(value===null||typeof value=="string"||typeof value=="boolean")return!0;if(typeof value=="number")return Number.isFinite(value);if(Array.isArray(value))return value.every(isJsonValue);if(!isPlainRecord(value))return!1;for(let key in value)if(!isJsonValue(value[key]))return!1;return!0}function encodeCursorMcpArguments(toolCall){let encoded={};for(let name in toolCall.arguments){let value=toolCall.arguments[name];if(value!==void 0){if(!isJsonValue(value))throw new Error(`Cursor tool argument ${toolCall.name}.${name} is not JSON-serializable`);encoded[name]=toBinary(ValueSchema,fromJson(ValueSchema,value))}}return encoded}function createCursorMcpResult(result){return result.isError?create(McpToolResultSchema,{result:{case:"error",value:create(McpToolErrorSchema,{error:toolResultToText(result)})}}):create(McpToolResultSchema,{result:{case:"success",value:create(McpSuccessSchema,{content:result.content.map(item=>item.type==="text"?create(McpToolResultContentItemSchema,{content:{case:"text",value:create(McpTextContentSchema,{text:item.text})}}):create(McpToolResultContentItemSchema,{content:{case:"image",value:create(McpImageContentSchema,{data:Uint8Array.from(Uint8Array.from(atob(item.data),c=>c.charCodeAt(0))),mimeType:item.mimeType})}}))})}})}function createCursorToolCallStep(toolCall,result){let mcpCall=create(McpToolCallSchema,{args:create(McpArgsSchema,{name:toolCall.name,args:encodeCursorMcpArguments(toolCall),toolCallId:toolCall.id,providerIdentifier:"pi-agent",toolName:toolCall.name}),...result?{result:createCursorMcpResult(result)}:{}});return create(ConversationStepSchema,{message:{case:"toolCall",value:create(ToolCallSchema,{tool:{case:"mcpToolCall",value:mcpCall},toolCallId:toolCall.id})}})}function buildConversationTurns(messages,blobStore,activeUserMessageIndex=findLastUserMessageIndex(messages)){let turns=[],historyEnd=activeUserMessageIndex>=0?activeUserMessageIndex:messages.length,toolResults=new Map,pairedToolCallIds=new Set;for(let index=0;index<historyEnd;index++){let message=messages[index];if(message.role==="toolResult")toolResults.set(message.toolCallId,message);else if(message.role==="assistant")for(let item of message.content)item.type==="toolCall"&&pairedToolCallIds.add(item.id)}let i=0;for(;i<messages.length;){let msg=messages[i];if(msg.role!=="user"){i++;continue}if(i===activeUserMessageIndex)break;let userText=extractUserMessageText(msg);if(userText.length===0&&!hasUserMessageImages(msg)){i++;continue}let userMessage=createCursorUserMessage(msg.content,userText,deterministicUuid2(`u:${turns.length}:${cursorUserContentKey(msg.content)}`)),userMessageBlobId=storeCursorBlob(blobStore,toBinary(UserMessageSchema,userMessage)),stepBlobIds=[];for(i++;i<messages.length&&messages[i].role!=="user";){let stepMsg=messages[i];if(stepMsg.role==="assistant")for(let item of stepMsg.content){let step;if(item.type==="text"){if(!item.text)continue;step=create(ConversationStepSchema,{message:{case:"assistantMessage",value:create(AssistantMessageSchema,{text:item.text})}})}else{if(item.type==="thinking")continue;if(item.type==="toolCall")step=createCursorToolCallStep(item,toolResults.get(item.id));else continue}stepBlobIds.push(storeCursorBlob(blobStore,toBinary(ConversationStepSchema,step)))}else if(stepMsg.role==="toolResult"&&!pairedToolCallIds.has(stepMsg.toolCallId)){let text=toolResultToText(stepMsg);if(text){let prefix=stepMsg.isError?"[Tool Error]":"[Tool Result]",step=create(ConversationStepSchema,{message:{case:"assistantMessage",value:create(AssistantMessageSchema,{text:`${prefix}
@@ -40,4 +40,4 @@ ${text}`})}});stepBlobIds.push(storeCursorBlob(blobStore,toBinary(ConversationSt
40
40
  `).map(line=>line.trimEnd()).filter(line=>line.length>0&&!line.startsWith("[")&&!line.toLowerCase().startsWith("no matches")),workspaceKey=args.path||".",unionResult;if(outputMode==="files_with_matches"){let files=lines;unionResult=create(GrepUnionResultSchema,{result:{case:"files",value:create(GrepFilesResultSchema,{files,totalFiles:files.length,clientTruncated,ripgrepTruncated:!1,offsetApplied:args.offset})}})}else if(outputMode==="count"){let counts=lines.map(line=>{let separatorIndex=line.lastIndexOf(":");if(separatorIndex===-1)return null;let file=line.slice(0,separatorIndex),count=Number.parseInt(line.slice(separatorIndex+1),10);return!file||Number.isNaN(count)?null:create(GrepFileCountSchema,{file,count})}).filter(entry=>entry!==null),totalMatches=counts.reduce((sum,entry)=>sum+entry.count,0);unionResult=create(GrepUnionResultSchema,{result:{case:"count",value:create(GrepCountResultSchema,{counts,totalFiles:counts.length,totalMatches,clientTruncated,ripgrepTruncated:!1,offsetApplied:args.offset})}})}else{let matchMap=new Map,totalMatchedLines=0;for(let line of lines){let matchLine=line.match(/^(.+?):(\d+):\s?(.*)$/),contextLine=line.match(/^(.+?)-(\d+)-\s?(.*)$/),match=matchLine??contextLine;if(!match)continue;let[,file,lineNumber,content]=match,isContextLine=!!contextLine,list=matchMap.get(file)??[];list.push({line:Number(lineNumber),content,isContextLine}),matchMap.set(file,list),isContextLine||(totalMatchedLines+=1)}let matches=Array.from(matchMap.entries()).map(([file,fileMatches])=>create(GrepFileMatchSchema,{file,matches:fileMatches.map(entry=>create(GrepContentMatchSchema,{lineNumber:entry.line,content:entry.content,contentTruncated:!1,isContextLine:entry.isContextLine}))})),totalLines=matches.reduce((sum,entry)=>sum+entry.matches.length,0);unionResult=create(GrepUnionResultSchema,{result:{case:"content",value:create(GrepContentResultSchema,{matches,totalLines,totalMatchedLines,clientTruncated,ripgrepTruncated:!1,offsetApplied:args.offset})}})}return create(GrepResultSchema,{result:{case:"success",value:create(GrepSuccessSchema,{pattern:args.pattern,path:args.path||"",outputMode,workspaceResults:{[workspaceKey]:unionResult}})}})}function buildGrepErrorResult(error){return create(GrepResultSchema,{result:{case:"error",value:create(GrepErrorSchema,{error})}})}function emptyGrepPatternRejection(pattern,glob){return pattern&&pattern.trim().length>0?null:glob&&glob.length>0?`grep pattern is required (received an empty pattern). To list files matching "${glob}", pass a non-empty regex (e.g. ".") and set path to that glob, or use the ls/read tool instead.`:"grep pattern is required (received an empty pattern)."}function buildDiagnosticsResultFromToolResult(path,toolResult){let text=toolResultToText2(toolResult);return toolResult.isError?buildDiagnosticsErrorResult(path,text||"Diagnostics failed"):create(DiagnosticsResultSchema,{result:{case:"success",value:create(DiagnosticsSuccessSchema,{path,diagnostics:[],totalDiagnostics:0})}})}function buildDiagnosticsErrorResult(_path,error){return create(DiagnosticsResultSchema,{result:{case:"error",value:create(DiagnosticsErrorSchema,{error})}})}function buildDiagnosticsRejectedResult(path,reason){return create(DiagnosticsResultSchema,{result:{case:"rejected",value:create(DiagnosticsRejectedSchema,{path,reason})}})}function parseToolArgsJson(text){let trimmed=text.trim();if(!trimmed)return text;try{return parseJsonWithRepair(trimmed)}catch{return text}}function decodeMcpArgValue(value){try{let parsedValue=fromBinary(ValueSchema,value),jsonValue=toJson(ValueSchema,parsedValue);return typeof jsonValue=="string"?parseToolArgsJson(jsonValue):jsonValue}catch{}let text=new TextDecoder().decode(value);return parseToolArgsJson(text)}function decodeMcpArgsMap(args){if(!args)return;let decoded={};for(let[key,value]of Object.entries(args))decoded[key]=decodeMcpArgValue(value);return decoded}function decodeMcpCall(args){let decodedArgs={};for(let[key,value]of Object.entries(args.args??{}))decodedArgs[key]=decodeMcpArgValue(value);return{name:args.name,providerIdentifier:args.providerIdentifier,toolName:args.toolName||args.name,toolCallId:args.toolCallId,args:decodedArgs,rawArgs:args.args??{},approvalOnly:args.smartModeApprovalOnly===!0}}function mapTodoStatusValue(status){switch(status){case 2:return"in_progress";case 3:return"completed";case 4:return"abandoned";default:return"pending"}}function selectTodoCalls(toolCall){let oneof=toolCall.tool;return oneof?.case==="updateTodosToolCall"?{update:oneof.value}:oneof?.case==="readTodosToolCall"?{read:oneof.value}:{update:toolCall.updateTodosToolCall,read:toolCall.readTodosToolCall}}function mapTodoSnapshot(todos){return todos.map(todo=>({content:typeof todo.content=="string"?todo.content:"",status:mapTodoStatusValue(typeof todo.status=="number"?todo.status:void 0)}))}function selectMcpCall(toolCall){let oneof=toolCall?.tool;return oneof?.case==="mcpToolCall"?oneof.value:toolCall?.mcpToolCall}var EXEC_OWNED_TOOL_CALL_CASES=new Set(["piReadToolCall","piBashToolCall","piEditToolCall","piWriteToolCall","piGrepToolCall","piFindToolCall","piLsToolCall","listMcpResourcesToolCall","readMcpResourceToolCall"]);function isExecOwnedToolCall(toolCall){let variant=toolCall?.tool?.case;return variant!==void 0&&EXEC_OWNED_TOOL_CALL_CASES.has(variant)}function flushOpenToolCalls(output,stream2,state){let openBlocks=new Set(state.openToolCalls.values());state.currentToolCall&&openBlocks.add(state.currentToolCall);for(let block of openBlocks){let idx=output.content.indexOf(block),partialJson=block[kStreamingPartialJson];partialJson!==void 0&&(block.arguments=parseStreamingJson(partialJson),clearStreamingPartialJson(block));let kind=block[kStreamingBlockKind];(kind==="connect-scm"||kind==="todo")&&state.onToolResult?.({role:"toolResult",toolCallId:block.id,toolName:block.name,content:[{type:"text",text:"The connection to Cursor closed before this call completed."}],isError:!0,timestamp:Date.now()}),stream2.push({type:"toolcall_end",contentIndex:idx,toolCall:block,partial:output})}state.openToolCalls.clear(),state.setToolCall(null)}function retainStreamedCall(state,block,envelopeId){envelopeId&&state.openToolCalls.set(envelopeId,block),state.setToolCall(block)}function resolveStreamedCall(state,envelopeId){if(!envelopeId)return state.currentToolCall;let keyed=state.openToolCalls.get(envelopeId);if(keyed)return keyed;let current=state.currentToolCall;return current&&current[kStreamingEnvelopeId]===void 0?current:null}function releaseStreamedCall(state,block){let envelopeId=block[kStreamingEnvelopeId];envelopeId&&state.openToolCalls.delete(envelopeId),state.currentToolCall===block&&state.setToolCall(null)}function selectConnectScmCall(toolCall){let oneof=toolCall?.tool;return oneof?.case==="connectScmToolCall"?oneof.value:toolCall?.connectScmToolCall}function selectConnectScmRepository(call){let target=call?.args?.target;return target?.case==="github"?target.value?.repository:call?.args?.github?.repository}function describeConnectScmResult(call){let result=call?.result?.result;switch(result?.case){case"success":return{text:"SCM connected",isError:!1};case"error":return{text:result.value?.error||"SCM connection failed",isError:!0};case"rejected":return{text:result.value?.reason||"SCM connection rejected",isError:!0};default:return{text:"SCM connection reported no result",isError:!0}}}function extractTodoSnapshot(toolCall){let{update,read}=selectTodoCalls(toolCall);if(read&&((read.args?.statusFilter?.length??0)>0||(read.args?.idFilter?.length??0)>0))return null;let call=update??read;if(!call)return null;let result=call.result?.result;if(result?.case!=="success")return null;let todos=result.value?.todos;if(!todos)return null;let totalCount=result.value?.totalCount;if(typeof totalCount=="number"&&totalCount!==todos.length||read&&todos.length===0)return null;let mapped=mapTodoSnapshot(todos);return mapped.some(todo=>todo.content.length===0)?null:{todos:mapped,merged:result.value?.wasMerge===!0}}function extractTodoError(toolCall){let{update,read}=selectTodoCalls(toolCall),result=(update??read)?.result?.result;if(result?.case!=="error")return null;let error=result.value?.error;return typeof error=="string"&&error.length>0?error:"Todo operation failed"}function buildTodoDisplayArgs(toolCall){let args=selectTodoCalls(toolCall).update?.args;return{todos:args?.todos?mapTodoSnapshot(args.todos):[],merge:args?.merge===!0?!0:void 0}}function buildTodoToolResult(toolCallId,snapshot,error){let text=error??(snapshot?formatTodoSnapshotSummary(snapshot.todos):"Todo snapshot not mirrored");return{role:"toolResult",toolCallId,toolName:"todo",content:[{type:"text",text}],isError:error!==null,timestamp:Date.now()}}function formatTodoSnapshotSummary(todos){return todos.length===0?"No todos":`${todos.filter(todo=>todo.status==="completed").length}/${todos.length} tasks completed`}function buildMcpResultFromToolResult(_mcpCall,toolResult){if(toolResult.isError)return buildMcpErrorResult(toolResultToText2(toolResult)||"MCP tool failed");let content=toolResult.content.map(item=>item.type==="image"?create(McpToolResultContentItemSchema,{content:{case:"image",value:create(McpImageContentSchema,{data:Uint8Array.from(Buffer.from(item.data,"base64")),mimeType:item.mimeType})}}):create(McpToolResultContentItemSchema,{content:{case:"text",value:create(McpTextContentSchema,{text:item.text})}}));return create(McpResultSchema,{result:{case:"success",value:create(McpSuccessSchema,{content,isError:!1})}})}function buildMcpToolNotFoundResult(mcpCall){return create(McpResultSchema,{result:{case:"toolNotFound",value:create(McpToolNotFoundSchema,{name:mcpCall.toolName,availableTools:[]})}})}function buildMcpErrorResult(error){return create(McpResultSchema,{result:{case:"error",value:create(McpErrorSchema,{error})}})}function mergeCursorMcpToolCallArgs(streamed,completion){let merged={...streamed??{}};if(!completion)return merged;for(let[key,completionValue]of Object.entries(completion)){let streamedValue=merged[key];typeof completionValue=="string"&&streamedValue!==null&&typeof streamedValue=="object"||(merged[key]=completionValue)}return merged}function endCurrentTextBlock(output,stream2,state){let block=state.currentTextBlock;if(!block)return;let idx=output.content.indexOf(block);stream2.push({type:"text_end",contentIndex:idx,content:block.text,partial:output}),state.setTextBlock(null)}function endCurrentThinkingBlock(output,stream2,state){let block=state.currentThinkingBlock;if(!block)return;let idx=output.content.indexOf(block);stream2.push({type:"thinking_end",contentIndex:idx,content:block.thinking,partial:output}),state.setThinkingBlock(null)}function ensureUniqueCursorExecToolCallId(output,args){if(!args.toolCallId){args.toolCallId=randomUUID3();return}let base=args.toolCallId,candidate=base,suffix=2;for(;output.content.some(block=>block.type==="toolCall"&&block.id===candidate);)candidate=`${base}-${suffix}`,suffix+=1;args.toolCallId=candidate}function synthesizeCursorExecToolCall(output,stream2,state,toolCallId,toolName,args){endCurrentTextBlock(output,stream2,state),endCurrentThinkingBlock(output,stream2,state);let block={type:"toolCall",id:toolCallId,name:toolName,arguments:omitUndefinedArgs(args),[kStreamingBlockIndex]:output.content.length,[kStreamingBlockKind]:"cursor-exec",[kCursorExecResolved]:!0};output.content.push(block);let idx=output.content.length-1;stream2.push({type:"toolcall_start",contentIndex:idx,partial:output}),stream2.push({type:"toolcall_end",contentIndex:idx,toolCall:block,partial:output})}async function pairSynthesizedExecResult(state,onToolResult,toolCallId,toolName,text,isError=!0){let synthesized={role:"toolResult",toolCallId,toolName,content:[{type:"text",text}],isError,timestamp:Date.now()},sink=onToolResult??state.onToolResult;sink&&await sink(synthesized)}var STREAMING_ARGS_REPARSE_DELTA=1024;function processInteractionUpdate(update,output,stream2,state,usageState){let updateCase=update.message?.case;if(log("interactionUpdate",updateCase),updateCase==="textDelta"){let delta=update.message.value.text||"";if(!state.currentTextBlock){let block={type:"text",text:"",[kStreamingBlockIndex]:output.content.length};output.content.push(block),state.setTextBlock(block),stream2.push({type:"text_start",contentIndex:output.content.length-1,partial:output})}state.currentTextBlock.text+=delta;let idx=output.content.indexOf(state.currentTextBlock);stream2.push({type:"text_delta",contentIndex:idx,delta,partial:output})}else if(updateCase==="thinkingDelta"){let delta=update.message.value.text||"";if(!state.currentThinkingBlock){let block={type:"thinking",thinking:"",[kStreamingBlockIndex]:output.content.length};output.content.push(block),state.setThinkingBlock(block),stream2.push({type:"thinking_start",contentIndex:output.content.length-1,partial:output})}state.currentThinkingBlock.thinking+=delta;let idx=output.content.indexOf(state.currentThinkingBlock);stream2.push({type:"thinking_delta",contentIndex:idx,delta,partial:output})}else if(updateCase==="thinkingCompleted")endCurrentThinkingBlock(output,stream2,state);else if(updateCase==="toolCallStarted"&&selectConnectScmCall(update.message.value.toolCall)){endCurrentTextBlock(output,stream2,state),endCurrentThinkingBlock(output,stream2,state);let scmCall=selectConnectScmCall(update.message.value.toolCall),repository=selectConnectScmRepository(scmCall),block={type:"toolCall",id:scmCall?.args?.toolCallId||update.message.value.callId||randomUUID3(),name:"connect_scm",arguments:repository?{owner:repository.owner,repo:repository.repo}:{},[kStreamingBlockIndex]:output.content.length,[kStreamingBlockKind]:"connect-scm",[kStreamingEnvelopeId]:update.message.value.callId||void 0,[kCursorExecResolved]:!0};output.content.push(block),retainStreamedCall(state,block,update.message.value.callId),stream2.push({type:"toolcall_start",contentIndex:output.content.length-1,partial:output})}else if(updateCase==="toolCallStarted"&&isExecOwnedToolCall(update.message.value.toolCall))endCurrentTextBlock(output,stream2,state),endCurrentThinkingBlock(output,stream2,state),log("exec","streamedToolCallOwnedByExec",{case:update.message.value.toolCall?.tool?.case});else if(updateCase==="toolCallStarted"){endCurrentTextBlock(output,stream2,state),endCurrentThinkingBlock(output,stream2,state);let toolCall=update.message.value.toolCall;if(toolCall){let mcpCall=selectMcpCall(toolCall);if(mcpCall){let args=mcpCall.args||{},id=args.toolCallId||randomUUID3(),resolvedByExec=state.resolvedMcpToolCallIds.delete(id);if(resolvedByExec&&output.content.some(block2=>block2.type==="toolCall"&&block2.id===id))return;let block={type:"toolCall",id,name:args.toolName||args.name||"",arguments:{},[kStreamingBlockIndex]:output.content.length,[kStreamingPartialJson]:"",[kStreamingBlockKind]:"mcp",[kStreamingEnvelopeId]:update.message.value.callId||void 0};resolvedByExec&&markCursorExecResolved(block),output.content.push(block),retainStreamedCall(state,block,update.message.value.callId),stream2.push({type:"toolcall_start",contentIndex:output.content.length-1,partial:output});return}let todoCalls=selectTodoCalls(toolCall);if(todoCalls.update||todoCalls.read){let block={type:"toolCall",id:update.message.value.callId||randomUUID3(),name:"todo",arguments:buildTodoDisplayArgs(toolCall),[kStreamingBlockIndex]:output.content.length,[kStreamingBlockKind]:"todo",[kStreamingEnvelopeId]:update.message.value.callId||void 0,[kCursorExecResolved]:!0};output.content.push(block),retainStreamedCall(state,block,update.message.value.callId),stream2.push({type:"toolcall_start",contentIndex:output.content.length-1,partial:output})}}}else if(updateCase==="toolCallDelta"||updateCase==="partialToolCall"){let target=resolveStreamedCall(state,update.message.value.callId);if(target?.[kStreamingBlockKind]==="mcp"){let snapshot=update.message.value.argsTextDelta||"",current=target[kStreamingPartialJson]??"",chunk=snapshot.startsWith(current)?snapshot.slice(current.length):snapshot;if(chunk.length===0)return;let nextBuffer=current+chunk;target[kStreamingPartialJson]=nextBuffer;let lastParseLen=target[kStreamingLastParseLen]??0;nextBuffer.length-lastParseLen>=STREAMING_ARGS_REPARSE_DELTA&&(target.arguments=parseStreamingJson(nextBuffer),target[kStreamingLastParseLen]=nextBuffer.length);let idx=output.content.indexOf(target);stream2.push({type:"toolcall_delta",contentIndex:idx,delta:chunk,partial:output})}}else if(updateCase==="toolCallCompleted"){let settled=resolveStreamedCall(state,update.message.value.callId);if(settled){let toolCall=update.message.value.toolCall;if(settled[kStreamingBlockKind]==="mcp"){let previousArgs=settled.arguments,partial=settled[kStreamingPartialJson];partial!==void 0&&(settled.arguments=parseStreamingJson(partial));let decodedArgs=decodeMcpArgsMap(selectMcpCall(toolCall)?.args?.args);settled.arguments=mergeCursorMcpToolCallArgs(settled.arguments,decodedArgs),settled.name==="task"&&(settled.arguments=keepUsableCursorTaskArgs(previousArgs,settled.arguments))}else if(settled[kStreamingBlockKind]==="connect-scm"){let scmCall=selectConnectScmCall(toolCall),repository=selectConnectScmRepository(scmCall);repository&&(settled.arguments={owner:repository.owner,repo:repository.repo});let{text,isError}=describeConnectScmResult(scmCall);state.onToolResult?.({role:"toolResult",toolCallId:settled.id,toolName:"connect_scm",content:[{type:"text",text}],isError,timestamp:Date.now()})}else if(settled[kStreamingBlockKind]==="todo"){let snapshot=toolCall?extractTodoSnapshot(toolCall):null,error=toolCall?extractTodoError(toolCall):null;snapshot&&(settled.arguments={todos:snapshot.todos,merged:snapshot.merged}),state.onToolResult?.(buildTodoToolResult(settled.id,snapshot,error))}let idx=output.content.indexOf(settled);clearStreamingPartialJson(settled),stream2.push({type:"toolcall_end",contentIndex:idx,toolCall:settled,partial:output}),releaseStreamedCall(state,settled)}}else if(updateCase==="turnEnded")output.stopReason="stop",applyBilledTurnEndedUsage(update.message.value,output,usageState);else if(updateCase==="tokenDelta"){let tokenDelta=update.message.value;usageState.sawTokenDelta=!0,output.usage.output+=tokenDelta.tokens||0,output.usage.totalTokens=output.usage.input+output.usage.output+output.usage.cacheRead+output.usage.cacheWrite}}function applyBilledTurnEndedUsage(update,output,usageState){let{inputTokens,outputTokens,cacheReadTokens,cacheWriteTokens}=update;if(inputTokens===void 0&&outputTokens===void 0&&cacheReadTokens===void 0&&cacheWriteTokens===void 0)return;usageState.sawTurnEndedUsage=!0;let usage=output.usage,cacheRead=Number(cacheReadTokens??0n),cacheWrite=Number(cacheWriteTokens??0n),liveUsed=usageState.liveUsedTokens??0;if(liveUsed>0&&cacheRead>liveUsed*3){outputTokens!==void 0&&(usage.output=Number(outputTokens)),usage.cacheRead=0,usage.cacheWrite=cacheWrite<=liveUsed?cacheWrite:0,usage.input=Math.max(0,liveUsed-usage.output-usage.cacheWrite),usage.totalTokens=liveUsed;return}usage.cacheRead=cacheRead,usage.cacheWrite=cacheWrite,usage.input=Math.max(0,Number(inputTokens??0n)-usage.cacheRead-usage.cacheWrite),outputTokens!==void 0&&(usage.output=Number(outputTokens)),usage.totalTokens=usage.input+usage.output+usage.cacheRead+usage.cacheWrite}function applyCheckpointTokenDetails(checkpoint,output,usageState){if(usageState.sawTurnEndedUsage)return;let usedTokens=checkpoint.tokenDetails?.usedTokens??0;if(usedTokens<=0)return;usageState.liveUsedTokens=usedTokens;let usage=output.usage;usage.input=Math.max(0,usedTokens-usage.output-usage.cacheRead-usage.cacheWrite),usage.totalTokens=usage.input+usage.output+usage.cacheRead+usage.cacheWrite}function createBlobId(data){return new Uint8Array(createHash3("sha256").update(data).digest())}function storeCursorBlob2(blobStore,data){let blobId=createBlobId(data);return blobStore.set(Buffer.from(blobId).toString("hex"),data),blobId}function readCursorBlob2(blobStore,blobId){let data=blobStore.get(Buffer.from(blobId).toString("hex"));if(!data)throw new Error("Cursor blob not found");return data}var CURSOR_NATIVE_TOOL_NAMES=new Set(["bash","read","write","delete","ls","grep","todo"]);function toolParametersToJsonSchema(tool){try{return JSON.parse(JSON.stringify(tool.parameters))}catch{return{type:"object",properties:{},required:[]}}}var CURSOR_UNSUPPORTED_SCHEMA_KEYS=new Set(["oneOf","anyOf","allOf"]);function sanitizeCursorToolSchema(schema){if(Array.isArray(schema))return schema.map(sanitizeCursorToolSchema);if(schema===null||typeof schema!="object")return schema;let sanitized={};for(let[key,value]of Object.entries(schema))CURSOR_UNSUPPORTED_SCHEMA_KEYS.has(key)||(sanitized[key]=sanitizeCursorToolSchema(value));return sanitized}function buildMcpToolDefinitions(tools){if(!tools||tools.length===0)return[];let advertisedTools=tools.filter(tool=>!CURSOR_NATIVE_TOOL_NAMES.has(tool.name));return advertisedTools.length===0?[]:advertisedTools.map(tool=>{let jsonSchema=sanitizeCursorToolSchema(toolParametersToJsonSchema(tool)),inputSchema=toBinary(ValueSchema,fromJson(ValueSchema,jsonSchema&&typeof jsonSchema=="object"?jsonSchema:{type:"object",properties:{},required:[]}));return create(McpToolDefinitionSchema,{name:tool.name,description:tool.description||"",providerIdentifier:"pi-agent",toolName:tool.name,inputSchema})})}function extractUserMessageText2(msg){if(msg.role!=="user")return"";let content=msg.content;return typeof content=="string"?content.trim():content.filter(c=>c.type==="text").map(c=>c.text).join(`
41
41
  `).trim()}function hasUserMessageImages2(msg){return msg.role==="user"&&Array.isArray(msg.content)&&msg.content.some(item=>item.type==="image")}function buildCursorRootPromptContent2(content){if(typeof content=="string"){let text=content.trim();return text?[{type:"text",text}]:[]}let parts=[];for(let item of content)if(item.type==="text"){let text=item.text.trim();text&&parts.push({type:"text",text})}else parts.push({type:"image",image:`data:${item.mimeType};base64,${item.data}`,mediaType:item.mimeType});return parts}function cursorUserContentKey2(content){if(typeof content=="string")return content.trim();let hash=createHash3("sha256");for(let item of content)hash.update(item.type),item.type==="text"?hash.update(item.text):(hash.update(item.mimeType),hash.update(item.data));return hash.digest("hex")}function buildCursorAssistantContent2(msg){let content=[];for(let item of msg.content)item.type==="text"?item.text&&content.push({type:"text",text:item.text}):item.type==="toolCall"&&content.push({type:"tool-call",toolCallId:item.id,toolName:item.name,args:item.arguments});return content}function findLastUserMessageIndex2(messages){for(let i=messages.length-1;i>=0;i--)if(messages[i].role==="user")return i;return-1}function buildCursorSystemPromptJsons(systemPrompt,modelId){let trimmed=systemPrompt?.trim(),host=trimmed?[JSON.stringify({role:"system",content:trimmed})]:[JSON.stringify({role:"system",content:"You are a helpful assistant."})];return modelId!==void 0&&isCursorComposerModel(modelId)?[JSON.stringify({role:"system",content:CURSOR_COMPOSER_PROMPT}),...host]:host}function buildRootPromptMessagesJson2(messages,systemPromptIds,blobStore,activeUserMessageIndex=findLastUserMessageIndex2(messages)){let entries=[...systemPromptIds],pushJson=obj=>{let bytes=new TextEncoder().encode(JSON.stringify(obj));entries.push(storeCursorBlob2(blobStore,bytes))};for(let i=0;i<messages.length&&i!==activeUserMessageIndex;i++){let msg=messages[i];if(msg.role==="user"){let content=buildCursorRootPromptContent2(msg.content);if(content.length===0)continue;pushJson({role:"user",content})}else if(msg.role==="assistant"){let content=buildCursorAssistantContent2(msg);if(content.length===0)continue;pushJson({role:"assistant",content})}else msg.role==="toolResult"&&pushJson({role:"tool",id:msg.toolCallId,content:[{type:"tool-result",toolName:msg.toolName,toolCallId:msg.toolCallId,result:toolResultToText2(msg),...msg.isError?{isError:!0}:{}}]})}return entries}function isPlainRecord2(value){if(value===null||typeof value!="object"||Array.isArray(value))return!1;let prototype=Object.getPrototypeOf(value);return prototype===Object.prototype||prototype===null}function isJsonValue2(value){if(value===null||typeof value=="string"||typeof value=="boolean")return!0;if(typeof value=="number")return Number.isFinite(value);if(Array.isArray(value))return value.every(isJsonValue2);if(!isPlainRecord2(value))return!1;for(let key in value)if(!isJsonValue2(value[key]))return!1;return!0}function encodeCursorMcpArguments2(toolCall){let encoded={};for(let name in toolCall.arguments){let value=toolCall.arguments[name];if(value!==void 0){if(!isJsonValue2(value))throw new Error(`Cursor tool argument ${toolCall.name}.${name} is not JSON-serializable`);encoded[name]=toBinary(ValueSchema,fromJson(ValueSchema,value))}}return encoded}function createCursorMcpResult2(result){return result.isError?create(McpToolResultSchema,{result:{case:"error",value:create(McpToolErrorSchema,{error:toolResultToText2(result)})}}):create(McpToolResultSchema,{result:{case:"success",value:create(McpSuccessSchema,{content:result.content.map(item=>item.type==="text"?create(McpToolResultContentItemSchema,{content:{case:"text",value:create(McpTextContentSchema,{text:item.text})}}):create(McpToolResultContentItemSchema,{content:{case:"image",value:create(McpImageContentSchema,{data:Uint8Array.from(Buffer.from(item.data,"base64")),mimeType:item.mimeType})}}))})}})}function createCursorToolCallStep2(toolCall,result){let mcpCall=create(McpToolCallSchema,{args:create(McpArgsSchema,{name:toolCall.name,args:encodeCursorMcpArguments2(toolCall),toolCallId:toolCall.id,providerIdentifier:"pi-agent",toolName:toolCall.name}),...result?{result:createCursorMcpResult2(result)}:{}});return create(ConversationStepSchema,{message:{case:"toolCall",value:create(ToolCallSchema,{tool:{case:"mcpToolCall",value:mcpCall},toolCallId:toolCall.id})}})}function buildConversationTurns2(messages,blobStore,activeUserMessageIndex=findLastUserMessageIndex2(messages)){let turns=[],historyEnd=activeUserMessageIndex>=0?activeUserMessageIndex:messages.length,toolResults=new Map,pairedToolCallIds=new Set;for(let index=0;index<historyEnd;index++){let message=messages[index];if(message.role==="toolResult")toolResults.set(message.toolCallId,message);else if(message.role==="assistant")for(let item of message.content)item.type==="toolCall"&&pairedToolCallIds.add(item.id)}let i=0;for(;i<messages.length;){let msg=messages[i];if(msg.role!=="user"){i++;continue}if(i===activeUserMessageIndex)break;let userText=extractUserMessageText2(msg);if(userText.length===0&&!hasUserMessageImages2(msg)){i++;continue}let userMessage=createCursorUserMessage2(msg.content,userText,deterministicUuid(`u:${turns.length}:${cursorUserContentKey2(msg.content)}`)),userMessageBlobId=storeCursorBlob2(blobStore,toBinary(UserMessageSchema,userMessage)),stepBlobIds=[];for(i++;i<messages.length&&messages[i].role!=="user";){let stepMsg=messages[i];if(stepMsg.role==="assistant")for(let item of stepMsg.content){let step;if(item.type==="text"){if(!item.text)continue;step=create(ConversationStepSchema,{message:{case:"assistantMessage",value:create(AssistantMessageSchema,{text:item.text})}})}else{if(item.type==="thinking")continue;if(item.type==="toolCall")step=createCursorToolCallStep2(item,toolResults.get(item.id));else continue}stepBlobIds.push(storeCursorBlob2(blobStore,toBinary(ConversationStepSchema,step)))}else if(stepMsg.role==="toolResult"&&!pairedToolCallIds.has(stepMsg.toolCallId)){let text=toolResultToText2(stepMsg);if(text){let prefix=stepMsg.isError?"[Tool Error]":"[Tool Result]",step=create(ConversationStepSchema,{message:{case:"assistantMessage",value:create(AssistantMessageSchema,{text:`${prefix}
42
42
  ${text}`})}});stepBlobIds.push(storeCursorBlob2(blobStore,toBinary(ConversationStepSchema,step)))}}i++}let agentTurn=create(AgentConversationTurnStructureSchema,{userMessage:userMessageBlobId,steps:stepBlobIds}),turn=create(ConversationTurnStructureSchema,{turn:{case:"agentConversationTurn",value:agentTurn}});turns.push(storeCursorBlob2(blobStore,toBinary(ConversationTurnStructureSchema,turn)))}return turns}function buildCursorHistoryForTest(messages,activeUserMessageIndex=findLastUserMessageIndex2(messages)){let blobStore=new Map,rootPromptMessagesJson=buildRootPromptMessagesJson2(messages,[],blobStore,activeUserMessageIndex).map(blobId=>JSON.parse(new TextDecoder().decode(readCursorBlob2(blobStore,blobId)))),turnUserMessagesJson=[],turnStepMessagesJson=[];for(let turnBlobId of buildConversationTurns2(messages,blobStore,activeUserMessageIndex)){let turn=fromBinary(ConversationTurnStructureSchema,readCursorBlob2(blobStore,turnBlobId));if(turn.turn.case!=="agentConversationTurn")continue;let userMessage=fromBinary(UserMessageSchema,readCursorBlob2(blobStore,turn.turn.value.userMessage));turnUserMessagesJson.push(toJson(UserMessageSchema,userMessage)),turnStepMessagesJson.push(turn.turn.value.steps.map(stepBlobId=>{let step=fromBinary(ConversationStepSchema,readCursorBlob2(blobStore,stepBlobId));return toJson(ConversationStepSchema,step)}))}return{rootPromptMessagesJson,turnUserMessagesJson,turnStepMessagesJson}}function createCursorUserMessage2(content,text,messageId=randomUUID3()){let images=typeof content=="string"?[]:extractImages2(content);return create(UserMessageSchema,{text,messageId,...images.length>0?{selectedContext:create(SelectedContextSchema,{selectedImages:images})}:{}})}function extractImages2(content){return content.filter(item=>item.type==="image").map(image=>create(SelectedImageSchema,{uuid:randomUUID3(),mimeType:image.mimeType,dataOrBlobId:{case:"data",value:Uint8Array.from(Buffer.from(image.data,"base64"))}}))}function toCursorRequestView(context){return{systemPrompt:getCurrentSystemPrompt(context.messages),messages:context.messages.filter(message=>message.role!=="system"),tools:getCurrentTools(context.messages)}}async function buildGrpcRequest(model,request,options,state){let blobStore=state.blobStore,systemPromptIds=buildCursorSystemPromptJsons(request.systemPrompt,model.id).map(json=>storeCursorBlob2(blobStore,new TextEncoder().encode(json))),activeUserMessageIndex=request.messages.length-1,activeMessage=request.messages[activeUserMessageIndex],activeUserMessage=activeMessage?.role==="user"?activeMessage:void 0,userContent,userText="",hasUserImages=!1;activeUserMessage&&(userContent=activeUserMessage.content,typeof userContent=="string"?userText=userContent.trim():(userText=extractText(userContent),hasUserImages=hasImages(userContent)));let action=create(ConversationActionSchema,{action:!state.forceResumeAction&&userContent&&(userText.trim().length>0||hasUserImages)?{case:"userMessageAction",value:create(UserMessageActionSchema,{userMessage:createCursorUserMessage2(userContent,userText)})}:{case:"resumeAction",value:create(ResumeActionSchema,{})}}),turns=buildConversationTurns2(request.messages,blobStore,activeUserMessage?activeUserMessageIndex:-1),rootPromptMessagesJson=buildRootPromptMessagesJson2(request.messages,systemPromptIds,blobStore,activeUserMessage?activeUserMessageIndex:-1),cachedPromptHead=state.conversationState?.rootPromptMessagesJson?.slice(0,systemPromptIds.length)??[],hasMatchingPrompt=cachedPromptHead.length===systemPromptIds.length&&systemPromptIds.every((id,idx)=>Buffer.from(cachedPromptHead[idx]).equals(id)),baseState=state.conversationState&&hasMatchingPrompt?state.conversationState:create(ConversationStateStructureSchema,{rootPromptMessagesJson:systemPromptIds,turns:[],todos:[],pendingToolCalls:[],previousWorkspaceUris:[],fileStates:{},fileStatesV2:{},summaryArchives:[],turnTimings:[],subagentStates:{},selfSummaryCount:0,readPaths:[]}),conversationState=create(ConversationStateStructureSchema,{...baseState,rootPromptMessagesJson,turns}),requestedModel=state.pinnedRequestedModel??buildRequestedModel(model,options?.thinkingSelection),wireModelId=requestedModel.modelId,cursorMaxMode=model.compat?.cursorMaxMode===!0,modelDetails=state.pinnedModelDetails??create(ModelDetailsSchema,{modelId:wireModelId,displayModelId:model.id,displayName:model.name,...cursorMaxMode?{maxMode:!0}:void 0}),runRequest=create(AgentRunRequestSchema,{conversationState,action,modelDetails,requestedModel,conversationId:state.conversationId});options?.customSystemPrompt&&(runRequest.customSystemPrompt=options.customSystemPrompt),await options?.onPayload?.(runRequest,model);let clientMessage=create(AgentClientMessageSchema,{message:{case:"runRequest",value:runRequest}}),requestBytes=toBinary(AgentClientMessageSchema,clientMessage);return log("info","builtRunRequest",{bytes:requestBytes.length,tools:request.tools.length}),{requestBytes,blobStore,conversationState,requestedModel,modelDetails}}function hasImages(content){return content.some(item=>item.type==="image")}function extractText(content){return content.filter(c=>c.type==="text").map(c=>c.text).join(`
43
- `)}var CURSOR_GET_USABLE_MODELS_PATH="/agent.v1.AgentService/GetUsableModels",CURSOR_DEFAULT_CONTEXT_WINDOW=2e5,CURSOR_DEFAULT_MAX_TOKENS=64e3,CURSOR_1M_CONTEXT_WINDOW=1e6,CURSOR_1M_NAME_PATTERN=/\b1m\b/i,CURSOR_MAX_MODE_1M_ID_PATTERN=/claude|gemini/,CURSOR_MULTIMODAL_ID_PATTERN=/claude|gemini|gpt-|codex/;async function fetchCursorUsableModels(options){let timeoutMs=options.timeoutMs??1e4;try{let requestPayload=create(GetUsableModelsRequestSchema,{customModelIds:[]}),body=toBinary(GetUsableModelsRequestSchema,requestPayload),baseUrl=(options.baseUrl??CURSOR_API_URL).replace(/\/+$/,""),responseBuffer=await new Promise(resolve=>{let client=http2.connect(baseUrl),timer=setTimeout(()=>{client.destroy(),resolve(null)},timeoutMs),abort=()=>{clearTimeout(timer),client.destroy(),resolve(null)};options.signal?.addEventListener("abort",abort,{once:!0}),client.on("error",()=>{clearTimeout(timer),resolve(null)});let req=client.request({":method":"POST",":path":CURSOR_GET_USABLE_MODELS_PATH,"content-type":"application/proto",te:"trailers",authorization:`Bearer ${options.apiKey}`,"x-ghost-mode":"true","x-cursor-client-version":CURSOR_CLIENT_VERSION,"x-cursor-client-type":"cli"}),chunks=[];req.on("data",chunk=>chunks.push(chunk)),req.on("end",()=>{clearTimeout(timer),client.close(),resolve(new Uint8Array(Buffer.concat(chunks)))}),req.on("error",()=>{clearTimeout(timer),client.close(),resolve(null)}),req.on("response",headers=>{let status=Number(headers[":status"]??0);(status<200||status>=300)&&(clearTimeout(timer),client.close(),resolve(null))}),body.length>0?req.end(Buffer.from(body)):req.end()});if(!responseBuffer||responseBuffer.length===0)return null;let decoded=decodeGetUsableModelsResponse(responseBuffer);if(!decoded)return null;let byId=new Map;for(let model of decoded.models??[]){let id=model.modelId?.trim();if(!id)continue;let name=pickModelDisplayName(model,id),labeled1M=CURSOR_1M_NAME_PATTERN.test(id)||[model.displayName,model.displayNameShort,model.displayModelId,...model.aliases??[]].some(candidate=>typeof candidate=="string"&&CURSOR_1M_NAME_PATTERN.test(candidate)),maxMode=model.maxMode===!0,contextWindow=labeled1M||maxMode&&CURSOR_MAX_MODE_1M_ID_PATTERN.test(id)?CURSOR_1M_CONTEXT_WINDOW:CURSOR_DEFAULT_CONTEXT_WINDOW;byId.set(id,{id,name,reasoning:!!model.thinkingDetails,input:CURSOR_MULTIMODAL_ID_PATTERN.test(id.toLowerCase())?["text","image"]:["text"],contextWindow,maxTokens:CURSOR_DEFAULT_MAX_TOKENS,cursorMaxMode:maxMode})}return[...byId.values()].sort((a,b)=>a.id.localeCompare(b.id))}catch{return null}}function decodeGetUsableModelsResponse(payload){let framedBody=decodeConnectUnaryBody(payload);if(framedBody)try{return fromBinary(GetUsableModelsResponseSchema,framedBody)}catch{return null}try{return fromBinary(GetUsableModelsResponseSchema,payload)}catch{return null}}function decodeConnectUnaryBody(payload){if(payload.length<5)return null;let offset=0;for(;offset+5<=payload.length;){let flags=payload[offset],messageLength=new DataView(payload.buffer,payload.byteOffset+offset,payload.byteLength-offset).getUint32(1,!1),frameEnd=offset+5+messageLength;if(frameEnd>payload.length||(flags&1)!==0)return null;if(!((flags&2)!==0))return payload.subarray(offset+5,frameEnd);offset=frameEnd}return null}function pickModelDisplayName(model,fallbackId){let candidates=[model.displayName,model.displayNameShort,model.displayModelId,...model.aliases??[]];for(let candidate of candidates){if(typeof candidate!="string")continue;let trimmed=candidate.trim();if(trimmed)return trimmed}return fallbackId}export{CURSOR_API_URL,CURSOR_CLIENT_VERSION,CURSOR_STREAM_HEALTH_FAIL_THRESHOLD_MS,CURSOR_STREAM_HEALTH_HEARTBEAT_ONLY_THRESHOLD_MS,CURSOR_TURN_END_DRAIN_TIMEOUT_MS,buildCursorHistoryForTest,buildCursorHistoryWireBytesForTest,buildCursorSystemPromptJsons,buildMcpToolDefinitions,emptyGrepPatternRejection,ensureUniqueCursorExecToolCallId,fetchCursorUsableModels,flushOpenToolCalls,frameConnectMessage,getCursorConversationCacheStats,handleServerMessage,mapH2TransportError,measureCursorHistorySerializedBytes,measureCursorModelInputSerializedBytes,mergeCursorMcpToolCallArgs,processInteractionUpdate,resolveExecHandler,sanitizeCursorCallerHeaders,sanitizeCursorToolSchema,stream,streamSimple,synthesizeCursorExecToolCall};
43
+ `)}var CURSOR_GET_USABLE_MODELS_PATH="/agent.v1.AgentService/GetUsableModels",CURSOR_DEFAULT_CONTEXT_WINDOW=2e5,CURSOR_DEFAULT_MAX_TOKENS=64e3,CURSOR_1M_CONTEXT_WINDOW=1e6,CURSOR_1M_NAME_PATTERN=/\b1m\b/i,CURSOR_MAX_MODE_1M_ID_PATTERN=/claude|gemini/;async function fetchCursorUsableModels(options){let timeoutMs=options.timeoutMs??1e4;try{let requestPayload=create(GetUsableModelsRequestSchema,{customModelIds:[]}),body=toBinary(GetUsableModelsRequestSchema,requestPayload),baseUrl=(options.baseUrl??CURSOR_API_URL).replace(/\/+$/,""),responseBuffer=await new Promise(resolve=>{let client=http2.connect(baseUrl),timer=setTimeout(()=>{client.destroy(),resolve(null)},timeoutMs),abort=()=>{clearTimeout(timer),client.destroy(),resolve(null)};options.signal?.addEventListener("abort",abort,{once:!0}),client.on("error",()=>{clearTimeout(timer),resolve(null)});let req=client.request({":method":"POST",":path":CURSOR_GET_USABLE_MODELS_PATH,"content-type":"application/proto",te:"trailers",authorization:`Bearer ${options.apiKey}`,"x-ghost-mode":"true","x-cursor-client-version":CURSOR_CLIENT_VERSION,"x-cursor-client-type":"cli"}),chunks=[];req.on("data",chunk=>chunks.push(chunk)),req.on("end",()=>{clearTimeout(timer),client.close(),resolve(new Uint8Array(Buffer.concat(chunks)))}),req.on("error",()=>{clearTimeout(timer),client.close(),resolve(null)}),req.on("response",headers=>{let status=Number(headers[":status"]??0);(status<200||status>=300)&&(clearTimeout(timer),client.close(),resolve(null))}),body.length>0?req.end(Buffer.from(body)):req.end()});if(!responseBuffer||responseBuffer.length===0)return null;let decoded=decodeGetUsableModelsResponse(responseBuffer);if(!decoded)return null;let byId=new Map;for(let model of decoded.models??[]){let id=model.modelId?.trim();if(!id)continue;let name=pickModelDisplayName(model,id),labeled1M=CURSOR_1M_NAME_PATTERN.test(id)||[model.displayName,model.displayNameShort,model.displayModelId,...model.aliases??[]].some(candidate=>typeof candidate=="string"&&CURSOR_1M_NAME_PATTERN.test(candidate)),maxMode=model.maxMode===!0,contextWindow=labeled1M||maxMode&&CURSOR_MAX_MODE_1M_ID_PATTERN.test(id)?CURSOR_1M_CONTEXT_WINDOW:CURSOR_DEFAULT_CONTEXT_WINDOW;byId.set(id,{id,name,reasoning:!!model.thinkingDetails,input:cursorDiscoveredInput(id),contextWindow,maxTokens:CURSOR_DEFAULT_MAX_TOKENS,cursorMaxMode:maxMode})}return[...byId.values()].sort((a,b)=>a.id.localeCompare(b.id))}catch{return null}}function decodeGetUsableModelsResponse(payload){let framedBody=decodeConnectUnaryBody(payload);if(framedBody)try{return fromBinary(GetUsableModelsResponseSchema,framedBody)}catch{return null}try{return fromBinary(GetUsableModelsResponseSchema,payload)}catch{return null}}function decodeConnectUnaryBody(payload){if(payload.length<5)return null;let offset=0;for(;offset+5<=payload.length;){let flags=payload[offset],messageLength=new DataView(payload.buffer,payload.byteOffset+offset,payload.byteLength-offset).getUint32(1,!1),frameEnd=offset+5+messageLength;if(frameEnd>payload.length||(flags&1)!==0)return null;if(!((flags&2)!==0))return payload.subarray(offset+5,frameEnd);offset=frameEnd}return null}function pickModelDisplayName(model,fallbackId){let candidates=[model.displayName,model.displayNameShort,model.displayModelId,...model.aliases??[]];for(let candidate of candidates){if(typeof candidate!="string")continue;let trimmed=candidate.trim();if(trimmed)return trimmed}return fallbackId}export{CURSOR_API_URL,CURSOR_CLIENT_VERSION,CURSOR_STREAM_HEALTH_FAIL_THRESHOLD_MS,CURSOR_STREAM_HEALTH_HEARTBEAT_ONLY_THRESHOLD_MS,CURSOR_TURN_END_DRAIN_TIMEOUT_MS,buildCursorHistoryForTest,buildCursorHistoryWireBytesForTest,buildCursorSystemPromptJsons,buildMcpToolDefinitions,emptyGrepPatternRejection,ensureUniqueCursorExecToolCallId,fetchCursorUsableModels,flushOpenToolCalls,frameConnectMessage,getCursorConversationCacheStats,handleServerMessage,mapH2TransportError,measureCursorHistorySerializedBytes,measureCursorModelInputSerializedBytes,mergeCursorMcpToolCallArgs,processInteractionUpdate,resolveExecHandler,sanitizeCursorCallerHeaders,sanitizeCursorToolSchema,stream,streamSimple,synthesizeCursorExecToolCall};