<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>222553</bug_id>
          
          <creation_ts>2021-03-01 08:38:30 -0800</creation_ts>
          <short_desc>Optimize float based sRGB colors that can be round tripped to uint8_t based representations</short_desc>
          <delta_ts>2021-03-21 10:43:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1734425</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-01 08:38:30 -0800</bug_when>
    <thetext>Optimize float based sRGB colors that can be round tripped to uint8_t based representations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734428</commentid>
    <comment_count>1</comment_count>
      <attachid>421828</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-01 08:40:26 -0800</bug_when>
    <thetext>Created attachment 421828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735641</commentid>
    <comment_count>2</comment_count>
      <attachid>422171</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-03 19:06:10 -0800</bug_when>
    <thetext>Created attachment 422171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737098</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-08 08:39:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/75171470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737327</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-08 15:30:35 -0800</bug_when>
    <thetext>Darin,

I&apos;m interested in your feedback on this change.

For the most part, it seems good, but it has one weird side effect I don&apos;t like. If you create a color like:

    auto color = Color { SRGBA&lt;float&gt; { ... } };

that can be losslessly converted to SRGBA&lt;uint8_t&gt; internally, than calls like:

    auto otherColor = color.colorWithAlphaMultipliedBy(0.5);

potentially have different results, because now the multiplication is taking place on the SRGBA&lt;uint8_t&gt;, and our existing behavior for that function is to keep the color&apos;s underlying type the same.

One way to avoid this might be to always convert to SRGBA&lt;float&gt; before doing one of these mutation-creations, and if the new color happens to fit in SRGBA&lt;uint8_t&gt; than it gets to, but otherwise, it stays unconverted to SRGBA&lt;float&gt;.

This effects the following member functions:
- colorWithAlpha
- colorWithAlphaMultipliedBy
- invertedColorWithAlpha

Fortunately, the model I describe above would leave SRGBA&lt;uint8_t&gt; as SRGBA&lt;uint8_t&gt; when used in common cases like c = c.invertedColorWithAlpha(1.0), as it would round trip cleanly.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737420</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-08 18:24:12 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; What do you think?

I think that it’s OK that these operations can be a bit costly and if someone wants to convert it back to SRGB&lt;uint8_t&gt; for some reason, they can do that explicitly.

I wonder if there’s any practical case that was efficient before and now will allocate and deallocate memory. Is there a good way for use to test for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737606</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-09 09:11:14 -0800</bug_when>
    <thetext>Seems like the risks are:

1) Extra memory use and slower performance managing colors in cases that before would round channels to 8-bit integers.

2) Slower code path and slower performance rendering in graphics libraries (OK, I admit it, only really thinking about Core Graphics) in cases that before would round channels to 8-bit integers.

3) Serialization where rounding to 8-bit integers used to be implicit, and is valuable for getting rid of unwanted extra precision, but would need to be done explicitly now.

I doubt that any of those risks are great, but seems that is where we should be alert for effects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737608</commentid>
    <comment_count>7</comment_count>
      <attachid>422171</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-09 09:15:04 -0800</bug_when>
    <thetext>Comment on attachment 422171
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=422171&amp;action=review

I like this change and think we should do it.

&gt; Source/WebCore/platform/graphics/Color.h:225
&gt; +    void setColor(const SRGBA&lt;float&gt;&amp; color, OptionSet&lt;FlagsIncludingPrivate&gt; flags = { });

Omit the name flags here.

&gt; Source/WebCore/platform/graphics/Color.h:227
&gt; +    void setColor(const ColorType&amp; color, OptionSet&lt;FlagsIncludingPrivate&gt; flags = { });

Omit the name flags here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737701</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-09 12:16:57 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Seems like the risks are:
&gt; 
&gt; 1) Extra memory use and slower performance managing colors in cases that
&gt; before would round channels to 8-bit integers.

Most, if not all, of the cases seem to be confined to temporary colors, created to be passed to a GraphicsContext function. 

&gt; 
&gt; 2) Slower code path and slower performance rendering in graphics libraries
&gt; (OK, I admit it, only really thinking about Core Graphics) in cases that
&gt; before would round channels to 8-bit integers.

This really comes down to the behavior of cachedCGColor()/leakCGColor(). For the latter, we always convert to at least SRGBA&lt;float&gt; already before creating a CGColorRef. For the former, there is a small possibility there could be some cache misses, but only in cases where we were already extraordinarily lucky.

&gt; 
&gt; 3) Serialization where rounding to 8-bit integers used to be implicit, and
&gt; is valuable for getting rid of unwanted extra precision, but would need to
&gt; be done explicitly now.

I looked, and couldn&apos;t find any cases of this. 

Thanks for the detailed analysis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737702</commentid>
    <comment_count>9</comment_count>
      <attachid>422742</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-09 12:18:03 -0800</bug_when>
    <thetext>Created attachment 422742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737819</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-09 15:50:26 -0800</bug_when>
    <thetext>Hm, interesting. Changing to always convert to SRGBA&lt;float&gt; in those mutation functions does cause some serialization change. Fun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737826</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-09 15:57:55 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #10)
&gt; Hm, interesting. Changing to always convert to SRGBA&lt;float&gt; in those
&gt; mutation functions does cause some serialization change. Fun.

But I know how to fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737906</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-09 19:49:14 -0800</bug_when>
    <thetext>Actually, on second thought, I think these new results are fine. I am just going to update the results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738098</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-10 09:54:53 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #12)
&gt; Actually, on second thought, I think these new results are fine. I am just
&gt; going to update the results.

I’m not sure I understand your decision and would like to know more; I can wait for the patch, I suppose.

If the same color can be serialized multiple different ways without loss, what determines the choice? If it’s a policy in the code doing the serialization, that’s great and fine with me. If it’s a side effect of how the color was computed, please don’t sign me up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738103</commentid>
    <comment_count>14</comment_count>
      <attachid>422841</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-10 09:59:21 -0800</bug_when>
    <thetext>Created attachment 422841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738128</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-10 10:55:26 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; (In reply to Sam Weinig from comment #12)
&gt; &gt; Actually, on second thought, I think these new results are fine. I am just
&gt; &gt; going to update the results.
&gt; 
&gt; I’m not sure I understand your decision and would like to know more; I can
&gt; wait for the patch, I suppose.

I am not sure I do either, and I actually got cold feet and split the difference, making the actually web exposed bits retain their old serialization.

&gt; 
&gt; If the same color can be serialized multiple different ways without loss,
&gt; what determines the choice? If it’s a policy in the code doing the
&gt; serialization, that’s great and fine with me. If it’s a side effect of how
&gt; the color was computed, please don’t sign me up.

Ok, so here is the story (I am going to be a bit verbose partially to re-explain it to myself), because it is a bit of both. This is all only for sRGB colors, all other colorspaces behave a bit more sanely (though lab() and color(lab ...) are also odd).

The CSS Color 4 spec, and our code historically, differentiate between colors parsed in the legacy color syntaxes (e.g. #FF00AA, rgba(127, 255, 0, 0.5), hsl(...), etc.) 
and &quot;modern&quot; color syntax (e.g. color(srgb 1 0 0 / 0.5)). 

The difference is used in two ways:
1. bit-per-component count 
   - Legacy sRGB: 8 bits
   - Modern: 32 bits
2. serialization
   - Legacy sRGB: https://drafts.csswg.org/css-color-4/#serializing-sRGB-values
   - Modern: https://drafts.csswg.org/css-color-4/#serializing-color-function-values

We encode this difference in Color via the UseColorFunctionSerialization, and then in serialization, if an sRGB color has that bit set, we serialize using &quot;color(srgb ...)&quot;. 

But, that isn&apos;t the full story, because we actually always serialize as &quot;color(srgb ...)&quot; if the underlying type is SRGBA&lt;float&gt; (meaning we only check the bit when the underlying type is SRGBA&lt;uint8_t&gt;). The rationale behind this is that if we serialize as a SRGBA&lt;float&gt; in the legacy form, it would not correctly round trip if parsed again, since it would be clamped to SRGBA&lt;uint8_t&gt; on parsing.

This system works fine, if we only ever store and use colors as they were parsed. But if we ever need to modify a color and then serialize it out again, we run into potential problems.

The one place we seem to do that, though there may be more we are not testing as well, is in the &lt;canvas&gt; APIs to set a stroke/fill/shadow color using a string, and optional alpha override.

So, if you have:

 ctx.setFillColor(&apos;red&apos;, 0.5)

we parse &quot;red&quot; as legacy sRGB color into &apos;color&apos; (stored as SRGBA&lt;uint8_t&gt;), and if we were to then call:

  auto newColor = color.colorWithAlpha(0.5);

&apos;newColor&apos; would now be a SRGBA&lt;float&gt; (since 0.5 does not round trip to cleanly) and would serialize as &apos;color(srgb 1 0 0 / 0.5)&apos;.

Maybe that&apos;s ok, but since canvas is odd enough, I opted to special case this, and have the canvas code check if it was a legacy sRGB color it just parsed, and then eagerly convert the float alpha to byte alpha to ensure the representation stayed as bytes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738133</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-10 10:59:00 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #15)
&gt; (since 0.5 does not round trip cleanly)

There’s what I missed. Serialization is subtly different from storage for srbga() specifically. This:

    srgba(255, 0, 0, 0.5)

Looks like it exactly matches:

    colors(srgb, 1, 0, 0 / 0.5)

But somehow that 0.5 in the first case is secretly actually something more like 0.50196.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738139</commentid>
    <comment_count>17</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-10 11:02:55 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; (In reply to Sam Weinig from comment #15)
&gt; &gt; (since 0.5 does not round trip cleanly)
&gt; 
&gt; There’s what I missed. Serialization is subtly different from storage for
&gt; srbga() specifically. This:
&gt; 
&gt;     srgba(255, 0, 0, 0.5)
&gt; 
&gt; Looks like it exactly matches:
&gt; 
&gt;     colors(srgb, 1, 0, 0 / 0.5)
&gt; 
&gt; But somehow that 0.5 in the first case is secretly actually something more
&gt; like 0.50196.

Exactly. rgba(255, 0, 0, 0.5), as a &quot;legacy&quot; sRGB color, always uses the SRGBA&lt;uint8_t&gt; form, secretly losing precision.

Note, this is not a requirement of the spec. The spec only mandates a minimum precision of 8 bits, we could totally store rgba(255, 0, 0, 0.5) as SRGBA&lt;float&gt;, but so far think doing so is probably not worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738479</commentid>
    <comment_count>18</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-11 09:15:48 -0800</bug_when>
    <thetext>Darin, mind reviewing this latest version? (I will have to update some platform specific render tree results before landing, but the code is good to review now).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738490</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-11 09:41:00 -0800</bug_when>
    <thetext>Sure, I’ll review. I was slow to do so because I am ambivalent about the workaround explicit serialization format checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742082</commentid>
    <comment_count>20</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-21 10:43:24 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #19)
&gt; Sure, I’ll review. I was slow to do so because I am ambivalent about the
&gt; workaround explicit serialization format checks.

Any thoughts on how to avoid it?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421828</attachid>
            <date>2021-03-01 08:40:26 -0800</date>
            <delta_ts>2021-03-03 19:06:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222553-20210301084025.patch</filename>
            <type>text/plain</type>
            <size>4364</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MzY1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAzLTAxICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBmbG9hdCBiYXNlZCBz
UkdCIGNvbG9ycyB0aGF0IGNhbiBiZSByb3VuZCB0cmlwcGVkIHRvIHVpbnQ4X3QgYmFzZWQgcmVw
cmVzZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjI1NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xv
cjo6c2V0Q29sb3IpOgorICAgICAgICBDYW5vbmljYWxpemUgU1JHQkE8ZmxvYXQ+cyB0aGF0IGNh
biByb3VuZCB0cmlwcGVkIHRvL2Zyb20gU1JHQkE8dWludDhfdD4gYXMgU1JHQkE8dWludDhfdD4K
KyAgICAgICAgdG8gcmVtb3ZlIHRoZSBuZWVkIGZvciBhbiBhbGxvY2F0aW9uIG9mIEV4dGVuZGVk
Q29sb3IgaW4gc29tZSBjb21tb24gY2FzZXMuCisKIDIwMjEtMDMtMDEgIENocmlzIExvcmQgIDxj
bG9yZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIENTU0ZvbnRGYWNlIHNob3VsZCBub3QgbmVlZCBp
dHMgbV9mb250U2VsZWN0b3IgZGF0YSBtZW1iZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuaAkocmV2aXNpb24gMjczNjMzKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsOCArNzIsNiBA
QCBwdWJsaWM6CiAgICAgQ29sb3IoU1JHQkE8dWludDhfdD4sIE9wdGlvblNldDxGbGFncz4gPSB7
IH0pOwogICAgIENvbG9yKE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiwgT3B0aW9uU2V0PEZsYWdz
PiA9IHsgfSk7CiAKLSAgICBDb2xvcihDb2xvckNvbXBvbmVudHM8ZmxvYXQ+LCBDb2xvclNwYWNl
LCBPcHRpb25TZXQ8RmxhZ3M+ID0geyB9KTsKLSAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SXNDb2xvclR5cGVXaXRoQ29tcG9u
ZW50VHlwZTxDb2xvclR5cGUsIGZsb2F0Pj4qID0gbnVsbHB0cj4KICAgICBDb2xvcihjb25zdCBD
b2xvclR5cGUmLCBPcHRpb25TZXQ8RmxhZ3M+ID0geyB9KTsKICAgICAKQEAgLTIwMCw2ICsxOTgs
OSBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxGbGFnc0luY2x1ZGluZ1ByaXZhdGU+IGZsYWdz
KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldENvbG9yKFNSR0JBPHVpbnQ4X3Q+LCBPcHRpb25TZXQ8
RmxhZ3NJbmNsdWRpbmdQcml2YXRlPiA9IHsgfSk7CisgICAgdm9pZCBzZXRDb2xvcihjb25zdCBT
UkdCQTxmbG9hdD4mIGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3NJbmNsdWRpbmdQcml2YXRlPiBmbGFn
cyA9IHsgfSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlV2l0aENvbXBvbmVudFR5cGU8Q29sb3JUeXBlLCBmbG9h
dD4+KiA9IG51bGxwdHI+CisgICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvclR5cGUmIGNvbG9y
LCBPcHRpb25TZXQ8RmxhZ3NJbmNsdWRpbmdQcml2YXRlPiBmbGFncyA9IHsgfSk7CiAgICAgdm9p
ZCBzZXRFeHRlbmRlZENvbG9yKFJlZjxFeHRlbmRlZENvbG9yPiYmLCBPcHRpb25TZXQ8RmxhZ3NJ
bmNsdWRpbmdQcml2YXRlPiA9IHsgfSk7CiAKICAgICBQYWNrZWRDb2xvcjo6UkdCQSBhc1BhY2tl
ZElubGluZSgpIGNvbnN0OwpAQCAtMjkzLDIyICsyOTQsMTcgQEAgaW5saW5lIENvbG9yOjpDb2xv
cihPcHRpb25hbDxTUkdCQTx1aW50OAogICAgICAgICBzZXRDb2xvcigqY29sb3IsIHRvRmxhZ3NJ
bmNsdWRpbmdQcml2YXRlKGZsYWdzKSk7CiB9CiAKLWlubGluZSBDb2xvcjo6Q29sb3IoQ29sb3JD
b21wb25lbnRzPGZsb2F0PiBjb21wb25lbnRzLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIE9wdGlv
blNldDxGbGFncz4gZmxhZ3MpCi17Ci0gICAgc2V0RXh0ZW5kZWRDb2xvcihFeHRlbmRlZENvbG9y
OjpjcmVhdGUoY29tcG9uZW50cywgY29sb3JTcGFjZSksIHRvRmxhZ3NJbmNsdWRpbmdQcml2YXRl
KGZsYWdzKSk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWZfdDxJc0NvbG9yVHlwZVdpdGhDb21wb25lbnRUeXBlPENvbG9yVHlwZSwgZmxv
YXQ+Pio+CiBpbmxpbmUgQ29sb3I6OkNvbG9yKGNvbnN0IENvbG9yVHlwZSYgY29sb3IsIE9wdGlv
blNldDxGbGFncz4gZmxhZ3MpCiB7Ci0gICAgc2V0RXh0ZW5kZWRDb2xvcihFeHRlbmRlZENvbG9y
OjpjcmVhdGUoY29sb3IpLCB0b0ZsYWdzSW5jbHVkaW5nUHJpdmF0ZShmbGFncykpOworICAgIHNl
dENvbG9yKGNvbG9yLCB0b0ZsYWdzSW5jbHVkaW5nUHJpdmF0ZShmbGFncykpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SXNDb2xv
clR5cGVXaXRoQ29tcG9uZW50VHlwZTxDb2xvclR5cGUsIGZsb2F0Pj4qPgogaW5saW5lIENvbG9y
OjpDb2xvcihjb25zdCBPcHRpb25hbDxDb2xvclR5cGU+JiBjb2xvciwgT3B0aW9uU2V0PEZsYWdz
PiBmbGFncykKIHsKICAgICBpZiAoY29sb3IpCi0gICAgICAgIHNldEV4dGVuZGVkQ29sb3IoRXh0
ZW5kZWRDb2xvcjo6Y3JlYXRlKCpjb2xvciksIHRvRmxhZ3NJbmNsdWRpbmdQcml2YXRlKGZsYWdz
KSk7CisgICAgICAgIHNldENvbG9yKCpjb2xvciwgdG9GbGFnc0luY2x1ZGluZ1ByaXZhdGUoZmxh
Z3MpKTsKIH0KIAogaW5saW5lIENvbG9yOjpDb2xvcihSZWY8RXh0ZW5kZWRDb2xvcj4mJiBleHRl
bmRlZENvbG9yLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQpAQCAtNDg3LDYgKzQ4MywyNCBAQCBp
bmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoU1JHQkE8dWludDhfCiAgICAgQVNTRVJUKGlzSW5s
aW5lKCkpOwogfQogCitpbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgU1JHQkE8Zmxv
YXQ+JiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT4gZmxhZ3MpCit7Cisg
ICAgLy8gU3RvcmUgYSBTUkdCQTxmbG9hdD4gYXMgU1JHQkE8dWludDhfdD4gaWYgaXQgY2FuIGJl
IGNvbnZlcnRlZCB0by9mcm9tIFNSR0JBPHVpbnQ4X3Q+IHdpdGhvdXQgbG9zcyBvZiBwcmVjaXNp
b24uCisgICAgLy8gRklYTUU6IENvbnNpZGVyIGFwcGx5aW5nIHRoaXMgb3B0aW1pemF0aW9uIHRv
IG1vcmUgY29sb3IgdHlwZXMgYnkgbW92aW5nIHRoZSBjb2xvciBzcGFjZSBtZW1iZXIgb2YgRXh0
ZW5kZWRDb2xvciBpbnRvCisgICAgLy8gdGhlIGZyZWUgYml0cyBpbiBtX2NvbG9yQW5kRmxhZ3Mu
CisgICAgaWYgKGF1dG8gY29tcHJlc3NlZENvbG9yID0gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4
X3Q+Pihjb2xvcik7IGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbXByZXNzZWRDb2xvcikg
PT0gY29sb3IpIHsKKyAgICAgICAgc2V0Q29sb3IoY29tcHJlc3NlZENvbG9yLCBmbGFncyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2V0RXh0ZW5kZWRDb2xvcihFeHRlbmRlZENvbG9y
OjpjcmVhdGUoY29sb3IpLCBmbGFncyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlw
ZSwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxJc0NvbG9yVHlwZVdpdGhDb21wb25lbnRUeXBl
PENvbG9yVHlwZSwgZmxvYXQ+Pio+CitpbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoY29uc3Qg
Q29sb3JUeXBlJiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT4gZmxhZ3Mp
Cit7CisgICAgc2V0RXh0ZW5kZWRDb2xvcihFeHRlbmRlZENvbG9yOjpjcmVhdGUoY29sb3IpLCBm
bGFncyk7Cit9CisKIGlubGluZSB2b2lkIENvbG9yOjpzZXRFeHRlbmRlZENvbG9yKFJlZjxFeHRl
bmRlZENvbG9yPiYmIGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3NJbmNsdWRpbmdQcml2YXRlPiBmbGFn
cykKIHsKICAgICBmbGFncy5hZGQoeyBGbGFnc0luY2x1ZGluZ1ByaXZhdGU6OlZhbGlkLCBGbGFn
c0luY2x1ZGluZ1ByaXZhdGU6OkV4dGVuZGVkIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422171</attachid>
            <date>2021-03-03 19:06:10 -0800</date>
            <delta_ts>2021-03-09 12:18:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222553-20210303190609.patch</filename>
            <type>text/plain</type>
            <size>13141</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3Mzg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAzLTAyICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBmbG9hdCBiYXNlZCBz
UkdCIGNvbG9ycyB0aGF0IGNhbiBiZSByb3VuZCB0cmlwcGVkIHRvIHVpbnQ4X3QgYmFzZWQgcmVw
cmVzZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjI1NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTdG9yZSBTUkdCQTxmbG9hdD4gY29sb3IgdmFsdWVzIGFzIGlubGluZSBTUkdCQTx1aW50
OF90PiBpbiBDb2xvciBpZiB0aGUgY29tcG9uZW50cyBjYW4KKyAgICAgICAgYmUgcm91bmQgdHJp
cHBlZCB3aXRob3V0IGNoYW5naW5nLgorCisgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBDb2xvcihT
UkdCQTxmbG9hdD4oMSwgMSwgMSwgMSkpIGFuZCBDb2xvcihTUkdCQTx1aW50OF90PigyNTUsIDI1
NSwgMjU1LCAyNTUpKQorICAgICAgICAoYXMgZXhhbXBsZXMpIHdpbGwgbm93IGJlIHJldHVybiB0
aGUgc2FtZSB2YWx1ZXMgZm9yIGhhc2goKSBhbmQgb3BlcmF0b3I9PSgpLCB3aGVyZWFzIGluIHRo
ZQorICAgICAgICBwYXN0IHRoZXkgZGlkIG5vdC4KKworICAgICAgICBUaGlzIGlzIG5vdyBmZWFz
aWJsZSBhcyB0aGUgb25seSByZWFzb24gd2UgdXNlZCB0byBkaWZmZXJlbnRpYXRlIHdhcyB0byBz
aWduYWwgdG8gc2VyaWFsaXphdGlvbgorICAgICAgICB3aGljaCBmb3JtIHRvIHRha2UsIFNSR0JB
PGZsb2F0PiB1c2luZyBjb2xvciguLi4pIGFuZCBTUkdCQTx1aW50OF90PiB1c2luZyByZ2JhKC4u
LiksIGJ1dCBub3cKKyAgICAgICAgdXNlIHRoZSBVc2VDb2xvckZ1bmN0aW9uU2VyaWFsaXphdGlv
biBmbGFnIGluc3RlYWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OnNldENvbG9yKToKKwogMjAyMS0wMy0wMyAgQW5kcmVz
IEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSB0aGUg
bXVsdGlwbGUgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MgcG9zdFhYWE5vdGlmaWNh
dGlvbiBtZXRob2RzIHdpdGggYSBzaW5nbGUgcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAy
NzM4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2NSwxMCArMTY1LDEwIEBAIENvbG9yIENvbG9yOjpzZW1hbnRpY0Nv
bG9yKCkgY29uc3QKIHsKICAgICBpZiAoaXNTZW1hbnRpYygpKQogICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgCisKICAgICBpZiAoaXNPdXRPZkxpbmUoKSkKLSAgICAgICAgcmV0dXJuIHsgYXNP
dXRPZkxpbmVSZWYoKSwgY29sb3JTcGFjZSgpLCBGbGFnczo6U2VtYW50aWMgfTsKLSAgICByZXR1
cm4geyBhc0lubGluZSgpLCBGbGFnczo6U2VtYW50aWMgfTsKKyAgICAgICAgcmV0dXJuIHsgYXNP
dXRPZkxpbmVSZWYoKSwgY29sb3JTcGFjZSgpLCBmbGFncygpIHwgRmxhZ3NJbmNsdWRpbmdQcml2
YXRlOjpTZW1hbnRpYyB9OworICAgIHJldHVybiB7IGFzSW5saW5lKCksIGZsYWdzKCkgfCBGbGFn
c0luY2x1ZGluZ1ByaXZhdGU6OlNlbWFudGljIH07CiB9CiAKIHN0ZDo6cGFpcjxDb2xvclNwYWNl
LCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+PiBDb2xvcjo6Y29sb3JTcGFjZUFuZENvbXBvbmVudHMo
KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShy
ZXZpc2lvbiAyNzM4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogCiAgICAgQ29s
b3Igb3BhcXVlQ29sb3IoKSBjb25zdCB7IHJldHVybiBjb2xvcldpdGhBbHBoYSgxLjBmKTsgfQog
Ci0gICAgQ29sb3Igc2VtYW50aWNDb2xvcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENv
bG9yIHNlbWFudGljQ29sb3IoKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdGhlIHVuZGVybHlp
bmcgY29sb3IgaWYgaXRzIHR5cGUgaXMgU1JHQkE8dWludDhfdD4uCiAgICAgT3B0aW9uYWw8U1JH
QkE8dWludDhfdD4+IHRyeUdldEFzU1JHQkFCeXRlcygpIGNvbnN0OwpAQCAtMjAzLDcgKzIwMyw2
IEBAIHByaXZhdGU6CiAKICAgICAgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0PiBtX2NvbXBvbmVu
dHM7CiAgICAgfTsKLSAgICBDb2xvcihSZWY8T3V0T2ZMaW5lQ29tcG9uZW50cz4mJiwgQ29sb3JT
cGFjZSwgT3B0aW9uU2V0PEZsYWdzPiA9IHsgfSk7CiAKICAgICBlbnVtIGNsYXNzIEZsYWdzSW5j
bHVkaW5nUHJpdmF0ZSA6IHVpbnQ4X3QgewogICAgICAgICBTZW1hbnRpYyAgICAgICAgICAgICAg
ICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oRmxhZ3M6OlNlbWFudGljKSwKQEAgLTIx
NSwxMiArMjE0LDE4IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBzdGF0aWMgT3B0aW9uU2V0PEZs
YWdzSW5jbHVkaW5nUHJpdmF0ZT4gdG9GbGFnc0luY2x1ZGluZ1ByaXZhdGUoT3B0aW9uU2V0PEZs
YWdzPiBmbGFncykgeyByZXR1cm4gT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT46OmZy
b21SYXcoZmxhZ3MudG9SYXcoKSk7IH0KIAorICAgIENvbG9yKFNSR0JBPHVpbnQ4X3Q+LCBPcHRp
b25TZXQ8RmxhZ3NJbmNsdWRpbmdQcml2YXRlPik7CisgICAgQ29sb3IoUmVmPE91dE9mTGluZUNv
bXBvbmVudHM+JiYsIENvbG9yU3BhY2UsIE9wdGlvblNldDxGbGFnc0luY2x1ZGluZ1ByaXZhdGU+
KTsKKwogICAgIE9wdGlvblNldDxGbGFnc0luY2x1ZGluZ1ByaXZhdGU+IGZsYWdzKCkgY29uc3Q7
CiAgICAgYm9vbCBpc091dE9mTGluZSgpIGNvbnN0OwogICAgIGJvb2wgaXNJbmxpbmUoKSBjb25z
dDsKIAogICAgIHZvaWQgc2V0Q29sb3IoU1JHQkE8dWludDhfdD4sIE9wdGlvblNldDxGbGFnc0lu
Y2x1ZGluZ1ByaXZhdGU+ID0geyB9KTsKLSAgICB2b2lkIHNldE91dE9mTGluZUNvbXBvbmVudHMo
UmVmPE91dE9mTGluZUNvbXBvbmVudHM+JiYsIENvbG9yU3BhY2UsIE9wdGlvblNldDxGbGFnc0lu
Y2x1ZGluZ1ByaXZhdGU+ID0geyB9KTsKKyAgICB2b2lkIHNldENvbG9yKGNvbnN0IFNSR0JBPGZs
b2F0PiYgY29sb3IsIE9wdGlvblNldDxGbGFnc0luY2x1ZGluZ1ByaXZhdGU+IGZsYWdzID0geyB9
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmX3Q8SXNDb2xvclR5cGVXaXRoQ29tcG9uZW50VHlwZTxDb2xvclR5cGUsIGZsb2F0Pj4qID0g
bnVsbHB0cj4KKyAgICB2b2lkIHNldENvbG9yKGNvbnN0IENvbG9yVHlwZSYgY29sb3IsIE9wdGlv
blNldDxGbGFnc0luY2x1ZGluZ1ByaXZhdGU+IGZsYWdzID0geyB9KTsKKyAgICB2b2lkIHNldENv
bG9yKFJlZjxPdXRPZkxpbmVDb21wb25lbnRzPiYmLCBDb2xvclNwYWNlLCBPcHRpb25TZXQ8Rmxh
Z3NJbmNsdWRpbmdQcml2YXRlPiA9IHsgfSk7CiAKICAgICBTUkdCQTx1aW50OF90PiBhc0lubGlu
ZSgpIGNvbnN0OwogICAgIFBhY2tlZENvbG9yOjpSR0JBIGFzUGFja2VkSW5saW5lKCkgY29uc3Q7
CkBAIC0zMjYsMTkgKzMzMSwyNCBAQCBpbmxpbmUgQ29sb3I6OkNvbG9yKE9wdGlvbmFsPFNSR0JB
PHVpbnQ4CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmX3Q8SXNDb2xvclR5cGVXaXRoQ29tcG9uZW50VHlwZTxDb2xvclR5cGUsIGZsb2F0Pj4qPgog
aW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBDb2xvclR5cGUmIGNvbG9yLCBPcHRpb25TZXQ8Rmxh
Z3M+IGZsYWdzKQogewotICAgIHNldE91dE9mTGluZUNvbXBvbmVudHMoT3V0T2ZMaW5lQ29tcG9u
ZW50czo6Y3JlYXRlKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSksIENvbG9yU3BhY2VGb3I8Q29s
b3JUeXBlPiwgdG9GbGFnc0luY2x1ZGluZ1ByaXZhdGUoZmxhZ3MpKTsKKyAgICBzZXRDb2xvcihj
b2xvciwgdG9GbGFnc0luY2x1ZGluZ1ByaXZhdGUoZmxhZ3MpKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlV2l0
aENvbXBvbmVudFR5cGU8Q29sb3JUeXBlLCBmbG9hdD4+Kj4KIGlubGluZSBDb2xvcjo6Q29sb3Io
Y29uc3QgT3B0aW9uYWw8Q29sb3JUeXBlPiYgY29sb3IsIE9wdGlvblNldDxGbGFncz4gZmxhZ3Mp
CiB7CiAgICAgaWYgKGNvbG9yKQotICAgICAgICBzZXRPdXRPZkxpbmVDb21wb25lbnRzKE91dE9m
TGluZUNvbXBvbmVudHM6OmNyZWF0ZShhc0NvbG9yQ29tcG9uZW50cygqY29sb3IpKSwgQ29sb3JT
cGFjZUZvcjxDb2xvclR5cGU+LCB0b0ZsYWdzSW5jbHVkaW5nUHJpdmF0ZShmbGFncykpOworICAg
ICAgICBzZXRDb2xvcigqY29sb3IsIHRvRmxhZ3NJbmNsdWRpbmdQcml2YXRlKGZsYWdzKSk7Cit9
CisKK2lubGluZSBDb2xvcjo6Q29sb3IoU1JHQkE8dWludDhfdD4gY29sb3IsIE9wdGlvblNldDxG
bGFnc0luY2x1ZGluZ1ByaXZhdGU+IGZsYWdzKQoreworICAgIHNldENvbG9yKGNvbG9yLCBmbGFn
cyk7CiB9CiAKLWlubGluZSBDb2xvcjo6Q29sb3IoUmVmPE91dE9mTGluZUNvbXBvbmVudHM+JiYg
b3V0T2ZMaW5lQ29tcG9uZW50cywgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBPcHRpb25TZXQ8Rmxh
Z3M+IGZsYWdzKQoraW5saW5lIENvbG9yOjpDb2xvcihSZWY8T3V0T2ZMaW5lQ29tcG9uZW50cz4m
JiBvdXRPZkxpbmVDb21wb25lbnRzLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIE9wdGlvblNldDxG
bGFnc0luY2x1ZGluZ1ByaXZhdGU+IGZsYWdzKQogewotICAgIHNldE91dE9mTGluZUNvbXBvbmVu
dHMoV1RGTW92ZShvdXRPZkxpbmVDb21wb25lbnRzKSwgY29sb3JTcGFjZSwgdG9GbGFnc0luY2x1
ZGluZ1ByaXZhdGUoZmxhZ3MpKTsKKyAgICBzZXRDb2xvcihXVEZNb3ZlKG91dE9mTGluZUNvbXBv
bmVudHMpLCBjb2xvclNwYWNlLCBmbGFncyk7CiB9CiAKIGlubGluZSBDb2xvcjo6Q29sb3IoV1RG
OjpIYXNoVGFibGVFbXB0eVZhbHVlVHlwZSkKQEAgLTUzNCw3ICs1NDQsMjUgQEAgaW5saW5lIHZv
aWQgQ29sb3I6OnNldENvbG9yKFNSR0JBPHVpbnQ4XwogICAgIEFTU0VSVChpc0lubGluZSgpKTsK
IH0KIAotaW5saW5lIHZvaWQgQ29sb3I6OnNldE91dE9mTGluZUNvbXBvbmVudHMoUmVmPE91dE9m
TGluZUNvbXBvbmVudHM+JiYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgT3B0aW9uU2V0
PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT4gZmxhZ3MpCitpbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29s
b3IoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJp
dmF0ZT4gZmxhZ3MpCit7CisgICAgLy8gU3RvcmUgYSBTUkdCQTxmbG9hdD4gYXMgU1JHQkE8dWlu
dDhfdD4gaWYgaXQgY2FuIGJlIGNvbnZlcnRlZCB0by9mcm9tIFNSR0JBPHVpbnQ4X3Q+IHdpdGhv
dXQgbG9zcyBvZiBwcmVjaXNpb24uCisgICAgLy8gRklYTUU6IENvbnNpZGVyIGFwcGx5aW5nIHRo
aXMgb3B0aW1pemF0aW9uIHRvIG1vcmUgY29sb3IgdHlwZXMgYnkgbW92aW5nIHRoZSBjb2xvciBz
cGFjZSBtZW1iZXIgb2YgRXh0ZW5kZWRDb2xvciBpbnRvCisgICAgLy8gdGhlIGZyZWUgYml0cyBp
biBtX2NvbG9yQW5kRmxhZ3MuCisgICAgaWYgKGF1dG8gY29tcHJlc3NlZENvbG9yID0gY29udmVy
dENvbG9yPFNSR0JBPHVpbnQ4X3Q+Pihjb2xvcik7IGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+
KGNvbXByZXNzZWRDb2xvcikgPT0gY29sb3IpIHsKKyAgICAgICAgc2V0Q29sb3IoY29tcHJlc3Nl
ZENvbG9yLCBmbGFncyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2V0Q29sb3IoT3V0
T2ZMaW5lQ29tcG9uZW50czo6Y3JlYXRlKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSksIENvbG9y
U3BhY2U6OlNSR0IsIGZsYWdzKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlV2l0aENvbXBvbmVudFR5cGU8Q29s
b3JUeXBlLCBmbG9hdD4+Kj4KK2lubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBDb2xv
clR5cGUmIGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3NJbmNsdWRpbmdQcml2YXRlPiBmbGFncykKK3sK
KyAgICBzZXRDb2xvcihPdXRPZkxpbmVDb21wb25lbnRzOjpjcmVhdGUoYXNDb2xvckNvbXBvbmVu
dHMoY29sb3IpKSwgQ29sb3JTcGFjZUZvcjxDb2xvclR5cGU+LCBmbGFncyk7Cit9CisKK2lubGlu
ZSB2b2lkIENvbG9yOjpzZXRDb2xvcihSZWY8T3V0T2ZMaW5lQ29tcG9uZW50cz4mJiBjb2xvciwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBPcHRpb25TZXQ8RmxhZ3NJbmNsdWRpbmdQcml2YXRlPiBm
bGFncykKIHsKICAgICBmbGFncy5hZGQoeyBGbGFnc0luY2x1ZGluZ1ByaXZhdGU6OlZhbGlkLCBG
bGFnc0luY2x1ZGluZ1ByaXZhdGU6Ok91dE9mTGluZSB9KTsKICAgICBtX2NvbG9yQW5kRmxhZ3Mg
PSBlbmNvZGVkT3V0T2ZMaW5lQ29tcG9uZW50cyhXVEZNb3ZlKGNvbG9yKSkgfCBlbmNvZGVkQ29s
b3JTcGFjZShjb2xvclNwYWNlKSB8IGVuY29kZWRGbGFncyhmbGFncyk7CkBAIC02MTQsMTQgKzY0
MiwxNCBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxDb2xvcj4gCiAgICAgICAg
IGZsb2F0IGFscGhhOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFscGhhKSkKICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiBDb2xvciB7IE91dE9m
TGluZUNvbXBvbmVudHM6OmNyZWF0ZSh7IGMxLCBjMiwgYzMsIGFscGhhIH0pLCBjb2xvclNwYWNl
LCBmbGFncyB9OworICAgICAgICByZXR1cm4gQ29sb3IgeyBPdXRPZkxpbmVDb21wb25lbnRzOjpj
cmVhdGUoeyBjMSwgYzIsIGMzLCBhbHBoYSB9KSwgY29sb3JTcGFjZSwgdG9GbGFnc0luY2x1ZGlu
Z1ByaXZhdGUoZmxhZ3MpIH07CiAgICAgfQogCiAgICAgdWludDMyX3QgdmFsdWU7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
LSAgICByZXR1cm4gQ29sb3IgeyBhc1NSR0JBKFBhY2tlZENvbG9yOjpSR0JBIHsgdmFsdWUgfSks
IGZsYWdzIH07CisgICAgcmV0dXJuIENvbG9yIHsgYXNTUkdCQShQYWNrZWRDb2xvcjo6UkdCQSB7
IHZhbHVlIH0pLCB0b0ZsYWdzSW5jbHVkaW5nUHJpdmF0ZShmbGFncykgfTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjczODY5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDMtMDIgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGZsb2F0IGJhc2VkIHNSR0IgY29sb3Jz
IHRoYXQgY2FuIGJlIHJvdW5kIHRyaXBwZWQgdG8gdWludDhfdCBiYXNlZCByZXByZXNlbnRhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9yVGVzdHMuY3BwOgorICAgICAgICBVcGRhdGUg
dGVzdHMgdG8gYWNjb3VudCBmb3IgbmV3IGJlaGF2aW9yIHdoZXJlIG9mIHN0b3JpbmcgU1JHQkE8
ZmxvYXQ+IGFzIFNSR0JBPHVpbnQ4X3Q+CisgICAgICAgIHdoaWNoIGNoYW5nZXMgd2hpY2ggY29s
b3JzIGFyZSBlcXVhbCBhbmQgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZS4gQWxzbyBhZGQgc29tZSB0
ZXN0cworICAgICAgICB0byBzaG93IHRoYXQgZGlmZmVyZW50IGZsYWdzIGVmZmVjdCBlcXVhbCBh
bmQgaGFzaC4KKwogMjAyMS0wMy0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjczODUxLgpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9yVGVzdHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcAkocmV2aXNpb24g
MjczODY5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9yVGVzdHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzksMTkgKzI3OSw0MCBAQCBURVNUKENvbG9yLCBFcXVh
bGl0eSkKICAgICAgICAgQ29sb3IgYzEgeyBEaXNwbGF5UDM8ZmxvYXQ+IHsgMS4wLCAwLjUsIDAu
MjUsIDEuMCB9IH07CiAgICAgICAgIENvbG9yIGMyIHsgRGlzcGxheVAzPGZsb2F0PiB7IDEuMCwg
MC41LCAwLjI1LCAxLjAgfSB9OwogICAgICAgICBFWFBFQ1RfRVEoYzEsIGMyKTsKKyAgICAgICAg
RVhQRUNUX0VRKGMyLCBjMSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBDb2xvciBjMSB7IERp
c3BsYXlQMzxmbG9hdD4geyAxLjAsIDAuNSwgMC4yNSwgMS4wIH0gfTsKICAgICAgICAgQ29sb3Ig
YzIgeyBTUkdCQTxmbG9hdD4geyAxLjAsIDAuNSwgMC4yNSwgMS4wIH0gfTsKICAgICAgICAgRVhQ
RUNUX05FKGMxLCBjMik7CisgICAgICAgIEVYUEVDVF9ORShjMiwgYzEpOwogICAgIH0KIAotICAg
IGF1dG8gY29tcG9uZW50Qnl0ZXMgPSBTUkdCQTx1aW50OF90PiB7IDI1NSwgMTI4LCA2MywgMTI3
IH07Ci0gICAgQ29sb3IgcmdiMSB7IGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbXBvbmVu
dEJ5dGVzKSB9OwotICAgIENvbG9yIHJnYjIgeyBjb21wb25lbnRCeXRlcyB9OwotICAgIEVYUEVD
VF9ORShyZ2IxLCByZ2IyKTsKLSAgICBFWFBFQ1RfTkUocmdiMiwgcmdiMSk7CisgICAgeworICAg
ICAgICAvLyBUaGVzZSB3aWxsIGJlIGVxdWFsLCBhcyBjb21wb25lbnRzIGFyZSBsb3NzbGVzc2x5
IGNvbnZlcnRhYmxlIGJldHdlZW4gU1JHQkE8dWludDhfdD4gYW5kIFNSR0JBPGZsb2F0Pi4KKyAg
ICAgICAgYXV0byBjb21wb25lbnRCeXRlcyA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAxMjgsIDYz
LCAxMjcgfTsKKyAgICAgICAgQ29sb3IgYzEgeyBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihj
b21wb25lbnRCeXRlcykgfTsKKyAgICAgICAgQ29sb3IgYzIgeyBjb21wb25lbnRCeXRlcyB9Owor
ICAgICAgICBFWFBFQ1RfRVEoYzEsIGMyKTsKKyAgICAgICAgRVhQRUNUX0VRKGMyLCBjMSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICAvLyBUaGVzZSB3aWxsIG5vdCBiZSBlcXVhbCwgYXMgY29t
cG9uZW50cyBhcmUgbm90IGxvc3NsZXNzbHkgY29udmVydGFibGUgYmV0d2VlbiBTUkdCQTx1aW50
OF90PiBhbmQgU1JHQkE8ZmxvYXQ+LgorICAgICAgICBhdXRvIGNvbXBvbmVudEZsb2F0cyA9IFNS
R0JBPGZsb2F0PiB7IDEuMGYsIDAuM2YsIDAuMmYsIDAuMWYgfTsKKyAgICAgICAgQ29sb3IgYzEg
eyBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KGNvbXBvbmVudEZsb2F0cykgfTsKKyAgICAg
ICAgQ29sb3IgYzIgeyBjb21wb25lbnRGbG9hdHMgfTsKKyAgICAgICAgRVhQRUNUX05FKGMxLCBj
Mik7CisgICAgICAgIEVYUEVDVF9ORShjMiwgYzEpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
Q29sb3IgYzEgeyBEaXNwbGF5UDM8ZmxvYXQ+IHsgMS4wLCAwLjUsIDAuMjUsIDEuMCB9LCB7IENv
bG9yOjpGbGFnczo6VXNlQ29sb3JGdW5jdGlvblNlcmlhbGl6YXRpb24gfSB9OworICAgICAgICBD
b2xvciBjMiB7IERpc3BsYXlQMzxmbG9hdD4geyAxLjAsIDAuNSwgMC4yNSwgMS4wIH0gfTsKKyAg
ICAgICAgRVhQRUNUX05FKGMxLCBjMik7CisgICAgICAgIEVYUEVDVF9ORShjMiwgYzEpOworICAg
IH0KIH0KIAogVEVTVChDb2xvciwgSGFzaCkKQEAgLTMwNywxMSArMzI4LDI4IEBAIFRFU1QoQ29s
b3IsIEhhc2gpCiAgICAgICAgIENvbG9yIGMyIHsgU1JHQkE8ZmxvYXQ+IHsgMS4wLCAwLjUsIDAu
MjUsIDEuMCB9IH07CiAgICAgICAgIEVYUEVDVF9ORShjMS5oYXNoKCksIGMyLmhhc2goKSk7CiAg
ICAgfQorICAgIAorICAgIHsKKyAgICAgICAgLy8gVGhlc2Ugd2lsbCBoYXNoIHRvIHRoZSBzYW1l
IHZhbHVlLCBhcyBjb21wb25lbnRzIGFyZSBsb3NzbGVzc2x5IGNvbnZlcnRhYmxlIGJldHdlZW4g
U1JHQkE8dWludDhfdD4gYW5kIFNSR0JBPGZsb2F0Pi4KKyAgICAgICAgYXV0byBjb21wb25lbnRC
eXRlcyA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAxMjgsIDYzLCAxMjcgfTsKKyAgICAgICAgQ29s
b3IgYzEgeyBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb21wb25lbnRCeXRlcykgfTsKKyAg
ICAgICAgQ29sb3IgYzIgeyBjb21wb25lbnRCeXRlcyB9OworICAgICAgICBFWFBFQ1RfRVEoYzEu
aGFzaCgpLCBjMi5oYXNoKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gVGhlc2Ugd2ls
bCBub3QgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSwgYXMgY29tcG9uZW50cyBhcmUgbm90IGxvc3Ns
ZXNzbHkgY29udmVydGFibGUgYmV0d2VlbiBTUkdCQTx1aW50OF90PiBhbmQgU1JHQkE8ZmxvYXQ+
LgorICAgICAgICBhdXRvIGNvbXBvbmVudEZsb2F0cyA9IFNSR0JBPGZsb2F0PiB7IDEuMGYsIDAu
M2YsIDAuMmYsIDAuMWYgfTsKKyAgICAgICAgQ29sb3IgYzEgeyBjb252ZXJ0Q29sb3I8U1JHQkE8
dWludDhfdD4+KGNvbXBvbmVudEZsb2F0cykgfTsKKyAgICAgICAgQ29sb3IgYzIgeyBjb21wb25l
bnRGbG9hdHMgfTsKKyAgICAgICAgRVhQRUNUX05FKGMxLmhhc2goKSwgYzIuaGFzaCgpKTsKKyAg
ICB9CiAKLSAgICBhdXRvIGNvbXBvbmVudEJ5dGVzID0gU1JHQkE8dWludDhfdD4geyAyNTUsIDEy
OCwgNjMsIDEyNyB9OwotICAgIENvbG9yIHJnYjEgeyBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+
Pihjb21wb25lbnRCeXRlcykgfTsKLSAgICBDb2xvciByZ2IyIHsgY29tcG9uZW50Qnl0ZXMgfTsK
LSAgICBFWFBFQ1RfTkUocmdiMS5oYXNoKCksIHJnYjIuaGFzaCgpKTsKKyAgICB7CisgICAgICAg
IENvbG9yIGMxIHsgRGlzcGxheVAzPGZsb2F0PiB7IDEuMCwgMC41LCAwLjI1LCAxLjAgfSwgeyBD
b2xvcjo6RmxhZ3M6OlVzZUNvbG9yRnVuY3Rpb25TZXJpYWxpemF0aW9uIH0gfTsKKyAgICAgICAg
Q29sb3IgYzIgeyBEaXNwbGF5UDM8ZmxvYXQ+IHsgMS4wLCAwLjUsIDAuMjUsIDEuMCB9IH07Cisg
ICAgICAgIEVYUEVDVF9ORShjMS5oYXNoKCksIGMyLmhhc2goKSk7CisgICAgfQogfQogCiBURVNU
KENvbG9yLCBNb3ZlQ29uc3RydWN0b3IpCkBAIC00MDQsNyArNDQyLDcgQEAgVEVTVChDb2xvciwg
Q29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkpCiAgICAgICAgIEVYUEVDVF9GTE9BVF9FUShyLCAw
Lik7CiAgICAgICAgIEVYUEVDVF9GTE9BVF9FUShnLCAwLik7CiAgICAgICAgIEVYUEVDVF9GTE9B
VF9FUShiLCAxLik7Ci0gICAgICAgIEVYUEVDVF9GTE9BVF9FUShhLCAwLjMpOworICAgICAgICBF
WFBFQ1RfRkxPQVRfRVEoYSwgMC4zMDE5NjA4KTsKICAgICB9CiAKICAgICB7CkBAIC00MTksNCAr
NDU3LDMzIEBAIFRFU1QoQ29sb3IsIENvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5KQogICAgIH0K
IH0KIAorVEVTVChDb2xvciwgU2VtYW50aWMpCit7CisgICAgeworICAgICAgICBDb2xvciBjb2xv
ciA9IENvbG9yOjp3aGl0ZTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGNvbG9yLmlzU2VtYW50aWMo
KSk7CisgICAgICAgIAorICAgICAgICBhdXRvIHNlbWFudGljQ29sb3IgPSBjb2xvci5zZW1hbnRp
Y0NvbG9yKCk7CisgICAgICAgIEVYUEVDVF9UUlVFKHNlbWFudGljQ29sb3IuaXNTZW1hbnRpYygp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbG9yIGNvbG9yIHsgRGlzcGxheVAzPGZsb2F0
PiB7IDEuMCwgMC41LCAwLjI1LCAxLjAgfSwgeyBDb2xvcjo6RmxhZ3M6OlVzZUNvbG9yRnVuY3Rp
b25TZXJpYWxpemF0aW9uIH0gfTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGNvbG9yLmlzU2VtYW50
aWMoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGNvbG9yLnVzZXNDb2xvckZ1bmN0aW9uU2VyaWFs
aXphdGlvbigpKTsKKworICAgICAgICBhdXRvIHNlbWFudGljQ29sb3IgPSBjb2xvci5zZW1hbnRp
Y0NvbG9yKCk7CisgICAgICAgIEVYUEVDVF9UUlVFKHNlbWFudGljQ29sb3IuaXNTZW1hbnRpYygp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc2VtYW50aWNDb2xvci51c2VzQ29sb3JGdW5jdGlvblNl
cmlhbGl6YXRpb24oKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb2xvciBjb2xvciB7IERp
c3BsYXlQMzxmbG9hdD4geyAxLjAsIDAuNSwgMC4yNSwgMS4wIH0sIHsgQ29sb3I6OkZsYWdzOjpT
ZW1hbnRpYyB9IH07CisgICAgICAgIEVYUEVDVF9UUlVFKGNvbG9yLmlzU2VtYW50aWMoKSk7CisK
KyAgICAgICAgYXV0byBzZW1hbnRpY0NvbG9yID0gY29sb3Iuc2VtYW50aWNDb2xvcigpOworICAg
ICAgICBFWFBFQ1RfVFJVRShzZW1hbnRpY0NvbG9yLmlzU2VtYW50aWMoKSk7CisgICAgfQorfQor
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422742</attachid>
            <date>2021-03-09 12:18:03 -0800</date>
            <delta_ts>2021-03-10 09:59:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222553-20210309121802.patch</filename>
            <type>text/plain</type>
            <size>20723</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NDE2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDIxLTAzLTA5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBmbG9hdCBiYXNlZCBz
UkdCIGNvbG9ycyB0aGF0IGNhbiBiZSByb3VuZCB0cmlwcGVkIHRvIHVpbnQ4X3QgYmFzZWQgcmVw
cmVzZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjI1NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTdG9yZSBTUkdCQTxmbG9hdD4gY29sb3IgdmFsdWVzIGFzIGlubGluZSBTUkdCQTx1aW50
OF90PiBpbiBDb2xvciBpZiB0aGUgY29tcG9uZW50cyBjYW4KKyAgICAgICAgYmUgcm91bmQgdHJp
cHBlZCB3aXRob3V0IGNoYW5naW5nLgorCisgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBDb2xvcihT
UkdCQTxmbG9hdD4oMSwgMSwgMSwgMSkpIGFuZCBDb2xvcihTUkdCQTx1aW50OF90PigyNTUsIDI1
NSwgMjU1LCAyNTUpKQorICAgICAgICAoYXMgZXhhbXBsZXMpIHdpbGwgbm93IGJlIHJldHVybiB0
aGUgc2FtZSB2YWx1ZXMgZm9yIGhhc2goKSBhbmQgb3BlcmF0b3I9PSgpLCB3aGVyZWFzIGluIHRo
ZQorICAgICAgICBwYXN0IHRoZXkgZGlkIG5vdC4KKworICAgICAgICBUaGlzIGlzIG5vdyBmZWFz
aWJsZSBhcyB0aGUgb25seSByZWFzb24gd2UgdXNlZCB0byBkaWZmZXJlbnRpYXRlIHdhcyB0byBz
aWduYWwgdG8gc2VyaWFsaXphdGlvbgorICAgICAgICB3aGljaCBmb3JtIHRvIHRha2UsIFNSR0JB
PGZsb2F0PiB1c2luZyBjb2xvciguLi4pIGFuZCBTUkdCQTx1aW50OF90PiB1c2luZyByZ2JhKC4u
LiksIGJ1dCBub3cKKyAgICAgICAgdXNlIHRoZSBVc2VDb2xvckZ1bmN0aW9uU2VyaWFsaXphdGlv
biBmbGFnIGluc3RlYWQuCisKKyAgICAgICAgQ29uY2VwdHVhbGx5LCB3ZSBjYW4gbm93IHRoaW5r
IG9mIENvbG9yIGNvbnNpZGVyaW5nIHRoZSBTUkdCQTxmbG9hdD4gZm9ybSB0aGUgY2Fub25pY2Fs
IGZvcm0sCisgICAgICAgIGFzIHRoYXQgaXMgdGhlIGZvcm0gYW55IGNvbXB1dGF0aW9uIG9uIHRo
ZSB1bmRlcmx5aW5nIHZhbHVlIGlzIGRvbmUuIGNvbG9yV2l0aEFscGhhIGFuZCAKKyAgICAgICAg
aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYSB3ZXJlIHVwZGF0ZWQgdG8gZmlyc3QgY29udmVydCB0byBT
UkdCQTxmbG9hdD4gaWYgbmVjZXNzYXJ5IGJlZm9yZQorICAgICAgICBkb2luZyBhbnkgY29udmVy
c2lvbnMuIFRoaXMgaGFzIHRoZSBzbGlnaHQgY2hhbmdlIGluIGJlaGF2aW9yIHRoYXQgYSBDb2xv
ciBob2xkaW5nIGEgCisgICAgICAgIFNSR0JBPHVpbnQ4X3Q+IG1pZ2h0IHJldHVybiBDb2xvciBo
b2xkaW5nIGEgU1JHQkE8ZmxvYXQ+IGZvciBvbmUgb2YgdGhlc2UgbXV0YXRpb24tY3JlYXRpb24K
KyAgICAgICAgZnVuY3Rpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbG9yOjppbnZlcnRlZENvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZW1hbnRpY0NvbG9yIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OnNldENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpDb2xvcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yV2l0
aE92ZXJyaWRkZW5BbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjppbnZlcnRlZENvbG9yV2l0aE92
ZXJyaWRkZW5BbHBoYSk6CisgICAgICAgIFJlbW92ZSB1bnVzZWQgb3ZlcmxvYWRzIG9mIGNvbG9y
V2l0aE92ZXJyaWRkZW5BbHBoYSBhbmQgaW52ZXJ0ZWRDb2xvcldpdGhPdmVycmlkZGVuQWxwaGEg
dGhhdCB0b29rCisgICAgICAgIGEgdWludDhfdCBhbHBoYS4KKwogMjAyMS0wMy0wOSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBm
aXggdGhlIEVOQUJMRShBUFBfSElHSExJR0hUUykgYnVpbGQgYWZ0ZXIgcjI3NDE1NQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gMjc0
MTU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzUsNyArMTM1LDcgQEAgZmxvYXQgQ29sb3I6OmNvbnRyYXN0UmF0aW8o
Y29uc3QgQ29sb3ImIAogCiBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNhbGxPblVuZGVybHlpbmdUeXBlKFsmXSAoY29uc3QgYXV0
byYgdW5kZXJseWluZ0NvbG9yKSAtPiBDb2xvciB7CisgICAgYXV0byBvdmVycmlkZUFscGhhID0g
WyZdKGNvbnN0IGF1dG8mIHVuZGVybHlpbmdDb2xvciwgZmxvYXQgYWxwaGEpIC0+IENvbG9yIHsK
ICAgICAgICAgYXV0byByZXN1bHQgPSBjb2xvcldpdGhPdmVycmlkZGVuQWxwaGEodW5kZXJseWlu
Z0NvbG9yLCBhbHBoYSk7CiAKICAgICAgICAgLy8gRklYTUU6IFdoeSBpcyBwcmVzZXJ2aW5nIHRo
ZSBzZW1hbnRpYyBiaXQgZGVzaXJlZCBhbmQvb3IgY29ycmVjdCBoZXJlPwpAQCAtMTQzLDEyICsx
NDMsMjEgQEAgQ29sb3IgQ29sb3I6OmNvbG9yV2l0aEFscGhhKGZsb2F0IGFscGhhKQogICAgICAg
ICAgICAgcmV0dXJuIHsgcmVzdWx0LCBGbGFnczo6U2VtYW50aWMgfTsKIAogICAgICAgICByZXR1
cm4geyByZXN1bHQgfTsKLSAgICB9KTsKKyAgICB9OworCisgICAgcmV0dXJuIGNhbGxPblVuZGVy
bHlpbmdUeXBlKFdURjo6bWFrZVZpc2l0b3IoCisgICAgICAgIFsmXSAoY29uc3QgU1JHQkE8dWlu
dDhfdD4mIHVuZGVybHlpbmdDb2xvcikgeworICAgICAgICAgICAgcmV0dXJuIG92ZXJyaWRlQWxw
aGEoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4odW5kZXJseWluZ0NvbG9yKSwgYWxwaGEpOwor
ICAgICAgICB9LAorICAgICAgICBbJl0oY29uc3QgYXV0byYgdW5kZXJseWluZ0NvbG9yKSB7Cisg
ICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGVBbHBoYSh1bmRlcmx5aW5nQ29sb3IsIGFscGhhKTsK
KyAgICAgICAgfQorICAgICkpOwogfQogCiBDb2xvciBDb2xvcjo6aW52ZXJ0ZWRDb2xvcldpdGhB
bHBoYShmbG9hdCBhbHBoYSkgY29uc3QKIHsKLSAgICByZXR1cm4gY2FsbE9uVW5kZXJseWluZ1R5
cGUoWyZdIChjb25zdCBhdXRvJiB1bmRlcmx5aW5nQ29sb3IpIC0+IENvbG9yIHsKKyAgICBhdXRv
IGludmVydEFuZE92ZXJyaWRlQWxwaGEgPSBbJl0oY29uc3QgYXV0byYgdW5kZXJseWluZ0NvbG9y
LCBmbG9hdCBhbHBoYSkgLT4gQ29sb3IgewogICAgICAgICB1c2luZyBDb2xvclR5cGUgPSBzdGQ6
OmRlY2F5X3Q8ZGVjbHR5cGUodW5kZXJseWluZ0NvbG9yKT47CiAKICAgICAgICAgLy8gRklYTUU6
IERldGVybWluZSBpZiB0aGVyZSBpcyBhIG1lYW5pbmdmdWwgdW5kZXJzdGFuZGluZyBvZiBpbnZl
cnNpb24gdGhhdCB3b3JrcwpAQCAtMTU4LDE3ICsxNjcsMjYgQEAgQ29sb3IgQ29sb3I6OmludmVy
dGVkQ29sb3JXaXRoQWxwaGEoZmxvYQogICAgICAgICAgICAgcmV0dXJuIGludmVydGVkQ29sb3JX
aXRoT3ZlcnJpZGRlbkFscGhhKHVuZGVybHlpbmdDb2xvciwgYWxwaGEpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICByZXR1cm4gaW52ZXJ0ZWRDb2xvcldpdGhPdmVycmlkZGVuQWxwaGEoY29u
dmVydENvbG9yPFNSR0JBPGZsb2F0Pj4odW5kZXJseWluZ0NvbG9yKSwgYWxwaGEpOwotICAgIH0p
OworICAgIH07CisKKyAgICByZXR1cm4gY2FsbE9uVW5kZXJseWluZ1R5cGUoV1RGOjptYWtlVmlz
aXRvcigKKyAgICAgICAgWyZdIChjb25zdCBTUkdCQTx1aW50OF90PiYgdW5kZXJseWluZ0NvbG9y
KSB7CisgICAgICAgICAgICByZXR1cm4gaW52ZXJ0QW5kT3ZlcnJpZGVBbHBoYShjb252ZXJ0Q29s
b3I8U1JHQkE8ZmxvYXQ+Pih1bmRlcmx5aW5nQ29sb3IpLCBhbHBoYSk7CisgICAgICAgIH0sCisg
ICAgICAgIFsmXShjb25zdCBhdXRvJiB1bmRlcmx5aW5nQ29sb3IpIHsKKyAgICAgICAgICAgIHJl
dHVybiBpbnZlcnRBbmRPdmVycmlkZUFscGhhKHVuZGVybHlpbmdDb2xvciwgYWxwaGEpOworICAg
ICAgICB9CisgICAgKSk7CiB9CiAKIENvbG9yIENvbG9yOjpzZW1hbnRpY0NvbG9yKCkgY29uc3QK
IHsKICAgICBpZiAoaXNTZW1hbnRpYygpKQogICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgCisK
ICAgICBpZiAoaXNPdXRPZkxpbmUoKSkKLSAgICAgICAgcmV0dXJuIHsgYXNPdXRPZkxpbmVSZWYo
KSwgY29sb3JTcGFjZSgpLCBGbGFnczo6U2VtYW50aWMgfTsKLSAgICByZXR1cm4geyBhc0lubGlu
ZSgpLCBGbGFnczo6U2VtYW50aWMgfTsKKyAgICAgICAgcmV0dXJuIHsgYXNPdXRPZkxpbmVSZWYo
KSwgY29sb3JTcGFjZSgpLCBmbGFncygpIHwgRmxhZ3NJbmNsdWRpbmdQcml2YXRlOjpTZW1hbnRp
YyB9OworICAgIHJldHVybiB7IGFzSW5saW5lKCksIGZsYWdzKCkgfCBGbGFnc0luY2x1ZGluZ1By
aXZhdGU6OlNlbWFudGljIH07CiB9CiAKIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQ+PiBDb2xvcjo6Y29sb3JTcGFjZUFuZENvbXBvbmVudHMoKSBjb25zdApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzQx
NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogCiAgICAgQ29sb3Igb3BhcXVlQ29s
b3IoKSBjb25zdCB7IHJldHVybiBjb2xvcldpdGhBbHBoYSgxLjBmKTsgfQogCi0gICAgQ29sb3Ig
c2VtYW50aWNDb2xvcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIHNlbWFudGlj
Q29sb3IoKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdGhlIHVuZGVybHlpbmcgY29sb3IgaWYg
aXRzIHR5cGUgaXMgU1JHQkE8dWludDhfdD4uCiAgICAgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+
IHRyeUdldEFzU1JHQkFCeXRlcygpIGNvbnN0OwpAQCAtMjAzLDcgKzIwMyw2IEBAIHByaXZhdGU6
CiAKICAgICAgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0PiBtX2NvbXBvbmVudHM7CiAgICAgfTsK
LSAgICBDb2xvcihSZWY8T3V0T2ZMaW5lQ29tcG9uZW50cz4mJiwgQ29sb3JTcGFjZSwgT3B0aW9u
U2V0PEZsYWdzPiA9IHsgfSk7CiAKICAgICBlbnVtIGNsYXNzIEZsYWdzSW5jbHVkaW5nUHJpdmF0
ZSA6IHVpbnQ4X3QgewogICAgICAgICBTZW1hbnRpYyAgICAgICAgICAgICAgICAgICAgICAgID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oRmxhZ3M6OlNlbWFudGljKSwKQEAgLTIxNSwxMiArMjE0LDE4
IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBzdGF0aWMgT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5n
UHJpdmF0ZT4gdG9GbGFnc0luY2x1ZGluZ1ByaXZhdGUoT3B0aW9uU2V0PEZsYWdzPiBmbGFncykg
eyByZXR1cm4gT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT46OmZyb21SYXcoZmxhZ3Mu
dG9SYXcoKSk7IH0KIAorICAgIENvbG9yKFNSR0JBPHVpbnQ4X3Q+LCBPcHRpb25TZXQ8RmxhZ3NJ
bmNsdWRpbmdQcml2YXRlPik7CisgICAgQ29sb3IoUmVmPE91dE9mTGluZUNvbXBvbmVudHM+JiYs
IENvbG9yU3BhY2UsIE9wdGlvblNldDxGbGFnc0luY2x1ZGluZ1ByaXZhdGU+KTsKKwogICAgIE9w
dGlvblNldDxGbGFnc0luY2x1ZGluZ1ByaXZhdGU+IGZsYWdzKCkgY29uc3Q7CiAgICAgYm9vbCBp
c091dE9mTGluZSgpIGNvbnN0OwogICAgIGJvb2wgaXNJbmxpbmUoKSBjb25zdDsKIAogICAgIHZv
aWQgc2V0Q29sb3IoU1JHQkE8dWludDhfdD4sIE9wdGlvblNldDxGbGFnc0luY2x1ZGluZ1ByaXZh
dGU+ID0geyB9KTsKLSAgICB2b2lkIHNldE91dE9mTGluZUNvbXBvbmVudHMoUmVmPE91dE9mTGlu
ZUNvbXBvbmVudHM+JiYsIENvbG9yU3BhY2UsIE9wdGlvblNldDxGbGFnc0luY2x1ZGluZ1ByaXZh
dGU+ID0geyB9KTsKKyAgICB2b2lkIHNldENvbG9yKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3Is
IE9wdGlvblNldDxGbGFnc0luY2x1ZGluZ1ByaXZhdGU+ID0geyB9KTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SXNDb2xvclR5cGVX
aXRoQ29tcG9uZW50VHlwZTxDb2xvclR5cGUsIGZsb2F0Pj4qID0gbnVsbHB0cj4KKyAgICB2b2lk
IHNldENvbG9yKGNvbnN0IENvbG9yVHlwZSYgY29sb3IsIE9wdGlvblNldDxGbGFnc0luY2x1ZGlu
Z1ByaXZhdGU+ID0geyB9KTsKKyAgICB2b2lkIHNldENvbG9yKFJlZjxPdXRPZkxpbmVDb21wb25l
bnRzPiYmLCBDb2xvclNwYWNlLCBPcHRpb25TZXQ8RmxhZ3NJbmNsdWRpbmdQcml2YXRlPiA9IHsg
fSk7CiAKICAgICBTUkdCQTx1aW50OF90PiBhc0lubGluZSgpIGNvbnN0OwogICAgIFBhY2tlZENv
bG9yOjpSR0JBIGFzUGFja2VkSW5saW5lKCkgY29uc3Q7CkBAIC0zMjYsMTkgKzMzMSwyNCBAQCBp
bmxpbmUgQ29sb3I6OkNvbG9yKE9wdGlvbmFsPFNSR0JBPHVpbnQ4CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SXNDb2xvclR5cGVXaXRoQ29t
cG9uZW50VHlwZTxDb2xvclR5cGUsIGZsb2F0Pj4qPgogaW5saW5lIENvbG9yOjpDb2xvcihjb25z
dCBDb2xvclR5cGUmIGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQogewotICAgIHNldE91
dE9mTGluZUNvbXBvbmVudHMoT3V0T2ZMaW5lQ29tcG9uZW50czo6Y3JlYXRlKGFzQ29sb3JDb21w
b25lbnRzKGNvbG9yKSksIENvbG9yU3BhY2VGb3I8Q29sb3JUeXBlPiwgdG9GbGFnc0luY2x1ZGlu
Z1ByaXZhdGUoZmxhZ3MpKTsKKyAgICBzZXRDb2xvcihjb2xvciwgdG9GbGFnc0luY2x1ZGluZ1By
aXZhdGUoZmxhZ3MpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlV2l0aENvbXBvbmVudFR5cGU8Q29sb3JUeXBl
LCBmbG9hdD4+Kj4KIGlubGluZSBDb2xvcjo6Q29sb3IoY29uc3QgT3B0aW9uYWw8Q29sb3JUeXBl
PiYgY29sb3IsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCiB7CiAgICAgaWYgKGNvbG9yKQotICAg
ICAgICBzZXRPdXRPZkxpbmVDb21wb25lbnRzKE91dE9mTGluZUNvbXBvbmVudHM6OmNyZWF0ZShh
c0NvbG9yQ29tcG9uZW50cygqY29sb3IpKSwgQ29sb3JTcGFjZUZvcjxDb2xvclR5cGU+LCB0b0Zs
YWdzSW5jbHVkaW5nUHJpdmF0ZShmbGFncykpOworICAgICAgICBzZXRDb2xvcigqY29sb3IsIHRv
RmxhZ3NJbmNsdWRpbmdQcml2YXRlKGZsYWdzKSk7Cit9CisKK2lubGluZSBDb2xvcjo6Q29sb3Io
U1JHQkE8dWludDhfdD4gY29sb3IsIE9wdGlvblNldDxGbGFnc0luY2x1ZGluZ1ByaXZhdGU+IGZs
YWdzKQoreworICAgIHNldENvbG9yKGNvbG9yLCBmbGFncyk7CiB9CiAKLWlubGluZSBDb2xvcjo6
Q29sb3IoUmVmPE91dE9mTGluZUNvbXBvbmVudHM+JiYgb3V0T2ZMaW5lQ29tcG9uZW50cywgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQoraW5saW5lIENvbG9y
OjpDb2xvcihSZWY8T3V0T2ZMaW5lQ29tcG9uZW50cz4mJiBvdXRPZkxpbmVDb21wb25lbnRzLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIE9wdGlvblNldDxGbGFnc0luY2x1ZGluZ1ByaXZhdGU+IGZs
YWdzKQogewotICAgIHNldE91dE9mTGluZUNvbXBvbmVudHMoV1RGTW92ZShvdXRPZkxpbmVDb21w
b25lbnRzKSwgY29sb3JTcGFjZSwgdG9GbGFnc0luY2x1ZGluZ1ByaXZhdGUoZmxhZ3MpKTsKKyAg
ICBzZXRDb2xvcihXVEZNb3ZlKG91dE9mTGluZUNvbXBvbmVudHMpLCBjb2xvclNwYWNlLCBmbGFn
cyk7CiB9CiAKIGlubGluZSBDb2xvcjo6Q29sb3IoV1RGOjpIYXNoVGFibGVFbXB0eVZhbHVlVHlw
ZSkKQEAgLTUzNCw3ICs1NDQsMjUgQEAgaW5saW5lIHZvaWQgQ29sb3I6OnNldENvbG9yKFNSR0JB
PHVpbnQ4XwogICAgIEFTU0VSVChpc0lubGluZSgpKTsKIH0KIAotaW5saW5lIHZvaWQgQ29sb3I6
OnNldE91dE9mTGluZUNvbXBvbmVudHMoUmVmPE91dE9mTGluZUNvbXBvbmVudHM+JiYgY29sb3Is
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT4g
ZmxhZ3MpCitpbmxpbmUgdm9pZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgU1JHQkE8ZmxvYXQ+JiBj
b2xvciwgT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT4gZmxhZ3MpCit7CisgICAgLy8g
U3RvcmUgYSBTUkdCQTxmbG9hdD4gYXMgU1JHQkE8dWludDhfdD4gaWYgaXQgY2FuIGJlIGNvbnZl
cnRlZCB0by9mcm9tIFNSR0JBPHVpbnQ4X3Q+IHdpdGhvdXQgbG9zcyBvZiBwcmVjaXNpb24uCisg
ICAgLy8gRklYTUU6IENvbnNpZGVyIGFwcGx5aW5nIHRoaXMgb3B0aW1pemF0aW9uIHRvIG1vcmUg
Y29sb3IgdHlwZXMgYnkgbW92aW5nIHRoZSBjb2xvciBzcGFjZSBtZW1iZXIgb2YgRXh0ZW5kZWRD
b2xvciBpbnRvCisgICAgLy8gdGhlIGZyZWUgYml0cyBpbiBtX2NvbG9yQW5kRmxhZ3MuCisgICAg
aWYgKGF1dG8gY29tcHJlc3NlZENvbG9yID0gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+Pihj
b2xvcik7IGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbXByZXNzZWRDb2xvcikgPT0gY29s
b3IpIHsKKyAgICAgICAgc2V0Q29sb3IoY29tcHJlc3NlZENvbG9yLCBmbGFncyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgc2V0Q29sb3IoT3V0T2ZMaW5lQ29tcG9uZW50czo6Y3JlYXRl
KGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSksIENvbG9yU3BhY2U6OlNSR0IsIGZsYWdzKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90
PElzQ29sb3JUeXBlV2l0aENvbXBvbmVudFR5cGU8Q29sb3JUeXBlLCBmbG9hdD4+Kj4KK2lubGlu
ZSB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBDb2xvclR5cGUmIGNvbG9yLCBPcHRpb25TZXQ8
RmxhZ3NJbmNsdWRpbmdQcml2YXRlPiBmbGFncykKK3sKKyAgICBzZXRDb2xvcihPdXRPZkxpbmVD
b21wb25lbnRzOjpjcmVhdGUoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSwgQ29sb3JTcGFjZUZv
cjxDb2xvclR5cGU+LCBmbGFncyk7Cit9CisKK2lubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihS
ZWY8T3V0T2ZMaW5lQ29tcG9uZW50cz4mJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBP
cHRpb25TZXQ8RmxhZ3NJbmNsdWRpbmdQcml2YXRlPiBmbGFncykKIHsKICAgICBmbGFncy5hZGQo
eyBGbGFnc0luY2x1ZGluZ1ByaXZhdGU6OlZhbGlkLCBGbGFnc0luY2x1ZGluZ1ByaXZhdGU6Ok91
dE9mTGluZSB9KTsKICAgICBtX2NvbG9yQW5kRmxhZ3MgPSBlbmNvZGVkT3V0T2ZMaW5lQ29tcG9u
ZW50cyhXVEZNb3ZlKGNvbG9yKSkgfCBlbmNvZGVkQ29sb3JTcGFjZShjb2xvclNwYWNlKSB8IGVu
Y29kZWRGbGFncyhmbGFncyk7CkBAIC02MTQsMTQgKzY0MiwxNCBAQCB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBPcHRpb25hbDxDb2xvcj4gCiAgICAgICAgIGZsb2F0IGFscGhhOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGFscGhhKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgICAgIHJldHVybiBDb2xvciB7IE91dE9mTGluZUNvbXBvbmVudHM6OmNyZWF0ZSh7
IGMxLCBjMiwgYzMsIGFscGhhIH0pLCBjb2xvclNwYWNlLCBmbGFncyB9OworICAgICAgICByZXR1
cm4gQ29sb3IgeyBPdXRPZkxpbmVDb21wb25lbnRzOjpjcmVhdGUoeyBjMSwgYzIsIGMzLCBhbHBo
YSB9KSwgY29sb3JTcGFjZSwgdG9GbGFnc0luY2x1ZGluZ1ByaXZhdGUoZmxhZ3MpIH07CiAgICAg
fQogCiAgICAgdWludDMyX3QgdmFsdWU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gQ29sb3IgeyBhc1NS
R0JBKFBhY2tlZENvbG9yOjpSR0JBIHsgdmFsdWUgfSksIGZsYWdzIH07CisgICAgcmV0dXJuIENv
bG9yIHsgYXNTUkdCQShQYWNrZWRDb2xvcjo6UkdCQSB7IHZhbHVlIH0pLCB0b0ZsYWdzSW5jbHVk
aW5nUHJpdmF0ZShmbGFncykgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5o
CShyZXZpc2lvbiAyNzQxNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMCArNDgsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnRGbG9hdEFscGhhCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENv
bG9yVHlwZSwgdHlwZW5hbWUgRnVuY3Rvcj4gQ29sb3JUeXBlIGNvbG9yQnlNb2RpZmluZ0VhY2hO
b25BbHBoYUNvbXBvbmVudChjb25zdCBDb2xvclR5cGUmLCBGdW5jdG9yJiYpOwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGUgY29sb3JXaXRoT3ZlcnJp
ZGRlbkFscGhhKGNvbnN0IENvbG9yVHlwZSYsIHVpbnQ4X3Qgb3ZlcnJpZGVBbHBoYSk7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IENvbG9yVHlwZSBjb2xvcldpdGhPdmVycmlkZGVuQWxw
aGEoY29uc3QgQ29sb3JUeXBlJiwgZmxvYXQgb3ZlcnJpZGVBbHBoYSk7Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZSBpbnZlcnRlZENvbG9yV2l0aE92
ZXJyaWRkZW5BbHBoYShjb25zdCBDb2xvclR5cGUmLCB1aW50OF90IG92ZXJyaWRlQWxwaGEpOwog
dGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBDb2xvclR5cGUgaW52ZXJ0ZWRDb2xvcldpdGhP
dmVycmlkZGVuQWxwaGEoY29uc3QgQ29sb3JUeXBlJiwgZmxvYXQgb3ZlcnJpZGVBbHBoYSk7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBDb2xvclR5cGU6Ok1vZGVsLCBSR0JNb2RlbDx0eXBlbmFt
ZSBDb2xvclR5cGU6OkNvbXBvbmVudFR5cGU+Pj4qID0gbnVsbHB0cj4gY29uc3RleHByIGJvb2wg
aXNCbGFjayhjb25zdCBDb2xvclR5cGUmKTsKQEAgLTEwMywzNiArMTAwLDE4IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgRnUKICAgICByZXR1cm4geyBjb3B5WzBdLCBj
b3B5WzFdLCBjb3B5WzJdLCBjb3B5WzNdIH07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbG9y
VHlwZT4gY29uc3RleHByIENvbG9yVHlwZSBjb2xvcldpdGhPdmVycmlkZGVuQWxwaGEoY29uc3Qg
Q29sb3JUeXBlJiBjb2xvciwgdWludDhfdCBvdmVycmlkZUFscGhhKQotewotICAgIGF1dG8gY29w
eSA9IGNvbG9yOwotICAgIGNvcHkuYWxwaGEgPSBjb252ZXJ0Qnl0ZUFscGhhVG88dHlwZW5hbWUg
Q29sb3JUeXBlOjpDb21wb25lbnRUeXBlPihvdmVycmlkZUFscGhhKTsKLSAgICByZXR1cm4gY29w
eTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBDb2xvclR5cGUgY29sb3JXaXRo
T3ZlcnJpZGRlbkFscGhhKGNvbnN0IENvbG9yVHlwZSYgY29sb3IsIGZsb2F0IG92ZXJyaWRlQWxw
aGEpCiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBDb2xvclR5
cGU6OkNvbXBvbmVudFR5cGUsIGZsb2F0Pik7CisKICAgICBhdXRvIGNvcHkgPSBjb2xvcjsKLSAg
ICBjb3B5LmFscGhhID0gY29udmVydEZsb2F0QWxwaGFUbzx0eXBlbmFtZSBDb2xvclR5cGU6OkNv
bXBvbmVudFR5cGU+KG92ZXJyaWRlQWxwaGEpOworICAgIGNvcHkuYWxwaGEgPSBvdmVycmlkZUFs
cGhhOwogICAgIHJldHVybiBjb3B5OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+
IGNvbnN0ZXhwciBDb2xvclR5cGUgaW52ZXJ0ZWRDb2xvcldpdGhPdmVycmlkZGVuQWxwaGEoY29u
c3QgQ29sb3JUeXBlJiBjb2xvciwgdWludDhfdCBvdmVycmlkZUFscGhhKQotewotICAgIHN0YXRp
Y19hc3NlcnQoQ29sb3JUeXBlOjpNb2RlbDo6aXNJbnZlcnRpYmxlKTsKLQotICAgIGF1dG8gY29t
cG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKTsKLSAgICBhdXRvIGNvcHkgPSBjb21w
b25lbnRzOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDM7ICsraSkKLSAgICAgICAg
Y29weVtpXSA9IENvbG9yVHlwZTo6TW9kZWw6OnJhbmdlc1tpXS5tYXggLSBjb21wb25lbnRzW2ld
OwotICAgIGNvcHlbM10gPSBjb252ZXJ0Qnl0ZUFscGhhVG88dHlwZW5hbWUgQ29sb3JUeXBlOjpD
b21wb25lbnRUeXBlPihvdmVycmlkZUFscGhhKTsKLQotICAgIHJldHVybiBtYWtlRnJvbUNvbXBv
bmVudHM8Q29sb3JUeXBlPihjb3B5KTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBl
PiBDb2xvclR5cGUgaW52ZXJ0ZWRDb2xvcldpdGhPdmVycmlkZGVuQWxwaGEoY29uc3QgQ29sb3JU
eXBlJiBjb2xvciwgZmxvYXQgb3ZlcnJpZGVBbHBoYSkKIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZV92PHR5cGVuYW1lIENvbG9yVHlwZTo6Q29tcG9uZW50VHlwZSwgZmxvYXQ+KTsK
ICAgICBzdGF0aWNfYXNzZXJ0KENvbG9yVHlwZTo6TW9kZWw6OmlzSW52ZXJ0aWJsZSk7CiAKICAg
ICBhdXRvIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvcik7CkBAIC0xNDAsNyAr
MTE5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBDb2xvclR5cGUgaQogCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDM7ICsraSkKICAgICAgICAgY29weVtpXSA9IENvbG9y
VHlwZTo6TW9kZWw6OnJhbmdlc1tpXS5tYXggLSBjb21wb25lbnRzW2ldOwotICAgIGNvcHlbM10g
PSBjb252ZXJ0RmxvYXRBbHBoYVRvPHR5cGVuYW1lIENvbG9yVHlwZTo6Q29tcG9uZW50VHlwZT4o
b3ZlcnJpZGVBbHBoYSk7CisgICAgY29weVszXSA9IG92ZXJyaWRlQWxwaGE7CiAKICAgICByZXR1
cm4gbWFrZUZyb21Db21wb25lbnRzPENvbG9yVHlwZT4oY29weSk7CiB9CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzQxNTUp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAy
MS0wMy0wOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1p
emUgZmxvYXQgYmFzZWQgc1JHQiBjb2xvcnMgdGhhdCBjYW4gYmUgcm91bmQgdHJpcHBlZCB0byB1
aW50OF90IGJhc2VkIHJlcHJlc2VudGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JU
ZXN0cy5jcHA6CisgICAgICAgIFVwZGF0ZSB0ZXN0cyB0byBhY2NvdW50IGZvciBuZXcgYmVoYXZp
b3Igd2hlcmUgb2Ygc3RvcmluZyBTUkdCQTxmbG9hdD4gYXMgU1JHQkE8dWludDhfdD4KKyAgICAg
ICAgd2hpY2ggY2hhbmdlcyB3aGljaCBjb2xvcnMgYXJlIGVxdWFsIGFuZCBoYXNoIHRvIHRoZSBz
YW1lIHZhbHVlLiBBbHNvIGFkZCBzb21lIHRlc3RzCisgICAgICAgIHRvIHNob3cgdGhhdCBkaWZm
ZXJlbnQgZmxhZ3MgZWZmZWN0IGVxdWFsIGFuZCBoYXNoLgorCiAyMDIxLTAzLTA5ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXVtX
ZWJSVENdIFZpZGVvRW5jb2RlciBzdGlsbCBkb2Vzbid0IGNvbXBseSB3aXRoIFdlYktpdCBzdHls
ZQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9yVGVzdHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRl
c3RzLmNwcAkocmV2aXNpb24gMjc0MTU1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbG9yVGVzdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzksMTkgKzI3OSw0MCBA
QCBURVNUKENvbG9yLCBFcXVhbGl0eSkKICAgICAgICAgQ29sb3IgYzEgeyBEaXNwbGF5UDM8Zmxv
YXQ+IHsgMS4wLCAwLjUsIDAuMjUsIDEuMCB9IH07CiAgICAgICAgIENvbG9yIGMyIHsgRGlzcGxh
eVAzPGZsb2F0PiB7IDEuMCwgMC41LCAwLjI1LCAxLjAgfSB9OwogICAgICAgICBFWFBFQ1RfRVEo
YzEsIGMyKTsKKyAgICAgICAgRVhQRUNUX0VRKGMyLCBjMSk7CiAgICAgfQogCiAgICAgewogICAg
ICAgICBDb2xvciBjMSB7IERpc3BsYXlQMzxmbG9hdD4geyAxLjAsIDAuNSwgMC4yNSwgMS4wIH0g
fTsKICAgICAgICAgQ29sb3IgYzIgeyBTUkdCQTxmbG9hdD4geyAxLjAsIDAuNSwgMC4yNSwgMS4w
IH0gfTsKICAgICAgICAgRVhQRUNUX05FKGMxLCBjMik7CisgICAgICAgIEVYUEVDVF9ORShjMiwg
YzEpOwogICAgIH0KIAotICAgIGF1dG8gY29tcG9uZW50Qnl0ZXMgPSBTUkdCQTx1aW50OF90PiB7
IDI1NSwgMTI4LCA2MywgMTI3IH07Ci0gICAgQ29sb3IgcmdiMSB7IGNvbnZlcnRDb2xvcjxTUkdC
QTxmbG9hdD4+KGNvbXBvbmVudEJ5dGVzKSB9OwotICAgIENvbG9yIHJnYjIgeyBjb21wb25lbnRC
eXRlcyB9OwotICAgIEVYUEVDVF9ORShyZ2IxLCByZ2IyKTsKLSAgICBFWFBFQ1RfTkUocmdiMiwg
cmdiMSk7CisgICAgeworICAgICAgICAvLyBUaGVzZSB3aWxsIGJlIGVxdWFsLCBhcyBjb21wb25l
bnRzIGFyZSBsb3NzbGVzc2x5IGNvbnZlcnRhYmxlIGJldHdlZW4gU1JHQkE8dWludDhfdD4gYW5k
IFNSR0JBPGZsb2F0Pi4KKyAgICAgICAgYXV0byBjb21wb25lbnRCeXRlcyA9IFNSR0JBPHVpbnQ4
X3Q+IHsgMjU1LCAxMjgsIDYzLCAxMjcgfTsKKyAgICAgICAgQ29sb3IgYzEgeyBjb252ZXJ0Q29s
b3I8U1JHQkE8ZmxvYXQ+Pihjb21wb25lbnRCeXRlcykgfTsKKyAgICAgICAgQ29sb3IgYzIgeyBj
b21wb25lbnRCeXRlcyB9OworICAgICAgICBFWFBFQ1RfRVEoYzEsIGMyKTsKKyAgICAgICAgRVhQ
RUNUX0VRKGMyLCBjMSk7CisgICAgfQorCisgICAgeworICAgICAgICAvLyBUaGVzZSB3aWxsIG5v
dCBiZSBlcXVhbCwgYXMgY29tcG9uZW50cyBhcmUgbm90IGxvc3NsZXNzbHkgY29udmVydGFibGUg
YmV0d2VlbiBTUkdCQTx1aW50OF90PiBhbmQgU1JHQkE8ZmxvYXQ+LgorICAgICAgICBhdXRvIGNv
bXBvbmVudEZsb2F0cyA9IFNSR0JBPGZsb2F0PiB7IDEuMGYsIDAuM2YsIDAuMmYsIDAuMWYgfTsK
KyAgICAgICAgQ29sb3IgYzEgeyBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KGNvbXBvbmVu
dEZsb2F0cykgfTsKKyAgICAgICAgQ29sb3IgYzIgeyBjb21wb25lbnRGbG9hdHMgfTsKKyAgICAg
ICAgRVhQRUNUX05FKGMxLCBjMik7CisgICAgICAgIEVYUEVDVF9ORShjMiwgYzEpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgQ29sb3IgYzEgeyBEaXNwbGF5UDM8ZmxvYXQ+IHsgMS4wLCAwLjUs
IDAuMjUsIDEuMCB9LCB7IENvbG9yOjpGbGFnczo6VXNlQ29sb3JGdW5jdGlvblNlcmlhbGl6YXRp
b24gfSB9OworICAgICAgICBDb2xvciBjMiB7IERpc3BsYXlQMzxmbG9hdD4geyAxLjAsIDAuNSwg
MC4yNSwgMS4wIH0gfTsKKyAgICAgICAgRVhQRUNUX05FKGMxLCBjMik7CisgICAgICAgIEVYUEVD
VF9ORShjMiwgYzEpOworICAgIH0KIH0KIAogVEVTVChDb2xvciwgSGFzaCkKQEAgLTMwNywxMSAr
MzI4LDI4IEBAIFRFU1QoQ29sb3IsIEhhc2gpCiAgICAgICAgIENvbG9yIGMyIHsgU1JHQkE8Zmxv
YXQ+IHsgMS4wLCAwLjUsIDAuMjUsIDEuMCB9IH07CiAgICAgICAgIEVYUEVDVF9ORShjMS5oYXNo
KCksIGMyLmhhc2goKSk7CiAgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgLy8gVGhlc2Ugd2ls
bCBoYXNoIHRvIHRoZSBzYW1lIHZhbHVlLCBhcyBjb21wb25lbnRzIGFyZSBsb3NzbGVzc2x5IGNv
bnZlcnRhYmxlIGJldHdlZW4gU1JHQkE8dWludDhfdD4gYW5kIFNSR0JBPGZsb2F0Pi4KKyAgICAg
ICAgYXV0byBjb21wb25lbnRCeXRlcyA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAxMjgsIDYzLCAx
MjcgfTsKKyAgICAgICAgQ29sb3IgYzEgeyBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb21w
b25lbnRCeXRlcykgfTsKKyAgICAgICAgQ29sb3IgYzIgeyBjb21wb25lbnRCeXRlcyB9OworICAg
ICAgICBFWFBFQ1RfRVEoYzEuaGFzaCgpLCBjMi5oYXNoKCkpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgLy8gVGhlc2Ugd2lsbCBub3QgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSwgYXMgY29tcG9u
ZW50cyBhcmUgbm90IGxvc3NsZXNzbHkgY29udmVydGFibGUgYmV0d2VlbiBTUkdCQTx1aW50OF90
PiBhbmQgU1JHQkE8ZmxvYXQ+LgorICAgICAgICBhdXRvIGNvbXBvbmVudEZsb2F0cyA9IFNSR0JB
PGZsb2F0PiB7IDEuMGYsIDAuM2YsIDAuMmYsIDAuMWYgfTsKKyAgICAgICAgQ29sb3IgYzEgeyBj
b252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KGNvbXBvbmVudEZsb2F0cykgfTsKKyAgICAgICAg
Q29sb3IgYzIgeyBjb21wb25lbnRGbG9hdHMgfTsKKyAgICAgICAgRVhQRUNUX05FKGMxLmhhc2go
KSwgYzIuaGFzaCgpKTsKKyAgICB9CiAKLSAgICBhdXRvIGNvbXBvbmVudEJ5dGVzID0gU1JHQkE8
dWludDhfdD4geyAyNTUsIDEyOCwgNjMsIDEyNyB9OwotICAgIENvbG9yIHJnYjEgeyBjb252ZXJ0
Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb21wb25lbnRCeXRlcykgfTsKLSAgICBDb2xvciByZ2IyIHsg
Y29tcG9uZW50Qnl0ZXMgfTsKLSAgICBFWFBFQ1RfTkUocmdiMS5oYXNoKCksIHJnYjIuaGFzaCgp
KTsKKyAgICB7CisgICAgICAgIENvbG9yIGMxIHsgRGlzcGxheVAzPGZsb2F0PiB7IDEuMCwgMC41
LCAwLjI1LCAxLjAgfSwgeyBDb2xvcjo6RmxhZ3M6OlVzZUNvbG9yRnVuY3Rpb25TZXJpYWxpemF0
aW9uIH0gfTsKKyAgICAgICAgQ29sb3IgYzIgeyBEaXNwbGF5UDM8ZmxvYXQ+IHsgMS4wLCAwLjUs
IDAuMjUsIDEuMCB9IH07CisgICAgICAgIEVYUEVDVF9ORShjMS5oYXNoKCksIGMyLmhhc2goKSk7
CisgICAgfQogfQogCiBURVNUKENvbG9yLCBNb3ZlQ29uc3RydWN0b3IpCkBAIC0zODksMzMgKzQy
Nyw2NiBAQCBURVNUKENvbG9yLCBMaW5lYXJTUkdCQ29udmVyc2lvblRvU1JHQikKIAogVEVTVChD
b2xvciwgQ29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkpCiB7Ci0gICAgQ29sb3IgY29sb3IgeyBT
UkdCQTxmbG9hdD4geyAwLiwgMC4sIDEuLCAwLjYgfSB9OworICAgIENvbG9yIGNvbG9yIHsgU1JH
QkE8ZmxvYXQ+IHsgMC4wZiwgMC4wZiwgMS4wZiwgMC42ZiB9IH07CisgICAgRVhQRUNUX1RSVUUo
Y29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkgIT0gV1RGOjpudWxsb3B0KTsKIAogICAgIHsKLSAg
ICAgICAgQ29sb3IgY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkgPSBjb2xvci5jb2xvcldpdGhB
bHBoYU11bHRpcGxpZWRCeSgxLik7CisgICAgICAgIENvbG9yIGNvbG9yV2l0aEFscGhhTXVsdGlw
bGllZEJ5ID0gY29sb3IuY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoMS4wZik7CisgICAgICAg
IEVYUEVDVF9UUlVFKGNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5LnRyeUdldEFzU1JHQkFCeXRl
cygpICE9IFdURjo6bnVsbG9wdCk7CiAgICAgICAgIEVYUEVDVF9FUShjb2xvciwgY29sb3JXaXRo
QWxwaGFNdWx0aXBsaWVkQnkpOwogICAgIH0KIAogICAgIHsKICAgICAgICAgQ29sb3IgY29sb3JX
aXRoQWxwaGFNdWx0aXBsaWVkQnkgPSBjb2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeSgw
LjUpOworICAgICAgICBFWFBFQ1RfVFJVRShjb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeS50cnlH
ZXRBc1NSR0JBQnl0ZXMoKSA9PSBXVEY6Om51bGxvcHQpOwogICAgICAgICBhdXRvIFtjb2xvclNw
YWNlLCBjb21wb25lbnRzXSA9IGNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5LmNvbG9yU3BhY2VB
bmRDb21wb25lbnRzKCk7CiAgICAgICAgIEVYUEVDVF9FUShjb2xvclNwYWNlLCBDb2xvclNwYWNl
OjpTUkdCKTsKICAgICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwotICAgICAg
ICBFWFBFQ1RfRkxPQVRfRVEociwgMC4pOwotICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZywgMC4p
OwotICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoYiwgMS4pOwotICAgICAgICBFWFBFQ1RfRkxPQVRf
RVEoYSwgMC4zKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKHIsIDAuMGYpOworICAgICAgICBF
WFBFQ1RfRkxPQVRfRVEoZywgMC4wZik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShiLCAxLjBm
KTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGEsIDAuM2YpOwogICAgIH0KIAogICAgIHsKLSAg
ICAgICAgQ29sb3IgY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkgPSBjb2xvci5jb2xvcldpdGhB
bHBoYU11bHRpcGxpZWRCeSgwLik7CisgICAgICAgIENvbG9yIGNvbG9yV2l0aEFscGhhTXVsdGlw
bGllZEJ5ID0gY29sb3IuY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoMC4wZik7CisgICAgICAg
IEVYUEVDVF9UUlVFKGNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5LnRyeUdldEFzU1JHQkFCeXRl
cygpICE9IFdURjo6bnVsbG9wdCk7CiAgICAgICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVu
dHNdID0gY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkuY29sb3JTcGFjZUFuZENvbXBvbmVudHMo
KTsKICAgICAgICAgRVhQRUNUX0VRKGNvbG9yU3BhY2UsIENvbG9yU3BhY2U6OlNSR0IpOwogICAg
ICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7Ci0gICAgICAgIEVYUEVDVF9GTE9B
VF9FUShyLCAwLik7Ci0gICAgICAgIEVYUEVDVF9GTE9BVF9FUShnLCAwLik7Ci0gICAgICAgIEVY
UEVDVF9GTE9BVF9FUShiLCAxLik7Ci0gICAgICAgIEVYUEVDVF9GTE9BVF9FUShhLCAwLik7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShyLCAwLjBmKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VR
KGcsIDAuMGYpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoYiwgMS4wZik7CisgICAgICAgIEVY
UEVDVF9GTE9BVF9FUShhLCAwLjBmKTsKKyAgICB9Cit9CisKK1RFU1QoQ29sb3IsIFNlbWFudGlj
KQoreworICAgIHsKKyAgICAgICAgQ29sb3IgY29sb3IgPSBDb2xvcjo6d2hpdGU7CisgICAgICAg
IEVYUEVDVF9GQUxTRShjb2xvci5pc1NlbWFudGljKCkpOworICAgICAgICAKKyAgICAgICAgYXV0
byBzZW1hbnRpY0NvbG9yID0gY29sb3Iuc2VtYW50aWNDb2xvcigpOworICAgICAgICBFWFBFQ1Rf
VFJVRShzZW1hbnRpY0NvbG9yLmlzU2VtYW50aWMoKSk7CisgICAgfQorCisgICAgeworICAgICAg
ICBDb2xvciBjb2xvciB7IERpc3BsYXlQMzxmbG9hdD4geyAxLjAsIDAuNSwgMC4yNSwgMS4wIH0s
IHsgQ29sb3I6OkZsYWdzOjpVc2VDb2xvckZ1bmN0aW9uU2VyaWFsaXphdGlvbiB9IH07CisgICAg
ICAgIEVYUEVDVF9GQUxTRShjb2xvci5pc1NlbWFudGljKCkpOworICAgICAgICBFWFBFQ1RfVFJV
RShjb2xvci51c2VzQ29sb3JGdW5jdGlvblNlcmlhbGl6YXRpb24oKSk7CisKKyAgICAgICAgYXV0
byBzZW1hbnRpY0NvbG9yID0gY29sb3Iuc2VtYW50aWNDb2xvcigpOworICAgICAgICBFWFBFQ1Rf
VFJVRShzZW1hbnRpY0NvbG9yLmlzU2VtYW50aWMoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHNl
bWFudGljQ29sb3IudXNlc0NvbG9yRnVuY3Rpb25TZXJpYWxpemF0aW9uKCkpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgQ29sb3IgY29sb3IgeyBEaXNwbGF5UDM8ZmxvYXQ+IHsgMS4wLCAwLjUs
IDAuMjUsIDEuMCB9LCB7IENvbG9yOjpGbGFnczo6U2VtYW50aWMgfSB9OworICAgICAgICBFWFBF
Q1RfVFJVRShjb2xvci5pc1NlbWFudGljKCkpOworCisgICAgICAgIGF1dG8gc2VtYW50aWNDb2xv
ciA9IGNvbG9yLnNlbWFudGljQ29sb3IoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc2VtYW50aWND
b2xvci5pc1NlbWFudGljKCkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422841</attachid>
            <date>2021-03-10 09:59:21 -0800</date>
            <delta_ts>2021-03-10 16:38:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222553-20210310095920.patch</filename>
            <type>text/plain</type>
            <size>50361</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NDIxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIxLTAzLTA5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBmbG9hdCBiYXNlZCBz
UkdCIGNvbG9ycyB0aGF0IGNhbiBiZSByb3VuZCB0cmlwcGVkIHRvIHVpbnQ4X3QgYmFzZWQgcmVw
cmVzZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjI1NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTdG9yZSBTUkdCQTxmbG9hdD4gY29sb3IgdmFsdWVzIGFzIGlubGluZSBTUkdCQTx1aW50
OF90PiBpbiBDb2xvciBpZiB0aGUgY29tcG9uZW50cyBjYW4KKyAgICAgICAgYmUgcm91bmQgdHJp
cHBlZCB3aXRob3V0IGNoYW5naW5nLgorCisgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBDb2xvcihT
UkdCQTxmbG9hdD4oMSwgMSwgMSwgMSkpIGFuZCBDb2xvcihTUkdCQTx1aW50OF90PigyNTUsIDI1
NSwgMjU1LCAyNTUpKQorICAgICAgICAoYXMgZXhhbXBsZXMpIHdpbGwgbm93IGJlIHJldHVybiB0
aGUgc2FtZSB2YWx1ZXMgZm9yIGhhc2goKSBhbmQgb3BlcmF0b3I9PSgpLCB3aGVyZWFzIGluIHRo
ZQorICAgICAgICBwYXN0IHRoZXkgZGlkIG5vdC4KKworICAgICAgICBUaGlzIGlzIG5vdyBmZWFz
aWJsZSBhcyB0aGUgb25seSByZWFzb24gd2UgdXNlZCB0byBkaWZmZXJlbnRpYXRlIHdhcyB0byBz
aWduYWwgdG8gc2VyaWFsaXphdGlvbgorICAgICAgICB3aGljaCBmb3JtIHRvIHRha2UsIFNSR0JB
PGZsb2F0PiB1c2luZyBjb2xvciguLi4pIGFuZCBTUkdCQTx1aW50OF90PiB1c2luZyByZ2JhKC4u
LiksIGJ1dCBub3cKKyAgICAgICAgdXNlIHRoZSBVc2VDb2xvckZ1bmN0aW9uU2VyaWFsaXphdGlv
biBmbGFnIGluc3RlYWQuCisKKyAgICAgICAgQ29uY2VwdHVhbGx5LCB3ZSBjYW4gbm93IHRoaW5r
IG9mIENvbG9yIGNvbnNpZGVyaW5nIHRoZSBTUkdCQTxmbG9hdD4gZm9ybSB0aGUgY2Fub25pY2Fs
IGZvcm0sCisgICAgICAgIGFzIHRoYXQgaXMgdGhlIGZvcm0gYW55IGNvbXB1dGF0aW9uIG9uIHRo
ZSB1bmRlcmx5aW5nIHZhbHVlIGlzIGRvbmUuIGNvbG9yV2l0aEFscGhhIGFuZCAKKyAgICAgICAg
aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYSB3ZXJlIHVwZGF0ZWQgdG8gZmlyc3QgY29udmVydCB0byBT
UkdCQTxmbG9hdD4gaWYgbmVjZXNzYXJ5IGJlZm9yZQorICAgICAgICBkb2luZyBhbnkgY29udmVy
c2lvbnMuIFRoaXMgaGFzIHRoZSBzbGlnaHQgY2hhbmdlIGluIGJlaGF2aW9yIHRoYXQgYSBDb2xv
ciBob2xkaW5nIGEgCisgICAgICAgIFNSR0JBPHVpbnQ4X3Q+IG1pZ2h0IHJldHVybiBDb2xvciBo
b2xkaW5nIGEgU1JHQkE8ZmxvYXQ+IGZvciBvbmUgb2YgdGhlc2UgbXV0YXRpb24tY3JlYXRpb24K
KyAgICAgICAgZnVuY3Rpb25zLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpzZXRTaGFkb3cpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5n
V2l0aE92ZXJyaWRlQWxwaGEpOgorICAgICAgICBTcGVjaWFsIGNhc2UgdGhlIGNhbnZhcyBBUElz
IHRoYXQgYWxsb3cgc3BlY2lmeWluZyBhIGNvbG9yIHN0cmluZworICAgICAgICBhbmQgYWxwaGEg
b3ZlcnJpZGUgdG8gbWFpbnRhaW4gdGhlIDgtYml0IHBlciBjaGFubmVsIHJlcHJlc2VudGF0aW9u
CisgICAgICAgIGlmIHBhcnNlZCBhcyBhIGxlZ2FjeSBzUkdCIGNvbG9yIChhcyBpbmRpY2F0ZWQg
YnkgdXNlc0NvbG9yRnVuY3Rpb25TZXJpYWxpemF0aW9uKQorICAgICAgICBub3QgYmVpbmcgc2V0
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3I6OmNvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bG9yOjppbnZlcnRlZENvbG9yV2l0aEFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bG9yOjpzZW1hbnRpY0NvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OnNldENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbG9yOjpDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oOgorICAgICAgICAo
V2ViQ29yZTo6Y29sb3JXaXRoT3ZlcnJpZGRlbkFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6Omlu
dmVydGVkQ29sb3JXaXRoT3ZlcnJpZGRlbkFscGhhKToKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBv
dmVybG9hZHMgb2YgY29sb3JXaXRoT3ZlcnJpZGRlbkFscGhhIGFuZCBpbnZlcnRlZENvbG9yV2l0
aE92ZXJyaWRkZW5BbHBoYSB0aGF0IHRvb2sKKyAgICAgICAgYSB1aW50OF90IGFscGhhLgorCiAy
MDIxLTAzLTEwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgTXVs
dGktY29sdW1uIHN0YXRlIHByb3BhZ2F0aW9uIHNob3VsZCBmb2xsb3cgY29udGFpbmluZyBibG9j
ayBydWxlcwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHJldmlzaW9uIDI3NDE1NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAxLDEzICsxMzAxLDMyIEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0U2gKICAgICBpZiAoYWxwaGEgJiYgc3RkOjppc25hbigq
YWxwaGEpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb2xvciBjb2xvciA9IENvbG9yOjp0cmFu
c3BhcmVudEJsYWNrOwotICAgIGlmICghY29sb3JTdHJpbmcuaXNOdWxsKCkpIHsKLSAgICAgICAg
Y29sb3IgPSBwYXJzZUNvbG9yT3JDdXJyZW50Q29sb3IoY29sb3JTdHJpbmcsIGNhbnZhc0Jhc2Uo
KSk7CisgICAgYXV0byBjb2xvciA9IFsmXSgpIC0+IENvbG9yIHsKKyAgICAgICAgaWYgKGNvbG9y
U3RyaW5nLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBpZiAoYWxwaGEpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrLmNvbG9yV2l0aEFscGhhQnl0ZShjb252
ZXJ0RmxvYXRBbHBoYVRvPHVpbnQ4X3Q+KCphbHBoYSkpOworICAgICAgICAgICAgcmV0dXJuIENv
bG9yOjp0cmFuc3BhcmVudEJsYWNrOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBjb2xvciA9
IHBhcnNlQ29sb3JPckN1cnJlbnRDb2xvcihjb2xvclN0cmluZywgY2FudmFzQmFzZSgpKTsKICAg
ICAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIGNvbG9yLmNvbG9y
V2l0aEFscGhhKGFscGhhKSk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAKKyAg
ICAgICAgaWYgKGFscGhhKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgY29sb3Igd2FzIHBhcnNl
ZCBhcyBhIGxlZ2FjeSBzUkdCIGNvbG9yIHR5cGUsIG1haW50YWluCisgICAgICAgICAgICAvLyA4
LWJpdCBwZXItY2hhbm5lbCByZXByZXNlbnRhdGlvbiB0aHJvdWdoIGFscGhhIG92ZXJyaWRlLgor
ICAgICAgICAgICAgYXV0byBhc1NSR0JBQnl0ZXMgPSBjb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMo
KTsKKyAgICAgICAgICAgIGlmIChhc1NSR0JBQnl0ZXMgJiYgIWNvbG9yLnVzZXNDb2xvckZ1bmN0
aW9uU2VyaWFsaXphdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBDb2xvciB7IGFzU1JH
QkFCeXRlcy0+Y29sb3JXaXRoQWxwaGFCeXRlKGNvbnZlcnRGbG9hdEFscGhhVG88dWludDhfdD4o
KmFscGhhKSkgfTsKKyAgICAgICAgICAgIHJldHVybiBjb2xvci5jb2xvcldpdGhBbHBoYSgqYWxw
aGEpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbG9yOworICAgIH0oKTsKKyAgICBp
ZiAoIWNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0U2hhZG93KEZs
b2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1ciwgY29sb3IpOwogfQogCiB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAkocmV2aXNpb24gMjc0MTU1KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzEsMTAgKzEzMSwxNiBAQCBDYW52YXNTdHlsZSBDYW52YXNTdHlsZTo6Y3JlYXRl
RnJvbVN0cmluCiAgICAgaWYgKGlzQ3VycmVudENvbG9yU3RyaW5nKGNvbG9yU3RyaW5nKSkKICAg
ICAgICAgcmV0dXJuIEN1cnJlbnRDb2xvciB7IGFscGhhIH07CiAKLSAgICBDb2xvciBjb2xvciA9
IHBhcnNlQ29sb3IoY29sb3JTdHJpbmcsIGNhbnZhc0Jhc2UpOworICAgIGF1dG8gY29sb3IgPSBw
YXJzZUNvbG9yKGNvbG9yU3RyaW5nLCBjYW52YXNCYXNlKTsKICAgICBpZiAoIWNvbG9yLmlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAorICAgIC8vIElmIHRoZSBjb2xvciB3YXMgcGFy
c2VkIGFzIGEgbGVnYWN5IHNSR0IgY29sb3IgdHlwZSwgbWFpbnRhaW4KKyAgICAvLyA4LWJpdCBw
ZXItY2hhbm5lbCByZXByZXNlbnRhdGlvbiB0aHJvdWdoIGFscGhhIG92ZXJyaWRlLgorICAgIGF1
dG8gYXNTUkdCQUJ5dGVzID0gY29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCk7CisgICAgaWYgKGFz
U1JHQkFCeXRlcyAmJiAhY29sb3IudXNlc0NvbG9yRnVuY3Rpb25TZXJpYWxpemF0aW9uKCkpCisg
ICAgICAgIHJldHVybiBDb2xvciB7IGFzU1JHQkFCeXRlcy0+Y29sb3JXaXRoQWxwaGFCeXRlKGNv
bnZlcnRGbG9hdEFscGhhVG88dWludDhfdD4oYWxwaGEpKSB9OworCiAgICAgcmV0dXJuIGNvbG9y
LmNvbG9yV2l0aEFscGhhKGFscGhhKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gMjc0MTU1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNDAg
KzEzNSw1MiBAQCBmbG9hdCBDb2xvcjo6Y29udHJhc3RSYXRpbyhjb25zdCBDb2xvciYgCiAKIENv
bG9yIENvbG9yOjpjb2xvcldpdGhBbHBoYShmbG9hdCBhbHBoYSkgY29uc3QKIHsKLSAgICByZXR1
cm4gY2FsbE9uVW5kZXJseWluZ1R5cGUoWyZdIChjb25zdCBhdXRvJiB1bmRlcmx5aW5nQ29sb3Ip
IC0+IENvbG9yIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBjb2xvcldpdGhPdmVycmlkZGVuQWxw
aGEodW5kZXJseWluZ0NvbG9yLCBhbHBoYSk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFdoeSBpcyBw
cmVzZXJ2aW5nIHRoZSBzZW1hbnRpYyBiaXQgZGVzaXJlZCBhbmQvb3IgY29ycmVjdCBoZXJlPwot
ICAgICAgICBpZiAoaXNTZW1hbnRpYygpKQotICAgICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LCBG
bGFnczo6U2VtYW50aWMgfTsKLQotICAgICAgICByZXR1cm4geyByZXN1bHQgfTsKLSAgICB9KTsK
KyAgICBhdXRvIG92ZXJyaWRlQWxwaGEgPSBbJl0oY29uc3QgYXV0byYgdW5kZXJseWluZ0NvbG9y
LCBmbG9hdCBhbHBoYSkgeworICAgICAgICByZXR1cm4gQ29sb3IgeyBjb2xvcldpdGhPdmVycmlk
ZGVuQWxwaGEodW5kZXJseWluZ0NvbG9yLCBhbHBoYSksIGZsYWdzKCkgfTsKKyAgICB9OworCisg
ICAgcmV0dXJuIGNhbGxPblVuZGVybHlpbmdUeXBlKFdURjo6bWFrZVZpc2l0b3IoCisgICAgICAg
IFsmXSAoY29uc3QgU1JHQkE8dWludDhfdD4mIHVuZGVybHlpbmdDb2xvcikgeworICAgICAgICAg
ICAgcmV0dXJuIG92ZXJyaWRlQWxwaGEoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4odW5kZXJs
eWluZ0NvbG9yKSwgYWxwaGEpOworICAgICAgICB9LAorICAgICAgICBbJl0oY29uc3QgYXV0byYg
dW5kZXJseWluZ0NvbG9yKSB7CisgICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGVBbHBoYSh1bmRl
cmx5aW5nQ29sb3IsIGFscGhhKTsKKyAgICAgICAgfQorICAgICkpOwogfQogCiBDb2xvciBDb2xv
cjo6aW52ZXJ0ZWRDb2xvcldpdGhBbHBoYShmbG9hdCBhbHBoYSkgY29uc3QKIHsKLSAgICByZXR1
cm4gY2FsbE9uVW5kZXJseWluZ1R5cGUoWyZdIChjb25zdCBhdXRvJiB1bmRlcmx5aW5nQ29sb3Ip
IC0+IENvbG9yIHsKKyAgICBhdXRvIGludmVydEFuZE92ZXJyaWRlQWxwaGEgPSBbJl0oY29uc3Qg
YXV0byYgdW5kZXJseWluZ0NvbG9yLCBmbG9hdCBhbHBoYSkgewogICAgICAgICB1c2luZyBDb2xv
clR5cGUgPSBzdGQ6OmRlY2F5X3Q8ZGVjbHR5cGUodW5kZXJseWluZ0NvbG9yKT47CiAKICAgICAg
ICAgLy8gRklYTUU6IERldGVybWluZSBpZiB0aGVyZSBpcyBhIG1lYW5pbmdmdWwgdW5kZXJzdGFu
ZGluZyBvZiBpbnZlcnNpb24gdGhhdCB3b3JrcwogICAgICAgICAvLyBiZXR0ZXIgZm9yIG5vbi1p
bnZlcnRpYmxlIGNvbG9yIHR5cGVzIGxpa2UgTGFiIG9yIGNvbnNpZGVyIHJlbW92aW5nIHRoaXMg
aW4gZmF2b3IKICAgICAgICAgLy8gb2YgYWx0ZXJuYXRpdmVzLgogICAgICAgICBpZiBjb25zdGV4
cHIgKENvbG9yVHlwZTo6TW9kZWw6OmlzSW52ZXJ0aWJsZSkKLSAgICAgICAgICAgIHJldHVybiBp
bnZlcnRlZENvbG9yV2l0aE92ZXJyaWRkZW5BbHBoYSh1bmRlcmx5aW5nQ29sb3IsIGFscGhhKTsK
KyAgICAgICAgICAgIHJldHVybiBDb2xvciB7IGludmVydGVkQ29sb3JXaXRoT3ZlcnJpZGRlbkFs
cGhhKHVuZGVybHlpbmdDb2xvciwgYWxwaGEpLCBmbGFncygpIH07CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHJldHVybiBpbnZlcnRlZENvbG9yV2l0aE92ZXJyaWRkZW5BbHBoYShjb252ZXJ0
Q29sb3I8U1JHQkE8ZmxvYXQ+Pih1bmRlcmx5aW5nQ29sb3IpLCBhbHBoYSk7Ci0gICAgfSk7Cisg
ICAgICAgICAgICByZXR1cm4gQ29sb3IgeyBpbnZlcnRlZENvbG9yV2l0aE92ZXJyaWRkZW5BbHBo
YShjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pih1bmRlcmx5aW5nQ29sb3IpLCBhbHBoYSksIGZs
YWdzKCkgfTsKKyAgICB9OworCisgICAgcmV0dXJuIGNhbGxPblVuZGVybHlpbmdUeXBlKFdURjo6
bWFrZVZpc2l0b3IoCisgICAgICAgIFsmXSAoY29uc3QgU1JHQkE8dWludDhfdD4mIHVuZGVybHlp
bmdDb2xvcikgeworICAgICAgICAgICAgcmV0dXJuIGludmVydEFuZE92ZXJyaWRlQWxwaGEoY29u
dmVydENvbG9yPFNSR0JBPGZsb2F0Pj4odW5kZXJseWluZ0NvbG9yKSwgYWxwaGEpOworICAgICAg
ICB9LAorICAgICAgICBbJl0oY29uc3QgYXV0byYgdW5kZXJseWluZ0NvbG9yKSB7CisgICAgICAg
ICAgICByZXR1cm4gaW52ZXJ0QW5kT3ZlcnJpZGVBbHBoYSh1bmRlcmx5aW5nQ29sb3IsIGFscGhh
KTsKKyAgICAgICAgfQorICAgICkpOwogfQogCiBDb2xvciBDb2xvcjo6c2VtYW50aWNDb2xvcigp
IGNvbnN0CiB7CiAgICAgaWYgKGlzU2VtYW50aWMoKSkKICAgICAgICAgcmV0dXJuICp0aGlzOwot
ICAgIAorCiAgICAgaWYgKGlzT3V0T2ZMaW5lKCkpCi0gICAgICAgIHJldHVybiB7IGFzT3V0T2ZM
aW5lUmVmKCksIGNvbG9yU3BhY2UoKSwgRmxhZ3M6OlNlbWFudGljIH07Ci0gICAgcmV0dXJuIHsg
YXNJbmxpbmUoKSwgRmxhZ3M6OlNlbWFudGljIH07CisgICAgICAgIHJldHVybiB7IGFzT3V0T2ZM
aW5lUmVmKCksIGNvbG9yU3BhY2UoKSwgZmxhZ3MoKSB8IEZsYWdzSW5jbHVkaW5nUHJpdmF0ZTo6
U2VtYW50aWMgfTsKKyAgICByZXR1cm4geyBhc0lubGluZSgpLCBmbGFncygpIHwgRmxhZ3NJbmNs
dWRpbmdQcml2YXRlOjpTZW1hbnRpYyB9OwogfQogCiBzdGQ6OnBhaXI8Q29sb3JTcGFjZSwgQ29s
b3JDb21wb25lbnRzPGZsb2F0Pj4gQ29sb3I6OmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkocmV2aXNp
b24gMjc0MTU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNzIsMTMgKzcyLDEwIEBAIHB1YmxpYzoKIAogICAgIENvbG9yKCkg
PSBkZWZhdWx0OwogCi0gICAgQ29sb3IoU1JHQkE8dWludDhfdD4sIE9wdGlvblNldDxGbGFncz4g
PSB7IH0pOwotICAgIENvbG9yKE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiwgT3B0aW9uU2V0PEZs
YWdzPiA9IHsgfSk7Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlV2l0aENvbXBvbmVudFR5cGU8Q29sb3JU
eXBlLCBmbG9hdD4+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBl
LCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlPENvbG9yVHlwZT4+KiA9IG51
bGxwdHI+CiAgICAgQ29sb3IoY29uc3QgQ29sb3JUeXBlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IHsg
fSk7CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlV2l0aENvbXBvbmVudFR5cGU8Q29sb3JUeXBlLCBmbG9h
dD4+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlPENvbG9yVHlwZT4+KiA9IG51bGxwdHI+CiAg
ICAgQ29sb3IoY29uc3QgT3B0aW9uYWw8Q29sb3JUeXBlPiYsIE9wdGlvblNldDxGbGFncz4gPSB7
IH0pOwogCiAgICAgZXhwbGljaXQgQ29sb3IoV1RGOjpIYXNoVGFibGVFbXB0eVZhbHVlVHlwZSk7
CkBAIC0xMzcsNyArMTM0LDcgQEAgcHVibGljOgogCiAgICAgQ29sb3Igb3BhcXVlQ29sb3IoKSBj
b25zdCB7IHJldHVybiBjb2xvcldpdGhBbHBoYSgxLjBmKTsgfQogCi0gICAgQ29sb3Igc2VtYW50
aWNDb2xvcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIHNlbWFudGljQ29sb3Io
KSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdGhlIHVuZGVybHlpbmcgY29sb3IgaWYgaXRzIHR5
cGUgaXMgU1JHQkE8dWludDhfdD4uCiAgICAgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHRyeUdl
dEFzU1JHQkFCeXRlcygpIGNvbnN0OwpAQCAtMjAzLDcgKzIwMCw2IEBAIHByaXZhdGU6CiAKICAg
ICAgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0PiBtX2NvbXBvbmVudHM7CiAgICAgfTsKLSAgICBD
b2xvcihSZWY8T3V0T2ZMaW5lQ29tcG9uZW50cz4mJiwgQ29sb3JTcGFjZSwgT3B0aW9uU2V0PEZs
YWdzPiA9IHsgfSk7CiAKICAgICBlbnVtIGNsYXNzIEZsYWdzSW5jbHVkaW5nUHJpdmF0ZSA6IHVp
bnQ4X3QgewogICAgICAgICBTZW1hbnRpYyAgICAgICAgICAgICAgICAgICAgICAgID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oRmxhZ3M6OlNlbWFudGljKSwKQEAgLTIxNSwxMiArMjExLDE5IEBAIHBy
aXZhdGU6CiAgICAgfTsKICAgICBzdGF0aWMgT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0
ZT4gdG9GbGFnc0luY2x1ZGluZ1ByaXZhdGUoT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgeyByZXR1
cm4gT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT46OmZyb21SYXcoZmxhZ3MudG9SYXco
KSk7IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWZfdDxJc0NvbG9yVHlwZTxDb2xvclR5cGU+PiogPSBudWxscHRyPgorICAgIENvbG9y
KGNvbnN0IENvbG9yVHlwZSYsIE9wdGlvblNldDxGbGFnc0luY2x1ZGluZ1ByaXZhdGU+KTsKKyAg
ICBDb2xvcihSZWY8T3V0T2ZMaW5lQ29tcG9uZW50cz4mJiwgQ29sb3JTcGFjZSwgT3B0aW9uU2V0
PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT4pOworCiAgICAgT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5n
UHJpdmF0ZT4gZmxhZ3MoKSBjb25zdDsKICAgICBib29sIGlzT3V0T2ZMaW5lKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0lubGluZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRDb2xvcihTUkdCQTx1aW50
OF90PiwgT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT4gPSB7IH0pOwotICAgIHZvaWQg
c2V0T3V0T2ZMaW5lQ29tcG9uZW50cyhSZWY8T3V0T2ZMaW5lQ29tcG9uZW50cz4mJiwgQ29sb3JT
cGFjZSwgT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT4gPSB7IH0pOworICAgIHZvaWQg
c2V0Q29sb3IoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzSW5jbHVk
aW5nUHJpdmF0ZT4gPSB7IH0pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWZfdDxJc0NvbG9yVHlwZTxDb2xvclR5cGU+PiogPSBudWxscHRy
PgorICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgT3B0aW9uU2V0PEZs
YWdzSW5jbHVkaW5nUHJpdmF0ZT4gPSB7IH0pOworICAgIHZvaWQgc2V0Q29sb3IoUmVmPE91dE9m
TGluZUNvbXBvbmVudHM+JiYsIENvbG9yU3BhY2UsIE9wdGlvblNldDxGbGFnc0luY2x1ZGluZ1By
aXZhdGU+ID0geyB9KTsKIAogICAgIFNSR0JBPHVpbnQ4X3Q+IGFzSW5saW5lKCkgY29uc3Q7CiAg
ICAgUGFja2VkQ29sb3I6OlJHQkEgYXNQYWNrZWRJbmxpbmUoKSBjb25zdDsKQEAgLTMxMiwzMyAr
MzE1LDI4IEBAIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdTZW1hbnRpY0NvbG9yKGMKICAgICBy
ZXR1cm4gYS5hc1BhY2tlZElubGluZSgpLnZhbHVlID09IGIuYXNQYWNrZWRJbmxpbmUoKS52YWx1
ZSAmJiBhRmxhZ3MgPT0gYkZsYWdzOwogfQogCi1pbmxpbmUgQ29sb3I6OkNvbG9yKFNSR0JBPHVp
bnQ4X3Q+IGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQordGVtcGxhdGU8dHlwZW5hbWUg
Q29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlPENvbG9yVHlw
ZT4+Kj4KK2lubGluZSBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgT3B0aW9u
U2V0PEZsYWdzPiBmbGFncykKIHsKICAgICBzZXRDb2xvcihjb2xvciwgdG9GbGFnc0luY2x1ZGlu
Z1ByaXZhdGUoZmxhZ3MpKTsKIH0KIAotaW5saW5lIENvbG9yOjpDb2xvcihPcHRpb25hbDxTUkdC
QTx1aW50OF90Pj4gY29sb3IsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SXNDb2xvclR5cGU8Q29s
b3JUeXBlPj4qPgoraW5saW5lIENvbG9yOjpDb2xvcihjb25zdCBPcHRpb25hbDxDb2xvclR5cGU+
JiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKIHsKICAgICBpZiAoY29sb3IpCiAgICAg
ICAgIHNldENvbG9yKCpjb2xvciwgdG9GbGFnc0luY2x1ZGluZ1ByaXZhdGUoZmxhZ3MpKTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90
PElzQ29sb3JUeXBlV2l0aENvbXBvbmVudFR5cGU8Q29sb3JUeXBlLCBmbG9hdD4+Kj4KLWlubGlu
ZSBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzPiBm
bGFncykKLXsKLSAgICBzZXRPdXRPZkxpbmVDb21wb25lbnRzKE91dE9mTGluZUNvbXBvbmVudHM6
OmNyZWF0ZShhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpLCBDb2xvclNwYWNlRm9yPENvbG9yVHlw
ZT4sIHRvRmxhZ3NJbmNsdWRpbmdQcml2YXRlKGZsYWdzKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxJc0NvbG9yVHlwZVdpdGhD
b21wb25lbnRUeXBlPENvbG9yVHlwZSwgZmxvYXQ+Pio+Ci1pbmxpbmUgQ29sb3I6OkNvbG9yKGNv
bnN0IE9wdGlvbmFsPENvbG9yVHlwZT4mIGNvbG9yLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQor
dGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PElz
Q29sb3JUeXBlPENvbG9yVHlwZT4+Kj4KK2lubGluZSBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3JU
eXBlJiBjb2xvciwgT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT4gZmxhZ3MpCiB7Ci0g
ICAgaWYgKGNvbG9yKQotICAgICAgICBzZXRPdXRPZkxpbmVDb21wb25lbnRzKE91dE9mTGluZUNv
bXBvbmVudHM6OmNyZWF0ZShhc0NvbG9yQ29tcG9uZW50cygqY29sb3IpKSwgQ29sb3JTcGFjZUZv
cjxDb2xvclR5cGU+LCB0b0ZsYWdzSW5jbHVkaW5nUHJpdmF0ZShmbGFncykpOworICAgIHNldENv
bG9yKGNvbG9yLCBmbGFncyk7CiB9CiAKLWlubGluZSBDb2xvcjo6Q29sb3IoUmVmPE91dE9mTGlu
ZUNvbXBvbmVudHM+JiYgb3V0T2ZMaW5lQ29tcG9uZW50cywgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQoraW5saW5lIENvbG9yOjpDb2xvcihSZWY8T3V0T2ZM
aW5lQ29tcG9uZW50cz4mJiBvdXRPZkxpbmVDb21wb25lbnRzLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIE9wdGlvblNldDxGbGFnc0luY2x1ZGluZ1ByaXZhdGU+IGZsYWdzKQogewotICAgIHNldE91
dE9mTGluZUNvbXBvbmVudHMoV1RGTW92ZShvdXRPZkxpbmVDb21wb25lbnRzKSwgY29sb3JTcGFj
ZSwgdG9GbGFnc0luY2x1ZGluZ1ByaXZhdGUoZmxhZ3MpKTsKKyAgICBzZXRDb2xvcihXVEZNb3Zl
KG91dE9mTGluZUNvbXBvbmVudHMpLCBjb2xvclNwYWNlLCBmbGFncyk7CiB9CiAKIGlubGluZSBD
b2xvcjo6Q29sb3IoV1RGOjpIYXNoVGFibGVFbXB0eVZhbHVlVHlwZSkKQEAgLTUzNCw3ICs1MzIs
MjUgQEAgaW5saW5lIHZvaWQgQ29sb3I6OnNldENvbG9yKFNSR0JBPHVpbnQ4XwogICAgIEFTU0VS
VChpc0lubGluZSgpKTsKIH0KIAotaW5saW5lIHZvaWQgQ29sb3I6OnNldE91dE9mTGluZUNvbXBv
bmVudHMoUmVmPE91dE9mTGluZUNvbXBvbmVudHM+JiYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT4gZmxhZ3MpCitpbmxpbmUgdm9p
ZCBDb2xvcjo6c2V0Q29sb3IoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvciwgT3B0aW9uU2V0PEZs
YWdzSW5jbHVkaW5nUHJpdmF0ZT4gZmxhZ3MpCit7CisgICAgLy8gU3RvcmUgYSBTUkdCQTxmbG9h
dD4gYXMgU1JHQkE8dWludDhfdD4gaWYgaXQgY2FuIGJlIGNvbnZlcnRlZCB0by9mcm9tIFNSR0JB
PHVpbnQ4X3Q+IHdpdGhvdXQgbG9zcyBvZiBwcmVjaXNpb24uCisgICAgLy8gRklYTUU6IENvbnNp
ZGVyIGFwcGx5aW5nIHRoaXMgb3B0aW1pemF0aW9uIHRvIG1vcmUgY29sb3IgdHlwZXMgYnkgbW92
aW5nIHRoZSBjb2xvciBzcGFjZSBtZW1iZXIgb2YgRXh0ZW5kZWRDb2xvciBpbnRvCisgICAgLy8g
dGhlIGZyZWUgYml0cyBpbiBtX2NvbG9yQW5kRmxhZ3MuCisgICAgaWYgKGF1dG8gY29tcHJlc3Nl
ZENvbG9yID0gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+Pihjb2xvcik7IGNvbnZlcnRDb2xv
cjxTUkdCQTxmbG9hdD4+KGNvbXByZXNzZWRDb2xvcikgPT0gY29sb3IpIHsKKyAgICAgICAgc2V0
Q29sb3IoY29tcHJlc3NlZENvbG9yLCBmbGFncyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgc2V0Q29sb3IoT3V0T2ZMaW5lQ29tcG9uZW50czo6Y3JlYXRlKGFzQ29sb3JDb21wb25lbnRz
KGNvbG9yKSksIENvbG9yU3BhY2U6OlNSR0IsIGZsYWdzKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PElzQ29sb3JUeXBlPENvbG9y
VHlwZT4+Kj4KK2lubGluZSB2b2lkIENvbG9yOjpzZXRDb2xvcihjb25zdCBDb2xvclR5cGUmIGNv
bG9yLCBPcHRpb25TZXQ8RmxhZ3NJbmNsdWRpbmdQcml2YXRlPiBmbGFncykKK3sKKyAgICBzZXRD
b2xvcihPdXRPZkxpbmVDb21wb25lbnRzOjpjcmVhdGUoYXNDb2xvckNvbXBvbmVudHMoY29sb3Ip
KSwgQ29sb3JTcGFjZUZvcjxDb2xvclR5cGU+LCBmbGFncyk7Cit9CisKK2lubGluZSB2b2lkIENv
bG9yOjpzZXRDb2xvcihSZWY8T3V0T2ZMaW5lQ29tcG9uZW50cz4mJiBjb2xvciwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBPcHRpb25TZXQ8RmxhZ3NJbmNsdWRpbmdQcml2YXRlPiBmbGFncykKIHsK
ICAgICBmbGFncy5hZGQoeyBGbGFnc0luY2x1ZGluZ1ByaXZhdGU6OlZhbGlkLCBGbGFnc0luY2x1
ZGluZ1ByaXZhdGU6Ok91dE9mTGluZSB9KTsKICAgICBtX2NvbG9yQW5kRmxhZ3MgPSBlbmNvZGVk
T3V0T2ZMaW5lQ29tcG9uZW50cyhXVEZNb3ZlKGNvbG9yKSkgfCBlbmNvZGVkQ29sb3JTcGFjZShj
b2xvclNwYWNlKSB8IGVuY29kZWRGbGFncyhmbGFncyk7CkBAIC02MTQsMTQgKzYzMCwxNCBAQCB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxDb2xvcj4gCiAgICAgICAgIGZsb2F0IGFs
cGhhOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFscGhhKSkKICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiBDb2xvciB7IE91dE9mTGluZUNvbXBv
bmVudHM6OmNyZWF0ZSh7IGMxLCBjMiwgYzMsIGFscGhhIH0pLCBjb2xvclNwYWNlLCBmbGFncyB9
OworICAgICAgICByZXR1cm4gQ29sb3IgeyBPdXRPZkxpbmVDb21wb25lbnRzOjpjcmVhdGUoeyBj
MSwgYzIsIGMzLCBhbHBoYSB9KSwgY29sb3JTcGFjZSwgdG9GbGFnc0luY2x1ZGluZ1ByaXZhdGUo
ZmxhZ3MpIH07CiAgICAgfQogCiAgICAgdWludDMyX3QgdmFsdWU7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICByZXR1
cm4gQ29sb3IgeyBhc1NSR0JBKFBhY2tlZENvbG9yOjpSR0JBIHsgdmFsdWUgfSksIGZsYWdzIH07
CisgICAgcmV0dXJuIENvbG9yIHsgYXNTUkdCQShQYWNrZWRDb2xvcjo6UkdCQSB7IHZhbHVlIH0p
LCB0b0ZsYWdzSW5jbHVkaW5nUHJpdmF0ZShmbGFncykgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGls
aXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclV0aWxpdGllcy5oCShyZXZpc2lvbiAyNzQxNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMCAr
NDgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnRGbG9hdEFscGhhCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgRnVuY3Rvcj4gQ29sb3JUeXBlIGNvbG9y
QnlNb2RpZmluZ0VhY2hOb25BbHBoYUNvbXBvbmVudChjb25zdCBDb2xvclR5cGUmLCBGdW5jdG9y
JiYpOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGUg
Y29sb3JXaXRoT3ZlcnJpZGRlbkFscGhhKGNvbnN0IENvbG9yVHlwZSYsIHVpbnQ4X3Qgb3ZlcnJp
ZGVBbHBoYSk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IENvbG9yVHlwZSBjb2xvcldp
dGhPdmVycmlkZGVuQWxwaGEoY29uc3QgQ29sb3JUeXBlJiwgZmxvYXQgb3ZlcnJpZGVBbHBoYSk7
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZSBpbnZl
cnRlZENvbG9yV2l0aE92ZXJyaWRkZW5BbHBoYShjb25zdCBDb2xvclR5cGUmLCB1aW50OF90IG92
ZXJyaWRlQWxwaGEpOwogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBDb2xvclR5cGUgaW52
ZXJ0ZWRDb2xvcldpdGhPdmVycmlkZGVuQWxwaGEoY29uc3QgQ29sb3JUeXBlJiwgZmxvYXQgb3Zl
cnJpZGVBbHBoYSk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBDb2xvclR5cGU6Ok1vZGVsLCBS
R0JNb2RlbDx0eXBlbmFtZSBDb2xvclR5cGU6OkNvbXBvbmVudFR5cGU+Pj4qID0gbnVsbHB0cj4g
Y29uc3RleHByIGJvb2wgaXNCbGFjayhjb25zdCBDb2xvclR5cGUmKTsKQEAgLTEwMywzNiArMTAw
LDE4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgRnUKICAgICByZXR1
cm4geyBjb3B5WzBdLCBjb3B5WzFdLCBjb3B5WzJdLCBjb3B5WzNdIH07CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZSBjb2xvcldpdGhPdmVycmlk
ZGVuQWxwaGEoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgdWludDhfdCBvdmVycmlkZUFscGhhKQot
ewotICAgIGF1dG8gY29weSA9IGNvbG9yOwotICAgIGNvcHkuYWxwaGEgPSBjb252ZXJ0Qnl0ZUFs
cGhhVG88dHlwZW5hbWUgQ29sb3JUeXBlOjpDb21wb25lbnRUeXBlPihvdmVycmlkZUFscGhhKTsK
LSAgICByZXR1cm4gY29weTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBDb2xv
clR5cGUgY29sb3JXaXRoT3ZlcnJpZGRlbkFscGhhKGNvbnN0IENvbG9yVHlwZSYgY29sb3IsIGZs
b2F0IG92ZXJyaWRlQWxwaGEpCiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjx0
eXBlbmFtZSBDb2xvclR5cGU6OkNvbXBvbmVudFR5cGUsIGZsb2F0Pik7CisKICAgICBhdXRvIGNv
cHkgPSBjb2xvcjsKLSAgICBjb3B5LmFscGhhID0gY29udmVydEZsb2F0QWxwaGFUbzx0eXBlbmFt
ZSBDb2xvclR5cGU6OkNvbXBvbmVudFR5cGU+KG92ZXJyaWRlQWxwaGEpOworICAgIGNvcHkuYWxw
aGEgPSBvdmVycmlkZUFscGhhOwogICAgIHJldHVybiBjb3B5OwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGUgaW52ZXJ0ZWRDb2xvcldpdGhPdmVy
cmlkZGVuQWxwaGEoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgdWludDhfdCBvdmVycmlkZUFscGhh
KQotewotICAgIHN0YXRpY19hc3NlcnQoQ29sb3JUeXBlOjpNb2RlbDo6aXNJbnZlcnRpYmxlKTsK
LQotICAgIGF1dG8gY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKTsKLSAgICBh
dXRvIGNvcHkgPSBjb21wb25lbnRzOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDM7
ICsraSkKLSAgICAgICAgY29weVtpXSA9IENvbG9yVHlwZTo6TW9kZWw6OnJhbmdlc1tpXS5tYXgg
LSBjb21wb25lbnRzW2ldOwotICAgIGNvcHlbM10gPSBjb252ZXJ0Qnl0ZUFscGhhVG88dHlwZW5h
bWUgQ29sb3JUeXBlOjpDb21wb25lbnRUeXBlPihvdmVycmlkZUFscGhhKTsKLQotICAgIHJldHVy
biBtYWtlRnJvbUNvbXBvbmVudHM8Q29sb3JUeXBlPihjb3B5KTsKLX0KLQogdGVtcGxhdGU8dHlw
ZW5hbWUgQ29sb3JUeXBlPiBDb2xvclR5cGUgaW52ZXJ0ZWRDb2xvcldpdGhPdmVycmlkZGVuQWxw
aGEoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgZmxvYXQgb3ZlcnJpZGVBbHBoYSkKIHsKKyAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIENvbG9yVHlwZTo6Q29tcG9uZW50
VHlwZSwgZmxvYXQ+KTsKICAgICBzdGF0aWNfYXNzZXJ0KENvbG9yVHlwZTo6TW9kZWw6OmlzSW52
ZXJ0aWJsZSk7CiAKICAgICBhdXRvIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xv
cik7CkBAIC0xNDAsNyArMTE5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBDb2xv
clR5cGUgaQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDM7ICsraSkKICAgICAgICAg
Y29weVtpXSA9IENvbG9yVHlwZTo6TW9kZWw6OnJhbmdlc1tpXS5tYXggLSBjb21wb25lbnRzW2ld
OwotICAgIGNvcHlbM10gPSBjb252ZXJ0RmxvYXRBbHBoYVRvPHR5cGVuYW1lIENvbG9yVHlwZTo6
Q29tcG9uZW50VHlwZT4ob3ZlcnJpZGVBbHBoYSk7CisgICAgY29weVszXSA9IG92ZXJyaWRlQWxw
aGE7CiAKICAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzPENvbG9yVHlwZT4oY29weSk7CiB9
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNzQxNjgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wMy0wOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT3B0aW1pemUgZmxvYXQgYmFzZWQgc1JHQiBjb2xvcnMgdGhhdCBjYW4gYmUgcm91
bmQgdHJpcHBlZCB0byB1aW50OF90IGJhc2VkIHJlcHJlc2VudGF0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTUzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvQ29sb3JUZXN0cy5jcHA6CisgICAgICAgIFVwZGF0ZSB0ZXN0cyB0byBhY2NvdW50
IGZvciBuZXcgYmVoYXZpb3Igd2hlcmUgb2Ygc3RvcmluZyBTUkdCQTxmbG9hdD4gYXMgU1JHQkE8
dWludDhfdD4KKyAgICAgICAgd2hpY2ggY2hhbmdlcyB3aGljaCBjb2xvcnMgYXJlIGVxdWFsIGFu
ZCBoYXNoIHRvIHRoZSBzYW1lIHZhbHVlLiBBbHNvIGFkZCBzb21lIHRlc3RzCisgICAgICAgIHRv
IHNob3cgdGhhdCBkaWZmZXJlbnQgZmxhZ3MgZWZmZWN0IGVxdWFsIGFuZCBoYXNoLgorCiAyMDIx
LTAzLTA5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAg
ICAgIFtHVEtdIFJlZW5hYmxlIC1mdmlzaWJpbGl0eT1oaWRkZW4KSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JUZXN0cy5jcHAJKHJldmlzaW9uIDI3
NDE1NSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjc5LDE5ICsyNzksNDAgQEAgVEVTVChDb2xvciwgRXF1YWxp
dHkpCiAgICAgICAgIENvbG9yIGMxIHsgRGlzcGxheVAzPGZsb2F0PiB7IDEuMCwgMC41LCAwLjI1
LCAxLjAgfSB9OwogICAgICAgICBDb2xvciBjMiB7IERpc3BsYXlQMzxmbG9hdD4geyAxLjAsIDAu
NSwgMC4yNSwgMS4wIH0gfTsKICAgICAgICAgRVhQRUNUX0VRKGMxLCBjMik7CisgICAgICAgIEVY
UEVDVF9FUShjMiwgYzEpOwogICAgIH0KIAogICAgIHsKICAgICAgICAgQ29sb3IgYzEgeyBEaXNw
bGF5UDM8ZmxvYXQ+IHsgMS4wLCAwLjUsIDAuMjUsIDEuMCB9IH07CiAgICAgICAgIENvbG9yIGMy
IHsgU1JHQkE8ZmxvYXQ+IHsgMS4wLCAwLjUsIDAuMjUsIDEuMCB9IH07CiAgICAgICAgIEVYUEVD
VF9ORShjMSwgYzIpOworICAgICAgICBFWFBFQ1RfTkUoYzIsIGMxKTsKICAgICB9CiAKLSAgICBh
dXRvIGNvbXBvbmVudEJ5dGVzID0gU1JHQkE8dWludDhfdD4geyAyNTUsIDEyOCwgNjMsIDEyNyB9
OwotICAgIENvbG9yIHJnYjEgeyBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb21wb25lbnRC
eXRlcykgfTsKLSAgICBDb2xvciByZ2IyIHsgY29tcG9uZW50Qnl0ZXMgfTsKLSAgICBFWFBFQ1Rf
TkUocmdiMSwgcmdiMik7Ci0gICAgRVhQRUNUX05FKHJnYjIsIHJnYjEpOworICAgIHsKKyAgICAg
ICAgLy8gVGhlc2Ugd2lsbCBiZSBlcXVhbCwgYXMgY29tcG9uZW50cyBhcmUgbG9zc2xlc3NseSBj
b252ZXJ0YWJsZSBiZXR3ZWVuIFNSR0JBPHVpbnQ4X3Q+IGFuZCBTUkdCQTxmbG9hdD4uCisgICAg
ICAgIGF1dG8gY29tcG9uZW50Qnl0ZXMgPSBTUkdCQTx1aW50OF90PiB7IDI1NSwgMTI4LCA2Mywg
MTI3IH07CisgICAgICAgIENvbG9yIGMxIHsgY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29t
cG9uZW50Qnl0ZXMpIH07CisgICAgICAgIENvbG9yIGMyIHsgY29tcG9uZW50Qnl0ZXMgfTsKKyAg
ICAgICAgRVhQRUNUX0VRKGMxLCBjMik7CisgICAgICAgIEVYUEVDVF9FUShjMiwgYzEpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgLy8gVGhlc2Ugd2lsbCBub3QgYmUgZXF1YWwsIGFzIGNvbXBv
bmVudHMgYXJlIG5vdCBsb3NzbGVzc2x5IGNvbnZlcnRhYmxlIGJldHdlZW4gU1JHQkE8dWludDhf
dD4gYW5kIFNSR0JBPGZsb2F0Pi4KKyAgICAgICAgYXV0byBjb21wb25lbnRGbG9hdHMgPSBTUkdC
QTxmbG9hdD4geyAxLjBmLCAwLjNmLCAwLjJmLCAwLjFmIH07CisgICAgICAgIENvbG9yIGMxIHsg
Y29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+Pihjb21wb25lbnRGbG9hdHMpIH07CisgICAgICAg
IENvbG9yIGMyIHsgY29tcG9uZW50RmxvYXRzIH07CisgICAgICAgIEVYUEVDVF9ORShjMSwgYzIp
OworICAgICAgICBFWFBFQ1RfTkUoYzIsIGMxKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENv
bG9yIGMxIHsgRGlzcGxheVAzPGZsb2F0PiB7IDEuMCwgMC41LCAwLjI1LCAxLjAgfSwgeyBDb2xv
cjo6RmxhZ3M6OlVzZUNvbG9yRnVuY3Rpb25TZXJpYWxpemF0aW9uIH0gfTsKKyAgICAgICAgQ29s
b3IgYzIgeyBEaXNwbGF5UDM8ZmxvYXQ+IHsgMS4wLCAwLjUsIDAuMjUsIDEuMCB9IH07CisgICAg
ICAgIEVYUEVDVF9ORShjMSwgYzIpOworICAgICAgICBFWFBFQ1RfTkUoYzIsIGMxKTsKKyAgICB9
CiB9CiAKIFRFU1QoQ29sb3IsIEhhc2gpCkBAIC0zMDcsMTEgKzMyOCwyOCBAQCBURVNUKENvbG9y
LCBIYXNoKQogICAgICAgICBDb2xvciBjMiB7IFNSR0JBPGZsb2F0PiB7IDEuMCwgMC41LCAwLjI1
LCAxLjAgfSB9OwogICAgICAgICBFWFBFQ1RfTkUoYzEuaGFzaCgpLCBjMi5oYXNoKCkpOwogICAg
IH0KKyAgICAKKyAgICB7CisgICAgICAgIC8vIFRoZXNlIHdpbGwgaGFzaCB0byB0aGUgc2FtZSB2
YWx1ZSwgYXMgY29tcG9uZW50cyBhcmUgbG9zc2xlc3NseSBjb252ZXJ0YWJsZSBiZXR3ZWVuIFNS
R0JBPHVpbnQ4X3Q+IGFuZCBTUkdCQTxmbG9hdD4uCisgICAgICAgIGF1dG8gY29tcG9uZW50Qnl0
ZXMgPSBTUkdCQTx1aW50OF90PiB7IDI1NSwgMTI4LCA2MywgMTI3IH07CisgICAgICAgIENvbG9y
IGMxIHsgY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29tcG9uZW50Qnl0ZXMpIH07CisgICAg
ICAgIENvbG9yIGMyIHsgY29tcG9uZW50Qnl0ZXMgfTsKKyAgICAgICAgRVhQRUNUX0VRKGMxLmhh
c2goKSwgYzIuaGFzaCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIC8vIFRoZXNlIHdpbGwg
bm90IGhhc2ggdG8gdGhlIHNhbWUgdmFsdWUsIGFzIGNvbXBvbmVudHMgYXJlIG5vdCBsb3NzbGVz
c2x5IGNvbnZlcnRhYmxlIGJldHdlZW4gU1JHQkE8dWludDhfdD4gYW5kIFNSR0JBPGZsb2F0Pi4K
KyAgICAgICAgYXV0byBjb21wb25lbnRGbG9hdHMgPSBTUkdCQTxmbG9hdD4geyAxLjBmLCAwLjNm
LCAwLjJmLCAwLjFmIH07CisgICAgICAgIENvbG9yIGMxIHsgY29udmVydENvbG9yPFNSR0JBPHVp
bnQ4X3Q+Pihjb21wb25lbnRGbG9hdHMpIH07CisgICAgICAgIENvbG9yIGMyIHsgY29tcG9uZW50
RmxvYXRzIH07CisgICAgICAgIEVYUEVDVF9ORShjMS5oYXNoKCksIGMyLmhhc2goKSk7CisgICAg
fQogCi0gICAgYXV0byBjb21wb25lbnRCeXRlcyA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAxMjgs
IDYzLCAxMjcgfTsKLSAgICBDb2xvciByZ2IxIHsgY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4o
Y29tcG9uZW50Qnl0ZXMpIH07Ci0gICAgQ29sb3IgcmdiMiB7IGNvbXBvbmVudEJ5dGVzIH07Ci0g
ICAgRVhQRUNUX05FKHJnYjEuaGFzaCgpLCByZ2IyLmhhc2goKSk7CisgICAgeworICAgICAgICBD
b2xvciBjMSB7IERpc3BsYXlQMzxmbG9hdD4geyAxLjAsIDAuNSwgMC4yNSwgMS4wIH0sIHsgQ29s
b3I6OkZsYWdzOjpVc2VDb2xvckZ1bmN0aW9uU2VyaWFsaXphdGlvbiB9IH07CisgICAgICAgIENv
bG9yIGMyIHsgRGlzcGxheVAzPGZsb2F0PiB7IDEuMCwgMC41LCAwLjI1LCAxLjAgfSB9OworICAg
ICAgICBFWFBFQ1RfTkUoYzEuaGFzaCgpLCBjMi5oYXNoKCkpOworICAgIH0KIH0KIAogVEVTVChD
b2xvciwgTW92ZUNvbnN0cnVjdG9yKQpAQCAtMzg5LDMzICs0MjcsNjYgQEAgVEVTVChDb2xvciwg
TGluZWFyU1JHQkNvbnZlcnNpb25Ub1NSR0IpCiAKIFRFU1QoQ29sb3IsIENvbG9yV2l0aEFscGhh
TXVsdGlwbGllZEJ5KQogewotICAgIENvbG9yIGNvbG9yIHsgU1JHQkE8ZmxvYXQ+IHsgMC4sIDAu
LCAxLiwgMC42IH0gfTsKKyAgICBDb2xvciBjb2xvciB7IFNSR0JBPGZsb2F0PiB7IDAuMGYsIDAu
MGYsIDEuMGYsIDAuNmYgfSB9OworICAgIEVYUEVDVF9UUlVFKGNvbG9yLnRyeUdldEFzU1JHQkFC
eXRlcygpICE9IFdURjo6bnVsbG9wdCk7CiAKICAgICB7Ci0gICAgICAgIENvbG9yIGNvbG9yV2l0
aEFscGhhTXVsdGlwbGllZEJ5ID0gY29sb3IuY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoMS4p
OworICAgICAgICBDb2xvciBjb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeSA9IGNvbG9yLmNvbG9y
V2l0aEFscGhhTXVsdGlwbGllZEJ5KDEuMGYpOworICAgICAgICBFWFBFQ1RfVFJVRShjb2xvcldp
dGhBbHBoYU11bHRpcGxpZWRCeS50cnlHZXRBc1NSR0JBQnl0ZXMoKSAhPSBXVEY6Om51bGxvcHQp
OwogICAgICAgICBFWFBFQ1RfRVEoY29sb3IsIGNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5KTsK
ICAgICB9CiAKICAgICB7CiAgICAgICAgIENvbG9yIGNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5
ID0gY29sb3IuY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoMC41KTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkudHJ5R2V0QXNTUkdCQUJ5dGVzKCkgPT0g
V1RGOjpudWxsb3B0KTsKICAgICAgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBj
b2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeS5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwogICAg
ICAgICBFWFBFQ1RfRVEoY29sb3JTcGFjZSwgQ29sb3JTcGFjZTo6U1JHQik7CiAgICAgICAgIGF1
dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKLSAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKHIs
IDAuKTsKLSAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGcsIDAuKTsKLSAgICAgICAgRVhQRUNUX0ZM
T0FUX0VRKGIsIDEuKTsKLSAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGEsIDAuMyk7CisgICAgICAg
IEVYUEVDVF9GTE9BVF9FUShyLCAwLjBmKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGcsIDAu
MGYpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoYiwgMS4wZik7CisgICAgICAgIEVYUEVDVF9G
TE9BVF9FUShhLCAwLjNmKTsKICAgICB9CiAKICAgICB7Ci0gICAgICAgIENvbG9yIGNvbG9yV2l0
aEFscGhhTXVsdGlwbGllZEJ5ID0gY29sb3IuY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVkQnkoMC4p
OworICAgICAgICBDb2xvciBjb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeSA9IGNvbG9yLmNvbG9y
V2l0aEFscGhhTXVsdGlwbGllZEJ5KDAuMGYpOworICAgICAgICBFWFBFQ1RfVFJVRShjb2xvcldp
dGhBbHBoYU11bHRpcGxpZWRCeS50cnlHZXRBc1NSR0JBQnl0ZXMoKSAhPSBXVEY6Om51bGxvcHQp
OwogICAgICAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yV2l0aEFscGhh
TXVsdGlwbGllZEJ5LmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7CiAgICAgICAgIEVYUEVDVF9F
UShjb2xvclNwYWNlLCBDb2xvclNwYWNlOjpTUkdCKTsKICAgICAgICAgYXV0byBbciwgZywgYiwg
YV0gPSBjb21wb25lbnRzOwotICAgICAgICBFWFBFQ1RfRkxPQVRfRVEociwgMC4pOwotICAgICAg
ICBFWFBFQ1RfRkxPQVRfRVEoZywgMC4pOwotICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoYiwgMS4p
OwotICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoYSwgMC4pOworICAgICAgICBFWFBFQ1RfRkxPQVRf
RVEociwgMC4wZik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShnLCAwLjBmKTsKKyAgICAgICAg
RVhQRUNUX0ZMT0FUX0VRKGIsIDEuMGYpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoYSwgMC4w
Zik7CisgICAgfQorfQorCitURVNUKENvbG9yLCBTZW1hbnRpYykKK3sKKyAgICB7CisgICAgICAg
IENvbG9yIGNvbG9yID0gQ29sb3I6OndoaXRlOworICAgICAgICBFWFBFQ1RfRkFMU0UoY29sb3Iu
aXNTZW1hbnRpYygpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gc2VtYW50aWNDb2xvciA9IGNv
bG9yLnNlbWFudGljQ29sb3IoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc2VtYW50aWNDb2xvci5p
c1NlbWFudGljKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29sb3IgY29sb3IgeyBEaXNw
bGF5UDM8ZmxvYXQ+IHsgMS4wLCAwLjUsIDAuMjUsIDEuMCB9LCB7IENvbG9yOjpGbGFnczo6VXNl
Q29sb3JGdW5jdGlvblNlcmlhbGl6YXRpb24gfSB9OworICAgICAgICBFWFBFQ1RfRkFMU0UoY29s
b3IuaXNTZW1hbnRpYygpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoY29sb3IudXNlc0NvbG9yRnVu
Y3Rpb25TZXJpYWxpemF0aW9uKCkpOworCisgICAgICAgIGF1dG8gc2VtYW50aWNDb2xvciA9IGNv
bG9yLnNlbWFudGljQ29sb3IoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc2VtYW50aWNDb2xvci5p
c1NlbWFudGljKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShzZW1hbnRpY0NvbG9yLnVzZXNDb2xv
ckZ1bmN0aW9uU2VyaWFsaXphdGlvbigpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbG9y
IGNvbG9yIHsgRGlzcGxheVAzPGZsb2F0PiB7IDEuMCwgMC41LCAwLjI1LCAxLjAgfSwgeyBDb2xv
cjo6RmxhZ3M6OlNlbWFudGljIH0gfTsKKyAgICAgICAgRVhQRUNUX1RSVUUoY29sb3IuaXNTZW1h
bnRpYygpKTsKKworICAgICAgICBhdXRvIHNlbWFudGljQ29sb3IgPSBjb2xvci5zZW1hbnRpY0Nv
bG9yKCk7CisgICAgICAgIEVYUEVDVF9UUlVFKHNlbWFudGljQ29sb3IuaXNTZW1hbnRpYygpKTsK
ICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NDIxNykKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIxLTAzLTEwICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBmbG9hdCBiYXNl
ZCBzUkdCIGNvbG9ycyB0aGF0IGNhbiBiZSByb3VuZCB0cmlwcGVkIHRvIHVpbnQ4X3QgYmFzZWQg
cmVwcmVzZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjI1NTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1MTcxNDcwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMv
Y2FudmFzLW92ZXJsb2Fkcy1zZXRGaWxsQ29sb3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvY2FudmFzL2NhbnZhcy1vdmVybG9hZHMtc2V0RmlsbENvbG9yLmh0bWw6CisgICAgICAgICog
ZmFzdC9jYW52YXMvY2FudmFzLW92ZXJsb2Fkcy1zZXRTaGFkb3ctZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1vdmVybG9hZHMtc2V0U2hhZG93Lmh0bWw6CisgICAg
ICAgICogZmFzdC9jYW52YXMvY2FudmFzLW92ZXJsb2Fkcy1zZXRTdHJva2VDb2xvci1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLW92ZXJsb2Fkcy1zZXRTdHJva2VD
b2xvci5odG1sOgorICAgICAgICBBZGQgc29tZSBhZGRpdGlvbmFsIHRlc3RzIGZvciBjYW52YXMg
ZnVuY3Rpb25zIHRoYXQgdGFrZSBhIGNvbG9yIHN0cmluZyBhbmQgb3ZlcnJpZGUKKyAgICAgICAg
YWxwaGEgdmFsdWUgdG8gc2hvdyBiZWhhdmlvciBmb3Igbm9uLWxlZ2FjeSBzUkdCIGNvbG9yIGZv
cm1zIGxpa2UgY29sb3Ioc3JnYiAuLi4pCisgICAgICAgIGFuZCBldmVuIG5vbi1zUkdCIGNvbG9y
cyBsaWtlIGNvbG9yKGRpc3BsYXktcDMgLi4uKS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvYW5pbWF0ZS1wc2VydmVy
cy1ncmFkLTAxLWItbWFudWFsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L21hc2tpbmctbWFzay0w
MS1iLW1hbnVhbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9wc2VydmVycy1ncmFkLTA1LWItbWFu
dWFsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3BzZXJ2ZXJzLWdyYWQtMTgtYi1tYW51YWwtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcvVzNDLVNWRy0xLjEvbWFza2lu
Zy1tYXNrLTAxLWItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcvVzND
LVNWRy0xLjEvcHNlcnZlcnMtZ3JhZC0wNS1iLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvc3ZnL2N1c3RvbS9kb21pbmFudC1iYXNlbGluZS1oYW5naW5nLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS90ZXh0LXJvdGF0ZWQtZ3JhZGll
bnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcvdHJhbnNmb3Jtcy90
ZXh0LXdpdGgtbWFzay13aXRoLXN2Zy10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN2Zy9jdXN0b20vZ3JhZGllbnQtc3Ryb2tlLXdpZHRoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBzdmcvY3VzdG9tL2pzLXVwZGF0ZS1ncmFkaWVudC1leHBlY3RlZC50eHQ6CisgICAgICAgIFVw
ZGF0ZSByZXN1bHRzIHdoZXJlIHNlcmlhbGl6YXRpb24gY2hhbmdlZCBhIGJpdCBkdWUgdG8gaW50
ZXJuYWwgcmVwcmVzZW50YXRpb24gbm93CisgICAgICAgIGhvbGRpbmcgZmxvYXRzIGluIHNvbWUg
Y2FzZXMuCisKIDIwMjEtMDMtMTAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNdWx0aS1jb2x1bW4gc3RhdGUgcHJvcGFnYXRpb24gc2hvdWxkIGZvbGxvdyBjb250
YWluaW5nIGJsb2NrIHJ1bGVzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
b3ZlcmxvYWRzLXNldEZpbGxDb2xvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLW92ZXJsb2Fkcy1zZXRGaWxsQ29sb3ItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyNzQxNTUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
b3ZlcmxvYWRzLXNldEZpbGxDb2xvci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE1
LDYgKzE1LDE2IEBAIFBBU1MgY3R4LnNldEZpbGxDb2xvcigncmVkJywgLjUpIGlzIHVuZGUKIFBB
U1MgY3R4LmZpbGxTdHlsZSBpcyAncmdiYSgyNTUsIDAsIDAsIDAuNSknCiBQQVNTIGN0eC5zZXRG
aWxsQ29sb3IoJ3JlZCcsIE5hTikgaXMgdW5kZWZpbmVkCiBQQVNTIGN0eC5maWxsU3R5bGUgaXMg
J3JnYmEoMjU1LCAwLCAwLCAwLjUpJworUEFTUyBjdHguc2V0RmlsbENvbG9yKCdyZ2JhKDI1NSwg
MCwgMCwgMC41KScsIDEpIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguZmlsbFN0eWxlIGlzICcjZmYw
MDAwJworUEFTUyBjdHguc2V0RmlsbENvbG9yKCdjb2xvcihzcmdiIDEgMC41IDAuMjUgLyAwKScp
IGlzIHVuZGVmaW5lZAorUEFTUyBjdHguZmlsbFN0eWxlIGlzICdjb2xvcihzcmdiIDEgMC41IDAu
MjUgLyAwKScKK1BBU1MgY3R4LnNldEZpbGxDb2xvcignY29sb3Ioc3JnYiAxIDAuNSAwLjI1IC8g
MCknLCAwLjUpIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguZmlsbFN0eWxlIGlzICdjb2xvcihzcmdi
IDEgMC41IDAuMjUgLyAwLjUpJworUEFTUyBjdHguc2V0RmlsbENvbG9yKCdjb2xvcihzcmdiIDEg
MCAwIC8gMCknLCAxKSBpcyB1bmRlZmluZWQKK1BBU1MgY3R4LmZpbGxTdHlsZSBpcyAnY29sb3Io
c3JnYiAxIDAgMCknCitQQVNTIGN0eC5zZXRGaWxsQ29sb3IoJ2NvbG9yKGRpc3BsYXktcDMgMSAw
LjUgMC4yNSAvIDAuNSknKSBpcyB1bmRlZmluZWQKK1BBU1MgY3R4LmZpbGxTdHlsZSBpcyAnY29s
b3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1IC8gMC41KScKIAogCiB1bmRlZmluZWQgc2V0RmlsbENv
bG9yKHVucmVzdHJpY3RlZCBmbG9hdCBncmF5TGV2ZWwsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBm
bG9hdCBhbHBoYSA9IDEpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtb3Zl
cmxvYWRzLXNldEZpbGxDb2xvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1vdmVybG9hZHMtc2V0RmlsbENvbG9yLmh0bWwJKHJldmlzaW9uIDI3NDE1
NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1vdmVybG9hZHMtc2V0RmlsbENv
bG9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDIwIEBAIHNob3VsZEJlKCJjdHgu
ZmlsbFN0eWxlIiwgIidyZ2JhKDI1NSwgMCwKIHNob3VsZEJlKCJjdHguc2V0RmlsbENvbG9yKCdy
ZWQnLCBOYU4pIiwgInVuZGVmaW5lZCIpOwogc2hvdWxkQmUoImN0eC5maWxsU3R5bGUiLCAiJ3Jn
YmEoMjU1LCAwLCAwLCAwLjUpJyIpOwogCitzaG91bGRCZSgiY3R4LnNldEZpbGxDb2xvcigncmdi
YSgyNTUsIDAsIDAsIDAuNSknLCAxKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJjdHguZmls
bFN0eWxlIiwgIicjZmYwMDAwJyIpOworCitzaG91bGRCZSgiY3R4LnNldEZpbGxDb2xvcignY29s
b3Ioc3JnYiAxIDAuNSAwLjI1IC8gMCknKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJjdHgu
ZmlsbFN0eWxlIiwgIidjb2xvcihzcmdiIDEgMC41IDAuMjUgLyAwKSciKTsKKworc2hvdWxkQmUo
ImN0eC5zZXRGaWxsQ29sb3IoJ2NvbG9yKHNyZ2IgMSAwLjUgMC4yNSAvIDApJywgMC41KSIsICJ1
bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJjdHguZmlsbFN0eWxlIiwgIidjb2xvcihzcmdiIDEgMC41
IDAuMjUgLyAwLjUpJyIpOworCitzaG91bGRCZSgiY3R4LnNldEZpbGxDb2xvcignY29sb3Ioc3Jn
YiAxIDAgMCAvIDApJywgMSkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LmZpbGxTdHls
ZSIsICInY29sb3Ioc3JnYiAxIDAgMCknIik7CisKK3Nob3VsZEJlKCJjdHguc2V0RmlsbENvbG9y
KCdjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUgLyAwLjUpJykiLCAidW5kZWZpbmVkIik7Citz
aG91bGRCZSgiY3R4LmZpbGxTdHlsZSIsICInY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1IC8g
MC41KSciKTsKIAogZGVidWcoIlxuXG51bmRlZmluZWQgc2V0RmlsbENvbG9yKHVucmVzdHJpY3Rl
ZCBmbG9hdCBncmF5TGV2ZWwsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhbHBoYSA9IDEp
XG4iKQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtb3ZlcmxvYWRzLXNl
dFNoYWRvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLW92ZXJsb2Fkcy1zZXRTaGFkb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzQx
NTUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtb3ZlcmxvYWRzLXNldFNoYWRv
dy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5LDYgKzE5LDE2IEBAIFBBU1MgY3R4
LnNldFNoYWRvdygwLCAwLCAwLCAncmVkJywgLjUpIGkKIFBBU1MgY3R4LnNoYWRvd0NvbG9yIGlz
ICdyZ2JhKDI1NSwgMCwgMCwgMC41KScKIFBBU1MgY3R4LnNldFNoYWRvdygwLCAwLCAwLCAncmVk
JywgTmFOKSBpcyB1bmRlZmluZWQKIFBBU1MgY3R4LnNoYWRvd0NvbG9yIGlzICdyZ2JhKDI1NSwg
MCwgMCwgMC41KScKK1BBU1MgY3R4LnNldFNoYWRvdygwLCAwLCAwLCAncmdiYSgyNTUsIDAsIDAs
IDAuNSknLCAxKSBpcyB1bmRlZmluZWQKK1BBU1MgY3R4LnNoYWRvd0NvbG9yIGlzICcjZmYwMDAw
JworUEFTUyBjdHguc2V0U2hhZG93KDAsIDAsIDAsICdjb2xvcihzcmdiIDEgMC41IDAuMjUgLyAw
KScpIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguc2hhZG93Q29sb3IgaXMgJ2NvbG9yKHNyZ2IgMSAw
LjUgMC4yNSAvIDApJworUEFTUyBjdHguc2V0U2hhZG93KDAsIDAsIDAsICdjb2xvcihzcmdiIDEg
MC41IDAuMjUgLyAwKScsIDAuNSkgaXMgdW5kZWZpbmVkCitQQVNTIGN0eC5zaGFkb3dDb2xvciBp
cyAnY29sb3Ioc3JnYiAxIDAuNSAwLjI1IC8gMC41KScKK1BBU1MgY3R4LnNldFNoYWRvdygwLCAw
LCAwLCAnY29sb3Ioc3JnYiAxIDAgMCAvIDApJywgMSkgaXMgdW5kZWZpbmVkCitQQVNTIGN0eC5z
aGFkb3dDb2xvciBpcyAnY29sb3Ioc3JnYiAxIDAgMCknCitQQVNTIGN0eC5zZXRTaGFkb3coMCwg
MCwgMCwgJ2NvbG9yKGRpc3BsYXktcDMgMSAwLjUgMC4yNSAvIDAuNSknKSBpcyB1bmRlZmluZWQK
K1BBU1MgY3R4LnNoYWRvd0NvbG9yIGlzICdjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUgLyAw
LjUpJwogCiAKIHVuZGVmaW5lZCBzZXRTaGFkb3codW5yZXN0cmljdGVkIGZsb2F0IHdpZHRoLCB1
bnJlc3RyaWN0ZWQgZmxvYXQgaGVpZ2h0LCB1bnJlc3RyaWN0ZWQgZmxvYXQgYmx1ciwgdW5yZXN0
cmljdGVkIGZsb2F0IGdyYXlMZXZlbCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFscGhh
ID0gMSkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1vdmVybG9hZHMtc2V0
U2hhZG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFz
LW92ZXJsb2Fkcy1zZXRTaGFkb3cuaHRtbAkocmV2aXNpb24gMjc0MTU1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLW92ZXJsb2Fkcy1zZXRTaGFkb3cuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksMjIgQEAgc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciIsICIncmdi
YSgyNTUsIAogc2hvdWxkQmUoImN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJ3JlZCcsIE5hTikiLCAi
dW5kZWZpbmVkIik7CiBzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIidyZ2JhKDI1NSwgMCwg
MCwgMC41KSciKTsKIAorc2hvdWxkQmUoImN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJ3JnYmEoMjU1
LCAwLCAwLCAwLjUpJywgMSkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnNoYWRvd0Nv
bG9yIiwgIicjZmYwMDAwJyIpOworCitzaG91bGRCZSgiY3R4LnNldFNoYWRvdygwLCAwLCAwLCAn
Y29sb3Ioc3JnYiAxIDAuNSAwLjI1IC8gMCknKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJj
dHguc2hhZG93Q29sb3IiLCAiJ2NvbG9yKHNyZ2IgMSAwLjUgMC4yNSAvIDApJyIpOworCitzaG91
bGRCZSgiY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnY29sb3Ioc3JnYiAxIDAuNSAwLjI1IC8gMCkn
LCAwLjUpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciIsICInY29s
b3Ioc3JnYiAxIDAuNSAwLjI1IC8gMC41KSciKTsKKworc2hvdWxkQmUoImN0eC5zZXRTaGFkb3co
MCwgMCwgMCwgJ2NvbG9yKHNyZ2IgMSAwIDAgLyAwKScsIDEpIiwgInVuZGVmaW5lZCIpOworc2hv
dWxkQmUoImN0eC5zaGFkb3dDb2xvciIsICInY29sb3Ioc3JnYiAxIDAgMCknIik7CisKK3Nob3Vs
ZEJlKCJjdHguc2V0U2hhZG93KDAsIDAsIDAsICdjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUg
LyAwLjUpJykiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIidj
b2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUgLyAwLjUpJyIpOworCisKIGRlYnVnKCJcblxudW5k
ZWZpbmVkIHNldFNoYWRvdyh1bnJlc3RyaWN0ZWQgZmxvYXQgd2lkdGgsIHVucmVzdHJpY3RlZCBm
bG9hdCBoZWlnaHQsIHVucmVzdHJpY3RlZCBmbG9hdCBibHVyLCB1bnJlc3RyaWN0ZWQgZmxvYXQg
Z3JheUxldmVsLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgYWxwaGEgPSAxKVxuIikKIAog
c2hvdWxkQmUoImN0eC5zZXRTaGFkb3coMCwgMCwgMCwgLjI1KSIsICJ1bmRlZmluZWQiKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1vdmVybG9hZHMtc2V0U3Ryb2tlQ29s
b3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1vdmVybG9hZHMtc2V0U3Ryb2tlQ29sb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzQx
NTUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtb3ZlcmxvYWRzLXNldFN0cm9r
ZUNvbG9yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUsMTYgQEAgUEFT
UyBjdHguc2V0U3Ryb2tlQ29sb3IoJ3JlZCcsIC41KSBpcyB1bgogUEFTUyBjdHguc3Ryb2tlU3R5
bGUgaXMgJ3JnYmEoMjU1LCAwLCAwLCAwLjUpJwogUEFTUyBjdHguc2V0U3Ryb2tlQ29sb3IoJ3Jl
ZCcsIE5hTikgaXMgdW5kZWZpbmVkCiBQQVNTIGN0eC5zdHJva2VTdHlsZSBpcyAncmdiYSgyNTUs
IDAsIDAsIDAuNSknCitQQVNTIGN0eC5zZXRTdHJva2VDb2xvcigncmdiYSgyNTUsIDAsIDAsIDAu
NSknLCAxKSBpcyB1bmRlZmluZWQKK1BBU1MgY3R4LnN0cm9rZVN0eWxlIGlzICcjZmYwMDAwJwor
UEFTUyBjdHguc2V0U3Ryb2tlQ29sb3IoJ2NvbG9yKHNyZ2IgMSAwLjUgMC4yNSAvIDApJykgaXMg
dW5kZWZpbmVkCitQQVNTIGN0eC5zdHJva2VTdHlsZSBpcyAnY29sb3Ioc3JnYiAxIDAuNSAwLjI1
IC8gMCknCitQQVNTIGN0eC5zZXRTdHJva2VDb2xvcignY29sb3Ioc3JnYiAxIDAuNSAwLjI1IC8g
MCknLCAwLjUpIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguc3Ryb2tlU3R5bGUgaXMgJ2NvbG9yKHNy
Z2IgMSAwLjUgMC4yNSAvIDAuNSknCitQQVNTIGN0eC5zZXRTdHJva2VDb2xvcignY29sb3Ioc3Jn
YiAxIDAgMCAvIDApJywgMSkgaXMgdW5kZWZpbmVkCitQQVNTIGN0eC5zdHJva2VTdHlsZSBpcyAn
Y29sb3Ioc3JnYiAxIDAgMCknCitQQVNTIGN0eC5zZXRTdHJva2VDb2xvcignY29sb3IoZGlzcGxh
eS1wMyAxIDAuNSAwLjI1IC8gMC41KScpIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguc3Ryb2tlU3R5
bGUgaXMgJ2NvbG9yKGRpc3BsYXktcDMgMSAwLjUgMC4yNSAvIDAuNSknCiAKIAogdW5kZWZpbmVk
IHNldFN0cm9rZUNvbG9yKHVucmVzdHJpY3RlZCBmbG9hdCBncmF5TGV2ZWwsIG9wdGlvbmFsIHVu
cmVzdHJpY3RlZCBmbG9hdCBhbHBoYSA9IDEpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtb3ZlcmxvYWRzLXNldFN0cm9rZUNvbG9yLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLW92ZXJsb2Fkcy1zZXRTdHJva2VDb2xvci5odG1s
CShyZXZpc2lvbiAyNzQxNTUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtb3Zl
cmxvYWRzLXNldFN0cm9rZUNvbG9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDIw
IEBAIHNob3VsZEJlKCJjdHguc3Ryb2tlU3R5bGUiLCAiJ3JnYmEoMjU1LCAKIHNob3VsZEJlKCJj
dHguc2V0U3Ryb2tlQ29sb3IoJ3JlZCcsIE5hTikiLCAidW5kZWZpbmVkIik7CiBzaG91bGRCZSgi
Y3R4LnN0cm9rZVN0eWxlIiwgIidyZ2JhKDI1NSwgMCwgMCwgMC41KSciKTsKIAorc2hvdWxkQmUo
ImN0eC5zZXRTdHJva2VDb2xvcigncmdiYSgyNTUsIDAsIDAsIDAuNSknLCAxKSIsICJ1bmRlZmlu
ZWQiKTsKK3Nob3VsZEJlKCJjdHguc3Ryb2tlU3R5bGUiLCAiJyNmZjAwMDAnIik7CisKK3Nob3Vs
ZEJlKCJjdHguc2V0U3Ryb2tlQ29sb3IoJ2NvbG9yKHNyZ2IgMSAwLjUgMC4yNSAvIDApJykiLCAi
dW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnN0cm9rZVN0eWxlIiwgIidjb2xvcihzcmdiIDEg
MC41IDAuMjUgLyAwKSciKTsKKworc2hvdWxkQmUoImN0eC5zZXRTdHJva2VDb2xvcignY29sb3Io
c3JnYiAxIDAuNSAwLjI1IC8gMCknLCAwLjUpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImN0
eC5zdHJva2VTdHlsZSIsICInY29sb3Ioc3JnYiAxIDAuNSAwLjI1IC8gMC41KSciKTsKKworc2hv
dWxkQmUoImN0eC5zZXRTdHJva2VDb2xvcignY29sb3Ioc3JnYiAxIDAgMCAvIDApJywgMSkiLCAi
dW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnN0cm9rZVN0eWxlIiwgIidjb2xvcihzcmdiIDEg
MCAwKSciKTsKKworc2hvdWxkQmUoImN0eC5zZXRTdHJva2VDb2xvcignY29sb3IoZGlzcGxheS1w
MyAxIDAuNSAwLjI1IC8gMC41KScpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImN0eC5zdHJv
a2VTdHlsZSIsICInY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1IC8gMC41KSciKTsKIAogZGVi
dWcoIlxuXG51bmRlZmluZWQgc2V0U3Ryb2tlQ29sb3IodW5yZXN0cmljdGVkIGZsb2F0IGdyYXlM
ZXZlbCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFscGhhID0gMSlcbiIpCiAKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N2Zy9pbXBvcnQvYW5pbWF0ZS1wc2VydmVycy1ncmFkLTAxLWItbWFudWFsLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L2FuaW1hdGUtcHNlcnZlcnMtZ3JhZC0wMS1iLW1h
bnVhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NDE1NSkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvYW5pbWF0
ZS1wc2VydmVycy1ncmFkLTAxLWItbWFudWFsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTEsNyArMTEsNyBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICAg
IFJlbmRlclNWR0dyYWRpZW50U3RvcCB7c3RvcH0gW29mZnNldD0xLjAwXSBbY29sb3I9I0ZGMDAw
MF0KICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50IHtsaW5lYXJHcmFk
aWVudH0gW2lkPSJNeUdyYWRpZW50MiJdIFtncmFkaWVudFVuaXRzPW9iamVjdEJvdW5kaW5nQm94
XSBbc3RhcnQ9KDAsMCldIFtlbmQ9KDEsMCldCiAgICAgICAgICAgICBSZW5kZXJTVkdHcmFkaWVu
dFN0b3Age3N0b3B9IFtvZmZzZXQ9MC4wMF0gW2NvbG9yPSMwMDgwMDBdCi0gICAgICAgICAgICBS
ZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MS4wMF0gW2NvbG9yPSMwMDgwMDA4
MF0KKyAgICAgICAgICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcCB7c3RvcH0gW29mZnNldD0xLjAw
XSBbY29sb3I9Y29sb3Ioc3JnYiAwIDAuNTAxOTYwOCAwIC8gMC41KV0KICAgICAgICAgICBSZW5k
ZXJTVkdDb250YWluZXIge2d9IGF0ICgwLDApIHNpemUgMHgwCiAgICAgICAgICAgICBSZW5kZXJT
VkdSZXNvdXJjZUxpbmVhckdyYWRpZW50IHtsaW5lYXJHcmFkaWVudH0gW2lkPSJNeUdyYWRpZW50
MyJdIFtncmFkaWVudFVuaXRzPW9iamVjdEJvdW5kaW5nQm94XSBbc3RhcnQ9KDAsMCldIFtlbmQ9
KDEsMCldCiAgICAgICAgICAgICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcCB7c3RvcH0gW29mZnNl
dD0wLjAwXSBbY29sb3I9IzAwODAwMF0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvbWFza2luZy1tYXNrLTAx
LWItbWFudWFsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L21hc2tpbmct
bWFzay0wMS1iLW1hbnVhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NDE1NSkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9p
bXBvcnQvbWFza2luZy1tYXNrLTAxLWItbWFudWFsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTQsNyArMTQsNyBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAg
ICBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIge2RlZnN9IGF0ICgwLDApIHNpemUgMHgwCiAgICAg
ICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50IHtsaW5lYXJHcmFkaWVudH0g
W2lkPSJHcmFkMSJdIFtncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9uVXNlXSBbc3RhcnQ9KDYwLDUw
KV0gW2VuZD0oNjAsMTIwKV0KICAgICAgICAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtz
dG9wfSBbb2Zmc2V0PTAuMDBdIFtjb2xvcj0jRkZGRkZGXQotICAgICAgICAgICAgICBSZW5kZXJT
VkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MS4wMF0gW2NvbG9yPSNGRkZGRkY4MF0KKyAg
ICAgICAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtzdG9wfSBbb2Zmc2V0PTEuMDBdIFtj
b2xvcj1jb2xvcihzcmdiIDEgMSAxIC8gMC41KV0KICAgICAgICAgICBSZW5kZXJTVkdSZWN0IHty
ZWN0fSBhdCAoMTAwLDgzKSBzaXplIDE2N3gxMDEgW2ZpbGw9e1t0eXBlPUxJTkVBUi1HUkFESUVO
VF0gW2lkPSJHcmFkMSJdfV0gW3g9NjAuMDBdIFt5PTUwLjAwXSBbd2lkdGg9MTAwLjAwXSBbaGVp
Z2h0PTYwLjAwXQogICAgICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTAwLDgzKSBzaXpl
IDE2N3gxMDEgW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwRkYwMF19XSBbeD02MC4wMF0g
W3k9NTAuMDBdIFt3aWR0aD0xMDAuMDBdIFtoZWlnaHQ9NjAuMDBdCiAgICAgICAgICAgW21hc2tl
cj0ibWFzazEiXSBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciB7bWFza30gYXQgKDYwLDUwKSBzaXpl
IDEwMHg2MApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9wc2VydmVycy1ncmFkLTA1LWItbWFudWFsLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3BzZXJ2ZXJzLWdyYWQtMDUtYi1tYW51
YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzQxNTUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3BzZXJ2ZXJz
LWdyYWQtMDUtYi1tYW51YWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsx
MCw3IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgUmVuZGVyU1ZHUmVzb3Vy
Y2VMaW5lYXJHcmFkaWVudCB7bGluZWFyR3JhZGllbnR9IFtpZD0iR3JhZDEiXSBbZ3JhZGllbnRV
bml0cz1vYmplY3RCb3VuZGluZ0JveF0gW3N0YXJ0PSgwLDApXSBbZW5kPSgxLDEpXQogICAgICAg
ICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MC4wMF0gW2NvbG9yPSNFRTgy
RUVdCiAgICAgICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcCB7c3RvcH0gW29mZnNldD0wLjIwXSBb
Y29sb3I9IzAwMDBGRjAwXQotICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtv
ZmZzZXQ9MC40MF0gW2NvbG9yPSMwMEZGMDA4MF0KKyAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRT
dG9wIHtzdG9wfSBbb2Zmc2V0PTAuNDBdIFtjb2xvcj1jb2xvcihzcmdiIDAgMSAwIC8gMC41KV0K
ICAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtzdG9wfSBbb2Zmc2V0PTAuNjBdIFtjb2xv
cj0jRkZGRjAwMzNdCiAgICAgICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcCB7c3RvcH0gW29mZnNl
dD0wLjgwXSBbY29sb3I9I0ZGQTUwMENDXQogICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Ag
e3N0b3B9IFtvZmZzZXQ9MS4wMF0gW2NvbG9yPSMwMDAwMDBdCkBAIC0yMSw3ICsyMSw3IEBAIGxh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxH
cmFkaWVudCB7cmFkaWFsR3JhZGllbnR9IFtpZD0iR3JhZDIiXSBbZ3JhZGllbnRVbml0cz11c2Vy
U3BhY2VPblVzZV0gW2NlbnRlcj0oMjQwLDIxMCldIFtmb2NhbD0oMjQwLDIxMCldIFtyYWRpdXM9
MjIwLjAwXSBbZm9jYWxSYWRpdXM9MC4wMF0KICAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9w
IHtzdG9wfSBbb2Zmc2V0PTAuMDBdIFtjb2xvcj0jMDAwMDAwXQogICAgICAgICBSZW5kZXJTVkdH
cmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MC4yMF0gW2NvbG9yPSNGRkZGMDAwMF0KLSAgICAg
ICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtzdG9wfSBbb2Zmc2V0PTAuNDBdIFtjb2xvcj0jRkYw
MDAwODBdCisgICAgICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcCB7c3RvcH0gW29mZnNldD0wLjQw
XSBbY29sb3I9Y29sb3Ioc3JnYiAxIDAgMCAvIDAuNSldCiAgICAgICAgIFJlbmRlclNWR0dyYWRp
ZW50U3RvcCB7c3RvcH0gW29mZnNldD0wLjYwXSBbY29sb3I9IzAwMDBGRjMzXQogICAgICAgICBS
ZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MC44MF0gW2NvbG9yPSNGRkZGRkZD
Q10KICAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtzdG9wfSBbb2Zmc2V0PTEuMDBdIFtj
b2xvcj0jMDA4MDAwXQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3ZnL2ltcG9ydC9wc2VydmVycy1ncmFkLTE4LWItbWFudWFs
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3BzZXJ2ZXJzLWdyYWQtMTgt
Yi1tYW51YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzQxNTUpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdmcvaW1wb3J0L3Bz
ZXJ2ZXJzLWdyYWQtMTgtYi1tYW51YWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
MCw3ICsxMCw3IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgIFJlbmRl
clNWR0dyYWRpZW50U3RvcCB7c3RvcH0gW29mZnNldD0xLjAwXSBbY29sb3I9I0ZGNDQ4OF0KICAg
ICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCB7bGluZWFyR3JhZGllbnR9IFtp
ZD0iTXlHcmFkaWVudDIiXSBbZ3JhZGllbnRVbml0cz1vYmplY3RCb3VuZGluZ0JveF0gW3N0YXJ0
PSgwLDApXSBbZW5kPSgxLDApXQogICAgICAgICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcCB7c3Rv
cH0gW29mZnNldD0wLjAwXSBbY29sb3I9IzAwODAwMF0KLSAgICAgICAgICBSZW5kZXJTVkdHcmFk
aWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MS4wMF0gW2NvbG9yPSMwMDgwMDA4MF0KKyAgICAgICAg
ICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MS4wMF0gW2NvbG9yPWNvbG9y
KHNyZ2IgMCAwLjUwMTk2MDggMCAvIDAuNSldCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlTGlu
ZWFyR3JhZGllbnQge2xpbmVhckdyYWRpZW50fSBbaWQ9Ik15R3JhZGllbnQzIl0gW2dyYWRpZW50
VW5pdHM9b2JqZWN0Qm91bmRpbmdCb3hdIFtzdGFydD0oMCwwKV0gW2VuZD0oMSwwKV0KICAgICAg
ICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MC4wMF0gW2NvbG9yPSMw
MDgwMDBdCiAgICAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtzdG9wfSBbb2Zmc2V0PTEu
MDBdIFtjb2xvcj0jMDAwMDAwXQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9X
M0MtU1ZHLTEuMS9tYXNraW5nLW1hc2stMDEtYi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9XM0MtU1ZHLTEuMS9tYXNraW5nLW1hc2stMDEt
Yi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NDE1NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9zdmcvVzNDLVNWRy0xLjEvbWFza2luZy1tYXNrLTAxLWItZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw3IEBAIGxheWVyIGF0ICgwLDApIHNpemUgNDgweDM2MAog
ICAgICAgICBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIge2RlZnN9IGF0ICgwLDApIHNpemUgMHgw
CiAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCB7bGluZWFyR3JhZGll
bnR9IFtpZD0iR3JhZDEiXSBbZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZV0gW3N0YXJ0PSg2
MCw1MCldIFtlbmQ9KDYwLDEyMCldCiAgICAgICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Ag
e3N0b3B9IFtvZmZzZXQ9MC4wMF0gW2NvbG9yPSNGRkZGRkZdCi0gICAgICAgICAgICBSZW5kZXJT
VkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MS4wMF0gW2NvbG9yPSNGRkZGRkY4MF0KKyAg
ICAgICAgICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcCB7c3RvcH0gW29mZnNldD0xLjAwXSBbY29s
b3I9Y29sb3Ioc3JnYiAxIDEgMSAvIDAuNSldCiAgICAgICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9
IGF0ICg2MCw1MCkgc2l6ZSAxMDB4NjAgW2ZpbGw9e1t0eXBlPUxJTkVBUi1HUkFESUVOVF0gW2lk
PSJHcmFkMSJdfV0gW3g9NjAuMDBdIFt5PTUwLjAwXSBbd2lkdGg9MTAwLjAwXSBbaGVpZ2h0PTYw
LjAwXQogICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDYwLDUwKSBzaXplIDEwMHg2MCBb
ZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDBGRjAwXX1dIFt4PTYwLjAwXSBbeT01MC4wMF0g
W3dpZHRoPTEwMC4wMF0gW2hlaWdodD02MC4wMF0KICAgICAgICAgW21hc2tlcj0ibWFzazEiXSBS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlciB7bWFza30gYXQgKDYwLDUwKSBzaXplIDEwMHg2MApJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9XM0MtU1ZHLTEuMS9wc2VydmVycy1ncmFk
LTA1LWItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9zdmcvVzNDLVNWRy0xLjEvcHNlcnZlcnMtZ3JhZC0wNS1iLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMjc0MTU1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9XM0MtU1ZHLTEuMS9w
c2VydmVycy1ncmFkLTA1LWItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05LDcgKzks
NyBAQCBsYXllciBhdCAoMCwwKSBzaXplIDQ4MHgzNjAKICAgICAgIFJlbmRlclNWR1Jlc291cmNl
TGluZWFyR3JhZGllbnQge2xpbmVhckdyYWRpZW50fSBbaWQ9IkdyYWQxIl0gW2dyYWRpZW50VW5p
dHM9b2JqZWN0Qm91bmRpbmdCb3hdIFtzdGFydD0oMCwwKV0gW2VuZD0oMSwxKV0KICAgICAgICAg
UmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtzdG9wfSBbb2Zmc2V0PTAuMDBdIFtjb2xvcj0jRUU4MkVF
XQogICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MC4yMF0gW2Nv
bG9yPSMwMDAwRkYwMF0KLSAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtzdG9wfSBbb2Zm
c2V0PTAuNDBdIFtjb2xvcj0jMDBGRjAwODBdCisgICAgICAgIFJlbmRlclNWR0dyYWRpZW50U3Rv
cCB7c3RvcH0gW29mZnNldD0wLjQwXSBbY29sb3I9Y29sb3Ioc3JnYiAwIDEgMCAvIDAuNSldCiAg
ICAgICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcCB7c3RvcH0gW29mZnNldD0wLjYwXSBbY29sb3I9
I0ZGRkYwMDMzXQogICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9
MC44MF0gW2NvbG9yPSNGRkE1MDBDQ10KICAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtz
dG9wfSBbb2Zmc2V0PTEuMDBdIFtjb2xvcj0jRkYwMDAwXQpAQCAtMjAsNyArMjAsNyBAQCBsYXll
ciBhdCAoMCwwKSBzaXplIDQ4MHgzNjAKICAgICAgIFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3Jh
ZGllbnQge3JhZGlhbEdyYWRpZW50fSBbaWQ9IkdyYWQyIl0gW2dyYWRpZW50VW5pdHM9dXNlclNw
YWNlT25Vc2VdIFtjZW50ZXI9KDI0MCwyMTApXSBbZm9jYWw9KDI0MCwyMTApXSBbcmFkaXVzPTIy
MC4wMF0gW2ZvY2FsUmFkaXVzPTAuMDBdCiAgICAgICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcCB7
c3RvcH0gW29mZnNldD0wLjAwXSBbY29sb3I9IzAwMDAwMF0KICAgICAgICAgUmVuZGVyU1ZHR3Jh
ZGllbnRTdG9wIHtzdG9wfSBbb2Zmc2V0PTAuMjBdIFtjb2xvcj0jRkZGRjAwMDBdCi0gICAgICAg
IFJlbmRlclNWR0dyYWRpZW50U3RvcCB7c3RvcH0gW29mZnNldD0wLjQwXSBbY29sb3I9I0ZGMDAw
MDgwXQorICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MC40MF0g
W2NvbG9yPWNvbG9yKHNyZ2IgMSAwIDAgLyAwLjUpXQogICAgICAgICBSZW5kZXJTVkdHcmFkaWVu
dFN0b3Age3N0b3B9IFtvZmZzZXQ9MC42MF0gW2NvbG9yPSMwMDAwRkYzM10KICAgICAgICAgUmVu
ZGVyU1ZHR3JhZGllbnRTdG9wIHtzdG9wfSBbb2Zmc2V0PTAuODBdIFtjb2xvcj0jRkZGRkZGQ0Nd
CiAgICAgICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcCB7c3RvcH0gW29mZnNldD0xLjAwXSBbY29s
b3I9IzAwODAwMF0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL2Rv
bWluYW50LWJhc2VsaW5lLWhhbmdpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL2RvbWluYW50LWJhc2VsaW5lLWhhbmdpbmct
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzQxNTUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2N1c3RvbS9kb21pbmFudC1iYXNlbGluZS1oYW5naW5nLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA0MDB4NDAwCiAg
IFJlbmRlclNWR1Jvb3Qge3N2Z30gYXQgKDAsMCkgc2l6ZSA0MDB4NDAwCiAgICAgUmVuZGVyU1ZH
SGlkZGVuQ29udGFpbmVyIHtkZWZzfSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgUmVuZGVyU1ZH
UmVzb3VyY2VMaW5lYXJHcmFkaWVudCB7bGluZWFyR3JhZGllbnR9IFtpZD0iZ3JhZGllbnQiXSBb
Z3JhZGllbnRVbml0cz1vYmplY3RCb3VuZGluZ0JveF0gW3N0YXJ0PSgwLDApXSBbZW5kPSgwLDEp
XQotICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MC4wMF0gW2Nv
bG9yPSNGRjcyQjQ4MF0KKyAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtzdG9wfSBbb2Zm
c2V0PTAuMDBdIFtjb2xvcj1jb2xvcihzcmdiIDEgMC40NDcwNTg4MyAwLjcwNTg4MjQgLyAwLjUp
XQogICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MS4wMF0gW2Nv
bG9yPSNGRjAwN0JdCiAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50IHtsaW5l
YXJHcmFkaWVudH0gW2lkPSJoX3N0cm9rZV9ncmFkaWVudCJdIFtncmFkaWVudFVuaXRzPW9iamVj
dEJvdW5kaW5nQm94XSBbc3RhcnQ9KDAsMCldIFtlbmQ9KDEsMCldCiAgICAgICAgIFJlbmRlclNW
R0dyYWRpZW50U3RvcCB7c3RvcH0gW29mZnNldD0wLjAwXSBbY29sb3I9IzAwMDAwMF0KSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL3RleHQtcm90YXRlZC1ncmFkaWVu
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2
Zy9jdXN0b20vdGV4dC1yb3RhdGVkLWdyYWRpZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc0
MTU1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vdGV4dC1yb3RhdGVk
LWdyYWRpZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAgbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIHtk
ZWZzfSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFk
aWVudCB7bGluZWFyR3JhZGllbnR9IFtpZD0iZyJdIFtncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9u
VXNlXSBbc3RhcnQ9KDAsMCldIFtlbmQ9KDAsNjAwKV0KICAgICAgICAgUmVuZGVyU1ZHR3JhZGll
bnRTdG9wIHtzdG9wfSBbb2Zmc2V0PTAuMDBdIFtjb2xvcj0jRkYwMDAwXQotICAgICAgICBSZW5k
ZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MS4wMF0gW2NvbG9yPSMwMDAwMDA4MF0K
KyAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtzdG9wfSBbb2Zmc2V0PTEuMDBdIFtjb2xv
cj1jb2xvcihzcmdiIDAgMCAwIC8gMC41KV0KICAgICBSZW5kZXJTVkdUZXh0IHt0ZXh0fSBhdCAo
MCwxMikgc2l6ZSA2Mzl4MjMgY29udGFpbnMgMSBjaHVuayhzKQogICAgICAgUmVuZGVyU1ZHSW5s
aW5lVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNjM5eDIzCiAgICAgICAgIGNodW5rIDEgdGV4
dCBydW4gMSBhdCAoMC4wMCwzMC4wMCkgc3RhcnRPZmZzZXQgMCBlbmRPZmZzZXQgODEgd2lkdGgg
NjM4LjE0OiAiWW91IHNob3VsZCBzZWUgcmVkLCBibGFjaywgcmVkLCBibGFjayB0ZXh0IGFsbCBy
b3RhdGVkIDQ1ZGVnLCB0cmFuc2xhdGVkIGJ5IDEwMHB4IgpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL3N2Zy90cmFuc2Zvcm1zL3RleHQtd2l0aC1tYXNrLXdpdGgtc3ZnLXRyYW5zZm9y
bS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2
Zy90cmFuc2Zvcm1zL3RleHQtd2l0aC1tYXNrLXdpdGgtc3ZnLXRyYW5zZm9ybS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDI3NDE1NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvdHJh
bnNmb3Jtcy90ZXh0LXdpdGgtbWFzay13aXRoLXN2Zy10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw3IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAogICAgICAgICBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIge2RlZnN9IGF0ICgwLDApIHNpemUg
MHgwCiAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCB7bGluZWFyR3Jh
ZGllbnR9IFtpZD0iR3JhZDEiXSBbZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZV0gW3N0YXJ0
PSg2MCw1MCldIFtlbmQ9KDYwLDEyMCldCiAgICAgICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0
b3Age3N0b3B9IFtvZmZzZXQ9MC4wMF0gW2NvbG9yPSNGRkZGRkZdCi0gICAgICAgICAgICBSZW5k
ZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MS4wMF0gW2NvbG9yPSNGRkZGRkY4MF0K
KyAgICAgICAgICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcCB7c3RvcH0gW29mZnNldD0xLjAwXSBb
Y29sb3I9Y29sb3Ioc3JnYiAxIDEgMSAvIDAuNSldCiAgICAgICAgIFJlbmRlclNWR1JlY3Qge3Jl
Y3R9IGF0ICg4MCwxNDQpIHNpemUgOTh4ODYgW2ZpbGw9e1t0eXBlPUxJTkVBUi1HUkFESUVOVF0g
W2lkPSJHcmFkMSJdfV0gW3g9NjAuMDBdIFt5PTUwLjAwXSBbd2lkdGg9MTAwLjAwXSBbaGVpZ2h0
PTYwLjAwXQogICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDgwLDE0NCkgc2l6ZSA5OHg4
NiBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDBGRjAwXX1dIFt4PTYwLjAwXSBbeT01MC4w
MF0gW3dpZHRoPTEwMC4wMF0gW2hlaWdodD02MC4wMF0KICAgICAgICAgW21hc2tlcj0ibWFzazEi
XSBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciB7bWFza30gYXQgKDYwLDUwKSBzaXplIDEwMHg2MApJ
bmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9ncmFkaWVudC1zdHJva2Utd2lkdGgtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vZ3JhZGllbnQtc3Ry
b2tlLXdpZHRoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc0MTU1KQorKysgTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9ncmFkaWVudC1zdHJva2Utd2lkdGgtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC01LDEwICs1LDEwIEBAIGxheWVyIGF0ICgwLDApIHNpemUgMjAweDUwMAogICAgIFJl
bmRlclNWR0hpZGRlbkNvbnRhaW5lciB7ZGVmc30gYXQgKDAsMCkgc2l6ZSAweDAKICAgICAgIFJl
bmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQge2xpbmVhckdyYWRpZW50fSBbaWQ9ImJsYWNr
MndoaXRlIl0gW2dyYWRpZW50VW5pdHM9b2JqZWN0Qm91bmRpbmdCb3hdIFtzdGFydD0oMCwwKV0g
W2VuZD0oMSwwKV0KICAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtzdG9wfSBbb2Zmc2V0
PTAuMDBdIFtjb2xvcj0jMDAwMDAwXQotICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0
b3B9IFtvZmZzZXQ9MS4wMF0gW2NvbG9yPSMwMDAwMDA0RF0KKyAgICAgICAgUmVuZGVyU1ZHR3Jh
ZGllbnRTdG9wIHtzdG9wfSBbb2Zmc2V0PTEuMDBdIFtjb2xvcj1jb2xvcihzcmdiIDAgMCAwIC8g
MC4zKV0KICAgICAgIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQge2xpbmVhckdyYWRp
ZW50fSBbaWQ9InJlZC1ncmFkIl0gW2dyYWRpZW50VW5pdHM9b2JqZWN0Qm91bmRpbmdCb3hdIFtz
dGFydD0oMCwwKV0gW2VuZD0oMSwwKV0KICAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtz
dG9wfSBbb2Zmc2V0PTAuMDBdIFtjb2xvcj0jRDc0MzNDXQotICAgICAgICBSZW5kZXJTVkdHcmFk
aWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MS4wMF0gW2NvbG9yPSNCRDFGMTg0NV0KKyAgICAgICAg
UmVuZGVyU1ZHR3JhZGllbnRTdG9wIHtzdG9wfSBbb2Zmc2V0PTEuMDBdIFtjb2xvcj1jb2xvcihz
cmdiIDAuNzQxMTc2NSAwLjEyMTU2ODYzIDAuMDk0MTE3NjUgLyAwLjI3KV0KICAgICAgIFJlbmRl
clNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQge3JhZGlhbEdyYWRpZW50fSBbaWQ9InJlZC1yYWRp
YWwtZ3JhZCJdIFtncmFkaWVudFVuaXRzPW9iamVjdEJvdW5kaW5nQm94XSBbY2VudGVyPSgwLjUw
LDAuNTApXSBbZm9jYWw9KDAuNTAsMC41MCldIFtyYWRpdXM9MC41MF0gW2ZvY2FsUmFkaXVzPTAu
MDBdCiAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50IHtsaW5lYXJHcmFkaWVu
dH0gW2lkPSJib3JkZXItZ3JhZCJdIFtncmFkaWVudFVuaXRzPW9iamVjdEJvdW5kaW5nQm94XSBb
c3RhcnQ9KDAuMDUsMC45NSldIFtlbmQ9KDAuOTUsMC4wNSldCiAgICAgUmVuZGVyU1ZHRWxsaXBz
ZSB7Y2lyY2xlfSBhdCAoMCwwKSBzaXplIDIwMHg1MDAgW3N0cm9rZT17W3R5cGU9TElORUFSLUdS
QURJRU5UXSBbaWQ9ImJvcmRlci1ncmFkIl0gW3N0cm9rZSB3aWR0aD0xMC4wMF19XSBbZmlsbD17
W3R5cGU9UkFESUFMLUdSQURJRU5UXSBbaWQ9InJlZC1yYWRpYWwtZ3JhZCJdfV0gW2N4PTEwMC4w
MF0gW2N5PTEwMC4wMF0gW3I9NTAuMDBdCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2pz
LXVwZGF0ZS1ncmFkaWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9qcy11cGRhdGUtZ3JhZGllbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzQx
NTUpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2pzLXVwZGF0ZS1ncmFkaWVudC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIGxheWVyIGF0ICgwLDApIHNpemUg
NDUweDQ1MAogICBSZW5kZXJTVkdSb290IHtzdmd9IGF0ICgxMCwxMCkgc2l6ZSA0MzB4MTcwCiAg
ICAgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIHtkZWZzfSBhdCAoMCwwKSBzaXplIDB4MAogICAg
ICAgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCB7bGluZWFyR3JhZGllbnR9IFtpZD0i
R3JhZGllbnQiXSBbZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZV0gW3N0YXJ0PSgxNTAsMTAp
XSBbZW5kPSg0NDAsMTApXQotICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtv
ZmZzZXQ9MC4zMF0gW2NvbG9yPSMwMDgwMDA4MF0KKyAgICAgICAgUmVuZGVyU1ZHR3JhZGllbnRT
dG9wIHtzdG9wfSBbb2Zmc2V0PTAuMzBdIFtjb2xvcj1jb2xvcihzcmdiIDAgMC41MDE5NjA4IDAg
LyAwLjUpXQogICAgICAgICBSZW5kZXJTVkdHcmFkaWVudFN0b3Age3N0b3B9IFtvZmZzZXQ9MS4w
MF0gW2NvbG9yPSNGRjAwMDBdCiAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDEwLDEwKSBz
aXplIDQzMHg4MCBbZmlsbD17W3R5cGU9TElORUFSLUdSQURJRU5UXSBbaWQ9IkdyYWRpZW50Il19
XSBbeD0xMC4wMF0gW3k9MTAuMDBdIFt3aWR0aD00MzAuMDBdIFtoZWlnaHQ9ODAuMDBdCiAgICAg
UmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDEwLDEwMCkgc2l6ZSA0MzB4ODAgW2ZpbGw9e1t0eXBl
PUxJTkVBUi1HUkFESUVOVF0gW2lkPSJHcmFkaWVudCJdfV0gW3g9MTAuMDBdIFt5PTEwMC4wMF0g
W3dpZHRoPTQzMC4wMF0gW2hlaWdodD04MC4wMF0K
</data>
<flag name="review"
          id="442034"
          type_id="1"
          status="?"
          setter="sam"
    />
    <flag name="commit-queue"
          id="442045"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>