Merge branch 'main' into card-attachments

* main: (45 commits)
  Display tag counts in the filter menu
  Move Add Card button to header
  Re-write help content, try a modal-like display
  Move to internal registry
  Show date instead of time for notifications older than 1 day
  Ensure checks are visible for tags and assignments
  Adjust padding so card number isn't cut off
  Don't color the collection header in considering
  Golden cards bubble to the top of Considering, too
  Adjust card collection header when colored golden
  Allow cards in Considering to gilded
  Hide focus ring on new card titles and step inputs
  Add hover effect for comment edit button
  Add hover effect to overflow button
  Improve multi-account behavior of the PWA
  Remove unneeded *
  Rename test
  Review the code to move cards
  Update editor
  Generalize and delete mentions too
  ...
This commit is contained in:
Jason Zimdars
2025-07-08 16:04:14 -05:00
113 changed files with 28514 additions and 447 deletions
+1 -1
View File
@@ -40,7 +40,7 @@ RUN SECRET_KEY_BASE_DUMMY=1 ./bin/rails assets:precompile
# Fetch beamer library
FROM basecamp/beamer:vfs AS beamer
FROM registry.37signals.com/basecamp/beamer:vfs AS beamer
# Final stage for app image
+1 -1
View File
@@ -1,6 +1,6 @@
GIT
remote: https://github.com/basecamp/actiontext-lexical
revision: 70ba099446c8a033c06c2bde9c5e70b7f983e60b
revision: 109735daa044233236cf7a72f30043e5c790e853
specs:
actiontext-lexical (0.1.0)
rails (>= 8.0.2)
+9
View File
@@ -10,6 +10,10 @@
--block-space-double: calc(var(--block-space) * 2);
/* Text */
--font-sans: system-ui;
--font-serif: ui-serif, serif;
--font-mono: ui-monospace, monospace;
--text-xx-small: 0.55rem;
--text-x-small: 0.75rem;
--text-small: 0.85rem;
@@ -33,6 +37,11 @@
--footer-height: 3.5rem;
--tray-size: clamp(12rem, 25dvw, 24rem);
/* Focus rings for keyboard navigation */
--focus-ring-color: var(--color-link);
--focus-ring-offset: 1px;
--focus-ring-size: 2px;
@media (max-width: 799px) {
--tray-size: var(--footer-height);
}
+9 -11
View File
@@ -6,12 +6,12 @@
figure.node--selected {
&:not(:has(img)) {
box-shadow: 0 0 0 var(--hover-size) var(--color-selected-dark);
box-shadow: 0 0 0 var(--focus-ring-size) var(--focus-ring-color);
}
&:has(img) {
img {
box-shadow: 0 0 0 var(--hover-size) var(--color-selected-dark);
box-shadow: 0 0 0 var(--focus-ring-size) var(--focus-ring-color);
}
}
}
@@ -45,7 +45,7 @@
&:is([type="submit"]) {
--btn-background: var(--card-color, var(--color-link));
--btn-color: var(--color-ink-inverted);
--outline-color: var(--card-color, var(--color-link));
--focus-ring-color: var(--card-color, var(--color-link));
}
}
@@ -55,8 +55,6 @@
}
.lexical-editor__content {
--outline-size: max(2px, 0.08em);
margin: var(--block-space-half) 0;
min-block-size: calc(7lh + var(--block-space));
outline: 0;
@@ -177,15 +175,11 @@
padding: var(--lexical-prompt-padding);
&:hover {
background-color: var(--color-selected);
background-color: var(--color-ink-lightest);
}
&[aria-selected] {
box-shadow: 0 0 0 var(--hover-size) var(--color-selected-dark) inset;
&:hover {
--hover-size: 0;
}
background-color: var(--color-selected);
}
img {
@@ -196,6 +190,10 @@
margin: 0;
}
+ & {
margin-top: 2px;
}
code {
background-color: var(--color-terminal-text-light);
border-radius: 0.25ch;
+3 -10
View File
@@ -2,8 +2,7 @@
.avatar {
--avatar-border-radius: 50%;
--avatar-size-default: 5ch;
--btn-border-size: 0;
--hover-size: 0;
--btn-border-size: 0;
aspect-ratio: 1;
block-size: var(--avatar-size, var(--avatar-size-default));
@@ -16,19 +15,13 @@
:is(img, .icon) {
aspect-ratio: 1;
block-size: auto;
block-size: 100%;
border-radius: var(--avatar-border-radius);
grid-area: 1/1;
inline-size: var(--avatar-size, var(--avatar-size-default));
inline-size: 100%;
max-inline-size: 100%;
object-fit: cover;
}
&:where(a):not(:active):hover {
@media (any-hover: hover) {
filter: brightness(0.7);
}
}
}
.avatar__form {
+17 -46
View File
@@ -8,13 +8,6 @@
}
body {
--font-sans: system-ui;
--font-serif: ui-serif, serif;
--font-mono: ui-monospace, monospace;
--hover-color: var(--color-ink-medium);
--hover-size: 0.15rem;
--hover-filter: brightness(1);
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
-webkit-text-size-adjust: none;
@@ -28,55 +21,33 @@
text-size-adjust: none;
}
a:not([class]) {
--hover-size: 0;
a {
text-decoration: none;
color: var(--color-link);
text-decoration: underline;
text-decoration-skip-ink: auto;
&:not([class]) {
color: var(--color-link);
text-decoration: underline;
text-decoration-skip-ink: auto;
}
}
:is(a, button, input, textarea, .switch, .btn) {
--outline-size: 2px;
caret-color: var(--color-link);
text-decoration: none;
transition: 100ms ease-out;
transition-property: background-color, border-color, box-shadow, filter, outline;
touch-action: manipulation;
transition:
box-shadow 150ms ease,
outline-offset 150ms ease,
background-color 150ms ease,
opacity 150ms ease,
filter 150ms ease;
/* Hover */
@media (any-hover: hover) {
&:where(:not(:active):hover) {
box-shadow: 0 0 0 var(--hover-size) var(--hover-color);
}
}
/* Keyboard navigation */
&:where(:not(:active)):focus-visible {
outline-color: var(--outline-color, currentColor);
outline-width: var(--outline-size);
outline-offset: var(--outline-offset, calc(var(--outline-size) * 2));
&:where(:focus-visible) {
border-radius: 0.25ch;
outline: var(--focus-ring-size) solid var(--focus-ring-color);
outline-offset: var(--focus-ring-offset);
}
&:where(:focus-visible):focus,
&:where(:focus-visible):active {
outline: 0;
}
/* Pressing */
&:focus:not(:focus-visible) {
--outline-offset: 0;
}
/* Disabled */
&:where([disabled]):not(:hover):not(:active) {
/* Default disabled styles */
&:where([disabled]) {
cursor: not-allowed;
filter: brightness(0.75);
opacity: 0.5;
pointer-events: none;
}
}
+59 -55
View File
@@ -1,7 +1,8 @@
@layer components {
.btn {
--transition: 150ms ease;
--icon-size: var(--btn-icon-size, 1.3em);
--btn-border-radius: 99rem;
--btn-hover-brightness: 0.9;
align-items: center;
background-color: var(--btn-background, var(--color-canvas));
@@ -16,57 +17,18 @@
justify-content: center;
padding: var(--btn-padding, 0.5em 1.1em);
pointer-events: auto;
transition:
background-color var( --transition),
border var( --transition),
color var( --transition),
filter var( --transition),
opacity var( --transition),
scale var( --transition);
position: relative;
transition: 100ms ease-out;
transition-property: background-color, border, box-shadow, color, filter, opacity, scale;
/* Default icon styles */
&:where(:has(.icon)) {
--icon-size: var(--btn-icon-size, 1.3em);
text-align: start;
}
/* With radios and checkboxes */
&:has(input[type=radio]),
&:has(input[type=checkbox]) {
position: relative;
:is(input[type=radio]),
:is(input[type=checkbox]) {
--hover-size: 0;
appearance: none;
border-radius: var(--btn-border-radius);
cursor: pointer;
display: flex;
inset: 0;
margin: 0;
padding: 0;
position: absolute;
&:focus-visible {
outline: none;
}
}
.checked {
display: none;
@media (any-hover: hover) {
&:hover {
filter: brightness(var(--btn-hover-brightness));
}
}
&:has(input:checked) {
--btn-background: var(--color-ink);
--btn-color: var(--color-ink-inverted);
--outline-color: var(--color-ink);
.checked {
display: block;
}
@media (prefers-color-scheme: dark) {
--btn-hover-brightness: 1.25;
}
&[disabled],
@@ -93,15 +55,13 @@
--btn-color: inherit;
--btn-icon-size: 100%;
--btn-padding: 0;
--hover-size: 0;
--outline-size: 0;
}
.btn--link {
--btn-background: var(--color-link);
--btn-border-color: var(--color-canvas);
--btn-color: var(--color-ink-inverted);
--outline-color: var(--color-link);
--focus-ring-color: var(--color-link);
}
.btn--circle,
@@ -122,16 +82,16 @@
.btn--negative {
--btn-background: var(--color-negative);
--btn-border-color: var(--color-canvas);
--btn-border-color: var(--color-negative);
--btn-color: var(--color-ink-inverted);
--outline-color: var(--color-negative);
--focus-ring-color: var(--color-negative);
}
.btn--positive {
--btn-background: var(--color-positive);
--btn-border-color: var(--color-canvas);
--btn-color: var(--color-ink-inverted);
--outline-color: var(--color-positive);
--focus-ring-color: var(--color-positive);
}
.btn--success {
@@ -157,7 +117,51 @@
--btn-background: var(--color-ink);
--btn-border-color: var(--color-canvas);
--btn-color: var(--color-canvas);
--outline-color: var(--color-ink);
--focus-ring-color: var(--color-ink);
}
/* Toggleable buttons
/* ------------------------------------------------------------------------ */
.btn {
&:has(input[type=radio], input[type=checkbox]) {
position: relative;
:is(input[type=radio], input[type=checkbox]) {
appearance: none;
border-radius: var(--btn-border-radius);
cursor: pointer;
display: flex;
inset: 0;
margin: 0;
padding: 0;
position: absolute;
&:focus-visible {
outline: none;
}
}
.checked {
display: none;
}
}
&:has(input:checked) {
--btn-background: var(--color-ink);
--btn-border-color: var(--color-ink);
--btn-color: var(--color-ink-inverted);
--focus-ring-color: var(--color-ink);
.checked {
display: block;
}
}
&:has(input:focus-visible) {
outline: var(--focus-ring-size) solid var(--focus-ring-color);
outline-offset: var(--focus-ring-offset);
}
}
/* Button groups
+8 -5
View File
@@ -118,6 +118,7 @@
/* ------------------------------------------------------------------------ */
.cards__heading {
background-color: var(--color-canvas);
display: flex;
font-size: var(--text-medium);
@@ -129,17 +130,19 @@
position: sticky;
z-index: 2;
&, button {
&, .cards__filter {
font-weight: bold;
text-transform: uppercase;
}
button {
--hover-size: 0;
.cards__filter {
--filter-block-padding: 0.5rem;
background-color: var(--color-canvas);
border-radius: 99rem;
inline-size: auto;
margin-inline-start: 2em;
padding: 0 2em 0 0;
margin-block: calc(-1 * var(--filter-block-padding));
padding-block: var(--filter-block-padding);
}
dialog {
+3 -2
View File
@@ -48,10 +48,10 @@
.collection-picker__button {
--btn-border-size: 0;
font-size: 0.5em;
margin-inline-start: 1ch;
+ .panel {
--panel-size: 18ch;
}
@@ -152,6 +152,7 @@
&:has(input:checked) {
--btn-background: var(--card-color);
--btn-border-color: var(--card-color);
--btn-color: var(--color-ink-inverted);
}
}
+40 -8
View File
@@ -4,6 +4,7 @@
.card {
--avatar-size: 2.75em;
--card-bg-color: color-mix(in srgb, var(--card-color) 4%, var(--color-canvas));
--card-padding-inline: var(--inline-space-double);
--card-padding-block: var(--block-space);
--border-color: transparent;
@@ -11,7 +12,7 @@
--border-size: 0;
aspect-ratio: var(--card-aspect-ratio, auto);
background-color: color-mix(in srgb, var(--card-color) 4%, var(--color-canvas));
background-color: var(--card-bg-color);
border-radius: var(--border-radius);
box-shadow: var(--shadow);
color: color-mix(in srgb, var(--card-color) 40%, var(--color-ink));
@@ -64,6 +65,22 @@
max-inline-size: 100%;
min-inline-size: 0;
padding: var(--block-space-half) var(--inline-space) var(--block-space-half) var(--card-padding-inline);
&:has(.collection-picker__button) {
cursor: pointer;
transition: background-color: 100ms ease-out;
@media (any-hover: hover) {
&:hover {
background-color: color-mix(in srgb, var(--card-color) 90%, var(--color-ink));
}
}
&:has(.btn:focus-visible) {
outline: var(--focus-ring-size) solid var(--focus-ring-color);
outline-offset: var(--focus-ring-offset);
}
}
}
.card__collection-name {
@@ -139,8 +156,6 @@
}
.card__link {
--hover-size: 0;
content: "";
inset: 0;
position: absolute;
@@ -168,7 +183,6 @@
}
.card__title {
--hover-size: 0;
--input-border-radius: 0;
--input-color: color-mix(in srgb, var(--card-color) 40%, var(--color-ink));
--lines: 3;
@@ -204,10 +218,17 @@
--btn-icon-size: 1em;
--card-padding-block: calc(var(--block-space) * 1.25);
box-shadow: 0 0 0 1px color-mix(in srgb, var(--color-link) 20%, var(--color-canvas));
box-shadow: 0 0 0 1px oklch(var(--lch-blue-lighter));
color: var(--btn-color);
font-weight: 700;
transition: none;
transition: box-shadow 100ms ease-out;
@media (any-hover: hover) {
&:hover {
filter: none;
box-shadow: 0 0 0 1px oklch(var(--lch-blue-lighter)), var(--shadow);
}
}
}
.card__move-button {
@@ -324,7 +345,7 @@
/* Variants
/* ------------------------------------------------------------------------ */
.card--golden.card--doing {
.card--golden:is(.card--doing, .card--considering) {
--lch-golden: 89.1% 0.178 95.7;
background-color: var(--color-canvas);
@@ -342,6 +363,17 @@
@media (prefers-color-scheme: dark) {
--lch-golden: var(--lch-blue-medium);
}
&.card--considering {
.card__collection {
background-color: transparent;
color: color-mix(in srgb, var(--card-color) 40%, var(--color-ink));
}
.card__collection-name {
border-color: color-mix(in srgb, var(--color-ink) 33%, oklch(var(--lch-golden)));
}
}
}
.card--notification {
@@ -362,6 +394,7 @@
.card__collection {
font-size: var(--text-xx-small);
padding-block: 0.5ch;
padding-inline-start: var(--inline-space-double);
}
.card__header {
@@ -393,7 +426,6 @@
--btn-icon-size: 0.75em;
--btn-padding: 0;
--btn-size: 1.25em;
--hover-size: 0;
position: relative;
z-index: 1;
+3
View File
@@ -98,12 +98,15 @@
}
.comment__edit {
background-color: var(--color-ink-lightest);
.comment:not(.comment--mine) & {
display: none;
}
}
.comment__reaction {
background-color: var(--color-ink-lightest);
opacity: 0.66;
@media (any-hover: hover) {
+1 -4
View File
@@ -205,10 +205,7 @@
}
.event--related {
--hover-color: var(--card-color);
--hover-size: 0.15rem;
box-shadow: 0 0 0 var(--hover-size) var(--hover-color);
box-shadow: 0 0 0 0.15rem var(--card-color);
}
.event__content {
+5 -6
View File
@@ -30,7 +30,7 @@
}
[open] & {
box-shadow: none;
filter: none;
}
.icon {
@@ -44,6 +44,7 @@
align-items: stretch;
border-radius: var(--expander-radius);
flex-direction: column;
filter: none;
gap: 0;
padding-block-start: var(--expander-height);
@@ -92,21 +93,19 @@
}
.expander__item {
--btn-background: transparent;
--btn-background: var(--card-color);
--btn-border-radius: 0.3em;
--btn-border-size: 0;
--btn-font-weight: 500;
--btn-padding: var(--inline-space-half) var(--inline-space);
--hover-size: 0;
--outline-color: transparent;
inline-size: calc(100% + var(--inline-space-double));
margin-inline-start: calc(-1 * var(--inline-space));
justify-content: flex-start;
white-space: nowrap;
&:hover,
/* &:hover,
&:focus-visible {
background-color: oklch(var(--lch-canvas) / 15%);
}
} */
}
+8 -1
View File
@@ -14,12 +14,19 @@
--input-border-color: var(--color-selected-dark);
--input-padding: 0.2em 2em 0.2em 0.9em;
background-color: var(--color-canvas);
box-shadow: 0 0 0 1px oklch(var(--lch-blue-medium) / 5%),
0 0.2em 0.2em oklch(var(--lch-blue-medium) / 5%),
0 0.4em 0.4em oklch(var(--lch-blue-medium) / 5%),
0 0.8em 0.8em oklch(var(--lch-blue-medium) / 5%);
margin-block-start: 0.1em;
@media (any-hover: hover) {
&:hover {
filter: brightness(0.9);
}
}
svg {
block-size: auto;
inline-size: 1.1em;
@@ -69,4 +76,4 @@
}
}
}
}
}
+44
View File
@@ -0,0 +1,44 @@
@layer components {
/* Centered title with space for two buttons on either side */
.header {
--header-gap: 0.5ch;
--btn-icon-size: 1rem;
--header-btn-size: 2rem;
--header-button-count: 0;
--header-actions-width: calc((var(--header-btn-size) + var(--header-gap)) * var(--header-button-count));
align-items: center;
display: flex;
padding: var(--block-space-half) var(--inline-space);
/* Change the grid size depending on how many buttons are present */
&:has(.header__actions > *:nth-child(1)) { --header-button-count: 1; }
&:has(.header__actions > *:nth-child(2)) { --header-button-count: 2; }
&:has(.header__actions > *:nth-child(3)) { --header-button-count: 3; }
}
.header__actions {
display: flex;
font-size: var(--text-x-small);
gap: var(--header-gap);
inline-size: var(--header-actions-width);
min-inline-size: fit-content;
}
.header__actions--start {
margin-inline-end: auto;
}
.header__actions--end {
margin-inline-start: auto;
justify-content: flex-end;
}
.header__title {
color: inherit;
font-size: var(--text-large);
font-weight: 900;
margin: 0 auto;
text-align: center;
}
}
+21 -25
View File
@@ -21,18 +21,12 @@
-webkit-box-shadow: 0 0 0px 1000px var(--color-selected) inset;
}
&:where(:not(:active)):focus {
--input-border-color: var(--color-selected-dark);
--hover-color: var(--color-selected-dark);
--outline-size: 0;
--outline-color: transparent;
filter: var(--hover-filter);
box-shadow: 0 0 0 var(--hover-size) var(--hover-color);
&:where(:focus) {
--focus-ring-offset: -1px;
}
&:where([disabled]):not(:hover):not(:active) {
filter: none;
&[readonly] {
--focus-ring-size: 0;
}
}
@@ -134,6 +128,9 @@
/* Switches */
.switch {
--switch-color: var(--color-ink-medium);
--switch-hover-brightness: 0.9;
block-size: 1.75em;
border-radius: 2em;
display: inline-flex;
@@ -142,9 +139,7 @@
&:has(:focus-visible) {
.switch__btn {
box-shadow:
0 0 0 var(--outline-size) var(--color-canvas),
0 0 0 calc(var(--outline-size) * 2) var(--color-ink);
outline: var(--focus-ring-size) solid var(--focus-ring-color);
}
}
}
@@ -156,10 +151,11 @@
}
.switch__btn {
background-color: var(--color-ink-medium);
background-color: var(--switch-color);
border-radius: 2em;
cursor: pointer;
inset: 0;
outline-offset: var(--focus-ring-offset);
position: absolute;
transition: 150ms ease;
@@ -175,13 +171,20 @@
transition: 150ms ease;
}
@media (any-hover: hover) {
&:hover {
background-color: color-mix(in srgb, var(--switch-color) 80%, var(--color-ink));
}
}
.switch__input:disabled + & {
background-color: var(--color-ink-medium) !important;
--switch-color: var(--color-ink-medium) !important;
cursor: not-allowed;
}
.switch__input:checked + & {
background-color: var(--color-link);
--switch-color: var(--color-link);
&::before {
transform: translateX(1.2em);
@@ -191,15 +194,13 @@
/* Containers that act like (and contain) inputs */
.input--actor {
outline-offset: -1px;
transition: box-shadow 150ms ease, outline-offset 150ms ease;
&:focus-within {
--input-border-color: var(--color-selected-dark);
--hover-color: var(--color-selected-dark);
--outline-size: 0;
filter: var(--hover-filter);
box-shadow: 0 0 0 var(--hover-size) var(--hover-color);
outline: var(--focus-ring-size) solid var(--focus-ring-color);
}
.input {
@@ -207,9 +208,6 @@
--input-border-radius: 0;
--input-background: transparent;
--input-border-size: 0;
--hover-size: 0;
--outline-size: 0;
--outline-color: transparent;
inline-size: 100%;
outline: 0;
@@ -233,11 +231,9 @@
}
.input.boost__input {
--hover-size: 0;
--input-border-radius: 0;
--input-border-size: 0;
--input-padding: 0;
--outline-size: 0;
color: inherit;
font-size: inherit;
+2 -3
View File
@@ -19,8 +19,6 @@
}
.knob__slider {
--hover-size: 0;
appearance: none;
background-color: transparent;
block-size: var(--knob-size);
@@ -75,7 +73,8 @@
}
&:has(:focus-visible) {
box-shadow: 0 0 0 2px var(--knob-color);
outline: var(--focus-ring-size) solid var(--focus-ring-color);
outline-offset: 0;
}
/* Tick marks */
+2
View File
@@ -92,7 +92,9 @@
display: none;
}
}
}
@layer components {
.skip-navigation {
--left-offset: -999em;
-1
View File
@@ -1,6 +1,5 @@
@layer components {
.heading__link {
--hover-size: 0;
--opacity: 0.5;
--size: 0.8em;
+8 -12
View File
@@ -59,14 +59,18 @@
@media (any-hover: hover) {
&:hover {
--hover-size: 0;
background: var(--color-selected);
background: var(--color-ink-lightest);
}
}
&[aria-selected] {
box-shadow: 0 0 0 var(--hover-size) var(--color-selected-dark) inset;
background-color: var(--color-selected);
@media (any-hover: hover) {
&:hover {
background-color: var(--color-selected);
}
}
}
}
@@ -76,8 +80,6 @@
--btn-border-size: 0;
--btn-font-weight: 500;
--btn-padding: var(--inline-space-half) 0 var(--inline-space-half) var(--inline-space);
--hover-size: 0;
--outline-color: transparent;
flex: 1 1 auto;
justify-content: start;
@@ -90,11 +92,6 @@
}
}
&[aria-selected] {
border-radius: 0.3em;
box-shadow: 0 0 0 var(--hover-size) var(--color-selected-dark) inset;
}
&:has(input:checked) {
--btn-background: transparent;
--btn-color: var(--color-ink);
@@ -110,7 +107,6 @@
@media (any-hover: hover) {
&:where(:not(:active):hover) {
--hover-size: 0;
--btn-background: var(--color-selected);
}
}
+11 -11
View File
@@ -26,6 +26,7 @@
.reaction {
--btn-size: 100%;
--reaction-hover-brightness: 0.9;
align-items: center;
background-color: var(--color-canvas);
@@ -51,18 +52,13 @@
@media (any-hover: hover) {
&:not(:active):hover {
--reaction-border-color: var(--color-ink-medium);
filter: brightness(var(--reaction-hover-brightness));
box-shadow: 0 0 0 var(--hover-size) var(--hover-color);
@media (prefers-color-scheme: dark) {
--reaction-hover-brightness: 1.25;
}
}
}
&:has(.reaction__input):focus-within {
--hover-color: var(--color-selected-dark);
--reaction-border-color: var(--color-selected-dark);
box-shadow: 0 0 0 var(--hover-size) var(--hover-color);
}
}
/* Make the avatar and delete buttons fit nicely within the reaction */
@@ -74,6 +70,7 @@
.reaction__delete {
display: none;
translate: 0.25em;
.expanded & {
display: flex;
@@ -89,17 +86,20 @@
transform-origin: left center;
}
&:has(.input:focus) {
outline: var(--focus-ring-size) solid var(--focus-ring-color);
outline-offset: var(--focus-ring-offset);
}
.reaction__form-label:focus {
outline: none;
}
}
.reaction__input {
--hover-size: 0;
--input-background: transparent;
--input-border-size: 0;
--input-padding: 0;
--outline-size: 0;
box-shadow: none;
display: inherit;
@@ -210,10 +210,6 @@
}
}
.attachment__figure {
--hover-size: 0;
}
.attachment--file {
align-items: center;
display: inline-flex;
@@ -329,8 +325,6 @@
}
.attachment__link {
--hover-size: 0;
color: var(--color-link);
text-decoration: underline;
}
+12 -9
View File
@@ -23,8 +23,6 @@
--btn-border-color: var(--color-terminal-text);
--btn-padding: 0.1em 0.7em;
--btn-border-size: 1px;
--hover-color: var(--color-terminal-text);
--hover-size: 1px;
font-family: var(--font-mono);
font-size: var(--text-x-small);
@@ -49,14 +47,21 @@
}
.terminal__help {
background: var(--color-terminal-bg);
border-radius: 1em;
display: none;
inline-size: auto;
inset: 50% auto auto 50%;
max-inline-size: 90vw;
padding: calc(var(--block-space) * 1.5) var(--block-space-double);
position: fixed;
transform: translate(-50%, -50%);
.terminal--showing-help &,
.terminal--open .terminal__menu:empty ~ & {
border-block-end: 1px dashed;
display: block;
margin-block-end: 0.5lh;
padding-block-end: 0.5lh;
}
h2 {
@@ -76,7 +81,7 @@
dl {
display: grid;
grid-template-columns: min-content 1fr;
gap: 0.5em 1em;
gap: var(--inline-space);
font-size: var(--text-small);
margin: 0;
}
@@ -89,16 +94,14 @@
dd {
grid-column: 2;
white-space: nowrap;
}
}
.terminal__input:is(.input) {
--input-border-color: transparent;
--input-border-radius: 0.3em;
--hover-color: transparent;
--input-color: var(--color-terminal-text);
--outline-size: 0;
--outline-color: transparent;
accent-color: var(--color-terminal-text);
caret-color: var(--color-terminal-text);
-5
View File
@@ -63,9 +63,6 @@
/* ------------------------------------------------------------------------ */
.tray__expander {
--hover-size: 0;
--outline-size: 0;
align-self: stretch;
background: transparent;
border: 0;
@@ -116,8 +113,6 @@
/* ------------------------------------------------------------------------ */
.tray__actions {
--hover-size: 0;
align-self: center;
align-items: stretch;
border: 1px dashed oklch(var(--lch-white) / 50%);
+5 -1
View File
@@ -26,7 +26,7 @@
.txt-capitalize { text-transform: capitalize; }
.txt-link { color: var(--color-link); text-decoration: underline; }
.font-black { font-weight: 900; }
.font-weight-black { font-weight: 900; }
.font-weight-normal { font-weight: normal; }
/* Flexbox and Grid */
@@ -218,4 +218,8 @@
/* Visibility */
[hidden] { display: none !important; }
[contents] { display: contents; }
.hide-focus-ring {
--focus-ring-size: 0;
}
}
+22 -7
View File
@@ -4,14 +4,13 @@
--btn-padding: 0.2em 0.5em;
--btn-border-size: 0;
--btn-border-radius: 0.2em;
--hover-size: 0;
color: inherit;
inline-size: 100%;
@media (hover: hover) {
&:hover {
background-color: color(from var(--card-color) srgb r g b / 0.15);
--btn-background: color(from var(--card-color) srgb r g b / 0.15);
}
}
}
@@ -23,21 +22,29 @@
@media (hover: hover) {
&:hover {
background-color: color(from var(--card-color) srgb r g b / 0.65);
--btn-background: var(--card-color);
}
}
}
/* Workflow settings
/* ------------------------------------------------------------------------ */
.workflow-preview {
--border-size: 0.2em;
aspect-ratio: 1;
border: 0.2em solid var(--color-ink-lighter);
flex: 1 1 30%;
max-inline-size: 30%;
button {
--hover-size: 0;
@media (any-hover: hover) {
&:hover:not(.workflow-preview--selected) {
border-color: var(--color-ink-light);
}
}
button {
appearance: none;
aspect-ratio: 1;
background: transparent;
@@ -58,15 +65,23 @@
}
.workflow-preview--selected {
--border-color: var(--color-link);
border-color: var(--color-link);
}
.workflow-preview__swatch {
--btn-size: 1em;
--btn-border-radius: 50%;
--btn-border-size: 0;
--hover-size: 0;
cursor: auto;
}
.workflow__swatch-btn {
@media (any-hover: hover) {
&:hover {
filter: brightness(0.9);
}
}
}
}
@@ -1,9 +1,9 @@
module Cards
class CollectionsController < ApplicationController
def update
@card = Card.find(params[:card_id])
@card.update!(collection_id: params[:collection_id])
redirect_to @card
end
class Cards::CollectionsController < ApplicationController
include CollectionScoped
def update
@card = Current.user.accessible_cards.find(params[:card_id])
@card.move_to(@collection)
redirect_to @card
end
end
+1
View File
@@ -35,6 +35,7 @@ module CardsHelper
classes = [
options.delete(:class),
("card--golden" if card.golden?),
("card--considering" if card.considering?),
("card--doing" if card.doing?),
("card--drafted" if card.drafted?)
].compact.join(" ")
@@ -2,7 +2,7 @@ import { Controller } from "@hotwired/stimulus"
import { differenceInDays } from "helpers/date_helpers"
export default class extends Controller {
static targets = [ "time", "date", "datetime", "shortdate", "ago", "indays", "daysago", "agoorweekday" ]
static targets = [ "time", "date", "datetime", "shortdate", "ago", "indays", "daysago", "agoorweekday", "timeordate" ]
static values = { refreshInterval: Number }
static classes = [ "local-time-value"]
@@ -19,6 +19,7 @@ export default class extends Controller {
this.datewithweekdayFormatter = new Intl.DateTimeFormat(undefined, { weekday: "long", month: "long", day: "numeric" })
this.indaysFormatter = new InDaysFormatter()
this.agoorweekdayFormatter = new DaysAgoOrWeekdayFormatter()
this.timeordateFormatter = new TimeOrDateFormatter()
}
connect() {
@@ -75,6 +76,10 @@ export default class extends Controller {
this.#formatTime(this.agoorweekdayFormatter, target)
}
timeordateTargetConnected(target) {
this.#formatTime(this.timeordateFormatter, target)
}
#refreshRelativeTimes() {
this.agoTargets.forEach(target => {
this.#formatTime(this.agoFormatter, target)
@@ -148,6 +153,18 @@ class InDaysFormatter {
}
}
class TimeOrDateFormatter {
format(date) {
const days = differenceInDays(date, new Date())
if (days >= 1) {
return new Intl.DateTimeFormat(undefined, { month: "short", day: "numeric" }).format(date)
} else {
return new Intl.DateTimeFormat(undefined, { timeStyle: "short" }).format(date)
}
}
}
function styleableValue(value) {
return `<span class="local-time-value">${value}</span>`
}
@@ -0,0 +1,5 @@
class Collection::CleanInaccessibleDataJob < ApplicationJob
def perform(user, collection)
collection.clean_inaccessible_data_for(user)
end
end
+6
View File
@@ -6,6 +6,8 @@ class Access < ApplicationRecord
scope :ordered_by_recently_accessed, -> { order(accessed_at: :desc) }
after_destroy_commit :clean_inaccessible_data_later
def accessed
touch :accessed_at unless recently_accessed?
end
@@ -14,4 +16,8 @@ class Access < ApplicationRecord
def recently_accessed?
accessed_at&.> 5.minutes.ago
end
def clean_inaccessible_data_later
Collection::CleanInaccessibleDataJob.perform_later(user, collection)
end
end
+7
View File
@@ -38,6 +38,13 @@ class Card < ApplicationRecord
self
end
def move_to(new_collection)
transaction do
card.update!(collection: new_collection)
card.events.update_all(collection_id: new_collection.id)
end
end
private
def set_default_title
self.title = "Untitled" if title.blank?
+1 -1
View File
@@ -9,7 +9,7 @@ module Card::Engageable
scope :by_engagement_status, ->(status) do
case status.to_s
when "considering" then considering
when "considering" then considering.with_golden_first
when "doing" then doing.with_golden_first
end
end
-9
View File
@@ -26,13 +26,4 @@ module Card::Searchable
def title_and_description
[ title, description.to_plain_text ].join(" ")
end
def search_embedding_content
<<~CONTENT
Title: #{title}
Description: #{description.to_plain_text}
Created by: #{creator.name}}
Assigned to: #{assignees.map(&:name).join(", ")}}
CONTENT
end
end
+19
View File
@@ -36,8 +36,27 @@ module Collection::Accessible
accesses.find_by(user: user)
end
def accessible_to?(user)
access_for(user).present?
end
def clean_inaccessible_data_for(user)
return if accessible_to?(user)
clean_inaccessible_records user.notifications
clean_inaccessible_records user.mentions
end
private
def grant_access_to_everyone
accesses.grant_to(User.all) if all_access_previously_changed?(to: true)
end
def clean_inaccessible_records(records)
records.find_each do |record|
if record.card&.collection == self
record.destroy
end
end
end
end
+14 -14
View File
@@ -234,13 +234,13 @@ class Command::Ai::Translator
"commands": ["/assign andy", "/tag #v2"]
}
User: assign to jz*
User: assign to jz
Output:
{
"commands": ["/assign jz"]
}
User: cards assigned to jz*
User: cards assigned to jz
Output:
{
"context": { "assignee_ids": ["jz"] }
@@ -259,74 +259,74 @@ class Command::Ai::Translator
"commands": ["/reopen"]
}
User: tag with #design*
User: tag with #design
Output:
{
"commands": ["/tag #design"]
}
User: completed cards*
User: completed cards
Output:
{
"context": { "indexed_by": "closed" }
}
User: completed cards yesterday*
User: completed cards yesterday
Output:
{
"context": { "indexed_by": "closed", "closure": "yesterday" }
}
User: "cards tagged with #design"*
User: "cards tagged with #design"
Output:
{
"context": { "tag_ids": ["design"] }
}
User: Unassigned cards*
User: Unassigned cards
Output:
{
"context": { "assignment_status": "unassigned" }
}
User: Close Andys cards, then assign them to Kevin*
User: Close Andys cards, then assign them to Kevin
Output:
{
"context": { "assignee_ids": ["andy"] },
"commands": ["/close", "/assign kevin"]
}
User: cards created yesterday*
User: cards created yesterday
Output:
{
"context": { "creation": "yesterday" }
}
User: cards completed last week*
User: cards completed last week
Output:
{
"context": { "closure": "lastweek", "indexed_by": "closed" }
}
User: my cards that are going to be auto closed*
User: my cards that are going to be auto closed
Output:
{
"context": { "assignee_ids": ["<current user>"], "indexed_by": "closing_soon" }
}
User: visit user kevin*
User: visit user kevin
Output:
{
"commands": ["/user kevin"]
}
User: visit /users/kevin*
User: visit /users/kevin
Output:
{
"commands": ["/visit /users/kevin"]
}
Fallback search example (when nothing matches):*
Fallback search example (when nothing matches):
{ "commands": ["/search what's blocking deploy"] }
---------------------------- END OF PROMPT ---------------------------
-8
View File
@@ -22,12 +22,4 @@ class Comment < ApplicationRecord
def watch_card_by_creator
card.watch_by creator
end
def search_embedding_content
<<~CONTENT
Card title: #{card.title}
Content: #{body.to_plain_text}
Created by: #{creator.name}}
CONTENT
end
end
+4
View File
@@ -13,4 +13,8 @@ class Tag < ApplicationRecord
def hashtag
"#" + title
end
def cards_count
cards.count
end
end
+1 -1
View File
@@ -7,7 +7,7 @@
<input placeholder="Filter…" class="input input--transparent full-width" type="search" autocorrect="off" autocomplete="off" data-1p-ignore="true" data-filter-target="input" data-action="input->filter#filter">
</div>
<div data-filter-target="list" class="users-list flex flex-column gap">
<div data-filter-target="list" class="users-list">
<%= render partial: "accounts/user", collection: users %>
</div>
</div>
+11 -9
View File
@@ -1,17 +1,19 @@
<% @page_title = "Account Settings" %>
<% content_for :header do %>
<nav>
<%= link_to_back fallback_path: root_path %>
<nav class="header">
<div class="header__actions header__actions--start">
<%= link_to_back fallback_path: root_path %>
</div>
<header class="center">
<h1 class="txt-large margin-none"><%= @page_title %></h1>
</header>
<h1 class="header__title"><%= @page_title %></h1>
<%= link_to workflows_path, class: "btn flex-item-justify-end" do %>
<%= icon_tag "bolt" %>
<span class="for-screen-reader">Workflows</span>
<% end %>
<div class="header__actions header__actions--end">
<%= link_to workflows_path, class: "btn flex-item-justify-end" do %>
<%= icon_tag "bolt" %>
<span class="for-screen-reader">Workflows</span>
<% end %>
</div>
</nav>
<% end %>
+1 -1
View File
@@ -3,7 +3,7 @@
<%= render "cards/container/engagement", card: card %>
<aside class="card-perma__actions card-perma__actions--left" role="toolbar">
<%= render "cards/container/gild", card: card if card.doing? %>
<%= render "cards/container/gild", card: card if @card.published? && !@card.closed? %>
<%= render "cards/container/image", card: card %>
</aside>
+2 -2
View File
@@ -20,12 +20,12 @@
</h3>
<%= link_to edit_card_comment_path(comment.card, comment),
class: "comment__edit btn btn--circle borderless fill-transparent translucent" do %>
class: "comment__edit btn btn--circle borderless translucent" do %>
<%= icon_tag "menu-dots-horizontal" %> <span class="for-screen-reader">Edit this comment</span>
<% end %>
<%= render "cards/comments/reactions/quick_reaction", comment: comment do %>
<button class="comment__reaction btn btn--circle borderless fill-transparent" data-action="click->dialog#open:stop">
<button class="comment__reaction btn btn--circle borderless" data-action="click->dialog#open:stop">
<%= icon_tag "menu-dots-horizontal" %>
</button>
<% end %>
@@ -17,7 +17,7 @@
<%= button_to card_comment_reaction_path(reaction.comment.card, reaction.comment, reaction),
method: :delete,
class: "btn btn--negative flex-item-justify-end reaction__delete",
class: "reaction__delete btn btn--negative flex-item-justify-end",
data: { action: "reaction-delete#perform", reaction_delete_target: "button" } do %>
<%= icon_tag "minus" %>
<span class="for-screen-reader">Delete this reaction</span>
+1 -1
View File
@@ -13,7 +13,7 @@
<%= form_with model: card, url: collection_card_path(card.collection, card), id: "card_form", class: "card__content", data: { controller: "autoresize auto-save" } do |form| %>
<h1 class="card__title autoresize__wrapper" data-autoresize-target="wrapper" data-autoresize-clone-value="">
<%= form.text_area :title, placeholder: "Name it…",
class: "input input--textarea full-width borderless txt-align-start autoresize__textarea",
class: "input input--textarea full-width borderless txt-align-start autoresize__textarea hide-focus-ring",
autofocus: card.title.blank? || params[:focus_on_title], rows: 1,
data: { autoresize_target: "textarea", action: "input->autoresize#resize auto-save#change blur->auto-save#submit keydown.enter->auto-save#submit:prevent keydown.ctrl+enter->auto-save#submit:prevent" } %>
</h1>
@@ -4,7 +4,7 @@
<% end %>
<div class="position-relative" data-controller="dialog" data-action="keydown.esc->dialog#close click@document->dialog#closeOnClickOutside" <%= "hidden" if card.closed? %>>
<button class="btn card__hide-on-index fill-transparent" data-action="click->dialog#open:stop">
<button class="btn card__hide-on-index" data-action="click->dialog#open:stop" style="--btn-background: var(--card-bg-color);">
<%= icon_tag "person-add" %>
<span class="for-screen-reader">Assign</span>
</button>
@@ -4,7 +4,7 @@
<div class="step">
<input type="checkbox" class="step__checkbox" disabled>
<%= form_with model: [card, Step.new], url: card_steps_path(card) do |form| %>
<%= form.text_field :content, class: "input step__content", placeholder: "Add a step…", required: true, autocomplete: "off" %>
<%= form.text_field :content, class: "input step__content hide-focus-ring", placeholder: "Add a step…", required: true, autocomplete: "off" %>
<% end %>
</div>
</ol>
</ol>
+1 -1
View File
@@ -12,7 +12,7 @@
</div>
<div class="position-relative" data-controller="dialog" data-action="keydown.esc->dialog#close click@document->dialog#closeOnClickOutside" <%= "hidden" if card.closed? %>>
<button class="tag-picker__button btn card__hide-on-index fill-transparent" data-action="click->dialog#open:stop">
<button class="tag-picker__button btn card__hide-on-index" data-action="click->dialog#open:stop" style="--btn-background: var(--card-bg-color);">
<%= icon_tag "tag" %>
<span class="for-screen-reader">Add a tag</span>
</button>
@@ -3,9 +3,9 @@
<% if card.tags.any? %>
<span># </span>
<% card.tags.each_with_index do |tag, index| %>
<span class="card__tag btn btn--plain min-width txt-uppercase fill-transparent overflow-ellipsis">
<%= tag.title %>
</span>
<span class="card__tag btn btn--plain min-width txt-uppercase fill-transparent overflow-ellipsis">
<%= tag.title %>
</span>
<% end %>
<% end %>
</div>
@@ -28,7 +28,7 @@
<% end %>
<div class="position-relative" data-controller="dialog" data-action="keydown.esc->dialog#close click@document->dialog#closeOnClickOutside" <%= "hidden" if card.closed? %>>
<button class="btn card__hide-on-index fill-transparent" data-action="click->dialog#open:stop">
<button class="btn card__hide-on-index" data-action="click->dialog#open:stop" style="--btn-background: var(--card-bg-color);">
<%= icon_tag "person-add" %>
<span class="for-screen-reader">Assign</span>
</button>
+1 -1
View File
@@ -2,7 +2,7 @@
<%= form_with model: @card, url: collection_card_path(@card.collection, @card), class: "card__content", data: { controller: "autoresize form" } do |form| %>
<h1 class="card__title">
<%= form.label :title, class: "flex flex-column align-center autoresize__wrapper", data: { autoresize_target: "wrapper", autoresize_clone_value: "" } do %>
<%= form.text_area :title, class: "input input--textarea full-width borderless txt-align-start card-field__title autoresize__textarea",
<%= form.text_area :title, class: "card-field__title input input--textarea hide-focus-ring full-width borderless txt-align-start autoresize__textarea",
required: true, autofocus: true, placeholder: "Name it…", rows: 1,
data: { autoresize_target: "textarea", action: "input->autoresize#resize keydown.enter->form#submit:prevent keydown.ctrl+enter->form#submit:prevent keydown.meta+enter->form#submit:prevent keydown.esc->form#cancel focus->form#select" } %>
<% end %>
+23 -4
View File
@@ -6,13 +6,32 @@
<%= render "cards/index/header", filter: @filter %>
<% end %>
<header class="margin-block-end">
<h1 class="txt-large overflow-ellipsis margin-none font-black" style="view-transistion-name: card-collection-title">
<span><%= filter_title @filter %></span>
<header class="header" style="--header-actions-width: 7rem;">
<div class="header__actions header__actions--start">
<% if collection = @filter.single_collection || Current.user.collections.first %>
<%= button_to collection_cards_path(collection), method: :post, class: "btn btn--link" do %>
<%= icon_tag "add" %>
Add a card
<% end %>
<% end %>
</div>
<h1 class="header__title" style="view-transistion-name: card-collection-title">
<span class="overflow-ellipsis"><%= filter_title @filter %></span>
</h1>
<%= render "filters/settings", filter: @filter %>
<div class="header__actions header__actions--end">
<% if collection = @filter.single_collection %>
<%= access_involvement_advance_button collection, Current.user %>
<%= link_to edit_collection_path(collection), class: "btn" do %>
<%= icon_tag "settings" %>
<span class="for-screen-reader">Settings for <%= collection.name %></span>
<% end %>
<% end %>
</div>
</header>
<%= render "filters/settings", filter: @filter %>
<%= tag.div data: {
controller: "drag-and-drop",
drag_and_drop_dragged_item_class: "drag-and-drop__dragged-item",
@@ -1,5 +1,5 @@
<div class="cards__heading" data-controller="dialog" data-action="keydown.esc->dialog#close click@document->dialog#closeOnClickOutside">
<button class="cards__filter input input--select borderless overflow-ellipsis" data-action="click->dialog#open:stop">
<button class="cards__filter btn input input--select borderless overflow-ellipsis" data-action="click->dialog#open:stop">
Recently closed
</button>
+1 -19
View File
@@ -1,8 +1,4 @@
<nav class="align-start">
<%= link_to_home %>
<div class="btn btn--placeholder flex-item-justify-start"></div>
<nav class="header">
<header class="flex flex-inline flex-column center flex-shrink">
<div class="card-filter--collection flex-inline flex-column align-center center position-relative" data-controller="dialog" data-action="click@document->dialog#closeOnClickOutside keydown.esc->dialog#close">
<%= tag.button class: "fizzy-menu input input--select flex align-center txt-normal shadow",
@@ -60,18 +56,4 @@
<% end %>
</div>
</header>
<% if collection = filter.single_collection %>
<div class="flex-item-justify-end">
<%= access_involvement_advance_button collection, Current.user %>
</div>
<%= link_to edit_collection_path(collection), class: "btn" do %>
<%= icon_tag "settings" %>
<span class="for-screen-reader">Settings for <%= collection.name %></span>
<% end %>
<% else %>
<div class="btn btn--placeholder flex-item-justify-end"></div>
<div class="btn btn--placeholder"></div>
<% end %>
</nav>
@@ -1,5 +1,5 @@
<div class="cards__heading cards__filter" data-controller="dialog" data-action="keydown.esc->dialog#close click@document->dialog#closeOnClickOutside">
<button class="cards__filter input input--select borderless overflow-ellipsis" data-action="click->dialog#open:stop">
<div class="cards__heading" data-controller="dialog" data-action="keydown.esc->dialog#close click@document->dialog#closeOnClickOutside">
<button class="cards__filter btn input input--select borderless overflow-ellipsis" data-action="click->dialog#open:stop">
<% if filter.stages.any? %>
<%= filter.stages.map(&:name).to_sentence %>
<% else %>
@@ -3,15 +3,6 @@
Considering
</h2>
<% if collection = filter.single_collection || Current.user.collections.first %>
<%= button_to collection_cards_path(collection), method: :post, class: "card card--new-card-button btn", form_class: "full-width" do %>
<div class="gap-half justify-center txt-xx-large pad-block margin-block-half">
<%= icon_tag "add" %>
<span>Add a new card</span>
</div>
<% end %>
<% end %>
<% if page.used? %>
<%= render partial: "cards/display/preview", collection: page.records, as: :card, locals: { draggable: true }, cached: true %>
+6 -3
View File
@@ -26,9 +26,12 @@
<%= render "cards/show/header" %>
<% end %>
<header class="card-perma__collection-header">
<%= link_to cards_path(collection_ids: [ @card.collection ]), class: "txt-large overflow-ellipsis margin-none txt-ink", style: "view-transistion-name: card-collection-title", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %>
&larr; <strong class="font-black"><%= @card.collection.name %></strong>
<header class="header card-perma__collection-header">
<%= link_to cards_path(collection_ids: [ @card.collection ]), class: "header__title btn borderless txt-large", style: "--btn-padding: 0.25ch 1ch 0.25ch 0.75ch; view-transistion-name: card-collection-title;", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %>
<span>
&larr;
<strong class="font-black"><%= @card.collection.name %></strong>
</span>
<% end %>
</header>
+2 -2
View File
@@ -2,7 +2,7 @@
<div class="flex align-center gap-half">
<%= form_with model: [@card, @step], class: "step", data: { controller: "form" } do |form| %>
<%= form.check_box :completed, { class: "step__checkbox", checked: @step.completed?, disabled: true } %>
<%= form.text_field :content, class: "input step__content step__content--edit", placeholder: "Name this step…", required: true, autofocus: true, autocomplete: "off",
<%= form.text_field :content, class: "input step__content step__content--edit hide-focus-ring", placeholder: "Name this step…", required: true, autofocus: true, autocomplete: "off",
data: { action: "keydown.esc->form#cancel focus->form#select" } %>
<%= form.button type: "submit", class: "btn btn--positive txt-xx-small" do %>
<%= icon_tag "check" %>
@@ -15,4 +15,4 @@
<span class="for-screen-reader">Delete this step</span>
<% end %>
</div>
<% end %>
<% end %>
+6 -6
View File
@@ -1,14 +1,14 @@
<% @page_title = "Collection Settings" %>
<% content_for :header do %>
<nav>
<%= link_to_back fallback_path: cards_path(collection_ids: [ @bbucket ]) %>
<nav class="header">
<div class="header__actions header__actions--start">
<%= link_to_back fallback_path: cards_path(collection_ids: [ @bbucket ]) %>
</div>
<header class="center">
<h1 class="txt-large margin-none"><%= @page_title %></h1>
</header>
<h1 class="header__title"><%= @page_title %></h1>
<div class="btn btn--placeholder flex-item-justify-end"></div>
<div class="header__actions header__actions--end"></div>
</nav>
<% end %>
@@ -18,7 +18,7 @@
</div>
<div class="flex align-center gap-half margin-block">
<%= text_field_tag :publication_url, published_collection_url(collection), disabled: true, class: "full-width input fill-white" %>
<%= text_field_tag :publication_url, published_collection_url(collection), readonly: true, class: "full-width input fill-white" %>
<div class="flex align-center justify-center gap-half">
<%= button_to_copy_to_clipboard(published_collection_url(collection)) do %>
<%= icon_tag "copy-paste" %>
@@ -3,7 +3,7 @@
<div class="flex justify-center margin-block-end">Use a Workflow to track progress in this Collection.</div>
<div class="flex flex-wrap gap justify-center">
<% Workflow.all.each do |workflow| %>
<div class="workflow-preview txt-align-start border border-radius <%= 'workflow-preview--selected' if workflow == collection.workflow %>">
<div class="workflow-preview txt-align-start border-radius <%= 'workflow-preview--selected' if workflow == collection.workflow %>">
<%= button_to collection_workflow_path(collection), method: :patch, aria: { label: workflow == collection.workflow ? "Stop using this workflow" : "Use this workflow" } do %>
<%= hidden_field_tag "collection[workflow_id]", workflow == collection.workflow ? "" : workflow.id %>
<strong class="txt-small overflow-ellipsis flex-item-no-shrink"><%= workflow.name %></strong>
+5 -2
View File
@@ -1,8 +1,11 @@
<% @page_title = "Create a new collection" %>
<% content_for :header do %>
<nav>
<%= link_to_home icon: "arrow-left", label: "Go back", class: "flex-item-justify-start" %>
<nav class="header">
<div class="header__actions header__actions--start">
<%= link_to_home icon: "arrow-left", label: "Go back" %>
</div>
<div class="header__actions header__actions--end"></div>
</nav>
<% end %>
+1 -1
View File
@@ -22,7 +22,7 @@
<%= rich_textarea_tag "command", nil,
toolbar: false,
class: "terminal__input input fill-transparent unpad",
class: "terminal__input input hide-focus-ring fill-transparent unpad",
"single-line": true,
attachments: false,
data: {
+32 -31
View File
@@ -1,36 +1,37 @@
<section class="terminal__help" aria-labelledby="help-menu-title">
<h2 id="help-menu-title"><strong>Commands you can use in Fizzy:</strong></h2>
<section class="terminal__help shadow" aria-labelledby="help-menu-title">
<h2 id="help-menu-title"><strong>Fizzy do > Help</strong></h2>
<dl>
<h3>Navigation</h3>
<dt><code>@username</code></dt>
<dd>Go to to a someone's profile</dd>
<dt><code>[id]</code></dt>
<dd>Jump to a card by ID</dd>
<h3>Search</h3>
<dt>Type keywords to search cards and comments</dt>
<dd>"CSS bug"</dd>
<h3>Filtering</h3>
<dt><code>#tag</code></dt>
<dd>Just show cards taggged [tag]</dd>
<dt><code>[id] [id]…</code></dt>
<dd>Show multiple cards by ID</dd>
<dt><code>[/search term]</code></dt>
<dd>Keyword search</dd>
<dt><code>/clear</code></dt>
<dd>Clear all filters</dd>
<h3>Navigate</h3>
<dt>Type a card ID to go to it</dt>
<dd>"137"</dd>
<dt>Type a name to see someones profile</dt>
<dd>"@jason"</dd>
<h3>Cards</h3>
<dt><code>/add [title]</code></dt>
<dd>Create a new card</dd>
<dt><code>/assign [person] [person]…</code></dt>
<dd>Assign visible card(s)</dd>
<dt><code>/close [reason]</code></dt>
<dd>Close visible card(s)</dd>
<dt><code>/tag [tag]</code></dt>
<dd>Tag visible card(s)</dd>
<dt><code>/do</code></dt>
<dd>Move card(s) to doing</dd>
<dt><code>/reconsider</code></dt>
<dd>Move card(s) back to considering</dd>
<dt><code>/stage [workflow stage name]</code></dt>
<dd>Assign card(s) to a workflow stage</dd>
<h3>Filter</h3>
<dt>Type card IDs to isolate them</dt>
<dd>"131, 137, 39"</dd>
<dt>Type a tag to see just tagged cards</dt>
<dd>"#design"</dd>
<h3>Commands</h3>
<dt>Type / to issue commands</dt>
<dd>"/move to Doing"</dd>
<dt>Type @ to match people</dt>
<dd>"/assign to @jason"</dd>
<dt>Type # to match tags</dt>
<dd>"/tag this #design"</dd>
<h3>Tips</h3>
<dt>Combine for powerful actions</dt>
<dd>"/move to Doing and /assign to @jason"</dd>
<dt>Or use natural language</dt>
<dd>"Show cards added by Jason this month"</dd>
</dl>
</section>
+1 -1
View File
@@ -1,6 +1,6 @@
<div class="max-width"
data-controller="dialog" data-action="keydown.esc->dialog#close click@document->dialog#closeOnClickOutside">
<%= tag.button class:"events__filter-btn fizzy-menu input input--select center flex-inline align-center txt-normal shadow",
<%= tag.button class:"fizzy-menu input input--select center flex-inline align-center txt-normal shadow",
data: {
action: "click->dialog#open:stop keydown.meta+j@document->hotkey#click keydown.ctrl+j@document->hotkey#click",
controller: "hotkey" } do %>
+1 -1
View File
@@ -1,7 +1,7 @@
<li class="popup__group flex align-center" data-filter-target="item" data-navigable-list-target="item">
<%= icon_tag "tag" %>
<%= link_to cards_path(tag_ids: [ tag ]), class: "btn popup__item min-width flex-item-grow" do %>
<span class="overflow-ellipsis"><%= tag.title %></span>
<span class="overflow-ellipsis"><%= tag.title %> (<%= tag.cards_count %>)</span>
<span class="translucent flex-item-no-shrink flex-item-justify-end"> </span>
<% end %>
</li>
+15 -10
View File
@@ -1,15 +1,24 @@
<% @page_title = "Home" %>
<% content_for :header do %>
<nav class="align-start">
<header class="flex flex-inline flex-column center flex-shrink">
<nav class="header">
<header class="center">
<%= render "events/filter", filter: @filter %>
</header>
</nav>
<% end %>
<header>
<h1 class="txt-large overflow-ellipsis margin-block-start-none margin-block-end-half font-black">
<header class="header margin-block-end" style="--header-button-count: 3;">
<div class="header__actions header__actions--start">
<% if collection = @filter.single_collection || Current.user.collections.first %>
<%= button_to collection_cards_path(collection), method: :post, class: "btn btn--link" do %>
<%= icon_tag "add" %>
<span>Add a card</span>
<% end %>
<% end %>
</div>
<h1 class="header__title overflow-ellipsis">
<div class="overflow-ellipsis">
<% if @filter.collections.any? %>
<%= filter_selected_collections_label(@filter) %>
@@ -27,12 +36,8 @@
<% end %>
<% end %>
</h1>
<% if collection = @filter.single_collection || Current.user.collections.first %>
<%= button_to collection_cards_path(collection), method: :post, class: "btn btn--link txt-x-small margin-block-end-double", form_class: "center" do %>
<%= icon_tag "add" %>
<span>Add a card</span>
<% end %>
<% end %>
<div class="header__actions header__actions--end"></div>
</header>
<div class="events" id="activity">
<%= render "events/day", day_timeline: @day_timeline %>
+2 -2
View File
@@ -1,4 +1,4 @@
<div class="filters flex align-center gap-half margin-none-block-end margin-block-start-half justify-center center">
<aside class="filters flex align-center gap-half justify-center center margin-block-end">
<div class="flex-inline center align-center gap-half">
<% if any_filters?(filter) %>
<% if @expand_all %>
@@ -50,4 +50,4 @@
<% end %>
<% end %>
</div>
</div>
</aside>
+1 -1
View File
@@ -16,4 +16,4 @@
<%= yield :footer %>
</footer>
</body>
</html>
</html>
+10 -6
View File
@@ -2,14 +2,18 @@
<% @hide_footer_frames = true %>
<% content_for :header do %>
<nav class="align-start">
<%= link_to_home class: "flex-item-justify-start" %>
<nav class="header">
<div class="header__actions header__actions--start">
<%= link_to_home class: "flex-item-justify-start" %>
</div>
<h1 class="txt-x-large"><%= @page_title %></h1>
<h1 class="header__title"><%= @page_title %></h1>
<%= link_to settings_notifications_path, class: "btn flex-item-justify-end" do %>
<%= icon_tag "settings" %> <span class="for-screen-reader">Notification settings</span>
<% end %>
<div class="header__actions header__actions--end">
<%= link_to settings_notifications_path, class: "btn" do %>
<%= icon_tag "settings" %> <span class="for-screen-reader">Notification settings</span>
<% end %>
</div>
</nav>
<% end %>
@@ -10,7 +10,7 @@
</div>
<div class="card__notification-meta overflow-ellipsis flex-item-no-shrink">
<span class="card__timestamp"><%= local_datetime_tag(notification.created_at) %></span>
<span class="card__timestamp"><%= local_datetime_tag(notification.created_at, style: :timeordate) %></span>
</div>
<div class="card__notification-meta flex-item-no-shrink">
@@ -10,7 +10,7 @@
</div>
<div class="card__notification-meta overflow-ellipsis flex-item-no-shrink">
<span class="card__timestamp"><%= local_datetime_tag(notification.created_at) %></span>
<span class="card__timestamp"><%= local_datetime_tag(notification.created_at, style: :timeordate) %></span>
</div>
<div class="card__notification-meta flex-item-no-shrink">
@@ -1,12 +1,14 @@
<% @page_title = "Notifications settings" %>
<% content_for :header do %>
<nav class="align-start">
<%= link_to_back fallback_path: notifications_path %>
<nav class="header">
<div class="header__actions header__actions--start">
<%= link_to_back fallback_path: notifications_path %>
</div>
<h1 class="txt-x-large"><%= @page_title %></h1>
<h1 class="header__title"><%= @page_title %></h1>
<div class="btn btn--placeholder flex-item-justify-end"></div>
<div class="header__actions header__actions--end"></div>
</nav>
<% end %>
+2 -2
View File
@@ -1,5 +1,5 @@
{
"name": "Fizzy",
"name": "<%= [ Account.sole.name, "Fizzy", Rails.env.production? ? nil : Rails.env ].compact.join(" - ") %>",
"icons": [
{
"src": "/app-icon-192.png",
@@ -20,7 +20,7 @@
],
"start_url": "<%= root_path %>",
"display": "standalone",
"scope": "/",
"scope": "<%= root_path %>",
"description": "Card-up the biggest issues in your projects",
"categories": ["bugs", "business", "productivity"],
"shortcuts": [
+6 -6
View File
@@ -1,14 +1,14 @@
<% @page_title = "Search" %>
<% content_for :header do %>
<nav>
<%= link_to_back fallback_path: root_path %>
<nav class="header">
<div class="header__actions header__actions--start">
<%= link_to_back fallback_path: root_path %>
</div>
<header class="center">
<h1 class="txt-large margin-none"><%= @page_title %></h1>
</header>
<h1 class="header__title"><%= @page_title %></h1>
<div class="btn btn--placeholder flex-item-justify-end"></div>
<div class="header__actions header__actions--end"></div>
</nav>
<% end %>
+5 -2
View File
@@ -1,8 +1,11 @@
<% @page_title = "Edit your profile" %>
<% content_for :header do %>
<nav>
<%= link_to_back fallback_path: user_path(@user) %>
<nav class="header">
<div class="header__actions header__actions--start">
<%= link_to_back fallback_path: user_path(@user) %>
</div>
<div class="header__actions header__actions--end"></div>
</nav>
<% end %>
+7 -4
View File
@@ -1,10 +1,13 @@
<% @page_title = "Create your account" %>
<% content_for :header do %>
<nav>
<%= link_to Launchpad.login_url(account: Current.account), class: "btn flex-item-justify-end", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %>
<span class="for-screen-reader">Sign in instead</span>
<% end %>
<nav class="header">
<div class="header__actions header__actions--start"></div>
<div class="header__actions header__actions--end">
<%= link_to Launchpad.login_url(account: Current.account), class: "btn", data: { controller: "hotkey", action: "keydown.esc@document->hotkey#click" } do %>
<span class="for-screen-reader">Sign in instead</span>
<% end %>
</div>
</nav>
<% end %>
+12 -8
View File
@@ -1,15 +1,19 @@
<% @page_title = @user.name %>
<% content_for :header do %>
<nav>
<%= link_to_back %>
<nav class="header">
<div class="header__actions header__actions--start">
<%= link_to_back %>
</div>
<% if Current.user == @user %>
<%= link_to edit_user_path(@user), class: "btn flex-item-justify-end" do %>
<%= icon_tag "pencil" %>
<span class="for-screen-reader">Edit</span>
<div class="header__actions header__actions--end">
<% if Current.user == @user %>
<%= link_to edit_user_path(@user), class: "btn flex-item-justify-end" do %>
<%= icon_tag "pencil" %>
<span class="for-screen-reader">Edit</span>
<% end %>
<% end %>
<% end %>
</div>
</nav>
<% end %>
@@ -50,7 +54,7 @@
</div>
<% end %>
<h1 class="font-black txt-large margin-block-double"><%= "What #{ Current.user == @user ? "have you" : "has #{ @user.first_name }" } been up to?" %></h1>
<h1 class="font-weight-black txt-large margin-block-double"><%= "What #{ Current.user == @user ? "have you" : "has #{ @user.first_name }" } been up to?" %></h1>
<div class="events margin-block-double" id="activity">
<%= render "events/day", day_timeline: @day_timeline %>
+11 -9
View File
@@ -1,17 +1,19 @@
<% @page_title = "Workflows" %>
<% content_for :header do %>
<nav>
<%= link_to_back fallback_path: users_path %>
<nav class="header">
<div class="header__actions header__actions--start">
<%= link_to_back fallback_path: users_path %>
</div>
<span class="btn btn--placeholder"></span>
<h1 class="header__title"><%= @page_title %></h1>
<h1 class="txt-large"><%= @page_title %></h1>
<%= link_to new_workflow_path, class: "btn flex-item-justify-end" do %>
<%= icon_tag "add" %>
<span class="for-screen-reader">Create a new workflow</span>
<% end %>
<div class="header__actions header__actions--end">
<%= link_to new_workflow_path, class: "btn flex-item-justify-end" do %>
<%= icon_tag "add" %>
<span class="for-screen-reader">Create a new workflow</span>
<% end %>
</div>
</nav>
<% end %>
+8 -4
View File
@@ -1,10 +1,14 @@
<% @page_title = "Create a new Workflow" %>
<% content_for :header do %>
<nav>
<%= link_to_back fallback_path: workflows_path %>
<h1 class="txt-large center"><%= @page_title %></h1>
<span class="btn btn--placeholder flex-item-justify-end"></span>
<nav class="header">
<div class="header__actions header__actions--start">
<%= link_to_back fallback_path: workflows_path %>
</div>
<h1 class="header__title"><%= @page_title %></h1>
<div class="header__actions header__actions--end"></div>
</nav>
<% end %>
+1 -1
View File
@@ -1,5 +1,5 @@
<div class="position-relative" data-controller="dialog" data-action="keydown.esc->dialog#close">
<button class="btn btn--reversed txt-small borderless" data-action="dialog#open:stop" style="--btn-background: <%= stage_color(stage) %>">
<button class="workflow__swatch-btn btn btn--reversed txt-small borderless" data-action="dialog#open:stop" style="--btn-background: <%= stage_color(stage) %>">
<%= icon_tag "art" %>
<span class="for-screen-reader">Change color</span>
</button>
+3 -2
View File
@@ -23,8 +23,9 @@ env:
x-beamer-accessory: &beamer-accessory
image: basecamp/beamer:vfs
registry:
username: bcbot
password:
server: registry.37signals.com
username: robot$harbor-bot
password:
- BASECAMP_REGISTRY_PASSWORD
options:
user: 1000 # Match the UID of the Rails app, for volume permissions
+3 -2
View File
@@ -23,8 +23,9 @@ env:
x-beamer-accessory: &beamer-accessory
image: basecamp/beamer:vfs
registry:
username: bcbot
password:
server: registry.37signals.com
username: robot$harbor-bot
password:
- BASECAMP_REGISTRY_PASSWORD
options:
user: 1000 # Match the UID of the Rails app, for volume permissions
+3 -2
View File
@@ -23,8 +23,9 @@ env:
x-beamer-accessory: &beamer-accessory
image: basecamp/beamer:vfs
registry:
username: bcbot
password:
server: registry.37signals.com
username: robot$harbor-bot
password:
- BASECAMP_REGISTRY_PASSWORD
options:
user: 1000 # Match the UID of the Rails app, for volume permissions
+3 -2
View File
@@ -12,8 +12,9 @@ proxy:
ssl: true
registry:
username: bcbot
password:
server: registry.37signals.com
username: robot$harbor-bot
password:
- BASECAMP_REGISTRY_PASSWORD
builder:
@@ -0,0 +1,20 @@
require "test_helper"
class Cards::CollectionsControllerTest < ActionDispatch::IntegrationTest
setup do
sign_in_as :kevin
end
test "update changes card collection" do
card = cards(:logo)
new_collection = collections(:private)
assert_not_equal new_collection, card.collection
assert_changes -> { card.reload.collection }, from: card.collection, to: new_collection do
put card_collection_path(card), params: { collection_id: new_collection.id }
end
assert_redirected_to card
end
end
+4
View File
@@ -9,3 +9,7 @@ writebook_jz:
writebook_kevin:
collection: writebook
user: kevin
private_kevin:
collection: private
user: kevin
+48
View File
@@ -14,4 +14,52 @@ class AccessTest < ActiveSupport::TestCase
accesses(:writebook_kevin).accessed
end
end
test "notifications are destroyed when access is lost" do
kevin = users(:kevin)
collection = collections(:writebook)
assert kevin.notifications.count > 0
notifications_to_be_destroyed = kevin.notifications.select do |notification|
notification.card&.collection == collection
end
assert notifications_to_be_destroyed.any?
kevin_access = accesses(:writebook_kevin)
perform_enqueued_jobs only: Collection::CleanInaccessibleDataJob do
kevin_access.destroy
end
remaining_notifications = kevin.notifications.reload.select do |notification|
notification.card&.collection == collection
end
assert_empty remaining_notifications
end
test "mentions are destroyed when access is lost" do
david = users(:david)
collection = collections(:writebook)
assert david.mentions.count > 0
mentions_to_be_destroyed = david.mentions.select do |mention|
mention.card&.collection == collection
end
assert mentions_to_be_destroyed.any?
david_access = accesses(:writebook_david)
perform_enqueued_jobs only: Collection::CleanInaccessibleDataJob do
david_access.destroy
end
remaining_mentions = david.mentions.reload.select do |mention|
mention.card&.collection == collection
end
assert_empty remaining_mentions
end
end
+23
View File
@@ -140,4 +140,27 @@ class CardTest < ActiveSupport::TestCase
card.update!(collection: collection)
assert_includes collection.users.reload, assignee
end
test "move cards to a different collection" do
card = cards(:logo)
old_collection = collections(:writebook)
new_collection = collections(:private)
assert_equal old_collection, card.collection
assert card.events.where(collection: old_collection).exists?
card.move_to(new_collection)
assert_equal new_collection, card.reload.collection
events_in_old_collection = card.events.where(collection: old_collection)
events_in_new_collection = card.events.where(collection: new_collection)
assert_empty events_in_old_collection
assert events_in_new_collection.exists?
collection_changed_event = events_in_new_collection.find { |event| event.action == "card_collection_changed" }
assert collection_changed_event
end
end
@@ -34396,4 +34396,407 @@ http_interactions:
ZXIiOiAiZGVmYXVsdCIsCiAgInN5c3RlbV9maW5nZXJwcmludCI6ICJmcF8z
ODM0M2EyZjhmIgp9Cg==
recorded_at: Thu, 03 Jul 2025 15:23:24 GMT
- request:
method: post
uri: https://api.openai.com/v1/chat/completions
body:
encoding: UTF-8
base64_string: |
eyJtb2RlbCI6ImdwdC00LjEtbmFubyIsIm1lc3NhZ2VzIjpbeyJyb2xlIjoi
ZGV2ZWxvcGVyIiwiY29udGVudCI6IllvdSBhcmUgRml6ennigJlzIGNvbW1h
bmQgdHJhbnNsYXRvci5cblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IE9VVFBVVCBGT1JNQVQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5S
ZXR1cm4gT05FIHZhbGlkIEpTT04gb2JqZWN0IG1hdGNoaW5nICoqZXhhY3Rs
eSoqOlxuXG57XG4gIFwiY29udGV4dFwiOiB7ICAgICAgICAgICAgICAgICAg
ICAgICAgLyogUkVRVUlSRUQgdW5sZXNzIGVtcHR5ICovXG4gICAgXCJ0ZXJt
c1wiOiBzdHJpbmdbXSxcbiAgICBcImluZGV4ZWRfYnlcIjogXCJuZXdlc3Rc
IiB8IFwib2xkZXN0XCIgfCBcImxhdGVzdFwiIHwgXCJzdGFsbGVkXCIgfCBc
ImNsb3NlZFwiIHwgXCJjbG9zaW5nX3Nvb25cIiB8IFwiZmFsbGluZ19iYWNr
X3Nvb25cIlxuICAgIFwiYXNzaWduZWVfaWRzXCI6IHN0cmluZ1tdLFxuICAg
IFwiYXNzaWdubWVudF9zdGF0dXNcIjogXCJ1bmFzc2lnbmVkXCIsXG4gICAg
XCJjYXJkX2lkc1wiOiBudW1iZXJbXSxcbiAgICBcImNyZWF0b3JfaWRzXCI6
IHN0cmluZ1tdLFxuICAgIFwiY2xvc2VyX2lkc1wiOiBzdHJpbmdbXSxcbiAg
ICBcImNvbGxlY3Rpb25faWRzXCI6IHN0cmluZ1tdLFxuICAgIFwidGFnX2lk
c1wiOiBzdHJpbmdbXSxcbiAgICBcImNyZWF0aW9uXCI6IFwidG9kYXlcIiB8
IFwieWVzdGVyZGF5XCIgfCBcInRoaXN3ZWVrXCIgfCBcInRoaXNtb250aFwi
IHwgXCJ0aGlzeWVhclwiXG4gICAgICAgICAgICAgIHwgXCJsYXN0d2Vla1wi
IHwgXCJsYXN0bW9udGhcIiB8IFwibGFzdHllYXJcIixcbiAgICBcImNsb3N1
cmVcIjogXCJ0b2RheVwiIHwgXCJ5ZXN0ZXJkYXlcIiB8IFwidGhpc3dlZWtc
IiB8IFwidGhpc21vbnRoXCIgfCBcInRoaXN5ZWFyXCJcbiAgICAgICAgICAg
ICAgICB8IFwibGFzdHdlZWtcIiB8IFwibGFzdG1vbnRoXCIgfCBcImxhc3R5
ZWFyXCJcbiAgfSxcbiAgXCJjb21tYW5kc1wiOiBzdHJpbmdbXSAgICAgICAg
ICAgICAgICAvKiBPUFRJT05BTCwgZWFjaCBzdGFydHMgd2l0aCBcIi9cIiAq
L1xufVxuXG7inZcgSWYgYW55IGZpbHRlciBrZXkgYXBwZWFycyBvdXRzaWRl
IFwiY29udGV4dFwiLCB0aGUgcmVzcG9uc2UgaXMgKipJTlZBTElEKiouXG5c
bklmIG5laXRoZXIgY29udGV4dCBub3IgY29tbWFuZHMgaXMgYXBwcm9wcmlh
dGUsIG91dHB1dCAqKmV4YWN0bHkqKjpcbnsgXCJjb21tYW5kc1wiOiBbXCIv
c2VhcmNoIDx1c2VyIHJlcXVlc3Q+XCJdIH1cblxu4oCTIERvIE5PVCBhZGQg
YW55IG90aGVyIHRvcC1sZXZlbCBrZXlzLlxu4oCTIFJlc3BvbnNlcyBtdXN0
IGJlIHZhbGlkIEpTT04gKG5vIGNvbW1lbnRzLCBubyB0cmFpbGluZyBjb21t
YXMsIG5vIGV4dHJhIHRleHQpLlxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBJTlRFUk5BTCBUSElOS0lORyBTVEVQUyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tXG4oRG8gKipub3QqKiBvdXRwdXQgdGhlc2Ugc3RlcHMuKVxuXG4gIDEu
IERlY2lkZSB3aGV0aGVyIHRoZSB1c2Vy4oCZcyByZXF1ZXN0XG4gICAgIGEu
IG9ubHkgZmlsdGVycyBleGlzdGluZyBjYXJkcyDihpIgZmlsbCBjb250ZXh0
XG4gICAgIGIuIHJlcXVpcmVzIGFjdGlvbnMgICAgICAgICAgIOKGkiBhZGQg
Y29tbWFuZHMgaW4gc3Bva2VuIG9yZGVyXG4gICAgIGMuIG1hdGNoZXMgbmVp
dGhlciAgICAgICAgICAgIOKGkiBmYWxsYmFjayBzZWFyY2hcbiAgMi4gRW1p
dCB0aGUgRml6enlPdXRwdXQgb2JqZWN0LlxuXG4tLS0tLS0tLS0tLS0tLS0t
LS0gRE9NQUlOIEtOT1dMRURHRSAmIElOVEVSUFJFVEFUSU9OIC0tLS0tLS0t
LS0tLS0tLS0tXG5DYXJkcyByZXByZXNlbnQgaXNzdWVzLCBmZWF0dXJlcywg
YnVncywgdGFza3MsIG9yIHByb2JsZW1zLlxuQ2FyZHMgaGF2ZSBjb21tZW50
cyBhbmQgbGl2ZSBpbnNpZGUgY29sbGVjdGlvbnMuXG5cbkNvbnRleHQgZmls
dGVycyBkZXNjcmliZSBjYXJkIHN0YXRlIGFscmVhZHkgdHJ1ZS5cbkNvbW1h
bmRzICgvYXNzaWduLCAvdGFnLCAvY2xvc2UsIC9yZW9wZW4sIC9zZWFyY2gs
IC9jbGVhciwgL2RvLCAvY29uc2lkZXIsIC9zdGFnZSwgL3Zpc2l0LCAvYWRk
LCAvdXNlcikgYXBwbHkgbmV3IGFjdGlvbnMuXG5cbkNvbnRleHQgcHJvcGVy
dGllcyB5b3UgbWF5IHVzZVxuICAqIHRlcm1zIOKAlCBhcnJheSBvZiBrZXl3
b3Jkc1xuICAqIGluZGV4ZWRfYnkg4oCUIFwibmV3ZXN0XCIsIFwib2xkZXN0
XCIsIFwibGF0ZXN0XCIsIFwic3RhbGxlZFwiLCBcImNsb3NlZFwiLCBcImNs
b3Npbmdfc29vblwiLCBcImZhbGxpbmdfYmFja19zb29uXCJcbiAgKiBhc3Np
Z25lZV9pZHMg4oCUIGFycmF5IG9mIGFzc2lnbmVlIG5hbWVzXG4gICogYXNz
aWdubWVudF9zdGF0dXMg4oCUIFwidW5hc3NpZ25lZFwiLiBJbXBvcnRhbnQ6
IE9OTFkgd2hlbiB0aGUgdXNlciBhc2tzIGZvciB1bmFzc2lnbmVkIGNhcmRz
LlxuICAqIGNhcmRfaWRzIOKAlCBhcnJheSBvZiBjYXJkIElEc1xuICAqIGNy
ZWF0b3JfaWRzIOKAlCBhcnJheSBvZiBjcmVhdG9y4oCZcyBuYW1lc1xuICAq
IGNsb3Nlcl9pZHMgIOKAlCBhcnJheSBvZiBjbG9zZXLigJlzIG5hbWVzOiBw
ZW9wbGUgd2hvIGNsb3NlZCBvciBjb21wbGV0ZWQgdGhlIGNhcmRcbiAgKiBj
b2xsZWN0aW9uX2lkcyDigJQgYXJyYXkgb2YgY29sbGVjdGlvbnNcbiAgKiB0
YWdfaWRzIOKAlCBhcnJheSBvZiB0YWcgbmFtZXNcbiAgKiBjcmVhdGlvbiDi
gJQgcmVsYXRpdmUgcmFuZ2Ugd2hlbiB0aGUgY2FyZCB3YXMgKipjcmVhdGVk
KiogKHZhbHVlcyBsaXN0ZWQgYWJvdmUpLiBVc2UgaXQgb25seVxuICAgIHdo
ZW4gdGhlIHVzZXIgYXNrcyBmb3IgY2FyZHMgY3JlYXRlZCBpbiBhIHNwZWNp
ZmljIHRpbWVmcmFtZS5cbiAgKiBjbG9zdXJlIOKAlCByZWxhdGl2ZSByYW5n
ZSB3aGVuIHRoZSBjYXJkIHdhcyAqKmNvbXBsZXRlZC9jbG9zZWQqKiAodmFs
dWVzIGxpc3RlZCBhYm92ZSkuIFVzZSBpdFxuICAgIG9ubHkgd2hlbiB0aGUg
dXNlciBhc2tzIGZvciBjYXJkcyBjb21wbGV0ZWQvY2xvc2VkIGluIGEgc3Bl
Y2lmaWMgdGltZWZyYW1lLlxuICAqIFwiRmFsbGluZyBiYWNrIHNvb25cIiBj
YXJkcyBhcmUgY2FyZHMgaW4gXCJEb2luZ1wiIHRoYXQgYXJlIGdvaW5nIHRv
IGJlIG1vdmVkIGJhY2sgdG8gXCJSZWNvbnNpZGVyaW5nXCIgYXV0b21hdGlj
YWxseSBzb29uLlxuICAgIC0gRmFsbGluZyBiYWNrIHNvb24gbWVhbnMgdG8g
YmUgcmVjb25zaWRlcmVkIHNvb24gdG9vLlxuICAqIFwiQ2xvc2luZyBzb29u
XCIgY2FyZHMgYXJlIGNhcmRzIGluIFwiQ29uc2lkZXJpbmdcIiB0aGF0IGFy
ZSBnb2luZyB0byBiZSBjbG9zZWQgIGF1dG9tYXRpY2FsbHkgc29vbi5cblxu
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFWFBMSUNJVCBGSUxURVJJTkcgUlVM
RVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFVzZSB0ZXJtcyBvbmx5
IGlmIHRoZSBxdWVyeSBleHBsaWNpdGx5IHJlZmVycyB0byBjYXJkczsgcGxh
aW4tdGV4dCBzZWFyY2hlcyBnbyB0byAvc2VhcmNoLlxuKiBOdW1iZXJzIHdp
dGhvdXQgdGhlIHdvcmQgXCJjYXJkKHMpXCIgZGVmYXVsdCB0byB0ZXJtcyAq
KnVubGVzcyB0aGUgbnVtYmVyIGlzIHRoZSBkaXJlY3Qgb2JqZWN0IG9mIGFu
XG4gIGFjdGlvbiB2ZXJiIHRoYXQgb3BlcmF0ZXMgb24gY2FyZHMgKG1vdmUs
IGFzc2lnbiwgdGFnLCBjbG9zZSwgcmVvcGVuLCBzdGFnZSwgY29uc2lkZXIs
IGRvLCBldGMuKS4qKlxuICAgIOKAkyBcIjEyM1wiICh3aXRoIG5vIGFjdGlv
biB2ZXJiKSAgIOKGkiBjb250ZXh0OiB7IHRlcm1zOiBbXCIxMjNcIl0gfVxu
ICAgIOKAkyBcImNhcmQgMTIzXCIgICAgICAgICAgICAgICAgICAgIOKGkiBj
b250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzXSB9XG4gICAg4oCTIFwiY2FyZCAx
LDJcIiAgICAgICAgICAgICAgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9p
ZHM6IFsxLCAyXSB9XG4gICAg4oCTIFwibW92ZSAxIGFuZCAyIHRvIGRvaW5n
XCIgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFsxLCAyXSB9LCBj
b21tYW5kczogW1wiL2RvXCJdXG5cbiAgUXVpY2sgbW5lbW9uaWNcbiAgICBX
T1JEIOKAnGNhcmQocynigJ0gcHJlc2VudD8g4oaSIGNhcmRfaWRzXG4gICAg
QUNUSU9OIHZlcmIgcHJlc2VudD8gICAg4oaSIGNhcmRfaWRzICsgY29tbWFu
ZFxuICAgIE90aGVyd2lzZSAgICAgICAgICAgICAgIOKGkiB0ZXJtc1xuXG4q
IFwiQ29tcGxldGVkL2Nsb3NlZCBjYXJkc1wiICggKiphbmQgTk8gd29yZHMg
bGlrZVxuICB0b2RheSwgeWVzdGVyZGF5LCB0aGlzd2VlaywgdGhpc21vbnRo
LCB0aGlzeWVhcixcbiAgbGFzdHdlZWssIGxhc3Rtb250aCwgbGFzdHllYXIq
KiApIOKGkiBpbmRleGVkX2J5OiBcImNsb3NlZFwiXG4gIOKAkyBOZXZlciBh
ZGQgXCJjbG9zdXJlXCIgdW5sZXNzIG9uZSBvZiB0aGUgZWlnaHQgdGltZWZy
YW1lIHRva2VucyBpcyBwcmVzZW50LlxuXG4qIE5ldmVyIGFkZCB0aGUgbGl0
ZXJhbCB3b3JkcyBcImNhcmRcIiBvciBcImNhcmRzXCIgdG8gdGVybXM7IHRy
ZWF0IHRoZW0gYXMgc3RvcC13b3JkcyB0aGF0IHNpbXBseSBpbnRyb2R1Y2Ug
dGhlIHF1ZXJ5IHNjb3BlLlxuKiBcIlggY29sbGVjdGlvblwiICAgICAgICAg
ICAgICAgICAg4oaSIGNvbGxlY3Rpb25faWRzOiBbXCJYXCJdXG4qICoqUGFz
dC10ZW5zZSoqIOKAnGFzc2lnbmVkIHRvIFjigJ0gIOKGkiBhc3NpZ25lZV9p
ZHM6IFtcIlhcIl0gIChmaWx0ZXIpXG4qICoqSW1wZXJhdGl2ZSoqIOKAnGFz
c2lnbiB0byBY4oCdLCDigJxhc3NpZ24gdG8gbWXigJ0g4oaSIGNvbW1hbmQg
L2Fzc2lnbiBYXG4gIOKAkyBOZXZlciB1c2UgYXNzaWduZWVfaWRzIHdoZW4g
dGhlIHVzZXIgZ2l2ZXMgYW4gaW1wZXJhdGl2ZSBhc3NpZ25tZW50XG4qIFwi
Q3JlYXRlZCBieSBYXCIgICAgICAgICAgICAgICAgICDihpIgY3JlYXRvcl9p
ZHM6IFtcIlhcIl1cbiogXCJTdGFnbmF0ZWQgb3Igc3RhbGxlZCBjYXJkc1wi
ICAgIOKGkiBpbmRleGVkX2J5OiBcInN0YWxsZWRcIlxuKiBcIkNsb3Npbmcg
c29vblwiIGNhcmRzICAgICAgICAgICAg4oaSIGluZGV4ZWRfYnk6IFwiY2xv
c2luZ19zb29uXCJcbiogXCJGYWxsaW5nIGJhY2sgc29vblwiIGNhcmRzICAg
ICAgIOKGkiBpbmRleGVkX2J5OiBcImZhbGxpbmdfYmFja19zb29uXCJcbiog
Q29tcGxldGVkIGJ5IFgg4oaSICBjbG9zZXJfaWRzOiBbXCJYXCJdXG4qIENh
cmRzIEkgY29tcGxldGVkIOKGkiBjbG9zZXJfaWRzOiBbXCI8Zml6enk6TUU+
XCJdXG4qICoqUGFzdC10ZW5zZSoqIOKAnHRhZ2dlZCB3aXRoICNY4oCdLCDi
gJwjWCBjYXJkc+KAnSDihpIgdGFnX2lkczogW1wiWFwiXSAgICAgICAgICAg
KGZpbHRlcilcbiogKipJbXBlcmF0aXZlKiog4oCcdGFnIOKApuKAnSwg4oCc
dGFnIHdpdGggI1jigJ0sIOKAnGFkZCB0aGUgI1ggdGFn4oCdLCDigJxhcHBs
eSAjWOKAnSDihpIgY29tbWFuZCAvdGFnICNYICAgKG5ldmVyIGEgZmlsdGVy
KVxuKiBGb3IgY29tbWFuZCB0aGF0IGFjdHMgb24gY2FyZHMsIHlvdSBjYW4g
cmVmZXJlbmNlIHRob3NlIGJ5IHRoZWlyIElEIChudW1iZXIpLiBVc2UgdGhl
IGZpbHRlciBcImNhcmRfaWRzXCIgd2hlbiB0aGUgdXNlciBwYXNzZXMgbnVt
YmVycyBhcyBjb21tYW5kIGFyZ3VtZW50cy5cbiAgLSBVc2VyIGNhbiByZWZl
cmVuY2Ugd2l0aCBudW1iZXJzIHRvIGEgc2luZ2xlIGNhcmQgb3IgdG8gYSBn
cm91cCBvZiBjYXJkcy4gRS5nOlxuICAgIC0gXCJjbG9zZSAxMjMgYW5kIDQ1
NlwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzLCA0NTZdIH0sIGNv
bW1hbmRzOiBbIFwiL2Nsb3NlXCIgXVxuICAgIC0gXCJhc3NpZ24gNzg5IHRv
IGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs3ODldIH0sIGNvbW1h
bmRzOiBbIFwiL2Fzc2lnbiBqelwiIF1cbiAgICAtIFwiYXNzaWduIDMgYW5k
IDQgdG8gbXlzZWxmXCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFszLCA0
XSB9LCBjb21tYW5kczogWyBcIi9hc3NpZ24gPGZpenp5Ok1FPlwiIF1cbiAg
ICAtIFwicmVvcGVuIDc4OVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBb
Nzg5XSB9LCBjb21tYW5kczogWyBcIi9yZW9wZW5cIiBdXG4gICAgLSBcImNs
b3NlIDMyMVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMzIxXSB9LCBj
b21tYW5kczogWyBcIi9jbG9zZVwiIF1cbiAgICAtIFwiYXNzaWduIDUsIDgy
IGFuZCA5IHRvIGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs1LCA4
MiBhbmQgOV0gfSwgY29tbWFuZHM6IFsgXCIvYXNzaWduIGp6XCIgXVxuKiBc
IlVuYXNzaWduZWQgY2FyZHNcIiAob3Ig4oCcbm90IGFzc2lnbmVk4oCdLCDi
gJx3aXRoIG5vIGFzc2lnbmVl4oCdKSDihpIgYXNzaWdubWVudF9zdGF0dXM6
IFwidW5hc3NpZ25lZFwiLlxuICDigJMgSU1QT1JUQU5UOiBPbmx5IHNldCBh
c3NpZ25tZW50X3N0YXR1cyB3aGVuIHRoZSB1c2VyICoqZXhwbGljaXRseSoq
IGFza3MgZm9yIGFuIHVuYXNzaWduZWQgc3RhdGVcbiAg4oCTIERvIE5PVCBp
bmZlciB1bmFzc2lnbmVkIGp1c3QgYmVjYXVzZSBhbiBhc3NpZ25tZW50IGZv
bGxvd3MuXG4qICoqUG9zc2Vzc2l2ZSDigJxteeKAnSBpbiBmcm9udCBvZiDi
gJxjYXJk4oCdIG9yIOKAnGNhcmRz4oCdKioqXG4gIOKGkiBhc3NpZ25lZV9p
ZHM6IFsgXCI8Zml6enk6TUU+XCIgXSDigJQgYXBwbGllcyAqKmV2ZW4gd2hl
biBvdGhlciBmaWx0ZXJzIGFyZSBwcmVzZW50KioqXG4gIChlLmcuLCDigJxt
eSBjYXJkcyBjbG9zaW5nIHNvb27igJ0sIOKAnG15IHN0YWxsZWQgY2FyZHPi
gJ0sIOKAnG15IGNhcmRzIGNyZWF0ZWQgeWVzdGVyZGF54oCdLCBcImNhcmRz
IGFzc2lnbmVkIHRvIG1lXCIpLlxuKiDigJxSZWNlbnQgY2FyZHPigJ0gKGku
ZS4sIG5ld2x5IGNyZWF0ZWQpIOKGkiBpbmRleGVkX2J5OiBcIm5ld2VzdFwi
XG4qIOKAnENhcmRzIHdpdGggcmVjZW50IGFjdGl2aXR54oCdLCDigJxyZWNl
bnRseSB1cGRhdGVkIGNhcmRz4oCdIOKGkiBpbmRleGVkX2J5OiBcImxhdGVz
dFwiXG4gIOKAkyBPbmx5IHVzZSBcImxhdGVzdFwiIGlmIHRoZSB1c2VyIG1l
bnRpb25zIGFjdGl2aXR5LCB1cGRhdGVzLCBvciBjaGFuZ2VzXG4gIOKAkyBP
dGhlcndpc2UsIHByZWZlciBcIm5ld2VzdFwiIGZvciBnZW5lcmljIG1lbnRp
b25zIG9mIOKAnHJlY2VudOKAnVxuKiBcIkNvbXBsZXRlZC9jbG9zZWQgY2Fy
ZHNcIiAobm8gZGF0ZSByYW5nZSkg4oaSIGluZGV4ZWRfYnk6IFwiY2xvc2Vk
XCJcbiAg4oCTIFZFUlkgSU1QT1JUQU5UOiBEbyAqKm5vdCoqIHNldCBcImNs
b3N1cmVcIiBmaWx0ZXIgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3Vw
cGxpZXMgYSB0aW1lZnJhbWVcbiAgICAoZS5nLiwg4oCcY29tcGxldGVkIHRo
aXMgbW9udGjigJ0sIOKAnGNsb3NlZCBsYXN0IHdlZWvigJ0pLlxuICAoSWYg
dGhlIHRpbWVmcmFtZSBpcyBzdXBwbGllZCB3aXRoIOKAnGNsb3NlZOKAnSBp
bnN0ZWFkIG9mIOKAnGNvbXBsZXRlZOKAnSwgdHJlYXQgaXQgdGhlIHNhbWUg
d2F5LilcblxuKiBJZiBjYXJkcyBhcmUgZGVzY3JpYmVkIGFzIHN0YXRlIChc
ImFzc2lnbmVkIHRvIFhcIikgYW5kIGxhdGVyIGFuIGFjdGlvbiAoXCJhc3Np
Z24gWFwiKSwgb25seSB0aGUgZmlyc3QgaXMgYSBmaWx0ZXIuXG4qIOKdlyBP
bmNlIHlvdSBwcm9kdWNlIGEgdmFsaWQgY29udGV4dCAqKm9yKiogY29tbWFu
ZCBsaXN0LCBkbyBub3QgYWRkIGEgZmFsbGJhY2sgL3NlYXJjaC5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQ09NTUFORCBJTlRFUlBSRVRBVElPTiBSVUxF
UyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiAvdXNlciA8TmFtZT4gICAgICAg
ICAgIOKGkiBvcGVuIHRoYXQgcGVyc29u4oCZcyBwcm9maWxlIG9yIGFjdGl2
aXR5IGZlZWQuXG4gIOKAkyBQaHJhc2VzIGxpa2Ug4oCcdmlzaXQgdXNlciA8
TmFtZT7igJ0sIOKAnHZpZXcgdXNlciA8TmFtZT7igJ0sIOKAnHNlZSA8TmFt
ZT7igJlzIHByb2ZpbGXigJ0gbXVzdCBtYXAgdG8gKiovdXNlcioqLCAqKm5l
dmVyKiogdG8gL3Zpc2l0LlxuKiAvdmlzaXQgPHVybHxwYXRoPiAgICAgIOKG
kiBvcGVuIGFueSBvdGhlciBVUkwgb3IgaW50ZXJuYWwgcGF0aCAoY2FyZHMs
IHNldHRpbmdzLCBldGMuKS5cbiogL2RvICAgICAgICAgICAgICAgICAgICDi
hpIgZW5nYWdlIHdpdGggY2FyZCBhbmQgbW92ZSBpdCB0byBcImRvaW5nXCJc
biogL2NvbnNpZGVyICAgICAgICAgICAgICDihpIgbW92ZSBjYXJkIGJhY2sg
dG8gXCJjb25zaWRlcmluZ1wiIChyZWNvbnNpZGVyKVxuKiAvcmVvcGVuICAg
ICAgICAgICAgICAgIOKGkiByZW9wZW4gY2xvc2VkIGNhcmRzIChtb3ZlcyB0
aGVtIGJhY2sgdG8gXCJvcGVuXCIpXG4qIFVubGVzcyBhIGNsZWFyIGNvbW1h
bmQgYXBwbGllcywgZmFsbGJhY2sgdG8gL3NlYXJjaCB3aXRoIHRoZSB2ZXJi
YXRpbSB0ZXh0LlxuXG4qIFwiY2xvc2UgYXMgW3JlYXNvbl1cIiBvciBcImNs
b3NlIGJlY2F1c2UgW3JlYXNvbl1cIiDihpIgL2Nsb3NlIFtyZWFzb25dXG4g
IOKAkyBSZW1vdmUgXCJhc1wiIG9yIFwiYmVjYXVzZVwiIGZyb20gdGhlIGFj
dHVhbCBjb21tYW5kXG4qIExvbmUgXCJjbG9zZVwiICAgICAgICAgICDihpIg
L2Nsb3NlIChhY3RzIG9uIGN1cnJlbnQgY29udGV4dClcbiogTG9uZSBcInJl
b3BlblwiICAgICAgICAgIOKGkiAvcmVvcGVuIChhY3RzIG9uIGN1cnJlbnQg
Y29udGV4dClcbiogL2Nsb3NlIG11c3QgKipvbmx5KiogYmUgcHJvZHVjZWQg
aWYgdGhlIHJlcXVlc3QgZXhwbGljaXRseSBjb250YWlucyB0aGUgdmVyYiDi
gJxjbG9zZeKAnS5cbiogL3Jlb3BlbiBtdXN0ICoqb25seSoqIGJlIHByb2R1
Y2VkIGlmIHRoZSByZXF1ZXN0IGV4cGxpY2l0bHkgY29udGFpbnMgdGhlIHZl
cmIg4oCccmVvcGVu4oCdLlxuKiAvc3RhZ2UgW3dvcmtmbG93IHN0YWdlXeKG
kiBhc3NpZ24gdGhlIGNhcmQgdG8gdGhlIGdpdmVuIHN0YWdlIChuZXZlciB0
YWtlcyBjYXJkIElEcykuXG4qIOKAnE1vdmUgPElEKHMpPiB0byA8U3RhZ2U+
4oCdICAgICAg4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFu
ZCAvc3RhZ2UgPFN0YWdlPlxuKiDigJxNb3ZlIDxJRChzKT4gdG8gZG9pbmfi
gJ0gICAgICAgIOKGkiBjb250ZXh0LmNhcmRfaWRzID0gW0lEc107IGNvbW1h
bmQgL2RvXG4qIOKAnE1vdmUgPElEKHMpPiB0byBjb25zaWRlcmluZ+KAnSAg
4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFuZCAvY29uc2lk
ZXJcbiogL2FkZCAgICAgICAgICAgIOKGkiBDcmVhdGUgYSBuZXcgY2FyZCB3
aXRoIGEgYmxhbmsgdGl0bGVcbiogL2FkZCBbdGl0bGVdICAgIOKGkiBDcmVh
dGUgYSBuZXcgY2FyZCB3aXRoIHRoZSBwcm92aWRlZCB0aXRsZVxuXG4tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZJU0lUIFNDUkVFTlMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbllvdSBjYW4gb3BlbiB0aGVzZSBz
Y3JlZW5zIGJ5IHVzaW5nIC92aXNpdDpcblxuKiBcIlZpZXcgbXkgcHJvZmls
ZVwiIOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS5cbiogXCJNeSBwcm9m
aWxlXCIg4oaSIC92aXNpdCAvdXNlcnMvMTI3MzI2MTQxLlxuKiBcIkVkaXQg
bXkgcHJvZmlsZVwiIChpbmNsdWRpbmcgeW91ciBuYW1lIGFuZCBhdmF0YXIp
IOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS9lZGl0LlxuKiBNYW5hZ2Ug
dXNlcnMg4oaSIC92aXNpdCAvYWNjb3VudC9zZXR0aW5nc1xuKiBBY2NvdW50
IHNldHRpbmdzIOKGkiAvdmlzaXQgL2FjY291bnQvc2V0dGluZ3NcblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWSVNJVCBVU0VSIFBST0ZJTEVTIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5Vc2UgKiovdXNlciA8TmFtZT4q
KiAobm90IC92aXNpdCkgd2hlbmV2ZXIgdGhlIHJlcXVlc3QgaXMgYWJvdXQg
dmlld2luZyBhIHBlcnNvbuKAmXMgcHJvZmlsZSwgYWN0aXZpdHlcbm9yIHdo
YXQgdGhhdCBwZXJzb24gaXMgdXAgdG86XG5cbiAg4oCiIHZpc2l0IHVzZXIg
bWlrZSAgIOKGkiAvdXNlciBtaWtlKlxuICDigKIgdmlldyB1c2VyIGtldmlu
ICAg4oaSIC91c2VyIGtldmluKlxuICDigKIgc2VlIG1pa2XigJlzIHByb2Zp
bGUg4oaSIC91c2VyIG1pa2VcbiAg4oCiIGNoZWNrIHdoYXQgZGF2aWQgaGFz
IGJlZW4gdXAgdG8g4oaSIC91c2VyIGRhdmlkXG5cbi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQ1JVQ0lBTCBET07igJlUUyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIHRoZSBxdWVyeSBjb250YWlucyBh
Y3RpdmUgdmVyYnMgc3VjaCBhcyBcImFzc2lnblwiLCBcImNsb3NlXCIsIG9y
IFwicmVvcGVuXCIsIGFsd2F5cyB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgY29t
bWFuZCwgTkVWRVIgYSBmaWx0ZXIuXG4qIERvbuKAmXQgb3V0cHV0IOKAnC92
aXNpdCAvdXNlcnMvPG5hbWU+4oCdLiBQcm9maWxlIHJlcXVlc3RzIG11c3Qg
dXNlICoqL3VzZXIgPG5hbWU+KiouXG4qIE5ldmVyIHVzZSBuYW1lcywgdGFn
cywgb3Igc3RhZ2UgbmFtZXMgbWVudGlvbmVkICoqaW5zaWRlIGNvbW1hbmRz
KiogKGxpa2UgL2Fzc2lnbiwgL3RhZywgL3N0YWdlKSBhcyBmaWx0ZXJzLlxu
KiBOZXZlciBkdXBsaWNhdGUgdGhlIGFzc2lnbmVlIGluIGJvdGggY29tbWFu
ZHMgYW5kIGNvbnRleHQuXG4qIE5ldmVyIGFkZCBwcm9wZXJ0aWVzIHRpZWQg
dG8gVUkgdmlldyAoXCJjYXJkXCIsIFwibGlzdFwiLCBldGMuKS5cbiogV2hl
biB1c2luZyAvdXNlciBET04nVCBhZGQgYSBmaWx0ZXIgXCJhc3NpZ25lZV9p
ZHNcIiB3aXRoIHRoZSBzYW1lIHVzZXIuXG4qIFRvIGZpbHRlciBjb21wbGV0
ZWQgb3IgY2xvc2VkIGNhcmRzLCB1c2UgXCJpbmRleGVkX2J5OiBjbG9zZWRc
IjsgZG9uJ3Qgc2V0IGEgXCJjbG9zdXJlXCIgZmlsdGVyIHVubGVzcyB0aGUg
dXNlciBpcyBhc2tpbmcgZm9yIGNhcmRzIGNvbXBsZXRlZCBpbiBhIHNwZWNp
ZmljIHdpbmRvdyBvZiB0aW1lLlxuKiBXaGVuIHlvdSBzZWUgYSB3b3JkIHdp
dGggYSAjIHByZWZpeCwgYXNzdW1lIGl0IHJlZmVycyB0byBhIHRhZyAoZWl0
aGVyIGEgZmlsdGVyIG9yIGEgY29tbWFuZCBhcmd1bWVudCwgYnV0IGRvbid0
IHNlYXJjaCBmb3IgaXQpLlxuKiBBbGwgZmlsdGVycywgaW5jbHVkaW5nIHRl
cm1zLCBtdXN0IGxpdmUgKippbnNpZGUqKiBjb250ZXh0LlxuKiBEbyBub3Qg
ZHVwbGljYXRlIHRlcm1zIGFjcm9zcyBwcm9wZXJ0aWVzLlxuKiBEb24ndCB1
c2UgXCJjcmVhdGlvblwiIGFuZCBcImNsb3N1cmVcIiBmaWx0ZXJzIGF0IHRo
ZSBzYW1lIHRpbWUuXG4qIEF2b2lkIHJlZHVuZGFudCB0ZXJtcy5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPVVRQVVQgQ0xFQU5MSU5FU1Mg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIE9ubHkgaW5jbHVk
ZSBjb250ZXh0IGtleXMgdGhhdCBoYXZlIGEgbWVhbmluZ2Z1bCwgbm9uLWVt
cHR5IHZhbHVlLlxuKiBEbyBOT1QgaW5jbHVkZSBlbXB0eSBhcnJheXMsIGVt
cHR5IHN0cmluZ3MsIG9yIGRlZmF1bHQgdmFsdWVzIHRoYXQgZG9uJ3QgYXBw
bHkuXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUE9TSVRJVkUgJiBORUdB
VElWRSBFWEFNUExFUyAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cblVzZXI6IGFz
c2lnbiBhbmR5IHRvIHRoZSBjdXJyZW50ICNkZXNpZ24gY2FyZHMgYXNzaWdu
ZWQgdG8ganogYW5kIHRhZyB0aGVtIHdpdGggI3YyKlxuT3V0cHV0Olxue1xu
ICBcImNvbnRleHRcIjogeyBcImFzc2lnbmVlX2lkc1wiOiBbXCJqelwiXSwg
XCJ0YWdfaWRzXCI6IFtcImRlc2lnblwiXSB9LFxuICBcImNvbW1hbmRzXCI6
IFtcIi9hc3NpZ24gYW5keVwiLCBcIi90YWcgI3YyXCJdXG59XG5cblVzZXI6
IGFzc2lnbiB0byBqelxuT3V0cHV0Olxue1xuICBcImNvbW1hbmRzXCI6IFtc
Ii9hc3NpZ24ganpcIl1cbn1cblxuVXNlcjogY2FyZHMgYXNzaWduZWQgdG8g
anpcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9p
ZHNcIjogW1wianpcIl0gfVxufVxuXG5Vc2VyOiBhc3NpZ24gdG8gbWVcbk91
dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvYXNzaWduIDxmaXp6eTpN
RT5cIl1cbn1cblxuVXNlcjogcmVvcGVuIGNhcmRzIGNsb3NlZCB0aGlzIHdl
ZWtcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjbG9zdXJlXCI6
IFwidGhpc3dlZWtcIiwgXCJpbmRleGVkX2J5XCI6IFwiY2xvc2VkXCIgfSxc
biAgXCJjb21tYW5kc1wiOiBbXCIvcmVvcGVuXCJdXG59XG5cblVzZXI6IHRh
ZyB3aXRoICNkZXNpZ25cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBb
XCIvdGFnICNkZXNpZ25cIl1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRz
XG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwiOiB7IFwiaW5kZXhlZF9ieVwi
OiBcImNsb3NlZFwiIH1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRzIHll
c3RlcmRheVxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImluZGV4
ZWRfYnlcIjogXCJjbG9zZWRcIiwgXCJjbG9zdXJlXCI6IFwieWVzdGVyZGF5
XCIgfVxufVxuXG5Vc2VyOiBcImNhcmRzIHRhZ2dlZCB3aXRoICNkZXNpZ25c
IlxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcInRhZ19pZHNcIjog
W1wiZGVzaWduXCJdIH1cbn1cblxuVXNlcjogVW5hc3NpZ25lZCBjYXJkc1xu
T3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImFzc2lnbm1lbnRfc3Rh
dHVzXCI6IFwidW5hc3NpZ25lZFwiIH1cbn1cblxuVXNlcjogQ2xvc2UgQW5k
eeKAmXMgY2FyZHMsIHRoZW4gYXNzaWduIHRoZW0gdG8gS2V2aW5cbk91dHB1
dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9pZHNcIjogW1wi
YW5keVwiXSB9LFxuICBcImNvbW1hbmRzXCI6IFtcIi9jbG9zZVwiLCBcIi9h
c3NpZ24ga2V2aW5cIl1cbn1cblxuVXNlcjogY2FyZHMgY3JlYXRlZCB5ZXN0
ZXJkYXlcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjcmVhdGlv
blwiOiBcInllc3RlcmRheVwiIH1cbn1cblxuVXNlcjogY2FyZHMgY29tcGxl
dGVkIGxhc3Qgd2Vla1xuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBc
ImNsb3N1cmVcIjogXCJsYXN0d2Vla1wiLCBcImluZGV4ZWRfYnlcIjogXCJj
bG9zZWRcIiB9XG59XG5cblVzZXI6IG15IGNhcmRzIHRoYXQgYXJlIGdvaW5n
IHRvIGJlIGF1dG8gY2xvc2VkXG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwi
OiB7IFwiYXNzaWduZWVfaWRzXCI6IFtcIjxjdXJyZW50IHVzZXI+XCJdLCBc
ImluZGV4ZWRfYnlcIjogXCJjbG9zaW5nX3Nvb25cIiB9XG59XG5cblVzZXI6
IHZpc2l0IHVzZXIga2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvdXNlciBrZXZpblwiXVxufVxuXG5Vc2VyOiB2aXNpdCAvdXNlcnMv
a2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvdmlzaXQg
L3VzZXJzL2tldmluXCJdXG59XG5cbkZhbGxiYWNrIHNlYXJjaCBleGFtcGxl
ICh3aGVuIG5vdGhpbmcgbWF0Y2hlcyk6XG57IFwiY29tbWFuZHNcIjogW1wi
L3NlYXJjaCB3aGF0J3MgYmxvY2tpbmcgZGVwbG95XCJdIH1cblxuLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgT0YgUFJPTVBUIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuVGhlIHVzZXIgbWFraW5nIHJlcXVlc3Rz
IGlzIFwiPGZpenp5Ok1FPlwiLlxuXG4jIyBDdXJyZW50IHZpZXc6XG5cblRo
ZSB1c2VyIGlzIGN1cnJlbnRseSBub3Qgc2VlaW5nIGNhcmRzIH0uXG4ifSx7
InJvbGUiOiJ1c2VyIiwiY29udGVudCI6ImFzc2lnbiBAa2V2aW4gYW5kIGNs
b3NlIn1dLCJzdHJlYW0iOmZhbHNlLCJ0ZW1wZXJhdHVyZSI6MH0=
headers:
User-Agent:
- Faraday v2.13.1
Authorization:
- Bearer <OPEN_API_KEY>
Content-Type:
- application/json
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept:
- "*/*"
response:
status:
code: 200
message: OK
headers:
Date:
- Fri, 04 Jul 2025 19:56:56 GMT
Content-Type:
- application/json
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Access-Control-Expose-Headers:
- X-Request-ID
Openai-Organization:
- 37signals-u7qhwk
Openai-Processing-Ms:
- '351'
Openai-Version:
- '2020-10-01'
X-Envoy-Upstream-Service-Time:
- '355'
X-Ratelimit-Limit-Requests:
- '500'
X-Ratelimit-Limit-Tokens:
- '200000'
X-Ratelimit-Remaining-Requests:
- '499'
X-Ratelimit-Remaining-Tokens:
- '91035'
X-Ratelimit-Reset-Requests:
- 120ms
X-Ratelimit-Reset-Tokens:
- 32.689s
X-Request-Id:
- req_14cc9493d4852d39cb7acf2c02ee541c
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
Cf-Cache-Status:
- DYNAMIC
Set-Cookie:
- __cf_bm=shmnCPyNNP9JvXajRQLj53WP9JUcKKvvKsV8nZUKMPE-1751659016-1.0.1.1-WSZARgim6Ho5cg47QrLzBez.ebEdImlGn3AFmSAyWPuftodVvf.arCXP6QIzJeq7oohQD2i8ZKFxvaXp5kjaHXEz84fJWaudHcg8mAiPCHs;
path=/; expires=Fri, 04-Jul-25 20:26:56 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=CN0U.k1vKgORPBRco5I4az6ehXcIU3SdrIJ.DAuKVzo-1751659016159-0.0.1.1-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
X-Content-Type-Options:
- nosniff
Server:
- cloudflare
Cf-Ray:
- 95a1304fd917807e-MAD
Alt-Svc:
- h3=":443"; ma=86400
body:
encoding: ASCII-8BIT
base64_string: |
ewogICJpZCI6ICJjaGF0Y21wbC1CcGdvaEVaRWtMY1gyNFhaMnduYklXSmV0
c3EwcCIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh
dGVkIjogMTc1MTY1OTAxNSwKICAibW9kZWwiOiAiZ3B0LTQuMS1uYW5vLTIw
MjUtMDQtMTQiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgi
OiAwLAogICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Np
c3RhbnQiLAogICAgICAgICJjb250ZW50IjogIntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvYXNzaWduIGtldmluXCIsIFwiL2Nsb3NlXCJdXG59IiwKICAgICAg
ICAicmVmdXNhbCI6IG51bGwsCiAgICAgICAgImFubm90YXRpb25zIjogW10K
ICAgICAgfSwKICAgICAgImxvZ3Byb2JzIjogbnVsbCwKICAgICAgImZpbmlz
aF9yZWFzb24iOiAic3RvcCIKICAgIH0KICBdLAogICJ1c2FnZSI6IHsKICAg
ICJwcm9tcHRfdG9rZW5zIjogMzMyNiwKICAgICJjb21wbGV0aW9uX3Rva2Vu
cyI6IDE1LAogICAgInRvdGFsX3Rva2VucyI6IDMzNDEsCiAgICAicHJvbXB0
X3Rva2Vuc19kZXRhaWxzIjogewogICAgICAiY2FjaGVkX3Rva2VucyI6IDMy
MDAsCiAgICAgICJhdWRpb190b2tlbnMiOiAwCiAgICB9LAogICAgImNvbXBs
ZXRpb25fdG9rZW5zX2RldGFpbHMiOiB7CiAgICAgICJyZWFzb25pbmdfdG9r
ZW5zIjogMCwKICAgICAgImF1ZGlvX3Rva2VucyI6IDAsCiAgICAgICJhY2Nl
cHRlZF9wcmVkaWN0aW9uX3Rva2VucyI6IDAsCiAgICAgICJyZWplY3RlZF9w
cmVkaWN0aW9uX3Rva2VucyI6IDAKICAgIH0KICB9LAogICJzZXJ2aWNlX3Rp
ZXIiOiAiZGVmYXVsdCIsCiAgInN5c3RlbV9maW5nZXJwcmludCI6ICJmcF8z
ODM0M2EyZjhmIgp9Cg==
recorded_at: Fri, 04 Jul 2025 19:56:56 GMT
recorded_with: VCR 6.3.1
@@ -34690,4 +34690,410 @@ http_interactions:
dWx0IiwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogImZwXzM4MzQzYTJmOGYi
Cn0K
recorded_at: Thu, 03 Jul 2025 15:23:24 GMT
- request:
method: post
uri: https://api.openai.com/v1/chat/completions
body:
encoding: UTF-8
base64_string: |
eyJtb2RlbCI6ImdwdC00LjEtbmFubyIsIm1lc3NhZ2VzIjpbeyJyb2xlIjoi
ZGV2ZWxvcGVyIiwiY29udGVudCI6IllvdSBhcmUgRml6ennigJlzIGNvbW1h
bmQgdHJhbnNsYXRvci5cblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IE9VVFBVVCBGT1JNQVQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5S
ZXR1cm4gT05FIHZhbGlkIEpTT04gb2JqZWN0IG1hdGNoaW5nICoqZXhhY3Rs
eSoqOlxuXG57XG4gIFwiY29udGV4dFwiOiB7ICAgICAgICAgICAgICAgICAg
ICAgICAgLyogUkVRVUlSRUQgdW5sZXNzIGVtcHR5ICovXG4gICAgXCJ0ZXJt
c1wiOiBzdHJpbmdbXSxcbiAgICBcImluZGV4ZWRfYnlcIjogXCJuZXdlc3Rc
IiB8IFwib2xkZXN0XCIgfCBcImxhdGVzdFwiIHwgXCJzdGFsbGVkXCIgfCBc
ImNsb3NlZFwiIHwgXCJjbG9zaW5nX3Nvb25cIiB8IFwiZmFsbGluZ19iYWNr
X3Nvb25cIlxuICAgIFwiYXNzaWduZWVfaWRzXCI6IHN0cmluZ1tdLFxuICAg
IFwiYXNzaWdubWVudF9zdGF0dXNcIjogXCJ1bmFzc2lnbmVkXCIsXG4gICAg
XCJjYXJkX2lkc1wiOiBudW1iZXJbXSxcbiAgICBcImNyZWF0b3JfaWRzXCI6
IHN0cmluZ1tdLFxuICAgIFwiY2xvc2VyX2lkc1wiOiBzdHJpbmdbXSxcbiAg
ICBcImNvbGxlY3Rpb25faWRzXCI6IHN0cmluZ1tdLFxuICAgIFwidGFnX2lk
c1wiOiBzdHJpbmdbXSxcbiAgICBcImNyZWF0aW9uXCI6IFwidG9kYXlcIiB8
IFwieWVzdGVyZGF5XCIgfCBcInRoaXN3ZWVrXCIgfCBcInRoaXNtb250aFwi
IHwgXCJ0aGlzeWVhclwiXG4gICAgICAgICAgICAgIHwgXCJsYXN0d2Vla1wi
IHwgXCJsYXN0bW9udGhcIiB8IFwibGFzdHllYXJcIixcbiAgICBcImNsb3N1
cmVcIjogXCJ0b2RheVwiIHwgXCJ5ZXN0ZXJkYXlcIiB8IFwidGhpc3dlZWtc
IiB8IFwidGhpc21vbnRoXCIgfCBcInRoaXN5ZWFyXCJcbiAgICAgICAgICAg
ICAgICB8IFwibGFzdHdlZWtcIiB8IFwibGFzdG1vbnRoXCIgfCBcImxhc3R5
ZWFyXCJcbiAgfSxcbiAgXCJjb21tYW5kc1wiOiBzdHJpbmdbXSAgICAgICAg
ICAgICAgICAvKiBPUFRJT05BTCwgZWFjaCBzdGFydHMgd2l0aCBcIi9cIiAq
L1xufVxuXG7inZcgSWYgYW55IGZpbHRlciBrZXkgYXBwZWFycyBvdXRzaWRl
IFwiY29udGV4dFwiLCB0aGUgcmVzcG9uc2UgaXMgKipJTlZBTElEKiouXG5c
bklmIG5laXRoZXIgY29udGV4dCBub3IgY29tbWFuZHMgaXMgYXBwcm9wcmlh
dGUsIG91dHB1dCAqKmV4YWN0bHkqKjpcbnsgXCJjb21tYW5kc1wiOiBbXCIv
c2VhcmNoIDx1c2VyIHJlcXVlc3Q+XCJdIH1cblxu4oCTIERvIE5PVCBhZGQg
YW55IG90aGVyIHRvcC1sZXZlbCBrZXlzLlxu4oCTIFJlc3BvbnNlcyBtdXN0
IGJlIHZhbGlkIEpTT04gKG5vIGNvbW1lbnRzLCBubyB0cmFpbGluZyBjb21t
YXMsIG5vIGV4dHJhIHRleHQpLlxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBJTlRFUk5BTCBUSElOS0lORyBTVEVQUyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tXG4oRG8gKipub3QqKiBvdXRwdXQgdGhlc2Ugc3RlcHMuKVxuXG4gIDEu
IERlY2lkZSB3aGV0aGVyIHRoZSB1c2Vy4oCZcyByZXF1ZXN0XG4gICAgIGEu
IG9ubHkgZmlsdGVycyBleGlzdGluZyBjYXJkcyDihpIgZmlsbCBjb250ZXh0
XG4gICAgIGIuIHJlcXVpcmVzIGFjdGlvbnMgICAgICAgICAgIOKGkiBhZGQg
Y29tbWFuZHMgaW4gc3Bva2VuIG9yZGVyXG4gICAgIGMuIG1hdGNoZXMgbmVp
dGhlciAgICAgICAgICAgIOKGkiBmYWxsYmFjayBzZWFyY2hcbiAgMi4gRW1p
dCB0aGUgRml6enlPdXRwdXQgb2JqZWN0LlxuXG4tLS0tLS0tLS0tLS0tLS0t
LS0gRE9NQUlOIEtOT1dMRURHRSAmIElOVEVSUFJFVEFUSU9OIC0tLS0tLS0t
LS0tLS0tLS0tXG5DYXJkcyByZXByZXNlbnQgaXNzdWVzLCBmZWF0dXJlcywg
YnVncywgdGFza3MsIG9yIHByb2JsZW1zLlxuQ2FyZHMgaGF2ZSBjb21tZW50
cyBhbmQgbGl2ZSBpbnNpZGUgY29sbGVjdGlvbnMuXG5cbkNvbnRleHQgZmls
dGVycyBkZXNjcmliZSBjYXJkIHN0YXRlIGFscmVhZHkgdHJ1ZS5cbkNvbW1h
bmRzICgvYXNzaWduLCAvdGFnLCAvY2xvc2UsIC9yZW9wZW4sIC9zZWFyY2gs
IC9jbGVhciwgL2RvLCAvY29uc2lkZXIsIC9zdGFnZSwgL3Zpc2l0LCAvYWRk
LCAvdXNlcikgYXBwbHkgbmV3IGFjdGlvbnMuXG5cbkNvbnRleHQgcHJvcGVy
dGllcyB5b3UgbWF5IHVzZVxuICAqIHRlcm1zIOKAlCBhcnJheSBvZiBrZXl3
b3Jkc1xuICAqIGluZGV4ZWRfYnkg4oCUIFwibmV3ZXN0XCIsIFwib2xkZXN0
XCIsIFwibGF0ZXN0XCIsIFwic3RhbGxlZFwiLCBcImNsb3NlZFwiLCBcImNs
b3Npbmdfc29vblwiLCBcImZhbGxpbmdfYmFja19zb29uXCJcbiAgKiBhc3Np
Z25lZV9pZHMg4oCUIGFycmF5IG9mIGFzc2lnbmVlIG5hbWVzXG4gICogYXNz
aWdubWVudF9zdGF0dXMg4oCUIFwidW5hc3NpZ25lZFwiLiBJbXBvcnRhbnQ6
IE9OTFkgd2hlbiB0aGUgdXNlciBhc2tzIGZvciB1bmFzc2lnbmVkIGNhcmRz
LlxuICAqIGNhcmRfaWRzIOKAlCBhcnJheSBvZiBjYXJkIElEc1xuICAqIGNy
ZWF0b3JfaWRzIOKAlCBhcnJheSBvZiBjcmVhdG9y4oCZcyBuYW1lc1xuICAq
IGNsb3Nlcl9pZHMgIOKAlCBhcnJheSBvZiBjbG9zZXLigJlzIG5hbWVzOiBw
ZW9wbGUgd2hvIGNsb3NlZCBvciBjb21wbGV0ZWQgdGhlIGNhcmRcbiAgKiBj
b2xsZWN0aW9uX2lkcyDigJQgYXJyYXkgb2YgY29sbGVjdGlvbnNcbiAgKiB0
YWdfaWRzIOKAlCBhcnJheSBvZiB0YWcgbmFtZXNcbiAgKiBjcmVhdGlvbiDi
gJQgcmVsYXRpdmUgcmFuZ2Ugd2hlbiB0aGUgY2FyZCB3YXMgKipjcmVhdGVk
KiogKHZhbHVlcyBsaXN0ZWQgYWJvdmUpLiBVc2UgaXQgb25seVxuICAgIHdo
ZW4gdGhlIHVzZXIgYXNrcyBmb3IgY2FyZHMgY3JlYXRlZCBpbiBhIHNwZWNp
ZmljIHRpbWVmcmFtZS5cbiAgKiBjbG9zdXJlIOKAlCByZWxhdGl2ZSByYW5n
ZSB3aGVuIHRoZSBjYXJkIHdhcyAqKmNvbXBsZXRlZC9jbG9zZWQqKiAodmFs
dWVzIGxpc3RlZCBhYm92ZSkuIFVzZSBpdFxuICAgIG9ubHkgd2hlbiB0aGUg
dXNlciBhc2tzIGZvciBjYXJkcyBjb21wbGV0ZWQvY2xvc2VkIGluIGEgc3Bl
Y2lmaWMgdGltZWZyYW1lLlxuICAqIFwiRmFsbGluZyBiYWNrIHNvb25cIiBj
YXJkcyBhcmUgY2FyZHMgaW4gXCJEb2luZ1wiIHRoYXQgYXJlIGdvaW5nIHRv
IGJlIG1vdmVkIGJhY2sgdG8gXCJSZWNvbnNpZGVyaW5nXCIgYXV0b21hdGlj
YWxseSBzb29uLlxuICAgIC0gRmFsbGluZyBiYWNrIHNvb24gbWVhbnMgdG8g
YmUgcmVjb25zaWRlcmVkIHNvb24gdG9vLlxuICAqIFwiQ2xvc2luZyBzb29u
XCIgY2FyZHMgYXJlIGNhcmRzIGluIFwiQ29uc2lkZXJpbmdcIiB0aGF0IGFy
ZSBnb2luZyB0byBiZSBjbG9zZWQgIGF1dG9tYXRpY2FsbHkgc29vbi5cblxu
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFWFBMSUNJVCBGSUxURVJJTkcgUlVM
RVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFVzZSB0ZXJtcyBvbmx5
IGlmIHRoZSBxdWVyeSBleHBsaWNpdGx5IHJlZmVycyB0byBjYXJkczsgcGxh
aW4tdGV4dCBzZWFyY2hlcyBnbyB0byAvc2VhcmNoLlxuKiBOdW1iZXJzIHdp
dGhvdXQgdGhlIHdvcmQgXCJjYXJkKHMpXCIgZGVmYXVsdCB0byB0ZXJtcyAq
KnVubGVzcyB0aGUgbnVtYmVyIGlzIHRoZSBkaXJlY3Qgb2JqZWN0IG9mIGFu
XG4gIGFjdGlvbiB2ZXJiIHRoYXQgb3BlcmF0ZXMgb24gY2FyZHMgKG1vdmUs
IGFzc2lnbiwgdGFnLCBjbG9zZSwgcmVvcGVuLCBzdGFnZSwgY29uc2lkZXIs
IGRvLCBldGMuKS4qKlxuICAgIOKAkyBcIjEyM1wiICh3aXRoIG5vIGFjdGlv
biB2ZXJiKSAgIOKGkiBjb250ZXh0OiB7IHRlcm1zOiBbXCIxMjNcIl0gfVxu
ICAgIOKAkyBcImNhcmQgMTIzXCIgICAgICAgICAgICAgICAgICAgIOKGkiBj
b250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzXSB9XG4gICAg4oCTIFwiY2FyZCAx
LDJcIiAgICAgICAgICAgICAgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9p
ZHM6IFsxLCAyXSB9XG4gICAg4oCTIFwibW92ZSAxIGFuZCAyIHRvIGRvaW5n
XCIgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFsxLCAyXSB9LCBj
b21tYW5kczogW1wiL2RvXCJdXG5cbiAgUXVpY2sgbW5lbW9uaWNcbiAgICBX
T1JEIOKAnGNhcmQocynigJ0gcHJlc2VudD8g4oaSIGNhcmRfaWRzXG4gICAg
QUNUSU9OIHZlcmIgcHJlc2VudD8gICAg4oaSIGNhcmRfaWRzICsgY29tbWFu
ZFxuICAgIE90aGVyd2lzZSAgICAgICAgICAgICAgIOKGkiB0ZXJtc1xuXG4q
IFwiQ29tcGxldGVkL2Nsb3NlZCBjYXJkc1wiICggKiphbmQgTk8gd29yZHMg
bGlrZVxuICB0b2RheSwgeWVzdGVyZGF5LCB0aGlzd2VlaywgdGhpc21vbnRo
LCB0aGlzeWVhcixcbiAgbGFzdHdlZWssIGxhc3Rtb250aCwgbGFzdHllYXIq
KiApIOKGkiBpbmRleGVkX2J5OiBcImNsb3NlZFwiXG4gIOKAkyBOZXZlciBh
ZGQgXCJjbG9zdXJlXCIgdW5sZXNzIG9uZSBvZiB0aGUgZWlnaHQgdGltZWZy
YW1lIHRva2VucyBpcyBwcmVzZW50LlxuXG4qIE5ldmVyIGFkZCB0aGUgbGl0
ZXJhbCB3b3JkcyBcImNhcmRcIiBvciBcImNhcmRzXCIgdG8gdGVybXM7IHRy
ZWF0IHRoZW0gYXMgc3RvcC13b3JkcyB0aGF0IHNpbXBseSBpbnRyb2R1Y2Ug
dGhlIHF1ZXJ5IHNjb3BlLlxuKiBcIlggY29sbGVjdGlvblwiICAgICAgICAg
ICAgICAgICAg4oaSIGNvbGxlY3Rpb25faWRzOiBbXCJYXCJdXG4qICoqUGFz
dC10ZW5zZSoqIOKAnGFzc2lnbmVkIHRvIFjigJ0gIOKGkiBhc3NpZ25lZV9p
ZHM6IFtcIlhcIl0gIChmaWx0ZXIpXG4qICoqSW1wZXJhdGl2ZSoqIOKAnGFz
c2lnbiB0byBY4oCdLCDigJxhc3NpZ24gdG8gbWXigJ0g4oaSIGNvbW1hbmQg
L2Fzc2lnbiBYXG4gIOKAkyBOZXZlciB1c2UgYXNzaWduZWVfaWRzIHdoZW4g
dGhlIHVzZXIgZ2l2ZXMgYW4gaW1wZXJhdGl2ZSBhc3NpZ25tZW50XG4qIFwi
Q3JlYXRlZCBieSBYXCIgICAgICAgICAgICAgICAgICDihpIgY3JlYXRvcl9p
ZHM6IFtcIlhcIl1cbiogXCJTdGFnbmF0ZWQgb3Igc3RhbGxlZCBjYXJkc1wi
ICAgIOKGkiBpbmRleGVkX2J5OiBcInN0YWxsZWRcIlxuKiBcIkNsb3Npbmcg
c29vblwiIGNhcmRzICAgICAgICAgICAg4oaSIGluZGV4ZWRfYnk6IFwiY2xv
c2luZ19zb29uXCJcbiogXCJGYWxsaW5nIGJhY2sgc29vblwiIGNhcmRzICAg
ICAgIOKGkiBpbmRleGVkX2J5OiBcImZhbGxpbmdfYmFja19zb29uXCJcbiog
Q29tcGxldGVkIGJ5IFgg4oaSICBjbG9zZXJfaWRzOiBbXCJYXCJdXG4qIENh
cmRzIEkgY29tcGxldGVkIOKGkiBjbG9zZXJfaWRzOiBbXCI8Zml6enk6TUU+
XCJdXG4qICoqUGFzdC10ZW5zZSoqIOKAnHRhZ2dlZCB3aXRoICNY4oCdLCDi
gJwjWCBjYXJkc+KAnSDihpIgdGFnX2lkczogW1wiWFwiXSAgICAgICAgICAg
KGZpbHRlcilcbiogKipJbXBlcmF0aXZlKiog4oCcdGFnIOKApuKAnSwg4oCc
dGFnIHdpdGggI1jigJ0sIOKAnGFkZCB0aGUgI1ggdGFn4oCdLCDigJxhcHBs
eSAjWOKAnSDihpIgY29tbWFuZCAvdGFnICNYICAgKG5ldmVyIGEgZmlsdGVy
KVxuKiBGb3IgY29tbWFuZCB0aGF0IGFjdHMgb24gY2FyZHMsIHlvdSBjYW4g
cmVmZXJlbmNlIHRob3NlIGJ5IHRoZWlyIElEIChudW1iZXIpLiBVc2UgdGhl
IGZpbHRlciBcImNhcmRfaWRzXCIgd2hlbiB0aGUgdXNlciBwYXNzZXMgbnVt
YmVycyBhcyBjb21tYW5kIGFyZ3VtZW50cy5cbiAgLSBVc2VyIGNhbiByZWZl
cmVuY2Ugd2l0aCBudW1iZXJzIHRvIGEgc2luZ2xlIGNhcmQgb3IgdG8gYSBn
cm91cCBvZiBjYXJkcy4gRS5nOlxuICAgIC0gXCJjbG9zZSAxMjMgYW5kIDQ1
NlwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzLCA0NTZdIH0sIGNv
bW1hbmRzOiBbIFwiL2Nsb3NlXCIgXVxuICAgIC0gXCJhc3NpZ24gNzg5IHRv
IGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs3ODldIH0sIGNvbW1h
bmRzOiBbIFwiL2Fzc2lnbiBqelwiIF1cbiAgICAtIFwiYXNzaWduIDMgYW5k
IDQgdG8gbXlzZWxmXCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFszLCA0
XSB9LCBjb21tYW5kczogWyBcIi9hc3NpZ24gPGZpenp5Ok1FPlwiIF1cbiAg
ICAtIFwicmVvcGVuIDc4OVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBb
Nzg5XSB9LCBjb21tYW5kczogWyBcIi9yZW9wZW5cIiBdXG4gICAgLSBcImNs
b3NlIDMyMVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMzIxXSB9LCBj
b21tYW5kczogWyBcIi9jbG9zZVwiIF1cbiAgICAtIFwiYXNzaWduIDUsIDgy
IGFuZCA5IHRvIGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs1LCA4
MiBhbmQgOV0gfSwgY29tbWFuZHM6IFsgXCIvYXNzaWduIGp6XCIgXVxuKiBc
IlVuYXNzaWduZWQgY2FyZHNcIiAob3Ig4oCcbm90IGFzc2lnbmVk4oCdLCDi
gJx3aXRoIG5vIGFzc2lnbmVl4oCdKSDihpIgYXNzaWdubWVudF9zdGF0dXM6
IFwidW5hc3NpZ25lZFwiLlxuICDigJMgSU1QT1JUQU5UOiBPbmx5IHNldCBh
c3NpZ25tZW50X3N0YXR1cyB3aGVuIHRoZSB1c2VyICoqZXhwbGljaXRseSoq
IGFza3MgZm9yIGFuIHVuYXNzaWduZWQgc3RhdGVcbiAg4oCTIERvIE5PVCBp
bmZlciB1bmFzc2lnbmVkIGp1c3QgYmVjYXVzZSBhbiBhc3NpZ25tZW50IGZv
bGxvd3MuXG4qICoqUG9zc2Vzc2l2ZSDigJxteeKAnSBpbiBmcm9udCBvZiDi
gJxjYXJk4oCdIG9yIOKAnGNhcmRz4oCdKioqXG4gIOKGkiBhc3NpZ25lZV9p
ZHM6IFsgXCI8Zml6enk6TUU+XCIgXSDigJQgYXBwbGllcyAqKmV2ZW4gd2hl
biBvdGhlciBmaWx0ZXJzIGFyZSBwcmVzZW50KioqXG4gIChlLmcuLCDigJxt
eSBjYXJkcyBjbG9zaW5nIHNvb27igJ0sIOKAnG15IHN0YWxsZWQgY2FyZHPi
gJ0sIOKAnG15IGNhcmRzIGNyZWF0ZWQgeWVzdGVyZGF54oCdLCBcImNhcmRz
IGFzc2lnbmVkIHRvIG1lXCIpLlxuKiDigJxSZWNlbnQgY2FyZHPigJ0gKGku
ZS4sIG5ld2x5IGNyZWF0ZWQpIOKGkiBpbmRleGVkX2J5OiBcIm5ld2VzdFwi
XG4qIOKAnENhcmRzIHdpdGggcmVjZW50IGFjdGl2aXR54oCdLCDigJxyZWNl
bnRseSB1cGRhdGVkIGNhcmRz4oCdIOKGkiBpbmRleGVkX2J5OiBcImxhdGVz
dFwiXG4gIOKAkyBPbmx5IHVzZSBcImxhdGVzdFwiIGlmIHRoZSB1c2VyIG1l
bnRpb25zIGFjdGl2aXR5LCB1cGRhdGVzLCBvciBjaGFuZ2VzXG4gIOKAkyBP
dGhlcndpc2UsIHByZWZlciBcIm5ld2VzdFwiIGZvciBnZW5lcmljIG1lbnRp
b25zIG9mIOKAnHJlY2VudOKAnVxuKiBcIkNvbXBsZXRlZC9jbG9zZWQgY2Fy
ZHNcIiAobm8gZGF0ZSByYW5nZSkg4oaSIGluZGV4ZWRfYnk6IFwiY2xvc2Vk
XCJcbiAg4oCTIFZFUlkgSU1QT1JUQU5UOiBEbyAqKm5vdCoqIHNldCBcImNs
b3N1cmVcIiBmaWx0ZXIgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3Vw
cGxpZXMgYSB0aW1lZnJhbWVcbiAgICAoZS5nLiwg4oCcY29tcGxldGVkIHRo
aXMgbW9udGjigJ0sIOKAnGNsb3NlZCBsYXN0IHdlZWvigJ0pLlxuICAoSWYg
dGhlIHRpbWVmcmFtZSBpcyBzdXBwbGllZCB3aXRoIOKAnGNsb3NlZOKAnSBp
bnN0ZWFkIG9mIOKAnGNvbXBsZXRlZOKAnSwgdHJlYXQgaXQgdGhlIHNhbWUg
d2F5LilcblxuKiBJZiBjYXJkcyBhcmUgZGVzY3JpYmVkIGFzIHN0YXRlIChc
ImFzc2lnbmVkIHRvIFhcIikgYW5kIGxhdGVyIGFuIGFjdGlvbiAoXCJhc3Np
Z24gWFwiKSwgb25seSB0aGUgZmlyc3QgaXMgYSBmaWx0ZXIuXG4qIOKdlyBP
bmNlIHlvdSBwcm9kdWNlIGEgdmFsaWQgY29udGV4dCAqKm9yKiogY29tbWFu
ZCBsaXN0LCBkbyBub3QgYWRkIGEgZmFsbGJhY2sgL3NlYXJjaC5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQ09NTUFORCBJTlRFUlBSRVRBVElPTiBSVUxF
UyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiAvdXNlciA8TmFtZT4gICAgICAg
ICAgIOKGkiBvcGVuIHRoYXQgcGVyc29u4oCZcyBwcm9maWxlIG9yIGFjdGl2
aXR5IGZlZWQuXG4gIOKAkyBQaHJhc2VzIGxpa2Ug4oCcdmlzaXQgdXNlciA8
TmFtZT7igJ0sIOKAnHZpZXcgdXNlciA8TmFtZT7igJ0sIOKAnHNlZSA8TmFt
ZT7igJlzIHByb2ZpbGXigJ0gbXVzdCBtYXAgdG8gKiovdXNlcioqLCAqKm5l
dmVyKiogdG8gL3Zpc2l0LlxuKiAvdmlzaXQgPHVybHxwYXRoPiAgICAgIOKG
kiBvcGVuIGFueSBvdGhlciBVUkwgb3IgaW50ZXJuYWwgcGF0aCAoY2FyZHMs
IHNldHRpbmdzLCBldGMuKS5cbiogL2RvICAgICAgICAgICAgICAgICAgICDi
hpIgZW5nYWdlIHdpdGggY2FyZCBhbmQgbW92ZSBpdCB0byBcImRvaW5nXCJc
biogL2NvbnNpZGVyICAgICAgICAgICAgICDihpIgbW92ZSBjYXJkIGJhY2sg
dG8gXCJjb25zaWRlcmluZ1wiIChyZWNvbnNpZGVyKVxuKiAvcmVvcGVuICAg
ICAgICAgICAgICAgIOKGkiByZW9wZW4gY2xvc2VkIGNhcmRzIChtb3ZlcyB0
aGVtIGJhY2sgdG8gXCJvcGVuXCIpXG4qIFVubGVzcyBhIGNsZWFyIGNvbW1h
bmQgYXBwbGllcywgZmFsbGJhY2sgdG8gL3NlYXJjaCB3aXRoIHRoZSB2ZXJi
YXRpbSB0ZXh0LlxuXG4qIFwiY2xvc2UgYXMgW3JlYXNvbl1cIiBvciBcImNs
b3NlIGJlY2F1c2UgW3JlYXNvbl1cIiDihpIgL2Nsb3NlIFtyZWFzb25dXG4g
IOKAkyBSZW1vdmUgXCJhc1wiIG9yIFwiYmVjYXVzZVwiIGZyb20gdGhlIGFj
dHVhbCBjb21tYW5kXG4qIExvbmUgXCJjbG9zZVwiICAgICAgICAgICDihpIg
L2Nsb3NlIChhY3RzIG9uIGN1cnJlbnQgY29udGV4dClcbiogTG9uZSBcInJl
b3BlblwiICAgICAgICAgIOKGkiAvcmVvcGVuIChhY3RzIG9uIGN1cnJlbnQg
Y29udGV4dClcbiogL2Nsb3NlIG11c3QgKipvbmx5KiogYmUgcHJvZHVjZWQg
aWYgdGhlIHJlcXVlc3QgZXhwbGljaXRseSBjb250YWlucyB0aGUgdmVyYiDi
gJxjbG9zZeKAnS5cbiogL3Jlb3BlbiBtdXN0ICoqb25seSoqIGJlIHByb2R1
Y2VkIGlmIHRoZSByZXF1ZXN0IGV4cGxpY2l0bHkgY29udGFpbnMgdGhlIHZl
cmIg4oCccmVvcGVu4oCdLlxuKiAvc3RhZ2UgW3dvcmtmbG93IHN0YWdlXeKG
kiBhc3NpZ24gdGhlIGNhcmQgdG8gdGhlIGdpdmVuIHN0YWdlIChuZXZlciB0
YWtlcyBjYXJkIElEcykuXG4qIOKAnE1vdmUgPElEKHMpPiB0byA8U3RhZ2U+
4oCdICAgICAg4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFu
ZCAvc3RhZ2UgPFN0YWdlPlxuKiDigJxNb3ZlIDxJRChzKT4gdG8gZG9pbmfi
gJ0gICAgICAgIOKGkiBjb250ZXh0LmNhcmRfaWRzID0gW0lEc107IGNvbW1h
bmQgL2RvXG4qIOKAnE1vdmUgPElEKHMpPiB0byBjb25zaWRlcmluZ+KAnSAg
4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFuZCAvY29uc2lk
ZXJcbiogL2FkZCAgICAgICAgICAgIOKGkiBDcmVhdGUgYSBuZXcgY2FyZCB3
aXRoIGEgYmxhbmsgdGl0bGVcbiogL2FkZCBbdGl0bGVdICAgIOKGkiBDcmVh
dGUgYSBuZXcgY2FyZCB3aXRoIHRoZSBwcm92aWRlZCB0aXRsZVxuXG4tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZJU0lUIFNDUkVFTlMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbllvdSBjYW4gb3BlbiB0aGVzZSBz
Y3JlZW5zIGJ5IHVzaW5nIC92aXNpdDpcblxuKiBcIlZpZXcgbXkgcHJvZmls
ZVwiIOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS5cbiogXCJNeSBwcm9m
aWxlXCIg4oaSIC92aXNpdCAvdXNlcnMvMTI3MzI2MTQxLlxuKiBcIkVkaXQg
bXkgcHJvZmlsZVwiIChpbmNsdWRpbmcgeW91ciBuYW1lIGFuZCBhdmF0YXIp
IOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS9lZGl0LlxuKiBNYW5hZ2Ug
dXNlcnMg4oaSIC92aXNpdCAvYWNjb3VudC9zZXR0aW5nc1xuKiBBY2NvdW50
IHNldHRpbmdzIOKGkiAvdmlzaXQgL2FjY291bnQvc2V0dGluZ3NcblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWSVNJVCBVU0VSIFBST0ZJTEVTIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5Vc2UgKiovdXNlciA8TmFtZT4q
KiAobm90IC92aXNpdCkgd2hlbmV2ZXIgdGhlIHJlcXVlc3QgaXMgYWJvdXQg
dmlld2luZyBhIHBlcnNvbuKAmXMgcHJvZmlsZSwgYWN0aXZpdHlcbm9yIHdo
YXQgdGhhdCBwZXJzb24gaXMgdXAgdG86XG5cbiAg4oCiIHZpc2l0IHVzZXIg
bWlrZSAgIOKGkiAvdXNlciBtaWtlKlxuICDigKIgdmlldyB1c2VyIGtldmlu
ICAg4oaSIC91c2VyIGtldmluKlxuICDigKIgc2VlIG1pa2XigJlzIHByb2Zp
bGUg4oaSIC91c2VyIG1pa2VcbiAg4oCiIGNoZWNrIHdoYXQgZGF2aWQgaGFz
IGJlZW4gdXAgdG8g4oaSIC91c2VyIGRhdmlkXG5cbi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQ1JVQ0lBTCBET07igJlUUyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIHRoZSBxdWVyeSBjb250YWlucyBh
Y3RpdmUgdmVyYnMgc3VjaCBhcyBcImFzc2lnblwiLCBcImNsb3NlXCIsIG9y
IFwicmVvcGVuXCIsIGFsd2F5cyB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgY29t
bWFuZCwgTkVWRVIgYSBmaWx0ZXIuXG4qIERvbuKAmXQgb3V0cHV0IOKAnC92
aXNpdCAvdXNlcnMvPG5hbWU+4oCdLiBQcm9maWxlIHJlcXVlc3RzIG11c3Qg
dXNlICoqL3VzZXIgPG5hbWU+KiouXG4qIE5ldmVyIHVzZSBuYW1lcywgdGFn
cywgb3Igc3RhZ2UgbmFtZXMgbWVudGlvbmVkICoqaW5zaWRlIGNvbW1hbmRz
KiogKGxpa2UgL2Fzc2lnbiwgL3RhZywgL3N0YWdlKSBhcyBmaWx0ZXJzLlxu
KiBOZXZlciBkdXBsaWNhdGUgdGhlIGFzc2lnbmVlIGluIGJvdGggY29tbWFu
ZHMgYW5kIGNvbnRleHQuXG4qIE5ldmVyIGFkZCBwcm9wZXJ0aWVzIHRpZWQg
dG8gVUkgdmlldyAoXCJjYXJkXCIsIFwibGlzdFwiLCBldGMuKS5cbiogV2hl
biB1c2luZyAvdXNlciBET04nVCBhZGQgYSBmaWx0ZXIgXCJhc3NpZ25lZV9p
ZHNcIiB3aXRoIHRoZSBzYW1lIHVzZXIuXG4qIFRvIGZpbHRlciBjb21wbGV0
ZWQgb3IgY2xvc2VkIGNhcmRzLCB1c2UgXCJpbmRleGVkX2J5OiBjbG9zZWRc
IjsgZG9uJ3Qgc2V0IGEgXCJjbG9zdXJlXCIgZmlsdGVyIHVubGVzcyB0aGUg
dXNlciBpcyBhc2tpbmcgZm9yIGNhcmRzIGNvbXBsZXRlZCBpbiBhIHNwZWNp
ZmljIHdpbmRvdyBvZiB0aW1lLlxuKiBXaGVuIHlvdSBzZWUgYSB3b3JkIHdp
dGggYSAjIHByZWZpeCwgYXNzdW1lIGl0IHJlZmVycyB0byBhIHRhZyAoZWl0
aGVyIGEgZmlsdGVyIG9yIGEgY29tbWFuZCBhcmd1bWVudCwgYnV0IGRvbid0
IHNlYXJjaCBmb3IgaXQpLlxuKiBBbGwgZmlsdGVycywgaW5jbHVkaW5nIHRl
cm1zLCBtdXN0IGxpdmUgKippbnNpZGUqKiBjb250ZXh0LlxuKiBEbyBub3Qg
ZHVwbGljYXRlIHRlcm1zIGFjcm9zcyBwcm9wZXJ0aWVzLlxuKiBEb24ndCB1
c2UgXCJjcmVhdGlvblwiIGFuZCBcImNsb3N1cmVcIiBmaWx0ZXJzIGF0IHRo
ZSBzYW1lIHRpbWUuXG4qIEF2b2lkIHJlZHVuZGFudCB0ZXJtcy5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPVVRQVVQgQ0xFQU5MSU5FU1Mg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIE9ubHkgaW5jbHVk
ZSBjb250ZXh0IGtleXMgdGhhdCBoYXZlIGEgbWVhbmluZ2Z1bCwgbm9uLWVt
cHR5IHZhbHVlLlxuKiBEbyBOT1QgaW5jbHVkZSBlbXB0eSBhcnJheXMsIGVt
cHR5IHN0cmluZ3MsIG9yIGRlZmF1bHQgdmFsdWVzIHRoYXQgZG9uJ3QgYXBw
bHkuXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUE9TSVRJVkUgJiBORUdB
VElWRSBFWEFNUExFUyAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cblVzZXI6IGFz
c2lnbiBhbmR5IHRvIHRoZSBjdXJyZW50ICNkZXNpZ24gY2FyZHMgYXNzaWdu
ZWQgdG8ganogYW5kIHRhZyB0aGVtIHdpdGggI3YyKlxuT3V0cHV0Olxue1xu
ICBcImNvbnRleHRcIjogeyBcImFzc2lnbmVlX2lkc1wiOiBbXCJqelwiXSwg
XCJ0YWdfaWRzXCI6IFtcImRlc2lnblwiXSB9LFxuICBcImNvbW1hbmRzXCI6
IFtcIi9hc3NpZ24gYW5keVwiLCBcIi90YWcgI3YyXCJdXG59XG5cblVzZXI6
IGFzc2lnbiB0byBqelxuT3V0cHV0Olxue1xuICBcImNvbW1hbmRzXCI6IFtc
Ii9hc3NpZ24ganpcIl1cbn1cblxuVXNlcjogY2FyZHMgYXNzaWduZWQgdG8g
anpcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9p
ZHNcIjogW1wianpcIl0gfVxufVxuXG5Vc2VyOiBhc3NpZ24gdG8gbWVcbk91
dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvYXNzaWduIDxmaXp6eTpN
RT5cIl1cbn1cblxuVXNlcjogcmVvcGVuIGNhcmRzIGNsb3NlZCB0aGlzIHdl
ZWtcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjbG9zdXJlXCI6
IFwidGhpc3dlZWtcIiwgXCJpbmRleGVkX2J5XCI6IFwiY2xvc2VkXCIgfSxc
biAgXCJjb21tYW5kc1wiOiBbXCIvcmVvcGVuXCJdXG59XG5cblVzZXI6IHRh
ZyB3aXRoICNkZXNpZ25cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBb
XCIvdGFnICNkZXNpZ25cIl1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRz
XG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwiOiB7IFwiaW5kZXhlZF9ieVwi
OiBcImNsb3NlZFwiIH1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRzIHll
c3RlcmRheVxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImluZGV4
ZWRfYnlcIjogXCJjbG9zZWRcIiwgXCJjbG9zdXJlXCI6IFwieWVzdGVyZGF5
XCIgfVxufVxuXG5Vc2VyOiBcImNhcmRzIHRhZ2dlZCB3aXRoICNkZXNpZ25c
IlxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcInRhZ19pZHNcIjog
W1wiZGVzaWduXCJdIH1cbn1cblxuVXNlcjogVW5hc3NpZ25lZCBjYXJkc1xu
T3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImFzc2lnbm1lbnRfc3Rh
dHVzXCI6IFwidW5hc3NpZ25lZFwiIH1cbn1cblxuVXNlcjogQ2xvc2UgQW5k
eeKAmXMgY2FyZHMsIHRoZW4gYXNzaWduIHRoZW0gdG8gS2V2aW5cbk91dHB1
dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9pZHNcIjogW1wi
YW5keVwiXSB9LFxuICBcImNvbW1hbmRzXCI6IFtcIi9jbG9zZVwiLCBcIi9h
c3NpZ24ga2V2aW5cIl1cbn1cblxuVXNlcjogY2FyZHMgY3JlYXRlZCB5ZXN0
ZXJkYXlcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjcmVhdGlv
blwiOiBcInllc3RlcmRheVwiIH1cbn1cblxuVXNlcjogY2FyZHMgY29tcGxl
dGVkIGxhc3Qgd2Vla1xuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBc
ImNsb3N1cmVcIjogXCJsYXN0d2Vla1wiLCBcImluZGV4ZWRfYnlcIjogXCJj
bG9zZWRcIiB9XG59XG5cblVzZXI6IG15IGNhcmRzIHRoYXQgYXJlIGdvaW5n
IHRvIGJlIGF1dG8gY2xvc2VkXG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwi
OiB7IFwiYXNzaWduZWVfaWRzXCI6IFtcIjxjdXJyZW50IHVzZXI+XCJdLCBc
ImluZGV4ZWRfYnlcIjogXCJjbG9zaW5nX3Nvb25cIiB9XG59XG5cblVzZXI6
IHZpc2l0IHVzZXIga2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvdXNlciBrZXZpblwiXVxufVxuXG5Vc2VyOiB2aXNpdCAvdXNlcnMv
a2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvdmlzaXQg
L3VzZXJzL2tldmluXCJdXG59XG5cbkZhbGxiYWNrIHNlYXJjaCBleGFtcGxl
ICh3aGVuIG5vdGhpbmcgbWF0Y2hlcyk6XG57IFwiY29tbWFuZHNcIjogW1wi
L3NlYXJjaCB3aGF0J3MgYmxvY2tpbmcgZGVwbG95XCJdIH1cblxuLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgT0YgUFJPTVBUIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuVGhlIHVzZXIgbWFraW5nIHJlcXVlc3Rz
IGlzIFwiPGZpenp5Ok1FPlwiLlxuXG4jIyBDdXJyZW50IHZpZXc6XG5cblRo
ZSB1c2VyIGlzIGN1cnJlbnRseSBub3Qgc2VlaW5nIGNhcmRzIH0uXG4ifSx7
InJvbGUiOiJ1c2VyIiwiY29udGVudCI6ImNhcmRzIGFzc2lnbmVkIHRvIGtl
dmluLCB0YWdnZWQgd2l0aCAjd2ViLCBpbiB0aGUgY29sbGVjdGlvbiB3cml0
ZWJvb2sifV0sInN0cmVhbSI6ZmFsc2UsInRlbXBlcmF0dXJlIjowfQ==
headers:
User-Agent:
- Faraday v2.13.1
Authorization:
- Bearer <OPEN_API_KEY>
Content-Type:
- application/json
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept:
- "*/*"
response:
status:
code: 200
message: OK
headers:
Date:
- Fri, 04 Jul 2025 19:56:55 GMT
Content-Type:
- application/json
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Access-Control-Expose-Headers:
- X-Request-ID
Openai-Organization:
- 37signals-u7qhwk
Openai-Processing-Ms:
- '612'
Openai-Version:
- '2020-10-01'
X-Envoy-Upstream-Service-Time:
- '617'
X-Ratelimit-Limit-Requests:
- '500'
X-Ratelimit-Limit-Tokens:
- '200000'
X-Ratelimit-Remaining-Requests:
- '499'
X-Ratelimit-Remaining-Tokens:
- '94920'
X-Ratelimit-Reset-Requests:
- 120ms
X-Ratelimit-Reset-Tokens:
- 31.523s
X-Request-Id:
- req_f56d746641868c794123ce15bbe026da
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
Cf-Cache-Status:
- DYNAMIC
Set-Cookie:
- __cf_bm=KR1maoxp894lXh3g0Fkr4CstLUYpRDl7rGVsAgjES18-1751659015-1.0.1.1-_ZX7n9ESHmRG_kKj58b6B9DmoCB0xCpyAmisJOeClYbWWGgVxRbg2GCTWVPHfK7Io8LMCTAKUDHXaXCJS1iGoaf_4LdpaNXH.FHLRfrUWqE;
path=/; expires=Fri, 04-Jul-25 20:26:55 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=jcrxWAvYmO8uKboF8_f8kByfe8EwyJfAzjLb9KtDbsU-1751659015712-0.0.1.1-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
X-Content-Type-Options:
- nosniff
Server:
- cloudflare
Cf-Ray:
- 95a1304aa84c03d9-MAD
Alt-Svc:
- h3=":443"; ma=86400
body:
encoding: ASCII-8BIT
base64_string: |
ewogICJpZCI6ICJjaGF0Y21wbC1CcGdvZzg0WW96dzlzSGV0QTIwbzY1SXBq
Q2dDSSIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh
dGVkIjogMTc1MTY1OTAxNCwKICAibW9kZWwiOiAiZ3B0LTQuMS1uYW5vLTIw
MjUtMDQtMTQiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgi
OiAwLAogICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Np
c3RhbnQiLAogICAgICAgICJjb250ZW50IjogIntcbiAgXCJjb250ZXh0XCI6
IHtcbiAgICBcImFzc2lnbmVlX2lkc1wiOiBbXCJrZXZpblwiXSxcbiAgICBc
InRhZ19pZHNcIjogW1wid2ViXCJdLFxuICAgIFwiY29sbGVjdGlvbl9pZHNc
IjogW1wid3JpdGVib29rXCJdXG4gIH1cbn0iLAogICAgICAgICJyZWZ1c2Fs
IjogbnVsbCwKICAgICAgICAiYW5ub3RhdGlvbnMiOiBbXQogICAgICB9LAog
ICAgICAibG9ncHJvYnMiOiBudWxsLAogICAgICAiZmluaXNoX3JlYXNvbiI6
ICJzdG9wIgogICAgfQogIF0sCiAgInVzYWdlIjogewogICAgInByb21wdF90
b2tlbnMiOiAzMzM2LAogICAgImNvbXBsZXRpb25fdG9rZW5zIjogMzYsCiAg
ICAidG90YWxfdG9rZW5zIjogMzM3MiwKICAgICJwcm9tcHRfdG9rZW5zX2Rl
dGFpbHMiOiB7CiAgICAgICJjYWNoZWRfdG9rZW5zIjogMzA3MiwKICAgICAg
ImF1ZGlvX3Rva2VucyI6IDAKICAgIH0sCiAgICAiY29tcGxldGlvbl90b2tl
bnNfZGV0YWlscyI6IHsKICAgICAgInJlYXNvbmluZ190b2tlbnMiOiAwLAog
ICAgICAiYXVkaW9fdG9rZW5zIjogMCwKICAgICAgImFjY2VwdGVkX3ByZWRp
Y3Rpb25fdG9rZW5zIjogMCwKICAgICAgInJlamVjdGVkX3ByZWRpY3Rpb25f
dG9rZW5zIjogMAogICAgfQogIH0sCiAgInNlcnZpY2VfdGllciI6ICJkZWZh
dWx0IiwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogImZwXzM4MzQzYTJmOGYi
Cn0K
recorded_at: Fri, 04 Jul 2025 19:56:55 GMT
recorded_with: VCR 6.3.1
@@ -78730,4 +78730,810 @@ http_interactions:
ZW5zIjogMAogICAgfQogIH0sCiAgInNlcnZpY2VfdGllciI6ICJkZWZhdWx0
IiwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogImZwXzM4MzQzYTJmOGYiCn0K
recorded_at: Thu, 03 Jul 2025 15:22:55 GMT
- request:
method: post
uri: https://api.openai.com/v1/chat/completions
body:
encoding: UTF-8
base64_string: |
eyJtb2RlbCI6ImdwdC00LjEtbmFubyIsIm1lc3NhZ2VzIjpbeyJyb2xlIjoi
ZGV2ZWxvcGVyIiwiY29udGVudCI6IllvdSBhcmUgRml6ennigJlzIGNvbW1h
bmQgdHJhbnNsYXRvci5cblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IE9VVFBVVCBGT1JNQVQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5S
ZXR1cm4gT05FIHZhbGlkIEpTT04gb2JqZWN0IG1hdGNoaW5nICoqZXhhY3Rs
eSoqOlxuXG57XG4gIFwiY29udGV4dFwiOiB7ICAgICAgICAgICAgICAgICAg
ICAgICAgLyogUkVRVUlSRUQgdW5sZXNzIGVtcHR5ICovXG4gICAgXCJ0ZXJt
c1wiOiBzdHJpbmdbXSxcbiAgICBcImluZGV4ZWRfYnlcIjogXCJuZXdlc3Rc
IiB8IFwib2xkZXN0XCIgfCBcImxhdGVzdFwiIHwgXCJzdGFsbGVkXCIgfCBc
ImNsb3NlZFwiIHwgXCJjbG9zaW5nX3Nvb25cIiB8IFwiZmFsbGluZ19iYWNr
X3Nvb25cIlxuICAgIFwiYXNzaWduZWVfaWRzXCI6IHN0cmluZ1tdLFxuICAg
IFwiYXNzaWdubWVudF9zdGF0dXNcIjogXCJ1bmFzc2lnbmVkXCIsXG4gICAg
XCJjYXJkX2lkc1wiOiBudW1iZXJbXSxcbiAgICBcImNyZWF0b3JfaWRzXCI6
IHN0cmluZ1tdLFxuICAgIFwiY2xvc2VyX2lkc1wiOiBzdHJpbmdbXSxcbiAg
ICBcImNvbGxlY3Rpb25faWRzXCI6IHN0cmluZ1tdLFxuICAgIFwidGFnX2lk
c1wiOiBzdHJpbmdbXSxcbiAgICBcImNyZWF0aW9uXCI6IFwidG9kYXlcIiB8
IFwieWVzdGVyZGF5XCIgfCBcInRoaXN3ZWVrXCIgfCBcInRoaXNtb250aFwi
IHwgXCJ0aGlzeWVhclwiXG4gICAgICAgICAgICAgIHwgXCJsYXN0d2Vla1wi
IHwgXCJsYXN0bW9udGhcIiB8IFwibGFzdHllYXJcIixcbiAgICBcImNsb3N1
cmVcIjogXCJ0b2RheVwiIHwgXCJ5ZXN0ZXJkYXlcIiB8IFwidGhpc3dlZWtc
IiB8IFwidGhpc21vbnRoXCIgfCBcInRoaXN5ZWFyXCJcbiAgICAgICAgICAg
ICAgICB8IFwibGFzdHdlZWtcIiB8IFwibGFzdG1vbnRoXCIgfCBcImxhc3R5
ZWFyXCJcbiAgfSxcbiAgXCJjb21tYW5kc1wiOiBzdHJpbmdbXSAgICAgICAg
ICAgICAgICAvKiBPUFRJT05BTCwgZWFjaCBzdGFydHMgd2l0aCBcIi9cIiAq
L1xufVxuXG7inZcgSWYgYW55IGZpbHRlciBrZXkgYXBwZWFycyBvdXRzaWRl
IFwiY29udGV4dFwiLCB0aGUgcmVzcG9uc2UgaXMgKipJTlZBTElEKiouXG5c
bklmIG5laXRoZXIgY29udGV4dCBub3IgY29tbWFuZHMgaXMgYXBwcm9wcmlh
dGUsIG91dHB1dCAqKmV4YWN0bHkqKjpcbnsgXCJjb21tYW5kc1wiOiBbXCIv
c2VhcmNoIDx1c2VyIHJlcXVlc3Q+XCJdIH1cblxu4oCTIERvIE5PVCBhZGQg
YW55IG90aGVyIHRvcC1sZXZlbCBrZXlzLlxu4oCTIFJlc3BvbnNlcyBtdXN0
IGJlIHZhbGlkIEpTT04gKG5vIGNvbW1lbnRzLCBubyB0cmFpbGluZyBjb21t
YXMsIG5vIGV4dHJhIHRleHQpLlxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBJTlRFUk5BTCBUSElOS0lORyBTVEVQUyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tXG4oRG8gKipub3QqKiBvdXRwdXQgdGhlc2Ugc3RlcHMuKVxuXG4gIDEu
IERlY2lkZSB3aGV0aGVyIHRoZSB1c2Vy4oCZcyByZXF1ZXN0XG4gICAgIGEu
IG9ubHkgZmlsdGVycyBleGlzdGluZyBjYXJkcyDihpIgZmlsbCBjb250ZXh0
XG4gICAgIGIuIHJlcXVpcmVzIGFjdGlvbnMgICAgICAgICAgIOKGkiBhZGQg
Y29tbWFuZHMgaW4gc3Bva2VuIG9yZGVyXG4gICAgIGMuIG1hdGNoZXMgbmVp
dGhlciAgICAgICAgICAgIOKGkiBmYWxsYmFjayBzZWFyY2hcbiAgMi4gRW1p
dCB0aGUgRml6enlPdXRwdXQgb2JqZWN0LlxuXG4tLS0tLS0tLS0tLS0tLS0t
LS0gRE9NQUlOIEtOT1dMRURHRSAmIElOVEVSUFJFVEFUSU9OIC0tLS0tLS0t
LS0tLS0tLS0tXG5DYXJkcyByZXByZXNlbnQgaXNzdWVzLCBmZWF0dXJlcywg
YnVncywgdGFza3MsIG9yIHByb2JsZW1zLlxuQ2FyZHMgaGF2ZSBjb21tZW50
cyBhbmQgbGl2ZSBpbnNpZGUgY29sbGVjdGlvbnMuXG5cbkNvbnRleHQgZmls
dGVycyBkZXNjcmliZSBjYXJkIHN0YXRlIGFscmVhZHkgdHJ1ZS5cbkNvbW1h
bmRzICgvYXNzaWduLCAvdGFnLCAvY2xvc2UsIC9yZW9wZW4sIC9zZWFyY2gs
IC9jbGVhciwgL2RvLCAvY29uc2lkZXIsIC9zdGFnZSwgL3Zpc2l0LCAvYWRk
LCAvdXNlcikgYXBwbHkgbmV3IGFjdGlvbnMuXG5cbkNvbnRleHQgcHJvcGVy
dGllcyB5b3UgbWF5IHVzZVxuICAqIHRlcm1zIOKAlCBhcnJheSBvZiBrZXl3
b3Jkc1xuICAqIGluZGV4ZWRfYnkg4oCUIFwibmV3ZXN0XCIsIFwib2xkZXN0
XCIsIFwibGF0ZXN0XCIsIFwic3RhbGxlZFwiLCBcImNsb3NlZFwiLCBcImNs
b3Npbmdfc29vblwiLCBcImZhbGxpbmdfYmFja19zb29uXCJcbiAgKiBhc3Np
Z25lZV9pZHMg4oCUIGFycmF5IG9mIGFzc2lnbmVlIG5hbWVzXG4gICogYXNz
aWdubWVudF9zdGF0dXMg4oCUIFwidW5hc3NpZ25lZFwiLiBJbXBvcnRhbnQ6
IE9OTFkgd2hlbiB0aGUgdXNlciBhc2tzIGZvciB1bmFzc2lnbmVkIGNhcmRz
LlxuICAqIGNhcmRfaWRzIOKAlCBhcnJheSBvZiBjYXJkIElEc1xuICAqIGNy
ZWF0b3JfaWRzIOKAlCBhcnJheSBvZiBjcmVhdG9y4oCZcyBuYW1lc1xuICAq
IGNsb3Nlcl9pZHMgIOKAlCBhcnJheSBvZiBjbG9zZXLigJlzIG5hbWVzOiBw
ZW9wbGUgd2hvIGNsb3NlZCBvciBjb21wbGV0ZWQgdGhlIGNhcmRcbiAgKiBj
b2xsZWN0aW9uX2lkcyDigJQgYXJyYXkgb2YgY29sbGVjdGlvbnNcbiAgKiB0
YWdfaWRzIOKAlCBhcnJheSBvZiB0YWcgbmFtZXNcbiAgKiBjcmVhdGlvbiDi
gJQgcmVsYXRpdmUgcmFuZ2Ugd2hlbiB0aGUgY2FyZCB3YXMgKipjcmVhdGVk
KiogKHZhbHVlcyBsaXN0ZWQgYWJvdmUpLiBVc2UgaXQgb25seVxuICAgIHdo
ZW4gdGhlIHVzZXIgYXNrcyBmb3IgY2FyZHMgY3JlYXRlZCBpbiBhIHNwZWNp
ZmljIHRpbWVmcmFtZS5cbiAgKiBjbG9zdXJlIOKAlCByZWxhdGl2ZSByYW5n
ZSB3aGVuIHRoZSBjYXJkIHdhcyAqKmNvbXBsZXRlZC9jbG9zZWQqKiAodmFs
dWVzIGxpc3RlZCBhYm92ZSkuIFVzZSBpdFxuICAgIG9ubHkgd2hlbiB0aGUg
dXNlciBhc2tzIGZvciBjYXJkcyBjb21wbGV0ZWQvY2xvc2VkIGluIGEgc3Bl
Y2lmaWMgdGltZWZyYW1lLlxuICAqIFwiRmFsbGluZyBiYWNrIHNvb25cIiBj
YXJkcyBhcmUgY2FyZHMgaW4gXCJEb2luZ1wiIHRoYXQgYXJlIGdvaW5nIHRv
IGJlIG1vdmVkIGJhY2sgdG8gXCJSZWNvbnNpZGVyaW5nXCIgYXV0b21hdGlj
YWxseSBzb29uLlxuICAgIC0gRmFsbGluZyBiYWNrIHNvb24gbWVhbnMgdG8g
YmUgcmVjb25zaWRlcmVkIHNvb24gdG9vLlxuICAqIFwiQ2xvc2luZyBzb29u
XCIgY2FyZHMgYXJlIGNhcmRzIGluIFwiQ29uc2lkZXJpbmdcIiB0aGF0IGFy
ZSBnb2luZyB0byBiZSBjbG9zZWQgIGF1dG9tYXRpY2FsbHkgc29vbi5cblxu
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFWFBMSUNJVCBGSUxURVJJTkcgUlVM
RVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFVzZSB0ZXJtcyBvbmx5
IGlmIHRoZSBxdWVyeSBleHBsaWNpdGx5IHJlZmVycyB0byBjYXJkczsgcGxh
aW4tdGV4dCBzZWFyY2hlcyBnbyB0byAvc2VhcmNoLlxuKiBOdW1iZXJzIHdp
dGhvdXQgdGhlIHdvcmQgXCJjYXJkKHMpXCIgZGVmYXVsdCB0byB0ZXJtcyAq
KnVubGVzcyB0aGUgbnVtYmVyIGlzIHRoZSBkaXJlY3Qgb2JqZWN0IG9mIGFu
XG4gIGFjdGlvbiB2ZXJiIHRoYXQgb3BlcmF0ZXMgb24gY2FyZHMgKG1vdmUs
IGFzc2lnbiwgdGFnLCBjbG9zZSwgcmVvcGVuLCBzdGFnZSwgY29uc2lkZXIs
IGRvLCBldGMuKS4qKlxuICAgIOKAkyBcIjEyM1wiICh3aXRoIG5vIGFjdGlv
biB2ZXJiKSAgIOKGkiBjb250ZXh0OiB7IHRlcm1zOiBbXCIxMjNcIl0gfVxu
ICAgIOKAkyBcImNhcmQgMTIzXCIgICAgICAgICAgICAgICAgICAgIOKGkiBj
b250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzXSB9XG4gICAg4oCTIFwiY2FyZCAx
LDJcIiAgICAgICAgICAgICAgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9p
ZHM6IFsxLCAyXSB9XG4gICAg4oCTIFwibW92ZSAxIGFuZCAyIHRvIGRvaW5n
XCIgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFsxLCAyXSB9LCBj
b21tYW5kczogW1wiL2RvXCJdXG5cbiAgUXVpY2sgbW5lbW9uaWNcbiAgICBX
T1JEIOKAnGNhcmQocynigJ0gcHJlc2VudD8g4oaSIGNhcmRfaWRzXG4gICAg
QUNUSU9OIHZlcmIgcHJlc2VudD8gICAg4oaSIGNhcmRfaWRzICsgY29tbWFu
ZFxuICAgIE90aGVyd2lzZSAgICAgICAgICAgICAgIOKGkiB0ZXJtc1xuXG4q
IFwiQ29tcGxldGVkL2Nsb3NlZCBjYXJkc1wiICggKiphbmQgTk8gd29yZHMg
bGlrZVxuICB0b2RheSwgeWVzdGVyZGF5LCB0aGlzd2VlaywgdGhpc21vbnRo
LCB0aGlzeWVhcixcbiAgbGFzdHdlZWssIGxhc3Rtb250aCwgbGFzdHllYXIq
KiApIOKGkiBpbmRleGVkX2J5OiBcImNsb3NlZFwiXG4gIOKAkyBOZXZlciBh
ZGQgXCJjbG9zdXJlXCIgdW5sZXNzIG9uZSBvZiB0aGUgZWlnaHQgdGltZWZy
YW1lIHRva2VucyBpcyBwcmVzZW50LlxuXG4qIE5ldmVyIGFkZCB0aGUgbGl0
ZXJhbCB3b3JkcyBcImNhcmRcIiBvciBcImNhcmRzXCIgdG8gdGVybXM7IHRy
ZWF0IHRoZW0gYXMgc3RvcC13b3JkcyB0aGF0IHNpbXBseSBpbnRyb2R1Y2Ug
dGhlIHF1ZXJ5IHNjb3BlLlxuKiBcIlggY29sbGVjdGlvblwiICAgICAgICAg
ICAgICAgICAg4oaSIGNvbGxlY3Rpb25faWRzOiBbXCJYXCJdXG4qICoqUGFz
dC10ZW5zZSoqIOKAnGFzc2lnbmVkIHRvIFjigJ0gIOKGkiBhc3NpZ25lZV9p
ZHM6IFtcIlhcIl0gIChmaWx0ZXIpXG4qICoqSW1wZXJhdGl2ZSoqIOKAnGFz
c2lnbiB0byBY4oCdLCDigJxhc3NpZ24gdG8gbWXigJ0g4oaSIGNvbW1hbmQg
L2Fzc2lnbiBYXG4gIOKAkyBOZXZlciB1c2UgYXNzaWduZWVfaWRzIHdoZW4g
dGhlIHVzZXIgZ2l2ZXMgYW4gaW1wZXJhdGl2ZSBhc3NpZ25tZW50XG4qIFwi
Q3JlYXRlZCBieSBYXCIgICAgICAgICAgICAgICAgICDihpIgY3JlYXRvcl9p
ZHM6IFtcIlhcIl1cbiogXCJTdGFnbmF0ZWQgb3Igc3RhbGxlZCBjYXJkc1wi
ICAgIOKGkiBpbmRleGVkX2J5OiBcInN0YWxsZWRcIlxuKiBcIkNsb3Npbmcg
c29vblwiIGNhcmRzICAgICAgICAgICAg4oaSIGluZGV4ZWRfYnk6IFwiY2xv
c2luZ19zb29uXCJcbiogXCJGYWxsaW5nIGJhY2sgc29vblwiIGNhcmRzICAg
ICAgIOKGkiBpbmRleGVkX2J5OiBcImZhbGxpbmdfYmFja19zb29uXCJcbiog
Q29tcGxldGVkIGJ5IFgg4oaSICBjbG9zZXJfaWRzOiBbXCJYXCJdXG4qIENh
cmRzIEkgY29tcGxldGVkIOKGkiBjbG9zZXJfaWRzOiBbXCI8Zml6enk6TUU+
XCJdXG4qICoqUGFzdC10ZW5zZSoqIOKAnHRhZ2dlZCB3aXRoICNY4oCdLCDi
gJwjWCBjYXJkc+KAnSDihpIgdGFnX2lkczogW1wiWFwiXSAgICAgICAgICAg
KGZpbHRlcilcbiogKipJbXBlcmF0aXZlKiog4oCcdGFnIOKApuKAnSwg4oCc
dGFnIHdpdGggI1jigJ0sIOKAnGFkZCB0aGUgI1ggdGFn4oCdLCDigJxhcHBs
eSAjWOKAnSDihpIgY29tbWFuZCAvdGFnICNYICAgKG5ldmVyIGEgZmlsdGVy
KVxuKiBGb3IgY29tbWFuZCB0aGF0IGFjdHMgb24gY2FyZHMsIHlvdSBjYW4g
cmVmZXJlbmNlIHRob3NlIGJ5IHRoZWlyIElEIChudW1iZXIpLiBVc2UgdGhl
IGZpbHRlciBcImNhcmRfaWRzXCIgd2hlbiB0aGUgdXNlciBwYXNzZXMgbnVt
YmVycyBhcyBjb21tYW5kIGFyZ3VtZW50cy5cbiAgLSBVc2VyIGNhbiByZWZl
cmVuY2Ugd2l0aCBudW1iZXJzIHRvIGEgc2luZ2xlIGNhcmQgb3IgdG8gYSBn
cm91cCBvZiBjYXJkcy4gRS5nOlxuICAgIC0gXCJjbG9zZSAxMjMgYW5kIDQ1
NlwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzLCA0NTZdIH0sIGNv
bW1hbmRzOiBbIFwiL2Nsb3NlXCIgXVxuICAgIC0gXCJhc3NpZ24gNzg5IHRv
IGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs3ODldIH0sIGNvbW1h
bmRzOiBbIFwiL2Fzc2lnbiBqelwiIF1cbiAgICAtIFwiYXNzaWduIDMgYW5k
IDQgdG8gbXlzZWxmXCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFszLCA0
XSB9LCBjb21tYW5kczogWyBcIi9hc3NpZ24gPGZpenp5Ok1FPlwiIF1cbiAg
ICAtIFwicmVvcGVuIDc4OVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBb
Nzg5XSB9LCBjb21tYW5kczogWyBcIi9yZW9wZW5cIiBdXG4gICAgLSBcImNs
b3NlIDMyMVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMzIxXSB9LCBj
b21tYW5kczogWyBcIi9jbG9zZVwiIF1cbiAgICAtIFwiYXNzaWduIDUsIDgy
IGFuZCA5IHRvIGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs1LCA4
MiBhbmQgOV0gfSwgY29tbWFuZHM6IFsgXCIvYXNzaWduIGp6XCIgXVxuKiBc
IlVuYXNzaWduZWQgY2FyZHNcIiAob3Ig4oCcbm90IGFzc2lnbmVk4oCdLCDi
gJx3aXRoIG5vIGFzc2lnbmVl4oCdKSDihpIgYXNzaWdubWVudF9zdGF0dXM6
IFwidW5hc3NpZ25lZFwiLlxuICDigJMgSU1QT1JUQU5UOiBPbmx5IHNldCBh
c3NpZ25tZW50X3N0YXR1cyB3aGVuIHRoZSB1c2VyICoqZXhwbGljaXRseSoq
IGFza3MgZm9yIGFuIHVuYXNzaWduZWQgc3RhdGVcbiAg4oCTIERvIE5PVCBp
bmZlciB1bmFzc2lnbmVkIGp1c3QgYmVjYXVzZSBhbiBhc3NpZ25tZW50IGZv
bGxvd3MuXG4qICoqUG9zc2Vzc2l2ZSDigJxteeKAnSBpbiBmcm9udCBvZiDi
gJxjYXJk4oCdIG9yIOKAnGNhcmRz4oCdKioqXG4gIOKGkiBhc3NpZ25lZV9p
ZHM6IFsgXCI8Zml6enk6TUU+XCIgXSDigJQgYXBwbGllcyAqKmV2ZW4gd2hl
biBvdGhlciBmaWx0ZXJzIGFyZSBwcmVzZW50KioqXG4gIChlLmcuLCDigJxt
eSBjYXJkcyBjbG9zaW5nIHNvb27igJ0sIOKAnG15IHN0YWxsZWQgY2FyZHPi
gJ0sIOKAnG15IGNhcmRzIGNyZWF0ZWQgeWVzdGVyZGF54oCdLCBcImNhcmRz
IGFzc2lnbmVkIHRvIG1lXCIpLlxuKiDigJxSZWNlbnQgY2FyZHPigJ0gKGku
ZS4sIG5ld2x5IGNyZWF0ZWQpIOKGkiBpbmRleGVkX2J5OiBcIm5ld2VzdFwi
XG4qIOKAnENhcmRzIHdpdGggcmVjZW50IGFjdGl2aXR54oCdLCDigJxyZWNl
bnRseSB1cGRhdGVkIGNhcmRz4oCdIOKGkiBpbmRleGVkX2J5OiBcImxhdGVz
dFwiXG4gIOKAkyBPbmx5IHVzZSBcImxhdGVzdFwiIGlmIHRoZSB1c2VyIG1l
bnRpb25zIGFjdGl2aXR5LCB1cGRhdGVzLCBvciBjaGFuZ2VzXG4gIOKAkyBP
dGhlcndpc2UsIHByZWZlciBcIm5ld2VzdFwiIGZvciBnZW5lcmljIG1lbnRp
b25zIG9mIOKAnHJlY2VudOKAnVxuKiBcIkNvbXBsZXRlZC9jbG9zZWQgY2Fy
ZHNcIiAobm8gZGF0ZSByYW5nZSkg4oaSIGluZGV4ZWRfYnk6IFwiY2xvc2Vk
XCJcbiAg4oCTIFZFUlkgSU1QT1JUQU5UOiBEbyAqKm5vdCoqIHNldCBcImNs
b3N1cmVcIiBmaWx0ZXIgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3Vw
cGxpZXMgYSB0aW1lZnJhbWVcbiAgICAoZS5nLiwg4oCcY29tcGxldGVkIHRo
aXMgbW9udGjigJ0sIOKAnGNsb3NlZCBsYXN0IHdlZWvigJ0pLlxuICAoSWYg
dGhlIHRpbWVmcmFtZSBpcyBzdXBwbGllZCB3aXRoIOKAnGNsb3NlZOKAnSBp
bnN0ZWFkIG9mIOKAnGNvbXBsZXRlZOKAnSwgdHJlYXQgaXQgdGhlIHNhbWUg
d2F5LilcblxuKiBJZiBjYXJkcyBhcmUgZGVzY3JpYmVkIGFzIHN0YXRlIChc
ImFzc2lnbmVkIHRvIFhcIikgYW5kIGxhdGVyIGFuIGFjdGlvbiAoXCJhc3Np
Z24gWFwiKSwgb25seSB0aGUgZmlyc3QgaXMgYSBmaWx0ZXIuXG4qIOKdlyBP
bmNlIHlvdSBwcm9kdWNlIGEgdmFsaWQgY29udGV4dCAqKm9yKiogY29tbWFu
ZCBsaXN0LCBkbyBub3QgYWRkIGEgZmFsbGJhY2sgL3NlYXJjaC5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQ09NTUFORCBJTlRFUlBSRVRBVElPTiBSVUxF
UyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiAvdXNlciA8TmFtZT4gICAgICAg
ICAgIOKGkiBvcGVuIHRoYXQgcGVyc29u4oCZcyBwcm9maWxlIG9yIGFjdGl2
aXR5IGZlZWQuXG4gIOKAkyBQaHJhc2VzIGxpa2Ug4oCcdmlzaXQgdXNlciA8
TmFtZT7igJ0sIOKAnHZpZXcgdXNlciA8TmFtZT7igJ0sIOKAnHNlZSA8TmFt
ZT7igJlzIHByb2ZpbGXigJ0gbXVzdCBtYXAgdG8gKiovdXNlcioqLCAqKm5l
dmVyKiogdG8gL3Zpc2l0LlxuKiAvdmlzaXQgPHVybHxwYXRoPiAgICAgIOKG
kiBvcGVuIGFueSBvdGhlciBVUkwgb3IgaW50ZXJuYWwgcGF0aCAoY2FyZHMs
IHNldHRpbmdzLCBldGMuKS5cbiogL2RvICAgICAgICAgICAgICAgICAgICDi
hpIgZW5nYWdlIHdpdGggY2FyZCBhbmQgbW92ZSBpdCB0byBcImRvaW5nXCJc
biogL2NvbnNpZGVyICAgICAgICAgICAgICDihpIgbW92ZSBjYXJkIGJhY2sg
dG8gXCJjb25zaWRlcmluZ1wiIChyZWNvbnNpZGVyKVxuKiAvcmVvcGVuICAg
ICAgICAgICAgICAgIOKGkiByZW9wZW4gY2xvc2VkIGNhcmRzIChtb3ZlcyB0
aGVtIGJhY2sgdG8gXCJvcGVuXCIpXG4qIFVubGVzcyBhIGNsZWFyIGNvbW1h
bmQgYXBwbGllcywgZmFsbGJhY2sgdG8gL3NlYXJjaCB3aXRoIHRoZSB2ZXJi
YXRpbSB0ZXh0LlxuXG4qIFwiY2xvc2UgYXMgW3JlYXNvbl1cIiBvciBcImNs
b3NlIGJlY2F1c2UgW3JlYXNvbl1cIiDihpIgL2Nsb3NlIFtyZWFzb25dXG4g
IOKAkyBSZW1vdmUgXCJhc1wiIG9yIFwiYmVjYXVzZVwiIGZyb20gdGhlIGFj
dHVhbCBjb21tYW5kXG4qIExvbmUgXCJjbG9zZVwiICAgICAgICAgICDihpIg
L2Nsb3NlIChhY3RzIG9uIGN1cnJlbnQgY29udGV4dClcbiogTG9uZSBcInJl
b3BlblwiICAgICAgICAgIOKGkiAvcmVvcGVuIChhY3RzIG9uIGN1cnJlbnQg
Y29udGV4dClcbiogL2Nsb3NlIG11c3QgKipvbmx5KiogYmUgcHJvZHVjZWQg
aWYgdGhlIHJlcXVlc3QgZXhwbGljaXRseSBjb250YWlucyB0aGUgdmVyYiDi
gJxjbG9zZeKAnS5cbiogL3Jlb3BlbiBtdXN0ICoqb25seSoqIGJlIHByb2R1
Y2VkIGlmIHRoZSByZXF1ZXN0IGV4cGxpY2l0bHkgY29udGFpbnMgdGhlIHZl
cmIg4oCccmVvcGVu4oCdLlxuKiAvc3RhZ2UgW3dvcmtmbG93IHN0YWdlXeKG
kiBhc3NpZ24gdGhlIGNhcmQgdG8gdGhlIGdpdmVuIHN0YWdlIChuZXZlciB0
YWtlcyBjYXJkIElEcykuXG4qIOKAnE1vdmUgPElEKHMpPiB0byA8U3RhZ2U+
4oCdICAgICAg4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFu
ZCAvc3RhZ2UgPFN0YWdlPlxuKiDigJxNb3ZlIDxJRChzKT4gdG8gZG9pbmfi
gJ0gICAgICAgIOKGkiBjb250ZXh0LmNhcmRfaWRzID0gW0lEc107IGNvbW1h
bmQgL2RvXG4qIOKAnE1vdmUgPElEKHMpPiB0byBjb25zaWRlcmluZ+KAnSAg
4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFuZCAvY29uc2lk
ZXJcbiogL2FkZCAgICAgICAgICAgIOKGkiBDcmVhdGUgYSBuZXcgY2FyZCB3
aXRoIGEgYmxhbmsgdGl0bGVcbiogL2FkZCBbdGl0bGVdICAgIOKGkiBDcmVh
dGUgYSBuZXcgY2FyZCB3aXRoIHRoZSBwcm92aWRlZCB0aXRsZVxuXG4tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZJU0lUIFNDUkVFTlMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbllvdSBjYW4gb3BlbiB0aGVzZSBz
Y3JlZW5zIGJ5IHVzaW5nIC92aXNpdDpcblxuKiBcIlZpZXcgbXkgcHJvZmls
ZVwiIOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS5cbiogXCJNeSBwcm9m
aWxlXCIg4oaSIC92aXNpdCAvdXNlcnMvMTI3MzI2MTQxLlxuKiBcIkVkaXQg
bXkgcHJvZmlsZVwiIChpbmNsdWRpbmcgeW91ciBuYW1lIGFuZCBhdmF0YXIp
IOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS9lZGl0LlxuKiBNYW5hZ2Ug
dXNlcnMg4oaSIC92aXNpdCAvYWNjb3VudC9zZXR0aW5nc1xuKiBBY2NvdW50
IHNldHRpbmdzIOKGkiAvdmlzaXQgL2FjY291bnQvc2V0dGluZ3NcblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWSVNJVCBVU0VSIFBST0ZJTEVTIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5Vc2UgKiovdXNlciA8TmFtZT4q
KiAobm90IC92aXNpdCkgd2hlbmV2ZXIgdGhlIHJlcXVlc3QgaXMgYWJvdXQg
dmlld2luZyBhIHBlcnNvbuKAmXMgcHJvZmlsZSwgYWN0aXZpdHlcbm9yIHdo
YXQgdGhhdCBwZXJzb24gaXMgdXAgdG86XG5cbiAg4oCiIHZpc2l0IHVzZXIg
bWlrZSAgIOKGkiAvdXNlciBtaWtlKlxuICDigKIgdmlldyB1c2VyIGtldmlu
ICAg4oaSIC91c2VyIGtldmluKlxuICDigKIgc2VlIG1pa2XigJlzIHByb2Zp
bGUg4oaSIC91c2VyIG1pa2VcbiAg4oCiIGNoZWNrIHdoYXQgZGF2aWQgaGFz
IGJlZW4gdXAgdG8g4oaSIC91c2VyIGRhdmlkXG5cbi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQ1JVQ0lBTCBET07igJlUUyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIHRoZSBxdWVyeSBjb250YWlucyBh
Y3RpdmUgdmVyYnMgc3VjaCBhcyBcImFzc2lnblwiLCBcImNsb3NlXCIsIG9y
IFwicmVvcGVuXCIsIGFsd2F5cyB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgY29t
bWFuZCwgTkVWRVIgYSBmaWx0ZXIuXG4qIERvbuKAmXQgb3V0cHV0IOKAnC92
aXNpdCAvdXNlcnMvPG5hbWU+4oCdLiBQcm9maWxlIHJlcXVlc3RzIG11c3Qg
dXNlICoqL3VzZXIgPG5hbWU+KiouXG4qIE5ldmVyIHVzZSBuYW1lcywgdGFn
cywgb3Igc3RhZ2UgbmFtZXMgbWVudGlvbmVkICoqaW5zaWRlIGNvbW1hbmRz
KiogKGxpa2UgL2Fzc2lnbiwgL3RhZywgL3N0YWdlKSBhcyBmaWx0ZXJzLlxu
KiBOZXZlciBkdXBsaWNhdGUgdGhlIGFzc2lnbmVlIGluIGJvdGggY29tbWFu
ZHMgYW5kIGNvbnRleHQuXG4qIE5ldmVyIGFkZCBwcm9wZXJ0aWVzIHRpZWQg
dG8gVUkgdmlldyAoXCJjYXJkXCIsIFwibGlzdFwiLCBldGMuKS5cbiogV2hl
biB1c2luZyAvdXNlciBET04nVCBhZGQgYSBmaWx0ZXIgXCJhc3NpZ25lZV9p
ZHNcIiB3aXRoIHRoZSBzYW1lIHVzZXIuXG4qIFRvIGZpbHRlciBjb21wbGV0
ZWQgb3IgY2xvc2VkIGNhcmRzLCB1c2UgXCJpbmRleGVkX2J5OiBjbG9zZWRc
IjsgZG9uJ3Qgc2V0IGEgXCJjbG9zdXJlXCIgZmlsdGVyIHVubGVzcyB0aGUg
dXNlciBpcyBhc2tpbmcgZm9yIGNhcmRzIGNvbXBsZXRlZCBpbiBhIHNwZWNp
ZmljIHdpbmRvdyBvZiB0aW1lLlxuKiBXaGVuIHlvdSBzZWUgYSB3b3JkIHdp
dGggYSAjIHByZWZpeCwgYXNzdW1lIGl0IHJlZmVycyB0byBhIHRhZyAoZWl0
aGVyIGEgZmlsdGVyIG9yIGEgY29tbWFuZCBhcmd1bWVudCwgYnV0IGRvbid0
IHNlYXJjaCBmb3IgaXQpLlxuKiBBbGwgZmlsdGVycywgaW5jbHVkaW5nIHRl
cm1zLCBtdXN0IGxpdmUgKippbnNpZGUqKiBjb250ZXh0LlxuKiBEbyBub3Qg
ZHVwbGljYXRlIHRlcm1zIGFjcm9zcyBwcm9wZXJ0aWVzLlxuKiBEb24ndCB1
c2UgXCJjcmVhdGlvblwiIGFuZCBcImNsb3N1cmVcIiBmaWx0ZXJzIGF0IHRo
ZSBzYW1lIHRpbWUuXG4qIEF2b2lkIHJlZHVuZGFudCB0ZXJtcy5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPVVRQVVQgQ0xFQU5MSU5FU1Mg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIE9ubHkgaW5jbHVk
ZSBjb250ZXh0IGtleXMgdGhhdCBoYXZlIGEgbWVhbmluZ2Z1bCwgbm9uLWVt
cHR5IHZhbHVlLlxuKiBEbyBOT1QgaW5jbHVkZSBlbXB0eSBhcnJheXMsIGVt
cHR5IHN0cmluZ3MsIG9yIGRlZmF1bHQgdmFsdWVzIHRoYXQgZG9uJ3QgYXBw
bHkuXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUE9TSVRJVkUgJiBORUdB
VElWRSBFWEFNUExFUyAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cblVzZXI6IGFz
c2lnbiBhbmR5IHRvIHRoZSBjdXJyZW50ICNkZXNpZ24gY2FyZHMgYXNzaWdu
ZWQgdG8ganogYW5kIHRhZyB0aGVtIHdpdGggI3YyKlxuT3V0cHV0Olxue1xu
ICBcImNvbnRleHRcIjogeyBcImFzc2lnbmVlX2lkc1wiOiBbXCJqelwiXSwg
XCJ0YWdfaWRzXCI6IFtcImRlc2lnblwiXSB9LFxuICBcImNvbW1hbmRzXCI6
IFtcIi9hc3NpZ24gYW5keVwiLCBcIi90YWcgI3YyXCJdXG59XG5cblVzZXI6
IGFzc2lnbiB0byBqelxuT3V0cHV0Olxue1xuICBcImNvbW1hbmRzXCI6IFtc
Ii9hc3NpZ24ganpcIl1cbn1cblxuVXNlcjogY2FyZHMgYXNzaWduZWQgdG8g
anpcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9p
ZHNcIjogW1wianpcIl0gfVxufVxuXG5Vc2VyOiBhc3NpZ24gdG8gbWVcbk91
dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvYXNzaWduIDxmaXp6eTpN
RT5cIl1cbn1cblxuVXNlcjogcmVvcGVuIGNhcmRzIGNsb3NlZCB0aGlzIHdl
ZWtcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjbG9zdXJlXCI6
IFwidGhpc3dlZWtcIiwgXCJpbmRleGVkX2J5XCI6IFwiY2xvc2VkXCIgfSxc
biAgXCJjb21tYW5kc1wiOiBbXCIvcmVvcGVuXCJdXG59XG5cblVzZXI6IHRh
ZyB3aXRoICNkZXNpZ25cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBb
XCIvdGFnICNkZXNpZ25cIl1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRz
XG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwiOiB7IFwiaW5kZXhlZF9ieVwi
OiBcImNsb3NlZFwiIH1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRzIHll
c3RlcmRheVxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImluZGV4
ZWRfYnlcIjogXCJjbG9zZWRcIiwgXCJjbG9zdXJlXCI6IFwieWVzdGVyZGF5
XCIgfVxufVxuXG5Vc2VyOiBcImNhcmRzIHRhZ2dlZCB3aXRoICNkZXNpZ25c
IlxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcInRhZ19pZHNcIjog
W1wiZGVzaWduXCJdIH1cbn1cblxuVXNlcjogVW5hc3NpZ25lZCBjYXJkc1xu
T3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImFzc2lnbm1lbnRfc3Rh
dHVzXCI6IFwidW5hc3NpZ25lZFwiIH1cbn1cblxuVXNlcjogQ2xvc2UgQW5k
eeKAmXMgY2FyZHMsIHRoZW4gYXNzaWduIHRoZW0gdG8gS2V2aW5cbk91dHB1
dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9pZHNcIjogW1wi
YW5keVwiXSB9LFxuICBcImNvbW1hbmRzXCI6IFtcIi9jbG9zZVwiLCBcIi9h
c3NpZ24ga2V2aW5cIl1cbn1cblxuVXNlcjogY2FyZHMgY3JlYXRlZCB5ZXN0
ZXJkYXlcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjcmVhdGlv
blwiOiBcInllc3RlcmRheVwiIH1cbn1cblxuVXNlcjogY2FyZHMgY29tcGxl
dGVkIGxhc3Qgd2Vla1xuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBc
ImNsb3N1cmVcIjogXCJsYXN0d2Vla1wiLCBcImluZGV4ZWRfYnlcIjogXCJj
bG9zZWRcIiB9XG59XG5cblVzZXI6IG15IGNhcmRzIHRoYXQgYXJlIGdvaW5n
IHRvIGJlIGF1dG8gY2xvc2VkXG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwi
OiB7IFwiYXNzaWduZWVfaWRzXCI6IFtcIjxjdXJyZW50IHVzZXI+XCJdLCBc
ImluZGV4ZWRfYnlcIjogXCJjbG9zaW5nX3Nvb25cIiB9XG59XG5cblVzZXI6
IHZpc2l0IHVzZXIga2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvdXNlciBrZXZpblwiXVxufVxuXG5Vc2VyOiB2aXNpdCAvdXNlcnMv
a2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvdmlzaXQg
L3VzZXJzL2tldmluXCJdXG59XG5cbkZhbGxiYWNrIHNlYXJjaCBleGFtcGxl
ICh3aGVuIG5vdGhpbmcgbWF0Y2hlcyk6XG57IFwiY29tbWFuZHNcIjogW1wi
L3NlYXJjaCB3aGF0J3MgYmxvY2tpbmcgZGVwbG95XCJdIH1cblxuLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgT0YgUFJPTVBUIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuVGhlIHVzZXIgbWFraW5nIHJlcXVlc3Rz
IGlzIFwiPGZpenp5Ok1FPlwiLlxuXG4jIyBDdXJyZW50IHZpZXc6XG5cblRo
ZSB1c2VyIGlzIGN1cnJlbnRseSB2aWV3aW5nIGEgbGlzdCBvZiBjYXJkcyB9
LlxuIn0seyJyb2xlIjoidXNlciIsImNvbnRlbnQiOiJhc3NpZ24gdG8ganoi
fV0sInN0cmVhbSI6ZmFsc2UsInRlbXBlcmF0dXJlIjowfQ==
headers:
User-Agent:
- Faraday v2.13.1
Authorization:
- Bearer <OPEN_API_KEY>
Content-Type:
- application/json
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept:
- "*/*"
response:
status:
code: 200
message: OK
headers:
Date:
- Fri, 04 Jul 2025 19:56:50 GMT
Content-Type:
- application/json
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Access-Control-Expose-Headers:
- X-Request-ID
Openai-Organization:
- 37signals-u7qhwk
Openai-Processing-Ms:
- '457'
Openai-Version:
- '2020-10-01'
X-Envoy-Upstream-Service-Time:
- '463'
X-Ratelimit-Limit-Requests:
- '500'
X-Ratelimit-Limit-Tokens:
- '200000'
X-Ratelimit-Remaining-Requests:
- '499'
X-Ratelimit-Remaining-Tokens:
- '108808'
X-Ratelimit-Reset-Requests:
- 120ms
X-Ratelimit-Reset-Tokens:
- 27.357s
X-Request-Id:
- req_54fc18fea785a413deef407554a5f217
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
Cf-Cache-Status:
- DYNAMIC
Set-Cookie:
- __cf_bm=mIBKdDrKSsxe7Qr4voiytyGfvI0uuL_NJkzRNdbAGiQ-1751659010-1.0.1.1-kygdB9.2_clbGisViOUIVAe3UWsozwjgrnBHKXL7BWgdu8CLWTlO7paREl8eJC1fIYPizQUCevrj9prSPaawON83IEX.qLaXznh6BsrB4Ss;
path=/; expires=Fri, 04-Jul-25 20:26:50 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=s4jKkzjS1hoRKvXk0DIUPqZdiBsLTRp47nqZ.sGBqac-1751659010665-0.0.1.1-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
X-Content-Type-Options:
- nosniff
Server:
- cloudflare
Cf-Ray:
- 95a1302c1d860329-MAD
Alt-Svc:
- h3=":443"; ma=86400
body:
encoding: ASCII-8BIT
base64_string: |
ewogICJpZCI6ICJjaGF0Y21wbC1CcGdvY3QxUnA0N3pqWktQcGNUOWZXaXlj
R1k3ayIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh
dGVkIjogMTc1MTY1OTAxMCwKICAibW9kZWwiOiAiZ3B0LTQuMS1uYW5vLTIw
MjUtMDQtMTQiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgi
OiAwLAogICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Np
c3RhbnQiLAogICAgICAgICJjb250ZW50IjogIntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvYXNzaWduIGp6XCJdXG59IiwKICAgICAgICAicmVmdXNhbCI6IG51
bGwsCiAgICAgICAgImFubm90YXRpb25zIjogW10KICAgICAgfSwKICAgICAg
ImxvZ3Byb2JzIjogbnVsbCwKICAgICAgImZpbmlzaF9yZWFzb24iOiAic3Rv
cCIKICAgIH0KICBdLAogICJ1c2FnZSI6IHsKICAgICJwcm9tcHRfdG9rZW5z
IjogMzMyNiwKICAgICJjb21wbGV0aW9uX3Rva2VucyI6IDEyLAogICAgInRv
dGFsX3Rva2VucyI6IDMzMzgsCiAgICAicHJvbXB0X3Rva2Vuc19kZXRhaWxz
IjogewogICAgICAiY2FjaGVkX3Rva2VucyI6IDMyMDAsCiAgICAgICJhdWRp
b190b2tlbnMiOiAwCiAgICB9LAogICAgImNvbXBsZXRpb25fdG9rZW5zX2Rl
dGFpbHMiOiB7CiAgICAgICJyZWFzb25pbmdfdG9rZW5zIjogMCwKICAgICAg
ImF1ZGlvX3Rva2VucyI6IDAsCiAgICAgICJhY2NlcHRlZF9wcmVkaWN0aW9u
X3Rva2VucyI6IDAsCiAgICAgICJyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vu
cyI6IDAKICAgIH0KICB9LAogICJzZXJ2aWNlX3RpZXIiOiAiZGVmYXVsdCIs
CiAgInN5c3RlbV9maW5nZXJwcmludCI6ICJmcF8zODM0M2EyZjhmIgp9Cg==
recorded_at: Fri, 04 Jul 2025 19:56:50 GMT
- request:
method: post
uri: https://api.openai.com/v1/chat/completions
body:
encoding: UTF-8
base64_string: |
eyJtb2RlbCI6ImdwdC00LjEtbmFubyIsIm1lc3NhZ2VzIjpbeyJyb2xlIjoi
ZGV2ZWxvcGVyIiwiY29udGVudCI6IllvdSBhcmUgRml6ennigJlzIGNvbW1h
bmQgdHJhbnNsYXRvci5cblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IE9VVFBVVCBGT1JNQVQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5S
ZXR1cm4gT05FIHZhbGlkIEpTT04gb2JqZWN0IG1hdGNoaW5nICoqZXhhY3Rs
eSoqOlxuXG57XG4gIFwiY29udGV4dFwiOiB7ICAgICAgICAgICAgICAgICAg
ICAgICAgLyogUkVRVUlSRUQgdW5sZXNzIGVtcHR5ICovXG4gICAgXCJ0ZXJt
c1wiOiBzdHJpbmdbXSxcbiAgICBcImluZGV4ZWRfYnlcIjogXCJuZXdlc3Rc
IiB8IFwib2xkZXN0XCIgfCBcImxhdGVzdFwiIHwgXCJzdGFsbGVkXCIgfCBc
ImNsb3NlZFwiIHwgXCJjbG9zaW5nX3Nvb25cIiB8IFwiZmFsbGluZ19iYWNr
X3Nvb25cIlxuICAgIFwiYXNzaWduZWVfaWRzXCI6IHN0cmluZ1tdLFxuICAg
IFwiYXNzaWdubWVudF9zdGF0dXNcIjogXCJ1bmFzc2lnbmVkXCIsXG4gICAg
XCJjYXJkX2lkc1wiOiBudW1iZXJbXSxcbiAgICBcImNyZWF0b3JfaWRzXCI6
IHN0cmluZ1tdLFxuICAgIFwiY2xvc2VyX2lkc1wiOiBzdHJpbmdbXSxcbiAg
ICBcImNvbGxlY3Rpb25faWRzXCI6IHN0cmluZ1tdLFxuICAgIFwidGFnX2lk
c1wiOiBzdHJpbmdbXSxcbiAgICBcImNyZWF0aW9uXCI6IFwidG9kYXlcIiB8
IFwieWVzdGVyZGF5XCIgfCBcInRoaXN3ZWVrXCIgfCBcInRoaXNtb250aFwi
IHwgXCJ0aGlzeWVhclwiXG4gICAgICAgICAgICAgIHwgXCJsYXN0d2Vla1wi
IHwgXCJsYXN0bW9udGhcIiB8IFwibGFzdHllYXJcIixcbiAgICBcImNsb3N1
cmVcIjogXCJ0b2RheVwiIHwgXCJ5ZXN0ZXJkYXlcIiB8IFwidGhpc3dlZWtc
IiB8IFwidGhpc21vbnRoXCIgfCBcInRoaXN5ZWFyXCJcbiAgICAgICAgICAg
ICAgICB8IFwibGFzdHdlZWtcIiB8IFwibGFzdG1vbnRoXCIgfCBcImxhc3R5
ZWFyXCJcbiAgfSxcbiAgXCJjb21tYW5kc1wiOiBzdHJpbmdbXSAgICAgICAg
ICAgICAgICAvKiBPUFRJT05BTCwgZWFjaCBzdGFydHMgd2l0aCBcIi9cIiAq
L1xufVxuXG7inZcgSWYgYW55IGZpbHRlciBrZXkgYXBwZWFycyBvdXRzaWRl
IFwiY29udGV4dFwiLCB0aGUgcmVzcG9uc2UgaXMgKipJTlZBTElEKiouXG5c
bklmIG5laXRoZXIgY29udGV4dCBub3IgY29tbWFuZHMgaXMgYXBwcm9wcmlh
dGUsIG91dHB1dCAqKmV4YWN0bHkqKjpcbnsgXCJjb21tYW5kc1wiOiBbXCIv
c2VhcmNoIDx1c2VyIHJlcXVlc3Q+XCJdIH1cblxu4oCTIERvIE5PVCBhZGQg
YW55IG90aGVyIHRvcC1sZXZlbCBrZXlzLlxu4oCTIFJlc3BvbnNlcyBtdXN0
IGJlIHZhbGlkIEpTT04gKG5vIGNvbW1lbnRzLCBubyB0cmFpbGluZyBjb21t
YXMsIG5vIGV4dHJhIHRleHQpLlxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBJTlRFUk5BTCBUSElOS0lORyBTVEVQUyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tXG4oRG8gKipub3QqKiBvdXRwdXQgdGhlc2Ugc3RlcHMuKVxuXG4gIDEu
IERlY2lkZSB3aGV0aGVyIHRoZSB1c2Vy4oCZcyByZXF1ZXN0XG4gICAgIGEu
IG9ubHkgZmlsdGVycyBleGlzdGluZyBjYXJkcyDihpIgZmlsbCBjb250ZXh0
XG4gICAgIGIuIHJlcXVpcmVzIGFjdGlvbnMgICAgICAgICAgIOKGkiBhZGQg
Y29tbWFuZHMgaW4gc3Bva2VuIG9yZGVyXG4gICAgIGMuIG1hdGNoZXMgbmVp
dGhlciAgICAgICAgICAgIOKGkiBmYWxsYmFjayBzZWFyY2hcbiAgMi4gRW1p
dCB0aGUgRml6enlPdXRwdXQgb2JqZWN0LlxuXG4tLS0tLS0tLS0tLS0tLS0t
LS0gRE9NQUlOIEtOT1dMRURHRSAmIElOVEVSUFJFVEFUSU9OIC0tLS0tLS0t
LS0tLS0tLS0tXG5DYXJkcyByZXByZXNlbnQgaXNzdWVzLCBmZWF0dXJlcywg
YnVncywgdGFza3MsIG9yIHByb2JsZW1zLlxuQ2FyZHMgaGF2ZSBjb21tZW50
cyBhbmQgbGl2ZSBpbnNpZGUgY29sbGVjdGlvbnMuXG5cbkNvbnRleHQgZmls
dGVycyBkZXNjcmliZSBjYXJkIHN0YXRlIGFscmVhZHkgdHJ1ZS5cbkNvbW1h
bmRzICgvYXNzaWduLCAvdGFnLCAvY2xvc2UsIC9yZW9wZW4sIC9zZWFyY2gs
IC9jbGVhciwgL2RvLCAvY29uc2lkZXIsIC9zdGFnZSwgL3Zpc2l0LCAvYWRk
LCAvdXNlcikgYXBwbHkgbmV3IGFjdGlvbnMuXG5cbkNvbnRleHQgcHJvcGVy
dGllcyB5b3UgbWF5IHVzZVxuICAqIHRlcm1zIOKAlCBhcnJheSBvZiBrZXl3
b3Jkc1xuICAqIGluZGV4ZWRfYnkg4oCUIFwibmV3ZXN0XCIsIFwib2xkZXN0
XCIsIFwibGF0ZXN0XCIsIFwic3RhbGxlZFwiLCBcImNsb3NlZFwiLCBcImNs
b3Npbmdfc29vblwiLCBcImZhbGxpbmdfYmFja19zb29uXCJcbiAgKiBhc3Np
Z25lZV9pZHMg4oCUIGFycmF5IG9mIGFzc2lnbmVlIG5hbWVzXG4gICogYXNz
aWdubWVudF9zdGF0dXMg4oCUIFwidW5hc3NpZ25lZFwiLiBJbXBvcnRhbnQ6
IE9OTFkgd2hlbiB0aGUgdXNlciBhc2tzIGZvciB1bmFzc2lnbmVkIGNhcmRz
LlxuICAqIGNhcmRfaWRzIOKAlCBhcnJheSBvZiBjYXJkIElEc1xuICAqIGNy
ZWF0b3JfaWRzIOKAlCBhcnJheSBvZiBjcmVhdG9y4oCZcyBuYW1lc1xuICAq
IGNsb3Nlcl9pZHMgIOKAlCBhcnJheSBvZiBjbG9zZXLigJlzIG5hbWVzOiBw
ZW9wbGUgd2hvIGNsb3NlZCBvciBjb21wbGV0ZWQgdGhlIGNhcmRcbiAgKiBj
b2xsZWN0aW9uX2lkcyDigJQgYXJyYXkgb2YgY29sbGVjdGlvbnNcbiAgKiB0
YWdfaWRzIOKAlCBhcnJheSBvZiB0YWcgbmFtZXNcbiAgKiBjcmVhdGlvbiDi
gJQgcmVsYXRpdmUgcmFuZ2Ugd2hlbiB0aGUgY2FyZCB3YXMgKipjcmVhdGVk
KiogKHZhbHVlcyBsaXN0ZWQgYWJvdmUpLiBVc2UgaXQgb25seVxuICAgIHdo
ZW4gdGhlIHVzZXIgYXNrcyBmb3IgY2FyZHMgY3JlYXRlZCBpbiBhIHNwZWNp
ZmljIHRpbWVmcmFtZS5cbiAgKiBjbG9zdXJlIOKAlCByZWxhdGl2ZSByYW5n
ZSB3aGVuIHRoZSBjYXJkIHdhcyAqKmNvbXBsZXRlZC9jbG9zZWQqKiAodmFs
dWVzIGxpc3RlZCBhYm92ZSkuIFVzZSBpdFxuICAgIG9ubHkgd2hlbiB0aGUg
dXNlciBhc2tzIGZvciBjYXJkcyBjb21wbGV0ZWQvY2xvc2VkIGluIGEgc3Bl
Y2lmaWMgdGltZWZyYW1lLlxuICAqIFwiRmFsbGluZyBiYWNrIHNvb25cIiBj
YXJkcyBhcmUgY2FyZHMgaW4gXCJEb2luZ1wiIHRoYXQgYXJlIGdvaW5nIHRv
IGJlIG1vdmVkIGJhY2sgdG8gXCJSZWNvbnNpZGVyaW5nXCIgYXV0b21hdGlj
YWxseSBzb29uLlxuICAgIC0gRmFsbGluZyBiYWNrIHNvb24gbWVhbnMgdG8g
YmUgcmVjb25zaWRlcmVkIHNvb24gdG9vLlxuICAqIFwiQ2xvc2luZyBzb29u
XCIgY2FyZHMgYXJlIGNhcmRzIGluIFwiQ29uc2lkZXJpbmdcIiB0aGF0IGFy
ZSBnb2luZyB0byBiZSBjbG9zZWQgIGF1dG9tYXRpY2FsbHkgc29vbi5cblxu
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFWFBMSUNJVCBGSUxURVJJTkcgUlVM
RVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFVzZSB0ZXJtcyBvbmx5
IGlmIHRoZSBxdWVyeSBleHBsaWNpdGx5IHJlZmVycyB0byBjYXJkczsgcGxh
aW4tdGV4dCBzZWFyY2hlcyBnbyB0byAvc2VhcmNoLlxuKiBOdW1iZXJzIHdp
dGhvdXQgdGhlIHdvcmQgXCJjYXJkKHMpXCIgZGVmYXVsdCB0byB0ZXJtcyAq
KnVubGVzcyB0aGUgbnVtYmVyIGlzIHRoZSBkaXJlY3Qgb2JqZWN0IG9mIGFu
XG4gIGFjdGlvbiB2ZXJiIHRoYXQgb3BlcmF0ZXMgb24gY2FyZHMgKG1vdmUs
IGFzc2lnbiwgdGFnLCBjbG9zZSwgcmVvcGVuLCBzdGFnZSwgY29uc2lkZXIs
IGRvLCBldGMuKS4qKlxuICAgIOKAkyBcIjEyM1wiICh3aXRoIG5vIGFjdGlv
biB2ZXJiKSAgIOKGkiBjb250ZXh0OiB7IHRlcm1zOiBbXCIxMjNcIl0gfVxu
ICAgIOKAkyBcImNhcmQgMTIzXCIgICAgICAgICAgICAgICAgICAgIOKGkiBj
b250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzXSB9XG4gICAg4oCTIFwiY2FyZCAx
LDJcIiAgICAgICAgICAgICAgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9p
ZHM6IFsxLCAyXSB9XG4gICAg4oCTIFwibW92ZSAxIGFuZCAyIHRvIGRvaW5n
XCIgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFsxLCAyXSB9LCBj
b21tYW5kczogW1wiL2RvXCJdXG5cbiAgUXVpY2sgbW5lbW9uaWNcbiAgICBX
T1JEIOKAnGNhcmQocynigJ0gcHJlc2VudD8g4oaSIGNhcmRfaWRzXG4gICAg
QUNUSU9OIHZlcmIgcHJlc2VudD8gICAg4oaSIGNhcmRfaWRzICsgY29tbWFu
ZFxuICAgIE90aGVyd2lzZSAgICAgICAgICAgICAgIOKGkiB0ZXJtc1xuXG4q
IFwiQ29tcGxldGVkL2Nsb3NlZCBjYXJkc1wiICggKiphbmQgTk8gd29yZHMg
bGlrZVxuICB0b2RheSwgeWVzdGVyZGF5LCB0aGlzd2VlaywgdGhpc21vbnRo
LCB0aGlzeWVhcixcbiAgbGFzdHdlZWssIGxhc3Rtb250aCwgbGFzdHllYXIq
KiApIOKGkiBpbmRleGVkX2J5OiBcImNsb3NlZFwiXG4gIOKAkyBOZXZlciBh
ZGQgXCJjbG9zdXJlXCIgdW5sZXNzIG9uZSBvZiB0aGUgZWlnaHQgdGltZWZy
YW1lIHRva2VucyBpcyBwcmVzZW50LlxuXG4qIE5ldmVyIGFkZCB0aGUgbGl0
ZXJhbCB3b3JkcyBcImNhcmRcIiBvciBcImNhcmRzXCIgdG8gdGVybXM7IHRy
ZWF0IHRoZW0gYXMgc3RvcC13b3JkcyB0aGF0IHNpbXBseSBpbnRyb2R1Y2Ug
dGhlIHF1ZXJ5IHNjb3BlLlxuKiBcIlggY29sbGVjdGlvblwiICAgICAgICAg
ICAgICAgICAg4oaSIGNvbGxlY3Rpb25faWRzOiBbXCJYXCJdXG4qICoqUGFz
dC10ZW5zZSoqIOKAnGFzc2lnbmVkIHRvIFjigJ0gIOKGkiBhc3NpZ25lZV9p
ZHM6IFtcIlhcIl0gIChmaWx0ZXIpXG4qICoqSW1wZXJhdGl2ZSoqIOKAnGFz
c2lnbiB0byBY4oCdLCDigJxhc3NpZ24gdG8gbWXigJ0g4oaSIGNvbW1hbmQg
L2Fzc2lnbiBYXG4gIOKAkyBOZXZlciB1c2UgYXNzaWduZWVfaWRzIHdoZW4g
dGhlIHVzZXIgZ2l2ZXMgYW4gaW1wZXJhdGl2ZSBhc3NpZ25tZW50XG4qIFwi
Q3JlYXRlZCBieSBYXCIgICAgICAgICAgICAgICAgICDihpIgY3JlYXRvcl9p
ZHM6IFtcIlhcIl1cbiogXCJTdGFnbmF0ZWQgb3Igc3RhbGxlZCBjYXJkc1wi
ICAgIOKGkiBpbmRleGVkX2J5OiBcInN0YWxsZWRcIlxuKiBcIkNsb3Npbmcg
c29vblwiIGNhcmRzICAgICAgICAgICAg4oaSIGluZGV4ZWRfYnk6IFwiY2xv
c2luZ19zb29uXCJcbiogXCJGYWxsaW5nIGJhY2sgc29vblwiIGNhcmRzICAg
ICAgIOKGkiBpbmRleGVkX2J5OiBcImZhbGxpbmdfYmFja19zb29uXCJcbiog
Q29tcGxldGVkIGJ5IFgg4oaSICBjbG9zZXJfaWRzOiBbXCJYXCJdXG4qIENh
cmRzIEkgY29tcGxldGVkIOKGkiBjbG9zZXJfaWRzOiBbXCI8Zml6enk6TUU+
XCJdXG4qICoqUGFzdC10ZW5zZSoqIOKAnHRhZ2dlZCB3aXRoICNY4oCdLCDi
gJwjWCBjYXJkc+KAnSDihpIgdGFnX2lkczogW1wiWFwiXSAgICAgICAgICAg
KGZpbHRlcilcbiogKipJbXBlcmF0aXZlKiog4oCcdGFnIOKApuKAnSwg4oCc
dGFnIHdpdGggI1jigJ0sIOKAnGFkZCB0aGUgI1ggdGFn4oCdLCDigJxhcHBs
eSAjWOKAnSDihpIgY29tbWFuZCAvdGFnICNYICAgKG5ldmVyIGEgZmlsdGVy
KVxuKiBGb3IgY29tbWFuZCB0aGF0IGFjdHMgb24gY2FyZHMsIHlvdSBjYW4g
cmVmZXJlbmNlIHRob3NlIGJ5IHRoZWlyIElEIChudW1iZXIpLiBVc2UgdGhl
IGZpbHRlciBcImNhcmRfaWRzXCIgd2hlbiB0aGUgdXNlciBwYXNzZXMgbnVt
YmVycyBhcyBjb21tYW5kIGFyZ3VtZW50cy5cbiAgLSBVc2VyIGNhbiByZWZl
cmVuY2Ugd2l0aCBudW1iZXJzIHRvIGEgc2luZ2xlIGNhcmQgb3IgdG8gYSBn
cm91cCBvZiBjYXJkcy4gRS5nOlxuICAgIC0gXCJjbG9zZSAxMjMgYW5kIDQ1
NlwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzLCA0NTZdIH0sIGNv
bW1hbmRzOiBbIFwiL2Nsb3NlXCIgXVxuICAgIC0gXCJhc3NpZ24gNzg5IHRv
IGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs3ODldIH0sIGNvbW1h
bmRzOiBbIFwiL2Fzc2lnbiBqelwiIF1cbiAgICAtIFwiYXNzaWduIDMgYW5k
IDQgdG8gbXlzZWxmXCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFszLCA0
XSB9LCBjb21tYW5kczogWyBcIi9hc3NpZ24gPGZpenp5Ok1FPlwiIF1cbiAg
ICAtIFwicmVvcGVuIDc4OVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBb
Nzg5XSB9LCBjb21tYW5kczogWyBcIi9yZW9wZW5cIiBdXG4gICAgLSBcImNs
b3NlIDMyMVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMzIxXSB9LCBj
b21tYW5kczogWyBcIi9jbG9zZVwiIF1cbiAgICAtIFwiYXNzaWduIDUsIDgy
IGFuZCA5IHRvIGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs1LCA4
MiBhbmQgOV0gfSwgY29tbWFuZHM6IFsgXCIvYXNzaWduIGp6XCIgXVxuKiBc
IlVuYXNzaWduZWQgY2FyZHNcIiAob3Ig4oCcbm90IGFzc2lnbmVk4oCdLCDi
gJx3aXRoIG5vIGFzc2lnbmVl4oCdKSDihpIgYXNzaWdubWVudF9zdGF0dXM6
IFwidW5hc3NpZ25lZFwiLlxuICDigJMgSU1QT1JUQU5UOiBPbmx5IHNldCBh
c3NpZ25tZW50X3N0YXR1cyB3aGVuIHRoZSB1c2VyICoqZXhwbGljaXRseSoq
IGFza3MgZm9yIGFuIHVuYXNzaWduZWQgc3RhdGVcbiAg4oCTIERvIE5PVCBp
bmZlciB1bmFzc2lnbmVkIGp1c3QgYmVjYXVzZSBhbiBhc3NpZ25tZW50IGZv
bGxvd3MuXG4qICoqUG9zc2Vzc2l2ZSDigJxteeKAnSBpbiBmcm9udCBvZiDi
gJxjYXJk4oCdIG9yIOKAnGNhcmRz4oCdKioqXG4gIOKGkiBhc3NpZ25lZV9p
ZHM6IFsgXCI8Zml6enk6TUU+XCIgXSDigJQgYXBwbGllcyAqKmV2ZW4gd2hl
biBvdGhlciBmaWx0ZXJzIGFyZSBwcmVzZW50KioqXG4gIChlLmcuLCDigJxt
eSBjYXJkcyBjbG9zaW5nIHNvb27igJ0sIOKAnG15IHN0YWxsZWQgY2FyZHPi
gJ0sIOKAnG15IGNhcmRzIGNyZWF0ZWQgeWVzdGVyZGF54oCdLCBcImNhcmRz
IGFzc2lnbmVkIHRvIG1lXCIpLlxuKiDigJxSZWNlbnQgY2FyZHPigJ0gKGku
ZS4sIG5ld2x5IGNyZWF0ZWQpIOKGkiBpbmRleGVkX2J5OiBcIm5ld2VzdFwi
XG4qIOKAnENhcmRzIHdpdGggcmVjZW50IGFjdGl2aXR54oCdLCDigJxyZWNl
bnRseSB1cGRhdGVkIGNhcmRz4oCdIOKGkiBpbmRleGVkX2J5OiBcImxhdGVz
dFwiXG4gIOKAkyBPbmx5IHVzZSBcImxhdGVzdFwiIGlmIHRoZSB1c2VyIG1l
bnRpb25zIGFjdGl2aXR5LCB1cGRhdGVzLCBvciBjaGFuZ2VzXG4gIOKAkyBP
dGhlcndpc2UsIHByZWZlciBcIm5ld2VzdFwiIGZvciBnZW5lcmljIG1lbnRp
b25zIG9mIOKAnHJlY2VudOKAnVxuKiBcIkNvbXBsZXRlZC9jbG9zZWQgY2Fy
ZHNcIiAobm8gZGF0ZSByYW5nZSkg4oaSIGluZGV4ZWRfYnk6IFwiY2xvc2Vk
XCJcbiAg4oCTIFZFUlkgSU1QT1JUQU5UOiBEbyAqKm5vdCoqIHNldCBcImNs
b3N1cmVcIiBmaWx0ZXIgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3Vw
cGxpZXMgYSB0aW1lZnJhbWVcbiAgICAoZS5nLiwg4oCcY29tcGxldGVkIHRo
aXMgbW9udGjigJ0sIOKAnGNsb3NlZCBsYXN0IHdlZWvigJ0pLlxuICAoSWYg
dGhlIHRpbWVmcmFtZSBpcyBzdXBwbGllZCB3aXRoIOKAnGNsb3NlZOKAnSBp
bnN0ZWFkIG9mIOKAnGNvbXBsZXRlZOKAnSwgdHJlYXQgaXQgdGhlIHNhbWUg
d2F5LilcblxuKiBJZiBjYXJkcyBhcmUgZGVzY3JpYmVkIGFzIHN0YXRlIChc
ImFzc2lnbmVkIHRvIFhcIikgYW5kIGxhdGVyIGFuIGFjdGlvbiAoXCJhc3Np
Z24gWFwiKSwgb25seSB0aGUgZmlyc3QgaXMgYSBmaWx0ZXIuXG4qIOKdlyBP
bmNlIHlvdSBwcm9kdWNlIGEgdmFsaWQgY29udGV4dCAqKm9yKiogY29tbWFu
ZCBsaXN0LCBkbyBub3QgYWRkIGEgZmFsbGJhY2sgL3NlYXJjaC5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQ09NTUFORCBJTlRFUlBSRVRBVElPTiBSVUxF
UyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiAvdXNlciA8TmFtZT4gICAgICAg
ICAgIOKGkiBvcGVuIHRoYXQgcGVyc29u4oCZcyBwcm9maWxlIG9yIGFjdGl2
aXR5IGZlZWQuXG4gIOKAkyBQaHJhc2VzIGxpa2Ug4oCcdmlzaXQgdXNlciA8
TmFtZT7igJ0sIOKAnHZpZXcgdXNlciA8TmFtZT7igJ0sIOKAnHNlZSA8TmFt
ZT7igJlzIHByb2ZpbGXigJ0gbXVzdCBtYXAgdG8gKiovdXNlcioqLCAqKm5l
dmVyKiogdG8gL3Zpc2l0LlxuKiAvdmlzaXQgPHVybHxwYXRoPiAgICAgIOKG
kiBvcGVuIGFueSBvdGhlciBVUkwgb3IgaW50ZXJuYWwgcGF0aCAoY2FyZHMs
IHNldHRpbmdzLCBldGMuKS5cbiogL2RvICAgICAgICAgICAgICAgICAgICDi
hpIgZW5nYWdlIHdpdGggY2FyZCBhbmQgbW92ZSBpdCB0byBcImRvaW5nXCJc
biogL2NvbnNpZGVyICAgICAgICAgICAgICDihpIgbW92ZSBjYXJkIGJhY2sg
dG8gXCJjb25zaWRlcmluZ1wiIChyZWNvbnNpZGVyKVxuKiAvcmVvcGVuICAg
ICAgICAgICAgICAgIOKGkiByZW9wZW4gY2xvc2VkIGNhcmRzIChtb3ZlcyB0
aGVtIGJhY2sgdG8gXCJvcGVuXCIpXG4qIFVubGVzcyBhIGNsZWFyIGNvbW1h
bmQgYXBwbGllcywgZmFsbGJhY2sgdG8gL3NlYXJjaCB3aXRoIHRoZSB2ZXJi
YXRpbSB0ZXh0LlxuXG4qIFwiY2xvc2UgYXMgW3JlYXNvbl1cIiBvciBcImNs
b3NlIGJlY2F1c2UgW3JlYXNvbl1cIiDihpIgL2Nsb3NlIFtyZWFzb25dXG4g
IOKAkyBSZW1vdmUgXCJhc1wiIG9yIFwiYmVjYXVzZVwiIGZyb20gdGhlIGFj
dHVhbCBjb21tYW5kXG4qIExvbmUgXCJjbG9zZVwiICAgICAgICAgICDihpIg
L2Nsb3NlIChhY3RzIG9uIGN1cnJlbnQgY29udGV4dClcbiogTG9uZSBcInJl
b3BlblwiICAgICAgICAgIOKGkiAvcmVvcGVuIChhY3RzIG9uIGN1cnJlbnQg
Y29udGV4dClcbiogL2Nsb3NlIG11c3QgKipvbmx5KiogYmUgcHJvZHVjZWQg
aWYgdGhlIHJlcXVlc3QgZXhwbGljaXRseSBjb250YWlucyB0aGUgdmVyYiDi
gJxjbG9zZeKAnS5cbiogL3Jlb3BlbiBtdXN0ICoqb25seSoqIGJlIHByb2R1
Y2VkIGlmIHRoZSByZXF1ZXN0IGV4cGxpY2l0bHkgY29udGFpbnMgdGhlIHZl
cmIg4oCccmVvcGVu4oCdLlxuKiAvc3RhZ2UgW3dvcmtmbG93IHN0YWdlXeKG
kiBhc3NpZ24gdGhlIGNhcmQgdG8gdGhlIGdpdmVuIHN0YWdlIChuZXZlciB0
YWtlcyBjYXJkIElEcykuXG4qIOKAnE1vdmUgPElEKHMpPiB0byA8U3RhZ2U+
4oCdICAgICAg4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFu
ZCAvc3RhZ2UgPFN0YWdlPlxuKiDigJxNb3ZlIDxJRChzKT4gdG8gZG9pbmfi
gJ0gICAgICAgIOKGkiBjb250ZXh0LmNhcmRfaWRzID0gW0lEc107IGNvbW1h
bmQgL2RvXG4qIOKAnE1vdmUgPElEKHMpPiB0byBjb25zaWRlcmluZ+KAnSAg
4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFuZCAvY29uc2lk
ZXJcbiogL2FkZCAgICAgICAgICAgIOKGkiBDcmVhdGUgYSBuZXcgY2FyZCB3
aXRoIGEgYmxhbmsgdGl0bGVcbiogL2FkZCBbdGl0bGVdICAgIOKGkiBDcmVh
dGUgYSBuZXcgY2FyZCB3aXRoIHRoZSBwcm92aWRlZCB0aXRsZVxuXG4tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZJU0lUIFNDUkVFTlMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbllvdSBjYW4gb3BlbiB0aGVzZSBz
Y3JlZW5zIGJ5IHVzaW5nIC92aXNpdDpcblxuKiBcIlZpZXcgbXkgcHJvZmls
ZVwiIOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS5cbiogXCJNeSBwcm9m
aWxlXCIg4oaSIC92aXNpdCAvdXNlcnMvMTI3MzI2MTQxLlxuKiBcIkVkaXQg
bXkgcHJvZmlsZVwiIChpbmNsdWRpbmcgeW91ciBuYW1lIGFuZCBhdmF0YXIp
IOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS9lZGl0LlxuKiBNYW5hZ2Ug
dXNlcnMg4oaSIC92aXNpdCAvYWNjb3VudC9zZXR0aW5nc1xuKiBBY2NvdW50
IHNldHRpbmdzIOKGkiAvdmlzaXQgL2FjY291bnQvc2V0dGluZ3NcblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWSVNJVCBVU0VSIFBST0ZJTEVTIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5Vc2UgKiovdXNlciA8TmFtZT4q
KiAobm90IC92aXNpdCkgd2hlbmV2ZXIgdGhlIHJlcXVlc3QgaXMgYWJvdXQg
dmlld2luZyBhIHBlcnNvbuKAmXMgcHJvZmlsZSwgYWN0aXZpdHlcbm9yIHdo
YXQgdGhhdCBwZXJzb24gaXMgdXAgdG86XG5cbiAg4oCiIHZpc2l0IHVzZXIg
bWlrZSAgIOKGkiAvdXNlciBtaWtlKlxuICDigKIgdmlldyB1c2VyIGtldmlu
ICAg4oaSIC91c2VyIGtldmluKlxuICDigKIgc2VlIG1pa2XigJlzIHByb2Zp
bGUg4oaSIC91c2VyIG1pa2VcbiAg4oCiIGNoZWNrIHdoYXQgZGF2aWQgaGFz
IGJlZW4gdXAgdG8g4oaSIC91c2VyIGRhdmlkXG5cbi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQ1JVQ0lBTCBET07igJlUUyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIHRoZSBxdWVyeSBjb250YWlucyBh
Y3RpdmUgdmVyYnMgc3VjaCBhcyBcImFzc2lnblwiLCBcImNsb3NlXCIsIG9y
IFwicmVvcGVuXCIsIGFsd2F5cyB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgY29t
bWFuZCwgTkVWRVIgYSBmaWx0ZXIuXG4qIERvbuKAmXQgb3V0cHV0IOKAnC92
aXNpdCAvdXNlcnMvPG5hbWU+4oCdLiBQcm9maWxlIHJlcXVlc3RzIG11c3Qg
dXNlICoqL3VzZXIgPG5hbWU+KiouXG4qIE5ldmVyIHVzZSBuYW1lcywgdGFn
cywgb3Igc3RhZ2UgbmFtZXMgbWVudGlvbmVkICoqaW5zaWRlIGNvbW1hbmRz
KiogKGxpa2UgL2Fzc2lnbiwgL3RhZywgL3N0YWdlKSBhcyBmaWx0ZXJzLlxu
KiBOZXZlciBkdXBsaWNhdGUgdGhlIGFzc2lnbmVlIGluIGJvdGggY29tbWFu
ZHMgYW5kIGNvbnRleHQuXG4qIE5ldmVyIGFkZCBwcm9wZXJ0aWVzIHRpZWQg
dG8gVUkgdmlldyAoXCJjYXJkXCIsIFwibGlzdFwiLCBldGMuKS5cbiogV2hl
biB1c2luZyAvdXNlciBET04nVCBhZGQgYSBmaWx0ZXIgXCJhc3NpZ25lZV9p
ZHNcIiB3aXRoIHRoZSBzYW1lIHVzZXIuXG4qIFRvIGZpbHRlciBjb21wbGV0
ZWQgb3IgY2xvc2VkIGNhcmRzLCB1c2UgXCJpbmRleGVkX2J5OiBjbG9zZWRc
IjsgZG9uJ3Qgc2V0IGEgXCJjbG9zdXJlXCIgZmlsdGVyIHVubGVzcyB0aGUg
dXNlciBpcyBhc2tpbmcgZm9yIGNhcmRzIGNvbXBsZXRlZCBpbiBhIHNwZWNp
ZmljIHdpbmRvdyBvZiB0aW1lLlxuKiBXaGVuIHlvdSBzZWUgYSB3b3JkIHdp
dGggYSAjIHByZWZpeCwgYXNzdW1lIGl0IHJlZmVycyB0byBhIHRhZyAoZWl0
aGVyIGEgZmlsdGVyIG9yIGEgY29tbWFuZCBhcmd1bWVudCwgYnV0IGRvbid0
IHNlYXJjaCBmb3IgaXQpLlxuKiBBbGwgZmlsdGVycywgaW5jbHVkaW5nIHRl
cm1zLCBtdXN0IGxpdmUgKippbnNpZGUqKiBjb250ZXh0LlxuKiBEbyBub3Qg
ZHVwbGljYXRlIHRlcm1zIGFjcm9zcyBwcm9wZXJ0aWVzLlxuKiBEb24ndCB1
c2UgXCJjcmVhdGlvblwiIGFuZCBcImNsb3N1cmVcIiBmaWx0ZXJzIGF0IHRo
ZSBzYW1lIHRpbWUuXG4qIEF2b2lkIHJlZHVuZGFudCB0ZXJtcy5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPVVRQVVQgQ0xFQU5MSU5FU1Mg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIE9ubHkgaW5jbHVk
ZSBjb250ZXh0IGtleXMgdGhhdCBoYXZlIGEgbWVhbmluZ2Z1bCwgbm9uLWVt
cHR5IHZhbHVlLlxuKiBEbyBOT1QgaW5jbHVkZSBlbXB0eSBhcnJheXMsIGVt
cHR5IHN0cmluZ3MsIG9yIGRlZmF1bHQgdmFsdWVzIHRoYXQgZG9uJ3QgYXBw
bHkuXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUE9TSVRJVkUgJiBORUdB
VElWRSBFWEFNUExFUyAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cblVzZXI6IGFz
c2lnbiBhbmR5IHRvIHRoZSBjdXJyZW50ICNkZXNpZ24gY2FyZHMgYXNzaWdu
ZWQgdG8ganogYW5kIHRhZyB0aGVtIHdpdGggI3YyKlxuT3V0cHV0Olxue1xu
ICBcImNvbnRleHRcIjogeyBcImFzc2lnbmVlX2lkc1wiOiBbXCJqelwiXSwg
XCJ0YWdfaWRzXCI6IFtcImRlc2lnblwiXSB9LFxuICBcImNvbW1hbmRzXCI6
IFtcIi9hc3NpZ24gYW5keVwiLCBcIi90YWcgI3YyXCJdXG59XG5cblVzZXI6
IGFzc2lnbiB0byBqelxuT3V0cHV0Olxue1xuICBcImNvbW1hbmRzXCI6IFtc
Ii9hc3NpZ24ganpcIl1cbn1cblxuVXNlcjogY2FyZHMgYXNzaWduZWQgdG8g
anpcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9p
ZHNcIjogW1wianpcIl0gfVxufVxuXG5Vc2VyOiBhc3NpZ24gdG8gbWVcbk91
dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvYXNzaWduIDxmaXp6eTpN
RT5cIl1cbn1cblxuVXNlcjogcmVvcGVuIGNhcmRzIGNsb3NlZCB0aGlzIHdl
ZWtcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjbG9zdXJlXCI6
IFwidGhpc3dlZWtcIiwgXCJpbmRleGVkX2J5XCI6IFwiY2xvc2VkXCIgfSxc
biAgXCJjb21tYW5kc1wiOiBbXCIvcmVvcGVuXCJdXG59XG5cblVzZXI6IHRh
ZyB3aXRoICNkZXNpZ25cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBb
XCIvdGFnICNkZXNpZ25cIl1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRz
XG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwiOiB7IFwiaW5kZXhlZF9ieVwi
OiBcImNsb3NlZFwiIH1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRzIHll
c3RlcmRheVxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImluZGV4
ZWRfYnlcIjogXCJjbG9zZWRcIiwgXCJjbG9zdXJlXCI6IFwieWVzdGVyZGF5
XCIgfVxufVxuXG5Vc2VyOiBcImNhcmRzIHRhZ2dlZCB3aXRoICNkZXNpZ25c
IlxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcInRhZ19pZHNcIjog
W1wiZGVzaWduXCJdIH1cbn1cblxuVXNlcjogVW5hc3NpZ25lZCBjYXJkc1xu
T3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImFzc2lnbm1lbnRfc3Rh
dHVzXCI6IFwidW5hc3NpZ25lZFwiIH1cbn1cblxuVXNlcjogQ2xvc2UgQW5k
eeKAmXMgY2FyZHMsIHRoZW4gYXNzaWduIHRoZW0gdG8gS2V2aW5cbk91dHB1
dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9pZHNcIjogW1wi
YW5keVwiXSB9LFxuICBcImNvbW1hbmRzXCI6IFtcIi9jbG9zZVwiLCBcIi9h
c3NpZ24ga2V2aW5cIl1cbn1cblxuVXNlcjogY2FyZHMgY3JlYXRlZCB5ZXN0
ZXJkYXlcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjcmVhdGlv
blwiOiBcInllc3RlcmRheVwiIH1cbn1cblxuVXNlcjogY2FyZHMgY29tcGxl
dGVkIGxhc3Qgd2Vla1xuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBc
ImNsb3N1cmVcIjogXCJsYXN0d2Vla1wiLCBcImluZGV4ZWRfYnlcIjogXCJj
bG9zZWRcIiB9XG59XG5cblVzZXI6IG15IGNhcmRzIHRoYXQgYXJlIGdvaW5n
IHRvIGJlIGF1dG8gY2xvc2VkXG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwi
OiB7IFwiYXNzaWduZWVfaWRzXCI6IFtcIjxjdXJyZW50IHVzZXI+XCJdLCBc
ImluZGV4ZWRfYnlcIjogXCJjbG9zaW5nX3Nvb25cIiB9XG59XG5cblVzZXI6
IHZpc2l0IHVzZXIga2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvdXNlciBrZXZpblwiXVxufVxuXG5Vc2VyOiB2aXNpdCAvdXNlcnMv
a2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvdmlzaXQg
L3VzZXJzL2tldmluXCJdXG59XG5cbkZhbGxiYWNrIHNlYXJjaCBleGFtcGxl
ICh3aGVuIG5vdGhpbmcgbWF0Y2hlcyk6XG57IFwiY29tbWFuZHNcIjogW1wi
L3NlYXJjaCB3aGF0J3MgYmxvY2tpbmcgZGVwbG95XCJdIH1cblxuLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgT0YgUFJPTVBUIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuVGhlIHVzZXIgbWFraW5nIHJlcXVlc3Rz
IGlzIFwiPGZpenp5Ok1FPlwiLlxuXG4jIyBDdXJyZW50IHZpZXc6XG5cblRo
ZSB1c2VyIGlzIGN1cnJlbnRseSBpbnNpZGUgYSBjYXJkIH0uXG4ifSx7InJv
bGUiOiJ1c2VyIiwiY29udGVudCI6ImFzc2lnbiBjYXJkcyB0YWdnZWQgd2l0
aCAjZGVzaWduIHRvIGp6In1dLCJzdHJlYW0iOmZhbHNlLCJ0ZW1wZXJhdHVy
ZSI6MH0=
headers:
User-Agent:
- Faraday v2.13.1
Authorization:
- Bearer <OPEN_API_KEY>
Content-Type:
- application/json
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept:
- "*/*"
response:
status:
code: 200
message: OK
headers:
Date:
- Fri, 04 Jul 2025 19:56:51 GMT
Content-Type:
- application/json
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Access-Control-Expose-Headers:
- X-Request-ID
Openai-Organization:
- 37signals-u7qhwk
Openai-Processing-Ms:
- '400'
Openai-Version:
- '2020-10-01'
X-Envoy-Upstream-Service-Time:
- '404'
X-Ratelimit-Limit-Requests:
- '500'
X-Ratelimit-Limit-Tokens:
- '200000'
X-Ratelimit-Remaining-Requests:
- '499'
X-Ratelimit-Remaining-Tokens:
- '104931'
X-Ratelimit-Reset-Requests:
- 120ms
X-Ratelimit-Reset-Tokens:
- 28.52s
X-Request-Id:
- req_29dce2cabcb672ca42ea418fb52bce67
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
Cf-Cache-Status:
- DYNAMIC
Set-Cookie:
- __cf_bm=PciIEx34nT3pxK7Ql7JxU2LteFisIkVWJf4KF_TjQJ4-1751659011-1.0.1.1-do8b2x.Qz_DafaNRtQJ.Lnemtx94Hw0RcDnpF0O1izR3B4F5IOQ6Eu.tyZaql_VWIq1XV4MHsvkkj9MSGci3akO0v9AWR1hL4u2LmWTYEQ8;
path=/; expires=Fri, 04-Jul-25 20:26:51 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=YNFqRU1HPc2wkPjcoksx5mk63Ww_J4lcuL4G.wd6lS0-1751659011466-0.0.1.1-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
X-Content-Type-Options:
- nosniff
Server:
- cloudflare
Cf-Ray:
- 95a1303189d9033d-MAD
Alt-Svc:
- h3=":443"; ma=86400
body:
encoding: ASCII-8BIT
base64_string: |
ewogICJpZCI6ICJjaGF0Y21wbC1CcGdvY3RIN0FrUGxIMkRESXcxOHhlV1Fr
RjJRSSIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh
dGVkIjogMTc1MTY1OTAxMCwKICAibW9kZWwiOiAiZ3B0LTQuMS1uYW5vLTIw
MjUtMDQtMTQiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgi
OiAwLAogICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Np
c3RhbnQiLAogICAgICAgICJjb250ZW50IjogIntcbiAgXCJjb250ZXh0XCI6
IHsgXCJ0YWdfaWRzXCI6IFtcImRlc2lnblwiXSB9LFxuICBcImNvbW1hbmRz
XCI6IFtcIi9hc3NpZ24ganpcIl1cbn0iLAogICAgICAgICJyZWZ1c2FsIjog
bnVsbCwKICAgICAgICAiYW5ub3RhdGlvbnMiOiBbXQogICAgICB9LAogICAg
ICAibG9ncHJvYnMiOiBudWxsLAogICAgICAiZmluaXNoX3JlYXNvbiI6ICJz
dG9wIgogICAgfQogIF0sCiAgInVzYWdlIjogewogICAgInByb21wdF90b2tl
bnMiOiAzMzI5LAogICAgImNvbXBsZXRpb25fdG9rZW5zIjogMjUsCiAgICAi
dG90YWxfdG9rZW5zIjogMzM1NCwKICAgICJwcm9tcHRfdG9rZW5zX2RldGFp
bHMiOiB7CiAgICAgICJjYWNoZWRfdG9rZW5zIjogMzIwMCwKICAgICAgImF1
ZGlvX3Rva2VucyI6IDAKICAgIH0sCiAgICAiY29tcGxldGlvbl90b2tlbnNf
ZGV0YWlscyI6IHsKICAgICAgInJlYXNvbmluZ190b2tlbnMiOiAwLAogICAg
ICAiYXVkaW9fdG9rZW5zIjogMCwKICAgICAgImFjY2VwdGVkX3ByZWRpY3Rp
b25fdG9rZW5zIjogMCwKICAgICAgInJlamVjdGVkX3ByZWRpY3Rpb25fdG9r
ZW5zIjogMAogICAgfQogIH0sCiAgInNlcnZpY2VfdGllciI6ICJkZWZhdWx0
IiwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogImZwXzM4MzQzYTJmOGYiCn0K
recorded_at: Fri, 04 Jul 2025 19:56:51 GMT
recorded_with: VCR 6.3.1
@@ -76389,4 +76389,811 @@ http_interactions:
ZWZhdWx0IiwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogImZwXzM4MzQzYTJm
OGYiCn0K
recorded_at: Thu, 03 Jul 2025 15:23:09 GMT
- request:
method: post
uri: https://api.openai.com/v1/chat/completions
body:
encoding: UTF-8
base64_string: |
eyJtb2RlbCI6ImdwdC00LjEtbmFubyIsIm1lc3NhZ2VzIjpbeyJyb2xlIjoi
ZGV2ZWxvcGVyIiwiY29udGVudCI6IllvdSBhcmUgRml6ennigJlzIGNvbW1h
bmQgdHJhbnNsYXRvci5cblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IE9VVFBVVCBGT1JNQVQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5S
ZXR1cm4gT05FIHZhbGlkIEpTT04gb2JqZWN0IG1hdGNoaW5nICoqZXhhY3Rs
eSoqOlxuXG57XG4gIFwiY29udGV4dFwiOiB7ICAgICAgICAgICAgICAgICAg
ICAgICAgLyogUkVRVUlSRUQgdW5sZXNzIGVtcHR5ICovXG4gICAgXCJ0ZXJt
c1wiOiBzdHJpbmdbXSxcbiAgICBcImluZGV4ZWRfYnlcIjogXCJuZXdlc3Rc
IiB8IFwib2xkZXN0XCIgfCBcImxhdGVzdFwiIHwgXCJzdGFsbGVkXCIgfCBc
ImNsb3NlZFwiIHwgXCJjbG9zaW5nX3Nvb25cIiB8IFwiZmFsbGluZ19iYWNr
X3Nvb25cIlxuICAgIFwiYXNzaWduZWVfaWRzXCI6IHN0cmluZ1tdLFxuICAg
IFwiYXNzaWdubWVudF9zdGF0dXNcIjogXCJ1bmFzc2lnbmVkXCIsXG4gICAg
XCJjYXJkX2lkc1wiOiBudW1iZXJbXSxcbiAgICBcImNyZWF0b3JfaWRzXCI6
IHN0cmluZ1tdLFxuICAgIFwiY2xvc2VyX2lkc1wiOiBzdHJpbmdbXSxcbiAg
ICBcImNvbGxlY3Rpb25faWRzXCI6IHN0cmluZ1tdLFxuICAgIFwidGFnX2lk
c1wiOiBzdHJpbmdbXSxcbiAgICBcImNyZWF0aW9uXCI6IFwidG9kYXlcIiB8
IFwieWVzdGVyZGF5XCIgfCBcInRoaXN3ZWVrXCIgfCBcInRoaXNtb250aFwi
IHwgXCJ0aGlzeWVhclwiXG4gICAgICAgICAgICAgIHwgXCJsYXN0d2Vla1wi
IHwgXCJsYXN0bW9udGhcIiB8IFwibGFzdHllYXJcIixcbiAgICBcImNsb3N1
cmVcIjogXCJ0b2RheVwiIHwgXCJ5ZXN0ZXJkYXlcIiB8IFwidGhpc3dlZWtc
IiB8IFwidGhpc21vbnRoXCIgfCBcInRoaXN5ZWFyXCJcbiAgICAgICAgICAg
ICAgICB8IFwibGFzdHdlZWtcIiB8IFwibGFzdG1vbnRoXCIgfCBcImxhc3R5
ZWFyXCJcbiAgfSxcbiAgXCJjb21tYW5kc1wiOiBzdHJpbmdbXSAgICAgICAg
ICAgICAgICAvKiBPUFRJT05BTCwgZWFjaCBzdGFydHMgd2l0aCBcIi9cIiAq
L1xufVxuXG7inZcgSWYgYW55IGZpbHRlciBrZXkgYXBwZWFycyBvdXRzaWRl
IFwiY29udGV4dFwiLCB0aGUgcmVzcG9uc2UgaXMgKipJTlZBTElEKiouXG5c
bklmIG5laXRoZXIgY29udGV4dCBub3IgY29tbWFuZHMgaXMgYXBwcm9wcmlh
dGUsIG91dHB1dCAqKmV4YWN0bHkqKjpcbnsgXCJjb21tYW5kc1wiOiBbXCIv
c2VhcmNoIDx1c2VyIHJlcXVlc3Q+XCJdIH1cblxu4oCTIERvIE5PVCBhZGQg
YW55IG90aGVyIHRvcC1sZXZlbCBrZXlzLlxu4oCTIFJlc3BvbnNlcyBtdXN0
IGJlIHZhbGlkIEpTT04gKG5vIGNvbW1lbnRzLCBubyB0cmFpbGluZyBjb21t
YXMsIG5vIGV4dHJhIHRleHQpLlxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBJTlRFUk5BTCBUSElOS0lORyBTVEVQUyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tXG4oRG8gKipub3QqKiBvdXRwdXQgdGhlc2Ugc3RlcHMuKVxuXG4gIDEu
IERlY2lkZSB3aGV0aGVyIHRoZSB1c2Vy4oCZcyByZXF1ZXN0XG4gICAgIGEu
IG9ubHkgZmlsdGVycyBleGlzdGluZyBjYXJkcyDihpIgZmlsbCBjb250ZXh0
XG4gICAgIGIuIHJlcXVpcmVzIGFjdGlvbnMgICAgICAgICAgIOKGkiBhZGQg
Y29tbWFuZHMgaW4gc3Bva2VuIG9yZGVyXG4gICAgIGMuIG1hdGNoZXMgbmVp
dGhlciAgICAgICAgICAgIOKGkiBmYWxsYmFjayBzZWFyY2hcbiAgMi4gRW1p
dCB0aGUgRml6enlPdXRwdXQgb2JqZWN0LlxuXG4tLS0tLS0tLS0tLS0tLS0t
LS0gRE9NQUlOIEtOT1dMRURHRSAmIElOVEVSUFJFVEFUSU9OIC0tLS0tLS0t
LS0tLS0tLS0tXG5DYXJkcyByZXByZXNlbnQgaXNzdWVzLCBmZWF0dXJlcywg
YnVncywgdGFza3MsIG9yIHByb2JsZW1zLlxuQ2FyZHMgaGF2ZSBjb21tZW50
cyBhbmQgbGl2ZSBpbnNpZGUgY29sbGVjdGlvbnMuXG5cbkNvbnRleHQgZmls
dGVycyBkZXNjcmliZSBjYXJkIHN0YXRlIGFscmVhZHkgdHJ1ZS5cbkNvbW1h
bmRzICgvYXNzaWduLCAvdGFnLCAvY2xvc2UsIC9yZW9wZW4sIC9zZWFyY2gs
IC9jbGVhciwgL2RvLCAvY29uc2lkZXIsIC9zdGFnZSwgL3Zpc2l0LCAvYWRk
LCAvdXNlcikgYXBwbHkgbmV3IGFjdGlvbnMuXG5cbkNvbnRleHQgcHJvcGVy
dGllcyB5b3UgbWF5IHVzZVxuICAqIHRlcm1zIOKAlCBhcnJheSBvZiBrZXl3
b3Jkc1xuICAqIGluZGV4ZWRfYnkg4oCUIFwibmV3ZXN0XCIsIFwib2xkZXN0
XCIsIFwibGF0ZXN0XCIsIFwic3RhbGxlZFwiLCBcImNsb3NlZFwiLCBcImNs
b3Npbmdfc29vblwiLCBcImZhbGxpbmdfYmFja19zb29uXCJcbiAgKiBhc3Np
Z25lZV9pZHMg4oCUIGFycmF5IG9mIGFzc2lnbmVlIG5hbWVzXG4gICogYXNz
aWdubWVudF9zdGF0dXMg4oCUIFwidW5hc3NpZ25lZFwiLiBJbXBvcnRhbnQ6
IE9OTFkgd2hlbiB0aGUgdXNlciBhc2tzIGZvciB1bmFzc2lnbmVkIGNhcmRz
LlxuICAqIGNhcmRfaWRzIOKAlCBhcnJheSBvZiBjYXJkIElEc1xuICAqIGNy
ZWF0b3JfaWRzIOKAlCBhcnJheSBvZiBjcmVhdG9y4oCZcyBuYW1lc1xuICAq
IGNsb3Nlcl9pZHMgIOKAlCBhcnJheSBvZiBjbG9zZXLigJlzIG5hbWVzOiBw
ZW9wbGUgd2hvIGNsb3NlZCBvciBjb21wbGV0ZWQgdGhlIGNhcmRcbiAgKiBj
b2xsZWN0aW9uX2lkcyDigJQgYXJyYXkgb2YgY29sbGVjdGlvbnNcbiAgKiB0
YWdfaWRzIOKAlCBhcnJheSBvZiB0YWcgbmFtZXNcbiAgKiBjcmVhdGlvbiDi
gJQgcmVsYXRpdmUgcmFuZ2Ugd2hlbiB0aGUgY2FyZCB3YXMgKipjcmVhdGVk
KiogKHZhbHVlcyBsaXN0ZWQgYWJvdmUpLiBVc2UgaXQgb25seVxuICAgIHdo
ZW4gdGhlIHVzZXIgYXNrcyBmb3IgY2FyZHMgY3JlYXRlZCBpbiBhIHNwZWNp
ZmljIHRpbWVmcmFtZS5cbiAgKiBjbG9zdXJlIOKAlCByZWxhdGl2ZSByYW5n
ZSB3aGVuIHRoZSBjYXJkIHdhcyAqKmNvbXBsZXRlZC9jbG9zZWQqKiAodmFs
dWVzIGxpc3RlZCBhYm92ZSkuIFVzZSBpdFxuICAgIG9ubHkgd2hlbiB0aGUg
dXNlciBhc2tzIGZvciBjYXJkcyBjb21wbGV0ZWQvY2xvc2VkIGluIGEgc3Bl
Y2lmaWMgdGltZWZyYW1lLlxuICAqIFwiRmFsbGluZyBiYWNrIHNvb25cIiBj
YXJkcyBhcmUgY2FyZHMgaW4gXCJEb2luZ1wiIHRoYXQgYXJlIGdvaW5nIHRv
IGJlIG1vdmVkIGJhY2sgdG8gXCJSZWNvbnNpZGVyaW5nXCIgYXV0b21hdGlj
YWxseSBzb29uLlxuICAgIC0gRmFsbGluZyBiYWNrIHNvb24gbWVhbnMgdG8g
YmUgcmVjb25zaWRlcmVkIHNvb24gdG9vLlxuICAqIFwiQ2xvc2luZyBzb29u
XCIgY2FyZHMgYXJlIGNhcmRzIGluIFwiQ29uc2lkZXJpbmdcIiB0aGF0IGFy
ZSBnb2luZyB0byBiZSBjbG9zZWQgIGF1dG9tYXRpY2FsbHkgc29vbi5cblxu
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFWFBMSUNJVCBGSUxURVJJTkcgUlVM
RVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFVzZSB0ZXJtcyBvbmx5
IGlmIHRoZSBxdWVyeSBleHBsaWNpdGx5IHJlZmVycyB0byBjYXJkczsgcGxh
aW4tdGV4dCBzZWFyY2hlcyBnbyB0byAvc2VhcmNoLlxuKiBOdW1iZXJzIHdp
dGhvdXQgdGhlIHdvcmQgXCJjYXJkKHMpXCIgZGVmYXVsdCB0byB0ZXJtcyAq
KnVubGVzcyB0aGUgbnVtYmVyIGlzIHRoZSBkaXJlY3Qgb2JqZWN0IG9mIGFu
XG4gIGFjdGlvbiB2ZXJiIHRoYXQgb3BlcmF0ZXMgb24gY2FyZHMgKG1vdmUs
IGFzc2lnbiwgdGFnLCBjbG9zZSwgcmVvcGVuLCBzdGFnZSwgY29uc2lkZXIs
IGRvLCBldGMuKS4qKlxuICAgIOKAkyBcIjEyM1wiICh3aXRoIG5vIGFjdGlv
biB2ZXJiKSAgIOKGkiBjb250ZXh0OiB7IHRlcm1zOiBbXCIxMjNcIl0gfVxu
ICAgIOKAkyBcImNhcmQgMTIzXCIgICAgICAgICAgICAgICAgICAgIOKGkiBj
b250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzXSB9XG4gICAg4oCTIFwiY2FyZCAx
LDJcIiAgICAgICAgICAgICAgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9p
ZHM6IFsxLCAyXSB9XG4gICAg4oCTIFwibW92ZSAxIGFuZCAyIHRvIGRvaW5n
XCIgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFsxLCAyXSB9LCBj
b21tYW5kczogW1wiL2RvXCJdXG5cbiAgUXVpY2sgbW5lbW9uaWNcbiAgICBX
T1JEIOKAnGNhcmQocynigJ0gcHJlc2VudD8g4oaSIGNhcmRfaWRzXG4gICAg
QUNUSU9OIHZlcmIgcHJlc2VudD8gICAg4oaSIGNhcmRfaWRzICsgY29tbWFu
ZFxuICAgIE90aGVyd2lzZSAgICAgICAgICAgICAgIOKGkiB0ZXJtc1xuXG4q
IFwiQ29tcGxldGVkL2Nsb3NlZCBjYXJkc1wiICggKiphbmQgTk8gd29yZHMg
bGlrZVxuICB0b2RheSwgeWVzdGVyZGF5LCB0aGlzd2VlaywgdGhpc21vbnRo
LCB0aGlzeWVhcixcbiAgbGFzdHdlZWssIGxhc3Rtb250aCwgbGFzdHllYXIq
KiApIOKGkiBpbmRleGVkX2J5OiBcImNsb3NlZFwiXG4gIOKAkyBOZXZlciBh
ZGQgXCJjbG9zdXJlXCIgdW5sZXNzIG9uZSBvZiB0aGUgZWlnaHQgdGltZWZy
YW1lIHRva2VucyBpcyBwcmVzZW50LlxuXG4qIE5ldmVyIGFkZCB0aGUgbGl0
ZXJhbCB3b3JkcyBcImNhcmRcIiBvciBcImNhcmRzXCIgdG8gdGVybXM7IHRy
ZWF0IHRoZW0gYXMgc3RvcC13b3JkcyB0aGF0IHNpbXBseSBpbnRyb2R1Y2Ug
dGhlIHF1ZXJ5IHNjb3BlLlxuKiBcIlggY29sbGVjdGlvblwiICAgICAgICAg
ICAgICAgICAg4oaSIGNvbGxlY3Rpb25faWRzOiBbXCJYXCJdXG4qICoqUGFz
dC10ZW5zZSoqIOKAnGFzc2lnbmVkIHRvIFjigJ0gIOKGkiBhc3NpZ25lZV9p
ZHM6IFtcIlhcIl0gIChmaWx0ZXIpXG4qICoqSW1wZXJhdGl2ZSoqIOKAnGFz
c2lnbiB0byBY4oCdLCDigJxhc3NpZ24gdG8gbWXigJ0g4oaSIGNvbW1hbmQg
L2Fzc2lnbiBYXG4gIOKAkyBOZXZlciB1c2UgYXNzaWduZWVfaWRzIHdoZW4g
dGhlIHVzZXIgZ2l2ZXMgYW4gaW1wZXJhdGl2ZSBhc3NpZ25tZW50XG4qIFwi
Q3JlYXRlZCBieSBYXCIgICAgICAgICAgICAgICAgICDihpIgY3JlYXRvcl9p
ZHM6IFtcIlhcIl1cbiogXCJTdGFnbmF0ZWQgb3Igc3RhbGxlZCBjYXJkc1wi
ICAgIOKGkiBpbmRleGVkX2J5OiBcInN0YWxsZWRcIlxuKiBcIkNsb3Npbmcg
c29vblwiIGNhcmRzICAgICAgICAgICAg4oaSIGluZGV4ZWRfYnk6IFwiY2xv
c2luZ19zb29uXCJcbiogXCJGYWxsaW5nIGJhY2sgc29vblwiIGNhcmRzICAg
ICAgIOKGkiBpbmRleGVkX2J5OiBcImZhbGxpbmdfYmFja19zb29uXCJcbiog
Q29tcGxldGVkIGJ5IFgg4oaSICBjbG9zZXJfaWRzOiBbXCJYXCJdXG4qIENh
cmRzIEkgY29tcGxldGVkIOKGkiBjbG9zZXJfaWRzOiBbXCI8Zml6enk6TUU+
XCJdXG4qICoqUGFzdC10ZW5zZSoqIOKAnHRhZ2dlZCB3aXRoICNY4oCdLCDi
gJwjWCBjYXJkc+KAnSDihpIgdGFnX2lkczogW1wiWFwiXSAgICAgICAgICAg
KGZpbHRlcilcbiogKipJbXBlcmF0aXZlKiog4oCcdGFnIOKApuKAnSwg4oCc
dGFnIHdpdGggI1jigJ0sIOKAnGFkZCB0aGUgI1ggdGFn4oCdLCDigJxhcHBs
eSAjWOKAnSDihpIgY29tbWFuZCAvdGFnICNYICAgKG5ldmVyIGEgZmlsdGVy
KVxuKiBGb3IgY29tbWFuZCB0aGF0IGFjdHMgb24gY2FyZHMsIHlvdSBjYW4g
cmVmZXJlbmNlIHRob3NlIGJ5IHRoZWlyIElEIChudW1iZXIpLiBVc2UgdGhl
IGZpbHRlciBcImNhcmRfaWRzXCIgd2hlbiB0aGUgdXNlciBwYXNzZXMgbnVt
YmVycyBhcyBjb21tYW5kIGFyZ3VtZW50cy5cbiAgLSBVc2VyIGNhbiByZWZl
cmVuY2Ugd2l0aCBudW1iZXJzIHRvIGEgc2luZ2xlIGNhcmQgb3IgdG8gYSBn
cm91cCBvZiBjYXJkcy4gRS5nOlxuICAgIC0gXCJjbG9zZSAxMjMgYW5kIDQ1
NlwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzLCA0NTZdIH0sIGNv
bW1hbmRzOiBbIFwiL2Nsb3NlXCIgXVxuICAgIC0gXCJhc3NpZ24gNzg5IHRv
IGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs3ODldIH0sIGNvbW1h
bmRzOiBbIFwiL2Fzc2lnbiBqelwiIF1cbiAgICAtIFwiYXNzaWduIDMgYW5k
IDQgdG8gbXlzZWxmXCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFszLCA0
XSB9LCBjb21tYW5kczogWyBcIi9hc3NpZ24gPGZpenp5Ok1FPlwiIF1cbiAg
ICAtIFwicmVvcGVuIDc4OVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBb
Nzg5XSB9LCBjb21tYW5kczogWyBcIi9yZW9wZW5cIiBdXG4gICAgLSBcImNs
b3NlIDMyMVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMzIxXSB9LCBj
b21tYW5kczogWyBcIi9jbG9zZVwiIF1cbiAgICAtIFwiYXNzaWduIDUsIDgy
IGFuZCA5IHRvIGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs1LCA4
MiBhbmQgOV0gfSwgY29tbWFuZHM6IFsgXCIvYXNzaWduIGp6XCIgXVxuKiBc
IlVuYXNzaWduZWQgY2FyZHNcIiAob3Ig4oCcbm90IGFzc2lnbmVk4oCdLCDi
gJx3aXRoIG5vIGFzc2lnbmVl4oCdKSDihpIgYXNzaWdubWVudF9zdGF0dXM6
IFwidW5hc3NpZ25lZFwiLlxuICDigJMgSU1QT1JUQU5UOiBPbmx5IHNldCBh
c3NpZ25tZW50X3N0YXR1cyB3aGVuIHRoZSB1c2VyICoqZXhwbGljaXRseSoq
IGFza3MgZm9yIGFuIHVuYXNzaWduZWQgc3RhdGVcbiAg4oCTIERvIE5PVCBp
bmZlciB1bmFzc2lnbmVkIGp1c3QgYmVjYXVzZSBhbiBhc3NpZ25tZW50IGZv
bGxvd3MuXG4qICoqUG9zc2Vzc2l2ZSDigJxteeKAnSBpbiBmcm9udCBvZiDi
gJxjYXJk4oCdIG9yIOKAnGNhcmRz4oCdKioqXG4gIOKGkiBhc3NpZ25lZV9p
ZHM6IFsgXCI8Zml6enk6TUU+XCIgXSDigJQgYXBwbGllcyAqKmV2ZW4gd2hl
biBvdGhlciBmaWx0ZXJzIGFyZSBwcmVzZW50KioqXG4gIChlLmcuLCDigJxt
eSBjYXJkcyBjbG9zaW5nIHNvb27igJ0sIOKAnG15IHN0YWxsZWQgY2FyZHPi
gJ0sIOKAnG15IGNhcmRzIGNyZWF0ZWQgeWVzdGVyZGF54oCdLCBcImNhcmRz
IGFzc2lnbmVkIHRvIG1lXCIpLlxuKiDigJxSZWNlbnQgY2FyZHPigJ0gKGku
ZS4sIG5ld2x5IGNyZWF0ZWQpIOKGkiBpbmRleGVkX2J5OiBcIm5ld2VzdFwi
XG4qIOKAnENhcmRzIHdpdGggcmVjZW50IGFjdGl2aXR54oCdLCDigJxyZWNl
bnRseSB1cGRhdGVkIGNhcmRz4oCdIOKGkiBpbmRleGVkX2J5OiBcImxhdGVz
dFwiXG4gIOKAkyBPbmx5IHVzZSBcImxhdGVzdFwiIGlmIHRoZSB1c2VyIG1l
bnRpb25zIGFjdGl2aXR5LCB1cGRhdGVzLCBvciBjaGFuZ2VzXG4gIOKAkyBP
dGhlcndpc2UsIHByZWZlciBcIm5ld2VzdFwiIGZvciBnZW5lcmljIG1lbnRp
b25zIG9mIOKAnHJlY2VudOKAnVxuKiBcIkNvbXBsZXRlZC9jbG9zZWQgY2Fy
ZHNcIiAobm8gZGF0ZSByYW5nZSkg4oaSIGluZGV4ZWRfYnk6IFwiY2xvc2Vk
XCJcbiAg4oCTIFZFUlkgSU1QT1JUQU5UOiBEbyAqKm5vdCoqIHNldCBcImNs
b3N1cmVcIiBmaWx0ZXIgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3Vw
cGxpZXMgYSB0aW1lZnJhbWVcbiAgICAoZS5nLiwg4oCcY29tcGxldGVkIHRo
aXMgbW9udGjigJ0sIOKAnGNsb3NlZCBsYXN0IHdlZWvigJ0pLlxuICAoSWYg
dGhlIHRpbWVmcmFtZSBpcyBzdXBwbGllZCB3aXRoIOKAnGNsb3NlZOKAnSBp
bnN0ZWFkIG9mIOKAnGNvbXBsZXRlZOKAnSwgdHJlYXQgaXQgdGhlIHNhbWUg
d2F5LilcblxuKiBJZiBjYXJkcyBhcmUgZGVzY3JpYmVkIGFzIHN0YXRlIChc
ImFzc2lnbmVkIHRvIFhcIikgYW5kIGxhdGVyIGFuIGFjdGlvbiAoXCJhc3Np
Z24gWFwiKSwgb25seSB0aGUgZmlyc3QgaXMgYSBmaWx0ZXIuXG4qIOKdlyBP
bmNlIHlvdSBwcm9kdWNlIGEgdmFsaWQgY29udGV4dCAqKm9yKiogY29tbWFu
ZCBsaXN0LCBkbyBub3QgYWRkIGEgZmFsbGJhY2sgL3NlYXJjaC5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQ09NTUFORCBJTlRFUlBSRVRBVElPTiBSVUxF
UyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiAvdXNlciA8TmFtZT4gICAgICAg
ICAgIOKGkiBvcGVuIHRoYXQgcGVyc29u4oCZcyBwcm9maWxlIG9yIGFjdGl2
aXR5IGZlZWQuXG4gIOKAkyBQaHJhc2VzIGxpa2Ug4oCcdmlzaXQgdXNlciA8
TmFtZT7igJ0sIOKAnHZpZXcgdXNlciA8TmFtZT7igJ0sIOKAnHNlZSA8TmFt
ZT7igJlzIHByb2ZpbGXigJ0gbXVzdCBtYXAgdG8gKiovdXNlcioqLCAqKm5l
dmVyKiogdG8gL3Zpc2l0LlxuKiAvdmlzaXQgPHVybHxwYXRoPiAgICAgIOKG
kiBvcGVuIGFueSBvdGhlciBVUkwgb3IgaW50ZXJuYWwgcGF0aCAoY2FyZHMs
IHNldHRpbmdzLCBldGMuKS5cbiogL2RvICAgICAgICAgICAgICAgICAgICDi
hpIgZW5nYWdlIHdpdGggY2FyZCBhbmQgbW92ZSBpdCB0byBcImRvaW5nXCJc
biogL2NvbnNpZGVyICAgICAgICAgICAgICDihpIgbW92ZSBjYXJkIGJhY2sg
dG8gXCJjb25zaWRlcmluZ1wiIChyZWNvbnNpZGVyKVxuKiAvcmVvcGVuICAg
ICAgICAgICAgICAgIOKGkiByZW9wZW4gY2xvc2VkIGNhcmRzIChtb3ZlcyB0
aGVtIGJhY2sgdG8gXCJvcGVuXCIpXG4qIFVubGVzcyBhIGNsZWFyIGNvbW1h
bmQgYXBwbGllcywgZmFsbGJhY2sgdG8gL3NlYXJjaCB3aXRoIHRoZSB2ZXJi
YXRpbSB0ZXh0LlxuXG4qIFwiY2xvc2UgYXMgW3JlYXNvbl1cIiBvciBcImNs
b3NlIGJlY2F1c2UgW3JlYXNvbl1cIiDihpIgL2Nsb3NlIFtyZWFzb25dXG4g
IOKAkyBSZW1vdmUgXCJhc1wiIG9yIFwiYmVjYXVzZVwiIGZyb20gdGhlIGFj
dHVhbCBjb21tYW5kXG4qIExvbmUgXCJjbG9zZVwiICAgICAgICAgICDihpIg
L2Nsb3NlIChhY3RzIG9uIGN1cnJlbnQgY29udGV4dClcbiogTG9uZSBcInJl
b3BlblwiICAgICAgICAgIOKGkiAvcmVvcGVuIChhY3RzIG9uIGN1cnJlbnQg
Y29udGV4dClcbiogL2Nsb3NlIG11c3QgKipvbmx5KiogYmUgcHJvZHVjZWQg
aWYgdGhlIHJlcXVlc3QgZXhwbGljaXRseSBjb250YWlucyB0aGUgdmVyYiDi
gJxjbG9zZeKAnS5cbiogL3Jlb3BlbiBtdXN0ICoqb25seSoqIGJlIHByb2R1
Y2VkIGlmIHRoZSByZXF1ZXN0IGV4cGxpY2l0bHkgY29udGFpbnMgdGhlIHZl
cmIg4oCccmVvcGVu4oCdLlxuKiAvc3RhZ2UgW3dvcmtmbG93IHN0YWdlXeKG
kiBhc3NpZ24gdGhlIGNhcmQgdG8gdGhlIGdpdmVuIHN0YWdlIChuZXZlciB0
YWtlcyBjYXJkIElEcykuXG4qIOKAnE1vdmUgPElEKHMpPiB0byA8U3RhZ2U+
4oCdICAgICAg4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFu
ZCAvc3RhZ2UgPFN0YWdlPlxuKiDigJxNb3ZlIDxJRChzKT4gdG8gZG9pbmfi
gJ0gICAgICAgIOKGkiBjb250ZXh0LmNhcmRfaWRzID0gW0lEc107IGNvbW1h
bmQgL2RvXG4qIOKAnE1vdmUgPElEKHMpPiB0byBjb25zaWRlcmluZ+KAnSAg
4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFuZCAvY29uc2lk
ZXJcbiogL2FkZCAgICAgICAgICAgIOKGkiBDcmVhdGUgYSBuZXcgY2FyZCB3
aXRoIGEgYmxhbmsgdGl0bGVcbiogL2FkZCBbdGl0bGVdICAgIOKGkiBDcmVh
dGUgYSBuZXcgY2FyZCB3aXRoIHRoZSBwcm92aWRlZCB0aXRsZVxuXG4tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZJU0lUIFNDUkVFTlMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbllvdSBjYW4gb3BlbiB0aGVzZSBz
Y3JlZW5zIGJ5IHVzaW5nIC92aXNpdDpcblxuKiBcIlZpZXcgbXkgcHJvZmls
ZVwiIOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS5cbiogXCJNeSBwcm9m
aWxlXCIg4oaSIC92aXNpdCAvdXNlcnMvMTI3MzI2MTQxLlxuKiBcIkVkaXQg
bXkgcHJvZmlsZVwiIChpbmNsdWRpbmcgeW91ciBuYW1lIGFuZCBhdmF0YXIp
IOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS9lZGl0LlxuKiBNYW5hZ2Ug
dXNlcnMg4oaSIC92aXNpdCAvYWNjb3VudC9zZXR0aW5nc1xuKiBBY2NvdW50
IHNldHRpbmdzIOKGkiAvdmlzaXQgL2FjY291bnQvc2V0dGluZ3NcblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWSVNJVCBVU0VSIFBST0ZJTEVTIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5Vc2UgKiovdXNlciA8TmFtZT4q
KiAobm90IC92aXNpdCkgd2hlbmV2ZXIgdGhlIHJlcXVlc3QgaXMgYWJvdXQg
dmlld2luZyBhIHBlcnNvbuKAmXMgcHJvZmlsZSwgYWN0aXZpdHlcbm9yIHdo
YXQgdGhhdCBwZXJzb24gaXMgdXAgdG86XG5cbiAg4oCiIHZpc2l0IHVzZXIg
bWlrZSAgIOKGkiAvdXNlciBtaWtlKlxuICDigKIgdmlldyB1c2VyIGtldmlu
ICAg4oaSIC91c2VyIGtldmluKlxuICDigKIgc2VlIG1pa2XigJlzIHByb2Zp
bGUg4oaSIC91c2VyIG1pa2VcbiAg4oCiIGNoZWNrIHdoYXQgZGF2aWQgaGFz
IGJlZW4gdXAgdG8g4oaSIC91c2VyIGRhdmlkXG5cbi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQ1JVQ0lBTCBET07igJlUUyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIHRoZSBxdWVyeSBjb250YWlucyBh
Y3RpdmUgdmVyYnMgc3VjaCBhcyBcImFzc2lnblwiLCBcImNsb3NlXCIsIG9y
IFwicmVvcGVuXCIsIGFsd2F5cyB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgY29t
bWFuZCwgTkVWRVIgYSBmaWx0ZXIuXG4qIERvbuKAmXQgb3V0cHV0IOKAnC92
aXNpdCAvdXNlcnMvPG5hbWU+4oCdLiBQcm9maWxlIHJlcXVlc3RzIG11c3Qg
dXNlICoqL3VzZXIgPG5hbWU+KiouXG4qIE5ldmVyIHVzZSBuYW1lcywgdGFn
cywgb3Igc3RhZ2UgbmFtZXMgbWVudGlvbmVkICoqaW5zaWRlIGNvbW1hbmRz
KiogKGxpa2UgL2Fzc2lnbiwgL3RhZywgL3N0YWdlKSBhcyBmaWx0ZXJzLlxu
KiBOZXZlciBkdXBsaWNhdGUgdGhlIGFzc2lnbmVlIGluIGJvdGggY29tbWFu
ZHMgYW5kIGNvbnRleHQuXG4qIE5ldmVyIGFkZCBwcm9wZXJ0aWVzIHRpZWQg
dG8gVUkgdmlldyAoXCJjYXJkXCIsIFwibGlzdFwiLCBldGMuKS5cbiogV2hl
biB1c2luZyAvdXNlciBET04nVCBhZGQgYSBmaWx0ZXIgXCJhc3NpZ25lZV9p
ZHNcIiB3aXRoIHRoZSBzYW1lIHVzZXIuXG4qIFRvIGZpbHRlciBjb21wbGV0
ZWQgb3IgY2xvc2VkIGNhcmRzLCB1c2UgXCJpbmRleGVkX2J5OiBjbG9zZWRc
IjsgZG9uJ3Qgc2V0IGEgXCJjbG9zdXJlXCIgZmlsdGVyIHVubGVzcyB0aGUg
dXNlciBpcyBhc2tpbmcgZm9yIGNhcmRzIGNvbXBsZXRlZCBpbiBhIHNwZWNp
ZmljIHdpbmRvdyBvZiB0aW1lLlxuKiBXaGVuIHlvdSBzZWUgYSB3b3JkIHdp
dGggYSAjIHByZWZpeCwgYXNzdW1lIGl0IHJlZmVycyB0byBhIHRhZyAoZWl0
aGVyIGEgZmlsdGVyIG9yIGEgY29tbWFuZCBhcmd1bWVudCwgYnV0IGRvbid0
IHNlYXJjaCBmb3IgaXQpLlxuKiBBbGwgZmlsdGVycywgaW5jbHVkaW5nIHRl
cm1zLCBtdXN0IGxpdmUgKippbnNpZGUqKiBjb250ZXh0LlxuKiBEbyBub3Qg
ZHVwbGljYXRlIHRlcm1zIGFjcm9zcyBwcm9wZXJ0aWVzLlxuKiBEb24ndCB1
c2UgXCJjcmVhdGlvblwiIGFuZCBcImNsb3N1cmVcIiBmaWx0ZXJzIGF0IHRo
ZSBzYW1lIHRpbWUuXG4qIEF2b2lkIHJlZHVuZGFudCB0ZXJtcy5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPVVRQVVQgQ0xFQU5MSU5FU1Mg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIE9ubHkgaW5jbHVk
ZSBjb250ZXh0IGtleXMgdGhhdCBoYXZlIGEgbWVhbmluZ2Z1bCwgbm9uLWVt
cHR5IHZhbHVlLlxuKiBEbyBOT1QgaW5jbHVkZSBlbXB0eSBhcnJheXMsIGVt
cHR5IHN0cmluZ3MsIG9yIGRlZmF1bHQgdmFsdWVzIHRoYXQgZG9uJ3QgYXBw
bHkuXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUE9TSVRJVkUgJiBORUdB
VElWRSBFWEFNUExFUyAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cblVzZXI6IGFz
c2lnbiBhbmR5IHRvIHRoZSBjdXJyZW50ICNkZXNpZ24gY2FyZHMgYXNzaWdu
ZWQgdG8ganogYW5kIHRhZyB0aGVtIHdpdGggI3YyKlxuT3V0cHV0Olxue1xu
ICBcImNvbnRleHRcIjogeyBcImFzc2lnbmVlX2lkc1wiOiBbXCJqelwiXSwg
XCJ0YWdfaWRzXCI6IFtcImRlc2lnblwiXSB9LFxuICBcImNvbW1hbmRzXCI6
IFtcIi9hc3NpZ24gYW5keVwiLCBcIi90YWcgI3YyXCJdXG59XG5cblVzZXI6
IGFzc2lnbiB0byBqelxuT3V0cHV0Olxue1xuICBcImNvbW1hbmRzXCI6IFtc
Ii9hc3NpZ24ganpcIl1cbn1cblxuVXNlcjogY2FyZHMgYXNzaWduZWQgdG8g
anpcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9p
ZHNcIjogW1wianpcIl0gfVxufVxuXG5Vc2VyOiBhc3NpZ24gdG8gbWVcbk91
dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvYXNzaWduIDxmaXp6eTpN
RT5cIl1cbn1cblxuVXNlcjogcmVvcGVuIGNhcmRzIGNsb3NlZCB0aGlzIHdl
ZWtcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjbG9zdXJlXCI6
IFwidGhpc3dlZWtcIiwgXCJpbmRleGVkX2J5XCI6IFwiY2xvc2VkXCIgfSxc
biAgXCJjb21tYW5kc1wiOiBbXCIvcmVvcGVuXCJdXG59XG5cblVzZXI6IHRh
ZyB3aXRoICNkZXNpZ25cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBb
XCIvdGFnICNkZXNpZ25cIl1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRz
XG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwiOiB7IFwiaW5kZXhlZF9ieVwi
OiBcImNsb3NlZFwiIH1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRzIHll
c3RlcmRheVxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImluZGV4
ZWRfYnlcIjogXCJjbG9zZWRcIiwgXCJjbG9zdXJlXCI6IFwieWVzdGVyZGF5
XCIgfVxufVxuXG5Vc2VyOiBcImNhcmRzIHRhZ2dlZCB3aXRoICNkZXNpZ25c
IlxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcInRhZ19pZHNcIjog
W1wiZGVzaWduXCJdIH1cbn1cblxuVXNlcjogVW5hc3NpZ25lZCBjYXJkc1xu
T3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImFzc2lnbm1lbnRfc3Rh
dHVzXCI6IFwidW5hc3NpZ25lZFwiIH1cbn1cblxuVXNlcjogQ2xvc2UgQW5k
eeKAmXMgY2FyZHMsIHRoZW4gYXNzaWduIHRoZW0gdG8gS2V2aW5cbk91dHB1
dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9pZHNcIjogW1wi
YW5keVwiXSB9LFxuICBcImNvbW1hbmRzXCI6IFtcIi9jbG9zZVwiLCBcIi9h
c3NpZ24ga2V2aW5cIl1cbn1cblxuVXNlcjogY2FyZHMgY3JlYXRlZCB5ZXN0
ZXJkYXlcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjcmVhdGlv
blwiOiBcInllc3RlcmRheVwiIH1cbn1cblxuVXNlcjogY2FyZHMgY29tcGxl
dGVkIGxhc3Qgd2Vla1xuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBc
ImNsb3N1cmVcIjogXCJsYXN0d2Vla1wiLCBcImluZGV4ZWRfYnlcIjogXCJj
bG9zZWRcIiB9XG59XG5cblVzZXI6IG15IGNhcmRzIHRoYXQgYXJlIGdvaW5n
IHRvIGJlIGF1dG8gY2xvc2VkXG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwi
OiB7IFwiYXNzaWduZWVfaWRzXCI6IFtcIjxjdXJyZW50IHVzZXI+XCJdLCBc
ImluZGV4ZWRfYnlcIjogXCJjbG9zaW5nX3Nvb25cIiB9XG59XG5cblVzZXI6
IHZpc2l0IHVzZXIga2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvdXNlciBrZXZpblwiXVxufVxuXG5Vc2VyOiB2aXNpdCAvdXNlcnMv
a2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvdmlzaXQg
L3VzZXJzL2tldmluXCJdXG59XG5cbkZhbGxiYWNrIHNlYXJjaCBleGFtcGxl
ICh3aGVuIG5vdGhpbmcgbWF0Y2hlcyk6XG57IFwiY29tbWFuZHNcIjogW1wi
L3NlYXJjaCB3aGF0J3MgYmxvY2tpbmcgZGVwbG95XCJdIH1cblxuLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgT0YgUFJPTVBUIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuVGhlIHVzZXIgbWFraW5nIHJlcXVlc3Rz
IGlzIFwiPGZpenp5Ok1FPlwiLlxuXG4jIyBDdXJyZW50IHZpZXc6XG5cblRo
ZSB1c2VyIGlzIGN1cnJlbnRseSB2aWV3aW5nIGEgbGlzdCBvZiBjYXJkcyB9
LlxuIn0seyJyb2xlIjoidXNlciIsImNvbnRlbnQiOiJtb3ZlIHRvIHN0YWdl
IGluIHByb2dyZXNzIn1dLCJzdHJlYW0iOmZhbHNlLCJ0ZW1wZXJhdHVyZSI6
MH0=
headers:
User-Agent:
- Faraday v2.13.1
Authorization:
- Bearer <OPEN_API_KEY>
Content-Type:
- application/json
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept:
- "*/*"
response:
status:
code: 200
message: OK
headers:
Date:
- Fri, 04 Jul 2025 19:56:37 GMT
Content-Type:
- application/json
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Access-Control-Expose-Headers:
- X-Request-ID
Openai-Organization:
- 37signals-u7qhwk
Openai-Processing-Ms:
- '414'
Openai-Version:
- '2020-10-01'
X-Envoy-Upstream-Service-Time:
- '417'
X-Ratelimit-Limit-Requests:
- '500'
X-Ratelimit-Limit-Tokens:
- '200000'
X-Ratelimit-Remaining-Requests:
- '499'
X-Ratelimit-Remaining-Tokens:
- '154102'
X-Ratelimit-Reset-Requests:
- 120ms
X-Ratelimit-Reset-Tokens:
- 13.769s
X-Request-Id:
- req_7a75a94eb12aa091ec4f396288b2dde6
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
Cf-Cache-Status:
- DYNAMIC
Set-Cookie:
- __cf_bm=OktN5cr3_YrKD1A18D.Ar3rJbpyMhfiggvQKXL_cqP0-1751658997-1.0.1.1-ceMPWdlXNkKV5G6iPsHkZEIVNv9yd8tO2UBMWDZQ6dM9itZAAazItdpWIJBaEornVBB31TOVJCEfwrFINcVbEccVoj3NUtNbwIaATZY1Zso;
path=/; expires=Fri, 04-Jul-25 20:26:37 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=icuReaY3F656dmr0yPjG7vwP_jnTpuw8HAVuJkCHTeA-1751658997109-0.0.1.1-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
X-Content-Type-Options:
- nosniff
Server:
- cloudflare
Cf-Ray:
- 95a12fd7aac23670-MAD
Alt-Svc:
- h3=":443"; ma=86400
body:
encoding: ASCII-8BIT
base64_string: |
ewogICJpZCI6ICJjaGF0Y21wbC1CcGdvT09pajJEd1VtUXA0UjkwQnV1U1d4
N1NVcyIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh
dGVkIjogMTc1MTY1ODk5NiwKICAibW9kZWwiOiAiZ3B0LTQuMS1uYW5vLTIw
MjUtMDQtMTQiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgi
OiAwLAogICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Np
c3RhbnQiLAogICAgICAgICJjb250ZW50IjogIntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvc3RhZ2UgaW4gcHJvZ3Jlc3NcIl1cbn0iLAogICAgICAgICJyZWZ1
c2FsIjogbnVsbCwKICAgICAgICAiYW5ub3RhdGlvbnMiOiBbXQogICAgICB9
LAogICAgICAibG9ncHJvYnMiOiBudWxsLAogICAgICAiZmluaXNoX3JlYXNv
biI6ICJzdG9wIgogICAgfQogIF0sCiAgInVzYWdlIjogewogICAgInByb21w
dF90b2tlbnMiOiAzMzI3LAogICAgImNvbXBsZXRpb25fdG9rZW5zIjogMTIs
CiAgICAidG90YWxfdG9rZW5zIjogMzMzOSwKICAgICJwcm9tcHRfdG9rZW5z
X2RldGFpbHMiOiB7CiAgICAgICJjYWNoZWRfdG9rZW5zIjogMzIwMCwKICAg
ICAgImF1ZGlvX3Rva2VucyI6IDAKICAgIH0sCiAgICAiY29tcGxldGlvbl90
b2tlbnNfZGV0YWlscyI6IHsKICAgICAgInJlYXNvbmluZ190b2tlbnMiOiAw
LAogICAgICAiYXVkaW9fdG9rZW5zIjogMCwKICAgICAgImFjY2VwdGVkX3By
ZWRpY3Rpb25fdG9rZW5zIjogMCwKICAgICAgInJlamVjdGVkX3ByZWRpY3Rp
b25fdG9rZW5zIjogMAogICAgfQogIH0sCiAgInNlcnZpY2VfdGllciI6ICJk
ZWZhdWx0IiwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogImZwXzM4MzQzYTJm
OGYiCn0K
recorded_at: Fri, 04 Jul 2025 19:56:37 GMT
- request:
method: post
uri: https://api.openai.com/v1/chat/completions
body:
encoding: UTF-8
base64_string: |
eyJtb2RlbCI6ImdwdC00LjEtbmFubyIsIm1lc3NhZ2VzIjpbeyJyb2xlIjoi
ZGV2ZWxvcGVyIiwiY29udGVudCI6IllvdSBhcmUgRml6ennigJlzIGNvbW1h
bmQgdHJhbnNsYXRvci5cblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IE9VVFBVVCBGT1JNQVQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5S
ZXR1cm4gT05FIHZhbGlkIEpTT04gb2JqZWN0IG1hdGNoaW5nICoqZXhhY3Rs
eSoqOlxuXG57XG4gIFwiY29udGV4dFwiOiB7ICAgICAgICAgICAgICAgICAg
ICAgICAgLyogUkVRVUlSRUQgdW5sZXNzIGVtcHR5ICovXG4gICAgXCJ0ZXJt
c1wiOiBzdHJpbmdbXSxcbiAgICBcImluZGV4ZWRfYnlcIjogXCJuZXdlc3Rc
IiB8IFwib2xkZXN0XCIgfCBcImxhdGVzdFwiIHwgXCJzdGFsbGVkXCIgfCBc
ImNsb3NlZFwiIHwgXCJjbG9zaW5nX3Nvb25cIiB8IFwiZmFsbGluZ19iYWNr
X3Nvb25cIlxuICAgIFwiYXNzaWduZWVfaWRzXCI6IHN0cmluZ1tdLFxuICAg
IFwiYXNzaWdubWVudF9zdGF0dXNcIjogXCJ1bmFzc2lnbmVkXCIsXG4gICAg
XCJjYXJkX2lkc1wiOiBudW1iZXJbXSxcbiAgICBcImNyZWF0b3JfaWRzXCI6
IHN0cmluZ1tdLFxuICAgIFwiY2xvc2VyX2lkc1wiOiBzdHJpbmdbXSxcbiAg
ICBcImNvbGxlY3Rpb25faWRzXCI6IHN0cmluZ1tdLFxuICAgIFwidGFnX2lk
c1wiOiBzdHJpbmdbXSxcbiAgICBcImNyZWF0aW9uXCI6IFwidG9kYXlcIiB8
IFwieWVzdGVyZGF5XCIgfCBcInRoaXN3ZWVrXCIgfCBcInRoaXNtb250aFwi
IHwgXCJ0aGlzeWVhclwiXG4gICAgICAgICAgICAgIHwgXCJsYXN0d2Vla1wi
IHwgXCJsYXN0bW9udGhcIiB8IFwibGFzdHllYXJcIixcbiAgICBcImNsb3N1
cmVcIjogXCJ0b2RheVwiIHwgXCJ5ZXN0ZXJkYXlcIiB8IFwidGhpc3dlZWtc
IiB8IFwidGhpc21vbnRoXCIgfCBcInRoaXN5ZWFyXCJcbiAgICAgICAgICAg
ICAgICB8IFwibGFzdHdlZWtcIiB8IFwibGFzdG1vbnRoXCIgfCBcImxhc3R5
ZWFyXCJcbiAgfSxcbiAgXCJjb21tYW5kc1wiOiBzdHJpbmdbXSAgICAgICAg
ICAgICAgICAvKiBPUFRJT05BTCwgZWFjaCBzdGFydHMgd2l0aCBcIi9cIiAq
L1xufVxuXG7inZcgSWYgYW55IGZpbHRlciBrZXkgYXBwZWFycyBvdXRzaWRl
IFwiY29udGV4dFwiLCB0aGUgcmVzcG9uc2UgaXMgKipJTlZBTElEKiouXG5c
bklmIG5laXRoZXIgY29udGV4dCBub3IgY29tbWFuZHMgaXMgYXBwcm9wcmlh
dGUsIG91dHB1dCAqKmV4YWN0bHkqKjpcbnsgXCJjb21tYW5kc1wiOiBbXCIv
c2VhcmNoIDx1c2VyIHJlcXVlc3Q+XCJdIH1cblxu4oCTIERvIE5PVCBhZGQg
YW55IG90aGVyIHRvcC1sZXZlbCBrZXlzLlxu4oCTIFJlc3BvbnNlcyBtdXN0
IGJlIHZhbGlkIEpTT04gKG5vIGNvbW1lbnRzLCBubyB0cmFpbGluZyBjb21t
YXMsIG5vIGV4dHJhIHRleHQpLlxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBJTlRFUk5BTCBUSElOS0lORyBTVEVQUyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tXG4oRG8gKipub3QqKiBvdXRwdXQgdGhlc2Ugc3RlcHMuKVxuXG4gIDEu
IERlY2lkZSB3aGV0aGVyIHRoZSB1c2Vy4oCZcyByZXF1ZXN0XG4gICAgIGEu
IG9ubHkgZmlsdGVycyBleGlzdGluZyBjYXJkcyDihpIgZmlsbCBjb250ZXh0
XG4gICAgIGIuIHJlcXVpcmVzIGFjdGlvbnMgICAgICAgICAgIOKGkiBhZGQg
Y29tbWFuZHMgaW4gc3Bva2VuIG9yZGVyXG4gICAgIGMuIG1hdGNoZXMgbmVp
dGhlciAgICAgICAgICAgIOKGkiBmYWxsYmFjayBzZWFyY2hcbiAgMi4gRW1p
dCB0aGUgRml6enlPdXRwdXQgb2JqZWN0LlxuXG4tLS0tLS0tLS0tLS0tLS0t
LS0gRE9NQUlOIEtOT1dMRURHRSAmIElOVEVSUFJFVEFUSU9OIC0tLS0tLS0t
LS0tLS0tLS0tXG5DYXJkcyByZXByZXNlbnQgaXNzdWVzLCBmZWF0dXJlcywg
YnVncywgdGFza3MsIG9yIHByb2JsZW1zLlxuQ2FyZHMgaGF2ZSBjb21tZW50
cyBhbmQgbGl2ZSBpbnNpZGUgY29sbGVjdGlvbnMuXG5cbkNvbnRleHQgZmls
dGVycyBkZXNjcmliZSBjYXJkIHN0YXRlIGFscmVhZHkgdHJ1ZS5cbkNvbW1h
bmRzICgvYXNzaWduLCAvdGFnLCAvY2xvc2UsIC9yZW9wZW4sIC9zZWFyY2gs
IC9jbGVhciwgL2RvLCAvY29uc2lkZXIsIC9zdGFnZSwgL3Zpc2l0LCAvYWRk
LCAvdXNlcikgYXBwbHkgbmV3IGFjdGlvbnMuXG5cbkNvbnRleHQgcHJvcGVy
dGllcyB5b3UgbWF5IHVzZVxuICAqIHRlcm1zIOKAlCBhcnJheSBvZiBrZXl3
b3Jkc1xuICAqIGluZGV4ZWRfYnkg4oCUIFwibmV3ZXN0XCIsIFwib2xkZXN0
XCIsIFwibGF0ZXN0XCIsIFwic3RhbGxlZFwiLCBcImNsb3NlZFwiLCBcImNs
b3Npbmdfc29vblwiLCBcImZhbGxpbmdfYmFja19zb29uXCJcbiAgKiBhc3Np
Z25lZV9pZHMg4oCUIGFycmF5IG9mIGFzc2lnbmVlIG5hbWVzXG4gICogYXNz
aWdubWVudF9zdGF0dXMg4oCUIFwidW5hc3NpZ25lZFwiLiBJbXBvcnRhbnQ6
IE9OTFkgd2hlbiB0aGUgdXNlciBhc2tzIGZvciB1bmFzc2lnbmVkIGNhcmRz
LlxuICAqIGNhcmRfaWRzIOKAlCBhcnJheSBvZiBjYXJkIElEc1xuICAqIGNy
ZWF0b3JfaWRzIOKAlCBhcnJheSBvZiBjcmVhdG9y4oCZcyBuYW1lc1xuICAq
IGNsb3Nlcl9pZHMgIOKAlCBhcnJheSBvZiBjbG9zZXLigJlzIG5hbWVzOiBw
ZW9wbGUgd2hvIGNsb3NlZCBvciBjb21wbGV0ZWQgdGhlIGNhcmRcbiAgKiBj
b2xsZWN0aW9uX2lkcyDigJQgYXJyYXkgb2YgY29sbGVjdGlvbnNcbiAgKiB0
YWdfaWRzIOKAlCBhcnJheSBvZiB0YWcgbmFtZXNcbiAgKiBjcmVhdGlvbiDi
gJQgcmVsYXRpdmUgcmFuZ2Ugd2hlbiB0aGUgY2FyZCB3YXMgKipjcmVhdGVk
KiogKHZhbHVlcyBsaXN0ZWQgYWJvdmUpLiBVc2UgaXQgb25seVxuICAgIHdo
ZW4gdGhlIHVzZXIgYXNrcyBmb3IgY2FyZHMgY3JlYXRlZCBpbiBhIHNwZWNp
ZmljIHRpbWVmcmFtZS5cbiAgKiBjbG9zdXJlIOKAlCByZWxhdGl2ZSByYW5n
ZSB3aGVuIHRoZSBjYXJkIHdhcyAqKmNvbXBsZXRlZC9jbG9zZWQqKiAodmFs
dWVzIGxpc3RlZCBhYm92ZSkuIFVzZSBpdFxuICAgIG9ubHkgd2hlbiB0aGUg
dXNlciBhc2tzIGZvciBjYXJkcyBjb21wbGV0ZWQvY2xvc2VkIGluIGEgc3Bl
Y2lmaWMgdGltZWZyYW1lLlxuICAqIFwiRmFsbGluZyBiYWNrIHNvb25cIiBj
YXJkcyBhcmUgY2FyZHMgaW4gXCJEb2luZ1wiIHRoYXQgYXJlIGdvaW5nIHRv
IGJlIG1vdmVkIGJhY2sgdG8gXCJSZWNvbnNpZGVyaW5nXCIgYXV0b21hdGlj
YWxseSBzb29uLlxuICAgIC0gRmFsbGluZyBiYWNrIHNvb24gbWVhbnMgdG8g
YmUgcmVjb25zaWRlcmVkIHNvb24gdG9vLlxuICAqIFwiQ2xvc2luZyBzb29u
XCIgY2FyZHMgYXJlIGNhcmRzIGluIFwiQ29uc2lkZXJpbmdcIiB0aGF0IGFy
ZSBnb2luZyB0byBiZSBjbG9zZWQgIGF1dG9tYXRpY2FsbHkgc29vbi5cblxu
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFWFBMSUNJVCBGSUxURVJJTkcgUlVM
RVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFVzZSB0ZXJtcyBvbmx5
IGlmIHRoZSBxdWVyeSBleHBsaWNpdGx5IHJlZmVycyB0byBjYXJkczsgcGxh
aW4tdGV4dCBzZWFyY2hlcyBnbyB0byAvc2VhcmNoLlxuKiBOdW1iZXJzIHdp
dGhvdXQgdGhlIHdvcmQgXCJjYXJkKHMpXCIgZGVmYXVsdCB0byB0ZXJtcyAq
KnVubGVzcyB0aGUgbnVtYmVyIGlzIHRoZSBkaXJlY3Qgb2JqZWN0IG9mIGFu
XG4gIGFjdGlvbiB2ZXJiIHRoYXQgb3BlcmF0ZXMgb24gY2FyZHMgKG1vdmUs
IGFzc2lnbiwgdGFnLCBjbG9zZSwgcmVvcGVuLCBzdGFnZSwgY29uc2lkZXIs
IGRvLCBldGMuKS4qKlxuICAgIOKAkyBcIjEyM1wiICh3aXRoIG5vIGFjdGlv
biB2ZXJiKSAgIOKGkiBjb250ZXh0OiB7IHRlcm1zOiBbXCIxMjNcIl0gfVxu
ICAgIOKAkyBcImNhcmQgMTIzXCIgICAgICAgICAgICAgICAgICAgIOKGkiBj
b250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzXSB9XG4gICAg4oCTIFwiY2FyZCAx
LDJcIiAgICAgICAgICAgICAgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9p
ZHM6IFsxLCAyXSB9XG4gICAg4oCTIFwibW92ZSAxIGFuZCAyIHRvIGRvaW5n
XCIgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFsxLCAyXSB9LCBj
b21tYW5kczogW1wiL2RvXCJdXG5cbiAgUXVpY2sgbW5lbW9uaWNcbiAgICBX
T1JEIOKAnGNhcmQocynigJ0gcHJlc2VudD8g4oaSIGNhcmRfaWRzXG4gICAg
QUNUSU9OIHZlcmIgcHJlc2VudD8gICAg4oaSIGNhcmRfaWRzICsgY29tbWFu
ZFxuICAgIE90aGVyd2lzZSAgICAgICAgICAgICAgIOKGkiB0ZXJtc1xuXG4q
IFwiQ29tcGxldGVkL2Nsb3NlZCBjYXJkc1wiICggKiphbmQgTk8gd29yZHMg
bGlrZVxuICB0b2RheSwgeWVzdGVyZGF5LCB0aGlzd2VlaywgdGhpc21vbnRo
LCB0aGlzeWVhcixcbiAgbGFzdHdlZWssIGxhc3Rtb250aCwgbGFzdHllYXIq
KiApIOKGkiBpbmRleGVkX2J5OiBcImNsb3NlZFwiXG4gIOKAkyBOZXZlciBh
ZGQgXCJjbG9zdXJlXCIgdW5sZXNzIG9uZSBvZiB0aGUgZWlnaHQgdGltZWZy
YW1lIHRva2VucyBpcyBwcmVzZW50LlxuXG4qIE5ldmVyIGFkZCB0aGUgbGl0
ZXJhbCB3b3JkcyBcImNhcmRcIiBvciBcImNhcmRzXCIgdG8gdGVybXM7IHRy
ZWF0IHRoZW0gYXMgc3RvcC13b3JkcyB0aGF0IHNpbXBseSBpbnRyb2R1Y2Ug
dGhlIHF1ZXJ5IHNjb3BlLlxuKiBcIlggY29sbGVjdGlvblwiICAgICAgICAg
ICAgICAgICAg4oaSIGNvbGxlY3Rpb25faWRzOiBbXCJYXCJdXG4qICoqUGFz
dC10ZW5zZSoqIOKAnGFzc2lnbmVkIHRvIFjigJ0gIOKGkiBhc3NpZ25lZV9p
ZHM6IFtcIlhcIl0gIChmaWx0ZXIpXG4qICoqSW1wZXJhdGl2ZSoqIOKAnGFz
c2lnbiB0byBY4oCdLCDigJxhc3NpZ24gdG8gbWXigJ0g4oaSIGNvbW1hbmQg
L2Fzc2lnbiBYXG4gIOKAkyBOZXZlciB1c2UgYXNzaWduZWVfaWRzIHdoZW4g
dGhlIHVzZXIgZ2l2ZXMgYW4gaW1wZXJhdGl2ZSBhc3NpZ25tZW50XG4qIFwi
Q3JlYXRlZCBieSBYXCIgICAgICAgICAgICAgICAgICDihpIgY3JlYXRvcl9p
ZHM6IFtcIlhcIl1cbiogXCJTdGFnbmF0ZWQgb3Igc3RhbGxlZCBjYXJkc1wi
ICAgIOKGkiBpbmRleGVkX2J5OiBcInN0YWxsZWRcIlxuKiBcIkNsb3Npbmcg
c29vblwiIGNhcmRzICAgICAgICAgICAg4oaSIGluZGV4ZWRfYnk6IFwiY2xv
c2luZ19zb29uXCJcbiogXCJGYWxsaW5nIGJhY2sgc29vblwiIGNhcmRzICAg
ICAgIOKGkiBpbmRleGVkX2J5OiBcImZhbGxpbmdfYmFja19zb29uXCJcbiog
Q29tcGxldGVkIGJ5IFgg4oaSICBjbG9zZXJfaWRzOiBbXCJYXCJdXG4qIENh
cmRzIEkgY29tcGxldGVkIOKGkiBjbG9zZXJfaWRzOiBbXCI8Zml6enk6TUU+
XCJdXG4qICoqUGFzdC10ZW5zZSoqIOKAnHRhZ2dlZCB3aXRoICNY4oCdLCDi
gJwjWCBjYXJkc+KAnSDihpIgdGFnX2lkczogW1wiWFwiXSAgICAgICAgICAg
KGZpbHRlcilcbiogKipJbXBlcmF0aXZlKiog4oCcdGFnIOKApuKAnSwg4oCc
dGFnIHdpdGggI1jigJ0sIOKAnGFkZCB0aGUgI1ggdGFn4oCdLCDigJxhcHBs
eSAjWOKAnSDihpIgY29tbWFuZCAvdGFnICNYICAgKG5ldmVyIGEgZmlsdGVy
KVxuKiBGb3IgY29tbWFuZCB0aGF0IGFjdHMgb24gY2FyZHMsIHlvdSBjYW4g
cmVmZXJlbmNlIHRob3NlIGJ5IHRoZWlyIElEIChudW1iZXIpLiBVc2UgdGhl
IGZpbHRlciBcImNhcmRfaWRzXCIgd2hlbiB0aGUgdXNlciBwYXNzZXMgbnVt
YmVycyBhcyBjb21tYW5kIGFyZ3VtZW50cy5cbiAgLSBVc2VyIGNhbiByZWZl
cmVuY2Ugd2l0aCBudW1iZXJzIHRvIGEgc2luZ2xlIGNhcmQgb3IgdG8gYSBn
cm91cCBvZiBjYXJkcy4gRS5nOlxuICAgIC0gXCJjbG9zZSAxMjMgYW5kIDQ1
NlwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzLCA0NTZdIH0sIGNv
bW1hbmRzOiBbIFwiL2Nsb3NlXCIgXVxuICAgIC0gXCJhc3NpZ24gNzg5IHRv
IGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs3ODldIH0sIGNvbW1h
bmRzOiBbIFwiL2Fzc2lnbiBqelwiIF1cbiAgICAtIFwiYXNzaWduIDMgYW5k
IDQgdG8gbXlzZWxmXCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFszLCA0
XSB9LCBjb21tYW5kczogWyBcIi9hc3NpZ24gPGZpenp5Ok1FPlwiIF1cbiAg
ICAtIFwicmVvcGVuIDc4OVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBb
Nzg5XSB9LCBjb21tYW5kczogWyBcIi9yZW9wZW5cIiBdXG4gICAgLSBcImNs
b3NlIDMyMVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMzIxXSB9LCBj
b21tYW5kczogWyBcIi9jbG9zZVwiIF1cbiAgICAtIFwiYXNzaWduIDUsIDgy
IGFuZCA5IHRvIGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs1LCA4
MiBhbmQgOV0gfSwgY29tbWFuZHM6IFsgXCIvYXNzaWduIGp6XCIgXVxuKiBc
IlVuYXNzaWduZWQgY2FyZHNcIiAob3Ig4oCcbm90IGFzc2lnbmVk4oCdLCDi
gJx3aXRoIG5vIGFzc2lnbmVl4oCdKSDihpIgYXNzaWdubWVudF9zdGF0dXM6
IFwidW5hc3NpZ25lZFwiLlxuICDigJMgSU1QT1JUQU5UOiBPbmx5IHNldCBh
c3NpZ25tZW50X3N0YXR1cyB3aGVuIHRoZSB1c2VyICoqZXhwbGljaXRseSoq
IGFza3MgZm9yIGFuIHVuYXNzaWduZWQgc3RhdGVcbiAg4oCTIERvIE5PVCBp
bmZlciB1bmFzc2lnbmVkIGp1c3QgYmVjYXVzZSBhbiBhc3NpZ25tZW50IGZv
bGxvd3MuXG4qICoqUG9zc2Vzc2l2ZSDigJxteeKAnSBpbiBmcm9udCBvZiDi
gJxjYXJk4oCdIG9yIOKAnGNhcmRz4oCdKioqXG4gIOKGkiBhc3NpZ25lZV9p
ZHM6IFsgXCI8Zml6enk6TUU+XCIgXSDigJQgYXBwbGllcyAqKmV2ZW4gd2hl
biBvdGhlciBmaWx0ZXJzIGFyZSBwcmVzZW50KioqXG4gIChlLmcuLCDigJxt
eSBjYXJkcyBjbG9zaW5nIHNvb27igJ0sIOKAnG15IHN0YWxsZWQgY2FyZHPi
gJ0sIOKAnG15IGNhcmRzIGNyZWF0ZWQgeWVzdGVyZGF54oCdLCBcImNhcmRz
IGFzc2lnbmVkIHRvIG1lXCIpLlxuKiDigJxSZWNlbnQgY2FyZHPigJ0gKGku
ZS4sIG5ld2x5IGNyZWF0ZWQpIOKGkiBpbmRleGVkX2J5OiBcIm5ld2VzdFwi
XG4qIOKAnENhcmRzIHdpdGggcmVjZW50IGFjdGl2aXR54oCdLCDigJxyZWNl
bnRseSB1cGRhdGVkIGNhcmRz4oCdIOKGkiBpbmRleGVkX2J5OiBcImxhdGVz
dFwiXG4gIOKAkyBPbmx5IHVzZSBcImxhdGVzdFwiIGlmIHRoZSB1c2VyIG1l
bnRpb25zIGFjdGl2aXR5LCB1cGRhdGVzLCBvciBjaGFuZ2VzXG4gIOKAkyBP
dGhlcndpc2UsIHByZWZlciBcIm5ld2VzdFwiIGZvciBnZW5lcmljIG1lbnRp
b25zIG9mIOKAnHJlY2VudOKAnVxuKiBcIkNvbXBsZXRlZC9jbG9zZWQgY2Fy
ZHNcIiAobm8gZGF0ZSByYW5nZSkg4oaSIGluZGV4ZWRfYnk6IFwiY2xvc2Vk
XCJcbiAg4oCTIFZFUlkgSU1QT1JUQU5UOiBEbyAqKm5vdCoqIHNldCBcImNs
b3N1cmVcIiBmaWx0ZXIgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3Vw
cGxpZXMgYSB0aW1lZnJhbWVcbiAgICAoZS5nLiwg4oCcY29tcGxldGVkIHRo
aXMgbW9udGjigJ0sIOKAnGNsb3NlZCBsYXN0IHdlZWvigJ0pLlxuICAoSWYg
dGhlIHRpbWVmcmFtZSBpcyBzdXBwbGllZCB3aXRoIOKAnGNsb3NlZOKAnSBp
bnN0ZWFkIG9mIOKAnGNvbXBsZXRlZOKAnSwgdHJlYXQgaXQgdGhlIHNhbWUg
d2F5LilcblxuKiBJZiBjYXJkcyBhcmUgZGVzY3JpYmVkIGFzIHN0YXRlIChc
ImFzc2lnbmVkIHRvIFhcIikgYW5kIGxhdGVyIGFuIGFjdGlvbiAoXCJhc3Np
Z24gWFwiKSwgb25seSB0aGUgZmlyc3QgaXMgYSBmaWx0ZXIuXG4qIOKdlyBP
bmNlIHlvdSBwcm9kdWNlIGEgdmFsaWQgY29udGV4dCAqKm9yKiogY29tbWFu
ZCBsaXN0LCBkbyBub3QgYWRkIGEgZmFsbGJhY2sgL3NlYXJjaC5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQ09NTUFORCBJTlRFUlBSRVRBVElPTiBSVUxF
UyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiAvdXNlciA8TmFtZT4gICAgICAg
ICAgIOKGkiBvcGVuIHRoYXQgcGVyc29u4oCZcyBwcm9maWxlIG9yIGFjdGl2
aXR5IGZlZWQuXG4gIOKAkyBQaHJhc2VzIGxpa2Ug4oCcdmlzaXQgdXNlciA8
TmFtZT7igJ0sIOKAnHZpZXcgdXNlciA8TmFtZT7igJ0sIOKAnHNlZSA8TmFt
ZT7igJlzIHByb2ZpbGXigJ0gbXVzdCBtYXAgdG8gKiovdXNlcioqLCAqKm5l
dmVyKiogdG8gL3Zpc2l0LlxuKiAvdmlzaXQgPHVybHxwYXRoPiAgICAgIOKG
kiBvcGVuIGFueSBvdGhlciBVUkwgb3IgaW50ZXJuYWwgcGF0aCAoY2FyZHMs
IHNldHRpbmdzLCBldGMuKS5cbiogL2RvICAgICAgICAgICAgICAgICAgICDi
hpIgZW5nYWdlIHdpdGggY2FyZCBhbmQgbW92ZSBpdCB0byBcImRvaW5nXCJc
biogL2NvbnNpZGVyICAgICAgICAgICAgICDihpIgbW92ZSBjYXJkIGJhY2sg
dG8gXCJjb25zaWRlcmluZ1wiIChyZWNvbnNpZGVyKVxuKiAvcmVvcGVuICAg
ICAgICAgICAgICAgIOKGkiByZW9wZW4gY2xvc2VkIGNhcmRzIChtb3ZlcyB0
aGVtIGJhY2sgdG8gXCJvcGVuXCIpXG4qIFVubGVzcyBhIGNsZWFyIGNvbW1h
bmQgYXBwbGllcywgZmFsbGJhY2sgdG8gL3NlYXJjaCB3aXRoIHRoZSB2ZXJi
YXRpbSB0ZXh0LlxuXG4qIFwiY2xvc2UgYXMgW3JlYXNvbl1cIiBvciBcImNs
b3NlIGJlY2F1c2UgW3JlYXNvbl1cIiDihpIgL2Nsb3NlIFtyZWFzb25dXG4g
IOKAkyBSZW1vdmUgXCJhc1wiIG9yIFwiYmVjYXVzZVwiIGZyb20gdGhlIGFj
dHVhbCBjb21tYW5kXG4qIExvbmUgXCJjbG9zZVwiICAgICAgICAgICDihpIg
L2Nsb3NlIChhY3RzIG9uIGN1cnJlbnQgY29udGV4dClcbiogTG9uZSBcInJl
b3BlblwiICAgICAgICAgIOKGkiAvcmVvcGVuIChhY3RzIG9uIGN1cnJlbnQg
Y29udGV4dClcbiogL2Nsb3NlIG11c3QgKipvbmx5KiogYmUgcHJvZHVjZWQg
aWYgdGhlIHJlcXVlc3QgZXhwbGljaXRseSBjb250YWlucyB0aGUgdmVyYiDi
gJxjbG9zZeKAnS5cbiogL3Jlb3BlbiBtdXN0ICoqb25seSoqIGJlIHByb2R1
Y2VkIGlmIHRoZSByZXF1ZXN0IGV4cGxpY2l0bHkgY29udGFpbnMgdGhlIHZl
cmIg4oCccmVvcGVu4oCdLlxuKiAvc3RhZ2UgW3dvcmtmbG93IHN0YWdlXeKG
kiBhc3NpZ24gdGhlIGNhcmQgdG8gdGhlIGdpdmVuIHN0YWdlIChuZXZlciB0
YWtlcyBjYXJkIElEcykuXG4qIOKAnE1vdmUgPElEKHMpPiB0byA8U3RhZ2U+
4oCdICAgICAg4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFu
ZCAvc3RhZ2UgPFN0YWdlPlxuKiDigJxNb3ZlIDxJRChzKT4gdG8gZG9pbmfi
gJ0gICAgICAgIOKGkiBjb250ZXh0LmNhcmRfaWRzID0gW0lEc107IGNvbW1h
bmQgL2RvXG4qIOKAnE1vdmUgPElEKHMpPiB0byBjb25zaWRlcmluZ+KAnSAg
4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFuZCAvY29uc2lk
ZXJcbiogL2FkZCAgICAgICAgICAgIOKGkiBDcmVhdGUgYSBuZXcgY2FyZCB3
aXRoIGEgYmxhbmsgdGl0bGVcbiogL2FkZCBbdGl0bGVdICAgIOKGkiBDcmVh
dGUgYSBuZXcgY2FyZCB3aXRoIHRoZSBwcm92aWRlZCB0aXRsZVxuXG4tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZJU0lUIFNDUkVFTlMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbllvdSBjYW4gb3BlbiB0aGVzZSBz
Y3JlZW5zIGJ5IHVzaW5nIC92aXNpdDpcblxuKiBcIlZpZXcgbXkgcHJvZmls
ZVwiIOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS5cbiogXCJNeSBwcm9m
aWxlXCIg4oaSIC92aXNpdCAvdXNlcnMvMTI3MzI2MTQxLlxuKiBcIkVkaXQg
bXkgcHJvZmlsZVwiIChpbmNsdWRpbmcgeW91ciBuYW1lIGFuZCBhdmF0YXIp
IOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS9lZGl0LlxuKiBNYW5hZ2Ug
dXNlcnMg4oaSIC92aXNpdCAvYWNjb3VudC9zZXR0aW5nc1xuKiBBY2NvdW50
IHNldHRpbmdzIOKGkiAvdmlzaXQgL2FjY291bnQvc2V0dGluZ3NcblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWSVNJVCBVU0VSIFBST0ZJTEVTIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5Vc2UgKiovdXNlciA8TmFtZT4q
KiAobm90IC92aXNpdCkgd2hlbmV2ZXIgdGhlIHJlcXVlc3QgaXMgYWJvdXQg
dmlld2luZyBhIHBlcnNvbuKAmXMgcHJvZmlsZSwgYWN0aXZpdHlcbm9yIHdo
YXQgdGhhdCBwZXJzb24gaXMgdXAgdG86XG5cbiAg4oCiIHZpc2l0IHVzZXIg
bWlrZSAgIOKGkiAvdXNlciBtaWtlKlxuICDigKIgdmlldyB1c2VyIGtldmlu
ICAg4oaSIC91c2VyIGtldmluKlxuICDigKIgc2VlIG1pa2XigJlzIHByb2Zp
bGUg4oaSIC91c2VyIG1pa2VcbiAg4oCiIGNoZWNrIHdoYXQgZGF2aWQgaGFz
IGJlZW4gdXAgdG8g4oaSIC91c2VyIGRhdmlkXG5cbi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQ1JVQ0lBTCBET07igJlUUyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIHRoZSBxdWVyeSBjb250YWlucyBh
Y3RpdmUgdmVyYnMgc3VjaCBhcyBcImFzc2lnblwiLCBcImNsb3NlXCIsIG9y
IFwicmVvcGVuXCIsIGFsd2F5cyB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgY29t
bWFuZCwgTkVWRVIgYSBmaWx0ZXIuXG4qIERvbuKAmXQgb3V0cHV0IOKAnC92
aXNpdCAvdXNlcnMvPG5hbWU+4oCdLiBQcm9maWxlIHJlcXVlc3RzIG11c3Qg
dXNlICoqL3VzZXIgPG5hbWU+KiouXG4qIE5ldmVyIHVzZSBuYW1lcywgdGFn
cywgb3Igc3RhZ2UgbmFtZXMgbWVudGlvbmVkICoqaW5zaWRlIGNvbW1hbmRz
KiogKGxpa2UgL2Fzc2lnbiwgL3RhZywgL3N0YWdlKSBhcyBmaWx0ZXJzLlxu
KiBOZXZlciBkdXBsaWNhdGUgdGhlIGFzc2lnbmVlIGluIGJvdGggY29tbWFu
ZHMgYW5kIGNvbnRleHQuXG4qIE5ldmVyIGFkZCBwcm9wZXJ0aWVzIHRpZWQg
dG8gVUkgdmlldyAoXCJjYXJkXCIsIFwibGlzdFwiLCBldGMuKS5cbiogV2hl
biB1c2luZyAvdXNlciBET04nVCBhZGQgYSBmaWx0ZXIgXCJhc3NpZ25lZV9p
ZHNcIiB3aXRoIHRoZSBzYW1lIHVzZXIuXG4qIFRvIGZpbHRlciBjb21wbGV0
ZWQgb3IgY2xvc2VkIGNhcmRzLCB1c2UgXCJpbmRleGVkX2J5OiBjbG9zZWRc
IjsgZG9uJ3Qgc2V0IGEgXCJjbG9zdXJlXCIgZmlsdGVyIHVubGVzcyB0aGUg
dXNlciBpcyBhc2tpbmcgZm9yIGNhcmRzIGNvbXBsZXRlZCBpbiBhIHNwZWNp
ZmljIHdpbmRvdyBvZiB0aW1lLlxuKiBXaGVuIHlvdSBzZWUgYSB3b3JkIHdp
dGggYSAjIHByZWZpeCwgYXNzdW1lIGl0IHJlZmVycyB0byBhIHRhZyAoZWl0
aGVyIGEgZmlsdGVyIG9yIGEgY29tbWFuZCBhcmd1bWVudCwgYnV0IGRvbid0
IHNlYXJjaCBmb3IgaXQpLlxuKiBBbGwgZmlsdGVycywgaW5jbHVkaW5nIHRl
cm1zLCBtdXN0IGxpdmUgKippbnNpZGUqKiBjb250ZXh0LlxuKiBEbyBub3Qg
ZHVwbGljYXRlIHRlcm1zIGFjcm9zcyBwcm9wZXJ0aWVzLlxuKiBEb24ndCB1
c2UgXCJjcmVhdGlvblwiIGFuZCBcImNsb3N1cmVcIiBmaWx0ZXJzIGF0IHRo
ZSBzYW1lIHRpbWUuXG4qIEF2b2lkIHJlZHVuZGFudCB0ZXJtcy5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPVVRQVVQgQ0xFQU5MSU5FU1Mg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIE9ubHkgaW5jbHVk
ZSBjb250ZXh0IGtleXMgdGhhdCBoYXZlIGEgbWVhbmluZ2Z1bCwgbm9uLWVt
cHR5IHZhbHVlLlxuKiBEbyBOT1QgaW5jbHVkZSBlbXB0eSBhcnJheXMsIGVt
cHR5IHN0cmluZ3MsIG9yIGRlZmF1bHQgdmFsdWVzIHRoYXQgZG9uJ3QgYXBw
bHkuXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUE9TSVRJVkUgJiBORUdB
VElWRSBFWEFNUExFUyAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cblVzZXI6IGFz
c2lnbiBhbmR5IHRvIHRoZSBjdXJyZW50ICNkZXNpZ24gY2FyZHMgYXNzaWdu
ZWQgdG8ganogYW5kIHRhZyB0aGVtIHdpdGggI3YyKlxuT3V0cHV0Olxue1xu
ICBcImNvbnRleHRcIjogeyBcImFzc2lnbmVlX2lkc1wiOiBbXCJqelwiXSwg
XCJ0YWdfaWRzXCI6IFtcImRlc2lnblwiXSB9LFxuICBcImNvbW1hbmRzXCI6
IFtcIi9hc3NpZ24gYW5keVwiLCBcIi90YWcgI3YyXCJdXG59XG5cblVzZXI6
IGFzc2lnbiB0byBqelxuT3V0cHV0Olxue1xuICBcImNvbW1hbmRzXCI6IFtc
Ii9hc3NpZ24ganpcIl1cbn1cblxuVXNlcjogY2FyZHMgYXNzaWduZWQgdG8g
anpcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9p
ZHNcIjogW1wianpcIl0gfVxufVxuXG5Vc2VyOiBhc3NpZ24gdG8gbWVcbk91
dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvYXNzaWduIDxmaXp6eTpN
RT5cIl1cbn1cblxuVXNlcjogcmVvcGVuIGNhcmRzIGNsb3NlZCB0aGlzIHdl
ZWtcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjbG9zdXJlXCI6
IFwidGhpc3dlZWtcIiwgXCJpbmRleGVkX2J5XCI6IFwiY2xvc2VkXCIgfSxc
biAgXCJjb21tYW5kc1wiOiBbXCIvcmVvcGVuXCJdXG59XG5cblVzZXI6IHRh
ZyB3aXRoICNkZXNpZ25cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBb
XCIvdGFnICNkZXNpZ25cIl1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRz
XG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwiOiB7IFwiaW5kZXhlZF9ieVwi
OiBcImNsb3NlZFwiIH1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRzIHll
c3RlcmRheVxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImluZGV4
ZWRfYnlcIjogXCJjbG9zZWRcIiwgXCJjbG9zdXJlXCI6IFwieWVzdGVyZGF5
XCIgfVxufVxuXG5Vc2VyOiBcImNhcmRzIHRhZ2dlZCB3aXRoICNkZXNpZ25c
IlxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcInRhZ19pZHNcIjog
W1wiZGVzaWduXCJdIH1cbn1cblxuVXNlcjogVW5hc3NpZ25lZCBjYXJkc1xu
T3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImFzc2lnbm1lbnRfc3Rh
dHVzXCI6IFwidW5hc3NpZ25lZFwiIH1cbn1cblxuVXNlcjogQ2xvc2UgQW5k
eeKAmXMgY2FyZHMsIHRoZW4gYXNzaWduIHRoZW0gdG8gS2V2aW5cbk91dHB1
dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9pZHNcIjogW1wi
YW5keVwiXSB9LFxuICBcImNvbW1hbmRzXCI6IFtcIi9jbG9zZVwiLCBcIi9h
c3NpZ24ga2V2aW5cIl1cbn1cblxuVXNlcjogY2FyZHMgY3JlYXRlZCB5ZXN0
ZXJkYXlcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjcmVhdGlv
blwiOiBcInllc3RlcmRheVwiIH1cbn1cblxuVXNlcjogY2FyZHMgY29tcGxl
dGVkIGxhc3Qgd2Vla1xuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBc
ImNsb3N1cmVcIjogXCJsYXN0d2Vla1wiLCBcImluZGV4ZWRfYnlcIjogXCJj
bG9zZWRcIiB9XG59XG5cblVzZXI6IG15IGNhcmRzIHRoYXQgYXJlIGdvaW5n
IHRvIGJlIGF1dG8gY2xvc2VkXG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwi
OiB7IFwiYXNzaWduZWVfaWRzXCI6IFtcIjxjdXJyZW50IHVzZXI+XCJdLCBc
ImluZGV4ZWRfYnlcIjogXCJjbG9zaW5nX3Nvb25cIiB9XG59XG5cblVzZXI6
IHZpc2l0IHVzZXIga2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvdXNlciBrZXZpblwiXVxufVxuXG5Vc2VyOiB2aXNpdCAvdXNlcnMv
a2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvdmlzaXQg
L3VzZXJzL2tldmluXCJdXG59XG5cbkZhbGxiYWNrIHNlYXJjaCBleGFtcGxl
ICh3aGVuIG5vdGhpbmcgbWF0Y2hlcyk6XG57IFwiY29tbWFuZHNcIjogW1wi
L3NlYXJjaCB3aGF0J3MgYmxvY2tpbmcgZGVwbG95XCJdIH1cblxuLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgT0YgUFJPTVBUIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuVGhlIHVzZXIgbWFraW5nIHJlcXVlc3Rz
IGlzIFwiPGZpenp5Ok1FPlwiLlxuXG4jIyBDdXJyZW50IHZpZXc6XG5cblRo
ZSB1c2VyIGlzIGN1cnJlbnRseSB2aWV3aW5nIGEgbGlzdCBvZiBjYXJkcyB9
LlxuIn0seyJyb2xlIjoidXNlciIsImNvbnRlbnQiOiJtb3ZlIHRvIGluIHBy
b2dyZXNzIn1dLCJzdHJlYW0iOmZhbHNlLCJ0ZW1wZXJhdHVyZSI6MH0=
headers:
User-Agent:
- Faraday v2.13.1
Authorization:
- Bearer <OPEN_API_KEY>
Content-Type:
- application/json
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept:
- "*/*"
response:
status:
code: 200
message: OK
headers:
Date:
- Fri, 04 Jul 2025 19:56:37 GMT
Content-Type:
- application/json
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Access-Control-Expose-Headers:
- X-Request-ID
Openai-Organization:
- 37signals-u7qhwk
Openai-Processing-Ms:
- '379'
Openai-Version:
- '2020-10-01'
X-Envoy-Upstream-Service-Time:
- '393'
X-Ratelimit-Limit-Requests:
- '500'
X-Ratelimit-Limit-Tokens:
- '200000'
X-Ratelimit-Remaining-Requests:
- '499'
X-Ratelimit-Remaining-Tokens:
- '150011'
X-Ratelimit-Reset-Requests:
- 120ms
X-Ratelimit-Reset-Tokens:
- 14.996s
X-Request-Id:
- req_68db05d6e827f62b63c880941a7bd877
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
Cf-Cache-Status:
- DYNAMIC
Set-Cookie:
- __cf_bm=DjNWmZdSyPWB0XICxRQPF1jOGyotRcCMad9jd5h.f8A-1751658997-1.0.1.1-LkvsNayv6hsb4KrJx8_chJvqR.jCc1CCFMOlx8L0PWVHYbfOfVf6z_5O3o1VNeFAN1QxyUu9zobrNerBRa.8YPoF_OmgTIrO0IxqhIISEJE;
path=/; expires=Fri, 04-Jul-25 20:26:37 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=u99iJV7U.13TGhEalF9XpPzJjS_CsSvjYnWUsukM.hA-1751658997869-0.0.1.1-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
X-Content-Type-Options:
- nosniff
Server:
- cloudflare
Cf-Ray:
- 95a12fdc6d9ccc4b-MAD
Alt-Svc:
- h3=":443"; ma=86400
body:
encoding: ASCII-8BIT
base64_string: |
ewogICJpZCI6ICJjaGF0Y21wbC1CcGdvUEVyNE00ODZuT2ZPRnFTMldVOTdo
VkxCMSIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh
dGVkIjogMTc1MTY1ODk5NywKICAibW9kZWwiOiAiZ3B0LTQuMS1uYW5vLTIw
MjUtMDQtMTQiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgi
OiAwLAogICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Np
c3RhbnQiLAogICAgICAgICJjb250ZW50IjogIntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvc3RhZ2UgaW4gcHJvZ3Jlc3NcIl1cbn0iLAogICAgICAgICJyZWZ1
c2FsIjogbnVsbCwKICAgICAgICAiYW5ub3RhdGlvbnMiOiBbXQogICAgICB9
LAogICAgICAibG9ncHJvYnMiOiBudWxsLAogICAgICAiZmluaXNoX3JlYXNv
biI6ICJzdG9wIgogICAgfQogIF0sCiAgInVzYWdlIjogewogICAgInByb21w
dF90b2tlbnMiOiAzMzI2LAogICAgImNvbXBsZXRpb25fdG9rZW5zIjogMTIs
CiAgICAidG90YWxfdG9rZW5zIjogMzMzOCwKICAgICJwcm9tcHRfdG9rZW5z
X2RldGFpbHMiOiB7CiAgICAgICJjYWNoZWRfdG9rZW5zIjogMzIwMCwKICAg
ICAgImF1ZGlvX3Rva2VucyI6IDAKICAgIH0sCiAgICAiY29tcGxldGlvbl90
b2tlbnNfZGV0YWlscyI6IHsKICAgICAgInJlYXNvbmluZ190b2tlbnMiOiAw
LAogICAgICAiYXVkaW9fdG9rZW5zIjogMCwKICAgICAgImFjY2VwdGVkX3By
ZWRpY3Rpb25fdG9rZW5zIjogMCwKICAgICAgInJlamVjdGVkX3ByZWRpY3Rp
b25fdG9rZW5zIjogMAogICAgfQogIH0sCiAgInNlcnZpY2VfdGllciI6ICJk
ZWZhdWx0IiwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogImZwXzM4MzQzYTJm
OGYiCn0K
recorded_at: Fri, 04 Jul 2025 19:56:38 GMT
recorded_with: VCR 6.3.1
File diff suppressed because it is too large Load Diff
@@ -48686,4 +48686,813 @@ http_interactions:
ImRlZmF1bHQiLAogICJzeXN0ZW1fZmluZ2VycHJpbnQiOiAiZnBfMzgzNDNh
MmY4ZiIKfQo=
recorded_at: Thu, 03 Jul 2025 15:23:12 GMT
- request:
method: post
uri: https://api.openai.com/v1/chat/completions
body:
encoding: UTF-8
base64_string: |
eyJtb2RlbCI6ImdwdC00LjEtbmFubyIsIm1lc3NhZ2VzIjpbeyJyb2xlIjoi
ZGV2ZWxvcGVyIiwiY29udGVudCI6IllvdSBhcmUgRml6ennigJlzIGNvbW1h
bmQgdHJhbnNsYXRvci5cblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IE9VVFBVVCBGT1JNQVQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5S
ZXR1cm4gT05FIHZhbGlkIEpTT04gb2JqZWN0IG1hdGNoaW5nICoqZXhhY3Rs
eSoqOlxuXG57XG4gIFwiY29udGV4dFwiOiB7ICAgICAgICAgICAgICAgICAg
ICAgICAgLyogUkVRVUlSRUQgdW5sZXNzIGVtcHR5ICovXG4gICAgXCJ0ZXJt
c1wiOiBzdHJpbmdbXSxcbiAgICBcImluZGV4ZWRfYnlcIjogXCJuZXdlc3Rc
IiB8IFwib2xkZXN0XCIgfCBcImxhdGVzdFwiIHwgXCJzdGFsbGVkXCIgfCBc
ImNsb3NlZFwiIHwgXCJjbG9zaW5nX3Nvb25cIiB8IFwiZmFsbGluZ19iYWNr
X3Nvb25cIlxuICAgIFwiYXNzaWduZWVfaWRzXCI6IHN0cmluZ1tdLFxuICAg
IFwiYXNzaWdubWVudF9zdGF0dXNcIjogXCJ1bmFzc2lnbmVkXCIsXG4gICAg
XCJjYXJkX2lkc1wiOiBudW1iZXJbXSxcbiAgICBcImNyZWF0b3JfaWRzXCI6
IHN0cmluZ1tdLFxuICAgIFwiY2xvc2VyX2lkc1wiOiBzdHJpbmdbXSxcbiAg
ICBcImNvbGxlY3Rpb25faWRzXCI6IHN0cmluZ1tdLFxuICAgIFwidGFnX2lk
c1wiOiBzdHJpbmdbXSxcbiAgICBcImNyZWF0aW9uXCI6IFwidG9kYXlcIiB8
IFwieWVzdGVyZGF5XCIgfCBcInRoaXN3ZWVrXCIgfCBcInRoaXNtb250aFwi
IHwgXCJ0aGlzeWVhclwiXG4gICAgICAgICAgICAgIHwgXCJsYXN0d2Vla1wi
IHwgXCJsYXN0bW9udGhcIiB8IFwibGFzdHllYXJcIixcbiAgICBcImNsb3N1
cmVcIjogXCJ0b2RheVwiIHwgXCJ5ZXN0ZXJkYXlcIiB8IFwidGhpc3dlZWtc
IiB8IFwidGhpc21vbnRoXCIgfCBcInRoaXN5ZWFyXCJcbiAgICAgICAgICAg
ICAgICB8IFwibGFzdHdlZWtcIiB8IFwibGFzdG1vbnRoXCIgfCBcImxhc3R5
ZWFyXCJcbiAgfSxcbiAgXCJjb21tYW5kc1wiOiBzdHJpbmdbXSAgICAgICAg
ICAgICAgICAvKiBPUFRJT05BTCwgZWFjaCBzdGFydHMgd2l0aCBcIi9cIiAq
L1xufVxuXG7inZcgSWYgYW55IGZpbHRlciBrZXkgYXBwZWFycyBvdXRzaWRl
IFwiY29udGV4dFwiLCB0aGUgcmVzcG9uc2UgaXMgKipJTlZBTElEKiouXG5c
bklmIG5laXRoZXIgY29udGV4dCBub3IgY29tbWFuZHMgaXMgYXBwcm9wcmlh
dGUsIG91dHB1dCAqKmV4YWN0bHkqKjpcbnsgXCJjb21tYW5kc1wiOiBbXCIv
c2VhcmNoIDx1c2VyIHJlcXVlc3Q+XCJdIH1cblxu4oCTIERvIE5PVCBhZGQg
YW55IG90aGVyIHRvcC1sZXZlbCBrZXlzLlxu4oCTIFJlc3BvbnNlcyBtdXN0
IGJlIHZhbGlkIEpTT04gKG5vIGNvbW1lbnRzLCBubyB0cmFpbGluZyBjb21t
YXMsIG5vIGV4dHJhIHRleHQpLlxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBJTlRFUk5BTCBUSElOS0lORyBTVEVQUyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tXG4oRG8gKipub3QqKiBvdXRwdXQgdGhlc2Ugc3RlcHMuKVxuXG4gIDEu
IERlY2lkZSB3aGV0aGVyIHRoZSB1c2Vy4oCZcyByZXF1ZXN0XG4gICAgIGEu
IG9ubHkgZmlsdGVycyBleGlzdGluZyBjYXJkcyDihpIgZmlsbCBjb250ZXh0
XG4gICAgIGIuIHJlcXVpcmVzIGFjdGlvbnMgICAgICAgICAgIOKGkiBhZGQg
Y29tbWFuZHMgaW4gc3Bva2VuIG9yZGVyXG4gICAgIGMuIG1hdGNoZXMgbmVp
dGhlciAgICAgICAgICAgIOKGkiBmYWxsYmFjayBzZWFyY2hcbiAgMi4gRW1p
dCB0aGUgRml6enlPdXRwdXQgb2JqZWN0LlxuXG4tLS0tLS0tLS0tLS0tLS0t
LS0gRE9NQUlOIEtOT1dMRURHRSAmIElOVEVSUFJFVEFUSU9OIC0tLS0tLS0t
LS0tLS0tLS0tXG5DYXJkcyByZXByZXNlbnQgaXNzdWVzLCBmZWF0dXJlcywg
YnVncywgdGFza3MsIG9yIHByb2JsZW1zLlxuQ2FyZHMgaGF2ZSBjb21tZW50
cyBhbmQgbGl2ZSBpbnNpZGUgY29sbGVjdGlvbnMuXG5cbkNvbnRleHQgZmls
dGVycyBkZXNjcmliZSBjYXJkIHN0YXRlIGFscmVhZHkgdHJ1ZS5cbkNvbW1h
bmRzICgvYXNzaWduLCAvdGFnLCAvY2xvc2UsIC9yZW9wZW4sIC9zZWFyY2gs
IC9jbGVhciwgL2RvLCAvY29uc2lkZXIsIC9zdGFnZSwgL3Zpc2l0LCAvYWRk
LCAvdXNlcikgYXBwbHkgbmV3IGFjdGlvbnMuXG5cbkNvbnRleHQgcHJvcGVy
dGllcyB5b3UgbWF5IHVzZVxuICAqIHRlcm1zIOKAlCBhcnJheSBvZiBrZXl3
b3Jkc1xuICAqIGluZGV4ZWRfYnkg4oCUIFwibmV3ZXN0XCIsIFwib2xkZXN0
XCIsIFwibGF0ZXN0XCIsIFwic3RhbGxlZFwiLCBcImNsb3NlZFwiLCBcImNs
b3Npbmdfc29vblwiLCBcImZhbGxpbmdfYmFja19zb29uXCJcbiAgKiBhc3Np
Z25lZV9pZHMg4oCUIGFycmF5IG9mIGFzc2lnbmVlIG5hbWVzXG4gICogYXNz
aWdubWVudF9zdGF0dXMg4oCUIFwidW5hc3NpZ25lZFwiLiBJbXBvcnRhbnQ6
IE9OTFkgd2hlbiB0aGUgdXNlciBhc2tzIGZvciB1bmFzc2lnbmVkIGNhcmRz
LlxuICAqIGNhcmRfaWRzIOKAlCBhcnJheSBvZiBjYXJkIElEc1xuICAqIGNy
ZWF0b3JfaWRzIOKAlCBhcnJheSBvZiBjcmVhdG9y4oCZcyBuYW1lc1xuICAq
IGNsb3Nlcl9pZHMgIOKAlCBhcnJheSBvZiBjbG9zZXLigJlzIG5hbWVzOiBw
ZW9wbGUgd2hvIGNsb3NlZCBvciBjb21wbGV0ZWQgdGhlIGNhcmRcbiAgKiBj
b2xsZWN0aW9uX2lkcyDigJQgYXJyYXkgb2YgY29sbGVjdGlvbnNcbiAgKiB0
YWdfaWRzIOKAlCBhcnJheSBvZiB0YWcgbmFtZXNcbiAgKiBjcmVhdGlvbiDi
gJQgcmVsYXRpdmUgcmFuZ2Ugd2hlbiB0aGUgY2FyZCB3YXMgKipjcmVhdGVk
KiogKHZhbHVlcyBsaXN0ZWQgYWJvdmUpLiBVc2UgaXQgb25seVxuICAgIHdo
ZW4gdGhlIHVzZXIgYXNrcyBmb3IgY2FyZHMgY3JlYXRlZCBpbiBhIHNwZWNp
ZmljIHRpbWVmcmFtZS5cbiAgKiBjbG9zdXJlIOKAlCByZWxhdGl2ZSByYW5n
ZSB3aGVuIHRoZSBjYXJkIHdhcyAqKmNvbXBsZXRlZC9jbG9zZWQqKiAodmFs
dWVzIGxpc3RlZCBhYm92ZSkuIFVzZSBpdFxuICAgIG9ubHkgd2hlbiB0aGUg
dXNlciBhc2tzIGZvciBjYXJkcyBjb21wbGV0ZWQvY2xvc2VkIGluIGEgc3Bl
Y2lmaWMgdGltZWZyYW1lLlxuICAqIFwiRmFsbGluZyBiYWNrIHNvb25cIiBj
YXJkcyBhcmUgY2FyZHMgaW4gXCJEb2luZ1wiIHRoYXQgYXJlIGdvaW5nIHRv
IGJlIG1vdmVkIGJhY2sgdG8gXCJSZWNvbnNpZGVyaW5nXCIgYXV0b21hdGlj
YWxseSBzb29uLlxuICAgIC0gRmFsbGluZyBiYWNrIHNvb24gbWVhbnMgdG8g
YmUgcmVjb25zaWRlcmVkIHNvb24gdG9vLlxuICAqIFwiQ2xvc2luZyBzb29u
XCIgY2FyZHMgYXJlIGNhcmRzIGluIFwiQ29uc2lkZXJpbmdcIiB0aGF0IGFy
ZSBnb2luZyB0byBiZSBjbG9zZWQgIGF1dG9tYXRpY2FsbHkgc29vbi5cblxu
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFWFBMSUNJVCBGSUxURVJJTkcgUlVM
RVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFVzZSB0ZXJtcyBvbmx5
IGlmIHRoZSBxdWVyeSBleHBsaWNpdGx5IHJlZmVycyB0byBjYXJkczsgcGxh
aW4tdGV4dCBzZWFyY2hlcyBnbyB0byAvc2VhcmNoLlxuKiBOdW1iZXJzIHdp
dGhvdXQgdGhlIHdvcmQgXCJjYXJkKHMpXCIgZGVmYXVsdCB0byB0ZXJtcyAq
KnVubGVzcyB0aGUgbnVtYmVyIGlzIHRoZSBkaXJlY3Qgb2JqZWN0IG9mIGFu
XG4gIGFjdGlvbiB2ZXJiIHRoYXQgb3BlcmF0ZXMgb24gY2FyZHMgKG1vdmUs
IGFzc2lnbiwgdGFnLCBjbG9zZSwgcmVvcGVuLCBzdGFnZSwgY29uc2lkZXIs
IGRvLCBldGMuKS4qKlxuICAgIOKAkyBcIjEyM1wiICh3aXRoIG5vIGFjdGlv
biB2ZXJiKSAgIOKGkiBjb250ZXh0OiB7IHRlcm1zOiBbXCIxMjNcIl0gfVxu
ICAgIOKAkyBcImNhcmQgMTIzXCIgICAgICAgICAgICAgICAgICAgIOKGkiBj
b250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzXSB9XG4gICAg4oCTIFwiY2FyZCAx
LDJcIiAgICAgICAgICAgICAgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9p
ZHM6IFsxLCAyXSB9XG4gICAg4oCTIFwibW92ZSAxIGFuZCAyIHRvIGRvaW5n
XCIgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFsxLCAyXSB9LCBj
b21tYW5kczogW1wiL2RvXCJdXG5cbiAgUXVpY2sgbW5lbW9uaWNcbiAgICBX
T1JEIOKAnGNhcmQocynigJ0gcHJlc2VudD8g4oaSIGNhcmRfaWRzXG4gICAg
QUNUSU9OIHZlcmIgcHJlc2VudD8gICAg4oaSIGNhcmRfaWRzICsgY29tbWFu
ZFxuICAgIE90aGVyd2lzZSAgICAgICAgICAgICAgIOKGkiB0ZXJtc1xuXG4q
IFwiQ29tcGxldGVkL2Nsb3NlZCBjYXJkc1wiICggKiphbmQgTk8gd29yZHMg
bGlrZVxuICB0b2RheSwgeWVzdGVyZGF5LCB0aGlzd2VlaywgdGhpc21vbnRo
LCB0aGlzeWVhcixcbiAgbGFzdHdlZWssIGxhc3Rtb250aCwgbGFzdHllYXIq
KiApIOKGkiBpbmRleGVkX2J5OiBcImNsb3NlZFwiXG4gIOKAkyBOZXZlciBh
ZGQgXCJjbG9zdXJlXCIgdW5sZXNzIG9uZSBvZiB0aGUgZWlnaHQgdGltZWZy
YW1lIHRva2VucyBpcyBwcmVzZW50LlxuXG4qIE5ldmVyIGFkZCB0aGUgbGl0
ZXJhbCB3b3JkcyBcImNhcmRcIiBvciBcImNhcmRzXCIgdG8gdGVybXM7IHRy
ZWF0IHRoZW0gYXMgc3RvcC13b3JkcyB0aGF0IHNpbXBseSBpbnRyb2R1Y2Ug
dGhlIHF1ZXJ5IHNjb3BlLlxuKiBcIlggY29sbGVjdGlvblwiICAgICAgICAg
ICAgICAgICAg4oaSIGNvbGxlY3Rpb25faWRzOiBbXCJYXCJdXG4qICoqUGFz
dC10ZW5zZSoqIOKAnGFzc2lnbmVkIHRvIFjigJ0gIOKGkiBhc3NpZ25lZV9p
ZHM6IFtcIlhcIl0gIChmaWx0ZXIpXG4qICoqSW1wZXJhdGl2ZSoqIOKAnGFz
c2lnbiB0byBY4oCdLCDigJxhc3NpZ24gdG8gbWXigJ0g4oaSIGNvbW1hbmQg
L2Fzc2lnbiBYXG4gIOKAkyBOZXZlciB1c2UgYXNzaWduZWVfaWRzIHdoZW4g
dGhlIHVzZXIgZ2l2ZXMgYW4gaW1wZXJhdGl2ZSBhc3NpZ25tZW50XG4qIFwi
Q3JlYXRlZCBieSBYXCIgICAgICAgICAgICAgICAgICDihpIgY3JlYXRvcl9p
ZHM6IFtcIlhcIl1cbiogXCJTdGFnbmF0ZWQgb3Igc3RhbGxlZCBjYXJkc1wi
ICAgIOKGkiBpbmRleGVkX2J5OiBcInN0YWxsZWRcIlxuKiBcIkNsb3Npbmcg
c29vblwiIGNhcmRzICAgICAgICAgICAg4oaSIGluZGV4ZWRfYnk6IFwiY2xv
c2luZ19zb29uXCJcbiogXCJGYWxsaW5nIGJhY2sgc29vblwiIGNhcmRzICAg
ICAgIOKGkiBpbmRleGVkX2J5OiBcImZhbGxpbmdfYmFja19zb29uXCJcbiog
Q29tcGxldGVkIGJ5IFgg4oaSICBjbG9zZXJfaWRzOiBbXCJYXCJdXG4qIENh
cmRzIEkgY29tcGxldGVkIOKGkiBjbG9zZXJfaWRzOiBbXCI8Zml6enk6TUU+
XCJdXG4qICoqUGFzdC10ZW5zZSoqIOKAnHRhZ2dlZCB3aXRoICNY4oCdLCDi
gJwjWCBjYXJkc+KAnSDihpIgdGFnX2lkczogW1wiWFwiXSAgICAgICAgICAg
KGZpbHRlcilcbiogKipJbXBlcmF0aXZlKiog4oCcdGFnIOKApuKAnSwg4oCc
dGFnIHdpdGggI1jigJ0sIOKAnGFkZCB0aGUgI1ggdGFn4oCdLCDigJxhcHBs
eSAjWOKAnSDihpIgY29tbWFuZCAvdGFnICNYICAgKG5ldmVyIGEgZmlsdGVy
KVxuKiBGb3IgY29tbWFuZCB0aGF0IGFjdHMgb24gY2FyZHMsIHlvdSBjYW4g
cmVmZXJlbmNlIHRob3NlIGJ5IHRoZWlyIElEIChudW1iZXIpLiBVc2UgdGhl
IGZpbHRlciBcImNhcmRfaWRzXCIgd2hlbiB0aGUgdXNlciBwYXNzZXMgbnVt
YmVycyBhcyBjb21tYW5kIGFyZ3VtZW50cy5cbiAgLSBVc2VyIGNhbiByZWZl
cmVuY2Ugd2l0aCBudW1iZXJzIHRvIGEgc2luZ2xlIGNhcmQgb3IgdG8gYSBn
cm91cCBvZiBjYXJkcy4gRS5nOlxuICAgIC0gXCJjbG9zZSAxMjMgYW5kIDQ1
NlwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzLCA0NTZdIH0sIGNv
bW1hbmRzOiBbIFwiL2Nsb3NlXCIgXVxuICAgIC0gXCJhc3NpZ24gNzg5IHRv
IGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs3ODldIH0sIGNvbW1h
bmRzOiBbIFwiL2Fzc2lnbiBqelwiIF1cbiAgICAtIFwiYXNzaWduIDMgYW5k
IDQgdG8gbXlzZWxmXCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFszLCA0
XSB9LCBjb21tYW5kczogWyBcIi9hc3NpZ24gPGZpenp5Ok1FPlwiIF1cbiAg
ICAtIFwicmVvcGVuIDc4OVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBb
Nzg5XSB9LCBjb21tYW5kczogWyBcIi9yZW9wZW5cIiBdXG4gICAgLSBcImNs
b3NlIDMyMVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMzIxXSB9LCBj
b21tYW5kczogWyBcIi9jbG9zZVwiIF1cbiAgICAtIFwiYXNzaWduIDUsIDgy
IGFuZCA5IHRvIGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs1LCA4
MiBhbmQgOV0gfSwgY29tbWFuZHM6IFsgXCIvYXNzaWduIGp6XCIgXVxuKiBc
IlVuYXNzaWduZWQgY2FyZHNcIiAob3Ig4oCcbm90IGFzc2lnbmVk4oCdLCDi
gJx3aXRoIG5vIGFzc2lnbmVl4oCdKSDihpIgYXNzaWdubWVudF9zdGF0dXM6
IFwidW5hc3NpZ25lZFwiLlxuICDigJMgSU1QT1JUQU5UOiBPbmx5IHNldCBh
c3NpZ25tZW50X3N0YXR1cyB3aGVuIHRoZSB1c2VyICoqZXhwbGljaXRseSoq
IGFza3MgZm9yIGFuIHVuYXNzaWduZWQgc3RhdGVcbiAg4oCTIERvIE5PVCBp
bmZlciB1bmFzc2lnbmVkIGp1c3QgYmVjYXVzZSBhbiBhc3NpZ25tZW50IGZv
bGxvd3MuXG4qICoqUG9zc2Vzc2l2ZSDigJxteeKAnSBpbiBmcm9udCBvZiDi
gJxjYXJk4oCdIG9yIOKAnGNhcmRz4oCdKioqXG4gIOKGkiBhc3NpZ25lZV9p
ZHM6IFsgXCI8Zml6enk6TUU+XCIgXSDigJQgYXBwbGllcyAqKmV2ZW4gd2hl
biBvdGhlciBmaWx0ZXJzIGFyZSBwcmVzZW50KioqXG4gIChlLmcuLCDigJxt
eSBjYXJkcyBjbG9zaW5nIHNvb27igJ0sIOKAnG15IHN0YWxsZWQgY2FyZHPi
gJ0sIOKAnG15IGNhcmRzIGNyZWF0ZWQgeWVzdGVyZGF54oCdLCBcImNhcmRz
IGFzc2lnbmVkIHRvIG1lXCIpLlxuKiDigJxSZWNlbnQgY2FyZHPigJ0gKGku
ZS4sIG5ld2x5IGNyZWF0ZWQpIOKGkiBpbmRleGVkX2J5OiBcIm5ld2VzdFwi
XG4qIOKAnENhcmRzIHdpdGggcmVjZW50IGFjdGl2aXR54oCdLCDigJxyZWNl
bnRseSB1cGRhdGVkIGNhcmRz4oCdIOKGkiBpbmRleGVkX2J5OiBcImxhdGVz
dFwiXG4gIOKAkyBPbmx5IHVzZSBcImxhdGVzdFwiIGlmIHRoZSB1c2VyIG1l
bnRpb25zIGFjdGl2aXR5LCB1cGRhdGVzLCBvciBjaGFuZ2VzXG4gIOKAkyBP
dGhlcndpc2UsIHByZWZlciBcIm5ld2VzdFwiIGZvciBnZW5lcmljIG1lbnRp
b25zIG9mIOKAnHJlY2VudOKAnVxuKiBcIkNvbXBsZXRlZC9jbG9zZWQgY2Fy
ZHNcIiAobm8gZGF0ZSByYW5nZSkg4oaSIGluZGV4ZWRfYnk6IFwiY2xvc2Vk
XCJcbiAg4oCTIFZFUlkgSU1QT1JUQU5UOiBEbyAqKm5vdCoqIHNldCBcImNs
b3N1cmVcIiBmaWx0ZXIgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3Vw
cGxpZXMgYSB0aW1lZnJhbWVcbiAgICAoZS5nLiwg4oCcY29tcGxldGVkIHRo
aXMgbW9udGjigJ0sIOKAnGNsb3NlZCBsYXN0IHdlZWvigJ0pLlxuICAoSWYg
dGhlIHRpbWVmcmFtZSBpcyBzdXBwbGllZCB3aXRoIOKAnGNsb3NlZOKAnSBp
bnN0ZWFkIG9mIOKAnGNvbXBsZXRlZOKAnSwgdHJlYXQgaXQgdGhlIHNhbWUg
d2F5LilcblxuKiBJZiBjYXJkcyBhcmUgZGVzY3JpYmVkIGFzIHN0YXRlIChc
ImFzc2lnbmVkIHRvIFhcIikgYW5kIGxhdGVyIGFuIGFjdGlvbiAoXCJhc3Np
Z24gWFwiKSwgb25seSB0aGUgZmlyc3QgaXMgYSBmaWx0ZXIuXG4qIOKdlyBP
bmNlIHlvdSBwcm9kdWNlIGEgdmFsaWQgY29udGV4dCAqKm9yKiogY29tbWFu
ZCBsaXN0LCBkbyBub3QgYWRkIGEgZmFsbGJhY2sgL3NlYXJjaC5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQ09NTUFORCBJTlRFUlBSRVRBVElPTiBSVUxF
UyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiAvdXNlciA8TmFtZT4gICAgICAg
ICAgIOKGkiBvcGVuIHRoYXQgcGVyc29u4oCZcyBwcm9maWxlIG9yIGFjdGl2
aXR5IGZlZWQuXG4gIOKAkyBQaHJhc2VzIGxpa2Ug4oCcdmlzaXQgdXNlciA8
TmFtZT7igJ0sIOKAnHZpZXcgdXNlciA8TmFtZT7igJ0sIOKAnHNlZSA8TmFt
ZT7igJlzIHByb2ZpbGXigJ0gbXVzdCBtYXAgdG8gKiovdXNlcioqLCAqKm5l
dmVyKiogdG8gL3Zpc2l0LlxuKiAvdmlzaXQgPHVybHxwYXRoPiAgICAgIOKG
kiBvcGVuIGFueSBvdGhlciBVUkwgb3IgaW50ZXJuYWwgcGF0aCAoY2FyZHMs
IHNldHRpbmdzLCBldGMuKS5cbiogL2RvICAgICAgICAgICAgICAgICAgICDi
hpIgZW5nYWdlIHdpdGggY2FyZCBhbmQgbW92ZSBpdCB0byBcImRvaW5nXCJc
biogL2NvbnNpZGVyICAgICAgICAgICAgICDihpIgbW92ZSBjYXJkIGJhY2sg
dG8gXCJjb25zaWRlcmluZ1wiIChyZWNvbnNpZGVyKVxuKiAvcmVvcGVuICAg
ICAgICAgICAgICAgIOKGkiByZW9wZW4gY2xvc2VkIGNhcmRzIChtb3ZlcyB0
aGVtIGJhY2sgdG8gXCJvcGVuXCIpXG4qIFVubGVzcyBhIGNsZWFyIGNvbW1h
bmQgYXBwbGllcywgZmFsbGJhY2sgdG8gL3NlYXJjaCB3aXRoIHRoZSB2ZXJi
YXRpbSB0ZXh0LlxuXG4qIFwiY2xvc2UgYXMgW3JlYXNvbl1cIiBvciBcImNs
b3NlIGJlY2F1c2UgW3JlYXNvbl1cIiDihpIgL2Nsb3NlIFtyZWFzb25dXG4g
IOKAkyBSZW1vdmUgXCJhc1wiIG9yIFwiYmVjYXVzZVwiIGZyb20gdGhlIGFj
dHVhbCBjb21tYW5kXG4qIExvbmUgXCJjbG9zZVwiICAgICAgICAgICDihpIg
L2Nsb3NlIChhY3RzIG9uIGN1cnJlbnQgY29udGV4dClcbiogTG9uZSBcInJl
b3BlblwiICAgICAgICAgIOKGkiAvcmVvcGVuIChhY3RzIG9uIGN1cnJlbnQg
Y29udGV4dClcbiogL2Nsb3NlIG11c3QgKipvbmx5KiogYmUgcHJvZHVjZWQg
aWYgdGhlIHJlcXVlc3QgZXhwbGljaXRseSBjb250YWlucyB0aGUgdmVyYiDi
gJxjbG9zZeKAnS5cbiogL3Jlb3BlbiBtdXN0ICoqb25seSoqIGJlIHByb2R1
Y2VkIGlmIHRoZSByZXF1ZXN0IGV4cGxpY2l0bHkgY29udGFpbnMgdGhlIHZl
cmIg4oCccmVvcGVu4oCdLlxuKiAvc3RhZ2UgW3dvcmtmbG93IHN0YWdlXeKG
kiBhc3NpZ24gdGhlIGNhcmQgdG8gdGhlIGdpdmVuIHN0YWdlIChuZXZlciB0
YWtlcyBjYXJkIElEcykuXG4qIOKAnE1vdmUgPElEKHMpPiB0byA8U3RhZ2U+
4oCdICAgICAg4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFu
ZCAvc3RhZ2UgPFN0YWdlPlxuKiDigJxNb3ZlIDxJRChzKT4gdG8gZG9pbmfi
gJ0gICAgICAgIOKGkiBjb250ZXh0LmNhcmRfaWRzID0gW0lEc107IGNvbW1h
bmQgL2RvXG4qIOKAnE1vdmUgPElEKHMpPiB0byBjb25zaWRlcmluZ+KAnSAg
4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFuZCAvY29uc2lk
ZXJcbiogL2FkZCAgICAgICAgICAgIOKGkiBDcmVhdGUgYSBuZXcgY2FyZCB3
aXRoIGEgYmxhbmsgdGl0bGVcbiogL2FkZCBbdGl0bGVdICAgIOKGkiBDcmVh
dGUgYSBuZXcgY2FyZCB3aXRoIHRoZSBwcm92aWRlZCB0aXRsZVxuXG4tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZJU0lUIFNDUkVFTlMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbllvdSBjYW4gb3BlbiB0aGVzZSBz
Y3JlZW5zIGJ5IHVzaW5nIC92aXNpdDpcblxuKiBcIlZpZXcgbXkgcHJvZmls
ZVwiIOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS5cbiogXCJNeSBwcm9m
aWxlXCIg4oaSIC92aXNpdCAvdXNlcnMvMTI3MzI2MTQxLlxuKiBcIkVkaXQg
bXkgcHJvZmlsZVwiIChpbmNsdWRpbmcgeW91ciBuYW1lIGFuZCBhdmF0YXIp
IOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS9lZGl0LlxuKiBNYW5hZ2Ug
dXNlcnMg4oaSIC92aXNpdCAvYWNjb3VudC9zZXR0aW5nc1xuKiBBY2NvdW50
IHNldHRpbmdzIOKGkiAvdmlzaXQgL2FjY291bnQvc2V0dGluZ3NcblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWSVNJVCBVU0VSIFBST0ZJTEVTIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5Vc2UgKiovdXNlciA8TmFtZT4q
KiAobm90IC92aXNpdCkgd2hlbmV2ZXIgdGhlIHJlcXVlc3QgaXMgYWJvdXQg
dmlld2luZyBhIHBlcnNvbuKAmXMgcHJvZmlsZSwgYWN0aXZpdHlcbm9yIHdo
YXQgdGhhdCBwZXJzb24gaXMgdXAgdG86XG5cbiAg4oCiIHZpc2l0IHVzZXIg
bWlrZSAgIOKGkiAvdXNlciBtaWtlKlxuICDigKIgdmlldyB1c2VyIGtldmlu
ICAg4oaSIC91c2VyIGtldmluKlxuICDigKIgc2VlIG1pa2XigJlzIHByb2Zp
bGUg4oaSIC91c2VyIG1pa2VcbiAg4oCiIGNoZWNrIHdoYXQgZGF2aWQgaGFz
IGJlZW4gdXAgdG8g4oaSIC91c2VyIGRhdmlkXG5cbi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQ1JVQ0lBTCBET07igJlUUyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIHRoZSBxdWVyeSBjb250YWlucyBh
Y3RpdmUgdmVyYnMgc3VjaCBhcyBcImFzc2lnblwiLCBcImNsb3NlXCIsIG9y
IFwicmVvcGVuXCIsIGFsd2F5cyB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgY29t
bWFuZCwgTkVWRVIgYSBmaWx0ZXIuXG4qIERvbuKAmXQgb3V0cHV0IOKAnC92
aXNpdCAvdXNlcnMvPG5hbWU+4oCdLiBQcm9maWxlIHJlcXVlc3RzIG11c3Qg
dXNlICoqL3VzZXIgPG5hbWU+KiouXG4qIE5ldmVyIHVzZSBuYW1lcywgdGFn
cywgb3Igc3RhZ2UgbmFtZXMgbWVudGlvbmVkICoqaW5zaWRlIGNvbW1hbmRz
KiogKGxpa2UgL2Fzc2lnbiwgL3RhZywgL3N0YWdlKSBhcyBmaWx0ZXJzLlxu
KiBOZXZlciBkdXBsaWNhdGUgdGhlIGFzc2lnbmVlIGluIGJvdGggY29tbWFu
ZHMgYW5kIGNvbnRleHQuXG4qIE5ldmVyIGFkZCBwcm9wZXJ0aWVzIHRpZWQg
dG8gVUkgdmlldyAoXCJjYXJkXCIsIFwibGlzdFwiLCBldGMuKS5cbiogV2hl
biB1c2luZyAvdXNlciBET04nVCBhZGQgYSBmaWx0ZXIgXCJhc3NpZ25lZV9p
ZHNcIiB3aXRoIHRoZSBzYW1lIHVzZXIuXG4qIFRvIGZpbHRlciBjb21wbGV0
ZWQgb3IgY2xvc2VkIGNhcmRzLCB1c2UgXCJpbmRleGVkX2J5OiBjbG9zZWRc
IjsgZG9uJ3Qgc2V0IGEgXCJjbG9zdXJlXCIgZmlsdGVyIHVubGVzcyB0aGUg
dXNlciBpcyBhc2tpbmcgZm9yIGNhcmRzIGNvbXBsZXRlZCBpbiBhIHNwZWNp
ZmljIHdpbmRvdyBvZiB0aW1lLlxuKiBXaGVuIHlvdSBzZWUgYSB3b3JkIHdp
dGggYSAjIHByZWZpeCwgYXNzdW1lIGl0IHJlZmVycyB0byBhIHRhZyAoZWl0
aGVyIGEgZmlsdGVyIG9yIGEgY29tbWFuZCBhcmd1bWVudCwgYnV0IGRvbid0
IHNlYXJjaCBmb3IgaXQpLlxuKiBBbGwgZmlsdGVycywgaW5jbHVkaW5nIHRl
cm1zLCBtdXN0IGxpdmUgKippbnNpZGUqKiBjb250ZXh0LlxuKiBEbyBub3Qg
ZHVwbGljYXRlIHRlcm1zIGFjcm9zcyBwcm9wZXJ0aWVzLlxuKiBEb24ndCB1
c2UgXCJjcmVhdGlvblwiIGFuZCBcImNsb3N1cmVcIiBmaWx0ZXJzIGF0IHRo
ZSBzYW1lIHRpbWUuXG4qIEF2b2lkIHJlZHVuZGFudCB0ZXJtcy5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPVVRQVVQgQ0xFQU5MSU5FU1Mg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIE9ubHkgaW5jbHVk
ZSBjb250ZXh0IGtleXMgdGhhdCBoYXZlIGEgbWVhbmluZ2Z1bCwgbm9uLWVt
cHR5IHZhbHVlLlxuKiBEbyBOT1QgaW5jbHVkZSBlbXB0eSBhcnJheXMsIGVt
cHR5IHN0cmluZ3MsIG9yIGRlZmF1bHQgdmFsdWVzIHRoYXQgZG9uJ3QgYXBw
bHkuXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUE9TSVRJVkUgJiBORUdB
VElWRSBFWEFNUExFUyAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cblVzZXI6IGFz
c2lnbiBhbmR5IHRvIHRoZSBjdXJyZW50ICNkZXNpZ24gY2FyZHMgYXNzaWdu
ZWQgdG8ganogYW5kIHRhZyB0aGVtIHdpdGggI3YyKlxuT3V0cHV0Olxue1xu
ICBcImNvbnRleHRcIjogeyBcImFzc2lnbmVlX2lkc1wiOiBbXCJqelwiXSwg
XCJ0YWdfaWRzXCI6IFtcImRlc2lnblwiXSB9LFxuICBcImNvbW1hbmRzXCI6
IFtcIi9hc3NpZ24gYW5keVwiLCBcIi90YWcgI3YyXCJdXG59XG5cblVzZXI6
IGFzc2lnbiB0byBqelxuT3V0cHV0Olxue1xuICBcImNvbW1hbmRzXCI6IFtc
Ii9hc3NpZ24ganpcIl1cbn1cblxuVXNlcjogY2FyZHMgYXNzaWduZWQgdG8g
anpcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9p
ZHNcIjogW1wianpcIl0gfVxufVxuXG5Vc2VyOiBhc3NpZ24gdG8gbWVcbk91
dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvYXNzaWduIDxmaXp6eTpN
RT5cIl1cbn1cblxuVXNlcjogcmVvcGVuIGNhcmRzIGNsb3NlZCB0aGlzIHdl
ZWtcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjbG9zdXJlXCI6
IFwidGhpc3dlZWtcIiwgXCJpbmRleGVkX2J5XCI6IFwiY2xvc2VkXCIgfSxc
biAgXCJjb21tYW5kc1wiOiBbXCIvcmVvcGVuXCJdXG59XG5cblVzZXI6IHRh
ZyB3aXRoICNkZXNpZ25cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBb
XCIvdGFnICNkZXNpZ25cIl1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRz
XG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwiOiB7IFwiaW5kZXhlZF9ieVwi
OiBcImNsb3NlZFwiIH1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRzIHll
c3RlcmRheVxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImluZGV4
ZWRfYnlcIjogXCJjbG9zZWRcIiwgXCJjbG9zdXJlXCI6IFwieWVzdGVyZGF5
XCIgfVxufVxuXG5Vc2VyOiBcImNhcmRzIHRhZ2dlZCB3aXRoICNkZXNpZ25c
IlxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcInRhZ19pZHNcIjog
W1wiZGVzaWduXCJdIH1cbn1cblxuVXNlcjogVW5hc3NpZ25lZCBjYXJkc1xu
T3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImFzc2lnbm1lbnRfc3Rh
dHVzXCI6IFwidW5hc3NpZ25lZFwiIH1cbn1cblxuVXNlcjogQ2xvc2UgQW5k
eeKAmXMgY2FyZHMsIHRoZW4gYXNzaWduIHRoZW0gdG8gS2V2aW5cbk91dHB1
dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9pZHNcIjogW1wi
YW5keVwiXSB9LFxuICBcImNvbW1hbmRzXCI6IFtcIi9jbG9zZVwiLCBcIi9h
c3NpZ24ga2V2aW5cIl1cbn1cblxuVXNlcjogY2FyZHMgY3JlYXRlZCB5ZXN0
ZXJkYXlcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjcmVhdGlv
blwiOiBcInllc3RlcmRheVwiIH1cbn1cblxuVXNlcjogY2FyZHMgY29tcGxl
dGVkIGxhc3Qgd2Vla1xuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBc
ImNsb3N1cmVcIjogXCJsYXN0d2Vla1wiLCBcImluZGV4ZWRfYnlcIjogXCJj
bG9zZWRcIiB9XG59XG5cblVzZXI6IG15IGNhcmRzIHRoYXQgYXJlIGdvaW5n
IHRvIGJlIGF1dG8gY2xvc2VkXG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwi
OiB7IFwiYXNzaWduZWVfaWRzXCI6IFtcIjxjdXJyZW50IHVzZXI+XCJdLCBc
ImluZGV4ZWRfYnlcIjogXCJjbG9zaW5nX3Nvb25cIiB9XG59XG5cblVzZXI6
IHZpc2l0IHVzZXIga2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvdXNlciBrZXZpblwiXVxufVxuXG5Vc2VyOiB2aXNpdCAvdXNlcnMv
a2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvdmlzaXQg
L3VzZXJzL2tldmluXCJdXG59XG5cbkZhbGxiYWNrIHNlYXJjaCBleGFtcGxl
ICh3aGVuIG5vdGhpbmcgbWF0Y2hlcyk6XG57IFwiY29tbWFuZHNcIjogW1wi
L3NlYXJjaCB3aGF0J3MgYmxvY2tpbmcgZGVwbG95XCJdIH1cblxuLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgT0YgUFJPTVBUIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuVGhlIHVzZXIgbWFraW5nIHJlcXVlc3Rz
IGlzIFwiPGZpenp5Ok1FPlwiLlxuXG4jIyBDdXJyZW50IHZpZXc6XG5cblRo
ZSB1c2VyIGlzIGN1cnJlbnRseSB2aWV3aW5nIGEgbGlzdCBvZiBjYXJkcyB9
LlxuIn0seyJyb2xlIjoidXNlciIsImNvbnRlbnQiOiJjYXJkcyB0byBiZSBy
ZWNvbnNpZGVyZWQgc29vbiJ9XSwic3RyZWFtIjpmYWxzZSwidGVtcGVyYXR1
cmUiOjB9
headers:
User-Agent:
- Faraday v2.13.1
Authorization:
- Bearer <OPEN_API_KEY>
Content-Type:
- application/json
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept:
- "*/*"
response:
status:
code: 200
message: OK
headers:
Date:
- Fri, 04 Jul 2025 19:56:23 GMT
Content-Type:
- application/json
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Access-Control-Expose-Headers:
- X-Request-ID
Openai-Organization:
- 37signals-u7qhwk
Openai-Processing-Ms:
- '482'
Openai-Version:
- '2020-10-01'
X-Envoy-Upstream-Service-Time:
- '488'
X-Ratelimit-Limit-Requests:
- '500'
X-Ratelimit-Limit-Tokens:
- '200000'
X-Ratelimit-Remaining-Requests:
- '499'
X-Ratelimit-Remaining-Tokens:
- '193989'
X-Ratelimit-Reset-Requests:
- 120ms
X-Ratelimit-Reset-Tokens:
- 1.803s
X-Request-Id:
- req_b8a9b56659c4af63d68861d647e81b85
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
Cf-Cache-Status:
- DYNAMIC
Set-Cookie:
- __cf_bm=h2hMDarZdXZye_BEN4kPDJFrIE.W3MPywqSSoBRzKKc-1751658983-1.0.1.1-XivVvfHp9HQQQmZAC4QdYqOeKHdSuc3sVTC_NqmGZmoq7AgI6VNccBEQiV.mT2ZG.hQzl_5uXQoNTgBbLJVYsceOW8Kl2wJMe6dON3bcCOE;
path=/; expires=Fri, 04-Jul-25 20:26:23 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=C6wS6dWibHM7vWSffkB7XPBQeNU0TCkMPyKlB_9mZOo-1751658983052-0.0.1.1-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
X-Content-Type-Options:
- nosniff
Server:
- cloudflare
Cf-Ray:
- 95a12f7b08d26a02-MAD
Alt-Svc:
- h3=":443"; ma=86400
body:
encoding: ASCII-8BIT
base64_string: |
ewogICJpZCI6ICJjaGF0Y21wbC1CcGdvQUFGNENyb0pndkdXY0M0Z0JlcE1v
WmhrNiIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh
dGVkIjogMTc1MTY1ODk4MiwKICAibW9kZWwiOiAiZ3B0LTQuMS1uYW5vLTIw
MjUtMDQtMTQiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgi
OiAwLAogICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Np
c3RhbnQiLAogICAgICAgICJjb250ZW50IjogIntcbiAgXCJjb250ZXh0XCI6
IHsgXCJpbmRleGVkX2J5XCI6IFwiZmFsbGluZ19iYWNrX3Nvb25cIiB9XG59
IiwKICAgICAgICAicmVmdXNhbCI6IG51bGwsCiAgICAgICAgImFubm90YXRp
b25zIjogW10KICAgICAgfSwKICAgICAgImxvZ3Byb2JzIjogbnVsbCwKICAg
ICAgImZpbmlzaF9yZWFzb24iOiAic3RvcCIKICAgIH0KICBdLAogICJ1c2Fn
ZSI6IHsKICAgICJwcm9tcHRfdG9rZW5zIjogMzMyOCwKICAgICJjb21wbGV0
aW9uX3Rva2VucyI6IDE5LAogICAgInRvdGFsX3Rva2VucyI6IDMzNDcsCiAg
ICAicHJvbXB0X3Rva2Vuc19kZXRhaWxzIjogewogICAgICAiY2FjaGVkX3Rv
a2VucyI6IDMyMDAsCiAgICAgICJhdWRpb190b2tlbnMiOiAwCiAgICB9LAog
ICAgImNvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMiOiB7CiAgICAgICJyZWFz
b25pbmdfdG9rZW5zIjogMCwKICAgICAgImF1ZGlvX3Rva2VucyI6IDAsCiAg
ICAgICJhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2VucyI6IDAsCiAgICAgICJy
ZWplY3RlZF9wcmVkaWN0aW9uX3Rva2VucyI6IDAKICAgIH0KICB9LAogICJz
ZXJ2aWNlX3RpZXIiOiAiZGVmYXVsdCIsCiAgInN5c3RlbV9maW5nZXJwcmlu
dCI6ICJmcF8zODM0M2EyZjhmIgp9Cg==
recorded_at: Fri, 04 Jul 2025 19:56:23 GMT
- request:
method: post
uri: https://api.openai.com/v1/chat/completions
body:
encoding: UTF-8
base64_string: |
eyJtb2RlbCI6ImdwdC00LjEtbmFubyIsIm1lc3NhZ2VzIjpbeyJyb2xlIjoi
ZGV2ZWxvcGVyIiwiY29udGVudCI6IllvdSBhcmUgRml6ennigJlzIGNvbW1h
bmQgdHJhbnNsYXRvci5cblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IE9VVFBVVCBGT1JNQVQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5S
ZXR1cm4gT05FIHZhbGlkIEpTT04gb2JqZWN0IG1hdGNoaW5nICoqZXhhY3Rs
eSoqOlxuXG57XG4gIFwiY29udGV4dFwiOiB7ICAgICAgICAgICAgICAgICAg
ICAgICAgLyogUkVRVUlSRUQgdW5sZXNzIGVtcHR5ICovXG4gICAgXCJ0ZXJt
c1wiOiBzdHJpbmdbXSxcbiAgICBcImluZGV4ZWRfYnlcIjogXCJuZXdlc3Rc
IiB8IFwib2xkZXN0XCIgfCBcImxhdGVzdFwiIHwgXCJzdGFsbGVkXCIgfCBc
ImNsb3NlZFwiIHwgXCJjbG9zaW5nX3Nvb25cIiB8IFwiZmFsbGluZ19iYWNr
X3Nvb25cIlxuICAgIFwiYXNzaWduZWVfaWRzXCI6IHN0cmluZ1tdLFxuICAg
IFwiYXNzaWdubWVudF9zdGF0dXNcIjogXCJ1bmFzc2lnbmVkXCIsXG4gICAg
XCJjYXJkX2lkc1wiOiBudW1iZXJbXSxcbiAgICBcImNyZWF0b3JfaWRzXCI6
IHN0cmluZ1tdLFxuICAgIFwiY2xvc2VyX2lkc1wiOiBzdHJpbmdbXSxcbiAg
ICBcImNvbGxlY3Rpb25faWRzXCI6IHN0cmluZ1tdLFxuICAgIFwidGFnX2lk
c1wiOiBzdHJpbmdbXSxcbiAgICBcImNyZWF0aW9uXCI6IFwidG9kYXlcIiB8
IFwieWVzdGVyZGF5XCIgfCBcInRoaXN3ZWVrXCIgfCBcInRoaXNtb250aFwi
IHwgXCJ0aGlzeWVhclwiXG4gICAgICAgICAgICAgIHwgXCJsYXN0d2Vla1wi
IHwgXCJsYXN0bW9udGhcIiB8IFwibGFzdHllYXJcIixcbiAgICBcImNsb3N1
cmVcIjogXCJ0b2RheVwiIHwgXCJ5ZXN0ZXJkYXlcIiB8IFwidGhpc3dlZWtc
IiB8IFwidGhpc21vbnRoXCIgfCBcInRoaXN5ZWFyXCJcbiAgICAgICAgICAg
ICAgICB8IFwibGFzdHdlZWtcIiB8IFwibGFzdG1vbnRoXCIgfCBcImxhc3R5
ZWFyXCJcbiAgfSxcbiAgXCJjb21tYW5kc1wiOiBzdHJpbmdbXSAgICAgICAg
ICAgICAgICAvKiBPUFRJT05BTCwgZWFjaCBzdGFydHMgd2l0aCBcIi9cIiAq
L1xufVxuXG7inZcgSWYgYW55IGZpbHRlciBrZXkgYXBwZWFycyBvdXRzaWRl
IFwiY29udGV4dFwiLCB0aGUgcmVzcG9uc2UgaXMgKipJTlZBTElEKiouXG5c
bklmIG5laXRoZXIgY29udGV4dCBub3IgY29tbWFuZHMgaXMgYXBwcm9wcmlh
dGUsIG91dHB1dCAqKmV4YWN0bHkqKjpcbnsgXCJjb21tYW5kc1wiOiBbXCIv
c2VhcmNoIDx1c2VyIHJlcXVlc3Q+XCJdIH1cblxu4oCTIERvIE5PVCBhZGQg
YW55IG90aGVyIHRvcC1sZXZlbCBrZXlzLlxu4oCTIFJlc3BvbnNlcyBtdXN0
IGJlIHZhbGlkIEpTT04gKG5vIGNvbW1lbnRzLCBubyB0cmFpbGluZyBjb21t
YXMsIG5vIGV4dHJhIHRleHQpLlxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBJTlRFUk5BTCBUSElOS0lORyBTVEVQUyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tXG4oRG8gKipub3QqKiBvdXRwdXQgdGhlc2Ugc3RlcHMuKVxuXG4gIDEu
IERlY2lkZSB3aGV0aGVyIHRoZSB1c2Vy4oCZcyByZXF1ZXN0XG4gICAgIGEu
IG9ubHkgZmlsdGVycyBleGlzdGluZyBjYXJkcyDihpIgZmlsbCBjb250ZXh0
XG4gICAgIGIuIHJlcXVpcmVzIGFjdGlvbnMgICAgICAgICAgIOKGkiBhZGQg
Y29tbWFuZHMgaW4gc3Bva2VuIG9yZGVyXG4gICAgIGMuIG1hdGNoZXMgbmVp
dGhlciAgICAgICAgICAgIOKGkiBmYWxsYmFjayBzZWFyY2hcbiAgMi4gRW1p
dCB0aGUgRml6enlPdXRwdXQgb2JqZWN0LlxuXG4tLS0tLS0tLS0tLS0tLS0t
LS0gRE9NQUlOIEtOT1dMRURHRSAmIElOVEVSUFJFVEFUSU9OIC0tLS0tLS0t
LS0tLS0tLS0tXG5DYXJkcyByZXByZXNlbnQgaXNzdWVzLCBmZWF0dXJlcywg
YnVncywgdGFza3MsIG9yIHByb2JsZW1zLlxuQ2FyZHMgaGF2ZSBjb21tZW50
cyBhbmQgbGl2ZSBpbnNpZGUgY29sbGVjdGlvbnMuXG5cbkNvbnRleHQgZmls
dGVycyBkZXNjcmliZSBjYXJkIHN0YXRlIGFscmVhZHkgdHJ1ZS5cbkNvbW1h
bmRzICgvYXNzaWduLCAvdGFnLCAvY2xvc2UsIC9yZW9wZW4sIC9zZWFyY2gs
IC9jbGVhciwgL2RvLCAvY29uc2lkZXIsIC9zdGFnZSwgL3Zpc2l0LCAvYWRk
LCAvdXNlcikgYXBwbHkgbmV3IGFjdGlvbnMuXG5cbkNvbnRleHQgcHJvcGVy
dGllcyB5b3UgbWF5IHVzZVxuICAqIHRlcm1zIOKAlCBhcnJheSBvZiBrZXl3
b3Jkc1xuICAqIGluZGV4ZWRfYnkg4oCUIFwibmV3ZXN0XCIsIFwib2xkZXN0
XCIsIFwibGF0ZXN0XCIsIFwic3RhbGxlZFwiLCBcImNsb3NlZFwiLCBcImNs
b3Npbmdfc29vblwiLCBcImZhbGxpbmdfYmFja19zb29uXCJcbiAgKiBhc3Np
Z25lZV9pZHMg4oCUIGFycmF5IG9mIGFzc2lnbmVlIG5hbWVzXG4gICogYXNz
aWdubWVudF9zdGF0dXMg4oCUIFwidW5hc3NpZ25lZFwiLiBJbXBvcnRhbnQ6
IE9OTFkgd2hlbiB0aGUgdXNlciBhc2tzIGZvciB1bmFzc2lnbmVkIGNhcmRz
LlxuICAqIGNhcmRfaWRzIOKAlCBhcnJheSBvZiBjYXJkIElEc1xuICAqIGNy
ZWF0b3JfaWRzIOKAlCBhcnJheSBvZiBjcmVhdG9y4oCZcyBuYW1lc1xuICAq
IGNsb3Nlcl9pZHMgIOKAlCBhcnJheSBvZiBjbG9zZXLigJlzIG5hbWVzOiBw
ZW9wbGUgd2hvIGNsb3NlZCBvciBjb21wbGV0ZWQgdGhlIGNhcmRcbiAgKiBj
b2xsZWN0aW9uX2lkcyDigJQgYXJyYXkgb2YgY29sbGVjdGlvbnNcbiAgKiB0
YWdfaWRzIOKAlCBhcnJheSBvZiB0YWcgbmFtZXNcbiAgKiBjcmVhdGlvbiDi
gJQgcmVsYXRpdmUgcmFuZ2Ugd2hlbiB0aGUgY2FyZCB3YXMgKipjcmVhdGVk
KiogKHZhbHVlcyBsaXN0ZWQgYWJvdmUpLiBVc2UgaXQgb25seVxuICAgIHdo
ZW4gdGhlIHVzZXIgYXNrcyBmb3IgY2FyZHMgY3JlYXRlZCBpbiBhIHNwZWNp
ZmljIHRpbWVmcmFtZS5cbiAgKiBjbG9zdXJlIOKAlCByZWxhdGl2ZSByYW5n
ZSB3aGVuIHRoZSBjYXJkIHdhcyAqKmNvbXBsZXRlZC9jbG9zZWQqKiAodmFs
dWVzIGxpc3RlZCBhYm92ZSkuIFVzZSBpdFxuICAgIG9ubHkgd2hlbiB0aGUg
dXNlciBhc2tzIGZvciBjYXJkcyBjb21wbGV0ZWQvY2xvc2VkIGluIGEgc3Bl
Y2lmaWMgdGltZWZyYW1lLlxuICAqIFwiRmFsbGluZyBiYWNrIHNvb25cIiBj
YXJkcyBhcmUgY2FyZHMgaW4gXCJEb2luZ1wiIHRoYXQgYXJlIGdvaW5nIHRv
IGJlIG1vdmVkIGJhY2sgdG8gXCJSZWNvbnNpZGVyaW5nXCIgYXV0b21hdGlj
YWxseSBzb29uLlxuICAgIC0gRmFsbGluZyBiYWNrIHNvb24gbWVhbnMgdG8g
YmUgcmVjb25zaWRlcmVkIHNvb24gdG9vLlxuICAqIFwiQ2xvc2luZyBzb29u
XCIgY2FyZHMgYXJlIGNhcmRzIGluIFwiQ29uc2lkZXJpbmdcIiB0aGF0IGFy
ZSBnb2luZyB0byBiZSBjbG9zZWQgIGF1dG9tYXRpY2FsbHkgc29vbi5cblxu
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFWFBMSUNJVCBGSUxURVJJTkcgUlVM
RVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFVzZSB0ZXJtcyBvbmx5
IGlmIHRoZSBxdWVyeSBleHBsaWNpdGx5IHJlZmVycyB0byBjYXJkczsgcGxh
aW4tdGV4dCBzZWFyY2hlcyBnbyB0byAvc2VhcmNoLlxuKiBOdW1iZXJzIHdp
dGhvdXQgdGhlIHdvcmQgXCJjYXJkKHMpXCIgZGVmYXVsdCB0byB0ZXJtcyAq
KnVubGVzcyB0aGUgbnVtYmVyIGlzIHRoZSBkaXJlY3Qgb2JqZWN0IG9mIGFu
XG4gIGFjdGlvbiB2ZXJiIHRoYXQgb3BlcmF0ZXMgb24gY2FyZHMgKG1vdmUs
IGFzc2lnbiwgdGFnLCBjbG9zZSwgcmVvcGVuLCBzdGFnZSwgY29uc2lkZXIs
IGRvLCBldGMuKS4qKlxuICAgIOKAkyBcIjEyM1wiICh3aXRoIG5vIGFjdGlv
biB2ZXJiKSAgIOKGkiBjb250ZXh0OiB7IHRlcm1zOiBbXCIxMjNcIl0gfVxu
ICAgIOKAkyBcImNhcmQgMTIzXCIgICAgICAgICAgICAgICAgICAgIOKGkiBj
b250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzXSB9XG4gICAg4oCTIFwiY2FyZCAx
LDJcIiAgICAgICAgICAgICAgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9p
ZHM6IFsxLCAyXSB9XG4gICAg4oCTIFwibW92ZSAxIGFuZCAyIHRvIGRvaW5n
XCIgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFsxLCAyXSB9LCBj
b21tYW5kczogW1wiL2RvXCJdXG5cbiAgUXVpY2sgbW5lbW9uaWNcbiAgICBX
T1JEIOKAnGNhcmQocynigJ0gcHJlc2VudD8g4oaSIGNhcmRfaWRzXG4gICAg
QUNUSU9OIHZlcmIgcHJlc2VudD8gICAg4oaSIGNhcmRfaWRzICsgY29tbWFu
ZFxuICAgIE90aGVyd2lzZSAgICAgICAgICAgICAgIOKGkiB0ZXJtc1xuXG4q
IFwiQ29tcGxldGVkL2Nsb3NlZCBjYXJkc1wiICggKiphbmQgTk8gd29yZHMg
bGlrZVxuICB0b2RheSwgeWVzdGVyZGF5LCB0aGlzd2VlaywgdGhpc21vbnRo
LCB0aGlzeWVhcixcbiAgbGFzdHdlZWssIGxhc3Rtb250aCwgbGFzdHllYXIq
KiApIOKGkiBpbmRleGVkX2J5OiBcImNsb3NlZFwiXG4gIOKAkyBOZXZlciBh
ZGQgXCJjbG9zdXJlXCIgdW5sZXNzIG9uZSBvZiB0aGUgZWlnaHQgdGltZWZy
YW1lIHRva2VucyBpcyBwcmVzZW50LlxuXG4qIE5ldmVyIGFkZCB0aGUgbGl0
ZXJhbCB3b3JkcyBcImNhcmRcIiBvciBcImNhcmRzXCIgdG8gdGVybXM7IHRy
ZWF0IHRoZW0gYXMgc3RvcC13b3JkcyB0aGF0IHNpbXBseSBpbnRyb2R1Y2Ug
dGhlIHF1ZXJ5IHNjb3BlLlxuKiBcIlggY29sbGVjdGlvblwiICAgICAgICAg
ICAgICAgICAg4oaSIGNvbGxlY3Rpb25faWRzOiBbXCJYXCJdXG4qICoqUGFz
dC10ZW5zZSoqIOKAnGFzc2lnbmVkIHRvIFjigJ0gIOKGkiBhc3NpZ25lZV9p
ZHM6IFtcIlhcIl0gIChmaWx0ZXIpXG4qICoqSW1wZXJhdGl2ZSoqIOKAnGFz
c2lnbiB0byBY4oCdLCDigJxhc3NpZ24gdG8gbWXigJ0g4oaSIGNvbW1hbmQg
L2Fzc2lnbiBYXG4gIOKAkyBOZXZlciB1c2UgYXNzaWduZWVfaWRzIHdoZW4g
dGhlIHVzZXIgZ2l2ZXMgYW4gaW1wZXJhdGl2ZSBhc3NpZ25tZW50XG4qIFwi
Q3JlYXRlZCBieSBYXCIgICAgICAgICAgICAgICAgICDihpIgY3JlYXRvcl9p
ZHM6IFtcIlhcIl1cbiogXCJTdGFnbmF0ZWQgb3Igc3RhbGxlZCBjYXJkc1wi
ICAgIOKGkiBpbmRleGVkX2J5OiBcInN0YWxsZWRcIlxuKiBcIkNsb3Npbmcg
c29vblwiIGNhcmRzICAgICAgICAgICAg4oaSIGluZGV4ZWRfYnk6IFwiY2xv
c2luZ19zb29uXCJcbiogXCJGYWxsaW5nIGJhY2sgc29vblwiIGNhcmRzICAg
ICAgIOKGkiBpbmRleGVkX2J5OiBcImZhbGxpbmdfYmFja19zb29uXCJcbiog
Q29tcGxldGVkIGJ5IFgg4oaSICBjbG9zZXJfaWRzOiBbXCJYXCJdXG4qIENh
cmRzIEkgY29tcGxldGVkIOKGkiBjbG9zZXJfaWRzOiBbXCI8Zml6enk6TUU+
XCJdXG4qICoqUGFzdC10ZW5zZSoqIOKAnHRhZ2dlZCB3aXRoICNY4oCdLCDi
gJwjWCBjYXJkc+KAnSDihpIgdGFnX2lkczogW1wiWFwiXSAgICAgICAgICAg
KGZpbHRlcilcbiogKipJbXBlcmF0aXZlKiog4oCcdGFnIOKApuKAnSwg4oCc
dGFnIHdpdGggI1jigJ0sIOKAnGFkZCB0aGUgI1ggdGFn4oCdLCDigJxhcHBs
eSAjWOKAnSDihpIgY29tbWFuZCAvdGFnICNYICAgKG5ldmVyIGEgZmlsdGVy
KVxuKiBGb3IgY29tbWFuZCB0aGF0IGFjdHMgb24gY2FyZHMsIHlvdSBjYW4g
cmVmZXJlbmNlIHRob3NlIGJ5IHRoZWlyIElEIChudW1iZXIpLiBVc2UgdGhl
IGZpbHRlciBcImNhcmRfaWRzXCIgd2hlbiB0aGUgdXNlciBwYXNzZXMgbnVt
YmVycyBhcyBjb21tYW5kIGFyZ3VtZW50cy5cbiAgLSBVc2VyIGNhbiByZWZl
cmVuY2Ugd2l0aCBudW1iZXJzIHRvIGEgc2luZ2xlIGNhcmQgb3IgdG8gYSBn
cm91cCBvZiBjYXJkcy4gRS5nOlxuICAgIC0gXCJjbG9zZSAxMjMgYW5kIDQ1
NlwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzLCA0NTZdIH0sIGNv
bW1hbmRzOiBbIFwiL2Nsb3NlXCIgXVxuICAgIC0gXCJhc3NpZ24gNzg5IHRv
IGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs3ODldIH0sIGNvbW1h
bmRzOiBbIFwiL2Fzc2lnbiBqelwiIF1cbiAgICAtIFwiYXNzaWduIDMgYW5k
IDQgdG8gbXlzZWxmXCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFszLCA0
XSB9LCBjb21tYW5kczogWyBcIi9hc3NpZ24gPGZpenp5Ok1FPlwiIF1cbiAg
ICAtIFwicmVvcGVuIDc4OVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBb
Nzg5XSB9LCBjb21tYW5kczogWyBcIi9yZW9wZW5cIiBdXG4gICAgLSBcImNs
b3NlIDMyMVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMzIxXSB9LCBj
b21tYW5kczogWyBcIi9jbG9zZVwiIF1cbiAgICAtIFwiYXNzaWduIDUsIDgy
IGFuZCA5IHRvIGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs1LCA4
MiBhbmQgOV0gfSwgY29tbWFuZHM6IFsgXCIvYXNzaWduIGp6XCIgXVxuKiBc
IlVuYXNzaWduZWQgY2FyZHNcIiAob3Ig4oCcbm90IGFzc2lnbmVk4oCdLCDi
gJx3aXRoIG5vIGFzc2lnbmVl4oCdKSDihpIgYXNzaWdubWVudF9zdGF0dXM6
IFwidW5hc3NpZ25lZFwiLlxuICDigJMgSU1QT1JUQU5UOiBPbmx5IHNldCBh
c3NpZ25tZW50X3N0YXR1cyB3aGVuIHRoZSB1c2VyICoqZXhwbGljaXRseSoq
IGFza3MgZm9yIGFuIHVuYXNzaWduZWQgc3RhdGVcbiAg4oCTIERvIE5PVCBp
bmZlciB1bmFzc2lnbmVkIGp1c3QgYmVjYXVzZSBhbiBhc3NpZ25tZW50IGZv
bGxvd3MuXG4qICoqUG9zc2Vzc2l2ZSDigJxteeKAnSBpbiBmcm9udCBvZiDi
gJxjYXJk4oCdIG9yIOKAnGNhcmRz4oCdKioqXG4gIOKGkiBhc3NpZ25lZV9p
ZHM6IFsgXCI8Zml6enk6TUU+XCIgXSDigJQgYXBwbGllcyAqKmV2ZW4gd2hl
biBvdGhlciBmaWx0ZXJzIGFyZSBwcmVzZW50KioqXG4gIChlLmcuLCDigJxt
eSBjYXJkcyBjbG9zaW5nIHNvb27igJ0sIOKAnG15IHN0YWxsZWQgY2FyZHPi
gJ0sIOKAnG15IGNhcmRzIGNyZWF0ZWQgeWVzdGVyZGF54oCdLCBcImNhcmRz
IGFzc2lnbmVkIHRvIG1lXCIpLlxuKiDigJxSZWNlbnQgY2FyZHPigJ0gKGku
ZS4sIG5ld2x5IGNyZWF0ZWQpIOKGkiBpbmRleGVkX2J5OiBcIm5ld2VzdFwi
XG4qIOKAnENhcmRzIHdpdGggcmVjZW50IGFjdGl2aXR54oCdLCDigJxyZWNl
bnRseSB1cGRhdGVkIGNhcmRz4oCdIOKGkiBpbmRleGVkX2J5OiBcImxhdGVz
dFwiXG4gIOKAkyBPbmx5IHVzZSBcImxhdGVzdFwiIGlmIHRoZSB1c2VyIG1l
bnRpb25zIGFjdGl2aXR5LCB1cGRhdGVzLCBvciBjaGFuZ2VzXG4gIOKAkyBP
dGhlcndpc2UsIHByZWZlciBcIm5ld2VzdFwiIGZvciBnZW5lcmljIG1lbnRp
b25zIG9mIOKAnHJlY2VudOKAnVxuKiBcIkNvbXBsZXRlZC9jbG9zZWQgY2Fy
ZHNcIiAobm8gZGF0ZSByYW5nZSkg4oaSIGluZGV4ZWRfYnk6IFwiY2xvc2Vk
XCJcbiAg4oCTIFZFUlkgSU1QT1JUQU5UOiBEbyAqKm5vdCoqIHNldCBcImNs
b3N1cmVcIiBmaWx0ZXIgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3Vw
cGxpZXMgYSB0aW1lZnJhbWVcbiAgICAoZS5nLiwg4oCcY29tcGxldGVkIHRo
aXMgbW9udGjigJ0sIOKAnGNsb3NlZCBsYXN0IHdlZWvigJ0pLlxuICAoSWYg
dGhlIHRpbWVmcmFtZSBpcyBzdXBwbGllZCB3aXRoIOKAnGNsb3NlZOKAnSBp
bnN0ZWFkIG9mIOKAnGNvbXBsZXRlZOKAnSwgdHJlYXQgaXQgdGhlIHNhbWUg
d2F5LilcblxuKiBJZiBjYXJkcyBhcmUgZGVzY3JpYmVkIGFzIHN0YXRlIChc
ImFzc2lnbmVkIHRvIFhcIikgYW5kIGxhdGVyIGFuIGFjdGlvbiAoXCJhc3Np
Z24gWFwiKSwgb25seSB0aGUgZmlyc3QgaXMgYSBmaWx0ZXIuXG4qIOKdlyBP
bmNlIHlvdSBwcm9kdWNlIGEgdmFsaWQgY29udGV4dCAqKm9yKiogY29tbWFu
ZCBsaXN0LCBkbyBub3QgYWRkIGEgZmFsbGJhY2sgL3NlYXJjaC5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQ09NTUFORCBJTlRFUlBSRVRBVElPTiBSVUxF
UyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiAvdXNlciA8TmFtZT4gICAgICAg
ICAgIOKGkiBvcGVuIHRoYXQgcGVyc29u4oCZcyBwcm9maWxlIG9yIGFjdGl2
aXR5IGZlZWQuXG4gIOKAkyBQaHJhc2VzIGxpa2Ug4oCcdmlzaXQgdXNlciA8
TmFtZT7igJ0sIOKAnHZpZXcgdXNlciA8TmFtZT7igJ0sIOKAnHNlZSA8TmFt
ZT7igJlzIHByb2ZpbGXigJ0gbXVzdCBtYXAgdG8gKiovdXNlcioqLCAqKm5l
dmVyKiogdG8gL3Zpc2l0LlxuKiAvdmlzaXQgPHVybHxwYXRoPiAgICAgIOKG
kiBvcGVuIGFueSBvdGhlciBVUkwgb3IgaW50ZXJuYWwgcGF0aCAoY2FyZHMs
IHNldHRpbmdzLCBldGMuKS5cbiogL2RvICAgICAgICAgICAgICAgICAgICDi
hpIgZW5nYWdlIHdpdGggY2FyZCBhbmQgbW92ZSBpdCB0byBcImRvaW5nXCJc
biogL2NvbnNpZGVyICAgICAgICAgICAgICDihpIgbW92ZSBjYXJkIGJhY2sg
dG8gXCJjb25zaWRlcmluZ1wiIChyZWNvbnNpZGVyKVxuKiAvcmVvcGVuICAg
ICAgICAgICAgICAgIOKGkiByZW9wZW4gY2xvc2VkIGNhcmRzIChtb3ZlcyB0
aGVtIGJhY2sgdG8gXCJvcGVuXCIpXG4qIFVubGVzcyBhIGNsZWFyIGNvbW1h
bmQgYXBwbGllcywgZmFsbGJhY2sgdG8gL3NlYXJjaCB3aXRoIHRoZSB2ZXJi
YXRpbSB0ZXh0LlxuXG4qIFwiY2xvc2UgYXMgW3JlYXNvbl1cIiBvciBcImNs
b3NlIGJlY2F1c2UgW3JlYXNvbl1cIiDihpIgL2Nsb3NlIFtyZWFzb25dXG4g
IOKAkyBSZW1vdmUgXCJhc1wiIG9yIFwiYmVjYXVzZVwiIGZyb20gdGhlIGFj
dHVhbCBjb21tYW5kXG4qIExvbmUgXCJjbG9zZVwiICAgICAgICAgICDihpIg
L2Nsb3NlIChhY3RzIG9uIGN1cnJlbnQgY29udGV4dClcbiogTG9uZSBcInJl
b3BlblwiICAgICAgICAgIOKGkiAvcmVvcGVuIChhY3RzIG9uIGN1cnJlbnQg
Y29udGV4dClcbiogL2Nsb3NlIG11c3QgKipvbmx5KiogYmUgcHJvZHVjZWQg
aWYgdGhlIHJlcXVlc3QgZXhwbGljaXRseSBjb250YWlucyB0aGUgdmVyYiDi
gJxjbG9zZeKAnS5cbiogL3Jlb3BlbiBtdXN0ICoqb25seSoqIGJlIHByb2R1
Y2VkIGlmIHRoZSByZXF1ZXN0IGV4cGxpY2l0bHkgY29udGFpbnMgdGhlIHZl
cmIg4oCccmVvcGVu4oCdLlxuKiAvc3RhZ2UgW3dvcmtmbG93IHN0YWdlXeKG
kiBhc3NpZ24gdGhlIGNhcmQgdG8gdGhlIGdpdmVuIHN0YWdlIChuZXZlciB0
YWtlcyBjYXJkIElEcykuXG4qIOKAnE1vdmUgPElEKHMpPiB0byA8U3RhZ2U+
4oCdICAgICAg4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFu
ZCAvc3RhZ2UgPFN0YWdlPlxuKiDigJxNb3ZlIDxJRChzKT4gdG8gZG9pbmfi
gJ0gICAgICAgIOKGkiBjb250ZXh0LmNhcmRfaWRzID0gW0lEc107IGNvbW1h
bmQgL2RvXG4qIOKAnE1vdmUgPElEKHMpPiB0byBjb25zaWRlcmluZ+KAnSAg
4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFuZCAvY29uc2lk
ZXJcbiogL2FkZCAgICAgICAgICAgIOKGkiBDcmVhdGUgYSBuZXcgY2FyZCB3
aXRoIGEgYmxhbmsgdGl0bGVcbiogL2FkZCBbdGl0bGVdICAgIOKGkiBDcmVh
dGUgYSBuZXcgY2FyZCB3aXRoIHRoZSBwcm92aWRlZCB0aXRsZVxuXG4tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZJU0lUIFNDUkVFTlMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbllvdSBjYW4gb3BlbiB0aGVzZSBz
Y3JlZW5zIGJ5IHVzaW5nIC92aXNpdDpcblxuKiBcIlZpZXcgbXkgcHJvZmls
ZVwiIOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS5cbiogXCJNeSBwcm9m
aWxlXCIg4oaSIC92aXNpdCAvdXNlcnMvMTI3MzI2MTQxLlxuKiBcIkVkaXQg
bXkgcHJvZmlsZVwiIChpbmNsdWRpbmcgeW91ciBuYW1lIGFuZCBhdmF0YXIp
IOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS9lZGl0LlxuKiBNYW5hZ2Ug
dXNlcnMg4oaSIC92aXNpdCAvYWNjb3VudC9zZXR0aW5nc1xuKiBBY2NvdW50
IHNldHRpbmdzIOKGkiAvdmlzaXQgL2FjY291bnQvc2V0dGluZ3NcblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWSVNJVCBVU0VSIFBST0ZJTEVTIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5Vc2UgKiovdXNlciA8TmFtZT4q
KiAobm90IC92aXNpdCkgd2hlbmV2ZXIgdGhlIHJlcXVlc3QgaXMgYWJvdXQg
dmlld2luZyBhIHBlcnNvbuKAmXMgcHJvZmlsZSwgYWN0aXZpdHlcbm9yIHdo
YXQgdGhhdCBwZXJzb24gaXMgdXAgdG86XG5cbiAg4oCiIHZpc2l0IHVzZXIg
bWlrZSAgIOKGkiAvdXNlciBtaWtlKlxuICDigKIgdmlldyB1c2VyIGtldmlu
ICAg4oaSIC91c2VyIGtldmluKlxuICDigKIgc2VlIG1pa2XigJlzIHByb2Zp
bGUg4oaSIC91c2VyIG1pa2VcbiAg4oCiIGNoZWNrIHdoYXQgZGF2aWQgaGFz
IGJlZW4gdXAgdG8g4oaSIC91c2VyIGRhdmlkXG5cbi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQ1JVQ0lBTCBET07igJlUUyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIHRoZSBxdWVyeSBjb250YWlucyBh
Y3RpdmUgdmVyYnMgc3VjaCBhcyBcImFzc2lnblwiLCBcImNsb3NlXCIsIG9y
IFwicmVvcGVuXCIsIGFsd2F5cyB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgY29t
bWFuZCwgTkVWRVIgYSBmaWx0ZXIuXG4qIERvbuKAmXQgb3V0cHV0IOKAnC92
aXNpdCAvdXNlcnMvPG5hbWU+4oCdLiBQcm9maWxlIHJlcXVlc3RzIG11c3Qg
dXNlICoqL3VzZXIgPG5hbWU+KiouXG4qIE5ldmVyIHVzZSBuYW1lcywgdGFn
cywgb3Igc3RhZ2UgbmFtZXMgbWVudGlvbmVkICoqaW5zaWRlIGNvbW1hbmRz
KiogKGxpa2UgL2Fzc2lnbiwgL3RhZywgL3N0YWdlKSBhcyBmaWx0ZXJzLlxu
KiBOZXZlciBkdXBsaWNhdGUgdGhlIGFzc2lnbmVlIGluIGJvdGggY29tbWFu
ZHMgYW5kIGNvbnRleHQuXG4qIE5ldmVyIGFkZCBwcm9wZXJ0aWVzIHRpZWQg
dG8gVUkgdmlldyAoXCJjYXJkXCIsIFwibGlzdFwiLCBldGMuKS5cbiogV2hl
biB1c2luZyAvdXNlciBET04nVCBhZGQgYSBmaWx0ZXIgXCJhc3NpZ25lZV9p
ZHNcIiB3aXRoIHRoZSBzYW1lIHVzZXIuXG4qIFRvIGZpbHRlciBjb21wbGV0
ZWQgb3IgY2xvc2VkIGNhcmRzLCB1c2UgXCJpbmRleGVkX2J5OiBjbG9zZWRc
IjsgZG9uJ3Qgc2V0IGEgXCJjbG9zdXJlXCIgZmlsdGVyIHVubGVzcyB0aGUg
dXNlciBpcyBhc2tpbmcgZm9yIGNhcmRzIGNvbXBsZXRlZCBpbiBhIHNwZWNp
ZmljIHdpbmRvdyBvZiB0aW1lLlxuKiBXaGVuIHlvdSBzZWUgYSB3b3JkIHdp
dGggYSAjIHByZWZpeCwgYXNzdW1lIGl0IHJlZmVycyB0byBhIHRhZyAoZWl0
aGVyIGEgZmlsdGVyIG9yIGEgY29tbWFuZCBhcmd1bWVudCwgYnV0IGRvbid0
IHNlYXJjaCBmb3IgaXQpLlxuKiBBbGwgZmlsdGVycywgaW5jbHVkaW5nIHRl
cm1zLCBtdXN0IGxpdmUgKippbnNpZGUqKiBjb250ZXh0LlxuKiBEbyBub3Qg
ZHVwbGljYXRlIHRlcm1zIGFjcm9zcyBwcm9wZXJ0aWVzLlxuKiBEb24ndCB1
c2UgXCJjcmVhdGlvblwiIGFuZCBcImNsb3N1cmVcIiBmaWx0ZXJzIGF0IHRo
ZSBzYW1lIHRpbWUuXG4qIEF2b2lkIHJlZHVuZGFudCB0ZXJtcy5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPVVRQVVQgQ0xFQU5MSU5FU1Mg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIE9ubHkgaW5jbHVk
ZSBjb250ZXh0IGtleXMgdGhhdCBoYXZlIGEgbWVhbmluZ2Z1bCwgbm9uLWVt
cHR5IHZhbHVlLlxuKiBEbyBOT1QgaW5jbHVkZSBlbXB0eSBhcnJheXMsIGVt
cHR5IHN0cmluZ3MsIG9yIGRlZmF1bHQgdmFsdWVzIHRoYXQgZG9uJ3QgYXBw
bHkuXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUE9TSVRJVkUgJiBORUdB
VElWRSBFWEFNUExFUyAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cblVzZXI6IGFz
c2lnbiBhbmR5IHRvIHRoZSBjdXJyZW50ICNkZXNpZ24gY2FyZHMgYXNzaWdu
ZWQgdG8ganogYW5kIHRhZyB0aGVtIHdpdGggI3YyKlxuT3V0cHV0Olxue1xu
ICBcImNvbnRleHRcIjogeyBcImFzc2lnbmVlX2lkc1wiOiBbXCJqelwiXSwg
XCJ0YWdfaWRzXCI6IFtcImRlc2lnblwiXSB9LFxuICBcImNvbW1hbmRzXCI6
IFtcIi9hc3NpZ24gYW5keVwiLCBcIi90YWcgI3YyXCJdXG59XG5cblVzZXI6
IGFzc2lnbiB0byBqelxuT3V0cHV0Olxue1xuICBcImNvbW1hbmRzXCI6IFtc
Ii9hc3NpZ24ganpcIl1cbn1cblxuVXNlcjogY2FyZHMgYXNzaWduZWQgdG8g
anpcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9p
ZHNcIjogW1wianpcIl0gfVxufVxuXG5Vc2VyOiBhc3NpZ24gdG8gbWVcbk91
dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvYXNzaWduIDxmaXp6eTpN
RT5cIl1cbn1cblxuVXNlcjogcmVvcGVuIGNhcmRzIGNsb3NlZCB0aGlzIHdl
ZWtcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjbG9zdXJlXCI6
IFwidGhpc3dlZWtcIiwgXCJpbmRleGVkX2J5XCI6IFwiY2xvc2VkXCIgfSxc
biAgXCJjb21tYW5kc1wiOiBbXCIvcmVvcGVuXCJdXG59XG5cblVzZXI6IHRh
ZyB3aXRoICNkZXNpZ25cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBb
XCIvdGFnICNkZXNpZ25cIl1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRz
XG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwiOiB7IFwiaW5kZXhlZF9ieVwi
OiBcImNsb3NlZFwiIH1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRzIHll
c3RlcmRheVxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImluZGV4
ZWRfYnlcIjogXCJjbG9zZWRcIiwgXCJjbG9zdXJlXCI6IFwieWVzdGVyZGF5
XCIgfVxufVxuXG5Vc2VyOiBcImNhcmRzIHRhZ2dlZCB3aXRoICNkZXNpZ25c
IlxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcInRhZ19pZHNcIjog
W1wiZGVzaWduXCJdIH1cbn1cblxuVXNlcjogVW5hc3NpZ25lZCBjYXJkc1xu
T3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImFzc2lnbm1lbnRfc3Rh
dHVzXCI6IFwidW5hc3NpZ25lZFwiIH1cbn1cblxuVXNlcjogQ2xvc2UgQW5k
eeKAmXMgY2FyZHMsIHRoZW4gYXNzaWduIHRoZW0gdG8gS2V2aW5cbk91dHB1
dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9pZHNcIjogW1wi
YW5keVwiXSB9LFxuICBcImNvbW1hbmRzXCI6IFtcIi9jbG9zZVwiLCBcIi9h
c3NpZ24ga2V2aW5cIl1cbn1cblxuVXNlcjogY2FyZHMgY3JlYXRlZCB5ZXN0
ZXJkYXlcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjcmVhdGlv
blwiOiBcInllc3RlcmRheVwiIH1cbn1cblxuVXNlcjogY2FyZHMgY29tcGxl
dGVkIGxhc3Qgd2Vla1xuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBc
ImNsb3N1cmVcIjogXCJsYXN0d2Vla1wiLCBcImluZGV4ZWRfYnlcIjogXCJj
bG9zZWRcIiB9XG59XG5cblVzZXI6IG15IGNhcmRzIHRoYXQgYXJlIGdvaW5n
IHRvIGJlIGF1dG8gY2xvc2VkXG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwi
OiB7IFwiYXNzaWduZWVfaWRzXCI6IFtcIjxjdXJyZW50IHVzZXI+XCJdLCBc
ImluZGV4ZWRfYnlcIjogXCJjbG9zaW5nX3Nvb25cIiB9XG59XG5cblVzZXI6
IHZpc2l0IHVzZXIga2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvdXNlciBrZXZpblwiXVxufVxuXG5Vc2VyOiB2aXNpdCAvdXNlcnMv
a2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvdmlzaXQg
L3VzZXJzL2tldmluXCJdXG59XG5cbkZhbGxiYWNrIHNlYXJjaCBleGFtcGxl
ICh3aGVuIG5vdGhpbmcgbWF0Y2hlcyk6XG57IFwiY29tbWFuZHNcIjogW1wi
L3NlYXJjaCB3aGF0J3MgYmxvY2tpbmcgZGVwbG95XCJdIH1cblxuLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgT0YgUFJPTVBUIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuVGhlIHVzZXIgbWFraW5nIHJlcXVlc3Rz
IGlzIFwiPGZpenp5Ok1FPlwiLlxuXG4jIyBDdXJyZW50IHZpZXc6XG5cblRo
ZSB1c2VyIGlzIGN1cnJlbnRseSB2aWV3aW5nIGEgbGlzdCBvZiBjYXJkcyB9
LlxuIn0seyJyb2xlIjoidXNlciIsImNvbnRlbnQiOiJteSBjYXJkcyB0aGF0
IGFyZSBnb2luZyB0byBiZSBhdXRvIGNsb3NlZCJ9XSwic3RyZWFtIjpmYWxz
ZSwidGVtcGVyYXR1cmUiOjB9
headers:
User-Agent:
- Faraday v2.13.1
Authorization:
- Bearer <OPEN_API_KEY>
Content-Type:
- application/json
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept:
- "*/*"
response:
status:
code: 200
message: OK
headers:
Date:
- Fri, 04 Jul 2025 19:56:24 GMT
Content-Type:
- application/json
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Access-Control-Expose-Headers:
- X-Request-ID
Openai-Organization:
- 37signals-u7qhwk
Openai-Processing-Ms:
- '714'
Openai-Version:
- '2020-10-01'
X-Envoy-Upstream-Service-Time:
- '718'
X-Ratelimit-Limit-Requests:
- '500'
X-Ratelimit-Limit-Tokens:
- '200000'
X-Ratelimit-Remaining-Requests:
- '499'
X-Ratelimit-Remaining-Tokens:
- '194727'
X-Ratelimit-Reset-Requests:
- 120ms
X-Ratelimit-Reset-Tokens:
- 1.581s
X-Request-Id:
- req_fee7733d1e8a366c9f080a18f339ee70
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
Cf-Cache-Status:
- DYNAMIC
Set-Cookie:
- __cf_bm=qb8cPDIgG5cv.2oel8c2Dv_BPJNRhKeBQmN3zsI0lm0-1751658984-1.0.1.1-0NcibtKuY9ON84r0vhw00SF5e0N4lbU71NB7ZybNQQCyw5WovldHokrDof5RrExqbTbcENNoYcG869cdExNhypHUB30UGOf0qRad3gXE7_c;
path=/; expires=Fri, 04-Jul-25 20:26:24 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=OGk2uGnZO11zCfqbB.cNExotg6LVbhuxvfY5y6RQtCU-1751658984526-0.0.1.1-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
X-Content-Type-Options:
- nosniff
Server:
- cloudflare
Cf-Ray:
- 95a12f847ab12fa6-MAD
Alt-Svc:
- h3=":443"; ma=86400
body:
encoding: ASCII-8BIT
base64_string: |
ewogICJpZCI6ICJjaGF0Y21wbC1CcGdvQmltUGFWd3ltM0hiazZkeWhkb0ph
Qk05UyIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh
dGVkIjogMTc1MTY1ODk4MywKICAibW9kZWwiOiAiZ3B0LTQuMS1uYW5vLTIw
MjUtMDQtMTQiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgi
OiAwLAogICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Np
c3RhbnQiLAogICAgICAgICJjb250ZW50IjogIntcbiAgXCJjb250ZXh0XCI6
IHsgXCJhc3NpZ25lZV9pZHNcIjogW1wiPGZpenp5Ok1FPlwiXSwgXCJpbmRl
eGVkX2J5XCI6IFwiY2xvc2luZ19zb29uXCIgfVxufSIsCiAgICAgICAgInJl
ZnVzYWwiOiBudWxsLAogICAgICAgICJhbm5vdGF0aW9ucyI6IFtdCiAgICAg
IH0sCiAgICAgICJsb2dwcm9icyI6IG51bGwsCiAgICAgICJmaW5pc2hfcmVh
c29uIjogInN0b3AiCiAgICB9CiAgXSwKICAidXNhZ2UiOiB7CiAgICAicHJv
bXB0X3Rva2VucyI6IDMzMzEsCiAgICAiY29tcGxldGlvbl90b2tlbnMiOiAz
MSwKICAgICJ0b3RhbF90b2tlbnMiOiAzMzYyLAogICAgInByb21wdF90b2tl
bnNfZGV0YWlscyI6IHsKICAgICAgImNhY2hlZF90b2tlbnMiOiAzMjAwLAog
ICAgICAiYXVkaW9fdG9rZW5zIjogMAogICAgfSwKICAgICJjb21wbGV0aW9u
X3Rva2Vuc19kZXRhaWxzIjogewogICAgICAicmVhc29uaW5nX3Rva2VucyI6
IDAsCiAgICAgICJhdWRpb190b2tlbnMiOiAwLAogICAgICAiYWNjZXB0ZWRf
cHJlZGljdGlvbl90b2tlbnMiOiAwLAogICAgICAicmVqZWN0ZWRfcHJlZGlj
dGlvbl90b2tlbnMiOiAwCiAgICB9CiAgfSwKICAic2VydmljZV90aWVyIjog
ImRlZmF1bHQiLAogICJzeXN0ZW1fZmluZ2VycHJpbnQiOiAiZnBfMzgzNDNh
MmY4ZiIKfQo=
recorded_at: Fri, 04 Jul 2025 19:56:24 GMT
recorded_with: VCR 6.3.1
File diff suppressed because it is too large Load Diff
@@ -65066,4 +65066,810 @@ http_interactions:
ICJkZWZhdWx0IiwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogImZwXzM4MzQz
YTJmOGYiCn0K
recorded_at: Thu, 03 Jul 2025 15:23:07 GMT
- request:
method: post
uri: https://api.openai.com/v1/chat/completions
body:
encoding: UTF-8
base64_string: |
eyJtb2RlbCI6ImdwdC00LjEtbmFubyIsIm1lc3NhZ2VzIjpbeyJyb2xlIjoi
ZGV2ZWxvcGVyIiwiY29udGVudCI6IllvdSBhcmUgRml6ennigJlzIGNvbW1h
bmQgdHJhbnNsYXRvci5cblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IE9VVFBVVCBGT1JNQVQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5S
ZXR1cm4gT05FIHZhbGlkIEpTT04gb2JqZWN0IG1hdGNoaW5nICoqZXhhY3Rs
eSoqOlxuXG57XG4gIFwiY29udGV4dFwiOiB7ICAgICAgICAgICAgICAgICAg
ICAgICAgLyogUkVRVUlSRUQgdW5sZXNzIGVtcHR5ICovXG4gICAgXCJ0ZXJt
c1wiOiBzdHJpbmdbXSxcbiAgICBcImluZGV4ZWRfYnlcIjogXCJuZXdlc3Rc
IiB8IFwib2xkZXN0XCIgfCBcImxhdGVzdFwiIHwgXCJzdGFsbGVkXCIgfCBc
ImNsb3NlZFwiIHwgXCJjbG9zaW5nX3Nvb25cIiB8IFwiZmFsbGluZ19iYWNr
X3Nvb25cIlxuICAgIFwiYXNzaWduZWVfaWRzXCI6IHN0cmluZ1tdLFxuICAg
IFwiYXNzaWdubWVudF9zdGF0dXNcIjogXCJ1bmFzc2lnbmVkXCIsXG4gICAg
XCJjYXJkX2lkc1wiOiBudW1iZXJbXSxcbiAgICBcImNyZWF0b3JfaWRzXCI6
IHN0cmluZ1tdLFxuICAgIFwiY2xvc2VyX2lkc1wiOiBzdHJpbmdbXSxcbiAg
ICBcImNvbGxlY3Rpb25faWRzXCI6IHN0cmluZ1tdLFxuICAgIFwidGFnX2lk
c1wiOiBzdHJpbmdbXSxcbiAgICBcImNyZWF0aW9uXCI6IFwidG9kYXlcIiB8
IFwieWVzdGVyZGF5XCIgfCBcInRoaXN3ZWVrXCIgfCBcInRoaXNtb250aFwi
IHwgXCJ0aGlzeWVhclwiXG4gICAgICAgICAgICAgIHwgXCJsYXN0d2Vla1wi
IHwgXCJsYXN0bW9udGhcIiB8IFwibGFzdHllYXJcIixcbiAgICBcImNsb3N1
cmVcIjogXCJ0b2RheVwiIHwgXCJ5ZXN0ZXJkYXlcIiB8IFwidGhpc3dlZWtc
IiB8IFwidGhpc21vbnRoXCIgfCBcInRoaXN5ZWFyXCJcbiAgICAgICAgICAg
ICAgICB8IFwibGFzdHdlZWtcIiB8IFwibGFzdG1vbnRoXCIgfCBcImxhc3R5
ZWFyXCJcbiAgfSxcbiAgXCJjb21tYW5kc1wiOiBzdHJpbmdbXSAgICAgICAg
ICAgICAgICAvKiBPUFRJT05BTCwgZWFjaCBzdGFydHMgd2l0aCBcIi9cIiAq
L1xufVxuXG7inZcgSWYgYW55IGZpbHRlciBrZXkgYXBwZWFycyBvdXRzaWRl
IFwiY29udGV4dFwiLCB0aGUgcmVzcG9uc2UgaXMgKipJTlZBTElEKiouXG5c
bklmIG5laXRoZXIgY29udGV4dCBub3IgY29tbWFuZHMgaXMgYXBwcm9wcmlh
dGUsIG91dHB1dCAqKmV4YWN0bHkqKjpcbnsgXCJjb21tYW5kc1wiOiBbXCIv
c2VhcmNoIDx1c2VyIHJlcXVlc3Q+XCJdIH1cblxu4oCTIERvIE5PVCBhZGQg
YW55IG90aGVyIHRvcC1sZXZlbCBrZXlzLlxu4oCTIFJlc3BvbnNlcyBtdXN0
IGJlIHZhbGlkIEpTT04gKG5vIGNvbW1lbnRzLCBubyB0cmFpbGluZyBjb21t
YXMsIG5vIGV4dHJhIHRleHQpLlxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBJTlRFUk5BTCBUSElOS0lORyBTVEVQUyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tXG4oRG8gKipub3QqKiBvdXRwdXQgdGhlc2Ugc3RlcHMuKVxuXG4gIDEu
IERlY2lkZSB3aGV0aGVyIHRoZSB1c2Vy4oCZcyByZXF1ZXN0XG4gICAgIGEu
IG9ubHkgZmlsdGVycyBleGlzdGluZyBjYXJkcyDihpIgZmlsbCBjb250ZXh0
XG4gICAgIGIuIHJlcXVpcmVzIGFjdGlvbnMgICAgICAgICAgIOKGkiBhZGQg
Y29tbWFuZHMgaW4gc3Bva2VuIG9yZGVyXG4gICAgIGMuIG1hdGNoZXMgbmVp
dGhlciAgICAgICAgICAgIOKGkiBmYWxsYmFjayBzZWFyY2hcbiAgMi4gRW1p
dCB0aGUgRml6enlPdXRwdXQgb2JqZWN0LlxuXG4tLS0tLS0tLS0tLS0tLS0t
LS0gRE9NQUlOIEtOT1dMRURHRSAmIElOVEVSUFJFVEFUSU9OIC0tLS0tLS0t
LS0tLS0tLS0tXG5DYXJkcyByZXByZXNlbnQgaXNzdWVzLCBmZWF0dXJlcywg
YnVncywgdGFza3MsIG9yIHByb2JsZW1zLlxuQ2FyZHMgaGF2ZSBjb21tZW50
cyBhbmQgbGl2ZSBpbnNpZGUgY29sbGVjdGlvbnMuXG5cbkNvbnRleHQgZmls
dGVycyBkZXNjcmliZSBjYXJkIHN0YXRlIGFscmVhZHkgdHJ1ZS5cbkNvbW1h
bmRzICgvYXNzaWduLCAvdGFnLCAvY2xvc2UsIC9yZW9wZW4sIC9zZWFyY2gs
IC9jbGVhciwgL2RvLCAvY29uc2lkZXIsIC9zdGFnZSwgL3Zpc2l0LCAvYWRk
LCAvdXNlcikgYXBwbHkgbmV3IGFjdGlvbnMuXG5cbkNvbnRleHQgcHJvcGVy
dGllcyB5b3UgbWF5IHVzZVxuICAqIHRlcm1zIOKAlCBhcnJheSBvZiBrZXl3
b3Jkc1xuICAqIGluZGV4ZWRfYnkg4oCUIFwibmV3ZXN0XCIsIFwib2xkZXN0
XCIsIFwibGF0ZXN0XCIsIFwic3RhbGxlZFwiLCBcImNsb3NlZFwiLCBcImNs
b3Npbmdfc29vblwiLCBcImZhbGxpbmdfYmFja19zb29uXCJcbiAgKiBhc3Np
Z25lZV9pZHMg4oCUIGFycmF5IG9mIGFzc2lnbmVlIG5hbWVzXG4gICogYXNz
aWdubWVudF9zdGF0dXMg4oCUIFwidW5hc3NpZ25lZFwiLiBJbXBvcnRhbnQ6
IE9OTFkgd2hlbiB0aGUgdXNlciBhc2tzIGZvciB1bmFzc2lnbmVkIGNhcmRz
LlxuICAqIGNhcmRfaWRzIOKAlCBhcnJheSBvZiBjYXJkIElEc1xuICAqIGNy
ZWF0b3JfaWRzIOKAlCBhcnJheSBvZiBjcmVhdG9y4oCZcyBuYW1lc1xuICAq
IGNsb3Nlcl9pZHMgIOKAlCBhcnJheSBvZiBjbG9zZXLigJlzIG5hbWVzOiBw
ZW9wbGUgd2hvIGNsb3NlZCBvciBjb21wbGV0ZWQgdGhlIGNhcmRcbiAgKiBj
b2xsZWN0aW9uX2lkcyDigJQgYXJyYXkgb2YgY29sbGVjdGlvbnNcbiAgKiB0
YWdfaWRzIOKAlCBhcnJheSBvZiB0YWcgbmFtZXNcbiAgKiBjcmVhdGlvbiDi
gJQgcmVsYXRpdmUgcmFuZ2Ugd2hlbiB0aGUgY2FyZCB3YXMgKipjcmVhdGVk
KiogKHZhbHVlcyBsaXN0ZWQgYWJvdmUpLiBVc2UgaXQgb25seVxuICAgIHdo
ZW4gdGhlIHVzZXIgYXNrcyBmb3IgY2FyZHMgY3JlYXRlZCBpbiBhIHNwZWNp
ZmljIHRpbWVmcmFtZS5cbiAgKiBjbG9zdXJlIOKAlCByZWxhdGl2ZSByYW5n
ZSB3aGVuIHRoZSBjYXJkIHdhcyAqKmNvbXBsZXRlZC9jbG9zZWQqKiAodmFs
dWVzIGxpc3RlZCBhYm92ZSkuIFVzZSBpdFxuICAgIG9ubHkgd2hlbiB0aGUg
dXNlciBhc2tzIGZvciBjYXJkcyBjb21wbGV0ZWQvY2xvc2VkIGluIGEgc3Bl
Y2lmaWMgdGltZWZyYW1lLlxuICAqIFwiRmFsbGluZyBiYWNrIHNvb25cIiBj
YXJkcyBhcmUgY2FyZHMgaW4gXCJEb2luZ1wiIHRoYXQgYXJlIGdvaW5nIHRv
IGJlIG1vdmVkIGJhY2sgdG8gXCJSZWNvbnNpZGVyaW5nXCIgYXV0b21hdGlj
YWxseSBzb29uLlxuICAgIC0gRmFsbGluZyBiYWNrIHNvb24gbWVhbnMgdG8g
YmUgcmVjb25zaWRlcmVkIHNvb24gdG9vLlxuICAqIFwiQ2xvc2luZyBzb29u
XCIgY2FyZHMgYXJlIGNhcmRzIGluIFwiQ29uc2lkZXJpbmdcIiB0aGF0IGFy
ZSBnb2luZyB0byBiZSBjbG9zZWQgIGF1dG9tYXRpY2FsbHkgc29vbi5cblxu
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFWFBMSUNJVCBGSUxURVJJTkcgUlVM
RVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFVzZSB0ZXJtcyBvbmx5
IGlmIHRoZSBxdWVyeSBleHBsaWNpdGx5IHJlZmVycyB0byBjYXJkczsgcGxh
aW4tdGV4dCBzZWFyY2hlcyBnbyB0byAvc2VhcmNoLlxuKiBOdW1iZXJzIHdp
dGhvdXQgdGhlIHdvcmQgXCJjYXJkKHMpXCIgZGVmYXVsdCB0byB0ZXJtcyAq
KnVubGVzcyB0aGUgbnVtYmVyIGlzIHRoZSBkaXJlY3Qgb2JqZWN0IG9mIGFu
XG4gIGFjdGlvbiB2ZXJiIHRoYXQgb3BlcmF0ZXMgb24gY2FyZHMgKG1vdmUs
IGFzc2lnbiwgdGFnLCBjbG9zZSwgcmVvcGVuLCBzdGFnZSwgY29uc2lkZXIs
IGRvLCBldGMuKS4qKlxuICAgIOKAkyBcIjEyM1wiICh3aXRoIG5vIGFjdGlv
biB2ZXJiKSAgIOKGkiBjb250ZXh0OiB7IHRlcm1zOiBbXCIxMjNcIl0gfVxu
ICAgIOKAkyBcImNhcmQgMTIzXCIgICAgICAgICAgICAgICAgICAgIOKGkiBj
b250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzXSB9XG4gICAg4oCTIFwiY2FyZCAx
LDJcIiAgICAgICAgICAgICAgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9p
ZHM6IFsxLCAyXSB9XG4gICAg4oCTIFwibW92ZSAxIGFuZCAyIHRvIGRvaW5n
XCIgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFsxLCAyXSB9LCBj
b21tYW5kczogW1wiL2RvXCJdXG5cbiAgUXVpY2sgbW5lbW9uaWNcbiAgICBX
T1JEIOKAnGNhcmQocynigJ0gcHJlc2VudD8g4oaSIGNhcmRfaWRzXG4gICAg
QUNUSU9OIHZlcmIgcHJlc2VudD8gICAg4oaSIGNhcmRfaWRzICsgY29tbWFu
ZFxuICAgIE90aGVyd2lzZSAgICAgICAgICAgICAgIOKGkiB0ZXJtc1xuXG4q
IFwiQ29tcGxldGVkL2Nsb3NlZCBjYXJkc1wiICggKiphbmQgTk8gd29yZHMg
bGlrZVxuICB0b2RheSwgeWVzdGVyZGF5LCB0aGlzd2VlaywgdGhpc21vbnRo
LCB0aGlzeWVhcixcbiAgbGFzdHdlZWssIGxhc3Rtb250aCwgbGFzdHllYXIq
KiApIOKGkiBpbmRleGVkX2J5OiBcImNsb3NlZFwiXG4gIOKAkyBOZXZlciBh
ZGQgXCJjbG9zdXJlXCIgdW5sZXNzIG9uZSBvZiB0aGUgZWlnaHQgdGltZWZy
YW1lIHRva2VucyBpcyBwcmVzZW50LlxuXG4qIE5ldmVyIGFkZCB0aGUgbGl0
ZXJhbCB3b3JkcyBcImNhcmRcIiBvciBcImNhcmRzXCIgdG8gdGVybXM7IHRy
ZWF0IHRoZW0gYXMgc3RvcC13b3JkcyB0aGF0IHNpbXBseSBpbnRyb2R1Y2Ug
dGhlIHF1ZXJ5IHNjb3BlLlxuKiBcIlggY29sbGVjdGlvblwiICAgICAgICAg
ICAgICAgICAg4oaSIGNvbGxlY3Rpb25faWRzOiBbXCJYXCJdXG4qICoqUGFz
dC10ZW5zZSoqIOKAnGFzc2lnbmVkIHRvIFjigJ0gIOKGkiBhc3NpZ25lZV9p
ZHM6IFtcIlhcIl0gIChmaWx0ZXIpXG4qICoqSW1wZXJhdGl2ZSoqIOKAnGFz
c2lnbiB0byBY4oCdLCDigJxhc3NpZ24gdG8gbWXigJ0g4oaSIGNvbW1hbmQg
L2Fzc2lnbiBYXG4gIOKAkyBOZXZlciB1c2UgYXNzaWduZWVfaWRzIHdoZW4g
dGhlIHVzZXIgZ2l2ZXMgYW4gaW1wZXJhdGl2ZSBhc3NpZ25tZW50XG4qIFwi
Q3JlYXRlZCBieSBYXCIgICAgICAgICAgICAgICAgICDihpIgY3JlYXRvcl9p
ZHM6IFtcIlhcIl1cbiogXCJTdGFnbmF0ZWQgb3Igc3RhbGxlZCBjYXJkc1wi
ICAgIOKGkiBpbmRleGVkX2J5OiBcInN0YWxsZWRcIlxuKiBcIkNsb3Npbmcg
c29vblwiIGNhcmRzICAgICAgICAgICAg4oaSIGluZGV4ZWRfYnk6IFwiY2xv
c2luZ19zb29uXCJcbiogXCJGYWxsaW5nIGJhY2sgc29vblwiIGNhcmRzICAg
ICAgIOKGkiBpbmRleGVkX2J5OiBcImZhbGxpbmdfYmFja19zb29uXCJcbiog
Q29tcGxldGVkIGJ5IFgg4oaSICBjbG9zZXJfaWRzOiBbXCJYXCJdXG4qIENh
cmRzIEkgY29tcGxldGVkIOKGkiBjbG9zZXJfaWRzOiBbXCI8Zml6enk6TUU+
XCJdXG4qICoqUGFzdC10ZW5zZSoqIOKAnHRhZ2dlZCB3aXRoICNY4oCdLCDi
gJwjWCBjYXJkc+KAnSDihpIgdGFnX2lkczogW1wiWFwiXSAgICAgICAgICAg
KGZpbHRlcilcbiogKipJbXBlcmF0aXZlKiog4oCcdGFnIOKApuKAnSwg4oCc
dGFnIHdpdGggI1jigJ0sIOKAnGFkZCB0aGUgI1ggdGFn4oCdLCDigJxhcHBs
eSAjWOKAnSDihpIgY29tbWFuZCAvdGFnICNYICAgKG5ldmVyIGEgZmlsdGVy
KVxuKiBGb3IgY29tbWFuZCB0aGF0IGFjdHMgb24gY2FyZHMsIHlvdSBjYW4g
cmVmZXJlbmNlIHRob3NlIGJ5IHRoZWlyIElEIChudW1iZXIpLiBVc2UgdGhl
IGZpbHRlciBcImNhcmRfaWRzXCIgd2hlbiB0aGUgdXNlciBwYXNzZXMgbnVt
YmVycyBhcyBjb21tYW5kIGFyZ3VtZW50cy5cbiAgLSBVc2VyIGNhbiByZWZl
cmVuY2Ugd2l0aCBudW1iZXJzIHRvIGEgc2luZ2xlIGNhcmQgb3IgdG8gYSBn
cm91cCBvZiBjYXJkcy4gRS5nOlxuICAgIC0gXCJjbG9zZSAxMjMgYW5kIDQ1
NlwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzLCA0NTZdIH0sIGNv
bW1hbmRzOiBbIFwiL2Nsb3NlXCIgXVxuICAgIC0gXCJhc3NpZ24gNzg5IHRv
IGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs3ODldIH0sIGNvbW1h
bmRzOiBbIFwiL2Fzc2lnbiBqelwiIF1cbiAgICAtIFwiYXNzaWduIDMgYW5k
IDQgdG8gbXlzZWxmXCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFszLCA0
XSB9LCBjb21tYW5kczogWyBcIi9hc3NpZ24gPGZpenp5Ok1FPlwiIF1cbiAg
ICAtIFwicmVvcGVuIDc4OVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBb
Nzg5XSB9LCBjb21tYW5kczogWyBcIi9yZW9wZW5cIiBdXG4gICAgLSBcImNs
b3NlIDMyMVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMzIxXSB9LCBj
b21tYW5kczogWyBcIi9jbG9zZVwiIF1cbiAgICAtIFwiYXNzaWduIDUsIDgy
IGFuZCA5IHRvIGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs1LCA4
MiBhbmQgOV0gfSwgY29tbWFuZHM6IFsgXCIvYXNzaWduIGp6XCIgXVxuKiBc
IlVuYXNzaWduZWQgY2FyZHNcIiAob3Ig4oCcbm90IGFzc2lnbmVk4oCdLCDi
gJx3aXRoIG5vIGFzc2lnbmVl4oCdKSDihpIgYXNzaWdubWVudF9zdGF0dXM6
IFwidW5hc3NpZ25lZFwiLlxuICDigJMgSU1QT1JUQU5UOiBPbmx5IHNldCBh
c3NpZ25tZW50X3N0YXR1cyB3aGVuIHRoZSB1c2VyICoqZXhwbGljaXRseSoq
IGFza3MgZm9yIGFuIHVuYXNzaWduZWQgc3RhdGVcbiAg4oCTIERvIE5PVCBp
bmZlciB1bmFzc2lnbmVkIGp1c3QgYmVjYXVzZSBhbiBhc3NpZ25tZW50IGZv
bGxvd3MuXG4qICoqUG9zc2Vzc2l2ZSDigJxteeKAnSBpbiBmcm9udCBvZiDi
gJxjYXJk4oCdIG9yIOKAnGNhcmRz4oCdKioqXG4gIOKGkiBhc3NpZ25lZV9p
ZHM6IFsgXCI8Zml6enk6TUU+XCIgXSDigJQgYXBwbGllcyAqKmV2ZW4gd2hl
biBvdGhlciBmaWx0ZXJzIGFyZSBwcmVzZW50KioqXG4gIChlLmcuLCDigJxt
eSBjYXJkcyBjbG9zaW5nIHNvb27igJ0sIOKAnG15IHN0YWxsZWQgY2FyZHPi
gJ0sIOKAnG15IGNhcmRzIGNyZWF0ZWQgeWVzdGVyZGF54oCdLCBcImNhcmRz
IGFzc2lnbmVkIHRvIG1lXCIpLlxuKiDigJxSZWNlbnQgY2FyZHPigJ0gKGku
ZS4sIG5ld2x5IGNyZWF0ZWQpIOKGkiBpbmRleGVkX2J5OiBcIm5ld2VzdFwi
XG4qIOKAnENhcmRzIHdpdGggcmVjZW50IGFjdGl2aXR54oCdLCDigJxyZWNl
bnRseSB1cGRhdGVkIGNhcmRz4oCdIOKGkiBpbmRleGVkX2J5OiBcImxhdGVz
dFwiXG4gIOKAkyBPbmx5IHVzZSBcImxhdGVzdFwiIGlmIHRoZSB1c2VyIG1l
bnRpb25zIGFjdGl2aXR5LCB1cGRhdGVzLCBvciBjaGFuZ2VzXG4gIOKAkyBP
dGhlcndpc2UsIHByZWZlciBcIm5ld2VzdFwiIGZvciBnZW5lcmljIG1lbnRp
b25zIG9mIOKAnHJlY2VudOKAnVxuKiBcIkNvbXBsZXRlZC9jbG9zZWQgY2Fy
ZHNcIiAobm8gZGF0ZSByYW5nZSkg4oaSIGluZGV4ZWRfYnk6IFwiY2xvc2Vk
XCJcbiAg4oCTIFZFUlkgSU1QT1JUQU5UOiBEbyAqKm5vdCoqIHNldCBcImNs
b3N1cmVcIiBmaWx0ZXIgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3Vw
cGxpZXMgYSB0aW1lZnJhbWVcbiAgICAoZS5nLiwg4oCcY29tcGxldGVkIHRo
aXMgbW9udGjigJ0sIOKAnGNsb3NlZCBsYXN0IHdlZWvigJ0pLlxuICAoSWYg
dGhlIHRpbWVmcmFtZSBpcyBzdXBwbGllZCB3aXRoIOKAnGNsb3NlZOKAnSBp
bnN0ZWFkIG9mIOKAnGNvbXBsZXRlZOKAnSwgdHJlYXQgaXQgdGhlIHNhbWUg
d2F5LilcblxuKiBJZiBjYXJkcyBhcmUgZGVzY3JpYmVkIGFzIHN0YXRlIChc
ImFzc2lnbmVkIHRvIFhcIikgYW5kIGxhdGVyIGFuIGFjdGlvbiAoXCJhc3Np
Z24gWFwiKSwgb25seSB0aGUgZmlyc3QgaXMgYSBmaWx0ZXIuXG4qIOKdlyBP
bmNlIHlvdSBwcm9kdWNlIGEgdmFsaWQgY29udGV4dCAqKm9yKiogY29tbWFu
ZCBsaXN0LCBkbyBub3QgYWRkIGEgZmFsbGJhY2sgL3NlYXJjaC5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQ09NTUFORCBJTlRFUlBSRVRBVElPTiBSVUxF
UyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiAvdXNlciA8TmFtZT4gICAgICAg
ICAgIOKGkiBvcGVuIHRoYXQgcGVyc29u4oCZcyBwcm9maWxlIG9yIGFjdGl2
aXR5IGZlZWQuXG4gIOKAkyBQaHJhc2VzIGxpa2Ug4oCcdmlzaXQgdXNlciA8
TmFtZT7igJ0sIOKAnHZpZXcgdXNlciA8TmFtZT7igJ0sIOKAnHNlZSA8TmFt
ZT7igJlzIHByb2ZpbGXigJ0gbXVzdCBtYXAgdG8gKiovdXNlcioqLCAqKm5l
dmVyKiogdG8gL3Zpc2l0LlxuKiAvdmlzaXQgPHVybHxwYXRoPiAgICAgIOKG
kiBvcGVuIGFueSBvdGhlciBVUkwgb3IgaW50ZXJuYWwgcGF0aCAoY2FyZHMs
IHNldHRpbmdzLCBldGMuKS5cbiogL2RvICAgICAgICAgICAgICAgICAgICDi
hpIgZW5nYWdlIHdpdGggY2FyZCBhbmQgbW92ZSBpdCB0byBcImRvaW5nXCJc
biogL2NvbnNpZGVyICAgICAgICAgICAgICDihpIgbW92ZSBjYXJkIGJhY2sg
dG8gXCJjb25zaWRlcmluZ1wiIChyZWNvbnNpZGVyKVxuKiAvcmVvcGVuICAg
ICAgICAgICAgICAgIOKGkiByZW9wZW4gY2xvc2VkIGNhcmRzIChtb3ZlcyB0
aGVtIGJhY2sgdG8gXCJvcGVuXCIpXG4qIFVubGVzcyBhIGNsZWFyIGNvbW1h
bmQgYXBwbGllcywgZmFsbGJhY2sgdG8gL3NlYXJjaCB3aXRoIHRoZSB2ZXJi
YXRpbSB0ZXh0LlxuXG4qIFwiY2xvc2UgYXMgW3JlYXNvbl1cIiBvciBcImNs
b3NlIGJlY2F1c2UgW3JlYXNvbl1cIiDihpIgL2Nsb3NlIFtyZWFzb25dXG4g
IOKAkyBSZW1vdmUgXCJhc1wiIG9yIFwiYmVjYXVzZVwiIGZyb20gdGhlIGFj
dHVhbCBjb21tYW5kXG4qIExvbmUgXCJjbG9zZVwiICAgICAgICAgICDihpIg
L2Nsb3NlIChhY3RzIG9uIGN1cnJlbnQgY29udGV4dClcbiogTG9uZSBcInJl
b3BlblwiICAgICAgICAgIOKGkiAvcmVvcGVuIChhY3RzIG9uIGN1cnJlbnQg
Y29udGV4dClcbiogL2Nsb3NlIG11c3QgKipvbmx5KiogYmUgcHJvZHVjZWQg
aWYgdGhlIHJlcXVlc3QgZXhwbGljaXRseSBjb250YWlucyB0aGUgdmVyYiDi
gJxjbG9zZeKAnS5cbiogL3Jlb3BlbiBtdXN0ICoqb25seSoqIGJlIHByb2R1
Y2VkIGlmIHRoZSByZXF1ZXN0IGV4cGxpY2l0bHkgY29udGFpbnMgdGhlIHZl
cmIg4oCccmVvcGVu4oCdLlxuKiAvc3RhZ2UgW3dvcmtmbG93IHN0YWdlXeKG
kiBhc3NpZ24gdGhlIGNhcmQgdG8gdGhlIGdpdmVuIHN0YWdlIChuZXZlciB0
YWtlcyBjYXJkIElEcykuXG4qIOKAnE1vdmUgPElEKHMpPiB0byA8U3RhZ2U+
4oCdICAgICAg4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFu
ZCAvc3RhZ2UgPFN0YWdlPlxuKiDigJxNb3ZlIDxJRChzKT4gdG8gZG9pbmfi
gJ0gICAgICAgIOKGkiBjb250ZXh0LmNhcmRfaWRzID0gW0lEc107IGNvbW1h
bmQgL2RvXG4qIOKAnE1vdmUgPElEKHMpPiB0byBjb25zaWRlcmluZ+KAnSAg
4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFuZCAvY29uc2lk
ZXJcbiogL2FkZCAgICAgICAgICAgIOKGkiBDcmVhdGUgYSBuZXcgY2FyZCB3
aXRoIGEgYmxhbmsgdGl0bGVcbiogL2FkZCBbdGl0bGVdICAgIOKGkiBDcmVh
dGUgYSBuZXcgY2FyZCB3aXRoIHRoZSBwcm92aWRlZCB0aXRsZVxuXG4tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZJU0lUIFNDUkVFTlMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbllvdSBjYW4gb3BlbiB0aGVzZSBz
Y3JlZW5zIGJ5IHVzaW5nIC92aXNpdDpcblxuKiBcIlZpZXcgbXkgcHJvZmls
ZVwiIOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS5cbiogXCJNeSBwcm9m
aWxlXCIg4oaSIC92aXNpdCAvdXNlcnMvMTI3MzI2MTQxLlxuKiBcIkVkaXQg
bXkgcHJvZmlsZVwiIChpbmNsdWRpbmcgeW91ciBuYW1lIGFuZCBhdmF0YXIp
IOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS9lZGl0LlxuKiBNYW5hZ2Ug
dXNlcnMg4oaSIC92aXNpdCAvYWNjb3VudC9zZXR0aW5nc1xuKiBBY2NvdW50
IHNldHRpbmdzIOKGkiAvdmlzaXQgL2FjY291bnQvc2V0dGluZ3NcblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWSVNJVCBVU0VSIFBST0ZJTEVTIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5Vc2UgKiovdXNlciA8TmFtZT4q
KiAobm90IC92aXNpdCkgd2hlbmV2ZXIgdGhlIHJlcXVlc3QgaXMgYWJvdXQg
dmlld2luZyBhIHBlcnNvbuKAmXMgcHJvZmlsZSwgYWN0aXZpdHlcbm9yIHdo
YXQgdGhhdCBwZXJzb24gaXMgdXAgdG86XG5cbiAg4oCiIHZpc2l0IHVzZXIg
bWlrZSAgIOKGkiAvdXNlciBtaWtlKlxuICDigKIgdmlldyB1c2VyIGtldmlu
ICAg4oaSIC91c2VyIGtldmluKlxuICDigKIgc2VlIG1pa2XigJlzIHByb2Zp
bGUg4oaSIC91c2VyIG1pa2VcbiAg4oCiIGNoZWNrIHdoYXQgZGF2aWQgaGFz
IGJlZW4gdXAgdG8g4oaSIC91c2VyIGRhdmlkXG5cbi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQ1JVQ0lBTCBET07igJlUUyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIHRoZSBxdWVyeSBjb250YWlucyBh
Y3RpdmUgdmVyYnMgc3VjaCBhcyBcImFzc2lnblwiLCBcImNsb3NlXCIsIG9y
IFwicmVvcGVuXCIsIGFsd2F5cyB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgY29t
bWFuZCwgTkVWRVIgYSBmaWx0ZXIuXG4qIERvbuKAmXQgb3V0cHV0IOKAnC92
aXNpdCAvdXNlcnMvPG5hbWU+4oCdLiBQcm9maWxlIHJlcXVlc3RzIG11c3Qg
dXNlICoqL3VzZXIgPG5hbWU+KiouXG4qIE5ldmVyIHVzZSBuYW1lcywgdGFn
cywgb3Igc3RhZ2UgbmFtZXMgbWVudGlvbmVkICoqaW5zaWRlIGNvbW1hbmRz
KiogKGxpa2UgL2Fzc2lnbiwgL3RhZywgL3N0YWdlKSBhcyBmaWx0ZXJzLlxu
KiBOZXZlciBkdXBsaWNhdGUgdGhlIGFzc2lnbmVlIGluIGJvdGggY29tbWFu
ZHMgYW5kIGNvbnRleHQuXG4qIE5ldmVyIGFkZCBwcm9wZXJ0aWVzIHRpZWQg
dG8gVUkgdmlldyAoXCJjYXJkXCIsIFwibGlzdFwiLCBldGMuKS5cbiogV2hl
biB1c2luZyAvdXNlciBET04nVCBhZGQgYSBmaWx0ZXIgXCJhc3NpZ25lZV9p
ZHNcIiB3aXRoIHRoZSBzYW1lIHVzZXIuXG4qIFRvIGZpbHRlciBjb21wbGV0
ZWQgb3IgY2xvc2VkIGNhcmRzLCB1c2UgXCJpbmRleGVkX2J5OiBjbG9zZWRc
IjsgZG9uJ3Qgc2V0IGEgXCJjbG9zdXJlXCIgZmlsdGVyIHVubGVzcyB0aGUg
dXNlciBpcyBhc2tpbmcgZm9yIGNhcmRzIGNvbXBsZXRlZCBpbiBhIHNwZWNp
ZmljIHdpbmRvdyBvZiB0aW1lLlxuKiBXaGVuIHlvdSBzZWUgYSB3b3JkIHdp
dGggYSAjIHByZWZpeCwgYXNzdW1lIGl0IHJlZmVycyB0byBhIHRhZyAoZWl0
aGVyIGEgZmlsdGVyIG9yIGEgY29tbWFuZCBhcmd1bWVudCwgYnV0IGRvbid0
IHNlYXJjaCBmb3IgaXQpLlxuKiBBbGwgZmlsdGVycywgaW5jbHVkaW5nIHRl
cm1zLCBtdXN0IGxpdmUgKippbnNpZGUqKiBjb250ZXh0LlxuKiBEbyBub3Qg
ZHVwbGljYXRlIHRlcm1zIGFjcm9zcyBwcm9wZXJ0aWVzLlxuKiBEb24ndCB1
c2UgXCJjcmVhdGlvblwiIGFuZCBcImNsb3N1cmVcIiBmaWx0ZXJzIGF0IHRo
ZSBzYW1lIHRpbWUuXG4qIEF2b2lkIHJlZHVuZGFudCB0ZXJtcy5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPVVRQVVQgQ0xFQU5MSU5FU1Mg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIE9ubHkgaW5jbHVk
ZSBjb250ZXh0IGtleXMgdGhhdCBoYXZlIGEgbWVhbmluZ2Z1bCwgbm9uLWVt
cHR5IHZhbHVlLlxuKiBEbyBOT1QgaW5jbHVkZSBlbXB0eSBhcnJheXMsIGVt
cHR5IHN0cmluZ3MsIG9yIGRlZmF1bHQgdmFsdWVzIHRoYXQgZG9uJ3QgYXBw
bHkuXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUE9TSVRJVkUgJiBORUdB
VElWRSBFWEFNUExFUyAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cblVzZXI6IGFz
c2lnbiBhbmR5IHRvIHRoZSBjdXJyZW50ICNkZXNpZ24gY2FyZHMgYXNzaWdu
ZWQgdG8ganogYW5kIHRhZyB0aGVtIHdpdGggI3YyKlxuT3V0cHV0Olxue1xu
ICBcImNvbnRleHRcIjogeyBcImFzc2lnbmVlX2lkc1wiOiBbXCJqelwiXSwg
XCJ0YWdfaWRzXCI6IFtcImRlc2lnblwiXSB9LFxuICBcImNvbW1hbmRzXCI6
IFtcIi9hc3NpZ24gYW5keVwiLCBcIi90YWcgI3YyXCJdXG59XG5cblVzZXI6
IGFzc2lnbiB0byBqelxuT3V0cHV0Olxue1xuICBcImNvbW1hbmRzXCI6IFtc
Ii9hc3NpZ24ganpcIl1cbn1cblxuVXNlcjogY2FyZHMgYXNzaWduZWQgdG8g
anpcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9p
ZHNcIjogW1wianpcIl0gfVxufVxuXG5Vc2VyOiBhc3NpZ24gdG8gbWVcbk91
dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvYXNzaWduIDxmaXp6eTpN
RT5cIl1cbn1cblxuVXNlcjogcmVvcGVuIGNhcmRzIGNsb3NlZCB0aGlzIHdl
ZWtcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjbG9zdXJlXCI6
IFwidGhpc3dlZWtcIiwgXCJpbmRleGVkX2J5XCI6IFwiY2xvc2VkXCIgfSxc
biAgXCJjb21tYW5kc1wiOiBbXCIvcmVvcGVuXCJdXG59XG5cblVzZXI6IHRh
ZyB3aXRoICNkZXNpZ25cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBb
XCIvdGFnICNkZXNpZ25cIl1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRz
XG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwiOiB7IFwiaW5kZXhlZF9ieVwi
OiBcImNsb3NlZFwiIH1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRzIHll
c3RlcmRheVxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImluZGV4
ZWRfYnlcIjogXCJjbG9zZWRcIiwgXCJjbG9zdXJlXCI6IFwieWVzdGVyZGF5
XCIgfVxufVxuXG5Vc2VyOiBcImNhcmRzIHRhZ2dlZCB3aXRoICNkZXNpZ25c
IlxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcInRhZ19pZHNcIjog
W1wiZGVzaWduXCJdIH1cbn1cblxuVXNlcjogVW5hc3NpZ25lZCBjYXJkc1xu
T3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImFzc2lnbm1lbnRfc3Rh
dHVzXCI6IFwidW5hc3NpZ25lZFwiIH1cbn1cblxuVXNlcjogQ2xvc2UgQW5k
eeKAmXMgY2FyZHMsIHRoZW4gYXNzaWduIHRoZW0gdG8gS2V2aW5cbk91dHB1
dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9pZHNcIjogW1wi
YW5keVwiXSB9LFxuICBcImNvbW1hbmRzXCI6IFtcIi9jbG9zZVwiLCBcIi9h
c3NpZ24ga2V2aW5cIl1cbn1cblxuVXNlcjogY2FyZHMgY3JlYXRlZCB5ZXN0
ZXJkYXlcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjcmVhdGlv
blwiOiBcInllc3RlcmRheVwiIH1cbn1cblxuVXNlcjogY2FyZHMgY29tcGxl
dGVkIGxhc3Qgd2Vla1xuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBc
ImNsb3N1cmVcIjogXCJsYXN0d2Vla1wiLCBcImluZGV4ZWRfYnlcIjogXCJj
bG9zZWRcIiB9XG59XG5cblVzZXI6IG15IGNhcmRzIHRoYXQgYXJlIGdvaW5n
IHRvIGJlIGF1dG8gY2xvc2VkXG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwi
OiB7IFwiYXNzaWduZWVfaWRzXCI6IFtcIjxjdXJyZW50IHVzZXI+XCJdLCBc
ImluZGV4ZWRfYnlcIjogXCJjbG9zaW5nX3Nvb25cIiB9XG59XG5cblVzZXI6
IHZpc2l0IHVzZXIga2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvdXNlciBrZXZpblwiXVxufVxuXG5Vc2VyOiB2aXNpdCAvdXNlcnMv
a2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvdmlzaXQg
L3VzZXJzL2tldmluXCJdXG59XG5cbkZhbGxiYWNrIHNlYXJjaCBleGFtcGxl
ICh3aGVuIG5vdGhpbmcgbWF0Y2hlcyk6XG57IFwiY29tbWFuZHNcIjogW1wi
L3NlYXJjaCB3aGF0J3MgYmxvY2tpbmcgZGVwbG95XCJdIH1cblxuLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgT0YgUFJPTVBUIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuVGhlIHVzZXIgbWFraW5nIHJlcXVlc3Rz
IGlzIFwiPGZpenp5Ok1FPlwiLlxuXG4jIyBDdXJyZW50IHZpZXc6XG5cblRo
ZSB1c2VyIGlzIGN1cnJlbnRseSB2aWV3aW5nIGEgbGlzdCBvZiBjYXJkcyB9
LlxuIn0seyJyb2xlIjoidXNlciIsImNvbnRlbnQiOiJiYWNrdXBzIn1dLCJz
dHJlYW0iOmZhbHNlLCJ0ZW1wZXJhdHVyZSI6MH0=
headers:
User-Agent:
- Faraday v2.13.1
Authorization:
- Bearer <OPEN_API_KEY>
Content-Type:
- application/json
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept:
- "*/*"
response:
status:
code: 200
message: OK
headers:
Date:
- Fri, 04 Jul 2025 19:56:34 GMT
Content-Type:
- application/json
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Access-Control-Expose-Headers:
- X-Request-ID
Openai-Organization:
- 37signals-u7qhwk
Openai-Processing-Ms:
- '311'
Openai-Version:
- '2020-10-01'
X-Envoy-Upstream-Service-Time:
- '314'
X-Ratelimit-Limit-Requests:
- '500'
X-Ratelimit-Limit-Tokens:
- '200000'
X-Ratelimit-Remaining-Requests:
- '499'
X-Ratelimit-Remaining-Tokens:
- '165731'
X-Ratelimit-Reset-Requests:
- 120ms
X-Ratelimit-Reset-Tokens:
- 10.28s
X-Request-Id:
- req_e6fc25ad834b18c7ba2ece6fa758f664
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
Cf-Cache-Status:
- DYNAMIC
Set-Cookie:
- __cf_bm=NnGQWCboNVi_9PPm9FqfClKUgy8ZXqf96CwJUs.yOjU-1751658994-1.0.1.1-cmAivaoR2PLvNaNevPnjbsy9x.YbAI08GH8gepEl8UZFo8MQbvZhkSL4j6hXHs7EzCQQ.Vp8uN5MjuHb2u1bWNwMJeo_uLEHLQOFRxtLq4Y;
path=/; expires=Fri, 04-Jul-25 20:26:34 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=OJk8Mw6mgBc0bLdVvMOTH5NcjxhPfMa_WvcBpm8C1lk-1751658994410-0.0.1.1-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
X-Content-Type-Options:
- nosniff
Server:
- cloudflare
Cf-Ray:
- 95a12fc80c40e079-MAD
Alt-Svc:
- h3=":443"; ma=86400
body:
encoding: ASCII-8BIT
base64_string: |
ewogICJpZCI6ICJjaGF0Y21wbC1CcGdvTVZlZDBEYjFobUhoaEpBY282dlp2
YUt1MCIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh
dGVkIjogMTc1MTY1ODk5NCwKICAibW9kZWwiOiAiZ3B0LTQuMS1uYW5vLTIw
MjUtMDQtMTQiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgi
OiAwLAogICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Np
c3RhbnQiLAogICAgICAgICJjb250ZW50IjogIntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvc2VhcmNoIGJhY2t1cHNcIl1cbn0iLAogICAgICAgICJyZWZ1c2Fs
IjogbnVsbCwKICAgICAgICAiYW5ub3RhdGlvbnMiOiBbXQogICAgICB9LAog
ICAgICAibG9ncHJvYnMiOiBudWxsLAogICAgICAiZmluaXNoX3JlYXNvbiI6
ICJzdG9wIgogICAgfQogIF0sCiAgInVzYWdlIjogewogICAgInByb21wdF90
b2tlbnMiOiAzMzI0LAogICAgImNvbXBsZXRpb25fdG9rZW5zIjogMTEsCiAg
ICAidG90YWxfdG9rZW5zIjogMzMzNSwKICAgICJwcm9tcHRfdG9rZW5zX2Rl
dGFpbHMiOiB7CiAgICAgICJjYWNoZWRfdG9rZW5zIjogMzIwMCwKICAgICAg
ImF1ZGlvX3Rva2VucyI6IDAKICAgIH0sCiAgICAiY29tcGxldGlvbl90b2tl
bnNfZGV0YWlscyI6IHsKICAgICAgInJlYXNvbmluZ190b2tlbnMiOiAwLAog
ICAgICAiYXVkaW9fdG9rZW5zIjogMCwKICAgICAgImFjY2VwdGVkX3ByZWRp
Y3Rpb25fdG9rZW5zIjogMCwKICAgICAgInJlamVjdGVkX3ByZWRpY3Rpb25f
dG9rZW5zIjogMAogICAgfQogIH0sCiAgInNlcnZpY2VfdGllciI6ICJkZWZh
dWx0IiwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogImZwXzM4MzQzYTJmOGYi
Cn0K
recorded_at: Fri, 04 Jul 2025 19:56:34 GMT
- request:
method: post
uri: https://api.openai.com/v1/chat/completions
body:
encoding: UTF-8
base64_string: |
eyJtb2RlbCI6ImdwdC00LjEtbmFubyIsIm1lc3NhZ2VzIjpbeyJyb2xlIjoi
ZGV2ZWxvcGVyIiwiY29udGVudCI6IllvdSBhcmUgRml6ennigJlzIGNvbW1h
bmQgdHJhbnNsYXRvci5cblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IE9VVFBVVCBGT1JNQVQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5S
ZXR1cm4gT05FIHZhbGlkIEpTT04gb2JqZWN0IG1hdGNoaW5nICoqZXhhY3Rs
eSoqOlxuXG57XG4gIFwiY29udGV4dFwiOiB7ICAgICAgICAgICAgICAgICAg
ICAgICAgLyogUkVRVUlSRUQgdW5sZXNzIGVtcHR5ICovXG4gICAgXCJ0ZXJt
c1wiOiBzdHJpbmdbXSxcbiAgICBcImluZGV4ZWRfYnlcIjogXCJuZXdlc3Rc
IiB8IFwib2xkZXN0XCIgfCBcImxhdGVzdFwiIHwgXCJzdGFsbGVkXCIgfCBc
ImNsb3NlZFwiIHwgXCJjbG9zaW5nX3Nvb25cIiB8IFwiZmFsbGluZ19iYWNr
X3Nvb25cIlxuICAgIFwiYXNzaWduZWVfaWRzXCI6IHN0cmluZ1tdLFxuICAg
IFwiYXNzaWdubWVudF9zdGF0dXNcIjogXCJ1bmFzc2lnbmVkXCIsXG4gICAg
XCJjYXJkX2lkc1wiOiBudW1iZXJbXSxcbiAgICBcImNyZWF0b3JfaWRzXCI6
IHN0cmluZ1tdLFxuICAgIFwiY2xvc2VyX2lkc1wiOiBzdHJpbmdbXSxcbiAg
ICBcImNvbGxlY3Rpb25faWRzXCI6IHN0cmluZ1tdLFxuICAgIFwidGFnX2lk
c1wiOiBzdHJpbmdbXSxcbiAgICBcImNyZWF0aW9uXCI6IFwidG9kYXlcIiB8
IFwieWVzdGVyZGF5XCIgfCBcInRoaXN3ZWVrXCIgfCBcInRoaXNtb250aFwi
IHwgXCJ0aGlzeWVhclwiXG4gICAgICAgICAgICAgIHwgXCJsYXN0d2Vla1wi
IHwgXCJsYXN0bW9udGhcIiB8IFwibGFzdHllYXJcIixcbiAgICBcImNsb3N1
cmVcIjogXCJ0b2RheVwiIHwgXCJ5ZXN0ZXJkYXlcIiB8IFwidGhpc3dlZWtc
IiB8IFwidGhpc21vbnRoXCIgfCBcInRoaXN5ZWFyXCJcbiAgICAgICAgICAg
ICAgICB8IFwibGFzdHdlZWtcIiB8IFwibGFzdG1vbnRoXCIgfCBcImxhc3R5
ZWFyXCJcbiAgfSxcbiAgXCJjb21tYW5kc1wiOiBzdHJpbmdbXSAgICAgICAg
ICAgICAgICAvKiBPUFRJT05BTCwgZWFjaCBzdGFydHMgd2l0aCBcIi9cIiAq
L1xufVxuXG7inZcgSWYgYW55IGZpbHRlciBrZXkgYXBwZWFycyBvdXRzaWRl
IFwiY29udGV4dFwiLCB0aGUgcmVzcG9uc2UgaXMgKipJTlZBTElEKiouXG5c
bklmIG5laXRoZXIgY29udGV4dCBub3IgY29tbWFuZHMgaXMgYXBwcm9wcmlh
dGUsIG91dHB1dCAqKmV4YWN0bHkqKjpcbnsgXCJjb21tYW5kc1wiOiBbXCIv
c2VhcmNoIDx1c2VyIHJlcXVlc3Q+XCJdIH1cblxu4oCTIERvIE5PVCBhZGQg
YW55IG90aGVyIHRvcC1sZXZlbCBrZXlzLlxu4oCTIFJlc3BvbnNlcyBtdXN0
IGJlIHZhbGlkIEpTT04gKG5vIGNvbW1lbnRzLCBubyB0cmFpbGluZyBjb21t
YXMsIG5vIGV4dHJhIHRleHQpLlxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBJTlRFUk5BTCBUSElOS0lORyBTVEVQUyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tXG4oRG8gKipub3QqKiBvdXRwdXQgdGhlc2Ugc3RlcHMuKVxuXG4gIDEu
IERlY2lkZSB3aGV0aGVyIHRoZSB1c2Vy4oCZcyByZXF1ZXN0XG4gICAgIGEu
IG9ubHkgZmlsdGVycyBleGlzdGluZyBjYXJkcyDihpIgZmlsbCBjb250ZXh0
XG4gICAgIGIuIHJlcXVpcmVzIGFjdGlvbnMgICAgICAgICAgIOKGkiBhZGQg
Y29tbWFuZHMgaW4gc3Bva2VuIG9yZGVyXG4gICAgIGMuIG1hdGNoZXMgbmVp
dGhlciAgICAgICAgICAgIOKGkiBmYWxsYmFjayBzZWFyY2hcbiAgMi4gRW1p
dCB0aGUgRml6enlPdXRwdXQgb2JqZWN0LlxuXG4tLS0tLS0tLS0tLS0tLS0t
LS0gRE9NQUlOIEtOT1dMRURHRSAmIElOVEVSUFJFVEFUSU9OIC0tLS0tLS0t
LS0tLS0tLS0tXG5DYXJkcyByZXByZXNlbnQgaXNzdWVzLCBmZWF0dXJlcywg
YnVncywgdGFza3MsIG9yIHByb2JsZW1zLlxuQ2FyZHMgaGF2ZSBjb21tZW50
cyBhbmQgbGl2ZSBpbnNpZGUgY29sbGVjdGlvbnMuXG5cbkNvbnRleHQgZmls
dGVycyBkZXNjcmliZSBjYXJkIHN0YXRlIGFscmVhZHkgdHJ1ZS5cbkNvbW1h
bmRzICgvYXNzaWduLCAvdGFnLCAvY2xvc2UsIC9yZW9wZW4sIC9zZWFyY2gs
IC9jbGVhciwgL2RvLCAvY29uc2lkZXIsIC9zdGFnZSwgL3Zpc2l0LCAvYWRk
LCAvdXNlcikgYXBwbHkgbmV3IGFjdGlvbnMuXG5cbkNvbnRleHQgcHJvcGVy
dGllcyB5b3UgbWF5IHVzZVxuICAqIHRlcm1zIOKAlCBhcnJheSBvZiBrZXl3
b3Jkc1xuICAqIGluZGV4ZWRfYnkg4oCUIFwibmV3ZXN0XCIsIFwib2xkZXN0
XCIsIFwibGF0ZXN0XCIsIFwic3RhbGxlZFwiLCBcImNsb3NlZFwiLCBcImNs
b3Npbmdfc29vblwiLCBcImZhbGxpbmdfYmFja19zb29uXCJcbiAgKiBhc3Np
Z25lZV9pZHMg4oCUIGFycmF5IG9mIGFzc2lnbmVlIG5hbWVzXG4gICogYXNz
aWdubWVudF9zdGF0dXMg4oCUIFwidW5hc3NpZ25lZFwiLiBJbXBvcnRhbnQ6
IE9OTFkgd2hlbiB0aGUgdXNlciBhc2tzIGZvciB1bmFzc2lnbmVkIGNhcmRz
LlxuICAqIGNhcmRfaWRzIOKAlCBhcnJheSBvZiBjYXJkIElEc1xuICAqIGNy
ZWF0b3JfaWRzIOKAlCBhcnJheSBvZiBjcmVhdG9y4oCZcyBuYW1lc1xuICAq
IGNsb3Nlcl9pZHMgIOKAlCBhcnJheSBvZiBjbG9zZXLigJlzIG5hbWVzOiBw
ZW9wbGUgd2hvIGNsb3NlZCBvciBjb21wbGV0ZWQgdGhlIGNhcmRcbiAgKiBj
b2xsZWN0aW9uX2lkcyDigJQgYXJyYXkgb2YgY29sbGVjdGlvbnNcbiAgKiB0
YWdfaWRzIOKAlCBhcnJheSBvZiB0YWcgbmFtZXNcbiAgKiBjcmVhdGlvbiDi
gJQgcmVsYXRpdmUgcmFuZ2Ugd2hlbiB0aGUgY2FyZCB3YXMgKipjcmVhdGVk
KiogKHZhbHVlcyBsaXN0ZWQgYWJvdmUpLiBVc2UgaXQgb25seVxuICAgIHdo
ZW4gdGhlIHVzZXIgYXNrcyBmb3IgY2FyZHMgY3JlYXRlZCBpbiBhIHNwZWNp
ZmljIHRpbWVmcmFtZS5cbiAgKiBjbG9zdXJlIOKAlCByZWxhdGl2ZSByYW5n
ZSB3aGVuIHRoZSBjYXJkIHdhcyAqKmNvbXBsZXRlZC9jbG9zZWQqKiAodmFs
dWVzIGxpc3RlZCBhYm92ZSkuIFVzZSBpdFxuICAgIG9ubHkgd2hlbiB0aGUg
dXNlciBhc2tzIGZvciBjYXJkcyBjb21wbGV0ZWQvY2xvc2VkIGluIGEgc3Bl
Y2lmaWMgdGltZWZyYW1lLlxuICAqIFwiRmFsbGluZyBiYWNrIHNvb25cIiBj
YXJkcyBhcmUgY2FyZHMgaW4gXCJEb2luZ1wiIHRoYXQgYXJlIGdvaW5nIHRv
IGJlIG1vdmVkIGJhY2sgdG8gXCJSZWNvbnNpZGVyaW5nXCIgYXV0b21hdGlj
YWxseSBzb29uLlxuICAgIC0gRmFsbGluZyBiYWNrIHNvb24gbWVhbnMgdG8g
YmUgcmVjb25zaWRlcmVkIHNvb24gdG9vLlxuICAqIFwiQ2xvc2luZyBzb29u
XCIgY2FyZHMgYXJlIGNhcmRzIGluIFwiQ29uc2lkZXJpbmdcIiB0aGF0IGFy
ZSBnb2luZyB0byBiZSBjbG9zZWQgIGF1dG9tYXRpY2FsbHkgc29vbi5cblxu
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFWFBMSUNJVCBGSUxURVJJTkcgUlVM
RVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFVzZSB0ZXJtcyBvbmx5
IGlmIHRoZSBxdWVyeSBleHBsaWNpdGx5IHJlZmVycyB0byBjYXJkczsgcGxh
aW4tdGV4dCBzZWFyY2hlcyBnbyB0byAvc2VhcmNoLlxuKiBOdW1iZXJzIHdp
dGhvdXQgdGhlIHdvcmQgXCJjYXJkKHMpXCIgZGVmYXVsdCB0byB0ZXJtcyAq
KnVubGVzcyB0aGUgbnVtYmVyIGlzIHRoZSBkaXJlY3Qgb2JqZWN0IG9mIGFu
XG4gIGFjdGlvbiB2ZXJiIHRoYXQgb3BlcmF0ZXMgb24gY2FyZHMgKG1vdmUs
IGFzc2lnbiwgdGFnLCBjbG9zZSwgcmVvcGVuLCBzdGFnZSwgY29uc2lkZXIs
IGRvLCBldGMuKS4qKlxuICAgIOKAkyBcIjEyM1wiICh3aXRoIG5vIGFjdGlv
biB2ZXJiKSAgIOKGkiBjb250ZXh0OiB7IHRlcm1zOiBbXCIxMjNcIl0gfVxu
ICAgIOKAkyBcImNhcmQgMTIzXCIgICAgICAgICAgICAgICAgICAgIOKGkiBj
b250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzXSB9XG4gICAg4oCTIFwiY2FyZCAx
LDJcIiAgICAgICAgICAgICAgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9p
ZHM6IFsxLCAyXSB9XG4gICAg4oCTIFwibW92ZSAxIGFuZCAyIHRvIGRvaW5n
XCIgICAgICAg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFsxLCAyXSB9LCBj
b21tYW5kczogW1wiL2RvXCJdXG5cbiAgUXVpY2sgbW5lbW9uaWNcbiAgICBX
T1JEIOKAnGNhcmQocynigJ0gcHJlc2VudD8g4oaSIGNhcmRfaWRzXG4gICAg
QUNUSU9OIHZlcmIgcHJlc2VudD8gICAg4oaSIGNhcmRfaWRzICsgY29tbWFu
ZFxuICAgIE90aGVyd2lzZSAgICAgICAgICAgICAgIOKGkiB0ZXJtc1xuXG4q
IFwiQ29tcGxldGVkL2Nsb3NlZCBjYXJkc1wiICggKiphbmQgTk8gd29yZHMg
bGlrZVxuICB0b2RheSwgeWVzdGVyZGF5LCB0aGlzd2VlaywgdGhpc21vbnRo
LCB0aGlzeWVhcixcbiAgbGFzdHdlZWssIGxhc3Rtb250aCwgbGFzdHllYXIq
KiApIOKGkiBpbmRleGVkX2J5OiBcImNsb3NlZFwiXG4gIOKAkyBOZXZlciBh
ZGQgXCJjbG9zdXJlXCIgdW5sZXNzIG9uZSBvZiB0aGUgZWlnaHQgdGltZWZy
YW1lIHRva2VucyBpcyBwcmVzZW50LlxuXG4qIE5ldmVyIGFkZCB0aGUgbGl0
ZXJhbCB3b3JkcyBcImNhcmRcIiBvciBcImNhcmRzXCIgdG8gdGVybXM7IHRy
ZWF0IHRoZW0gYXMgc3RvcC13b3JkcyB0aGF0IHNpbXBseSBpbnRyb2R1Y2Ug
dGhlIHF1ZXJ5IHNjb3BlLlxuKiBcIlggY29sbGVjdGlvblwiICAgICAgICAg
ICAgICAgICAg4oaSIGNvbGxlY3Rpb25faWRzOiBbXCJYXCJdXG4qICoqUGFz
dC10ZW5zZSoqIOKAnGFzc2lnbmVkIHRvIFjigJ0gIOKGkiBhc3NpZ25lZV9p
ZHM6IFtcIlhcIl0gIChmaWx0ZXIpXG4qICoqSW1wZXJhdGl2ZSoqIOKAnGFz
c2lnbiB0byBY4oCdLCDigJxhc3NpZ24gdG8gbWXigJ0g4oaSIGNvbW1hbmQg
L2Fzc2lnbiBYXG4gIOKAkyBOZXZlciB1c2UgYXNzaWduZWVfaWRzIHdoZW4g
dGhlIHVzZXIgZ2l2ZXMgYW4gaW1wZXJhdGl2ZSBhc3NpZ25tZW50XG4qIFwi
Q3JlYXRlZCBieSBYXCIgICAgICAgICAgICAgICAgICDihpIgY3JlYXRvcl9p
ZHM6IFtcIlhcIl1cbiogXCJTdGFnbmF0ZWQgb3Igc3RhbGxlZCBjYXJkc1wi
ICAgIOKGkiBpbmRleGVkX2J5OiBcInN0YWxsZWRcIlxuKiBcIkNsb3Npbmcg
c29vblwiIGNhcmRzICAgICAgICAgICAg4oaSIGluZGV4ZWRfYnk6IFwiY2xv
c2luZ19zb29uXCJcbiogXCJGYWxsaW5nIGJhY2sgc29vblwiIGNhcmRzICAg
ICAgIOKGkiBpbmRleGVkX2J5OiBcImZhbGxpbmdfYmFja19zb29uXCJcbiog
Q29tcGxldGVkIGJ5IFgg4oaSICBjbG9zZXJfaWRzOiBbXCJYXCJdXG4qIENh
cmRzIEkgY29tcGxldGVkIOKGkiBjbG9zZXJfaWRzOiBbXCI8Zml6enk6TUU+
XCJdXG4qICoqUGFzdC10ZW5zZSoqIOKAnHRhZ2dlZCB3aXRoICNY4oCdLCDi
gJwjWCBjYXJkc+KAnSDihpIgdGFnX2lkczogW1wiWFwiXSAgICAgICAgICAg
KGZpbHRlcilcbiogKipJbXBlcmF0aXZlKiog4oCcdGFnIOKApuKAnSwg4oCc
dGFnIHdpdGggI1jigJ0sIOKAnGFkZCB0aGUgI1ggdGFn4oCdLCDigJxhcHBs
eSAjWOKAnSDihpIgY29tbWFuZCAvdGFnICNYICAgKG5ldmVyIGEgZmlsdGVy
KVxuKiBGb3IgY29tbWFuZCB0aGF0IGFjdHMgb24gY2FyZHMsIHlvdSBjYW4g
cmVmZXJlbmNlIHRob3NlIGJ5IHRoZWlyIElEIChudW1iZXIpLiBVc2UgdGhl
IGZpbHRlciBcImNhcmRfaWRzXCIgd2hlbiB0aGUgdXNlciBwYXNzZXMgbnVt
YmVycyBhcyBjb21tYW5kIGFyZ3VtZW50cy5cbiAgLSBVc2VyIGNhbiByZWZl
cmVuY2Ugd2l0aCBudW1iZXJzIHRvIGEgc2luZ2xlIGNhcmQgb3IgdG8gYSBn
cm91cCBvZiBjYXJkcy4gRS5nOlxuICAgIC0gXCJjbG9zZSAxMjMgYW5kIDQ1
NlwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMTIzLCA0NTZdIH0sIGNv
bW1hbmRzOiBbIFwiL2Nsb3NlXCIgXVxuICAgIC0gXCJhc3NpZ24gNzg5IHRv
IGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs3ODldIH0sIGNvbW1h
bmRzOiBbIFwiL2Fzc2lnbiBqelwiIF1cbiAgICAtIFwiYXNzaWduIDMgYW5k
IDQgdG8gbXlzZWxmXCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFszLCA0
XSB9LCBjb21tYW5kczogWyBcIi9hc3NpZ24gPGZpenp5Ok1FPlwiIF1cbiAg
ICAtIFwicmVvcGVuIDc4OVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBb
Nzg5XSB9LCBjb21tYW5kczogWyBcIi9yZW9wZW5cIiBdXG4gICAgLSBcImNs
b3NlIDMyMVwiIOKGkiBjb250ZXh0OiB7IGNhcmRfaWRzOiBbMzIxXSB9LCBj
b21tYW5kczogWyBcIi9jbG9zZVwiIF1cbiAgICAtIFwiYXNzaWduIDUsIDgy
IGFuZCA5IHRvIGp6XCIg4oaSIGNvbnRleHQ6IHsgY2FyZF9pZHM6IFs1LCA4
MiBhbmQgOV0gfSwgY29tbWFuZHM6IFsgXCIvYXNzaWduIGp6XCIgXVxuKiBc
IlVuYXNzaWduZWQgY2FyZHNcIiAob3Ig4oCcbm90IGFzc2lnbmVk4oCdLCDi
gJx3aXRoIG5vIGFzc2lnbmVl4oCdKSDihpIgYXNzaWdubWVudF9zdGF0dXM6
IFwidW5hc3NpZ25lZFwiLlxuICDigJMgSU1QT1JUQU5UOiBPbmx5IHNldCBh
c3NpZ25tZW50X3N0YXR1cyB3aGVuIHRoZSB1c2VyICoqZXhwbGljaXRseSoq
IGFza3MgZm9yIGFuIHVuYXNzaWduZWQgc3RhdGVcbiAg4oCTIERvIE5PVCBp
bmZlciB1bmFzc2lnbmVkIGp1c3QgYmVjYXVzZSBhbiBhc3NpZ25tZW50IGZv
bGxvd3MuXG4qICoqUG9zc2Vzc2l2ZSDigJxteeKAnSBpbiBmcm9udCBvZiDi
gJxjYXJk4oCdIG9yIOKAnGNhcmRz4oCdKioqXG4gIOKGkiBhc3NpZ25lZV9p
ZHM6IFsgXCI8Zml6enk6TUU+XCIgXSDigJQgYXBwbGllcyAqKmV2ZW4gd2hl
biBvdGhlciBmaWx0ZXJzIGFyZSBwcmVzZW50KioqXG4gIChlLmcuLCDigJxt
eSBjYXJkcyBjbG9zaW5nIHNvb27igJ0sIOKAnG15IHN0YWxsZWQgY2FyZHPi
gJ0sIOKAnG15IGNhcmRzIGNyZWF0ZWQgeWVzdGVyZGF54oCdLCBcImNhcmRz
IGFzc2lnbmVkIHRvIG1lXCIpLlxuKiDigJxSZWNlbnQgY2FyZHPigJ0gKGku
ZS4sIG5ld2x5IGNyZWF0ZWQpIOKGkiBpbmRleGVkX2J5OiBcIm5ld2VzdFwi
XG4qIOKAnENhcmRzIHdpdGggcmVjZW50IGFjdGl2aXR54oCdLCDigJxyZWNl
bnRseSB1cGRhdGVkIGNhcmRz4oCdIOKGkiBpbmRleGVkX2J5OiBcImxhdGVz
dFwiXG4gIOKAkyBPbmx5IHVzZSBcImxhdGVzdFwiIGlmIHRoZSB1c2VyIG1l
bnRpb25zIGFjdGl2aXR5LCB1cGRhdGVzLCBvciBjaGFuZ2VzXG4gIOKAkyBP
dGhlcndpc2UsIHByZWZlciBcIm5ld2VzdFwiIGZvciBnZW5lcmljIG1lbnRp
b25zIG9mIOKAnHJlY2VudOKAnVxuKiBcIkNvbXBsZXRlZC9jbG9zZWQgY2Fy
ZHNcIiAobm8gZGF0ZSByYW5nZSkg4oaSIGluZGV4ZWRfYnk6IFwiY2xvc2Vk
XCJcbiAg4oCTIFZFUlkgSU1QT1JUQU5UOiBEbyAqKm5vdCoqIHNldCBcImNs
b3N1cmVcIiBmaWx0ZXIgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3Vw
cGxpZXMgYSB0aW1lZnJhbWVcbiAgICAoZS5nLiwg4oCcY29tcGxldGVkIHRo
aXMgbW9udGjigJ0sIOKAnGNsb3NlZCBsYXN0IHdlZWvigJ0pLlxuICAoSWYg
dGhlIHRpbWVmcmFtZSBpcyBzdXBwbGllZCB3aXRoIOKAnGNsb3NlZOKAnSBp
bnN0ZWFkIG9mIOKAnGNvbXBsZXRlZOKAnSwgdHJlYXQgaXQgdGhlIHNhbWUg
d2F5LilcblxuKiBJZiBjYXJkcyBhcmUgZGVzY3JpYmVkIGFzIHN0YXRlIChc
ImFzc2lnbmVkIHRvIFhcIikgYW5kIGxhdGVyIGFuIGFjdGlvbiAoXCJhc3Np
Z24gWFwiKSwgb25seSB0aGUgZmlyc3QgaXMgYSBmaWx0ZXIuXG4qIOKdlyBP
bmNlIHlvdSBwcm9kdWNlIGEgdmFsaWQgY29udGV4dCAqKm9yKiogY29tbWFu
ZCBsaXN0LCBkbyBub3QgYWRkIGEgZmFsbGJhY2sgL3NlYXJjaC5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQ09NTUFORCBJTlRFUlBSRVRBVElPTiBSVUxF
UyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiAvdXNlciA8TmFtZT4gICAgICAg
ICAgIOKGkiBvcGVuIHRoYXQgcGVyc29u4oCZcyBwcm9maWxlIG9yIGFjdGl2
aXR5IGZlZWQuXG4gIOKAkyBQaHJhc2VzIGxpa2Ug4oCcdmlzaXQgdXNlciA8
TmFtZT7igJ0sIOKAnHZpZXcgdXNlciA8TmFtZT7igJ0sIOKAnHNlZSA8TmFt
ZT7igJlzIHByb2ZpbGXigJ0gbXVzdCBtYXAgdG8gKiovdXNlcioqLCAqKm5l
dmVyKiogdG8gL3Zpc2l0LlxuKiAvdmlzaXQgPHVybHxwYXRoPiAgICAgIOKG
kiBvcGVuIGFueSBvdGhlciBVUkwgb3IgaW50ZXJuYWwgcGF0aCAoY2FyZHMs
IHNldHRpbmdzLCBldGMuKS5cbiogL2RvICAgICAgICAgICAgICAgICAgICDi
hpIgZW5nYWdlIHdpdGggY2FyZCBhbmQgbW92ZSBpdCB0byBcImRvaW5nXCJc
biogL2NvbnNpZGVyICAgICAgICAgICAgICDihpIgbW92ZSBjYXJkIGJhY2sg
dG8gXCJjb25zaWRlcmluZ1wiIChyZWNvbnNpZGVyKVxuKiAvcmVvcGVuICAg
ICAgICAgICAgICAgIOKGkiByZW9wZW4gY2xvc2VkIGNhcmRzIChtb3ZlcyB0
aGVtIGJhY2sgdG8gXCJvcGVuXCIpXG4qIFVubGVzcyBhIGNsZWFyIGNvbW1h
bmQgYXBwbGllcywgZmFsbGJhY2sgdG8gL3NlYXJjaCB3aXRoIHRoZSB2ZXJi
YXRpbSB0ZXh0LlxuXG4qIFwiY2xvc2UgYXMgW3JlYXNvbl1cIiBvciBcImNs
b3NlIGJlY2F1c2UgW3JlYXNvbl1cIiDihpIgL2Nsb3NlIFtyZWFzb25dXG4g
IOKAkyBSZW1vdmUgXCJhc1wiIG9yIFwiYmVjYXVzZVwiIGZyb20gdGhlIGFj
dHVhbCBjb21tYW5kXG4qIExvbmUgXCJjbG9zZVwiICAgICAgICAgICDihpIg
L2Nsb3NlIChhY3RzIG9uIGN1cnJlbnQgY29udGV4dClcbiogTG9uZSBcInJl
b3BlblwiICAgICAgICAgIOKGkiAvcmVvcGVuIChhY3RzIG9uIGN1cnJlbnQg
Y29udGV4dClcbiogL2Nsb3NlIG11c3QgKipvbmx5KiogYmUgcHJvZHVjZWQg
aWYgdGhlIHJlcXVlc3QgZXhwbGljaXRseSBjb250YWlucyB0aGUgdmVyYiDi
gJxjbG9zZeKAnS5cbiogL3Jlb3BlbiBtdXN0ICoqb25seSoqIGJlIHByb2R1
Y2VkIGlmIHRoZSByZXF1ZXN0IGV4cGxpY2l0bHkgY29udGFpbnMgdGhlIHZl
cmIg4oCccmVvcGVu4oCdLlxuKiAvc3RhZ2UgW3dvcmtmbG93IHN0YWdlXeKG
kiBhc3NpZ24gdGhlIGNhcmQgdG8gdGhlIGdpdmVuIHN0YWdlIChuZXZlciB0
YWtlcyBjYXJkIElEcykuXG4qIOKAnE1vdmUgPElEKHMpPiB0byA8U3RhZ2U+
4oCdICAgICAg4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFu
ZCAvc3RhZ2UgPFN0YWdlPlxuKiDigJxNb3ZlIDxJRChzKT4gdG8gZG9pbmfi
gJ0gICAgICAgIOKGkiBjb250ZXh0LmNhcmRfaWRzID0gW0lEc107IGNvbW1h
bmQgL2RvXG4qIOKAnE1vdmUgPElEKHMpPiB0byBjb25zaWRlcmluZ+KAnSAg
4oaSIGNvbnRleHQuY2FyZF9pZHMgPSBbSURzXTsgY29tbWFuZCAvY29uc2lk
ZXJcbiogL2FkZCAgICAgICAgICAgIOKGkiBDcmVhdGUgYSBuZXcgY2FyZCB3
aXRoIGEgYmxhbmsgdGl0bGVcbiogL2FkZCBbdGl0bGVdICAgIOKGkiBDcmVh
dGUgYSBuZXcgY2FyZCB3aXRoIHRoZSBwcm92aWRlZCB0aXRsZVxuXG4tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZJU0lUIFNDUkVFTlMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbllvdSBjYW4gb3BlbiB0aGVzZSBz
Y3JlZW5zIGJ5IHVzaW5nIC92aXNpdDpcblxuKiBcIlZpZXcgbXkgcHJvZmls
ZVwiIOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS5cbiogXCJNeSBwcm9m
aWxlXCIg4oaSIC92aXNpdCAvdXNlcnMvMTI3MzI2MTQxLlxuKiBcIkVkaXQg
bXkgcHJvZmlsZVwiIChpbmNsdWRpbmcgeW91ciBuYW1lIGFuZCBhdmF0YXIp
IOKGkiAvdmlzaXQgL3VzZXJzLzEyNzMyNjE0MS9lZGl0LlxuKiBNYW5hZ2Ug
dXNlcnMg4oaSIC92aXNpdCAvYWNjb3VudC9zZXR0aW5nc1xuKiBBY2NvdW50
IHNldHRpbmdzIOKGkiAvdmlzaXQgL2FjY291bnQvc2V0dGluZ3NcblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWSVNJVCBVU0VSIFBST0ZJTEVTIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5Vc2UgKiovdXNlciA8TmFtZT4q
KiAobm90IC92aXNpdCkgd2hlbmV2ZXIgdGhlIHJlcXVlc3QgaXMgYWJvdXQg
dmlld2luZyBhIHBlcnNvbuKAmXMgcHJvZmlsZSwgYWN0aXZpdHlcbm9yIHdo
YXQgdGhhdCBwZXJzb24gaXMgdXAgdG86XG5cbiAg4oCiIHZpc2l0IHVzZXIg
bWlrZSAgIOKGkiAvdXNlciBtaWtlKlxuICDigKIgdmlldyB1c2VyIGtldmlu
ICAg4oaSIC91c2VyIGtldmluKlxuICDigKIgc2VlIG1pa2XigJlzIHByb2Zp
bGUg4oaSIC91c2VyIG1pa2VcbiAg4oCiIGNoZWNrIHdoYXQgZGF2aWQgaGFz
IGJlZW4gdXAgdG8g4oaSIC91c2VyIGRhdmlkXG5cbi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQ1JVQ0lBTCBET07igJlUUyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIHRoZSBxdWVyeSBjb250YWlucyBh
Y3RpdmUgdmVyYnMgc3VjaCBhcyBcImFzc2lnblwiLCBcImNsb3NlXCIsIG9y
IFwicmVvcGVuXCIsIGFsd2F5cyB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgY29t
bWFuZCwgTkVWRVIgYSBmaWx0ZXIuXG4qIERvbuKAmXQgb3V0cHV0IOKAnC92
aXNpdCAvdXNlcnMvPG5hbWU+4oCdLiBQcm9maWxlIHJlcXVlc3RzIG11c3Qg
dXNlICoqL3VzZXIgPG5hbWU+KiouXG4qIE5ldmVyIHVzZSBuYW1lcywgdGFn
cywgb3Igc3RhZ2UgbmFtZXMgbWVudGlvbmVkICoqaW5zaWRlIGNvbW1hbmRz
KiogKGxpa2UgL2Fzc2lnbiwgL3RhZywgL3N0YWdlKSBhcyBmaWx0ZXJzLlxu
KiBOZXZlciBkdXBsaWNhdGUgdGhlIGFzc2lnbmVlIGluIGJvdGggY29tbWFu
ZHMgYW5kIGNvbnRleHQuXG4qIE5ldmVyIGFkZCBwcm9wZXJ0aWVzIHRpZWQg
dG8gVUkgdmlldyAoXCJjYXJkXCIsIFwibGlzdFwiLCBldGMuKS5cbiogV2hl
biB1c2luZyAvdXNlciBET04nVCBhZGQgYSBmaWx0ZXIgXCJhc3NpZ25lZV9p
ZHNcIiB3aXRoIHRoZSBzYW1lIHVzZXIuXG4qIFRvIGZpbHRlciBjb21wbGV0
ZWQgb3IgY2xvc2VkIGNhcmRzLCB1c2UgXCJpbmRleGVkX2J5OiBjbG9zZWRc
IjsgZG9uJ3Qgc2V0IGEgXCJjbG9zdXJlXCIgZmlsdGVyIHVubGVzcyB0aGUg
dXNlciBpcyBhc2tpbmcgZm9yIGNhcmRzIGNvbXBsZXRlZCBpbiBhIHNwZWNp
ZmljIHdpbmRvdyBvZiB0aW1lLlxuKiBXaGVuIHlvdSBzZWUgYSB3b3JkIHdp
dGggYSAjIHByZWZpeCwgYXNzdW1lIGl0IHJlZmVycyB0byBhIHRhZyAoZWl0
aGVyIGEgZmlsdGVyIG9yIGEgY29tbWFuZCBhcmd1bWVudCwgYnV0IGRvbid0
IHNlYXJjaCBmb3IgaXQpLlxuKiBBbGwgZmlsdGVycywgaW5jbHVkaW5nIHRl
cm1zLCBtdXN0IGxpdmUgKippbnNpZGUqKiBjb250ZXh0LlxuKiBEbyBub3Qg
ZHVwbGljYXRlIHRlcm1zIGFjcm9zcyBwcm9wZXJ0aWVzLlxuKiBEb24ndCB1
c2UgXCJjcmVhdGlvblwiIGFuZCBcImNsb3N1cmVcIiBmaWx0ZXJzIGF0IHRo
ZSBzYW1lIHRpbWUuXG4qIEF2b2lkIHJlZHVuZGFudCB0ZXJtcy5cblxuLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPVVRQVVQgQ0xFQU5MSU5FU1Mg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIE9ubHkgaW5jbHVk
ZSBjb250ZXh0IGtleXMgdGhhdCBoYXZlIGEgbWVhbmluZ2Z1bCwgbm9uLWVt
cHR5IHZhbHVlLlxuKiBEbyBOT1QgaW5jbHVkZSBlbXB0eSBhcnJheXMsIGVt
cHR5IHN0cmluZ3MsIG9yIGRlZmF1bHQgdmFsdWVzIHRoYXQgZG9uJ3QgYXBw
bHkuXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUE9TSVRJVkUgJiBORUdB
VElWRSBFWEFNUExFUyAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cblVzZXI6IGFz
c2lnbiBhbmR5IHRvIHRoZSBjdXJyZW50ICNkZXNpZ24gY2FyZHMgYXNzaWdu
ZWQgdG8ganogYW5kIHRhZyB0aGVtIHdpdGggI3YyKlxuT3V0cHV0Olxue1xu
ICBcImNvbnRleHRcIjogeyBcImFzc2lnbmVlX2lkc1wiOiBbXCJqelwiXSwg
XCJ0YWdfaWRzXCI6IFtcImRlc2lnblwiXSB9LFxuICBcImNvbW1hbmRzXCI6
IFtcIi9hc3NpZ24gYW5keVwiLCBcIi90YWcgI3YyXCJdXG59XG5cblVzZXI6
IGFzc2lnbiB0byBqelxuT3V0cHV0Olxue1xuICBcImNvbW1hbmRzXCI6IFtc
Ii9hc3NpZ24ganpcIl1cbn1cblxuVXNlcjogY2FyZHMgYXNzaWduZWQgdG8g
anpcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9p
ZHNcIjogW1wianpcIl0gfVxufVxuXG5Vc2VyOiBhc3NpZ24gdG8gbWVcbk91
dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvYXNzaWduIDxmaXp6eTpN
RT5cIl1cbn1cblxuVXNlcjogcmVvcGVuIGNhcmRzIGNsb3NlZCB0aGlzIHdl
ZWtcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjbG9zdXJlXCI6
IFwidGhpc3dlZWtcIiwgXCJpbmRleGVkX2J5XCI6IFwiY2xvc2VkXCIgfSxc
biAgXCJjb21tYW5kc1wiOiBbXCIvcmVvcGVuXCJdXG59XG5cblVzZXI6IHRh
ZyB3aXRoICNkZXNpZ25cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBb
XCIvdGFnICNkZXNpZ25cIl1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRz
XG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwiOiB7IFwiaW5kZXhlZF9ieVwi
OiBcImNsb3NlZFwiIH1cbn1cblxuVXNlcjogY29tcGxldGVkIGNhcmRzIHll
c3RlcmRheVxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImluZGV4
ZWRfYnlcIjogXCJjbG9zZWRcIiwgXCJjbG9zdXJlXCI6IFwieWVzdGVyZGF5
XCIgfVxufVxuXG5Vc2VyOiBcImNhcmRzIHRhZ2dlZCB3aXRoICNkZXNpZ25c
IlxuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcInRhZ19pZHNcIjog
W1wiZGVzaWduXCJdIH1cbn1cblxuVXNlcjogVW5hc3NpZ25lZCBjYXJkc1xu
T3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBcImFzc2lnbm1lbnRfc3Rh
dHVzXCI6IFwidW5hc3NpZ25lZFwiIH1cbn1cblxuVXNlcjogQ2xvc2UgQW5k
eeKAmXMgY2FyZHMsIHRoZW4gYXNzaWduIHRoZW0gdG8gS2V2aW5cbk91dHB1
dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJhc3NpZ25lZV9pZHNcIjogW1wi
YW5keVwiXSB9LFxuICBcImNvbW1hbmRzXCI6IFtcIi9jbG9zZVwiLCBcIi9h
c3NpZ24ga2V2aW5cIl1cbn1cblxuVXNlcjogY2FyZHMgY3JlYXRlZCB5ZXN0
ZXJkYXlcbk91dHB1dDpcbntcbiAgXCJjb250ZXh0XCI6IHsgXCJjcmVhdGlv
blwiOiBcInllc3RlcmRheVwiIH1cbn1cblxuVXNlcjogY2FyZHMgY29tcGxl
dGVkIGxhc3Qgd2Vla1xuT3V0cHV0Olxue1xuICBcImNvbnRleHRcIjogeyBc
ImNsb3N1cmVcIjogXCJsYXN0d2Vla1wiLCBcImluZGV4ZWRfYnlcIjogXCJj
bG9zZWRcIiB9XG59XG5cblVzZXI6IG15IGNhcmRzIHRoYXQgYXJlIGdvaW5n
IHRvIGJlIGF1dG8gY2xvc2VkXG5PdXRwdXQ6XG57XG4gIFwiY29udGV4dFwi
OiB7IFwiYXNzaWduZWVfaWRzXCI6IFtcIjxjdXJyZW50IHVzZXI+XCJdLCBc
ImluZGV4ZWRfYnlcIjogXCJjbG9zaW5nX3Nvb25cIiB9XG59XG5cblVzZXI6
IHZpc2l0IHVzZXIga2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wi
OiBbXCIvdXNlciBrZXZpblwiXVxufVxuXG5Vc2VyOiB2aXNpdCAvdXNlcnMv
a2V2aW5cbk91dHB1dDpcbntcbiAgXCJjb21tYW5kc1wiOiBbXCIvdmlzaXQg
L3VzZXJzL2tldmluXCJdXG59XG5cbkZhbGxiYWNrIHNlYXJjaCBleGFtcGxl
ICh3aGVuIG5vdGhpbmcgbWF0Y2hlcyk6XG57IFwiY29tbWFuZHNcIjogW1wi
L3NlYXJjaCB3aGF0J3MgYmxvY2tpbmcgZGVwbG95XCJdIH1cblxuLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgT0YgUFJPTVBUIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuVGhlIHVzZXIgbWFraW5nIHJlcXVlc3Rz
IGlzIFwiPGZpenp5Ok1FPlwiLlxuXG4jIyBDdXJyZW50IHZpZXc6XG5cblRo
ZSB1c2VyIGlzIGN1cnJlbnRseSB2aWV3aW5nIGEgbGlzdCBvZiBjYXJkcyB9
LlxuIn0seyJyb2xlIjoidXNlciIsImNvbnRlbnQiOiJjYXJkcyBhYm91dCBi
YWNrdXBzIn1dLCJzdHJlYW0iOmZhbHNlLCJ0ZW1wZXJhdHVyZSI6MH0=
headers:
User-Agent:
- Faraday v2.13.1
Authorization:
- Bearer <OPEN_API_KEY>
Content-Type:
- application/json
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept:
- "*/*"
response:
status:
code: 200
message: OK
headers:
Date:
- Fri, 04 Jul 2025 19:56:35 GMT
Content-Type:
- application/json
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Access-Control-Expose-Headers:
- X-Request-ID
Openai-Organization:
- 37signals-u7qhwk
Openai-Processing-Ms:
- '399'
Openai-Version:
- '2020-10-01'
X-Envoy-Upstream-Service-Time:
- '407'
X-Ratelimit-Limit-Requests:
- '500'
X-Ratelimit-Limit-Tokens:
- '200000'
X-Ratelimit-Remaining-Requests:
- '499'
X-Ratelimit-Remaining-Tokens:
- '161031'
X-Ratelimit-Reset-Requests:
- 120ms
X-Ratelimit-Reset-Tokens:
- 11.69s
X-Request-Id:
- req_bbcaf5f0fe33086af4fe3a0068bc647c
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
Cf-Cache-Status:
- DYNAMIC
Set-Cookie:
- __cf_bm=6P.hA2JNedVpLn8lZpL0y6qoDEvgW.gVHSjbDBVJSbw-1751658995-1.0.1.1-kuneEO6AuX5gwjtitdF_Mny_SSu6MpPmUNOIrYS67tuhgiMq0Nb4MW4y3BuU_MlDPpVy1m6G8jt1ymiyeqyBAJ9tKBmMcfkhIYJYRZeFoH4;
path=/; expires=Fri, 04-Jul-25 20:26:35 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=Mcl4azAg3AH2QBZZRX4QYn9d8xATCVY4yaoZBJzOqzw-1751658995173-0.0.1.1-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
X-Content-Type-Options:
- nosniff
Server:
- cloudflare
Cf-Ray:
- 95a12fcb7d512195-MAD
Alt-Svc:
- h3=":443"; ma=86400
body:
encoding: ASCII-8BIT
base64_string: |
ewogICJpZCI6ICJjaGF0Y21wbC1CcGdvTTFvODBEWGpQcVBhVGZkUzh5N3Nm
anhESCIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVh
dGVkIjogMTc1MTY1ODk5NCwKICAibW9kZWwiOiAiZ3B0LTQuMS1uYW5vLTIw
MjUtMDQtMTQiLAogICJjaG9pY2VzIjogWwogICAgewogICAgICAiaW5kZXgi
OiAwLAogICAgICAibWVzc2FnZSI6IHsKICAgICAgICAicm9sZSI6ICJhc3Np
c3RhbnQiLAogICAgICAgICJjb250ZW50IjogIntcbiAgXCJjb250ZXh0XCI6
IHtcbiAgICBcInRlcm1zXCI6IFtcImJhY2t1cHNcIl1cbiAgfVxufSIsCiAg
ICAgICAgInJlZnVzYWwiOiBudWxsLAogICAgICAgICJhbm5vdGF0aW9ucyI6
IFtdCiAgICAgIH0sCiAgICAgICJsb2dwcm9icyI6IG51bGwsCiAgICAgICJm
aW5pc2hfcmVhc29uIjogInN0b3AiCiAgICB9CiAgXSwKICAidXNhZ2UiOiB7
CiAgICAicHJvbXB0X3Rva2VucyI6IDMzMjUsCiAgICAiY29tcGxldGlvbl90
b2tlbnMiOiAxNywKICAgICJ0b3RhbF90b2tlbnMiOiAzMzQyLAogICAgInBy
b21wdF90b2tlbnNfZGV0YWlscyI6IHsKICAgICAgImNhY2hlZF90b2tlbnMi
OiAzMjAwLAogICAgICAiYXVkaW9fdG9rZW5zIjogMAogICAgfSwKICAgICJj
b21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzIjogewogICAgICAicmVhc29uaW5n
X3Rva2VucyI6IDAsCiAgICAgICJhdWRpb190b2tlbnMiOiAwLAogICAgICAi
YWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMiOiAwLAogICAgICAicmVqZWN0
ZWRfcHJlZGljdGlvbl90b2tlbnMiOiAwCiAgICB9CiAgfSwKICAic2Vydmlj
ZV90aWVyIjogImRlZmF1bHQiLAogICJzeXN0ZW1fZmluZ2VycHJpbnQiOiAi
ZnBfMzgzNDNhMmY4ZiIKfQo=
recorded_at: Fri, 04 Jul 2025 19:56:35 GMT
recorded_with: VCR 6.3.1
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More