<?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>224512</bug_id>
          
          <creation_ts>2021-04-13 14:58:09 -0700</creation_ts>
          <short_desc>Use range-for loop in target contrast selection to simplify/improve code readability</short_desc>
          <delta_ts>2021-04-14 17:17:33 -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>RESOLVED</bug_status>
          <resolution>FIXED</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>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1749884</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-13 14:58:09 -0700</bug_when>
    <thetext>Use range-for loop in target contrast selection to simplify/improve code readability</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749885</commentid>
    <comment_count>1</comment_count>
      <attachid>425920</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-13 15:00:13 -0700</bug_when>
    <thetext>Created attachment 425920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749886</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-13 15:00:53 -0700</bug_when>
    <thetext>Couldn&apos;t work out a clear way to use std::max_element without duplicating luminance calculations or some ugly gymnastics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749922</commentid>
    <comment_count>3</comment_count>
      <attachid>425920</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-13 16:19:20 -0700</bug_when>
    <thetext>Comment on attachment 425920
Patch

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

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1512
&gt; +static Color selectFirstColorThatMeetsOrExceedsTargetContrast(const Color&amp; originBackgroundColor, Vector&lt;Color&gt;&amp;&amp; colorsToCompareAgainst, double targetContrast)

Annoying that this is double and the return value of WebCore::contrastRatio is float.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1519
&gt;              return color;

Could use WTFMove(color) here since the vector is an rvalue reference. I presume that is why we wanted to pass ownership?

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1533
&gt; +    auto* colorWithHigestContrastRatio = &amp;colorsToCompareAgainst[0];

Just noticed &quot;higest&quot;.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1543
&gt; +    return *colorWithHigestContrastRatio;

Could use WTFMove(*colorWithHighestContrastRatio) here since the vector is an rvalue reference. I presume that is why we wanted to pass ownership?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749926</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-13 16:27:12 -0700</bug_when>
    <thetext>Separately looked at callers of contrastRatio. Noticed this:

    // Uses WCAG 2.0 definition of legibility: contrast ratio of 4.5:1 or greater.
    // https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast
    return Color::contrastRatio(textColor, backgroundColor) &gt; 4.5;

Comment says &gt;=, code says &gt;. And contrastRatio returns float, but we compare with a double.

Also not sure that contrastRatio should be a static member of the Color class. Just overload it for Color arguments but keep it at the WebCore level since callOnUnderlyingType is a public member function template.

Also don’t need to write WebCore::contrastRatio in most places. Just contrastRatio will do. Also don’t need a local variable named contrastRatio in selectFirstColorThatMeetsOrExceedsTargetContrast; local is only used once.

Also could use the phrase &quot;highest contrast&quot; or &quot;greatest contrast&quot; instead of &quot;highest contrast ratio&quot; to keep variable names smaller.

Also the implementation of contrast ratio converts from float to double and back because of the use of &quot;0.05&quot; instead of &quot;0.05f&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749955</commentid>
    <comment_count>5</comment_count>
      <attachid>425937</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-13 17:55:14 -0700</bug_when>
    <thetext>Created attachment 425937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749956</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-13 17:55:34 -0700</bug_when>
    <thetext>Address more feedback in this last one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749958</commentid>
    <comment_count>7</comment_count>
      <attachid>425939</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-13 17:56:32 -0700</bug_when>
    <thetext>Created attachment 425939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749963</commentid>
    <comment_count>8</comment_count>
      <attachid>425939</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-13 18:16:09 -0700</bug_when>
    <thetext>Comment on attachment 425939
Patch

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

&gt; Source/WebCore/rendering/TextPaintStyle.cpp:66
&gt;      // Uses the WCAG 2.0 definition of legibility: a contrast ratio of 4.5:1 or greater.
&gt;      // https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast
&gt; -    return Color::contrastRatio(textColor, backgroundColor) &gt; 4.5;
&gt; +    return contrastRatio(textColor, backgroundColor) &gt; 4.5;

Comment says &gt;=, code still says just &gt;. I know this is floating point, so the difference is infinitesimal, but still ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750138</commentid>
    <comment_count>9</comment_count>
      <attachid>425990</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-14 08:58:08 -0700</bug_when>
    <thetext>Created attachment 425990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750151</commentid>
    <comment_count>10</comment_count>
      <attachid>425990</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-14 09:17:19 -0700</bug_when>
    <thetext>Comment on attachment 425990
Patch

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

Really like these refinements. And I do have a parting shot.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1514
&gt; -static Color selectFirstColorThatMeetsOrExceedsTargetContrast(const Color&amp; originBackgroundColor, const Vector&lt;Color&gt;&amp; colorsToCompareAgainst, double targetContrast)
&gt; +static Color selectFirstColorThatMeetsOrExceedsTargetContrast(const Color&amp; originBackgroundColor, Vector&lt;Color&gt;&amp;&amp; colorsToCompareAgainst, double targetContrast)
&gt;  {
&gt;      auto originBackgroundColorLuminance = originBackgroundColor.luminance();

Too late for this patch, and eventually we hit diminishing returns, but please indulge me with one more thought from the &quot;Darin coding manual of style&quot;: The names here are too long.

The function uses &quot;origin background color&quot; as an argument name; that is unmotivated. This function is not about &quot;origins&quot; so the word origin is intruding from the context where the function is used, not so appropriate within the function itself, unless something about the function was truly related to the notion of an origin.

And this local variable hardly needs so many words in its name given the context of this short function. I would probably call it &quot;backgroundLuminance&quot;, or if no one was watching me and I left to my own devices I might even call it &quot;luminance&quot; (and be objectively wrong).

I feel better about &quot;colorsToCompareAgainst&quot;; additional context in that name seems welcome even for this short function. But note that we not only *compare* against those colors but rather we *select* from among them, which explains why this function takes ownership. So even that name might be refined. I might name that foregroundColors or foregroundColorCandidates.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1528
&gt; +static Color selectFirstColorWithHighestContrast(const Color&amp; originBackgroundColor, Vector&lt;Color&gt;&amp;&amp; colorsToCompareAgainst)

Same naming issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750211</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-14 10:44:51 -0700</bug_when>
    <thetext>Found 1 new test failure: webrtc/peerconnection-new-candidate-page-cache.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750301</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-14 13:00:26 -0700</bug_when>
    <thetext>Found 1 new test failure: http/tests/webgl/1.0.2/origin-clean-conformance.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750420</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-14 17:15:12 -0700</bug_when>
    <thetext>Committed r275981 (236533@main): &lt;https://commits.webkit.org/236533@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425990.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750422</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-14 17:17:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/76673550&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425920</attachid>
            <date>2021-04-13 15:00:13 -0700</date>
            <delta_ts>2021-04-13 17:55:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224512-20210413150012.patch</filename>
            <type>text/plain</type>
            <size>4859</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA0LTEzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgcmFuZ2UtZm9yIGxvb3AgaW4g
dGFyZ2V0IGNvbnRyYXN0IHNlbGVjdGlvbiB0byBzaW1wbGlmeS9pbXByb3ZlIGNvZGUgcmVhZGFi
aWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NDUxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHJlc3Mgc29tZSBhZGRpdGlvbmFsIHBvc3QgbGFuZGluZyBmZWVkYmFjayBmcm9tIERhcmluLgor
CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpzZWxlY3RGaXJzdENvbG9y
VGhhdE1lZXRzT3JFeGNlZWRzVGFyZ2V0Q29udHJhc3QpOgorICAgICAgICBDb252ZXJ0IGNvbG9y
c1RvQ29tcGFyZUFnYWluc3QgdG8gYW4gci12YWx1ZSBzaW5jZSB2ZWN0b3IgaXMgbmV2ZXIgdXNl
ZCBhZnRlcgorICAgICAgICBjYWxsaW5nIHRoaXMuCisKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5UGFyc2VySGVscGVyczo6c2VsZWN0Rmlyc3RDb2xvcldpdGhIaWdoZXN0Q29udHJhc3Qp
OgorICAgICAgICBDb252ZXJ0IGNvbG9yc1RvQ29tcGFyZUFnYWluc3QgdG8gYW4gci12YWx1ZSBz
aW5jZSB2ZWN0b3IgaXMgbmV2ZXIgdXNlZCBhZnRlcgorICAgICAgICBjYWxsaW5nIHRoaXMuIEFs
c28sIHN3aXRjaCB0byBhIHJhbmdlLWZvciBsb29wIHRvIGFpZCByZWFkYWJpbGl0eS4KKworICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZUNvbG9yQ29udHJh
c3RGdW5jdGlvblBhcmFtZXRlcnMpOgorICAgICAgICBNb3ZlIGNvbG9yc1RvQ29tcGFyZUFnYWlu
c3QgdG8gdGhlIHNlbGVjdCBmdW5jdGlvbnMuCisKIDIwMjEtMDQtMTMgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEaXNhYmxlIFlvdVR1YmUg
Rmxhc2ggYW5kIFF1aWNrVGltZSBwbHVnIGluIHJlcGxhY2VtZW50cyBvbiBpT1MKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVs
cGVycy5jcHAJKHJldmlzaW9uIDI3NTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwOSw3ICsx
NTA5LDcgQEAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3JGdW5jdGlvblBhcmFtZXRlcgogICAgIHJl
dHVybiBjb2xvcjsKIH0KIAotc3RhdGljIENvbG9yIHNlbGVjdEZpcnN0Q29sb3JUaGF0TWVldHNP
ckV4Y2VlZHNUYXJnZXRDb250cmFzdChjb25zdCBDb2xvciYgb3JpZ2luQmFja2dyb3VuZENvbG9y
LCBjb25zdCBWZWN0b3I8Q29sb3I+JiBjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0LCBkb3VibGUgdGFy
Z2V0Q29udHJhc3QpCitzdGF0aWMgQ29sb3Igc2VsZWN0Rmlyc3RDb2xvclRoYXRNZWV0c09yRXhj
ZWVkc1RhcmdldENvbnRyYXN0KGNvbnN0IENvbG9yJiBvcmlnaW5CYWNrZ3JvdW5kQ29sb3IsIFZl
Y3RvcjxDb2xvcj4mJiBjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0LCBkb3VibGUgdGFyZ2V0Q29udHJh
c3QpCiB7CiAgICAgYXV0byBvcmlnaW5CYWNrZ3JvdW5kQ29sb3JMdW1pbmFuY2UgPSBvcmlnaW5C
YWNrZ3JvdW5kQ29sb3IubHVtaW5hbmNlKCk7CiAKQEAgLTE1MTgsNyArMTUxOCw3IEBAIHN0YXRp
YyBDb2xvciBzZWxlY3RGaXJzdENvbG9yVGhhdE1lZXRzT3IKICAgICAgICAgaWYgKGNvbnRyYXN0
UmF0aW8gPj0gdGFyZ2V0Q29udHJhc3QpCiAgICAgICAgICAgICByZXR1cm4gY29sb3I7CiAgICAg
fQotICAgIAorCiAgICAgLy8gSWYgdGhlcmUgaXMgYSB0YXJnZXQgY29udHJhc3QsIGFuZCB0aGUg
ZW5kIG9mIHRoZSBsaXN0IGlzIHJlYWNoZWQgd2l0aG91dCBtZWV0aW5nIHRoYXQgdGFyZ2V0LAog
ICAgIC8vIGVpdGhlciB3aGl0ZSBvciBibGFjayBpcyByZXR1cm5lZCwgd2hpY2hldmVyIGhhcyB0
aGUgaGlnaGVyIGNvbnRyYXN0LgogICAgIGF1dG8gY29udHJhc3RSYXRpb1dpdGhXaGl0ZSA9IFdl
YkNvcmU6OmNvbnRyYXN0UmF0aW8ob3JpZ2luQmFja2dyb3VuZENvbG9yTHVtaW5hbmNlLCAxLjBm
KTsKQEAgLTE1MjYsMjEgKzE1MjYsMjEgQEAgc3RhdGljIENvbG9yIHNlbGVjdEZpcnN0Q29sb3JU
aGF0TWVldHNPcgogICAgIHJldHVybiBjb250cmFzdFJhdGlvV2l0aFdoaXRlID4gY29udHJhc3RS
YXRpb1dpdGhCbGFjayA/IENvbG9yOjp3aGl0ZSA6IENvbG9yOjpibGFjazsKIH0KIAotc3RhdGlj
IENvbG9yIHNlbGVjdEZpcnN0Q29sb3JXaXRoSGlnaGVzdENvbnRyYXN0KGNvbnN0IENvbG9yJiBv
cmlnaW5CYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IFZlY3RvcjxDb2xvcj4mIGNvbG9yc1RvQ29tcGFy
ZUFnYWluc3QpCitzdGF0aWMgQ29sb3Igc2VsZWN0Rmlyc3RDb2xvcldpdGhIaWdoZXN0Q29udHJh
c3QoY29uc3QgQ29sb3ImIG9yaWdpbkJhY2tncm91bmRDb2xvciwgVmVjdG9yPENvbG9yPiYmIGNv
bG9yc1RvQ29tcGFyZUFnYWluc3QpCiB7CiAgICAgYXV0byBvcmlnaW5CYWNrZ3JvdW5kQ29sb3JM
dW1pbmFuY2UgPSBvcmlnaW5CYWNrZ3JvdW5kQ29sb3IubHVtaW5hbmNlKCk7CiAKLSAgICBzaXpl
X3QgaW5kZXhPZkNvbG9yV2l0aEhpZ2VzdENvbnRyYXN0UmF0aW8gPSAwOworICAgIGF1dG8qIGNv
bG9yV2l0aEhpZ2VzdENvbnRyYXN0UmF0aW8gPSAmY29sb3JzVG9Db21wYXJlQWdhaW5zdFswXTsK
ICAgICBmbG9hdCBoaWdoZXN0Q29udHJhc3RSYXRpb1NvRmFyID0gMDsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNvbG9yc1RvQ29tcGFyZUFnYWluc3Quc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgYXV0byBjb250cmFzdFJhdGlvID0gV2ViQ29yZTo6Y29udHJhc3RSYXRpbyhvcmlnaW5CYWNr
Z3JvdW5kQ29sb3JMdW1pbmFuY2UsIGNvbG9yc1RvQ29tcGFyZUFnYWluc3RbaV0ubHVtaW5hbmNl
KCkpOworICAgIGZvciAoYXV0byYgY29sb3IgOiBjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0KSB7Cisg
ICAgICAgIGF1dG8gY29udHJhc3RSYXRpbyA9IFdlYkNvcmU6OmNvbnRyYXN0UmF0aW8ob3JpZ2lu
QmFja2dyb3VuZENvbG9yTHVtaW5hbmNlLCBjb2xvci5sdW1pbmFuY2UoKSk7CiAgICAgICAgIGlm
IChjb250cmFzdFJhdGlvID4gaGlnaGVzdENvbnRyYXN0UmF0aW9Tb0ZhcikgewogICAgICAgICAg
ICAgaGlnaGVzdENvbnRyYXN0UmF0aW9Tb0ZhciA9IGNvbnRyYXN0UmF0aW87Ci0gICAgICAgICAg
ICBpbmRleE9mQ29sb3JXaXRoSGlnZXN0Q29udHJhc3RSYXRpbyA9IGk7CisgICAgICAgICAgICBj
b2xvcldpdGhIaWdlc3RDb250cmFzdFJhdGlvID0gJmNvbG9yOwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIGNvbG9yc1RvQ29tcGFyZUFnYWluc3RbaW5kZXhPZkNvbG9yV2l0aEhpZ2Vz
dENvbnRyYXN0UmF0aW9dOworICAgIHJldHVybiAqY29sb3JXaXRoSGlnZXN0Q29udHJhc3RSYXRp
bzsKIH0KIAogc3RhdGljIENvbG9yIHBhcnNlQ29sb3JDb250cmFzdEZ1bmN0aW9uUGFyYW1ldGVy
cyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29u
dGV4dCkKQEAgLTE1OTAsMTEgKzE1OTAsMTEgQEAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3JDb250
cmFzdEZ1bmN0aW9uUAogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgCiAgICAgICAg
IC8vIFdoZW4gYSB0YXJnZXQgY29uc3Rhc3QgaXMgc3BlY2lmaWVkLCB3ZSBzZWxlY3QgInRoZSBm
aXJzdCBjb2xvciBjb2xvciB0byBtZWV0IG9yIGV4Y2VlZCB0aGUgdGFyZ2V0IGNvbnRyYXN0LiIK
LSAgICAgICAgcmV0dXJuIHNlbGVjdEZpcnN0Q29sb3JUaGF0TWVldHNPckV4Y2VlZHNUYXJnZXRD
b250cmFzdChvcmlnaW5CYWNrZ3JvdW5kQ29sb3IsIGNvbG9yc1RvQ29tcGFyZUFnYWluc3QsICp0
YXJnZXRDb250cmFzdCk7CisgICAgICAgIHJldHVybiBzZWxlY3RGaXJzdENvbG9yVGhhdE1lZXRz
T3JFeGNlZWRzVGFyZ2V0Q29udHJhc3Qob3JpZ2luQmFja2dyb3VuZENvbG9yLCBXVEZNb3ZlKGNv
bG9yc1RvQ29tcGFyZUFnYWluc3QpLCAqdGFyZ2V0Q29udHJhc3QpOwogICAgIH0KIAogICAgIC8v
IFdoZW4gYSB0YXJnZXQgY29uc3Rhc3QgaXMgTk9UIHNwZWNpZmllZCwgd2Ugc2VsZWN0ICJ0aGUg
Zmlyc3QgY29sb3Igd2l0aCB0aGUgaGlnaGVzdCBjb250cmFzdCB0byB0aGUgc2luZ2xlIGNvbG9y
LiIKLSAgICByZXR1cm4gc2VsZWN0Rmlyc3RDb2xvcldpdGhIaWdoZXN0Q29udHJhc3Qob3JpZ2lu
QmFja2dyb3VuZENvbG9yLCBjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0KTsKKyAgICByZXR1cm4gc2Vs
ZWN0Rmlyc3RDb2xvcldpdGhIaWdoZXN0Q29udHJhc3Qob3JpZ2luQmFja2dyb3VuZENvbG9yLCBX
VEZNb3ZlKGNvbG9yc1RvQ29tcGFyZUFnYWluc3QpKTsKIH0KIAogZW51bSBjbGFzcyBDb2xvck1p
eENvbG9yU3BhY2Ugewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425937</attachid>
            <date>2021-04-13 17:55:14 -0700</date>
            <delta_ts>2021-04-13 17:56:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224512-20210413175513.patch</filename>
            <type>text/plain</type>
            <size>35399</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDIxLTA0LTEzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgcmFuZ2UtZm9yIGxvb3AgaW4g
dGFyZ2V0IGNvbnRyYXN0IHNlbGVjdGlvbiB0byBzaW1wbGlmeS9pbXByb3ZlIGNvZGUgcmVhZGFi
aWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NDUxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHJlc3Mgc29tZSBhZGRpdGlvbmFsIHBvc3QgbGFuZGluZyBmZWVkYmFjayBmcm9tIERhcmluLgor
CisgICAgICAgIC0gVXNlIHJhbmdlLWZvciBsb29wIGluIHRhcmdldCBjb250cmFzdCBzZWxlY3Rp
b24uCisgICAgICAgIC0gVXNlIGRvdWJsZSB0byByZXByZXNlbnQgbHVtaW5hbmNlLCBsaWdodG5l
c3MgYW5kIGNvbnRyYXN0IGV2ZXJ5d2hlcmUuCisgICAgICAgICAgVGhpcyBhdm9pZCB1bm5lY2Vz
c2FyeSBjb252ZXJzaW9ucyB0byBhbmQgZnJvbSBmbG9hdC4KKyAgICAgICAgLSBSZW5hbWUgQ29s
b3I6OmNvbnRyYXN0UmF0aW8oQ29sb3IsIENvbG9yKSB0byBqdXN0IGNvbnRyYXN0UmF0aW8oQ29s
b3IsIENvbG9yKQorICAgICAgICAgIGFuZCBtb3ZlIGl0IENvbG9yTHVtaW5hbmNlLmgvY3BwIHdp
dGggdGhlIG90aGVyIGNvbnRyYXN0UmF0aW8gb3ZlcmxvYWRzLgorCisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBBZGQgQ29sb3JMdW1pbmFuY2UuY3BwCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnM6OnNlbGVjdEZpcnN0Q29sb3JUaGF0TWVldHNPckV4Y2VlZHNUYXJnZXRDb250
cmFzdCk6CisgICAgICAgIENvbnZlcnQgY29sb3JzVG9Db21wYXJlQWdhaW5zdCB0byBhbiByLXZh
bHVlIHNpbmNlIHZlY3RvciBpcyBuZXZlciB1c2VkIGFmdGVyCisgICAgICAgIGNhbGxpbmcgdGhp
cy4KKworICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpzZWxlY3RG
aXJzdENvbG9yV2l0aEhpZ2hlc3RDb250cmFzdCk6CisgICAgICAgIENvbnZlcnQgY29sb3JzVG9D
b21wYXJlQWdhaW5zdCB0byBhbiByLXZhbHVlIHNpbmNlIHZlY3RvciBpcyBuZXZlciB1c2VkIGFm
dGVyCisgICAgICAgIGNhbGxpbmcgdGhpcy4gQWxzbywgc3dpdGNoIHRvIGEgcmFuZ2UtZm9yIGxv
b3AgdG8gYWlkIHJlYWRhYmlsaXR5LgorCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnM6OnBhcnNlQ29sb3JDb250cmFzdEZ1bmN0aW9uUGFyYW1ldGVycyk6CisgICAg
ICAgIE1vdmUgY29sb3JzVG9Db21wYXJlQWdhaW5zdCB0byB0aGUgc2VsZWN0IGZ1bmN0aW9ucy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmxpZ2h0bmVz
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bHVtaW5hbmNlIGNvbnN0KToKKyAg
ICAgICAgVXNlIGRvdWJsZSB0byByZXByZXNlbnQgbGlnaHRuZXNzIGFuZCBsdW1pbmFuY2UuCisK
KyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpjb250cmFzdFJhdGlvKTogRGVsZXRlZC4KKyAgICAg
ICAgTW92ZWQgdG8gQ29sb3JMdW1pbmFuY2UuaC9jcHAKKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yTHVtaW5hbmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb250
cmFzdFJhdGlvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckx1bWluYW5jZS5o
OgorICAgICAgICAoV2ViQ29yZTo6cmVsYXRpdmVMdW1pbmFuY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udHJhc3RSYXRpbyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpkaXNhYmxlZFRleHRDb2xvciBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRleHRDb2xvcklzTGVnaWJsZUFnYWluc3RCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICBV
c2UgZG91YmxlIHRvIHJlcHJlc2VudCBsdW1pbmFuY2UgYW5kIGNvbnN0cmFzdCBldmVyeXdoZXJl
LgorCiAyMDIxLTA0LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRGlzYWJsZSBZb3VUdWJlIEZsYXNoIGFuZCBRdWlja1RpbWUgcGx1ZyBp
biByZXBsYWNlbWVudHMgb24gaU9TCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc1OTIx
KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5MzUs
NiArMTkzNSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JMdW1pbmFuY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24u
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzU5MjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTY0NCw4ICs2NDQsOCBAQAogCQkxQ0FGNTZEQjI1MzAxQUM4MDAxN0I0NzIgLyogRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdH
bHlwaHNSZWNvcmRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFDQ0Q4MTUwMjIzMUY4M0UwMDY1RkMyQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUyNTUxNDE2RkQyMzRGMDAzRDdBREIgLyogV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tICovOyB9OwogCQkxQ0NERjVC
RTE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDREY1QkMxOTkwMzMyNDAwQkNF
QkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uaCAqLzsgfTsKLQkJMUNFOEQxMjcyNjE4NUMw
RTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRThEMTI1MjYxODVCRDgwMEZD
M0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNFODg2NDEyNjEwNUJGMjAwMEM4
MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDRTg4NjNGMjYxMDVBNUYwMDBDODE2QyAvKiBJbk1lbW9yeURp
c3BsYXlMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDRThEMTI1MjYxODVCRDgwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlm
aWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MUNGQUUzMjMwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0ZBRTMyMjBBNkQ2QTNGMDAzMjU5
M0QgLyogbGlib2JqYy5keWxpYiAqLzsgfTsKIAkJMUQwMDI2QTQyMzc0RDYyNDAwQ0E2Q0RGIC8q
IEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUQwMDI2QTIyMzc0RDYyMzAwQ0E2Q0RGIC8qIEpTUGljdHVyZUlu
UGljdHVyZVdpbmRvdy5oICovOyB9OwogCQkxRDAwMjZBQTIzNzRGOUVBMDBDQTZDREYgLyogSlNF
bnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUQwMDI2QTgyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0
dXJlSW5QaWN0dXJlRXZlbnQuaCAqLzsgfTsKQEAgLTIwNDUsMTMgKzIwNDUsMTMgQEAKIAkJNjU2
NTgyMDIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUVCMDlEMTUwOEQwMDBFNjFENyAvKiBY
TGlua05hbWVzLmggKi87IH07CiAJCTY1NkQzNzMyMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJO
U1VSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjU2RDM3MUEwQURCQTVERTAwQTQ1NTREIC8qIExvYWRlck5TVVJMRXh0cmFzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU2RDM3MzYwQURC
QTVERTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzcxRTBBREJBNURFMDBBNDU1NEQgLyogRG9jdW1l
bnRMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQk2NTg0MzY4NjBBRTAxQjc0MDBFNTM3NDMgLyogRm9udExvYWRSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTg0MzY4NTBBRTAxQjc0
MDBFNTM3NDMgLyogRm9udExvYWRSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU2RDM3M0EwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1T
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2
RDM3MjIwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NkQzNzNDMEFEQkE1REUwMEE0NTU0RCAv
KiBGcmFtZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU2RDM3MjQwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU2RDM3M0UwQURCQTVE
RTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzcyNjBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVM
b2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2NTZEMzczRjBBREJBNURFMDBBNDU1NEQgLyogUmVzb3VyY2VMb2FkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzI3MEFEQkE1
REUwMEE0NTU0RCAvKiBSZXNvdXJjZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1NkQzNzQzMEFEQkE1REUwMEE0NTU0RCAvKiBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2RDM3MkIwQURCQTVERTAwQTQ1NTREIC8qIE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNjU2RDM3NDgwQURCQTVERTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzczMDBB
REJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2NTg0MzY4NjBBRTAxQjc0MDBFNTM3NDMg
LyogRm9udExvYWRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTg0MzY4NTBBRTAxQjc0MDBFNTM3NDMgLyogRm9udExvYWRSZXF1ZXN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU4NDM2
ODYwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc1MyAv
KiBGcmFtZUxvYWRSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNjU5QTdEMTMwQjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTlBN0Qx
MjBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTlEREM4MzA5RTE5OEJBMDAxQkYzQzYg
LyogSlNEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU5RERDODEwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjYzNCw2ICsyNjM0LDcg
QEAKIAkJODNFMzU5QTIxQkIxMDMxRDAwMkNFQjk4IC8qIEpTSFRNTFRpbWVFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0UzNTlBMDFCQjEw
MzFEMDAyQ0VCOTggLyogSlNIVE1MVGltZUVsZW1lbnQuaCAqLzsgfTsKIAkJODNFODY2ODAxRkJB
NTY1QjAwODg1NUM1IC8qIFNlcnZpY2VXb3JrZXJEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U4NjY3RDFGQkE1NjNGMDA4ODU1QzUgLyogU2Vy
dmljZVdvcmtlckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4M0VFNTk4RjFGNTA5NThFMDAzRThCMzAgLyogSlNFcnJvckNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0VFNTk4QjFG
NTA5NThCMDAzRThCMzAgLyogSlNFcnJvckNhbGxiYWNrLmggKi87IH07CisJCTgzRjE5OTUwMDgy
NDVFNTkwMDFFOUFCQyAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAv
KiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4M0YyOEMwMDI0REIxREUxMDA1QkE2RjYgLyogQ29udm9sdmVy
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODNGMjhCRkQyNERCMUREMzAwNUJBNkY2IC8qIENvbnZvbHZlck9wdGlvbnMuaCAqLzsgfTsKIAkJ
ODNGNkFFQkYyNTI3QkIwQzAwMzRCQ0QzIC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFODI4QjIyNTI3OTRD
RDAwMjdFMEY3IC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzRkIzMzcxMUY1MDhBNTQwMDk4NkU1NCAv
KiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkIzMzZEMUY1MDhBNEUwMDk4NkU1NCAvKiBGaWxlU3lzdGVt
RGlyZWN0b3J5RW50cnkuaCAqLzsgfTsKQEAgLTI4OTcsNyArMjg5OCw2IEBACiAJCTkzRjE5OEY2
MDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIzRDI3OTAyREU0M0Q3MDE4NjM1Q0Eg
LyogVGV4dFJlc291cmNlRGVjb2Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzRjE5OTE4MDgyNDVFNTkwMDFFOUFCQyAvKiBSYW5nZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QzMDQwMkRF
NDQ3NjAxODYzNUNBIC8qIFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5MkYwODI0NUU1OTAwMUU5QUJDIC8qIEN1cnNvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg2ODQwMkRF
M0I4NjAxRUE0MTIyIC8qIEN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTgzRjE5OTUwMDgyNDVFNTkwMDFFOUFCQyAvKiBDYWNoZWRGb250
TG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZWRGb250TG9hZFJlcXVlc3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTk1
MDA4MjQ1RTU5MDAxRTlBQkMgLyogQ2FjaGVQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNo
ZVBvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzRjE5OTYzMDgyNDVFNTkwMDFFOUFCQyAvKiBTU0xLZXlHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NjYyMDJERTNCMTEw
MUVBNDEyMiAvKiBTU0xLZXlHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTk4QzA4MjQ1RTU5MDAxRTlBQkMgLyogUmVuZGVy
VHJlZUFzVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM5NTVBNDEwM0Q3MjkzMjAwODYzNUNFIC8qIFJlbmRlclRyZWVBc1RleHQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzQ4MSw4ICszNDgx
LDggQEAKIAkJQTgxODVGMzkwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50VHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxODVGMzEwOTc2NTc2
NTAwNTgyNkQ5IC8qIERvY3VtZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE4MTg1RjNCMDk3NjU3NjYwMDU4MjZEOSAvKiBET01JbXBs
ZW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTgxODVGMzMwOTc2NTc2NTAwNTgyNkQ5IC8qIERPTUltcGxlbWVudGF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgxODVGM0QwOTc2
NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg1RjM1MDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1
bWVudEZyYWdtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJQTgxODVGNDUwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxODVGMzU1
OTc2NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4MTg1RjQwMDk3NjU3NjYwMDU4MjZE
OSAvKiBEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTgxODVGMzgwOTc2NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTgxODVGNDUwOTc2NTc2NjAw
NTgyNkQ5IC8qIERvY3VtZW50Rm9udExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxODVGMzU1OTc2NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50
Rm9udExvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE4MTg3MjFCMDk3N0QzQzAwMDU4MjZEOSAvKiBOb2RlTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxODcyMTAwOTc3RDNDMDAwNTgy
NkQ5IC8qIE5vZGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTgxODcyMUMwOTc3RDNDMDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg3MjExMDk3
N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgxODcyMUUwOTc3RDNDMDAwNTgyNkQ5IC8qIE5h
bWVOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTgxODcyMTMwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02OTUyLDkgKzY5NTIsOSBA
QAogCQkxQ0RENDVFNDBCQTlDODQ2MDBGOTAxNDcgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTUwQkE5Qzg0NjAwRjkwMTQ3IC8qIFdl
YkNvcmUueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViQ29yZS54
Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTYwQkE5Qzg0NjAw
RjkwMTQ3IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0g
QmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFOEQxMjUyNjE4
NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0U4ODYzRTI2MTA1QTVGMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNw
bGF5TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbk1lbW9yeURpc3BsYXlMaXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFODg2M0YyNjEwNUE1RjAwMEM4MTZDIC8q
IEluTWVtb3J5RGlzcGxheUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5NZW1vcnlEaXNwbGF5TGlz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0U4RDEyNTI2MTg1QkQ4MDBGQzNB
RUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDRUNCM0E4MjFGMkI2NzMwMEY0NDU0MiAvKiBXSExTTFN0YXRlbWVudEJlaGF2aW9y
Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0VDQjNBOTIxRjJCNjczMDBGNDQ1NDIg
LyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0VDQjNBRjIxRjJCOTg0MDBGNDQ1NDIgLyogV0hMU0xGdW5jdGlvbldyaXRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEZ1bmN0aW9uV3JpdGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk3NzEsMTIgKzk3NzEsMTIgQEAKIAkJNjU2RDM3MUUwQURC
QTVERTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEb2N1bWVudExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2NTZEMzcyMjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybVN0YXRlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVx
dWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udExvYWRSZXF1ZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzI0MEFEQkE1REUwMEE0NTU0
RCAvKiBGcmFtZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJh
bWVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MjYwQURCQTVE
RTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGcmFtZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NTZEMzcyNzBBREJBNURFMDBBNDU1NEQgLyogUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzJCMEFEQkE1REUwMEE0NTU0RCAvKiBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjU2RDM3MzAwQURCQTVERTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJyZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2NTg0MzY4NTBBRTAxQjc0MDBFNTM3NDMgLyogRm9udExvYWRS
ZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250TG9hZFJlcXVl
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4NDM2ODUwQUUwMUI3NDAwRTUz
NzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZyYW1lTG9hZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5
QTdEMTIwQjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdWJzdGl0dXRlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTlEREM4MDA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTM1OSw2ICsxMTM1OSw3IEBACiAJCTg1NzREMUY2
MEFERTYxMjIwMDRDQkExMSAvKiBKU1NWR1BvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IEpTU1ZHUG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODU3NEQxRjcwQURFNjEyMjAwNENCQTExIC8qIEpTU1ZHUmVjdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdSZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODU3NEQxRjgwQURFNjEyMjAwNENCQTExIC8qIEpTU1ZHUmVjdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBKU1NWR1JlY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODU4Nzg2NDkwMkRFM0E5QTAxRUE0MTIyIC8qIENhY2hlZEZvbnRM
b2FkUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRGb250TG9hZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTg1OEMzOEVGMEFBOEZERDEwMEIxODdB
NCAvKiBEZXByZWNhdGVkQ1NTT01SR0JDb2xvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IERlcHJlY2F0ZWRDU1NPTVJHQkNvbG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODU4QzM5MTAwQUE4RkYwMDAwQjE4N0E0IC8qIENTU1N0eWxlU2hlZXQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBDU1NTdHlsZVNoZWV0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODU5MTI4NzkwQUIyMjJFQzAwMjAyMjY1IC8qIEhUTUxFbWJlZEVsZW1lbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MRW1iZWRFbGVtZW50LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTQ4LDkgKzEyOTQ5LDkgQEAKIAkJQTgxODVGMzQwOTc2
NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
MTg1RjM0NTk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudEZvbnRMb2FkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50Rm9udExvYWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MTg1RjM1MDk3NjU3NjUwMDU4MjZEOSAvKiBE
b2N1bWVudEZyYWdtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1
bWVudEZyYWdtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4MTg1RjM1NTk3
NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudEZvbnRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERvY3VtZW50Rm9udExvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBODE4NUYzNjA5NzY1NzY1MDA1ODI2RDkgLyogRE9NSW1wbGVtZW50YXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUltcGxlbWVudGF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxODVGMzcwOTc2NTc2NTAw
NTgyNkQ5IC8qIERvY3VtZW50RnJhZ21lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERvY3VtZW50RnJhZ21lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlBODE4NUYzNTU5NzY1NzY1MDA1ODI2RDkgLyogRG9jdW1lbnRGb250TG9hZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudEZvbnRMb2FkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxODVGMzgwOTc2NTc2NTAwNTgyNkQ5IC8q
IERvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODE4NzIxMDA5NzdEM0MwMDA1ODI2RDkg
LyogTm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vZGVMaXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MTg3MjExMDk3N0QzQzAwMDU4MjZE
OSAvKiBDb250YWluZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b250YWluZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDIyNCw2ICsx
NDIyNSw3IEBACiAJCUJDNkQ0NEVBMEMwN0YyRUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEVtYmVk
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNkQ0NEVCMEMwN0Yy
RUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTSFRNTEVtYmVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xsVmlldy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQzZFQjg0NTI2MjY2QjYxMDAzMjI1QTcgLyogQ29sb3JMdW1pbmFuY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JMdW1pbmFuY2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzc3MkIzNjBDNEVBOTFFMDA4MzI4NUYgLyogQ1NTSGVscGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NIZWxwZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3NzJDNDQwQzRFQjJDNjAwODMyODVGIC8qIFhNTEh0dHBS
ZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxIdHRw
UmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzcyQzQ1MEM0RUIy
QzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gWE1MSHR0cFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE2ODY1LDcgKzE2ODY3LDYgQEAKIAkJRjU1QjNEQUMxMjUxRjEyRDAwM0VGMjY5IC8qIFdlZWtJ
bnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vla0lucHV0VHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNTg3ODRGMDAyREUzNzU5MDFFQTQx
MjIgLyogQ3Vyc29yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQ3Vyc29yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg1NEMwMkRFMzc1OTAxRUE0
MTIyIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUZyYW1lVmlldy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJODU4Nzg2NDkwMkRFM0E5
QTAxRUE0MTIyIC8qIENhY2hlZEZvbnRMb2FkUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRGb250TG9hZFJlcXVlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJ
CUY1ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZVBvbGljeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZVBvbGljeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4
Nzg2NjIwMkRFM0IxMTAxRUE0MTIyIC8qIFNTTEtleUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTU0xLZXlHZW5lcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJ
CUY1ODc4Njg0MDJERTNCODYwMUVBNDEyMiAvKiBDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Vyc29yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMjY3OTMsNiArMjY3
OTQsNyBAQAogCQkJCTdDNTE0RTAyMjRBRjgwNTgwMDUwNzEwRiAvKiBDb2xvckNvbnZlcnNpb24u
Y3BwICovLAogCQkJCTdDNTE0RTAwMjRBRjgwNTgwMDUwNzEwRiAvKiBDb2xvckNvbnZlcnNpb24u
aCAqLywKIAkJCQkzMTAzQjdERTFEQjAxNTU2MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggKi8sCisJ
CQkJQkM2RUI4NDUyNjI2NkI2MTAwMzIyNUE3IC8qIENvbG9yTHVtaW5hbmNlLmNwcCAqLywKIAkJ
CQlCQzRBMjNFQjI1RUMxNjAyMDBBQUM2MzAgLyogQ29sb3JMdW1pbmFuY2UuaCAqLywKIAkJCQk3
Q0FDNkFFODI0N0YwODIwMDBFNjFENTkgLyogQ29sb3JNYXRyaXguaCAqLywKIAkJCQlCQzEwMTM3
QjI1QzM2MjRCMDBEQzc3M0MgLyogQ29sb3JNb2RlbHMuaCAqLywKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAJ
KHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwOSwzOCArMTUwOSwzNyBA
QCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZ1bmN0aW9uUGFyYW1ldGVyCiAgICAgcmV0dXJuIGNv
bG9yOwogfQogCi1zdGF0aWMgQ29sb3Igc2VsZWN0Rmlyc3RDb2xvclRoYXRNZWV0c09yRXhjZWVk
c1RhcmdldENvbnRyYXN0KGNvbnN0IENvbG9yJiBvcmlnaW5CYWNrZ3JvdW5kQ29sb3IsIGNvbnN0
IFZlY3RvcjxDb2xvcj4mIGNvbG9yc1RvQ29tcGFyZUFnYWluc3QsIGRvdWJsZSB0YXJnZXRDb250
cmFzdCkKK3N0YXRpYyBDb2xvciBzZWxlY3RGaXJzdENvbG9yVGhhdE1lZXRzT3JFeGNlZWRzVGFy
Z2V0Q29udHJhc3QoY29uc3QgQ29sb3ImIG9yaWdpbkJhY2tncm91bmRDb2xvciwgVmVjdG9yPENv
bG9yPiYmIGNvbG9yc1RvQ29tcGFyZUFnYWluc3QsIGRvdWJsZSB0YXJnZXRDb250cmFzdCkKIHsK
ICAgICBhdXRvIG9yaWdpbkJhY2tncm91bmRDb2xvckx1bWluYW5jZSA9IG9yaWdpbkJhY2tncm91
bmRDb2xvci5sdW1pbmFuY2UoKTsKIAogICAgIGZvciAoYXV0byYgY29sb3IgOiBjb2xvcnNUb0Nv
bXBhcmVBZ2FpbnN0KSB7Ci0gICAgICAgIGF1dG8gY29udHJhc3RSYXRpbyA9IFdlYkNvcmU6OmNv
bnRyYXN0UmF0aW8ob3JpZ2luQmFja2dyb3VuZENvbG9yTHVtaW5hbmNlLCBjb2xvci5sdW1pbmFu
Y2UoKSk7Ci0gICAgICAgIGlmIChjb250cmFzdFJhdGlvID49IHRhcmdldENvbnRyYXN0KQotICAg
ICAgICAgICAgcmV0dXJuIGNvbG9yOworICAgICAgICBpZiAoY29udHJhc3RSYXRpbyhvcmlnaW5C
YWNrZ3JvdW5kQ29sb3JMdW1pbmFuY2UsIGNvbG9yLmx1bWluYW5jZSgpKSA+PSB0YXJnZXRDb250
cmFzdCkKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbG9yKTsKICAgICB9Ci0gICAgCisK
ICAgICAvLyBJZiB0aGVyZSBpcyBhIHRhcmdldCBjb250cmFzdCwgYW5kIHRoZSBlbmQgb2YgdGhl
IGxpc3QgaXMgcmVhY2hlZCB3aXRob3V0IG1lZXRpbmcgdGhhdCB0YXJnZXQsCiAgICAgLy8gZWl0
aGVyIHdoaXRlIG9yIGJsYWNrIGlzIHJldHVybmVkLCB3aGljaGV2ZXIgaGFzIHRoZSBoaWdoZXIg
Y29udHJhc3QuCi0gICAgYXV0byBjb250cmFzdFJhdGlvV2l0aFdoaXRlID0gV2ViQ29yZTo6Y29u
dHJhc3RSYXRpbyhvcmlnaW5CYWNrZ3JvdW5kQ29sb3JMdW1pbmFuY2UsIDEuMGYpOwotICAgIGF1
dG8gY29udHJhc3RSYXRpb1dpdGhCbGFjayA9IFdlYkNvcmU6OmNvbnRyYXN0UmF0aW8ob3JpZ2lu
QmFja2dyb3VuZENvbG9yTHVtaW5hbmNlLCAwLjBmKTsKLSAgICByZXR1cm4gY29udHJhc3RSYXRp
b1dpdGhXaGl0ZSA+IGNvbnRyYXN0UmF0aW9XaXRoQmxhY2sgPyBDb2xvcjo6d2hpdGUgOiBDb2xv
cjo6YmxhY2s7CisgICAgYXV0byBjb250cmFzdFdpdGhXaGl0ZSA9IGNvbnRyYXN0UmF0aW8ob3Jp
Z2luQmFja2dyb3VuZENvbG9yTHVtaW5hbmNlLCAxLjApOworICAgIGF1dG8gY29udHJhc3RXaXRo
QmxhY2sgPSBjb250cmFzdFJhdGlvKG9yaWdpbkJhY2tncm91bmRDb2xvckx1bWluYW5jZSwgMC4w
KTsKKyAgICByZXR1cm4gY29udHJhc3RXaXRoV2hpdGUgPiBjb250cmFzdFdpdGhCbGFjayA/IENv
bG9yOjp3aGl0ZSA6IENvbG9yOjpibGFjazsKIH0KIAotc3RhdGljIENvbG9yIHNlbGVjdEZpcnN0
Q29sb3JXaXRoSGlnaGVzdENvbnRyYXN0KGNvbnN0IENvbG9yJiBvcmlnaW5CYWNrZ3JvdW5kQ29s
b3IsIGNvbnN0IFZlY3RvcjxDb2xvcj4mIGNvbG9yc1RvQ29tcGFyZUFnYWluc3QpCitzdGF0aWMg
Q29sb3Igc2VsZWN0Rmlyc3RDb2xvcldpdGhIaWdoZXN0Q29udHJhc3QoY29uc3QgQ29sb3ImIG9y
aWdpbkJhY2tncm91bmRDb2xvciwgVmVjdG9yPENvbG9yPiYmIGNvbG9yc1RvQ29tcGFyZUFnYWlu
c3QpCiB7CiAgICAgYXV0byBvcmlnaW5CYWNrZ3JvdW5kQ29sb3JMdW1pbmFuY2UgPSBvcmlnaW5C
YWNrZ3JvdW5kQ29sb3IubHVtaW5hbmNlKCk7CiAKLSAgICBzaXplX3QgaW5kZXhPZkNvbG9yV2l0
aEhpZ2VzdENvbnRyYXN0UmF0aW8gPSAwOwotICAgIGZsb2F0IGhpZ2hlc3RDb250cmFzdFJhdGlv
U29GYXIgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29sb3JzVG9Db21wYXJlQWdh
aW5zdC5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIGNvbnRyYXN0UmF0aW8gPSBXZWJDb3Jl
Ojpjb250cmFzdFJhdGlvKG9yaWdpbkJhY2tncm91bmRDb2xvckx1bWluYW5jZSwgY29sb3JzVG9D
b21wYXJlQWdhaW5zdFtpXS5sdW1pbmFuY2UoKSk7Ci0gICAgICAgIGlmIChjb250cmFzdFJhdGlv
ID4gaGlnaGVzdENvbnRyYXN0UmF0aW9Tb0ZhcikgewotICAgICAgICAgICAgaGlnaGVzdENvbnRy
YXN0UmF0aW9Tb0ZhciA9IGNvbnRyYXN0UmF0aW87Ci0gICAgICAgICAgICBpbmRleE9mQ29sb3JX
aXRoSGlnZXN0Q29udHJhc3RSYXRpbyA9IGk7CisgICAgYXV0byogY29sb3JXaXRoR3JlYXRlc3RD
b250cmFzdCA9ICZjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0WzBdOworICAgIGRvdWJsZSBncmVhdGVz
dENvbnRyYXN0U29GYXIgPSAwOworICAgIGZvciAoYXV0byYgY29sb3IgOiBjb2xvcnNUb0NvbXBh
cmVBZ2FpbnN0KSB7CisgICAgICAgIGF1dG8gY29udHJhc3QgPSBjb250cmFzdFJhdGlvKG9yaWdp
bkJhY2tncm91bmRDb2xvckx1bWluYW5jZSwgY29sb3IubHVtaW5hbmNlKCkpOworICAgICAgICBp
ZiAoY29udHJhc3QgPiBncmVhdGVzdENvbnRyYXN0U29GYXIpIHsKKyAgICAgICAgICAgIGdyZWF0
ZXN0Q29udHJhc3RTb0ZhciA9IGNvbnRyYXN0OworICAgICAgICAgICAgY29sb3JXaXRoR3JlYXRl
c3RDb250cmFzdCA9ICZjb2xvcjsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBjb2xv
cnNUb0NvbXBhcmVBZ2FpbnN0W2luZGV4T2ZDb2xvcldpdGhIaWdlc3RDb250cmFzdFJhdGlvXTsK
KyAgICByZXR1cm4gV1RGTW92ZSgqY29sb3JXaXRoR3JlYXRlc3RDb250cmFzdCk7CiB9CiAKIHN0
YXRpYyBDb2xvciBwYXJzZUNvbG9yQ29udHJhc3RGdW5jdGlvblBhcmFtZXRlcnMoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCkBAIC0x
NTkwLDExICsxNTg5LDExIEBAIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yQ29udHJhc3RGdW5jdGlv
blAKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIAogICAgICAgICAvLyBXaGVuIGEg
dGFyZ2V0IGNvbnN0YXN0IGlzIHNwZWNpZmllZCwgd2Ugc2VsZWN0ICJ0aGUgZmlyc3QgY29sb3Ig
Y29sb3IgdG8gbWVldCBvciBleGNlZWQgdGhlIHRhcmdldCBjb250cmFzdC4iCi0gICAgICAgIHJl
dHVybiBzZWxlY3RGaXJzdENvbG9yVGhhdE1lZXRzT3JFeGNlZWRzVGFyZ2V0Q29udHJhc3Qob3Jp
Z2luQmFja2dyb3VuZENvbG9yLCBjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0LCAqdGFyZ2V0Q29udHJh
c3QpOworICAgICAgICByZXR1cm4gc2VsZWN0Rmlyc3RDb2xvclRoYXRNZWV0c09yRXhjZWVkc1Rh
cmdldENvbnRyYXN0KG9yaWdpbkJhY2tncm91bmRDb2xvciwgV1RGTW92ZShjb2xvcnNUb0NvbXBh
cmVBZ2FpbnN0KSwgKnRhcmdldENvbnRyYXN0KTsKICAgICB9CiAKICAgICAvLyBXaGVuIGEgdGFy
Z2V0IGNvbnN0YXN0IGlzIE5PVCBzcGVjaWZpZWQsIHdlIHNlbGVjdCAidGhlIGZpcnN0IGNvbG9y
IHdpdGggdGhlIGhpZ2hlc3QgY29udHJhc3QgdG8gdGhlIHNpbmdsZSBjb2xvci4iCi0gICAgcmV0
dXJuIHNlbGVjdEZpcnN0Q29sb3JXaXRoSGlnaGVzdENvbnRyYXN0KG9yaWdpbkJhY2tncm91bmRD
b2xvciwgY29sb3JzVG9Db21wYXJlQWdhaW5zdCk7CisgICAgcmV0dXJuIHNlbGVjdEZpcnN0Q29s
b3JXaXRoSGlnaGVzdENvbnRyYXN0KG9yaWdpbkJhY2tncm91bmRDb2xvciwgV1RGTW92ZShjb2xv
cnNUb0NvbXBhcmVBZ2FpbnN0KSk7CiB9CiAKIGVudW0gY2xhc3MgQ29sb3JNaXhDb2xvclNwYWNl
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJl
dmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDMwICsxMDksMjEgQEAgQ29sb3IgQ29sb3I6OmRh
cmtlbmVkKCkgY29uc3QKICAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihT
UkdCQTxmbG9hdD4geyBtdWx0aXBsaWVyICogciwgbXVsdGlwbGllciAqIGcsIG11bHRpcGxpZXIg
KiBiLCBhIH0pOwogfQogCi1mbG9hdCBDb2xvcjo6bGlnaHRuZXNzKCkgY29uc3QKK2RvdWJsZSBD
b2xvcjo6bGlnaHRuZXNzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogUmVwbGFjZSByZW1haW5p
bmcgdXNlcyB3aXRoIGx1bWluYW5jZS4KICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHRvU1JHQkFM
b3NzeTxmbG9hdD4oKTsKICAgICBhdXRvIFttaW4sIG1heF0gPSBzdGQ6Om1pbm1heCh7IHIsIGcs
IGIgfSk7Ci0gICAgcmV0dXJuIDAuNWYgKiAobWF4ICsgbWluKTsKKyAgICByZXR1cm4gMC41ICog
KG1heCArIG1pbik7CiB9CiAKLWZsb2F0IENvbG9yOjpsdW1pbmFuY2UoKSBjb25zdAorZG91Ymxl
IENvbG9yOjpsdW1pbmFuY2UoKSBjb25zdAogewogICAgIHJldHVybiBjYWxsT25VbmRlcmx5aW5n
VHlwZShbJl0gKGNvbnN0IGF1dG8mIHVuZGVybHlpbmdDb2xvcikgewogICAgICAgICByZXR1cm4g
V2ViQ29yZTo6cmVsYXRpdmVMdW1pbmFuY2UodW5kZXJseWluZ0NvbG9yKTsKICAgICB9KTsKIH0K
IAotZmxvYXQgQ29sb3I6OmNvbnRyYXN0UmF0aW8oY29uc3QgQ29sb3ImIGNvbG9yQSwgY29uc3Qg
Q29sb3ImIGNvbG9yQikKLXsKLSAgICByZXR1cm4gY29sb3JBLmNhbGxPblVuZGVybHlpbmdUeXBl
KFsmXSAoY29uc3QgYXV0byYgdW5kZXJseWluZ0NvbG9yQSkgewotICAgICAgICByZXR1cm4gY29s
b3JCLmNhbGxPblVuZGVybHlpbmdUeXBlKFsmXSAoY29uc3QgYXV0byYgdW5kZXJseWluZ0NvbG9y
QikgewotICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNvbnRyYXN0UmF0aW8odW5kZXJseWlu
Z0NvbG9yQSwgdW5kZXJseWluZ0NvbG9yQik7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCiBD
b2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGNhbGxPblVuZGVybHlpbmdUeXBlKFsmXSAoY29uc3QgYXV0byYgdW5kZXJseWluZ0NvbG9y
KSAtPiBDb2xvciB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmgJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw5ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAg
dWludDhfdCBhbHBoYUJ5dGUoKSBjb25zdCB7IHJldHVybiBpc091dE9mTGluZSgpID8gY29udmVy
dEZsb2F0QWxwaGFUbzx1aW50OF90Pihhc091dE9mTGluZSgpLmFscGhhKCkpIDogYXNJbmxpbmUo
KS5hbHBoYTsgfQogICAgIGZsb2F0IGFscGhhQXNGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIGlzT3V0
T2ZMaW5lKCkgPyBhc091dE9mTGluZSgpLmFscGhhKCkgOiBjb252ZXJ0Qnl0ZUFscGhhVG88Zmxv
YXQ+KGFzSW5saW5lKCkuYWxwaGEpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCBsdW1p
bmFuY2UoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCBsaWdodG5lc3MoKSBjb25z
dDsgLy8gRklYTUU6IFJlcGxhY2UgcmVtYWluaW5nIHVzZXMgd2l0aCBsdW1pbmFuY2UuCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGZsb2F0IGNvbnRyYXN0UmF0aW8oY29uc3QgQ29sb3ImLCBj
b25zdCBDb2xvciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJsZSBsdW1pbmFuY2UoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgbGlnaHRuZXNzKCkgY29uc3Q7IC8vIEZJWE1F
OiBSZXBsYWNlIHJlbWFpbmluZyB1c2VzIHdpdGggbHVtaW5hbmNlLgogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gZGVjbHR5cGUoYXV0bykgY2FsbE9uVW5kZXJseWluZ1R5cGUoRnVu
Y3RvciYmKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JMdW1pbmFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yTHVtaW5hbmNlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckx1bWluYW5jZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJDb2xvckx1bWluYW5jZS5oIgorCisjaW5jbHVkZSAiQ29sb3IuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitkb3VibGUgY29udHJhc3RSYXRpbyhjb25zdCBDb2xvciYgY29sb3JBLCBj
b25zdCBDb2xvciYgY29sb3JCKQoreworICAgIHJldHVybiBjb2xvckEuY2FsbE9uVW5kZXJseWlu
Z1R5cGUoWyZdIChjb25zdCBhdXRvJiB1bmRlcmx5aW5nQ29sb3JBKSB7CisgICAgICAgIHJldHVy
biBjb2xvckIuY2FsbE9uVW5kZXJseWluZ1R5cGUoWyZdIChjb25zdCBhdXRvJiB1bmRlcmx5aW5n
Q29sb3JCKSB7CisgICAgICAgICAgICByZXR1cm4gY29udHJhc3RSYXRpbyh1bmRlcmx5aW5nQ29s
b3JBLCB1bmRlcmx5aW5nQ29sb3JCKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTHVtaW5hbmNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JMdW1pbmFu
Y2UuaAkocmV2aXNpb24gMjc1OTIxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JMdW1pbmFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gaW5saW5l
IGZsb2F0IHJlbGF0aXZlTHVtaW5hbmNlKGNvbnN0IENvbG9yVHlwZSYgY29sb3IpCitjbGFzcyBD
b2xvcjsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBpbmxpbmUgZG91YmxlIHJlbGF0
aXZlTHVtaW5hbmNlKGNvbnN0IENvbG9yVHlwZSYgY29sb3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9l
bi53aWtpcGVkaWEub3JnL3dpa2kvUmVsYXRpdmVfbHVtaW5hbmNlCiAKQEAgLTQ2LDcgKzQ4LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBpbmxpbmUgZmxvYQogICAgIHJldHVybiBj
b252ZXJ0Q29sb3I8WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1Pj4oY29sb3IpLnk7CiB9CiAK
LWlubGluZSBmbG9hdCBjb250cmFzdFJhdGlvKGZsb2F0IHJlbGF0aXZlTHVtaW5hbmNlQSwgZmxv
YXQgcmVsYXRpdmVMdW1pbmFuY2VCKQoraW5saW5lIGRvdWJsZSBjb250cmFzdFJhdGlvKGRvdWJs
ZSByZWxhdGl2ZUx1bWluYW5jZUEsIGRvdWJsZSByZWxhdGl2ZUx1bWluYW5jZUIpCiB7CiAgICAg
Ly8gVXNlcyB0aGUgV0NBRyAyLjAgZGVmaW5pdGlvbiBvZiBjb250cmFzdCByYXRpby4KICAgICAv
LyBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLyNjb250cmFzdC1yYXRpb2RlZgpAQCAtNTks
OSArNjEsMTEgQEAgaW5saW5lIGZsb2F0IGNvbnRyYXN0UmF0aW8oZmxvYXQgcmVsYXRpdgogICAg
IHJldHVybiAobGlnaHRlckx1bWluYW5jZSArIDAuMDUpIC8gKGRhcmtlckx1bWluYW5jZSArIDAu
MDUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGVBLCB0eXBlbmFtZSBDb2xvclR5
cGVCPiBpbmxpbmUgZmxvYXQgY29udHJhc3RSYXRpbyhjb25zdCBDb2xvclR5cGVBJiBjb2xvckEs
IGNvbnN0IENvbG9yVHlwZUImIGNvbG9yQikKK3RlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZUEs
IHR5cGVuYW1lIENvbG9yVHlwZUI+IGlubGluZSBkb3VibGUgY29udHJhc3RSYXRpbyhjb25zdCBD
b2xvclR5cGVBJiBjb2xvckEsIGNvbnN0IENvbG9yVHlwZUImIGNvbG9yQikKIHsKICAgICByZXR1
cm4gY29udHJhc3RSYXRpbyhyZWxhdGl2ZUx1bWluYW5jZShjb2xvckEpLCByZWxhdGl2ZUx1bWlu
YW5jZShjb2xvckIpKTsKIH0KIAorZG91YmxlIGNvbnRyYXN0UmF0aW8oY29uc3QgQ29sb3ImLCBj
b25zdCBDb2xvciYpOworCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5jcHAJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1
ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDb2xvckJsZW5kaW5nLmgiCisjaW5j
bHVkZSAiQ29sb3JMdW1pbmFuY2UuaCIKICNpbmNsdWRlICJDb250cm9sU3RhdGVzLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgpAQCAtMTQwOSw3ICsxNDEw
LDcgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9yKCkKICNlbmRpZgogCiAv
LyBWYWx1ZSBjaG9zZW4gYnkgb2JzZXJ2YXRpb24uIFRoaXMgY2FuIGJlIHR3ZWFrZWQuCi1jb25z
dGV4cHIgZmxvYXQgbWluQ29sb3JDb250cmFzdFZhbHVlID0gMS4xOTVmOworY29uc3RleHByIGRv
dWJsZSBtaW5Db2xvckNvbnRyYXN0VmFsdWUgPSAxLjE5NTsKIAogLy8gRm9yIHRyYW5zcGFyZW50
IG9yIHRyYW5zbHVjZW50IGJhY2tncm91bmQgY29sb3IsIHVzZSBsaWdodGVuaW5nLgogY29uc3Rl
eHByIGZsb2F0IG1pbkRpc2FibGVkQ29sb3JBbHBoYVZhbHVlID0gMC41ZjsKQEAgLTE0MjcsNyAr
MTQyOCw3IEBAIENvbG9yIFJlbmRlclRoZW1lOjpkaXNhYmxlZFRleHRDb2xvcihjb24KICAgICAv
LyBJZiB0aGVyZSdzIG5vdCB2ZXJ5IG11Y2ggY29udHJhc3QgYmV0d2VlbiB0aGUgZGlzYWJsZWQg
Y29sb3IgYW5kIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLAogICAgIC8vIGp1c3QgbGVhdmUgdGhlIHRl
eHQgY29sb3IgYWxvbmUuIFdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIGEgZ29vZCBjb250cmFzdCBj
b2xvciBzY2hlbWUgc28gdGhhdCBpdCBoYXMgcmVhbGx5IGJhZCBjb250cmFzdC4KICAgICAvLyBJ
ZiB0aGUgY29udHJhc3Qgd2FzIGFscmVhZHkgcG9vciwgdGhlbiBpdCBkb2Vzbid0IGRvIGFueSBn
b29kIHRvIGNoYW5nZSBpdCB0byBhIGRpZmZlcmVudCBwb29yIGNvbnRyYXN0IGNvbG9yIHNjaGVt
ZS4KLSAgICBpZiAoQ29sb3I6OmNvbnRyYXN0UmF0aW8oZGlzYWJsZWRDb2xvciwgYmFja2dyb3Vu
ZENvbG9yKSA8IG1pbkNvbG9yQ29udHJhc3RWYWx1ZSkKKyAgICBpZiAoY29udHJhc3RSYXRpbyhk
aXNhYmxlZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpIDwgbWluQ29sb3JDb250cmFzdFZhbHVlKQog
ICAgICAgICByZXR1cm4gdGV4dENvbG9yOwogCiAgICAgcmV0dXJuIGRpc2FibGVkQ29sb3I7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAJKHJldmlz
aW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgogCi0jaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMu
aCIKKyNpbmNsdWRlICJDb2xvckx1bWluYW5jZS5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBA
IC02Myw3ICs2Myw3IEBAIGJvb2wgdGV4dENvbG9ySXNMZWdpYmxlQWdhaW5zdEJhY2tncm91bmQK
IHsKICAgICAvLyBVc2VzIHRoZSBXQ0FHIDIuMCBkZWZpbml0aW9uIG9mIGxlZ2liaWxpdHk6IGEg
Y29udHJhc3QgcmF0aW8gb2YgNC41OjEgb3IgZ3JlYXRlci4KICAgICAvLyBodHRwczovL3d3dy53
My5vcmcvVFIvV0NBRzIwLyN2aXN1YWwtYXVkaW8tY29udHJhc3QtY29udHJhc3QKLSAgICByZXR1
cm4gQ29sb3I6OmNvbnRyYXN0UmF0aW8odGV4dENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpID4gNC41
OworICAgIHJldHVybiBjb250cmFzdFJhdGlvKHRleHRDb2xvciwgYmFja2dyb3VuZENvbG9yKSA+
IDQuNTsKIH0KIAogc3RhdGljIENvbG9yIGFkanVzdENvbG9yRm9yVmlzaWJpbGl0eU9uQmFja2dy
b3VuZChjb25zdCBDb2xvciYgdGV4dENvbG9yLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9y
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425939</attachid>
            <date>2021-04-13 17:56:32 -0700</date>
            <delta_ts>2021-04-14 08:58:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>17525</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDIxLTA0LTEzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgcmFuZ2UtZm9yIGxvb3AgaW4g
dGFyZ2V0IGNvbnRyYXN0IHNlbGVjdGlvbiB0byBzaW1wbGlmeS9pbXByb3ZlIGNvZGUgcmVhZGFi
aWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NDUxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHJlc3Mgc29tZSBhZGRpdGlvbmFsIHBvc3QgbGFuZGluZyBmZWVkYmFjayBmcm9tIERhcmluLgor
CisgICAgICAgIC0gVXNlIHJhbmdlLWZvciBsb29wIGluIHRhcmdldCBjb250cmFzdCBzZWxlY3Rp
b24uCisgICAgICAgIC0gVXNlIGRvdWJsZSB0byByZXByZXNlbnQgbHVtaW5hbmNlLCBsaWdodG5l
c3MgYW5kIGNvbnRyYXN0IGV2ZXJ5d2hlcmUuCisgICAgICAgICAgVGhpcyBhdm9pZCB1bm5lY2Vz
c2FyeSBjb252ZXJzaW9ucyB0byBhbmQgZnJvbSBmbG9hdC4KKyAgICAgICAgLSBSZW5hbWUgQ29s
b3I6OmNvbnRyYXN0UmF0aW8oQ29sb3IsIENvbG9yKSB0byBqdXN0IGNvbnRyYXN0UmF0aW8oQ29s
b3IsIENvbG9yKQorICAgICAgICAgIGFuZCBtb3ZlIGl0IENvbG9yTHVtaW5hbmNlLmgvY3BwIHdp
dGggdGhlIG90aGVyIGNvbnRyYXN0UmF0aW8gb3ZlcmxvYWRzLgorCisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBBZGQgQ29sb3JMdW1pbmFuY2UuY3BwCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnM6OnNlbGVjdEZpcnN0Q29sb3JUaGF0TWVldHNPckV4Y2VlZHNUYXJnZXRDb250
cmFzdCk6CisgICAgICAgIENvbnZlcnQgY29sb3JzVG9Db21wYXJlQWdhaW5zdCB0byBhbiByLXZh
bHVlIHNpbmNlIHZlY3RvciBpcyBuZXZlciB1c2VkIGFmdGVyCisgICAgICAgIGNhbGxpbmcgdGhp
cy4KKworICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpzZWxlY3RG
aXJzdENvbG9yV2l0aEhpZ2hlc3RDb250cmFzdCk6CisgICAgICAgIENvbnZlcnQgY29sb3JzVG9D
b21wYXJlQWdhaW5zdCB0byBhbiByLXZhbHVlIHNpbmNlIHZlY3RvciBpcyBuZXZlciB1c2VkIGFm
dGVyCisgICAgICAgIGNhbGxpbmcgdGhpcy4gQWxzbywgc3dpdGNoIHRvIGEgcmFuZ2UtZm9yIGxv
b3AgdG8gYWlkIHJlYWRhYmlsaXR5LgorCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnM6OnBhcnNlQ29sb3JDb250cmFzdEZ1bmN0aW9uUGFyYW1ldGVycyk6CisgICAg
ICAgIE1vdmUgY29sb3JzVG9Db21wYXJlQWdhaW5zdCB0byB0aGUgc2VsZWN0IGZ1bmN0aW9ucy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmxpZ2h0bmVz
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bHVtaW5hbmNlIGNvbnN0KToKKyAg
ICAgICAgVXNlIGRvdWJsZSB0byByZXByZXNlbnQgbGlnaHRuZXNzIGFuZCBsdW1pbmFuY2UuCisK
KyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpjb250cmFzdFJhdGlvKTogRGVsZXRlZC4KKyAgICAg
ICAgTW92ZWQgdG8gQ29sb3JMdW1pbmFuY2UuaC9jcHAKKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yTHVtaW5hbmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb250
cmFzdFJhdGlvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckx1bWluYW5jZS5o
OgorICAgICAgICAoV2ViQ29yZTo6cmVsYXRpdmVMdW1pbmFuY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udHJhc3RSYXRpbyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpkaXNhYmxlZFRleHRDb2xvciBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRleHRDb2xvcklzTGVnaWJsZUFnYWluc3RCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICBV
c2UgZG91YmxlIHRvIHJlcHJlc2VudCBsdW1pbmFuY2UgYW5kIGNvbnN0cmFzdCBldmVyeXdoZXJl
LgorCiAyMDIxLTA0LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRGlzYWJsZSBZb3VUdWJlIEZsYXNoIGFuZCBRdWlja1RpbWUgcGx1ZyBp
biByZXBsYWNlbWVudHMgb24gaU9TCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc1OTIx
KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5MzUs
NiArMTkzNSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JMdW1pbmFuY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24u
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzU5MjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTE0MjI0LDYgKzE0MjI1LDcgQEAKIAkJQkM2RDQ0RUEwQzA3RjJFRDAwNzJEMkM5IC8qIEpTSFRN
TEVtYmVkRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNIVE1MRW1iZWRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2
RDQ0RUIwQzA3RjJFRDAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MRW1iZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDNkQ2RTI1MDlBRjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxWaWV3Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNkVCODQ1MjYyNjZCNjEwMDMyMjVBNyAvKiBDb2xv
ckx1bWluYW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xvckx1bWluYW5jZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzcyQjM2MEM0RUE5MUUwMDgzMjg1RiAvKiBD
U1NIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0hlbHBlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzc3MkM0NDBDNEVCMkM2MDA4MzI4NUYg
LyogWE1MSHR0cFJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFhNTEh0dHBSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3
NzJDNDUwQzRFQjJDNjAwODMyODVGIC8qIFhNTEh0dHBSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjY3OTMsNiArMjY3OTQsNyBAQAogCQkJCTdDNTE0RTAyMjRBRjgwNTgwMDUw
NzEwRiAvKiBDb2xvckNvbnZlcnNpb24uY3BwICovLAogCQkJCTdDNTE0RTAwMjRBRjgwNTgwMDUw
NzEwRiAvKiBDb2xvckNvbnZlcnNpb24uaCAqLywKIAkJCQkzMTAzQjdERTFEQjAxNTU2MDA4QkI4
OTAgLyogQ29sb3JIYXNoLmggKi8sCisJCQkJQkM2RUI4NDUyNjI2NkI2MTAwMzIyNUE3IC8qIENv
bG9yTHVtaW5hbmNlLmNwcCAqLywKIAkJCQlCQzRBMjNFQjI1RUMxNjAyMDBBQUM2MzAgLyogQ29s
b3JMdW1pbmFuY2UuaCAqLywKIAkJCQk3Q0FDNkFFODI0N0YwODIwMDBFNjFENTkgLyogQ29sb3JN
YXRyaXguaCAqLywKIAkJCQlCQzEwMTM3QjI1QzM2MjRCMDBEQzc3M0MgLyogQ29sb3JNb2RlbHMu
aCAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUwOSwzOCArMTUwOSwzNyBAQCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZ1bmN0aW9u
UGFyYW1ldGVyCiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi1zdGF0aWMgQ29sb3Igc2VsZWN0Rmly
c3RDb2xvclRoYXRNZWV0c09yRXhjZWVkc1RhcmdldENvbnRyYXN0KGNvbnN0IENvbG9yJiBvcmln
aW5CYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IFZlY3RvcjxDb2xvcj4mIGNvbG9yc1RvQ29tcGFyZUFn
YWluc3QsIGRvdWJsZSB0YXJnZXRDb250cmFzdCkKK3N0YXRpYyBDb2xvciBzZWxlY3RGaXJzdENv
bG9yVGhhdE1lZXRzT3JFeGNlZWRzVGFyZ2V0Q29udHJhc3QoY29uc3QgQ29sb3ImIG9yaWdpbkJh
Y2tncm91bmRDb2xvciwgVmVjdG9yPENvbG9yPiYmIGNvbG9yc1RvQ29tcGFyZUFnYWluc3QsIGRv
dWJsZSB0YXJnZXRDb250cmFzdCkKIHsKICAgICBhdXRvIG9yaWdpbkJhY2tncm91bmRDb2xvckx1
bWluYW5jZSA9IG9yaWdpbkJhY2tncm91bmRDb2xvci5sdW1pbmFuY2UoKTsKIAogICAgIGZvciAo
YXV0byYgY29sb3IgOiBjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0KSB7Ci0gICAgICAgIGF1dG8gY29u
dHJhc3RSYXRpbyA9IFdlYkNvcmU6OmNvbnRyYXN0UmF0aW8ob3JpZ2luQmFja2dyb3VuZENvbG9y
THVtaW5hbmNlLCBjb2xvci5sdW1pbmFuY2UoKSk7Ci0gICAgICAgIGlmIChjb250cmFzdFJhdGlv
ID49IHRhcmdldENvbnRyYXN0KQotICAgICAgICAgICAgcmV0dXJuIGNvbG9yOworICAgICAgICBp
ZiAoY29udHJhc3RSYXRpbyhvcmlnaW5CYWNrZ3JvdW5kQ29sb3JMdW1pbmFuY2UsIGNvbG9yLmx1
bWluYW5jZSgpKSA+PSB0YXJnZXRDb250cmFzdCkKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3Zl
KGNvbG9yKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBJZiB0aGVyZSBpcyBhIHRhcmdldCBjb250
cmFzdCwgYW5kIHRoZSBlbmQgb2YgdGhlIGxpc3QgaXMgcmVhY2hlZCB3aXRob3V0IG1lZXRpbmcg
dGhhdCB0YXJnZXQsCiAgICAgLy8gZWl0aGVyIHdoaXRlIG9yIGJsYWNrIGlzIHJldHVybmVkLCB3
aGljaGV2ZXIgaGFzIHRoZSBoaWdoZXIgY29udHJhc3QuCi0gICAgYXV0byBjb250cmFzdFJhdGlv
V2l0aFdoaXRlID0gV2ViQ29yZTo6Y29udHJhc3RSYXRpbyhvcmlnaW5CYWNrZ3JvdW5kQ29sb3JM
dW1pbmFuY2UsIDEuMGYpOwotICAgIGF1dG8gY29udHJhc3RSYXRpb1dpdGhCbGFjayA9IFdlYkNv
cmU6OmNvbnRyYXN0UmF0aW8ob3JpZ2luQmFja2dyb3VuZENvbG9yTHVtaW5hbmNlLCAwLjBmKTsK
LSAgICByZXR1cm4gY29udHJhc3RSYXRpb1dpdGhXaGl0ZSA+IGNvbnRyYXN0UmF0aW9XaXRoQmxh
Y2sgPyBDb2xvcjo6d2hpdGUgOiBDb2xvcjo6YmxhY2s7CisgICAgYXV0byBjb250cmFzdFdpdGhX
aGl0ZSA9IGNvbnRyYXN0UmF0aW8ob3JpZ2luQmFja2dyb3VuZENvbG9yTHVtaW5hbmNlLCAxLjAp
OworICAgIGF1dG8gY29udHJhc3RXaXRoQmxhY2sgPSBjb250cmFzdFJhdGlvKG9yaWdpbkJhY2tn
cm91bmRDb2xvckx1bWluYW5jZSwgMC4wKTsKKyAgICByZXR1cm4gY29udHJhc3RXaXRoV2hpdGUg
PiBjb250cmFzdFdpdGhCbGFjayA/IENvbG9yOjp3aGl0ZSA6IENvbG9yOjpibGFjazsKIH0KIAot
c3RhdGljIENvbG9yIHNlbGVjdEZpcnN0Q29sb3JXaXRoSGlnaGVzdENvbnRyYXN0KGNvbnN0IENv
bG9yJiBvcmlnaW5CYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IFZlY3RvcjxDb2xvcj4mIGNvbG9yc1Rv
Q29tcGFyZUFnYWluc3QpCitzdGF0aWMgQ29sb3Igc2VsZWN0Rmlyc3RDb2xvcldpdGhIaWdoZXN0
Q29udHJhc3QoY29uc3QgQ29sb3ImIG9yaWdpbkJhY2tncm91bmRDb2xvciwgVmVjdG9yPENvbG9y
PiYmIGNvbG9yc1RvQ29tcGFyZUFnYWluc3QpCiB7CiAgICAgYXV0byBvcmlnaW5CYWNrZ3JvdW5k
Q29sb3JMdW1pbmFuY2UgPSBvcmlnaW5CYWNrZ3JvdW5kQ29sb3IubHVtaW5hbmNlKCk7CiAKLSAg
ICBzaXplX3QgaW5kZXhPZkNvbG9yV2l0aEhpZ2VzdENvbnRyYXN0UmF0aW8gPSAwOwotICAgIGZs
b2F0IGhpZ2hlc3RDb250cmFzdFJhdGlvU29GYXIgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY29sb3JzVG9Db21wYXJlQWdhaW5zdC5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRv
IGNvbnRyYXN0UmF0aW8gPSBXZWJDb3JlOjpjb250cmFzdFJhdGlvKG9yaWdpbkJhY2tncm91bmRD
b2xvckx1bWluYW5jZSwgY29sb3JzVG9Db21wYXJlQWdhaW5zdFtpXS5sdW1pbmFuY2UoKSk7Ci0g
ICAgICAgIGlmIChjb250cmFzdFJhdGlvID4gaGlnaGVzdENvbnRyYXN0UmF0aW9Tb0Zhcikgewot
ICAgICAgICAgICAgaGlnaGVzdENvbnRyYXN0UmF0aW9Tb0ZhciA9IGNvbnRyYXN0UmF0aW87Ci0g
ICAgICAgICAgICBpbmRleE9mQ29sb3JXaXRoSGlnZXN0Q29udHJhc3RSYXRpbyA9IGk7CisgICAg
YXV0byogY29sb3JXaXRoR3JlYXRlc3RDb250cmFzdCA9ICZjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0
WzBdOworICAgIGRvdWJsZSBncmVhdGVzdENvbnRyYXN0U29GYXIgPSAwOworICAgIGZvciAoYXV0
byYgY29sb3IgOiBjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0KSB7CisgICAgICAgIGF1dG8gY29udHJh
c3QgPSBjb250cmFzdFJhdGlvKG9yaWdpbkJhY2tncm91bmRDb2xvckx1bWluYW5jZSwgY29sb3Iu
bHVtaW5hbmNlKCkpOworICAgICAgICBpZiAoY29udHJhc3QgPiBncmVhdGVzdENvbnRyYXN0U29G
YXIpIHsKKyAgICAgICAgICAgIGdyZWF0ZXN0Q29udHJhc3RTb0ZhciA9IGNvbnRyYXN0OworICAg
ICAgICAgICAgY29sb3JXaXRoR3JlYXRlc3RDb250cmFzdCA9ICZjb2xvcjsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHJldHVybiBjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0W2luZGV4T2ZDb2xvcldp
dGhIaWdlc3RDb250cmFzdFJhdGlvXTsKKyAgICByZXR1cm4gV1RGTW92ZSgqY29sb3JXaXRoR3Jl
YXRlc3RDb250cmFzdCk7CiB9CiAKIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yQ29udHJhc3RGdW5j
dGlvblBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQpCkBAIC0xNTkwLDExICsxNTg5LDExIEBAIHN0YXRpYyBDb2xvciBw
YXJzZUNvbG9yQ29udHJhc3RGdW5jdGlvblAKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAg
ICAgIAogICAgICAgICAvLyBXaGVuIGEgdGFyZ2V0IGNvbnN0YXN0IGlzIHNwZWNpZmllZCwgd2Ug
c2VsZWN0ICJ0aGUgZmlyc3QgY29sb3IgY29sb3IgdG8gbWVldCBvciBleGNlZWQgdGhlIHRhcmdl
dCBjb250cmFzdC4iCi0gICAgICAgIHJldHVybiBzZWxlY3RGaXJzdENvbG9yVGhhdE1lZXRzT3JF
eGNlZWRzVGFyZ2V0Q29udHJhc3Qob3JpZ2luQmFja2dyb3VuZENvbG9yLCBjb2xvcnNUb0NvbXBh
cmVBZ2FpbnN0LCAqdGFyZ2V0Q29udHJhc3QpOworICAgICAgICByZXR1cm4gc2VsZWN0Rmlyc3RD
b2xvclRoYXRNZWV0c09yRXhjZWVkc1RhcmdldENvbnRyYXN0KG9yaWdpbkJhY2tncm91bmRDb2xv
ciwgV1RGTW92ZShjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0KSwgKnRhcmdldENvbnRyYXN0KTsKICAg
ICB9CiAKICAgICAvLyBXaGVuIGEgdGFyZ2V0IGNvbnN0YXN0IGlzIE5PVCBzcGVjaWZpZWQsIHdl
IHNlbGVjdCAidGhlIGZpcnN0IGNvbG9yIHdpdGggdGhlIGhpZ2hlc3QgY29udHJhc3QgdG8gdGhl
IHNpbmdsZSBjb2xvci4iCi0gICAgcmV0dXJuIHNlbGVjdEZpcnN0Q29sb3JXaXRoSGlnaGVzdENv
bnRyYXN0KG9yaWdpbkJhY2tncm91bmRDb2xvciwgY29sb3JzVG9Db21wYXJlQWdhaW5zdCk7Cisg
ICAgcmV0dXJuIHNlbGVjdEZpcnN0Q29sb3JXaXRoSGlnaGVzdENvbnRyYXN0KG9yaWdpbkJhY2tn
cm91bmRDb2xvciwgV1RGTW92ZShjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0KSk7CiB9CiAKIGVudW0g
Y2xhc3MgQ29sb3JNaXhDb2xvclNwYWNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDMwICsx
MDksMjEgQEAgQ29sb3IgQ29sb3I6OmRhcmtlbmVkKCkgY29uc3QKICAgICByZXR1cm4gY29udmVy
dENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQTxmbG9hdD4geyBtdWx0aXBsaWVyICogciwgbXVs
dGlwbGllciAqIGcsIG11bHRpcGxpZXIgKiBiLCBhIH0pOwogfQogCi1mbG9hdCBDb2xvcjo6bGln
aHRuZXNzKCkgY29uc3QKK2RvdWJsZSBDb2xvcjo6bGlnaHRuZXNzKCkgY29uc3QKIHsKICAgICAv
LyBGSVhNRTogUmVwbGFjZSByZW1haW5pbmcgdXNlcyB3aXRoIGx1bWluYW5jZS4KICAgICBhdXRv
IFtyLCBnLCBiLCBhXSA9IHRvU1JHQkFMb3NzeTxmbG9hdD4oKTsKICAgICBhdXRvIFttaW4sIG1h
eF0gPSBzdGQ6Om1pbm1heCh7IHIsIGcsIGIgfSk7Ci0gICAgcmV0dXJuIDAuNWYgKiAobWF4ICsg
bWluKTsKKyAgICByZXR1cm4gMC41ICogKG1heCArIG1pbik7CiB9CiAKLWZsb2F0IENvbG9yOjps
dW1pbmFuY2UoKSBjb25zdAorZG91YmxlIENvbG9yOjpsdW1pbmFuY2UoKSBjb25zdAogewogICAg
IHJldHVybiBjYWxsT25VbmRlcmx5aW5nVHlwZShbJl0gKGNvbnN0IGF1dG8mIHVuZGVybHlpbmdD
b2xvcikgewogICAgICAgICByZXR1cm4gV2ViQ29yZTo6cmVsYXRpdmVMdW1pbmFuY2UodW5kZXJs
eWluZ0NvbG9yKTsKICAgICB9KTsKIH0KIAotZmxvYXQgQ29sb3I6OmNvbnRyYXN0UmF0aW8oY29u
c3QgQ29sb3ImIGNvbG9yQSwgY29uc3QgQ29sb3ImIGNvbG9yQikKLXsKLSAgICByZXR1cm4gY29s
b3JBLmNhbGxPblVuZGVybHlpbmdUeXBlKFsmXSAoY29uc3QgYXV0byYgdW5kZXJseWluZ0NvbG9y
QSkgewotICAgICAgICByZXR1cm4gY29sb3JCLmNhbGxPblVuZGVybHlpbmdUeXBlKFsmXSAoY29u
c3QgYXV0byYgdW5kZXJseWluZ0NvbG9yQikgewotICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OmNvbnRyYXN0UmF0aW8odW5kZXJseWluZ0NvbG9yQSwgdW5kZXJseWluZ0NvbG9yQik7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwotfQotCiBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGEoZmxvYXQg
YWxwaGEpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNhbGxPblVuZGVybHlpbmdUeXBlKFsmXSAoY29u
c3QgYXV0byYgdW5kZXJseWluZ0NvbG9yKSAtPiBDb2xvciB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw5
ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAgdWludDhfdCBhbHBoYUJ5dGUoKSBjb25zdCB7IHJldHVy
biBpc091dE9mTGluZSgpID8gY29udmVydEZsb2F0QWxwaGFUbzx1aW50OF90Pihhc091dE9mTGlu
ZSgpLmFscGhhKCkpIDogYXNJbmxpbmUoKS5hbHBoYTsgfQogICAgIGZsb2F0IGFscGhhQXNGbG9h
dCgpIGNvbnN0IHsgcmV0dXJuIGlzT3V0T2ZMaW5lKCkgPyBhc091dE9mTGluZSgpLmFscGhhKCkg
OiBjb252ZXJ0Qnl0ZUFscGhhVG88ZmxvYXQ+KGFzSW5saW5lKCkuYWxwaGEpOyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBmbG9hdCBsdW1pbmFuY2UoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBmbG9hdCBsaWdodG5lc3MoKSBjb25zdDsgLy8gRklYTUU6IFJlcGxhY2UgcmVtYWluaW5nIHVz
ZXMgd2l0aCBsdW1pbmFuY2UuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGZsb2F0IGNvbnRy
YXN0UmF0aW8oY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGRvdWJsZSBsdW1pbmFuY2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgbGln
aHRuZXNzKCkgY29uc3Q7IC8vIEZJWE1FOiBSZXBsYWNlIHJlbWFpbmluZyB1c2VzIHdpdGggbHVt
aW5hbmNlLgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gZGVjbHR5cGUoYXV0bykg
Y2FsbE9uVW5kZXJseWluZ1R5cGUoRnVuY3RvciYmKSBjb25zdDsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JMdW1pbmFuY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTHVtaW5hbmNlLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckx1bWlu
YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb2xvckx1bWluYW5jZS5oIgorCisjaW5jbHVk
ZSAiQ29sb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitkb3VibGUgY29udHJhc3RSYXRp
byhjb25zdCBDb2xvciYgY29sb3JBLCBjb25zdCBDb2xvciYgY29sb3JCKQoreworICAgIHJldHVy
biBjb2xvckEuY2FsbE9uVW5kZXJseWluZ1R5cGUoWyZdIChjb25zdCBhdXRvJiB1bmRlcmx5aW5n
Q29sb3JBKSB7CisgICAgICAgIHJldHVybiBjb2xvckIuY2FsbE9uVW5kZXJseWluZ1R5cGUoWyZd
IChjb25zdCBhdXRvJiB1bmRlcmx5aW5nQ29sb3JCKSB7CisgICAgICAgICAgICByZXR1cm4gY29u
dHJhc3RSYXRpbyh1bmRlcmx5aW5nQ29sb3JBLCB1bmRlcmx5aW5nQ29sb3JCKTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yTHVtaW5hbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JMdW1pbmFuY2UuaAkocmV2aXNpb24gMjc1OTIxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JMdW1pbmFuY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIENvbG9yVHlwZT4gaW5saW5lIGZsb2F0IHJlbGF0aXZlTHVtaW5hbmNlKGNvbnN0IENv
bG9yVHlwZSYgY29sb3IpCitjbGFzcyBDb2xvcjsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JU
eXBlPiBpbmxpbmUgZG91YmxlIHJlbGF0aXZlTHVtaW5hbmNlKGNvbnN0IENvbG9yVHlwZSYgY29s
b3IpCiB7CiAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVsYXRpdmVfbHVt
aW5hbmNlCiAKQEAgLTQ2LDcgKzQ4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBp
bmxpbmUgZmxvYQogICAgIHJldHVybiBjb252ZXJ0Q29sb3I8WFlaQTxmbG9hdCwgV2hpdGVQb2lu
dDo6RDY1Pj4oY29sb3IpLnk7CiB9CiAKLWlubGluZSBmbG9hdCBjb250cmFzdFJhdGlvKGZsb2F0
IHJlbGF0aXZlTHVtaW5hbmNlQSwgZmxvYXQgcmVsYXRpdmVMdW1pbmFuY2VCKQoraW5saW5lIGRv
dWJsZSBjb250cmFzdFJhdGlvKGRvdWJsZSByZWxhdGl2ZUx1bWluYW5jZUEsIGRvdWJsZSByZWxh
dGl2ZUx1bWluYW5jZUIpCiB7CiAgICAgLy8gVXNlcyB0aGUgV0NBRyAyLjAgZGVmaW5pdGlvbiBv
ZiBjb250cmFzdCByYXRpby4KICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLyNj
b250cmFzdC1yYXRpb2RlZgpAQCAtNTksOSArNjEsMTEgQEAgaW5saW5lIGZsb2F0IGNvbnRyYXN0
UmF0aW8oZmxvYXQgcmVsYXRpdgogICAgIHJldHVybiAobGlnaHRlckx1bWluYW5jZSArIDAuMDUp
IC8gKGRhcmtlckx1bWluYW5jZSArIDAuMDUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xv
clR5cGVBLCB0eXBlbmFtZSBDb2xvclR5cGVCPiBpbmxpbmUgZmxvYXQgY29udHJhc3RSYXRpbyhj
b25zdCBDb2xvclR5cGVBJiBjb2xvckEsIGNvbnN0IENvbG9yVHlwZUImIGNvbG9yQikKK3RlbXBs
YXRlPHR5cGVuYW1lIENvbG9yVHlwZUEsIHR5cGVuYW1lIENvbG9yVHlwZUI+IGlubGluZSBkb3Vi
bGUgY29udHJhc3RSYXRpbyhjb25zdCBDb2xvclR5cGVBJiBjb2xvckEsIGNvbnN0IENvbG9yVHlw
ZUImIGNvbG9yQikKIHsKICAgICByZXR1cm4gY29udHJhc3RSYXRpbyhyZWxhdGl2ZUx1bWluYW5j
ZShjb2xvckEpLCByZWxhdGl2ZUx1bWluYW5jZShjb2xvckIpKTsKIH0KIAorZG91YmxlIGNvbnRy
YXN0UmF0aW8oY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOworCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRl
ICJDb2xvckJsZW5kaW5nLmgiCisjaW5jbHVkZSAiQ29sb3JMdW1pbmFuY2UuaCIKICNpbmNsdWRl
ICJDb250cm9sU3RhdGVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxl
TGlzdC5oIgpAQCAtMTQwOSw3ICsxNDEwLDcgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnRhcEhpZ2hs
aWdodENvbG9yKCkKICNlbmRpZgogCiAvLyBWYWx1ZSBjaG9zZW4gYnkgb2JzZXJ2YXRpb24uIFRo
aXMgY2FuIGJlIHR3ZWFrZWQuCi1jb25zdGV4cHIgZmxvYXQgbWluQ29sb3JDb250cmFzdFZhbHVl
ID0gMS4xOTVmOworY29uc3RleHByIGRvdWJsZSBtaW5Db2xvckNvbnRyYXN0VmFsdWUgPSAxLjE5
NTsKIAogLy8gRm9yIHRyYW5zcGFyZW50IG9yIHRyYW5zbHVjZW50IGJhY2tncm91bmQgY29sb3Is
IHVzZSBsaWdodGVuaW5nLgogY29uc3RleHByIGZsb2F0IG1pbkRpc2FibGVkQ29sb3JBbHBoYVZh
bHVlID0gMC41ZjsKQEAgLTE0MjcsNyArMTQyOCw3IEBAIENvbG9yIFJlbmRlclRoZW1lOjpkaXNh
YmxlZFRleHRDb2xvcihjb24KICAgICAvLyBJZiB0aGVyZSdzIG5vdCB2ZXJ5IG11Y2ggY29udHJh
c3QgYmV0d2VlbiB0aGUgZGlzYWJsZWQgY29sb3IgYW5kIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLAog
ICAgIC8vIGp1c3QgbGVhdmUgdGhlIHRleHQgY29sb3IgYWxvbmUuIFdlIGRvbid0IHdhbnQgdG8g
Y2hhbmdlIGEgZ29vZCBjb250cmFzdCBjb2xvciBzY2hlbWUgc28gdGhhdCBpdCBoYXMgcmVhbGx5
IGJhZCBjb250cmFzdC4KICAgICAvLyBJZiB0aGUgY29udHJhc3Qgd2FzIGFscmVhZHkgcG9vciwg
dGhlbiBpdCBkb2Vzbid0IGRvIGFueSBnb29kIHRvIGNoYW5nZSBpdCB0byBhIGRpZmZlcmVudCBw
b29yIGNvbnRyYXN0IGNvbG9yIHNjaGVtZS4KLSAgICBpZiAoQ29sb3I6OmNvbnRyYXN0UmF0aW8o
ZGlzYWJsZWRDb2xvciwgYmFja2dyb3VuZENvbG9yKSA8IG1pbkNvbG9yQ29udHJhc3RWYWx1ZSkK
KyAgICBpZiAoY29udHJhc3RSYXRpbyhkaXNhYmxlZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpIDwg
bWluQ29sb3JDb250cmFzdFZhbHVlKQogICAgICAgICByZXR1cm4gdGV4dENvbG9yOwogCiAgICAg
cmV0dXJuIGRpc2FibGVkQ29sb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dFBhaW50U3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0UGFpbnRTdHlsZS5jcHAJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgogCi0j
aW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJDb2xvckx1bWluYW5jZS5oIgog
I2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgdGV4dENvbG9ySXNM
ZWdpYmxlQWdhaW5zdEJhY2tncm91bmQKIHsKICAgICAvLyBVc2VzIHRoZSBXQ0FHIDIuMCBkZWZp
bml0aW9uIG9mIGxlZ2liaWxpdHk6IGEgY29udHJhc3QgcmF0aW8gb2YgNC41OjEgb3IgZ3JlYXRl
ci4KICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLyN2aXN1YWwtYXVkaW8tY29u
dHJhc3QtY29udHJhc3QKLSAgICByZXR1cm4gQ29sb3I6OmNvbnRyYXN0UmF0aW8odGV4dENvbG9y
LCBiYWNrZ3JvdW5kQ29sb3IpID4gNC41OworICAgIHJldHVybiBjb250cmFzdFJhdGlvKHRleHRD
b2xvciwgYmFja2dyb3VuZENvbG9yKSA+IDQuNTsKIH0KIAogc3RhdGljIENvbG9yIGFkanVzdENv
bG9yRm9yVmlzaWJpbGl0eU9uQmFja2dyb3VuZChjb25zdCBDb2xvciYgdGV4dENvbG9yLCBjb25z
dCBDb2xvciYgYmFja2dyb3VuZENvbG9yKQo=
</data>
<flag name="review"
          id="446051"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="446067"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425990</attachid>
            <date>2021-04-14 08:58:08 -0700</date>
            <delta_ts>2021-04-14 17:15:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>17523</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDIxLTA0LTEzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgcmFuZ2UtZm9yIGxvb3AgaW4g
dGFyZ2V0IGNvbnRyYXN0IHNlbGVjdGlvbiB0byBzaW1wbGlmeS9pbXByb3ZlIGNvZGUgcmVhZGFi
aWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NDUxMgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZHJl
c3Mgc29tZSBhZGRpdGlvbmFsIHBvc3QgbGFuZGluZyBmZWVkYmFjayBmcm9tIERhcmluLgorCisg
ICAgICAgIC0gVXNlIHJhbmdlLWZvciBsb29wIGluIHRhcmdldCBjb250cmFzdCBzZWxlY3Rpb24u
CisgICAgICAgIC0gVXNlIGRvdWJsZSB0byByZXByZXNlbnQgbHVtaW5hbmNlLCBsaWdodG5lc3Mg
YW5kIGNvbnRyYXN0IGV2ZXJ5d2hlcmUuCisgICAgICAgICAgVGhpcyBhdm9pZCB1bm5lY2Vzc2Fy
eSBjb252ZXJzaW9ucyB0byBhbmQgZnJvbSBmbG9hdC4KKyAgICAgICAgLSBSZW5hbWUgQ29sb3I6
OmNvbnRyYXN0UmF0aW8oQ29sb3IsIENvbG9yKSB0byBqdXN0IGNvbnRyYXN0UmF0aW8oQ29sb3Is
IENvbG9yKQorICAgICAgICAgIGFuZCBtb3ZlIGl0IENvbG9yTHVtaW5hbmNlLmgvY3BwIHdpdGgg
dGhlIG90aGVyIGNvbnRyYXN0UmF0aW8gb3ZlcmxvYWRzLgorCisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICBBZGQgQ29sb3JMdW1pbmFuY2UuY3BwCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnM6OnNlbGVjdEZpcnN0Q29sb3JUaGF0TWVldHNPckV4Y2VlZHNUYXJnZXRDb250cmFz
dCk6CisgICAgICAgIENvbnZlcnQgY29sb3JzVG9Db21wYXJlQWdhaW5zdCB0byBhbiByLXZhbHVl
IHNpbmNlIHZlY3RvciBpcyBuZXZlciB1c2VkIGFmdGVyCisgICAgICAgIGNhbGxpbmcgdGhpcy4K
KworICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpzZWxlY3RGaXJz
dENvbG9yV2l0aEhpZ2hlc3RDb250cmFzdCk6CisgICAgICAgIENvbnZlcnQgY29sb3JzVG9Db21w
YXJlQWdhaW5zdCB0byBhbiByLXZhbHVlIHNpbmNlIHZlY3RvciBpcyBuZXZlciB1c2VkIGFmdGVy
CisgICAgICAgIGNhbGxpbmcgdGhpcy4gQWxzbywgc3dpdGNoIHRvIGEgcmFuZ2UtZm9yIGxvb3Ag
dG8gYWlkIHJlYWRhYmlsaXR5LgorCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnM6OnBhcnNlQ29sb3JDb250cmFzdEZ1bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAg
IE1vdmUgY29sb3JzVG9Db21wYXJlQWdhaW5zdCB0byB0aGUgc2VsZWN0IGZ1bmN0aW9ucy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmxpZ2h0bmVzcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bHVtaW5hbmNlIGNvbnN0KToKKyAgICAg
ICAgVXNlIGRvdWJsZSB0byByZXByZXNlbnQgbGlnaHRuZXNzIGFuZCBsdW1pbmFuY2UuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbG9yOjpjb250cmFzdFJhdGlvKTogRGVsZXRlZC4KKyAgICAgICAg
TW92ZWQgdG8gQ29sb3JMdW1pbmFuY2UuaC9jcHAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yTHVtaW5hbmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb250cmFz
dFJhdGlvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckx1bWluYW5jZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6cmVsYXRpdmVMdW1pbmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udHJhc3RSYXRpbyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpkaXNhYmxlZFRleHRDb2xvciBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRleHRDb2xvcklzTGVnaWJsZUFnYWluc3RCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICBVc2Ug
ZG91YmxlIHRvIHJlcHJlc2VudCBsdW1pbmFuY2UgYW5kIGNvbnN0cmFzdCBldmVyeXdoZXJlLgor
CiAyMDIxLTA0LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgRGlzYWJsZSBZb3VUdWJlIEZsYXNoIGFuZCBRdWlja1RpbWUgcGx1ZyBpbiBy
ZXBsYWNlbWVudHMgb24gaU9TCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc1OTIxKQor
KysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5MzUsNiAr
MTkzNSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JMdW1pbmFuY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24uY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzU5MjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0
MjI0LDYgKzE0MjI1LDcgQEAKIAkJQkM2RDQ0RUEwQzA3RjJFRDAwNzJEMkM5IC8qIEpTSFRNTEVt
YmVkRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNI
VE1MRW1iZWRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2RDQ0
RUIwQzA3RjJFRDAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MRW1iZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDNkQ2RTI1MDlBRjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxWaWV3Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNkVCODQ1MjYyNjZCNjEwMDMyMjVBNyAvKiBDb2xvckx1
bWluYW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xvckx1bWluYW5jZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzcyQjM2MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NI
ZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0hlbHBlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzc3MkM0NDBDNEVCMkM2MDA4MzI4NUYgLyog
WE1MSHR0cFJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFhNTEh0dHBSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3NzJD
NDUwQzRFQjJDNjAwODMyODVGIC8qIFhNTEh0dHBSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjY3OTMsNiArMjY3OTQsNyBAQAogCQkJCTdDNTE0RTAyMjRBRjgwNTgwMDUwNzEw
RiAvKiBDb2xvckNvbnZlcnNpb24uY3BwICovLAogCQkJCTdDNTE0RTAwMjRBRjgwNTgwMDUwNzEw
RiAvKiBDb2xvckNvbnZlcnNpb24uaCAqLywKIAkJCQkzMTAzQjdERTFEQjAxNTU2MDA4QkI4OTAg
LyogQ29sb3JIYXNoLmggKi8sCisJCQkJQkM2RUI4NDUyNjI2NkI2MTAwMzIyNUE3IC8qIENvbG9y
THVtaW5hbmNlLmNwcCAqLywKIAkJCQlCQzRBMjNFQjI1RUMxNjAyMDBBQUM2MzAgLyogQ29sb3JM
dW1pbmFuY2UuaCAqLywKIAkJCQk3Q0FDNkFFODI0N0YwODIwMDBFNjFENTkgLyogQ29sb3JNYXRy
aXguaCAqLywKIAkJCQlCQzEwMTM3QjI1QzM2MjRCMDBEQzc3M0MgLyogQ29sb3JNb2RlbHMuaCAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5jcHAJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUwOSwzOCArMTUwOSwzNyBAQCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZ1bmN0aW9uUGFy
YW1ldGVyCiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi1zdGF0aWMgQ29sb3Igc2VsZWN0Rmlyc3RD
b2xvclRoYXRNZWV0c09yRXhjZWVkc1RhcmdldENvbnRyYXN0KGNvbnN0IENvbG9yJiBvcmlnaW5C
YWNrZ3JvdW5kQ29sb3IsIGNvbnN0IFZlY3RvcjxDb2xvcj4mIGNvbG9yc1RvQ29tcGFyZUFnYWlu
c3QsIGRvdWJsZSB0YXJnZXRDb250cmFzdCkKK3N0YXRpYyBDb2xvciBzZWxlY3RGaXJzdENvbG9y
VGhhdE1lZXRzT3JFeGNlZWRzVGFyZ2V0Q29udHJhc3QoY29uc3QgQ29sb3ImIG9yaWdpbkJhY2tn
cm91bmRDb2xvciwgVmVjdG9yPENvbG9yPiYmIGNvbG9yc1RvQ29tcGFyZUFnYWluc3QsIGRvdWJs
ZSB0YXJnZXRDb250cmFzdCkKIHsKICAgICBhdXRvIG9yaWdpbkJhY2tncm91bmRDb2xvckx1bWlu
YW5jZSA9IG9yaWdpbkJhY2tncm91bmRDb2xvci5sdW1pbmFuY2UoKTsKIAogICAgIGZvciAoYXV0
byYgY29sb3IgOiBjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0KSB7Ci0gICAgICAgIGF1dG8gY29udHJh
c3RSYXRpbyA9IFdlYkNvcmU6OmNvbnRyYXN0UmF0aW8ob3JpZ2luQmFja2dyb3VuZENvbG9yTHVt
aW5hbmNlLCBjb2xvci5sdW1pbmFuY2UoKSk7Ci0gICAgICAgIGlmIChjb250cmFzdFJhdGlvID49
IHRhcmdldENvbnRyYXN0KQotICAgICAgICAgICAgcmV0dXJuIGNvbG9yOworICAgICAgICBpZiAo
Y29udHJhc3RSYXRpbyhvcmlnaW5CYWNrZ3JvdW5kQ29sb3JMdW1pbmFuY2UsIGNvbG9yLmx1bWlu
YW5jZSgpKSA+PSB0YXJnZXRDb250cmFzdCkKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGNv
bG9yKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBJZiB0aGVyZSBpcyBhIHRhcmdldCBjb250cmFz
dCwgYW5kIHRoZSBlbmQgb2YgdGhlIGxpc3QgaXMgcmVhY2hlZCB3aXRob3V0IG1lZXRpbmcgdGhh
dCB0YXJnZXQsCiAgICAgLy8gZWl0aGVyIHdoaXRlIG9yIGJsYWNrIGlzIHJldHVybmVkLCB3aGlj
aGV2ZXIgaGFzIHRoZSBoaWdoZXIgY29udHJhc3QuCi0gICAgYXV0byBjb250cmFzdFJhdGlvV2l0
aFdoaXRlID0gV2ViQ29yZTo6Y29udHJhc3RSYXRpbyhvcmlnaW5CYWNrZ3JvdW5kQ29sb3JMdW1p
bmFuY2UsIDEuMGYpOwotICAgIGF1dG8gY29udHJhc3RSYXRpb1dpdGhCbGFjayA9IFdlYkNvcmU6
OmNvbnRyYXN0UmF0aW8ob3JpZ2luQmFja2dyb3VuZENvbG9yTHVtaW5hbmNlLCAwLjBmKTsKLSAg
ICByZXR1cm4gY29udHJhc3RSYXRpb1dpdGhXaGl0ZSA+IGNvbnRyYXN0UmF0aW9XaXRoQmxhY2sg
PyBDb2xvcjo6d2hpdGUgOiBDb2xvcjo6YmxhY2s7CisgICAgYXV0byBjb250cmFzdFdpdGhXaGl0
ZSA9IGNvbnRyYXN0UmF0aW8ob3JpZ2luQmFja2dyb3VuZENvbG9yTHVtaW5hbmNlLCAxLjApOwor
ICAgIGF1dG8gY29udHJhc3RXaXRoQmxhY2sgPSBjb250cmFzdFJhdGlvKG9yaWdpbkJhY2tncm91
bmRDb2xvckx1bWluYW5jZSwgMC4wKTsKKyAgICByZXR1cm4gY29udHJhc3RXaXRoV2hpdGUgPiBj
b250cmFzdFdpdGhCbGFjayA/IENvbG9yOjp3aGl0ZSA6IENvbG9yOjpibGFjazsKIH0KIAotc3Rh
dGljIENvbG9yIHNlbGVjdEZpcnN0Q29sb3JXaXRoSGlnaGVzdENvbnRyYXN0KGNvbnN0IENvbG9y
JiBvcmlnaW5CYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IFZlY3RvcjxDb2xvcj4mIGNvbG9yc1RvQ29t
cGFyZUFnYWluc3QpCitzdGF0aWMgQ29sb3Igc2VsZWN0Rmlyc3RDb2xvcldpdGhIaWdoZXN0Q29u
dHJhc3QoY29uc3QgQ29sb3ImIG9yaWdpbkJhY2tncm91bmRDb2xvciwgVmVjdG9yPENvbG9yPiYm
IGNvbG9yc1RvQ29tcGFyZUFnYWluc3QpCiB7CiAgICAgYXV0byBvcmlnaW5CYWNrZ3JvdW5kQ29s
b3JMdW1pbmFuY2UgPSBvcmlnaW5CYWNrZ3JvdW5kQ29sb3IubHVtaW5hbmNlKCk7CiAKLSAgICBz
aXplX3QgaW5kZXhPZkNvbG9yV2l0aEhpZ2VzdENvbnRyYXN0UmF0aW8gPSAwOwotICAgIGZsb2F0
IGhpZ2hlc3RDb250cmFzdFJhdGlvU29GYXIgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY29sb3JzVG9Db21wYXJlQWdhaW5zdC5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIGNv
bnRyYXN0UmF0aW8gPSBXZWJDb3JlOjpjb250cmFzdFJhdGlvKG9yaWdpbkJhY2tncm91bmRDb2xv
ckx1bWluYW5jZSwgY29sb3JzVG9Db21wYXJlQWdhaW5zdFtpXS5sdW1pbmFuY2UoKSk7Ci0gICAg
ICAgIGlmIChjb250cmFzdFJhdGlvID4gaGlnaGVzdENvbnRyYXN0UmF0aW9Tb0ZhcikgewotICAg
ICAgICAgICAgaGlnaGVzdENvbnRyYXN0UmF0aW9Tb0ZhciA9IGNvbnRyYXN0UmF0aW87Ci0gICAg
ICAgICAgICBpbmRleE9mQ29sb3JXaXRoSGlnZXN0Q29udHJhc3RSYXRpbyA9IGk7CisgICAgYXV0
byogY29sb3JXaXRoR3JlYXRlc3RDb250cmFzdCA9ICZjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0WzBd
OworICAgIGRvdWJsZSBncmVhdGVzdENvbnRyYXN0U29GYXIgPSAwOworICAgIGZvciAoYXV0byYg
Y29sb3IgOiBjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0KSB7CisgICAgICAgIGF1dG8gY29udHJhc3Qg
PSBjb250cmFzdFJhdGlvKG9yaWdpbkJhY2tncm91bmRDb2xvckx1bWluYW5jZSwgY29sb3IubHVt
aW5hbmNlKCkpOworICAgICAgICBpZiAoY29udHJhc3QgPiBncmVhdGVzdENvbnRyYXN0U29GYXIp
IHsKKyAgICAgICAgICAgIGdyZWF0ZXN0Q29udHJhc3RTb0ZhciA9IGNvbnRyYXN0OworICAgICAg
ICAgICAgY29sb3JXaXRoR3JlYXRlc3RDb250cmFzdCA9ICZjb2xvcjsKICAgICAgICAgfQogICAg
IH0KIAotICAgIHJldHVybiBjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0W2luZGV4T2ZDb2xvcldpdGhI
aWdlc3RDb250cmFzdFJhdGlvXTsKKyAgICByZXR1cm4gV1RGTW92ZSgqY29sb3JXaXRoR3JlYXRl
c3RDb250cmFzdCk7CiB9CiAKIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yQ29udHJhc3RGdW5jdGlv
blBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGNvbnRleHQpCkBAIC0xNTkwLDExICsxNTg5LDExIEBAIHN0YXRpYyBDb2xvciBwYXJz
ZUNvbG9yQ29udHJhc3RGdW5jdGlvblAKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
IAogICAgICAgICAvLyBXaGVuIGEgdGFyZ2V0IGNvbnN0YXN0IGlzIHNwZWNpZmllZCwgd2Ugc2Vs
ZWN0ICJ0aGUgZmlyc3QgY29sb3IgY29sb3IgdG8gbWVldCBvciBleGNlZWQgdGhlIHRhcmdldCBj
b250cmFzdC4iCi0gICAgICAgIHJldHVybiBzZWxlY3RGaXJzdENvbG9yVGhhdE1lZXRzT3JFeGNl
ZWRzVGFyZ2V0Q29udHJhc3Qob3JpZ2luQmFja2dyb3VuZENvbG9yLCBjb2xvcnNUb0NvbXBhcmVB
Z2FpbnN0LCAqdGFyZ2V0Q29udHJhc3QpOworICAgICAgICByZXR1cm4gc2VsZWN0Rmlyc3RDb2xv
clRoYXRNZWV0c09yRXhjZWVkc1RhcmdldENvbnRyYXN0KG9yaWdpbkJhY2tncm91bmRDb2xvciwg
V1RGTW92ZShjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0KSwgKnRhcmdldENvbnRyYXN0KTsKICAgICB9
CiAKICAgICAvLyBXaGVuIGEgdGFyZ2V0IGNvbnN0YXN0IGlzIE5PVCBzcGVjaWZpZWQsIHdlIHNl
bGVjdCAidGhlIGZpcnN0IGNvbG9yIHdpdGggdGhlIGhpZ2hlc3QgY29udHJhc3QgdG8gdGhlIHNp
bmdsZSBjb2xvci4iCi0gICAgcmV0dXJuIHNlbGVjdEZpcnN0Q29sb3JXaXRoSGlnaGVzdENvbnRy
YXN0KG9yaWdpbkJhY2tncm91bmRDb2xvciwgY29sb3JzVG9Db21wYXJlQWdhaW5zdCk7CisgICAg
cmV0dXJuIHNlbGVjdEZpcnN0Q29sb3JXaXRoSGlnaGVzdENvbnRyYXN0KG9yaWdpbkJhY2tncm91
bmRDb2xvciwgV1RGTW92ZShjb2xvcnNUb0NvbXBhcmVBZ2FpbnN0KSk7CiB9CiAKIGVudW0gY2xh
c3MgQ29sb3JNaXhDb2xvclNwYWNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDMwICsxMDks
MjEgQEAgQ29sb3IgQ29sb3I6OmRhcmtlbmVkKCkgY29uc3QKICAgICByZXR1cm4gY29udmVydENv
bG9yPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQTxmbG9hdD4geyBtdWx0aXBsaWVyICogciwgbXVsdGlw
bGllciAqIGcsIG11bHRpcGxpZXIgKiBiLCBhIH0pOwogfQogCi1mbG9hdCBDb2xvcjo6bGlnaHRu
ZXNzKCkgY29uc3QKK2RvdWJsZSBDb2xvcjo6bGlnaHRuZXNzKCkgY29uc3QKIHsKICAgICAvLyBG
SVhNRTogUmVwbGFjZSByZW1haW5pbmcgdXNlcyB3aXRoIGx1bWluYW5jZS4KICAgICBhdXRvIFty
LCBnLCBiLCBhXSA9IHRvU1JHQkFMb3NzeTxmbG9hdD4oKTsKICAgICBhdXRvIFttaW4sIG1heF0g
PSBzdGQ6Om1pbm1heCh7IHIsIGcsIGIgfSk7Ci0gICAgcmV0dXJuIDAuNWYgKiAobWF4ICsgbWlu
KTsKKyAgICByZXR1cm4gMC41ICogKG1heCArIG1pbik7CiB9CiAKLWZsb2F0IENvbG9yOjpsdW1p
bmFuY2UoKSBjb25zdAorZG91YmxlIENvbG9yOjpsdW1pbmFuY2UoKSBjb25zdAogewogICAgIHJl
dHVybiBjYWxsT25VbmRlcmx5aW5nVHlwZShbJl0gKGNvbnN0IGF1dG8mIHVuZGVybHlpbmdDb2xv
cikgewogICAgICAgICByZXR1cm4gV2ViQ29yZTo6cmVsYXRpdmVMdW1pbmFuY2UodW5kZXJseWlu
Z0NvbG9yKTsKICAgICB9KTsKIH0KIAotZmxvYXQgQ29sb3I6OmNvbnRyYXN0UmF0aW8oY29uc3Qg
Q29sb3ImIGNvbG9yQSwgY29uc3QgQ29sb3ImIGNvbG9yQikKLXsKLSAgICByZXR1cm4gY29sb3JB
LmNhbGxPblVuZGVybHlpbmdUeXBlKFsmXSAoY29uc3QgYXV0byYgdW5kZXJseWluZ0NvbG9yQSkg
ewotICAgICAgICByZXR1cm4gY29sb3JCLmNhbGxPblVuZGVybHlpbmdUeXBlKFsmXSAoY29uc3Qg
YXV0byYgdW5kZXJseWluZ0NvbG9yQikgewotICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNv
bnRyYXN0UmF0aW8odW5kZXJseWluZ0NvbG9yQSwgdW5kZXJseWluZ0NvbG9yQik7Ci0gICAgICAg
IH0pOwotICAgIH0pOwotfQotCiBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGEoZmxvYXQgYWxw
aGEpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNhbGxPblVuZGVybHlpbmdUeXBlKFsmXSAoY29uc3Qg
YXV0byYgdW5kZXJseWluZ0NvbG9yKSAtPiBDb2xvciB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw5ICsx
MDYsOCBAQCBwdWJsaWM6CiAgICAgdWludDhfdCBhbHBoYUJ5dGUoKSBjb25zdCB7IHJldHVybiBp
c091dE9mTGluZSgpID8gY29udmVydEZsb2F0QWxwaGFUbzx1aW50OF90Pihhc091dE9mTGluZSgp
LmFscGhhKCkpIDogYXNJbmxpbmUoKS5hbHBoYTsgfQogICAgIGZsb2F0IGFscGhhQXNGbG9hdCgp
IGNvbnN0IHsgcmV0dXJuIGlzT3V0T2ZMaW5lKCkgPyBhc091dE9mTGluZSgpLmFscGhhKCkgOiBj
b252ZXJ0Qnl0ZUFscGhhVG88ZmxvYXQ+KGFzSW5saW5lKCkuYWxwaGEpOyB9CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBmbG9hdCBsdW1pbmFuY2UoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBm
bG9hdCBsaWdodG5lc3MoKSBjb25zdDsgLy8gRklYTUU6IFJlcGxhY2UgcmVtYWluaW5nIHVzZXMg
d2l0aCBsdW1pbmFuY2UuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGZsb2F0IGNvbnRyYXN0
UmF0aW8oY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGRv
dWJsZSBsdW1pbmFuY2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgbGlnaHRu
ZXNzKCkgY29uc3Q7IC8vIEZJWE1FOiBSZXBsYWNlIHJlbWFpbmluZyB1c2VzIHdpdGggbHVtaW5h
bmNlLgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gZGVjbHR5cGUoYXV0bykgY2Fs
bE9uVW5kZXJseWluZ1R5cGUoRnVuY3RvciYmKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JMdW1pbmFuY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTHVtaW5hbmNlLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckx1bWluYW5j
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb2xvckx1bWluYW5jZS5oIgorCisjaW5jbHVkZSAi
Q29sb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitkb3VibGUgY29udHJhc3RSYXRpbyhj
b25zdCBDb2xvciYgY29sb3JBLCBjb25zdCBDb2xvciYgY29sb3JCKQoreworICAgIHJldHVybiBj
b2xvckEuY2FsbE9uVW5kZXJseWluZ1R5cGUoWyZdIChjb25zdCBhdXRvJiB1bmRlcmx5aW5nQ29s
b3JBKSB7CisgICAgICAgIHJldHVybiBjb2xvckIuY2FsbE9uVW5kZXJseWluZ1R5cGUoWyZdIChj
b25zdCBhdXRvJiB1bmRlcmx5aW5nQ29sb3JCKSB7CisgICAgICAgICAgICByZXR1cm4gY29udHJh
c3RSYXRpbyh1bmRlcmx5aW5nQ29sb3JBLCB1bmRlcmx5aW5nQ29sb3JCKTsKKyAgICAgICAgfSk7
CisgICAgfSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yTHVtaW5hbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JMdW1pbmFuY2UuaAkocmV2aXNpb24gMjc1OTIxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JMdW1pbmFuY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENvbG9yVHlwZT4gaW5saW5lIGZsb2F0IHJlbGF0aXZlTHVtaW5hbmNlKGNvbnN0IENvbG9y
VHlwZSYgY29sb3IpCitjbGFzcyBDb2xvcjsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBl
PiBpbmxpbmUgZG91YmxlIHJlbGF0aXZlTHVtaW5hbmNlKGNvbnN0IENvbG9yVHlwZSYgY29sb3Ip
CiB7CiAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVsYXRpdmVfbHVtaW5h
bmNlCiAKQEAgLTQ2LDcgKzQ4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBpbmxp
bmUgZmxvYQogICAgIHJldHVybiBjb252ZXJ0Q29sb3I8WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6
RDY1Pj4oY29sb3IpLnk7CiB9CiAKLWlubGluZSBmbG9hdCBjb250cmFzdFJhdGlvKGZsb2F0IHJl
bGF0aXZlTHVtaW5hbmNlQSwgZmxvYXQgcmVsYXRpdmVMdW1pbmFuY2VCKQoraW5saW5lIGRvdWJs
ZSBjb250cmFzdFJhdGlvKGRvdWJsZSByZWxhdGl2ZUx1bWluYW5jZUEsIGRvdWJsZSByZWxhdGl2
ZUx1bWluYW5jZUIpCiB7CiAgICAgLy8gVXNlcyB0aGUgV0NBRyAyLjAgZGVmaW5pdGlvbiBvZiBj
b250cmFzdCByYXRpby4KICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLyNjb250
cmFzdC1yYXRpb2RlZgpAQCAtNTksOSArNjEsMTEgQEAgaW5saW5lIGZsb2F0IGNvbnRyYXN0UmF0
aW8oZmxvYXQgcmVsYXRpdgogICAgIHJldHVybiAobGlnaHRlckx1bWluYW5jZSArIDAuMDUpIC8g
KGRhcmtlckx1bWluYW5jZSArIDAuMDUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5
cGVBLCB0eXBlbmFtZSBDb2xvclR5cGVCPiBpbmxpbmUgZmxvYXQgY29udHJhc3RSYXRpbyhjb25z
dCBDb2xvclR5cGVBJiBjb2xvckEsIGNvbnN0IENvbG9yVHlwZUImIGNvbG9yQikKK3RlbXBsYXRl
PHR5cGVuYW1lIENvbG9yVHlwZUEsIHR5cGVuYW1lIENvbG9yVHlwZUI+IGlubGluZSBkb3VibGUg
Y29udHJhc3RSYXRpbyhjb25zdCBDb2xvclR5cGVBJiBjb2xvckEsIGNvbnN0IENvbG9yVHlwZUIm
IGNvbG9yQikKIHsKICAgICByZXR1cm4gY29udHJhc3RSYXRpbyhyZWxhdGl2ZUx1bWluYW5jZShj
b2xvckEpLCByZWxhdGl2ZUx1bWluYW5jZShjb2xvckIpKTsKIH0KIAorZG91YmxlIGNvbnRyYXN0
UmF0aW8oY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOworCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJD
b2xvckJsZW5kaW5nLmgiCisjaW5jbHVkZSAiQ29sb3JMdW1pbmFuY2UuaCIKICNpbmNsdWRlICJD
b250cm9sU3RhdGVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlTGlz
dC5oIgpAQCAtMTQwOSw3ICsxNDEwLDcgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdo
dENvbG9yKCkKICNlbmRpZgogCiAvLyBWYWx1ZSBjaG9zZW4gYnkgb2JzZXJ2YXRpb24uIFRoaXMg
Y2FuIGJlIHR3ZWFrZWQuCi1jb25zdGV4cHIgZmxvYXQgbWluQ29sb3JDb250cmFzdFZhbHVlID0g
MS4xOTVmOworY29uc3RleHByIGRvdWJsZSBtaW5Db2xvckNvbnRyYXN0VmFsdWUgPSAxLjE5NTsK
IAogLy8gRm9yIHRyYW5zcGFyZW50IG9yIHRyYW5zbHVjZW50IGJhY2tncm91bmQgY29sb3IsIHVz
ZSBsaWdodGVuaW5nLgogY29uc3RleHByIGZsb2F0IG1pbkRpc2FibGVkQ29sb3JBbHBoYVZhbHVl
ID0gMC41ZjsKQEAgLTE0MjcsNyArMTQyOCw3IEBAIENvbG9yIFJlbmRlclRoZW1lOjpkaXNhYmxl
ZFRleHRDb2xvcihjb24KICAgICAvLyBJZiB0aGVyZSdzIG5vdCB2ZXJ5IG11Y2ggY29udHJhc3Qg
YmV0d2VlbiB0aGUgZGlzYWJsZWQgY29sb3IgYW5kIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLAogICAg
IC8vIGp1c3QgbGVhdmUgdGhlIHRleHQgY29sb3IgYWxvbmUuIFdlIGRvbid0IHdhbnQgdG8gY2hh
bmdlIGEgZ29vZCBjb250cmFzdCBjb2xvciBzY2hlbWUgc28gdGhhdCBpdCBoYXMgcmVhbGx5IGJh
ZCBjb250cmFzdC4KICAgICAvLyBJZiB0aGUgY29udHJhc3Qgd2FzIGFscmVhZHkgcG9vciwgdGhl
biBpdCBkb2Vzbid0IGRvIGFueSBnb29kIHRvIGNoYW5nZSBpdCB0byBhIGRpZmZlcmVudCBwb29y
IGNvbnRyYXN0IGNvbG9yIHNjaGVtZS4KLSAgICBpZiAoQ29sb3I6OmNvbnRyYXN0UmF0aW8oZGlz
YWJsZWRDb2xvciwgYmFja2dyb3VuZENvbG9yKSA8IG1pbkNvbG9yQ29udHJhc3RWYWx1ZSkKKyAg
ICBpZiAoY29udHJhc3RSYXRpbyhkaXNhYmxlZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpIDwgbWlu
Q29sb3JDb250cmFzdFZhbHVlKQogICAgICAgICByZXR1cm4gdGV4dENvbG9yOwogCiAgICAgcmV0
dXJuIGRpc2FibGVkQ29sb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50U3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
UGFpbnRTdHlsZS5jcHAJKHJldmlzaW9uIDI3NTkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0UGFpbnRTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgogCi0jaW5j
bHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJDb2xvckx1bWluYW5jZS5oIgogI2lu
Y2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgdGV4dENvbG9ySXNMZWdp
YmxlQWdhaW5zdEJhY2tncm91bmQKIHsKICAgICAvLyBVc2VzIHRoZSBXQ0FHIDIuMCBkZWZpbml0
aW9uIG9mIGxlZ2liaWxpdHk6IGEgY29udHJhc3QgcmF0aW8gb2YgNC41OjEgb3IgZ3JlYXRlci4K
ICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvV0NBRzIwLyN2aXN1YWwtYXVkaW8tY29udHJh
c3QtY29udHJhc3QKLSAgICByZXR1cm4gQ29sb3I6OmNvbnRyYXN0UmF0aW8odGV4dENvbG9yLCBi
YWNrZ3JvdW5kQ29sb3IpID4gNC41OworICAgIHJldHVybiBjb250cmFzdFJhdGlvKHRleHRDb2xv
ciwgYmFja2dyb3VuZENvbG9yKSA+PSA0LjU7CiB9CiAKIHN0YXRpYyBDb2xvciBhZGp1c3RDb2xv
ckZvclZpc2liaWxpdHlPbkJhY2tncm91bmQoY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3Qg
Q29sb3ImIGJhY2tncm91bmRDb2xvcikK
</data>

          </attachment>
      

    </bug>

</bugzilla>