<?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>221519</bug_id>
          
          <creation_ts>2021-02-06 09:11:16 -0800</creation_ts>
          <short_desc>Remove more special cases from color conversion</short_desc>
          <delta_ts>2021-02-10 14:37:34 -0800</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>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>samuel_white</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1726392</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-06 09:11:16 -0800</bug_when>
    <thetext>Remove more special cases from color conversion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726393</commentid>
    <comment_count>1</comment_count>
      <attachid>419504</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-06 09:34:12 -0800</bug_when>
    <thetext>Created attachment 419504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726394</commentid>
    <comment_count>2</comment_count>
      <attachid>419505</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-06 09:36:38 -0800</bug_when>
    <thetext>Created attachment 419505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726395</commentid>
    <comment_count>3</comment_count>
      <attachid>419506</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-06 09:46:47 -0800</bug_when>
    <thetext>Created attachment 419506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726407</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-06 11:05:39 -0800</bug_when>
    <thetext>Hm, interesting failures. Looks like some 128s are now 127s. Must have gotten some rounding wrong somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726408</commentid>
    <comment_count>5</comment_count>
      <attachid>419510</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-06 11:09:54 -0800</bug_when>
    <thetext>Created attachment 419510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726437</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-06 19:06:08 -0800</bug_when>
    <thetext>Ok, I figured out what it is. This change causes the conversion of HWBA&lt;float&gt; -&gt; SRGBA&lt;uint8_t&gt; and HSLA&lt;float&gt; -&gt; SRGBA&lt;uint8_t&gt;, to take the generic path through XYZA, which, through the joys of floating point resolves in slightly different values.

Two ways to resolve this in the short term (in the long term, we should use the LCA approach outlined in ColorConversion.h to avoid this entirely):

- Add specialization for HWBA&lt;float&gt; -&gt; SRGBA&lt;uint8_t&gt; and HSLA&lt;float&gt; -&gt; SRGBA&lt;uint8_t&gt;
- Move SRGBA&lt;uint8_t&gt; back to the fallback conversion.

I think I am going to go with the second one for now, since it will work for other cases we might not have tests for and is a bit less code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726483</commentid>
    <comment_count>7</comment_count>
      <attachid>419539</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-07 08:57:33 -0800</bug_when>
    <thetext>Created attachment 419539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726485</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-07 09:59:21 -0800</bug_when>
    <thetext>Looks good to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726493</commentid>
    <comment_count>9</comment_count>
      <attachid>419539</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-02-07 11:04:36 -0800</bug_when>
    <thetext>Comment on attachment 419539
Patch

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

&gt; Source/WebCore/platform/graphics/ColorComponents.h:123
&gt; -    return {
&gt; -        std::max(a[0], b[0]),
&gt; -        std::max(a[1], b[1]),
&gt; -        std::max(a[2], b[2]),
&gt; -        std::max(a[3], b[3])
&gt; -    };
&gt; +    return mapColorComponents([](T c1, T c2) { return std::max(c1, c2); }, a, b);

these are nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726498</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-07 11:23:04 -0800</bug_when>
    <thetext>Committed r272474: &lt;https://commits.webkit.org/r272474&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419539.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726500</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-07 11:31:00 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #9)
&gt; Comment on attachment 419539 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=419539&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorComponents.h:123
&gt; &gt; -    return {
&gt; &gt; -        std::max(a[0], b[0]),
&gt; &gt; -        std::max(a[1], b[1]),
&gt; &gt; -        std::max(a[2], b[2]),
&gt; &gt; -        std::max(a[3], b[3])
&gt; &gt; -    };
&gt; &gt; +    return mapColorComponents([](T c1, T c2) { return std::max(c1, c2); }, a, b);
&gt; 
&gt; these are nice!

Templates are fun!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726787</commentid>
    <comment_count>12</comment_count>
      <attachid>419539</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-08 14:02:34 -0800</bug_when>
    <thetext>Comment on attachment 419539
Patch

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

&gt; Source/WebCore/platform/graphics/ColorComponents.h:70
&gt; +    for (size_t i = 0; i &lt; T::Size; ++i)

Maybe in future we should write it like this?

    for (decltype(T::Size) i = 0; ...

&gt; Source/WebCore/platform/graphics/ColorConversion.cpp:661
&gt; +        return std::lround(value * 255.0f);

A little surprised that std::lround is both needed and OK here. If we are guaranteed that the values are in the range 0-1, then maybe &quot;value + 0.5f&quot; would work better? If not, then isn’t it risky to chop the long result of std::lround by converting it to uint8_t?

The old code seems to clamp after calling std::lround and before converting the type to uint8_t, which is subtly different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726817</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-08 14:43:05 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 419539 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=419539&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorComponents.h:70
&gt; &gt; +    for (size_t i = 0; i &lt; T::Size; ++i)
&gt; 
&gt; Maybe in future we should write it like this?
&gt; 
&gt;     for (decltype(T::Size) i = 0; ...

Ooo, very nice. Indeed we should.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorConversion.cpp:661
&gt; &gt; +        return std::lround(value * 255.0f);
&gt; 
&gt; A little surprised that std::lround is both needed and OK here. If we are
&gt; guaranteed that the values are in the range 0-1, then maybe &quot;value + 0.5f&quot;
&gt; would work better? If not, then isn’t it risky to chop the long result of
&gt; std::lround by converting it to uint8_t?
&gt; 
&gt; The old code seems to clamp after calling std::lround and before converting
&gt; the type to uint8_t, which is subtly different.

Hm, you are right, I didn&apos;t actually mean to remove the clamp (I didn&apos;t intend to change the behavior at all). But I am not sure what right/best way of doing this conversion actually is. We are guaranteed now (via very heavy handed assertions) that value is in the range of 0.0f &lt;-&gt; 1.0f inclusive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727807</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-10 14:37:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/74206844&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419504</attachid>
            <date>2021-02-06 09:34:12 -0800</date>
            <delta_ts>2021-02-06 10:23:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221519-20210206093411.patch</filename>
            <type>text/plain</type>
            <size>34918</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wMi0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG1vcmUgc3BlY2lhbCBj
YXNlcyBmcm9tIGNvbG9yIGNvbnZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTUxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gUmVtb3ZlIHNwZWNpYWxpemVkIGNvbnZlcnRUbzw+IGZ1bmN0
aW9uIHdoaWNoIG9ubHkgZGlkIGNvbXBvbmVudAorICAgICAgICAgIHR5cGUgY29udmVyc2lvbiB3
aXRoIHRoZSBmdWxseSBnZW5lcmFsIGNvbnZlcnRDb2xvcjw+IGZ1bmN0aW9uLgorCisgICAgICAg
IC0gTWFrZSBDb2xvckNvbXBvbmVudHMgYSBiaXQgbW9yZSByZWFkeSBmb3Igbm9uLTQgY29tcG9u
ZW50IGNvbG9ycyBieQorICAgICAgICAgIHJld29ya2luZyBtZW1iZXIgZnVuY3Rpb25hbGl0eSBi
YXNlZCBvbiBhIG5ldyBtYXBDb2xvckNvbXBvbmVudHMgZnVuY3Rpb24KKyAgICAgICAgICB3aGlj
aCBtYXBzIGEgZnVuY3Rpb24gRiBvdmVyIGFsbCB0aGUgY29tcG9uZW50cyBvZiBhIHNldCBvZiBD
b2xvckNvbXBvbmVudHMuCisgICAgICAgICAgZS5nLgorCisgICAgICAgICAgICAgIGF1dG8gY29s
b3JDb21wb25lbnRzQyA9IG1hcENvbG9yQ29tcG9uZW50cyhbXSAoYXV0byBhLCBhdXRvIGIpIHsg
cmV0dXJuIGEgKyBiOyB9LCBjb2xvckNvbXBvbmVudHNBLCBjb2xvckNvbXBvbmVudHNCKTsKKwor
ICAgICAgICAgIHdpbGwgY3JlYXRlIGEgbmV3IENvbG9yQ29tcG9uZW50cyB3aGVyZSBlYWNoIGNv
bXBvbmVudCBpcyB0aGUgc3VtIG9mIHRoZSAKKyAgICAgICAgICBjb3JyZXNwb25kaW5nIGNvbXBv
bmVudHMgaW4gY29sb3JDb21wb25lbnRzQSBhbmQgY29sb3JDb21wb25lbnRzQi4gSXQncworICAg
ICAgICAgIHZhcmlhZGljIHNvIGl0IGNhbiB0YWtlIGFueSBudW1iZXIgb2YgQ29sb3JDb21wb25l
bnRzLiBUaGlzIGFsbG93cyByZXdyaXRpbmcKKyAgICAgICAgICBhbGwgb2YgdGhlIG1lbWJlcnMg
dG8gYmUgc2l6ZSBpbnZhcmlhbnQgYW5kIGEgbGl0dGxlIGxlc3MgdmVyYm9zZS4KKworICAgICAg
ICAtIFJlcGxhY2Ugc3BlY2lhbCBjYXNlIGZvciB0aGUgaWRlbnRpdHkgY29udmVyc2lvbiBpbiB0
aGUgZmFsbGJhY2sgY29sb3IgY29udmVyc2lvbgorICAgICAgICAgIGNvZGUgcGF0aCwgYW5kIG1v
dmUgaXQgaW50byBpdCdzIG93biBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIG9mIENvbG9yQ29udmVy
c2lvbi4KKworICAgICAgICAtIFJlcGxhY2Ugc3BlY2lhbCBjYXNlIGZvciBjaHJvbWF0aWMgYWRh
cHRhdGlvbiBjb252ZXJzaW9ucyBhbmQgaGF2ZSB0aGVtIGp1c3QKKyAgICAgICAgICB1c2Ugc3Bl
Y2lhbGl6YXRpb25zIG9mIENvbG9yQ29udmVyc2lvbiBsaWtlIGFsbCBvdGhlciBjb252ZXJzaW9u
cy4KKworICAgICAgICAtIFJlcGxhY2Ugc3BlY2lhbCBjYXNlIGZvciBzUkdCIGNvbXBvbmVudCB0
eXBlIGNvbnZlcnNpb25zIGFuZCBoYXZlIHRoZW0ganVzdAorICAgICAgICAgIHVzZSBzcGVjaWFs
aXphdGlvbnMgb2YgQ29sb3JDb252ZXJzaW9uIGxpa2UgYWxsIG90aGVyIGNvbnZlcnNpb25zLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmg6CisgICAgICAg
IChXZWJDb3JlOjptYXBDb2xvckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JD
b21wb25lbnRzPFQ+OjptYXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25l
bnRzPFQ+OjpvcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVu
dHM8VD46OmFicyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpwZXJDb21wb25lbnRNYXgpOgor
ICAgICAgICAoV2ViQ29yZTo6cGVyQ29tcG9uZW50TWluKToKKyAgICAgICAgQWRkIG1hcCBhbmQg
bWFwQ29sb3JDb21wb25lbnRzIGFuZCByZS1pbXBsZW1lbnQgZXhpc3RpbmcKKyAgICAgICAgZnVu
Y3Rpb25hbGl0eSBpbiB0ZXJtcyBvZiB0aGVtLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoaXRlUG9pbnQ6OkQ1
MD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldoaXRlUG9pbnQ6OkQ2NT4+Ojpjb252
ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JBPHVpbnQ4X3Q+Pjo6Y29udmVydCk6CisgICAg
ICAgIChXZWJDb3JlOjpTUkdCQTxmbG9hdD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNSR0JBPHVpbnQ4X3Q+OjpSZWZlcmVuY2VYWVo+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2ludCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RnJvbUQ2NVdoaXRlUG9pbnRUb0Q1MFdoaXRlUG9pbnQp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb252ZXJzaW9uOjpjb252ZXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OnBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
VXNlIENvbG9yQ29udmVyc2lvbiBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBpZGVudGl0eSBjb252
ZXJzaW9uLCBjaG9tYXRpYyAKKyAgICAgICAgYWRhcGF0YXRpb24sIGFuZCBjb21wb25lbnQgdHlw
ZSBjb252ZXJzaW9ucywgcmF0aGVyIHRoYW4gaGFyZCBjb2RpbmcgdGhlbQorICAgICAgICBpbiB0
aGUgZmFsbGJhY2sgY29udmVyc2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVHlwZXMuaDoKKyAgICAgICAgU3BlY2lhbCBjYXNlIFNSR0JBPHVpbnQ4X3Q+IHRvIGhhdmUg
YSBSZWZlcmVuY2VYWVogb2YgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiwgYXMgCisgICAg
ICAgIFhZWkE8dWludDhfdCwgV2hpdGVQb2ludDo6RDY1PiBpcyBub3QgYSB2YWxpZCBjb2xvciAo
WFlaQSBvbmx5IHN1cHBvcnRzIGZsb2F0aW5nIHBvaW50CisgICAgICAgIGNvbXBvbmVudHMpLiBX
ZSBhcmUga2VlcGluZyBpdCBiYXNlZCBvbiBUIGluIG90aGVyIGNhc2VzIHRvIHN1cHBvcnQgZnV0
dXJlIGVmZm9ydHMgdG8gdXNlCisgICAgICAgIG90aGVyIGZsb2F0aW5nIHBvaW50IHR5cGVzIHdp
dGggdGhlc2UgY29sb3IgdHlwZXMgc3VjaCBhcyBoYWxmLWZsb2F0LgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRUbyk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBjb252ZXJ0VG88Piwgd2hpY2ggaXMgbm93
IHN1cGVyY2VlZGVkIGJ5IHRoZSBnZW5lcmFsIGNvbnZlcnRDb2xvcjw+LgorCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAg
ICAgICAod2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUNvbG9yU3RyaW5nVmFs
dWVdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0U2hhZG93KToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Q2FudmFz
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudCBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3I6OmxpZ2h0ZW5lZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6
ZGFya2VuZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNvbG9yU3BhY2VBbmRD
b21wb25lbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtl
U2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJyYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zOjp0cmFuc2Zvcm1Db2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zOjppbnZlcnNlVHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xv
cjo6Q29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvckZyb21OU0NvbG9yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb2xvcjo6Q29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0
Zm9ybUNvbnRleHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRDo6YnJ1c2hXaXRoQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Db2xv
cklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yRnJvbVVJQ29sb3IpOgorICAgICAgICBB
ZG9wdCBjb252ZXJ0Q29sb3I8PiB0byByZXBsYWNlIGNvbnZlcnRUbzw+LgorCiAyMDIxLTAyLTA2
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXVtR
dWlya10gS2VlcCB0aGUgcm9vdCBpbmxpbmUgYm94IGJhc2VsaW5lIGFuY2hvcmVkIGF0IDAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAJKHJldmlzaW9uIDI3MjQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQzLDcgKzQ0Myw3IEBAIHN0YXRpYyBn
Y2hhciogd2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXgKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQogICAgIGlmIChjb3JlT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6Q29sb3JXZWxsKSB7Ci0gICAgICAgIGF1dG8gY29sb3IgPSBjb252ZXJ0VG88U1JHQkE8
ZmxvYXQ+Pihjb3JlT2JqZWN0LT5jb2xvclZhbHVlKCkpOworICAgICAgICBhdXRvIGNvbG9yID0g
Y29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29yZU9iamVjdC0+Y29sb3JWYWx1ZSgpKTsKICAg
ICAgICAgcmV0dXJuIGdfc3RyZHVwX3ByaW50ZigicmdiICU3LjVmICU3LjVmICU3LjVmIDEiLCBj
b2xvci5yZWQsIGNvbG9yLmdyZWVuLCBjb2xvci5ibHVlKTsKICAgICB9CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCShyZXZpc2lvbiAyNzI0NjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ1Myw3ICsxNDUzLDcgQEAgLSAo
TlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5Q29sb3JTdHJpbmdWYQogICAgICAgICByZXR1cm4gbmls
OwogCiAgICAgaWYgKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5pc0NvbG9yV2VsbCgpKSB7Ci0gICAg
ICAgIGF1dG8gY29sb3IgPSBjb252ZXJ0VG88U1JHQkE8ZmxvYXQ+PihzZWxmLmF4QmFja2luZ09i
amVjdC0+Y29sb3JWYWx1ZSgpKTsKKyAgICAgICAgYXV0byBjb2xvciA9IGNvbnZlcnRDb2xvcjxT
UkdCQTxmbG9hdD4+KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5jb2xvclZhbHVlKCkpOwogICAgICAg
ICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJyZ2IgJTcuNWYgJTcuNWYgJTcu
NWYgMSIsIGNvbG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNvbG9yLmJsdWVdOwogICAgIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHJldmlzaW9uIDI3MjQ2
MikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzg1LDcgKzIzODUsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybiBA
KGJhY2tpbmdPYmplY3QtPmlzU2VsZWN0ZWQoKSk7CiAKICAgICAgICAgaWYgKGJhY2tpbmdPYmpl
Y3QtPmlzQ29sb3JXZWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gY29sb3IgPSBjb252ZXJ0VG88
U1JHQkE8ZmxvYXQ+PihiYWNraW5nT2JqZWN0LT5jb2xvclZhbHVlKCkpOworICAgICAgICAgICAg
YXV0byBjb2xvciA9IGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGJhY2tpbmdPYmplY3QtPmNv
bG9yVmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJyZ2IgJTcuNWYgJTcuNWYgJTcuNWYgMSIsIGNvbG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNv
bG9yLmJsdWVdOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCShyZXZp
c2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyNCw3ICsxMzI0LDcgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRTaAogICAgIGlmIChzdGQ6Omlz
bmFuKGdyYXlMZXZlbCkgfHwgc3RkOjppc25hbihhbHBoYSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIGNvbnZlcnRUbzxT
UkdCQTx1aW50OF90Pj4obWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+Pihn
cmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpKTsKKyAgICBzZXRTaGFkb3co
RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBibHVyLCBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhf
dD4+KG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nPFNSR0JBPGZsb2F0Pj4oZ3JheUxldmVsLCBn
cmF5TGV2ZWwsIGdyYXlMZXZlbCwgYWxwaGEpKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0
IGJsdXIsIGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCkBAIC0xMzMyLDcgKzEz
MzIsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFNoCiAgICAgaWYg
KHN0ZDo6aXNuYW4ocikgfHwgc3RkOjppc25hbihnKSB8fCBzdGQ6OmlzbmFuKGIpICB8fCBzdGQ6
OmlzbmFuKGEpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdp
ZHRoLCBoZWlnaHQpLCBibHVyLCBjb252ZXJ0VG88U1JHQkE8dWludDhfdD4+KG1ha2VGcm9tQ29t
cG9uZW50c0NsYW1waW5nPFNSR0JBPGZsb2F0Pj4ociwgZywgYiwgYSkpKTsKKyAgICBzZXRTaGFk
b3coRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBibHVyLCBjb252ZXJ0Q29sb3I8U1JHQkE8dWlu
dDhfdD4+KG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nPFNSR0JBPGZsb2F0Pj4ociwgZywgYiwg
YSkpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjbGVhclNoYWRv
dygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCShy
ZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHls
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgQ2FudmFzU3R5bGU6OkNhbnZh
c1N0eWxlKENvbG9yIGNvbG9yKQogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoY29uc3Qg
U1JHQkE8ZmxvYXQ+JiBjb2xvckNvbXBvbmVudHMpCi0gICAgOiBtX3N0eWxlKGNvbnZlcnRUbzxT
UkdCQTx1aW50OF90Pj4oY29sb3JDb21wb25lbnRzKSkKKyAgICA6IG1fc3R5bGUoY29udmVydENv
bG9yPFNSR0JBPHVpbnQ4X3Q+Pihjb2xvckNvbXBvbmVudHMpKQogewogfQogCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgYm9vbCBDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50Q29sb3IoY29ucwogCiBib29s
IENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnQoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb21wb25lbnRz
KSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENvbG9yPihtX3N0
eWxlKSAmJiBXVEY6OmdldDxDb2xvcj4obV9zdHlsZSkgPT0gY29udmVydFRvPFNSR0JBPHVpbnQ4
X3Q+Pihjb21wb25lbnRzKTsKKyAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxDb2xv
cj4obV9zdHlsZSkgJiYgV1RGOjpnZXQ8Q29sb3I+KG1fc3R5bGUpID09IGNvbnZlcnRDb2xvcjxT
UkdCQTx1aW50OF90Pj4oY29tcG9uZW50cyk7CiB9CiAKIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5
U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MSw3ICs5MSw3IEBAIENvbG9yIENvbG9yOjpsaWdodGVuZWQoKSBjb25zdAogCiAg
ICAgZmxvYXQgbXVsdGlwbGllciA9IHN0ZDo6bWluKDEuMGYsIHYgKyAwLjMzZikgLyB2OwogCi0g
ICAgcmV0dXJuIGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBtdWx0aXBsaWVyICog
ciwgbXVsdGlwbGllciAqIGcsIG11bHRpcGxpZXIgKiBiLCBhIH0pOworICAgIHJldHVybiBjb252
ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgbXVsdGlwbGllciAqIHIsIG11bHRpcGxp
ZXIgKiBnLCBtdWx0aXBsaWVyICogYiwgYSB9KTsKIH0KIAogQ29sb3IgQ29sb3I6OmRhcmtlbmVk
KCkgY29uc3QKQEAgLTEwNSw3ICsxMDUsNyBAQCBDb2xvciBDb2xvcjo6ZGFya2VuZWQoKSBjb25z
dAogICAgIGZsb2F0IHYgPSBzdGQ6Om1heCh7IHIsIGcsIGIgfSk7CiAgICAgZmxvYXQgbXVsdGlw
bGllciA9IHN0ZDo6bWF4KDAuMGYsICh2IC0gMC4zM2YpIC8gdik7CiAKLSAgICByZXR1cm4gY29u
dmVydFRvPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IG11bHRpcGxpZXIgKiByLCBtdWx0aXBsaWVy
ICogZywgbXVsdGlwbGllciAqIGIsIGEgfSk7CisgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdC
QTx1aW50OF90Pj4oU1JHQkEgeyBtdWx0aXBsaWVyICogciwgbXVsdGlwbGllciAqIGcsIG11bHRp
cGxpZXIgKiBiLCBhIH0pOwogfQogCiBmbG9hdCBDb2xvcjo6bGlnaHRuZXNzKCkgY29uc3QKQEAg
LTE2NSw3ICsxNjUsNyBAQCBzdGQ6OnBhaXI8Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZs
CiB7CiAgICAgaWYgKGlzRXh0ZW5kZWQoKSkKICAgICAgICAgcmV0dXJuIHsgYXNFeHRlbmRlZCgp
LmNvbG9yU3BhY2UoKSwgYXNFeHRlbmRlZCgpLmNvbXBvbmVudHMoKSB9OwotICAgIHJldHVybiB7
IENvbG9yU3BhY2U6OlNSR0IsIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRUbzxTUkdCQTxmbG9h
dD4+KGFzSW5saW5lKCkpKSB9OworICAgIHJldHVybiB7IENvbG9yU3BhY2U6OlNSR0IsIGFzQ29s
b3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGFzSW5saW5lKCkpKSB9Owog
fQogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDb2xvciYg
Y29sb3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBv
bmVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvckNvbXBvbmVudHMuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYg
KzQxLDkgQEAgc3RydWN0IENvbG9yQ29tcG9uZW50cyB7CiAgICAgewogICAgIH0KIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEY+CisgICAgY29uc3RleHByIGF1dG8gbWFwKEYmJiBmdW5jdGlvbikg
Y29uc3QgLT4gQ29sb3JDb21wb25lbnRzPGRlY2x0eXBlKGZ1bmN0aW9uKHN0ZDo6ZGVjbHZhbDxU
PigpKSk+OworCiAgICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50cyYgb3BlcmF0b3IrPShjb25z
dCBDb2xvckNvbXBvbmVudHMmKTsKIAogICAgIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHMgb3Bl
cmF0b3IrKFQpIGNvbnN0OwpAQCAtNTgsNTggKzYxLDUzIEBAIHN0cnVjdCBDb2xvckNvbXBvbmVu
dHMgewogICAgIHN0ZDo6YXJyYXk8VCwgU2l6ZT4gY29tcG9uZW50czsKIH07CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIFRzPgorY29uc3RleHByIGF1dG8g
bWFwQ29sb3JDb21wb25lbnRzKEYmJiBmdW5jdGlvbiwgVCBjb21wb25lbnQsIFRzLi4uIGNvbXBv
bmVudHMpIC0+IENvbG9yQ29tcG9uZW50czxkZWNsdHlwZShmdW5jdGlvbihjb21wb25lbnRbMF0s
IGNvbXBvbmVudHNbMF0uLi4pKT4KK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6Y29uanVuY3Rp
b25fdjxzdGQ6OmJvb2xfY29uc3RhbnQ8VHM6OlNpemUgPT0gVDo6U2l6ZT4uLi4+LCAiQWxsIENv
bG9yQ29tcG9uZW50cyBwYXNzZWQgdG8gbWFwQ29sb3JDb21wb25lbnRzIG11c3QgaGF2ZSB0aGUg
c2FtZSBzaXplIik7CisKKyAgICBDb2xvckNvbXBvbmVudHM8ZGVjbHR5cGUoZnVuY3Rpb24oY29t
cG9uZW50WzBdLCBjb21wb25lbnRzWzBdLi4uKSk+IHJlc3VsdDsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IFQ6OlNpemU7ICsraSkKKyAgICAgICAgcmVzdWx0W2ldID0gZnVuY3Rpb24oY29t
cG9uZW50W2ldLCBjb21wb25lbnRzW2ldLi4uKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgordGVtcGxhdGU8dHlwZW5hbWUgRj4KK2NvbnN0ZXhwciBhdXRv
IENvbG9yQ29tcG9uZW50czxUPjo6bWFwKEYmJiBmdW5jdGlvbikgY29uc3QgLT4gQ29sb3JDb21w
b25lbnRzPGRlY2x0eXBlKGZ1bmN0aW9uKHN0ZDo6ZGVjbHZhbDxUPigpKSk+Cit7CisgICAgcmV0
dXJuIG1hcENvbG9yQ29tcG9uZW50cyhzdGQ6OmZvcndhcmQ8Rj4oZnVuY3Rpb24pLCAqdGhpcyk7
Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+
JiBDb2xvckNvbXBvbmVudHM8VD46Om9wZXJhdG9yKz0oY29uc3QgQ29sb3JDb21wb25lbnRzJiBy
aHMpCiB7Ci0gICAgY29tcG9uZW50c1swXSArPSByaHNbMF07Ci0gICAgY29tcG9uZW50c1sxXSAr
PSByaHNbMV07Ci0gICAgY29tcG9uZW50c1syXSArPSByaHNbMl07Ci0gICAgY29tcG9uZW50c1sz
XSArPSByaHNbM107CisgICAgKnRoaXMgPSBtYXBDb2xvckNvbXBvbmVudHMoW10oVCBjMSwgVCBj
MikgeyByZXR1cm4gYzEgKyBjMjsgfSwgKnRoaXMsIHJocyk7CiAgICAgcmV0dXJuICp0aGlzOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBD
b2xvckNvbXBvbmVudHM8VD46Om9wZXJhdG9yKyhUIHJocykgY29uc3QKIHsKLSAgICByZXR1cm4g
ewotICAgICAgICBjb21wb25lbnRzWzBdICsgcmhzLAotICAgICAgICBjb21wb25lbnRzWzFdICsg
cmhzLAotICAgICAgICBjb21wb25lbnRzWzJdICsgcmhzLAotICAgICAgICBjb21wb25lbnRzWzNd
ICsgcmhzCi0gICAgfTsKKyAgICByZXR1cm4gbWFwKFtyaHNdKFQgYykgeyByZXR1cm4gYyArIHJo
czsgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JDb21wb25l
bnRzPFQ+IENvbG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IvKFQgZGVub21pbmF0b3IpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY29tcG9uZW50c1swXSAvIGRlbm9taW5hdG9yLAot
ICAgICAgICBjb21wb25lbnRzWzFdIC8gZGVub21pbmF0b3IsCi0gICAgICAgIGNvbXBvbmVudHNb
Ml0gLyBkZW5vbWluYXRvciwKLSAgICAgICAgY29tcG9uZW50c1szXSAvIGRlbm9taW5hdG9yCi0g
ICAgfTsKKyAgICByZXR1cm4gbWFwKFtkZW5vbWluYXRvcl0oVCBjKSB7IHJldHVybiBjIC8gZGVu
b21pbmF0b3I7IH0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY29uc3RleHByIENvbG9y
Q29tcG9uZW50czxUPiBDb2xvckNvbXBvbmVudHM8VD46Om9wZXJhdG9yKihUIGZhY3RvcikgY29u
c3QKIHsKLSAgICByZXR1cm4gewotICAgICAgICBjb21wb25lbnRzWzBdICogZmFjdG9yLAotICAg
ICAgICBjb21wb25lbnRzWzFdICogZmFjdG9yLAotICAgICAgICBjb21wb25lbnRzWzJdICogZmFj
dG9yLAotICAgICAgICBjb21wb25lbnRzWzNdICogZmFjdG9yCi0gICAgfTsKKyAgICByZXR1cm4g
bWFwKFtmYWN0b3JdKFQgYykgeyByZXR1cm4gYyAqIGZhY3RvcjsgfSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IENvbG9yQ29tcG9uZW50
czxUPjo6YWJzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gewotICAgICAgICBzdGQ6OmFicyhjb21w
b25lbnRzWzBdKSwKLSAgICAgICAgc3RkOjphYnMoY29tcG9uZW50c1sxXSksCi0gICAgICAgIHN0
ZDo6YWJzKGNvbXBvbmVudHNbMl0pLAotICAgICAgICBzdGQ6OmFicyhjb21wb25lbnRzWzNdKQot
ICAgIH07CisgICAgcmV0dXJuIG1hcChbXShUIGMpIHsgcmV0dXJuIHN0ZDo6YWJzKGMpOyB9KTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTEyMiwyMyArMTIwLDEzIEBAIGNvbnN0ZXhw
ciBUIENvbG9yQ29tcG9uZW50czxUPjo6Z2V0KCkgY28KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBj
b25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IHBlckNvbXBvbmVudE1heChjb25zdCBDb2xvckNv
bXBvbmVudHM8VD4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYikKIHsKLSAgICByZXR1
cm4gewotICAgICAgICBzdGQ6Om1heChhWzBdLCBiWzBdKSwKLSAgICAgICAgc3RkOjptYXgoYVsx
XSwgYlsxXSksCi0gICAgICAgIHN0ZDo6bWF4KGFbMl0sIGJbMl0pLAotICAgICAgICBzdGQ6Om1h
eChhWzNdLCBiWzNdKQotICAgIH07CisgICAgcmV0dXJuIG1hcENvbG9yQ29tcG9uZW50cyhbXShU
IGMxLCBUIGMyKSB7IHJldHVybiBzdGQ6Om1heChjMSwgYzIpOyB9LCBhLCBiKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9u
ZW50TWluKGNvbnN0IENvbG9yQ29tcG9uZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRz
PFQ+JiBiKQogewotICAgIHJldHVybiB7Ci0gICAgICAgIHN0ZDo6bWluKGFbMF0sIGJbMF0pLAot
ICAgICAgICBzdGQ6Om1pbihhWzFdLCBiWzFdKSwKLSAgICAgICAgc3RkOjptaW4oYVsyXSwgYlsy
XSksCi0gICAgICAgIHN0ZDo6bWluKGFbM10sIGJbM10pCi0gICAgfTsKKyAgICByZXR1cm4gbWFw
Q29sb3JDb21wb25lbnRzKFtdKFQgYzEsIFQgYzIpIHsgcmV0dXJuIHN0ZDo6bWluKGMxLCBjMik7
IH0sIGEsIGIpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCShyZXZp
c2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNv
bnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMTIgKzEzMywxMiBAQCBzdGF0aWMg
Y29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IEQ2NVRvCiAKIC8vIE1BUks6IENocm9tYXRpYyBB
ZGFwdGF0aW9uIGNvbnZlcnNpb25zLgogCi1YWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENjU+IGNv
bnZlcnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2ludChjb25zdCBYWVpBPGZsb2F0LCBX
aGl0ZVBvaW50OjpENTA+JiBjb2xvcikKK1hZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4gQ29s
b3JDb252ZXJzaW9uPFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4sIFhZWkE8ZmxvYXQsIFdo
aXRlUG9pbnQ6OkQ1MD4+Ojpjb252ZXJ0KGNvbnN0IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1
MD4mIGNvbG9yKQogewogICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2Vw
dEFscGhhPFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4+KEQ1MFRvRDY1TWF0cml4LnRyYW5z
Zm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCi1Y
WVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENTA+IGNvbnZlcnRGcm9tRDY1V2hpdGVQb2ludFRvRDUw
V2hpdGVQb2ludChjb25zdCBYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENjU+JiBjb2xvcikKK1hZ
WkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4gQ29sb3JDb252ZXJzaW9uPFhZWkE8ZmxvYXQsIFdo
aXRlUG9pbnQ6OkQ1MD4sIFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4+Ojpjb252ZXJ0KGNv
bnN0IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4mIGNvbG9yKQogewogICAgIHJldHVybiBt
YWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQsIFdoaXRlUG9p
bnQ6OkQ1MD4+KEQ2NVRvRDUwTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29s
b3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQpAQCAtNjQ2LDQgKzY0NiwzMCBAQCBTUkdCQTxmbG9h
dD4gQ29sb3JDb252ZXJzaW9uPFNSR0JBPGZsb2F0CiAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxT
UkdCQTxmbG9hdD4+KGNvbnZlcnRDb2xvcjxMaW5lYXJTUkdCQTxmbG9hdD4+KGNvbG9yKSk7CiB9
CiAKKy8vIE1BUks6IFNSR0JBPHVpbnQ4X3Q+IGNvbXBvbmVudCB0eXBlIGNvbnZlcnNpb25zLgor
CitTUkdCQTxmbG9hdD4gQ29sb3JDb252ZXJzaW9uPFNSR0JBPGZsb2F0PiwgU1JHQkE8dWludDhf
dD4+Ojpjb252ZXJ0KGNvbnN0IFNSR0JBPHVpbnQ4X3Q+JiBjb2xvcikKK3sKKyAgICByZXR1cm4g
bWFrZUZyb21Db21wb25lbnRzPFNSR0JBPGZsb2F0Pj4oYXNDb2xvckNvbXBvbmVudHMoY29sb3Ip
Lm1hcChbXSh1aW50OF90IHZhbHVlKSAtPiBmbG9hdCB7CisgICAgICAgIHJldHVybiB2YWx1ZSAv
IDI1NS4wZjsKKyAgICB9KSk7Cit9CisKK1NSR0JBPHVpbnQ4X3Q+IENvbG9yQ29udmVyc2lvbjxT
UkdCQTx1aW50OF90PiwgU1JHQkE8ZmxvYXQ+Pjo6Y29udmVydChjb25zdCBTUkdCQTxmbG9hdD4m
IGNvbG9yKQoreworICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8dWludDhfdD4+
KGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKS5tYXAoW10oZmxvYXQgdmFsdWUpIC0+IHVpbnQ4X3Qg
eworICAgICAgICByZXR1cm4gc3RkOjpscm91bmQodmFsdWUgKiAyNTUuMGYpOworICAgIH0pKTsK
K30KKworU1JHQkE8dWludDhfdD46OlJlZmVyZW5jZVhZWiBDb2xvckNvbnZlcnNpb248U1JHQkE8
dWludDhfdD46OlJlZmVyZW5jZVhZWiwgU1JHQkE8dWludDhfdD4+Ojpjb252ZXJ0KGNvbnN0IFNS
R0JBPHVpbnQ4X3Q+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPGZs
b2F0Pjo6UmVmZXJlbmNlWFlaPihjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwor
fQorCitTUkdCQTx1aW50OF90PiBDb2xvckNvbnZlcnNpb248U1JHQkE8dWludDhfdD4sIFNSR0JB
PHVpbnQ4X3Q+OjpSZWZlcmVuY2VYWVo+Ojpjb252ZXJ0KGNvbnN0IFNSR0JBPHVpbnQ4X3Q+OjpS
ZWZlcmVuY2VYWVomIGNvbG9yKQoreworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWlu
dDhfdD4+KGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMjk5LDI1ICsyOTksNDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29sb3JDb252ZXJzaW9uPEhX
QkE8ZgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIV0JBPGZsb2F0PiBjb252ZXJ0KGNvbnN0
IFNSR0JBPGZsb2F0PiYpOwogfTsKIAorLy8gU3BlY2lhbCBjYXNlcyBmb3IgU1JHQkE8dWludDhf
dD4uIE9ubHkgc1JHQiBzdXBwb3J0cyBub24tZmxvYXRpbmcgcG9pbnQgY29tcG9uZW50IHR5cGVz
LgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb2xvckNvbnZlcnNpb248U1JHQkE8dWludDhfdD46OlJl
ZmVyZW5jZVhZWiwgU1JHQkE8dWludDhfdD4+IHsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U1JHQkE8dWludDhfdD46OlJlZmVyZW5jZVhZWiBjb252ZXJ0KGNvbnN0IFNSR0JBPHVpbnQ4X3Q+
Jik7Cit9OwogCi0vLyBDaHJvbWF0aWMgQWRhcHRhdGlvbiBjb252ZXJzaW9ucy4KLVdFQkNPUkVf
RVhQT1JUIFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4gY29udmVydEZyb21ENTBXaGl0ZVBv
aW50VG9ENjVXaGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4mKTsK
LVdFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4gY29udmVydEZyb21E
NjVXaGl0ZVBvaW50VG9ENTBXaGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6
OkQ2NT4mKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgV2hpdGVQb2ludCBpbnB1dFdoaXRlUG9p
bnQ+IGNvbnN0ZXhwciB0eXBlbmFtZSBUOjpSZWZlcmVuY2VYWVogcGVyZm9ybUNob21hdGljQWRh
cGF0YXRpb24oY29uc3QgWFlaQTxmbG9hdCwgaW5wdXRXaGl0ZVBvaW50PiYgY29sb3IpCi17Ci0g
ICAgY29uc3RleHByIFdoaXRlUG9pbnQgb3V0cHV0V2hpdGVQb2ludCA9IFQ6OlJlZmVyZW5jZVhZ
Wjo6d2hpdGVQb2ludDsKK3RlbXBsYXRlPD4gc3RydWN0IENvbG9yQ29udmVyc2lvbjxTUkdCQTx1
aW50OF90PiwgU1JHQkE8dWludDhfdD46OlJlZmVyZW5jZVhZWj4geworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTUkdCQTx1aW50OF90PiBjb252ZXJ0KGNvbnN0IFNSR0JBPHVpbnQ4X3Q+OjpS
ZWZlcmVuY2VYWVomKTsKK307CiAKLSAgICBpZiBjb25zdGV4cHIgKG91dHB1dFdoaXRlUG9pbnQg
PT0gaW5wdXRXaGl0ZVBvaW50KQordGVtcGxhdGU8PiBzdHJ1Y3QgQ29sb3JDb252ZXJzaW9uPFNS
R0JBPGZsb2F0PiwgU1JHQkE8dWludDhfdD4+IHsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U1JHQkE8ZmxvYXQ+IGNvbnZlcnQoY29uc3QgU1JHQkE8dWludDhfdD4mKTsKK307CisKK3RlbXBs
YXRlPD4gc3RydWN0IENvbG9yQ29udmVyc2lvbjxTUkdCQTx1aW50OF90PiwgU1JHQkE8ZmxvYXQ+
PiB7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNSR0JBPHVpbnQ4X3Q+IGNvbnZlcnQoY29u
c3QgU1JHQkE8ZmxvYXQ+Jik7Cit9OworCisKKy8vIFhZWkEgQ2hyb21hdGljIEFkYXB0YXRpb24g
Y29udmVyc2lvbnMuCisKK3RlbXBsYXRlPD4gc3RydWN0IENvbG9yQ29udmVyc2lvbjxYWVpBPGZs
b2F0LCBXaGl0ZVBvaW50OjpENjU+LCBYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENTA+PiB7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4gY29u
dmVydChjb25zdCBYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENTA+Jik7Cit9OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBDb2xvckNvbnZlcnNpb248WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPiwg
WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1Pj4geworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENTA+IGNvbnZlcnQoY29uc3QgWFlaQTxmbG9hdCwg
V2hpdGVQb2ludDo6RDY1PiYpOworfTsKKworCisvLyBJZGVudGl0eSBjb252ZXJzaW9uLgorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IHN0cnVjdCBDb2xvckNvbnZlcnNpb248Q29sb3JU
eXBlLCBDb2xvclR5cGU+IHsKKyAgICBzdGF0aWMgQ29sb3JUeXBlIGNvbnZlcnQoY29uc3QgQ29s
b3JUeXBlJiBjb2xvcikKKyAgICB7CiAgICAgICAgIHJldHVybiBjb2xvcjsKLSAgICBlbHNlIGlm
IGNvbnN0ZXhwciAob3V0cHV0V2hpdGVQb2ludCA9PSBXaGl0ZVBvaW50OjpENTApCi0gICAgICAg
IHJldHVybiBjb252ZXJ0RnJvbUQ2NVdoaXRlUG9pbnRUb0Q1MFdoaXRlUG9pbnQoY29sb3IpOwot
ICAgIGVsc2UgaWYgY29uc3RleHByIChvdXRwdXRXaGl0ZVBvaW50ID09IFdoaXRlUG9pbnQ6OkQ2
NSkKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2lu
dChjb2xvcik7Ci19CisgICAgfQorfTsKIAotLy8gRmFsbGJhY2sgY29udmVyc2lvbnMuCisvLyBG
YWxsYmFjayBjb252ZXJzaW9uLgogCiAvLyBBbGwgdHlwZXMgYXJlIHJlcXVpcmVkIHRvIGhhdmUg
YSBjb252ZXJzaW9uIHRvIHRoZWlyIHJlZmVyZW5jZSBYWVogc3BhY2UsIHNvIHRoaXMgaXMgZ3Vh
cmFudGVlZAogLy8gdG8gd29yayBpZiBhbm90aGVyIHNwZWNpYWxpemF0aW9uIGlzIG5vdCBhbHJl
YWR5IHByb3ZpZGVkLgpAQCAtMzU3LDE3ICszNzgsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBX
aGl0ZVBvaW50IGlucHV0V2hpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXQsIHR5cGVuYW1lIElu
cHV0PiBzdHJ1Y3QgQ29sb3JDb252ZXJzaW9uIHsKICAgICBzdGF0aWMgT3V0cHV0IGNvbnZlcnQo
Y29uc3QgSW5wdXQmIGNvbG9yKQogICAgIHsKLSAgICAgICAgaWYgY29uc3RleHByKHN0ZDo6aXNf
c2FtZV92PE91dHB1dCwgSW5wdXQ+KQotICAgICAgICAgICAgcmV0dXJuIGNvbG9yOwotICAgICAg
ICBlbHNlIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8dHlwZW5hbWUgSW5wdXQ6OkNvbXBv
bmVudFR5cGUsIHVpbnQ4X3Q+KQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxPdXRw
dXQ+KGNvbnZlcnRUbzxTUkdCQTxmbG9hdD4+KGNvbG9yKSk7Ci0gICAgICAgIGVsc2UgaWYgY29u
c3RleHByIChzdGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBPdXRwdXQ6OkNvbXBvbmVudFR5cGUsIHVp
bnQ4X3Q+KQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4oY29u
dmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBhdXRvIHh5ejEgPSBjb252ZXJ0Q29sb3I8dHlwZW5hbWUgSW5wdXQ6OlJlZmVyZW5jZVhZ
Wj4oY29sb3IpOwotICAgICAgICAgICAgYXV0byB4eXoyID0gcGVyZm9ybUNob21hdGljQWRhcGF0
YXRpb248T3V0cHV0Pih4eXoxKTsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0Q29sb3I8T3V0
cHV0Pih4eXoyKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIHh5ejEgPSBjb252ZXJ0Q29sb3I8
dHlwZW5hbWUgSW5wdXQ6OlJlZmVyZW5jZVhZWj4oY29sb3IpOworICAgICAgICBhdXRvIHh5ejIg
PSBjb252ZXJ0Q29sb3I8dHlwZW5hbWUgT3V0cHV0OjpSZWZlcmVuY2VYWVo+KHh5ejEpOworICAg
ICAgICByZXR1cm4gY29udmVydENvbG9yPE91dHB1dD4oeHl6Mik7CiAgICAgfQogfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkocmV2
aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JU
eXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsNyArMzAxLDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gUmVjMjAyMChULCBULCBULCBUKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNS
R0JBIDogUkdCQVR5cGU8U1JHQkEsIFQsIFJHQk1vZGVsPFQ+PiB7CiAgICAgdXNpbmcgUkdCQVR5
cGU8U1JHQkEsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CiAgICAgdXNpbmcgTGluZWFyQ291
bnRlcnBhcnQgPSBMaW5lYXJTUkdCQTxUPjsKLSAgICB1c2luZyBSZWZlcmVuY2VYWVogPSBYWVpB
PFQsIFdoaXRlUG9pbnQ6OkQ2NT47CisgICAgdXNpbmcgUmVmZXJlbmNlWFlaID0gWFlaQTxzdGQ6
OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19zYW1lX3Y8VCwgdWludDhfdD4sIGZsb2F0LCBUPiwgV2hp
dGVQb2ludDo6RDY1PjsKIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQShULCBULCBULCBU
KSAtPiBTUkdCQTxUPjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclV0aWxpdGllcy5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNywgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTUwLDEwICs1MCw2IEBAIHVpbnQ4X3QgY29udmVydFByZXNjYWxlZFNSR0JBRmxvYXRUb1NS
R0IKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgY29udmVydEJ5dGVBbHBoYVRvKHVpbnQ4X3QpOwog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0RmxvYXRBbHBoYVRvKGZsb2F0KTsKIAotdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gVCBjb252ZXJ0VG8oY29uc3QgVSYpOwotdGVt
cGxhdGU8PiBTUkdCQTxmbG9hdD4gY29udmVydFRvKGNvbnN0IFNSR0JBPHVpbnQ4X3Q+Jik7Ci10
ZW1wbGF0ZTw+IFNSR0JBPHVpbnQ4X3Q+IGNvbnZlcnRUbyhjb25zdCBTUkdCQTxmbG9hdD4mKTsK
LQogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBGdW5jdG9yPiBDb2xvclR5
cGUgY29sb3JCeU1vZGlmaW5nRWFjaE5vbkFscGhhQ29tcG9uZW50KGNvbnN0IENvbG9yVHlwZSYs
IEZ1bmN0b3ImJik7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENv
bG9yVHlwZSBjb2xvcldpdGhPdmVycmlkZW5BbHBoYShjb25zdCBDb2xvclR5cGUmLCB1aW50OF90
IG92ZXJyaWRlQWxwaGEpOwpAQCAtNjIsMTMgKzU4LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENv
bG9yVHlwZT4gQ29sb3JUeXBlIGMKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3Rl
eHByIENvbG9yVHlwZSBpbnZlcnRlZENvbG9yV2l0aE92ZXJyaWRlbkFscGhhKGNvbnN0IENvbG9y
VHlwZSYsIHVpbnQ4X3Qgb3ZlcnJpZGVBbHBoYSk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5
cGU+IENvbG9yVHlwZSBpbnZlcnRlZENvbG9yV2l0aE92ZXJyaWRlbkFscGhhKGNvbnN0IENvbG9y
VHlwZSYsIGZsb2F0IG92ZXJyaWRlQWxwaGEpOwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5
cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lX3Y8dHlwZW5hbWUgQ29s
b3JUeXBlOjpNb2RlbCwgUkdCTW9kZWw8dHlwZW5hbWUgQ29sb3JUeXBlOjpDb21wb25lbnRUeXBl
Pj4+KiA9IG51bGxwdHI+IGNvbnN0ZXhwciBib29sIGlzQmxhY2soY29uc3QgQ29sb3JUeXBlJik7
Cit0ZW1wbGF0ZTxXaGl0ZVBvaW50IFc+IGNvbnN0ZXhwciBib29sIGlzQmxhY2soY29uc3QgWFla
QTxmbG9hdCwgVz4mKTsKIGNvbnN0ZXhwciBib29sIGlzQmxhY2soY29uc3QgTGFiPGZsb2F0PiYp
OwotdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIENvbG9yVHlwZTo6TW9kZWwsIFJHQk1vZGVsPHR5cGVu
YW1lIENvbG9yVHlwZTo6Q29tcG9uZW50VHlwZT4+PiogPSBudWxscHRyPgotY29uc3RleHByIGJv
b2wgaXNCbGFjayhjb25zdCBDb2xvclR5cGUmKTsKIAordGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JU
eXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIENv
bG9yVHlwZTo6TW9kZWwsIFJHQk1vZGVsPHR5cGVuYW1lIENvbG9yVHlwZTo6Q29tcG9uZW50VHlw
ZT4+PiogPSBudWxscHRyPiBjb25zdGV4cHIgYm9vbCBpc1doaXRlKGNvbnN0IENvbG9yVHlwZSYp
OwordGVtcGxhdGU8V2hpdGVQb2ludCBXPiBjb25zdGV4cHIgYm9vbCBpc1doaXRlKGNvbnN0IFhZ
WkE8ZmxvYXQsIFc+Jik7CiBjb25zdGV4cHIgYm9vbCBpc1doaXRlKGNvbnN0IExhYjxmbG9hdD4m
KTsKLXRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBDb2xvclR5cGU6Ok1vZGVsLCBSR0JNb2RlbDx0eXBl
bmFtZSBDb2xvclR5cGU6OkNvbXBvbmVudFR5cGU+Pj4qID0gbnVsbHB0cj4KLWNvbnN0ZXhwciBi
b29sIGlzV2hpdGUoY29uc3QgQ29sb3JUeXBlJik7CiAKIGNvbnN0ZXhwciB1aW50MTZfdCBmYXN0
TXVsdGlwbHlCeTI1NSh1aW50MTZfdCk7CiBjb25zdGV4cHIgdWludDE2X3QgZmFzdERpdmlkZUJ5
MjU1KHVpbnQxNl90KTsKQEAgLTk5LDI2ICs5NSw2IEBAIHRlbXBsYXRlPD4gaW5saW5lIGZsb2F0
IGNvbnZlcnRGbG9hdEFscGgKICAgICByZXR1cm4gY2xhbXBlZEFscGhhKHZhbHVlKTsKIH0KIAot
dGVtcGxhdGU8PiBpbmxpbmUgU1JHQkE8ZmxvYXQ+IGNvbnZlcnRUbyhjb25zdCBTUkdCQTx1aW50
OF90PiYgY29sb3IpCi17Ci0gICAgYXV0byBjb252ZXJ0VG9TUkdCQUZsb2F0ID0gW10odWludDhf
dCB2YWx1ZSkgLT4gZmxvYXQgewotICAgICAgICByZXR1cm4gdmFsdWUgLyAyNTUuMGY7Ci0gICAg
fTsKLQotICAgIGF1dG8gY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKTsKLSAg
ICByZXR1cm4geyBjb252ZXJ0VG9TUkdCQUZsb2F0KGNvbXBvbmVudHNbMF0pLCBjb252ZXJ0VG9T
UkdCQUZsb2F0KGNvbXBvbmVudHNbMV0pLCBjb252ZXJ0VG9TUkdCQUZsb2F0KGNvbXBvbmVudHNb
Ml0pLCBjb252ZXJ0VG9TUkdCQUZsb2F0KGNvbXBvbmVudHNbM10pIH07Ci19Ci0KLXRlbXBsYXRl
PD4gaW5saW5lIFNSR0JBPHVpbnQ4X3Q+IGNvbnZlcnRUbyhjb25zdCBTUkdCQTxmbG9hdD4mIGNv
bG9yKQotewotICAgIGF1dG8gY29udmVydFRvU1JHQkFCeXRlID0gW10oZmxvYXQgdmFsdWUpIC0+
IHVpbnQ4X3QgewotICAgICAgICByZXR1cm4gc3RkOjpjbGFtcChzdGQ6Omxyb3VuZCh2YWx1ZSAq
IDI1NS4wZiksIDBsLCAyNTVsKTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wb25lbnRzID0gYXND
b2xvckNvbXBvbmVudHMoY29sb3IpOwotICAgIHJldHVybiB7IGNvbnZlcnRUb1NSR0JBQnl0ZShj
b21wb25lbnRzWzBdKSwgY29udmVydFRvU1JHQkFCeXRlKGNvbXBvbmVudHNbMV0pLCBjb252ZXJ0
VG9TUkdCQUJ5dGUoY29tcG9uZW50c1syXSksIGNvbnZlcnRUb1NSR0JBQnl0ZShjb21wb25lbnRz
WzNdKSB9OwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIEZ1bmN0
b3I+IENvbG9yVHlwZSBjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFDb21wb25lbnQoY29uc3Qg
Q29sb3JUeXBlJiBjb2xvciwgRnVuY3RvciYmIGZ1bmN0b3IpCiB7CiAgICAgYXV0byBjb21wb25l
bnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRp
YyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gbWFrZVNpbXAKICAgICAgICAgY29tcG9uZW50QXJy
YXlbaV0gPSBjb21wb25lbnQ7CiAgICAgfQogCi0gICAgcmV0dXJuIGNvbnZlcnRUbzxTUkdCQTx1
aW50OF90Pj4oU1JHQkEgeyBjb21wb25lbnRBcnJheVsxXSwgY29tcG9uZW50QXJyYXlbMl0sIGNv
bXBvbmVudEFycmF5WzNdLCBjb21wb25lbnRBcnJheVswXSB9KTsKKyAgICByZXR1cm4gY29udmVy
dENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IGNvbXBvbmVudEFycmF5WzFdLCBjb21wb25l
bnRBcnJheVsyXSwgY29tcG9uZW50QXJyYXlbM10sIGNvbXBvbmVudEFycmF5WzBdIH0pOwogfQog
CiBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vz
c0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0dHJpYnV0ZWRTdHJpbmcpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEZpbHRlck9wZXJhdGlvbnM6
OnRyYW5zZm9ybUNvbG9yKENvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgY29sb3IgPSBjb252ZXJ0VG88U1JHQkE8dWludDhfdD4+KHNSR0JBQ29sb3IpOworICAgIGNv
bG9yID0gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihzUkdCQUNvbG9yKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6
aW52ZXJzZVRyYW5zZm9ybUMKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBjb2xvciA9IGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4oc1JHQkFDb2xvcik7CisgICAgY29s
b3IgPSBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KHNSR0JBQ29sb3IpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
Q29sb3JHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9Db2xvckd0ay5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ29sb3I6OkNvbG9yKGNvbnN0IEdk
a1JHQkEmIGNvbG9yKQotICAgIDogQ29sb3IoY29udmVydFRvPFNSR0JBPHVpbnQ4X3Q+PihTUkdC
QSB7IHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci5yZWQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29s
b3IuZ3JlZW4pLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3IuYmx1ZSksIHN0YXRpY19jYXN0PGZs
b2F0Pihjb2xvci5hbHBoYSkgfSkpCisgICAgOiBDb2xvcihjb252ZXJ0Q29sb3I8U1JHQkE8dWlu
dDhfdD4+KFNSR0JBIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLnJlZCksIHN0YXRpY19jYXN0
PGZsb2F0Pihjb2xvci5ncmVlbiksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci5ibHVlKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLmFscGhhKSB9KSkKIHsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQkocmV2aXNpb24g
MjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdC
QTx1aW50OF90Pj4gbWFrZVNpbXAKICAgICBbcmdiQ29sb3IgZ2V0UmVkOiZyZWRDb21wb25lbnQg
Z3JlZW46JmdyZWVuQ29tcG9uZW50IGJsdWU6JmJsdWVDb21wb25lbnQgYWxwaGE6JmFscGhhXTsK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKLSAgICByZXR1cm4gY29udmVydFRvPFNS
R0JBPHVpbnQ4X3Q+PihTUkdCQSB7IHN0YXRpY19jYXN0PGZsb2F0PihyZWRDb21wb25lbnQpLCBz
dGF0aWNfY2FzdDxmbG9hdD4oZ3JlZW5Db21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oYmx1
ZUNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBoYSkgfSk7CisgICAgcmV0dXJuIGNv
bnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBzdGF0aWNfY2FzdDxmbG9hdD4ocmVk
Q29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGdyZWVuQ29tcG9uZW50KSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGJsdWVDb21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oYWxwaGEpIH0pOwog
fQogCiBDb2xvciBjb2xvckZyb21OU0NvbG9yKE5TQ29sb3IgKmNvbG9yKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Db2xvckRpcmVjdDJE
LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ29sb3I6
OkNvbG9yKEQyRDFfQ09MT1JfRiBjb2xvcikKLSAgICA6IENvbG9yKGNvbnZlcnRUbzxTUkdCQTx1
aW50OF90Pj4oU1JHQkEgeyBjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iLCBjb2xvci5hIH0pKQor
ICAgIDogQ29sb3IoY29sb3JDb252ZXJ0PFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IGNvbG9yLnIs
IGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEgfSkpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3Jt
Q29udGV4dERpcmVjdDJELmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6c2V0
QWN0aXZlTAogCiBDT01QdHI8SUQyRDFTb2xpZENvbG9yQnJ1c2g+IFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEOjpicnVzaFdpdGhDb2xvcihjb25zdCBEMkQxX0NPTE9SX0YmIGNvbG9yKQogewotICAg
IGF1dG8gY29sb3JLZXkgPSBjb252ZXJ0VG88U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgY29sb3Iu
ciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSB9KTsKKyAgICBhdXRvIGNvbG9yS2V5ID0gY29s
b3JDb252ZXJ0PFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9y
LmIsIGNvbG9yLmEgfSk7CiAKICAgICBpZiAoIWNvbG9yS2V5KSB7CiAgICAgICAgIGlmICghbV96
ZXJvQnJ1c2gpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ29sb3JJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0NvbG9ySU9TLm1tCShy
ZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ29sb3JJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgQ29sb3IgY29sb3JGcm9tVUlDb2xv
cihVSUNvbG9yICpjb2xvcikKIAogICAgIFtjb2xvciBnZXRSZWQ6JnJlZENvbXBvbmVudCBncmVl
bjomZ3JlZW5Db21wb25lbnQgYmx1ZTomYmx1ZUNvbXBvbmVudCBhbHBoYTomYWxwaGFdOwogCi0g
ICAgcmV0dXJuIGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBzdGF0aWNfY2FzdDxm
bG9hdD4ocmVkQ29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGdyZWVuQ29tcG9uZW50KSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGJsdWVDb21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oYWxw
aGEpIH0pOworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KFNSR0JBIHsg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlZENvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihncmVl
bkNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihibHVlQ29tcG9uZW50KSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGFscGhhKSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDItMDYgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBtb3JlIHNwZWNpYWwgY2FzZXMgZnJvbSBj
b2xvciBjb252ZXJzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjE1MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcDoKKyAgICAgICAgKHdl
YmtpdENvbG9yVG9XZWJDb3JlQ29sb3IpOgorICAgICAgICBSZXBsYWNlIGNvbnZlcnRUbzw+IGNv
bXBvbmVudCB0eXBlIGNvbnZlcnNpb24gdG8gZ2VuZXJhbCBjb252ZXJ0Q29sb3I8Pi4KKwogMjAy
MS0wMi0wNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjI3MjMzNyk6IGNyYXNoIHVuZGVyIFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnNl
dEluYWN0aXZlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
Q29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0Q29sb3IuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUs
NyBAQCBHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdENvbG9yLCB3ZWJraXRfCiAKIGNvbnN0IFdl
YkNvcmU6OkNvbG9yIHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IoV2ViS2l0Q29sb3IqIGNvbG9y
KQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb252ZXJ0VG88V2ViQ29yZTo6U1JHQkE8dWludDhf
dD4+KFdlYkNvcmU6OlNSR0JBIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5yZWQpLCBzdGF0
aWNfY2FzdDxmbG9hdD4oY29sb3ItPmdyZWVuKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5i
bHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5hbHBoYSkgfSk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OmNvbnZlcnRDb2xvcjxXZWJDb3JlOjpTUkdCQTx1aW50OF90Pj4oV2ViQ29yZTo6U1JH
QkEgeyBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPnJlZCksIHN0YXRpY19jYXN0PGZsb2F0Pihj
b2xvci0+Z3JlZW4pLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPmJsdWUpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oY29sb3ItPmFscGhhKSB9KTsKIH0KIAogdm9pZCB3ZWJraXRDb2xvckZpbGxGcm9t
V2ViQ29yZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiB3ZWJDb3JlQ29sb3IsIFdlYktpdENv
bG9yKiBjb2xvcikKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTA2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbW9yZSBzcGVjaWFsIGNhc2VzIGZyb20gY29sb3Ig
Y29udmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIxNTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBSZXBsYWNlIGNvbnZlcnRU
bzw+IGNvbXBvbmVudCB0eXBlIGNvbnZlcnNpb24gdG8gZ2VuZXJhbCBjb252ZXJ0Q29sb3I8Pi4K
KwogMjAyMS0wMi0wNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTWFjXSBEaXNhYmxlIE1lZGlhU2Vzc2lvblRlc3QgQVBJIHRlc3RzCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRD
b2xvclRlc3RzLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
OSw3ICsxMDksNyBAQCBURVNUKEV4dGVuZGVkQ29sb3IsIEVxdWFsaXR5KQogICAgIH0KIAogICAg
IGF1dG8gY29tcG9uZW50Qnl0ZXMgPSBTUkdCQTx1aW50OF90PiB7IDI1NSwgMTI4LCA2MywgMTI3
IH07Ci0gICAgQ29sb3IgcmdiMSB7IGNvbnZlcnRUbzxTUkdCQTxmbG9hdD4+KGNvbXBvbmVudEJ5
dGVzKSB9OworICAgIENvbG9yIHJnYjEgeyBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb21w
b25lbnRCeXRlcykgfTsKICAgICBDb2xvciByZ2IyIHsgY29tcG9uZW50Qnl0ZXMgfTsKICAgICBF
WFBFQ1RfTkUocmdiMSwgcmdiMik7CiAgICAgRVhQRUNUX05FKHJnYjIsIHJnYjEpOwpAQCAtMTM4
LDcgKzEzOCw3IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgSGFzaCkKICAgICB9CiAKICAgICBhdXRv
IGNvbXBvbmVudEJ5dGVzID0gU1JHQkE8dWludDhfdD4geyAyNTUsIDEyOCwgNjMsIDEyNyB9Owot
ICAgIENvbG9yIHJnYjEgeyBjb252ZXJ0VG88U1JHQkE8ZmxvYXQ+Pihjb21wb25lbnRCeXRlcykg
fTsKKyAgICBDb2xvciByZ2IxIHsgY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29tcG9uZW50
Qnl0ZXMpIH07CiAgICAgQ29sb3IgcmdiMiB7IGNvbXBvbmVudEJ5dGVzIH07CiAgICAgRVhQRUNU
X05FKHJnYjEuaGFzaCgpLCByZ2IyLmhhc2goKSk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="437744"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419505</attachid>
            <date>2021-02-06 09:36:38 -0800</date>
            <delta_ts>2021-02-06 10:23:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221519-20210206093637.patch</filename>
            <type>text/plain</type>
            <size>34917</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wMi0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG1vcmUgc3BlY2lhbCBj
YXNlcyBmcm9tIGNvbG9yIGNvbnZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTUxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gUmVtb3ZlIHNwZWNpYWxpemVkIGNvbnZlcnRUbzw+IGZ1bmN0
aW9uIHdoaWNoIG9ubHkgZGlkIGNvbXBvbmVudAorICAgICAgICAgIHR5cGUgY29udmVyc2lvbiB3
aXRoIHRoZSBmdWxseSBnZW5lcmFsIGNvbnZlcnRDb2xvcjw+IGZ1bmN0aW9uLgorCisgICAgICAg
IC0gTWFrZSBDb2xvckNvbXBvbmVudHMgYSBiaXQgbW9yZSByZWFkeSBmb3Igbm9uLTQgY29tcG9u
ZW50IGNvbG9ycyBieQorICAgICAgICAgIHJld29ya2luZyBtZW1iZXIgZnVuY3Rpb25hbGl0eSBi
YXNlZCBvbiBhIG5ldyBtYXBDb2xvckNvbXBvbmVudHMgZnVuY3Rpb24KKyAgICAgICAgICB3aGlj
aCBtYXBzIGEgZnVuY3Rpb24gRiBvdmVyIGFsbCB0aGUgY29tcG9uZW50cyBvZiBhIHNldCBvZiBD
b2xvckNvbXBvbmVudHMuCisgICAgICAgICAgZS5nLgorCisgICAgICAgICAgICAgIGF1dG8gY29s
b3JDb21wb25lbnRzQyA9IG1hcENvbG9yQ29tcG9uZW50cyhbXSAoYXV0byBhLCBhdXRvIGIpIHsg
cmV0dXJuIGEgKyBiOyB9LCBjb2xvckNvbXBvbmVudHNBLCBjb2xvckNvbXBvbmVudHNCKTsKKwor
ICAgICAgICAgIHdpbGwgY3JlYXRlIGEgbmV3IENvbG9yQ29tcG9uZW50cyB3aGVyZSBlYWNoIGNv
bXBvbmVudCBpcyB0aGUgc3VtIG9mIHRoZSAKKyAgICAgICAgICBjb3JyZXNwb25kaW5nIGNvbXBv
bmVudHMgaW4gY29sb3JDb21wb25lbnRzQSBhbmQgY29sb3JDb21wb25lbnRzQi4gSXQncworICAg
ICAgICAgIHZhcmlhZGljIHNvIGl0IGNhbiB0YWtlIGFueSBudW1iZXIgb2YgQ29sb3JDb21wb25l
bnRzLiBUaGlzIGFsbG93cyByZXdyaXRpbmcKKyAgICAgICAgICBhbGwgb2YgdGhlIG1lbWJlcnMg
dG8gYmUgc2l6ZSBpbnZhcmlhbnQgYW5kIGEgbGl0dGxlIGxlc3MgdmVyYm9zZS4KKworICAgICAg
ICAtIFJlcGxhY2Ugc3BlY2lhbCBjYXNlIGZvciB0aGUgaWRlbnRpdHkgY29udmVyc2lvbiBpbiB0
aGUgZmFsbGJhY2sgY29sb3IgY29udmVyc2lvbgorICAgICAgICAgIGNvZGUgcGF0aCwgYW5kIG1v
dmUgaXQgaW50byBpdCdzIG93biBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIG9mIENvbG9yQ29udmVy
c2lvbi4KKworICAgICAgICAtIFJlcGxhY2Ugc3BlY2lhbCBjYXNlIGZvciBjaHJvbWF0aWMgYWRh
cHRhdGlvbiBjb252ZXJzaW9ucyBhbmQgaGF2ZSB0aGVtIGp1c3QKKyAgICAgICAgICB1c2Ugc3Bl
Y2lhbGl6YXRpb25zIG9mIENvbG9yQ29udmVyc2lvbiBsaWtlIGFsbCBvdGhlciBjb252ZXJzaW9u
cy4KKworICAgICAgICAtIFJlcGxhY2Ugc3BlY2lhbCBjYXNlIGZvciBzUkdCIGNvbXBvbmVudCB0
eXBlIGNvbnZlcnNpb25zIGFuZCBoYXZlIHRoZW0ganVzdAorICAgICAgICAgIHVzZSBzcGVjaWFs
aXphdGlvbnMgb2YgQ29sb3JDb252ZXJzaW9uIGxpa2UgYWxsIG90aGVyIGNvbnZlcnNpb25zLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmg6CisgICAgICAg
IChXZWJDb3JlOjptYXBDb2xvckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JD
b21wb25lbnRzPFQ+OjptYXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25l
bnRzPFQ+OjpvcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVu
dHM8VD46OmFicyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpwZXJDb21wb25lbnRNYXgpOgor
ICAgICAgICAoV2ViQ29yZTo6cGVyQ29tcG9uZW50TWluKToKKyAgICAgICAgQWRkIG1hcCBhbmQg
bWFwQ29sb3JDb21wb25lbnRzIGFuZCByZS1pbXBsZW1lbnQgZXhpc3RpbmcKKyAgICAgICAgZnVu
Y3Rpb25hbGl0eSBpbiB0ZXJtcyBvZiB0aGVtLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoaXRlUG9pbnQ6OkQ1
MD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldoaXRlUG9pbnQ6OkQ2NT4+Ojpjb252
ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JBPHVpbnQ4X3Q+Pjo6Y29udmVydCk6CisgICAg
ICAgIChXZWJDb3JlOjpTUkdCQTxmbG9hdD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNSR0JBPHVpbnQ4X3Q+OjpSZWZlcmVuY2VYWVo+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2ludCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RnJvbUQ2NVdoaXRlUG9pbnRUb0Q1MFdoaXRlUG9pbnQp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb252ZXJzaW9uOjpjb252ZXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OnBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
VXNlIENvbG9yQ29udmVyc2lvbiBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBpZGVudGl0eSBjb252
ZXJzaW9uLCBjaG9tYXRpYyAKKyAgICAgICAgYWRhcGF0YXRpb24sIGFuZCBjb21wb25lbnQgdHlw
ZSBjb252ZXJzaW9ucywgcmF0aGVyIHRoYW4gaGFyZCBjb2RpbmcgdGhlbQorICAgICAgICBpbiB0
aGUgZmFsbGJhY2sgY29udmVyc2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVHlwZXMuaDoKKyAgICAgICAgU3BlY2lhbCBjYXNlIFNSR0JBPHVpbnQ4X3Q+IHRvIGhhdmUg
YSBSZWZlcmVuY2VYWVogb2YgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiwgYXMgCisgICAg
ICAgIFhZWkE8dWludDhfdCwgV2hpdGVQb2ludDo6RDY1PiBpcyBub3QgYSB2YWxpZCBjb2xvciAo
WFlaQSBvbmx5IHN1cHBvcnRzIGZsb2F0aW5nIHBvaW50CisgICAgICAgIGNvbXBvbmVudHMpLiBX
ZSBhcmUga2VlcGluZyBpdCBiYXNlZCBvbiBUIGluIG90aGVyIGNhc2VzIHRvIHN1cHBvcnQgZnV0
dXJlIGVmZm9ydHMgdG8gdXNlCisgICAgICAgIG90aGVyIGZsb2F0aW5nIHBvaW50IHR5cGVzIHdp
dGggdGhlc2UgY29sb3IgdHlwZXMgc3VjaCBhcyBoYWxmLWZsb2F0LgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRUbyk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBjb252ZXJ0VG88Piwgd2hpY2ggaXMgbm93
IHN1cGVyc2VkZWQgYnkgdGhlIGdlbmVyYWwgY29udmVydENvbG9yPD4uCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6CisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5Q29sb3JTdHJpbmdWYWx1
ZV0pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRTaGFkb3cpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpDYW52YXNT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50IGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb2xvcjo6bGlnaHRlbmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpk
YXJrZW5lZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y29sb3JTcGFjZUFuZENv
bXBvbmVudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VT
aW1wbGVDb2xvckZyb21BUkdCQ0ZBcnJheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9w
ZXJhdGlvbnM6OnRyYW5zZm9ybUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ck9wZXJhdGlvbnM6OmludmVyc2VUcmFuc2Zvcm1Db2xvciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0NvbG9yR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9y
OjpDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yRnJvbU5TQ29sb3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Db2xvckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yOjpDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRm
b3JtQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4
dERpcmVjdDJEOjpicnVzaFdpdGhDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0NvbG9y
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JGcm9tVUlDb2xvcik6CisgICAgICAgIEFk
b3B0IGNvbnZlcnRDb2xvcjw+IHRvIHJlcGxhY2UgY29udmVydFRvPD4uCisKIDIwMjEtMDItMDYg
IFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdW1F1
aXJrXSBLZWVwIHRoZSByb290IGlubGluZSBib3ggYmFzZWxpbmUgYW5jaG9yZWQgYXQgMApJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDMsNyArNDQzLDcgQEAgc3RhdGljIGdj
aGFyKiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleAogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCiAgICAgaWYgKGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpDb2xvcldlbGwpIHsKLSAgICAgICAgYXV0byBjb2xvciA9IGNvbnZlcnRUbzxTUkdCQTxm
bG9hdD4+KGNvcmVPYmplY3QtPmNvbG9yVmFsdWUoKSk7CisgICAgICAgIGF1dG8gY29sb3IgPSBj
b252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb3JlT2JqZWN0LT5jb2xvclZhbHVlKCkpOwogICAg
ICAgICByZXR1cm4gZ19zdHJkdXBfcHJpbnRmKCJyZ2IgJTcuNWYgJTcuNWYgJTcuNWYgMSIsIGNv
bG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNvbG9yLmJsdWUpOwogICAgIH0KICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJldmlzaW9uIDI3MjQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCAtIChO
U1N0cmluZyAqKWFjY2Vzc2liaWxpdHlDb2xvclN0cmluZ1ZhCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBpZiAoc2VsZi5heEJhY2tpbmdPYmplY3QtPmlzQ29sb3JXZWxsKCkpIHsKLSAgICAg
ICAgYXV0byBjb2xvciA9IGNvbnZlcnRUbzxTUkdCQTxmbG9hdD4+KHNlbGYuYXhCYWNraW5nT2Jq
ZWN0LT5jb2xvclZhbHVlKCkpOworICAgICAgICBhdXRvIGNvbG9yID0gY29udmVydENvbG9yPFNS
R0JBPGZsb2F0Pj4oc2VsZi5heEJhY2tpbmdPYmplY3QtPmNvbG9yVmFsdWUoKSk7CiAgICAgICAg
IHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInJnYiAlNy41ZiAlNy41ZiAlNy41
ZiAxIiwgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZV07CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMjcyNDYy
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzODUsNyArMjM4NSw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuIEAo
YmFja2luZ09iamVjdC0+aXNTZWxlY3RlZCgpKTsKIAogICAgICAgICBpZiAoYmFja2luZ09iamVj
dC0+aXNDb2xvcldlbGwoKSkgewotICAgICAgICAgICAgYXV0byBjb2xvciA9IGNvbnZlcnRUbzxT
UkdCQTxmbG9hdD4+KGJhY2tpbmdPYmplY3QtPmNvbG9yVmFsdWUoKSk7CisgICAgICAgICAgICBh
dXRvIGNvbG9yID0gY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oYmFja2luZ09iamVjdC0+Y29s
b3JWYWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAInJnYiAlNy41ZiAlNy41ZiAlNy41ZiAxIiwgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29s
b3IuYmx1ZV07CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzI0LDcgKzEzMjQsNyBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFNoCiAgICAgaWYgKHN0ZDo6aXNu
YW4oZ3JheUxldmVsKSB8fCBzdGQ6OmlzbmFuKGFscGhhKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1ciwgY29udmVydFRvPFNS
R0JBPHVpbnQ4X3Q+PihtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZzxTUkdCQTxmbG9hdD4+KGdy
YXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIGFscGhhKSkpOworICAgIHNldFNoYWRvdyhG
bG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90
Pj4obWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihncmF5TGV2ZWwsIGdy
YXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQg
Ymx1ciwgZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKQEAgLTEzMzIsNyArMTMz
Miw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0U2gKICAgICBpZiAo
c3RkOjppc25hbihyKSB8fCBzdGQ6OmlzbmFuKGcpIHx8IHN0ZDo6aXNuYW4oYikgIHx8IHN0ZDo6
aXNuYW4oYSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lk
dGgsIGhlaWdodCksIGJsdXIsIGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4obWFrZUZyb21Db21w
b25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBhKSkpOworICAgIHNldFNoYWRv
dyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50
OF90Pj4obWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBh
KSkpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNsZWFyU2hhZG93
KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAJKHJl
dmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBDYW52YXNTdHlsZTo6Q2FudmFz
U3R5bGUoQ29sb3IgY29sb3IpCiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBT
UkdCQTxmbG9hdD4mIGNvbG9yQ29tcG9uZW50cykKLSAgICA6IG1fc3R5bGUoY29udmVydFRvPFNS
R0JBPHVpbnQ4X3Q+Pihjb2xvckNvbXBvbmVudHMpKQorICAgIDogbV9zdHlsZShjb252ZXJ0Q29s
b3I8U1JHQkE8dWludDhfdD4+KGNvbG9yQ29tcG9uZW50cykpCiB7CiB9CiAKQEAgLTE0OCw3ICsx
NDgsNyBAQCBib29sIENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDb2xvcihjb25zCiAKIGJvb2wg
Q2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudChjb25zdCBTUkdCQTxmbG9hdD4mIGNvbXBvbmVudHMp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29sb3I+KG1fc3R5
bGUpICYmIFdURjo6Z2V0PENvbG9yPihtX3N0eWxlKSA9PSBjb252ZXJ0VG88U1JHQkE8dWludDhf
dD4+KGNvbXBvbmVudHMpOworICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENvbG9y
PihtX3N0eWxlKSAmJiBXVEY6OmdldDxDb2xvcj4obV9zdHlsZSkgPT0gY29udmVydENvbG9yPFNS
R0JBPHVpbnQ4X3Q+Pihjb21wb25lbnRzKTsKIH0KIAogdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlT
dHJva2VDb2xvcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkxLDcgKzkxLDcgQEAgQ29sb3IgQ29sb3I6OmxpZ2h0ZW5lZCgpIGNvbnN0CiAKICAg
ICBmbG9hdCBtdWx0aXBsaWVyID0gc3RkOjptaW4oMS4wZiwgdiArIDAuMzNmKSAvIHY7CiAKLSAg
ICByZXR1cm4gY29udmVydFRvPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IG11bHRpcGxpZXIgKiBy
LCBtdWx0aXBsaWVyICogZywgbXVsdGlwbGllciAqIGIsIGEgfSk7CisgICAgcmV0dXJuIGNvbnZl
cnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBtdWx0aXBsaWVyICogciwgbXVsdGlwbGll
ciAqIGcsIG11bHRpcGxpZXIgKiBiLCBhIH0pOwogfQogCiBDb2xvciBDb2xvcjo6ZGFya2VuZWQo
KSBjb25zdApAQCAtMTA1LDcgKzEwNSw3IEBAIENvbG9yIENvbG9yOjpkYXJrZW5lZCgpIGNvbnN0
CiAgICAgZmxvYXQgdiA9IHN0ZDo6bWF4KHsgciwgZywgYiB9KTsKICAgICBmbG9hdCBtdWx0aXBs
aWVyID0gc3RkOjptYXgoMC4wZiwgKHYgLSAwLjMzZikgLyB2KTsKIAotICAgIHJldHVybiBjb252
ZXJ0VG88U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgbXVsdGlwbGllciAqIHIsIG11bHRpcGxpZXIg
KiBnLCBtdWx0aXBsaWVyICogYiwgYSB9KTsKKyAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JB
PHVpbnQ4X3Q+PihTUkdCQSB7IG11bHRpcGxpZXIgKiByLCBtdWx0aXBsaWVyICogZywgbXVsdGlw
bGllciAqIGIsIGEgfSk7CiB9CiAKIGZsb2F0IENvbG9yOjpsaWdodG5lc3MoKSBjb25zdApAQCAt
MTY1LDcgKzE2NSw3IEBAIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmwK
IHsKICAgICBpZiAoaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1cm4geyBhc0V4dGVuZGVkKCku
Y29sb3JTcGFjZSgpLCBhc0V4dGVuZGVkKCkuY29tcG9uZW50cygpIH07Ci0gICAgcmV0dXJuIHsg
Q29sb3JTcGFjZTo6U1JHQiwgYXNDb2xvckNvbXBvbmVudHMoY29udmVydFRvPFNSR0JBPGZsb2F0
Pj4oYXNJbmxpbmUoKSkpIH07CisgICAgcmV0dXJuIHsgQ29sb3JTcGFjZTo6U1JHQiwgYXNDb2xv
ckNvbXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oYXNJbmxpbmUoKSkpIH07CiB9
CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbG9yJiBj
b2xvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9u
ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29tcG9uZW50cy5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiAr
NDEsOSBAQCBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzIHsKICAgICB7CiAgICAgfQogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRj4KKyAgICBjb25zdGV4cHIgYXV0byBtYXAoRiYmIGZ1bmN0aW9uKSBj
b25zdCAtPiBDb2xvckNvbXBvbmVudHM8ZGVjbHR5cGUoZnVuY3Rpb24oc3RkOjpkZWNsdmFsPFQ+
KCkpKT47CisKICAgICBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzJiBvcGVyYXRvcis9KGNvbnN0
IENvbG9yQ29tcG9uZW50cyYpOwogCiAgICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50cyBvcGVy
YXRvcisoVCkgY29uc3Q7CkBAIC01OCw1OCArNjEsNTMgQEAgc3RydWN0IENvbG9yQ29tcG9uZW50
cyB7CiAgICAgc3RkOjphcnJheTxULCBTaXplPiBjb21wb25lbnRzOwogfTsKIAordGVtcGxhdGU8
dHlwZW5hbWUgRiwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gVHM+Citjb25zdGV4cHIgYXV0byBt
YXBDb2xvckNvbXBvbmVudHMoRiYmIGZ1bmN0aW9uLCBUIGNvbXBvbmVudCwgVHMuLi4gY29tcG9u
ZW50cykgLT4gQ29sb3JDb21wb25lbnRzPGRlY2x0eXBlKGZ1bmN0aW9uKGNvbXBvbmVudFswXSwg
Y29tcG9uZW50c1swXS4uLikpPgoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpjb25qdW5jdGlv
bl92PHN0ZDo6Ym9vbF9jb25zdGFudDxUczo6U2l6ZSA9PSBUOjpTaXplPi4uLj4sICJBbGwgQ29s
b3JDb21wb25lbnRzIHBhc3NlZCB0byBtYXBDb2xvckNvbXBvbmVudHMgbXVzdCBoYXZlIHRoZSBz
YW1lIHNpemUiKTsKKworICAgIENvbG9yQ29tcG9uZW50czxkZWNsdHlwZShmdW5jdGlvbihjb21w
b25lbnRbMF0sIGNvbXBvbmVudHNbMF0uLi4pKT4gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgVDo6U2l6ZTsgKytpKQorICAgICAgICByZXN1bHRbaV0gPSBmdW5jdGlvbihjb21w
b25lbnRbaV0sIGNvbXBvbmVudHNbaV0uLi4pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBGPgorY29uc3RleHByIGF1dG8g
Q29sb3JDb21wb25lbnRzPFQ+OjptYXAoRiYmIGZ1bmN0aW9uKSBjb25zdCAtPiBDb2xvckNvbXBv
bmVudHM8ZGVjbHR5cGUoZnVuY3Rpb24oc3RkOjpkZWNsdmFsPFQ+KCkpKT4KK3sKKyAgICByZXR1
cm4gbWFwQ29sb3JDb21wb25lbnRzKHN0ZDo6Zm9yd2FyZDxGPihmdW5jdGlvbiksICp0aGlzKTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4m
IENvbG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IrPShjb25zdCBDb2xvckNvbXBvbmVudHMmIHJo
cykKIHsKLSAgICBjb21wb25lbnRzWzBdICs9IHJoc1swXTsKLSAgICBjb21wb25lbnRzWzFdICs9
IHJoc1sxXTsKLSAgICBjb21wb25lbnRzWzJdICs9IHJoc1syXTsKLSAgICBjb21wb25lbnRzWzNd
ICs9IHJoc1szXTsKKyAgICAqdGhpcyA9IG1hcENvbG9yQ29tcG9uZW50cyhbXShUIGMxLCBUIGMy
KSB7IHJldHVybiBjMSArIGMyOyB9LCAqdGhpcywgcmhzKTsKICAgICByZXR1cm4gKnRoaXM7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IENv
bG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IrKFQgcmhzKSBjb25zdAogewotICAgIHJldHVybiB7
Ci0gICAgICAgIGNvbXBvbmVudHNbMF0gKyByaHMsCi0gICAgICAgIGNvbXBvbmVudHNbMV0gKyBy
aHMsCi0gICAgICAgIGNvbXBvbmVudHNbMl0gKyByaHMsCi0gICAgICAgIGNvbXBvbmVudHNbM10g
KyByaHMKLSAgICB9OworICAgIHJldHVybiBtYXAoW3Joc10oVCBjKSB7IHJldHVybiBjICsgcmhz
OyB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVu
dHM8VD4gQ29sb3JDb21wb25lbnRzPFQ+OjpvcGVyYXRvci8oVCBkZW5vbWluYXRvcikgY29uc3QK
IHsKLSAgICByZXR1cm4gewotICAgICAgICBjb21wb25lbnRzWzBdIC8gZGVub21pbmF0b3IsCi0g
ICAgICAgIGNvbXBvbmVudHNbMV0gLyBkZW5vbWluYXRvciwKLSAgICAgICAgY29tcG9uZW50c1sy
XSAvIGRlbm9taW5hdG9yLAotICAgICAgICBjb21wb25lbnRzWzNdIC8gZGVub21pbmF0b3IKLSAg
ICB9OworICAgIHJldHVybiBtYXAoW2Rlbm9taW5hdG9yXShUIGMpIHsgcmV0dXJuIGMgLyBkZW5v
bWluYXRvcjsgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JD
b21wb25lbnRzPFQ+IENvbG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IqKFQgZmFjdG9yKSBjb25z
dAogewotICAgIHJldHVybiB7Ci0gICAgICAgIGNvbXBvbmVudHNbMF0gKiBmYWN0b3IsCi0gICAg
ICAgIGNvbXBvbmVudHNbMV0gKiBmYWN0b3IsCi0gICAgICAgIGNvbXBvbmVudHNbMl0gKiBmYWN0
b3IsCi0gICAgICAgIGNvbXBvbmVudHNbM10gKiBmYWN0b3IKLSAgICB9OworICAgIHJldHVybiBt
YXAoW2ZhY3Rvcl0oVCBjKSB7IHJldHVybiBjICogZmFjdG9yOyB9KTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gQ29sb3JDb21wb25lbnRz
PFQ+OjphYnMoKSBjb25zdAogewotICAgIHJldHVybiB7Ci0gICAgICAgIHN0ZDo6YWJzKGNvbXBv
bmVudHNbMF0pLAotICAgICAgICBzdGQ6OmFicyhjb21wb25lbnRzWzFdKSwKLSAgICAgICAgc3Rk
OjphYnMoY29tcG9uZW50c1syXSksCi0gICAgICAgIHN0ZDo6YWJzKGNvbXBvbmVudHNbM10pCi0g
ICAgfTsKKyAgICByZXR1cm4gbWFwKFtdKFQgYykgeyByZXR1cm4gc3RkOjphYnMoYyk7IH0pOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTIyLDIzICsxMjAsMTMgQEAgY29uc3RleHBy
IFQgQ29sb3JDb21wb25lbnRzPFQ+OjpnZXQoKSBjbwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNv
bnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWF4KGNvbnN0IENvbG9yQ29t
cG9uZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQogewotICAgIHJldHVy
biB7Ci0gICAgICAgIHN0ZDo6bWF4KGFbMF0sIGJbMF0pLAotICAgICAgICBzdGQ6Om1heChhWzFd
LCBiWzFdKSwKLSAgICAgICAgc3RkOjptYXgoYVsyXSwgYlsyXSksCi0gICAgICAgIHN0ZDo6bWF4
KGFbM10sIGJbM10pCi0gICAgfTsKKyAgICByZXR1cm4gbWFwQ29sb3JDb21wb25lbnRzKFtdKFQg
YzEsIFQgYzIpIHsgcmV0dXJuIHN0ZDo6bWF4KGMxLCBjMik7IH0sIGEsIGIpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBwZXJDb21wb25l
bnRNaW4oY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVudHM8
VD4mIGIpCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgc3RkOjptaW4oYVswXSwgYlswXSksCi0g
ICAgICAgIHN0ZDo6bWluKGFbMV0sIGJbMV0pLAotICAgICAgICBzdGQ6Om1pbihhWzJdLCBiWzJd
KSwKLSAgICAgICAgc3RkOjptaW4oYVszXSwgYlszXSkKLSAgICB9OworICAgIHJldHVybiBtYXBD
b2xvckNvbXBvbmVudHMoW10oVCBjMSwgVCBjMikgeyByZXR1cm4gc3RkOjptaW4oYzEsIGMyKTsg
fSwgYSwgYik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29u
dmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMywxMiArMTMzLDEyIEBAIHN0YXRpYyBj
b25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gRDY1VG8KIAogLy8gTUFSSzogQ2hyb21hdGljIEFk
YXB0YXRpb24gY29udmVyc2lvbnMuCiAKLVhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4gY29u
dmVydEZyb21ENTBXaGl0ZVBvaW50VG9ENjVXaGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQsIFdo
aXRlUG9pbnQ6OkQ1MD4mIGNvbG9yKQorWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiBDb2xv
ckNvbnZlcnNpb248WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiwgWFlaQTxmbG9hdCwgV2hp
dGVQb2ludDo6RDUwPj46OmNvbnZlcnQoY29uc3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUw
PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0
QWxwaGE8WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1Pj4oRDUwVG9ENjVNYXRyaXgudHJhbnNm
b3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLVhZ
WkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBX
aGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4mIGNvbG9yKQorWFla
QTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPiBDb2xvckNvbnZlcnNpb248WFlaQTxmbG9hdCwgV2hp
dGVQb2ludDo6RDUwPiwgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1Pj46OmNvbnZlcnQoY29u
c3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIG1h
a2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxmbG9hdCwgV2hpdGVQb2lu
dDo6RDUwPj4oRDY1VG9ENTBNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xv
ckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CkBAIC02NDYsNCArNjQ2LDMwIEBAIFNSR0JBPGZsb2F0
PiBDb2xvckNvbnZlcnNpb248U1JHQkE8ZmxvYXQKICAgICByZXR1cm4gY29udmVydENvbG9yPFNS
R0JBPGZsb2F0Pj4oY29udmVydENvbG9yPExpbmVhclNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKIH0K
IAorLy8gTUFSSzogU1JHQkE8dWludDhfdD4gY29tcG9uZW50IHR5cGUgY29udmVyc2lvbnMuCisK
K1NSR0JBPGZsb2F0PiBDb2xvckNvbnZlcnNpb248U1JHQkE8ZmxvYXQ+LCBTUkdCQTx1aW50OF90
Pj46OmNvbnZlcnQoY29uc3QgU1JHQkE8dWludDhfdD4mIGNvbG9yKQoreworICAgIHJldHVybiBt
YWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8ZmxvYXQ+Pihhc0NvbG9yQ29tcG9uZW50cyhjb2xvciku
bWFwKFtdKHVpbnQ4X3QgdmFsdWUpIC0+IGZsb2F0IHsKKyAgICAgICAgcmV0dXJuIHZhbHVlIC8g
MjU1LjBmOworICAgIH0pKTsKK30KKworU1JHQkE8dWludDhfdD4gQ29sb3JDb252ZXJzaW9uPFNS
R0JBPHVpbnQ4X3Q+LCBTUkdCQTxmbG9hdD4+Ojpjb252ZXJ0KGNvbnN0IFNSR0JBPGZsb2F0PiYg
Y29sb3IpCit7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50czxTUkdCQTx1aW50OF90Pj4o
YXNDb2xvckNvbXBvbmVudHMoY29sb3IpLm1hcChbXShmbG9hdCB2YWx1ZSkgLT4gdWludDhfdCB7
CisgICAgICAgIHJldHVybiBzdGQ6Omxyb3VuZCh2YWx1ZSAqIDI1NS4wZik7CisgICAgfSkpOwor
fQorCitTUkdCQTx1aW50OF90Pjo6UmVmZXJlbmNlWFlaIENvbG9yQ29udmVyc2lvbjxTUkdCQTx1
aW50OF90Pjo6UmVmZXJlbmNlWFlaLCBTUkdCQTx1aW50OF90Pj46OmNvbnZlcnQoY29uc3QgU1JH
QkE8dWludDhfdD4mIGNvbG9yKQoreworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8Zmxv
YXQ+OjpSZWZlcmVuY2VYWVo+KGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKSk7Cit9
CisKK1NSR0JBPHVpbnQ4X3Q+IENvbG9yQ29udmVyc2lvbjxTUkdCQTx1aW50OF90PiwgU1JHQkE8
dWludDhfdD46OlJlZmVyZW5jZVhZWj46OmNvbnZlcnQoY29uc3QgU1JHQkE8dWludDhfdD46OlJl
ZmVyZW5jZVhZWiYgY29sb3IpCit7CisgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50
OF90Pj4oY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTksMjUgKzI5OSw0NiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2xvckNvbnZlcnNpb248SFdC
QTxmCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhXQkE8ZmxvYXQ+IGNvbnZlcnQoY29uc3Qg
U1JHQkE8ZmxvYXQ+Jik7CiB9OwogCisvLyBTcGVjaWFsIGNhc2VzIGZvciBTUkdCQTx1aW50OF90
Pi4gT25seSBzUkdCIHN1cHBvcnRzIG5vbi1mbG9hdGluZyBwb2ludCBjb21wb25lbnQgdHlwZXMu
CiAKK3RlbXBsYXRlPD4gc3RydWN0IENvbG9yQ29udmVyc2lvbjxTUkdCQTx1aW50OF90Pjo6UmVm
ZXJlbmNlWFlaLCBTUkdCQTx1aW50OF90Pj4geworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
UkdCQTx1aW50OF90Pjo6UmVmZXJlbmNlWFlaIGNvbnZlcnQoY29uc3QgU1JHQkE8dWludDhfdD4m
KTsKK307CiAKLS8vIENocm9tYXRpYyBBZGFwdGF0aW9uIGNvbnZlcnNpb25zLgotV0VCQ09SRV9F
WFBPUlQgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiBjb252ZXJ0RnJvbUQ1MFdoaXRlUG9p
bnRUb0Q2NVdoaXRlUG9pbnQoY29uc3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPiYpOwot
V0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPiBjb252ZXJ0RnJvbUQ2
NVdoaXRlUG9pbnRUb0Q1MFdoaXRlUG9pbnQoY29uc3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6
RDY1PiYpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBXaGl0ZVBvaW50IGlucHV0V2hpdGVQb2lu
dD4gY29uc3RleHByIHR5cGVuYW1lIFQ6OlJlZmVyZW5jZVhZWiBwZXJmb3JtQ2hvbWF0aWNBZGFw
YXRhdGlvbihjb25zdCBYWVpBPGZsb2F0LCBpbnB1dFdoaXRlUG9pbnQ+JiBjb2xvcikKLXsKLSAg
ICBjb25zdGV4cHIgV2hpdGVQb2ludCBvdXRwdXRXaGl0ZVBvaW50ID0gVDo6UmVmZXJlbmNlWFla
Ojp3aGl0ZVBvaW50OwordGVtcGxhdGU8PiBzdHJ1Y3QgQ29sb3JDb252ZXJzaW9uPFNSR0JBPHVp
bnQ4X3Q+LCBTUkdCQTx1aW50OF90Pjo6UmVmZXJlbmNlWFlaPiB7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFNSR0JBPHVpbnQ4X3Q+IGNvbnZlcnQoY29uc3QgU1JHQkE8dWludDhfdD46OlJl
ZmVyZW5jZVhZWiYpOworfTsKIAotICAgIGlmIGNvbnN0ZXhwciAob3V0cHV0V2hpdGVQb2ludCA9
PSBpbnB1dFdoaXRlUG9pbnQpCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb2xvckNvbnZlcnNpb248U1JH
QkE8ZmxvYXQ+LCBTUkdCQTx1aW50OF90Pj4geworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
UkdCQTxmbG9hdD4gY29udmVydChjb25zdCBTUkdCQTx1aW50OF90PiYpOworfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgQ29sb3JDb252ZXJzaW9uPFNSR0JBPHVpbnQ4X3Q+LCBTUkdCQTxmbG9hdD4+
IHsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1JHQkE8dWludDhfdD4gY29udmVydChjb25z
dCBTUkdCQTxmbG9hdD4mKTsKK307CisKKworLy8gWFlaQSBDaHJvbWF0aWMgQWRhcHRhdGlvbiBj
b252ZXJzaW9ucy4KKwordGVtcGxhdGU8PiBzdHJ1Y3QgQ29sb3JDb252ZXJzaW9uPFhZWkE8Zmxv
YXQsIFdoaXRlUG9pbnQ6OkQ2NT4sIFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4+IHsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiBjb252
ZXJ0KGNvbnN0IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4mKTsKK307CisKK3RlbXBsYXRl
PD4gc3RydWN0IENvbG9yQ29udmVyc2lvbjxYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENTA+LCBY
WVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENjU+PiB7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4gY29udmVydChjb25zdCBYWVpBPGZsb2F0LCBX
aGl0ZVBvaW50OjpENjU+Jik7Cit9OworCisKKy8vIElkZW50aXR5IGNvbnZlcnNpb24uCisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gc3RydWN0IENvbG9yQ29udmVyc2lvbjxDb2xvclR5
cGUsIENvbG9yVHlwZT4geworICAgIHN0YXRpYyBDb2xvclR5cGUgY29udmVydChjb25zdCBDb2xv
clR5cGUmIGNvbG9yKQorICAgIHsKICAgICAgICAgcmV0dXJuIGNvbG9yOwotICAgIGVsc2UgaWYg
Y29uc3RleHByIChvdXRwdXRXaGl0ZVBvaW50ID09IFdoaXRlUG9pbnQ6OkQ1MCkKLSAgICAgICAg
cmV0dXJuIGNvbnZlcnRGcm9tRDY1V2hpdGVQb2ludFRvRDUwV2hpdGVQb2ludChjb2xvcik7Ci0g
ICAgZWxzZSBpZiBjb25zdGV4cHIgKG91dHB1dFdoaXRlUG9pbnQgPT0gV2hpdGVQb2ludDo6RDY1
KQotICAgICAgICByZXR1cm4gY29udmVydEZyb21ENTBXaGl0ZVBvaW50VG9ENjVXaGl0ZVBvaW50
KGNvbG9yKTsKLX0KKyAgICB9Cit9OwogCi0vLyBGYWxsYmFjayBjb252ZXJzaW9ucy4KKy8vIEZh
bGxiYWNrIGNvbnZlcnNpb24uCiAKIC8vIEFsbCB0eXBlcyBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBh
IGNvbnZlcnNpb24gdG8gdGhlaXIgcmVmZXJlbmNlIFhZWiBzcGFjZSwgc28gdGhpcyBpcyBndWFy
YW50ZWVkCiAvLyB0byB3b3JrIGlmIGFub3RoZXIgc3BlY2lhbGl6YXRpb24gaXMgbm90IGFscmVh
ZHkgcHJvdmlkZWQuCkBAIC0zNTcsMTcgKzM3OCw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFdo
aXRlUG9pbnQgaW5wdXRXaGkKIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dCwgdHlwZW5hbWUgSW5w
dXQ+IHN0cnVjdCBDb2xvckNvbnZlcnNpb24gewogICAgIHN0YXRpYyBPdXRwdXQgY29udmVydChj
b25zdCBJbnB1dCYgY29sb3IpCiAgICAgewotICAgICAgICBpZiBjb25zdGV4cHIoc3RkOjppc19z
YW1lX3Y8T3V0cHV0LCBJbnB1dD4pCi0gICAgICAgICAgICByZXR1cm4gY29sb3I7Ci0gICAgICAg
IGVsc2UgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBJbnB1dDo6Q29tcG9u
ZW50VHlwZSwgdWludDhfdD4pCi0gICAgICAgICAgICByZXR1cm4gY29udmVydENvbG9yPE91dHB1
dD4oY29udmVydFRvPFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKLSAgICAgICAgZWxzZSBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIE91dHB1dDo6Q29tcG9uZW50VHlwZSwgdWlu
dDhfdD4pCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvPFNSR0JBPHVpbnQ4X3Q+Pihjb252
ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIGF1dG8geHl6MSA9IGNvbnZlcnRDb2xvcjx0eXBlbmFtZSBJbnB1dDo6UmVmZXJlbmNlWFla
Pihjb2xvcik7Ci0gICAgICAgICAgICBhdXRvIHh5ejIgPSBwZXJmb3JtQ2hvbWF0aWNBZGFwYXRh
dGlvbjxPdXRwdXQ+KHh5ejEpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxPdXRw
dXQ+KHh5ejIpOwotICAgICAgICB9CisgICAgICAgIGF1dG8geHl6MSA9IGNvbnZlcnRDb2xvcjx0
eXBlbmFtZSBJbnB1dDo6UmVmZXJlbmNlWFlaPihjb2xvcik7CisgICAgICAgIGF1dG8geHl6MiA9
IGNvbnZlcnRDb2xvcjx0eXBlbmFtZSBPdXRwdXQ6OlJlZmVyZW5jZVhZWj4oeHl6MSk7CisgICAg
ICAgIHJldHVybiBjb252ZXJ0Q29sb3I8T3V0cHV0Pih4eXoyKTsKICAgICB9CiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCShyZXZp
c2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5
cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMSw3ICszMDEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBSZWMyMDIwKFQsIFQsIFQsIFQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU1JH
QkEgOiBSR0JBVHlwZTxTUkdCQSwgVCwgUkdCTW9kZWw8VD4+IHsKICAgICB1c2luZyBSR0JBVHlw
ZTxTUkdCQSwgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKICAgICB1c2luZyBMaW5lYXJDb3Vu
dGVycGFydCA9IExpbmVhclNSR0JBPFQ+OwotICAgIHVzaW5nIFJlZmVyZW5jZVhZWiA9IFhZWkE8
VCwgV2hpdGVQb2ludDo6RDY1PjsKKyAgICB1c2luZyBSZWZlcmVuY2VYWVogPSBYWVpBPHN0ZDo6
Y29uZGl0aW9uYWxfdDxzdGQ6OmlzX3NhbWVfdjxULCB1aW50OF90PiwgZmxvYXQsIFQ+LCBXaGl0
ZVBvaW50OjpENjU+OwogfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBKFQsIFQsIFQsIFQp
IC0+IFNSR0JBPFQ+OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclV0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LCAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTAsMTAgKzUwLDYgQEAgdWludDhfdCBjb252ZXJ0UHJlc2NhbGVkU1JHQkFGbG9hdFRvU1JH
QgogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0Qnl0ZUFscGhhVG8odWludDhfdCk7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnRGbG9hdEFscGhhVG8oZmxvYXQpOwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBUIGNvbnZlcnRUbyhjb25zdCBVJik7Ci10ZW1w
bGF0ZTw+IFNSR0JBPGZsb2F0PiBjb252ZXJ0VG8oY29uc3QgU1JHQkE8dWludDhfdD4mKTsKLXRl
bXBsYXRlPD4gU1JHQkE8dWludDhfdD4gY29udmVydFRvKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwot
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+IENvbG9yVHlw
ZSBjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFDb21wb25lbnQoY29uc3QgQ29sb3JUeXBlJiwg
RnVuY3RvciYmKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29s
b3JUeXBlIGNvbG9yV2l0aE92ZXJyaWRlbkFscGhhKGNvbnN0IENvbG9yVHlwZSYsIHVpbnQ4X3Qg
b3ZlcnJpZGVBbHBoYSk7CkBAIC02MiwxMyArNTgsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29s
b3JUeXBlPiBDb2xvclR5cGUgYwogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4
cHIgQ29sb3JUeXBlIGludmVydGVkQ29sb3JXaXRoT3ZlcnJpZGVuQWxwaGEoY29uc3QgQ29sb3JU
eXBlJiwgdWludDhfdCBvdmVycmlkZUFscGhhKTsKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlw
ZT4gQ29sb3JUeXBlIGludmVydGVkQ29sb3JXaXRoT3ZlcnJpZGVuQWxwaGEoY29uc3QgQ29sb3JU
eXBlJiwgZmxvYXQgb3ZlcnJpZGVBbHBoYSk7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlw
ZSwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBDb2xv
clR5cGU6Ok1vZGVsLCBSR0JNb2RlbDx0eXBlbmFtZSBDb2xvclR5cGU6OkNvbXBvbmVudFR5cGU+
Pj4qID0gbnVsbHB0cj4gY29uc3RleHByIGJvb2wgaXNCbGFjayhjb25zdCBDb2xvclR5cGUmKTsK
K3RlbXBsYXRlPFdoaXRlUG9pbnQgVz4gY29uc3RleHByIGJvb2wgaXNCbGFjayhjb25zdCBYWVpB
PGZsb2F0LCBXPiYpOwogY29uc3RleHByIGJvb2wgaXNCbGFjayhjb25zdCBMYWI8ZmxvYXQ+Jik7
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19zYW1lX3Y8dHlwZW5hbWUgQ29sb3JUeXBlOjpNb2RlbCwgUkdCTW9kZWw8dHlwZW5h
bWUgQ29sb3JUeXBlOjpDb21wb25lbnRUeXBlPj4+KiA9IG51bGxwdHI+Ci1jb25zdGV4cHIgYm9v
bCBpc0JsYWNrKGNvbnN0IENvbG9yVHlwZSYpOwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5
cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lX3Y8dHlwZW5hbWUgQ29s
b3JUeXBlOjpNb2RlbCwgUkdCTW9kZWw8dHlwZW5hbWUgQ29sb3JUeXBlOjpDb21wb25lbnRUeXBl
Pj4+KiA9IG51bGxwdHI+IGNvbnN0ZXhwciBib29sIGlzV2hpdGUoY29uc3QgQ29sb3JUeXBlJik7
Cit0ZW1wbGF0ZTxXaGl0ZVBvaW50IFc+IGNvbnN0ZXhwciBib29sIGlzV2hpdGUoY29uc3QgWFla
QTxmbG9hdCwgVz4mKTsKIGNvbnN0ZXhwciBib29sIGlzV2hpdGUoY29uc3QgTGFiPGZsb2F0PiYp
OwotdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIENvbG9yVHlwZTo6TW9kZWwsIFJHQk1vZGVsPHR5cGVu
YW1lIENvbG9yVHlwZTo6Q29tcG9uZW50VHlwZT4+PiogPSBudWxscHRyPgotY29uc3RleHByIGJv
b2wgaXNXaGl0ZShjb25zdCBDb2xvclR5cGUmKTsKIAogY29uc3RleHByIHVpbnQxNl90IGZhc3RN
dWx0aXBseUJ5MjU1KHVpbnQxNl90KTsKIGNvbnN0ZXhwciB1aW50MTZfdCBmYXN0RGl2aWRlQnky
NTUodWludDE2X3QpOwpAQCAtOTksMjYgKzk1LDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgZmxvYXQg
Y29udmVydEZsb2F0QWxwaAogICAgIHJldHVybiBjbGFtcGVkQWxwaGEodmFsdWUpOwogfQogCi10
ZW1wbGF0ZTw+IGlubGluZSBTUkdCQTxmbG9hdD4gY29udmVydFRvKGNvbnN0IFNSR0JBPHVpbnQ4
X3Q+JiBjb2xvcikKLXsKLSAgICBhdXRvIGNvbnZlcnRUb1NSR0JBRmxvYXQgPSBbXSh1aW50OF90
IHZhbHVlKSAtPiBmbG9hdCB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSAvIDI1NS4wZjsKLSAgICB9
OwotCi0gICAgYXV0byBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3IpOwotICAg
IHJldHVybiB7IGNvbnZlcnRUb1NSR0JBRmxvYXQoY29tcG9uZW50c1swXSksIGNvbnZlcnRUb1NS
R0JBRmxvYXQoY29tcG9uZW50c1sxXSksIGNvbnZlcnRUb1NSR0JBRmxvYXQoY29tcG9uZW50c1sy
XSksIGNvbnZlcnRUb1NSR0JBRmxvYXQoY29tcG9uZW50c1szXSkgfTsKLX0KLQotdGVtcGxhdGU8
PiBpbmxpbmUgU1JHQkE8dWludDhfdD4gY29udmVydFRvKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29s
b3IpCi17Ci0gICAgYXV0byBjb252ZXJ0VG9TUkdCQUJ5dGUgPSBbXShmbG9hdCB2YWx1ZSkgLT4g
dWludDhfdCB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmNsYW1wKHN0ZDo6bHJvdW5kKHZhbHVlICog
MjU1LjBmKSwgMGwsIDI1NWwpOwotICAgIH07Ci0KLSAgICBhdXRvIGNvbXBvbmVudHMgPSBhc0Nv
bG9yQ29tcG9uZW50cyhjb2xvcik7Ci0gICAgcmV0dXJuIHsgY29udmVydFRvU1JHQkFCeXRlKGNv
bXBvbmVudHNbMF0pLCBjb252ZXJ0VG9TUkdCQUJ5dGUoY29tcG9uZW50c1sxXSksIGNvbnZlcnRU
b1NSR0JBQnl0ZShjb21wb25lbnRzWzJdKSwgY29udmVydFRvU1JHQkFCeXRlKGNvbXBvbmVudHNb
M10pIH07Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgRnVuY3Rv
cj4gQ29sb3JUeXBlIGNvbG9yQnlNb2RpZmluZ0VhY2hOb25BbHBoYUNvbXBvbmVudChjb25zdCBD
b2xvclR5cGUmIGNvbG9yLCBGdW5jdG9yJiYgZnVuY3RvcikKIHsKICAgICBhdXRvIGNvbXBvbmVu
dHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGlj
IE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcAogICAgICAgICBjb21wb25lbnRBcnJh
eVtpXSA9IGNvbXBvbmVudDsKICAgICB9CiAKLSAgICByZXR1cm4gY29udmVydFRvPFNSR0JBPHVp
bnQ4X3Q+PihTUkdCQSB7IGNvbXBvbmVudEFycmF5WzFdLCBjb21wb25lbnRBcnJheVsyXSwgY29t
cG9uZW50QXJyYXlbM10sIGNvbXBvbmVudEFycmF5WzBdIH0pOworICAgIHJldHVybiBjb252ZXJ0
Q29sb3I8U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgY29tcG9uZW50QXJyYXlbMV0sIGNvbXBvbmVu
dEFycmF5WzJdLCBjb21wb25lbnRBcnJheVszXSwgY29tcG9uZW50QXJyYXlbMF0gfSk7CiB9CiAK
IFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNz
Q3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmlidXRlZFN0cmluZykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6
dHJhbnNmb3JtQ29sb3IoQ28KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBjb2xvciA9IGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4oc1JHQkFDb2xvcik7CisgICAgY29s
b3IgPSBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KHNSR0JBQ29sb3IpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpp
bnZlcnNlVHJhbnNmb3JtQwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGNvbG9yID0gY29udmVydFRvPFNSR0JBPHVpbnQ4X3Q+PihzUkdCQUNvbG9yKTsKKyAgICBjb2xv
ciA9IGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oc1JHQkFDb2xvcik7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9D
b2xvckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0NvbG9yR3RrLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0NvbG9yR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb2xvcjo6Q29sb3IoY29uc3QgR2Rr
UkdCQSYgY29sb3IpCi0gICAgOiBDb2xvcihjb252ZXJ0VG88U1JHQkE8dWludDhfdD4+KFNSR0JB
IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLnJlZCksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xv
ci5ncmVlbiksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci5ibHVlKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGNvbG9yLmFscGhhKSB9KSkKKyAgICA6IENvbG9yKGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50
OF90Pj4oU1JHQkEgeyBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3IucmVkKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGNvbG9yLmdyZWVuKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLmJsdWUpLCBzdGF0
aWNfY2FzdDxmbG9hdD4oY29sb3IuYWxwaGEpIH0pKQogewogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCShyZXZpc2lvbiAy
NzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JB
PHVpbnQ4X3Q+PiBtYWtlU2ltcAogICAgIFtyZ2JDb2xvciBnZXRSZWQ6JnJlZENvbXBvbmVudCBn
cmVlbjomZ3JlZW5Db21wb25lbnQgYmx1ZTomYmx1ZUNvbXBvbmVudCBhbHBoYTomYWxwaGFdOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAotICAgIHJldHVybiBjb252ZXJ0VG88U1JH
QkE8dWludDhfdD4+KFNSR0JBIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlZENvbXBvbmVudCksIHN0
YXRpY19jYXN0PGZsb2F0PihncmVlbkNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihibHVl
Q29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFscGhhKSB9KTsKKyAgICByZXR1cm4gY29u
dmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IHN0YXRpY19jYXN0PGZsb2F0PihyZWRD
b21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oZ3JlZW5Db21wb25lbnQpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oYmx1ZUNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBoYSkgfSk7CiB9
CiAKIENvbG9yIGNvbG9yRnJvbU5TQ29sb3IoTlNDb2xvciAqY29sb3IpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQu
Y3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vQ29sb3JEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb2xvcjo6
Q29sb3IoRDJEMV9DT0xPUl9GIGNvbG9yKQotICAgIDogQ29sb3IoY29udmVydFRvPFNSR0JBPHVp
bnQ4X3Q+PihTUkdCQSB7IGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEgfSkpCisg
ICAgOiBDb2xvcihjb2xvckNvbnZlcnQ8U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgY29sb3Iuciwg
Y29sb3IuZywgY29sb3IuYiwgY29sb3IuYSB9KSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEOjpzZXRB
Y3RpdmVMCiAKIENPTVB0cjxJRDJEMVNvbGlkQ29sb3JCcnVzaD4gUGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQ6OmJydXNoV2l0aENvbG9yKGNvbnN0IEQyRDFfQ09MT1JfRiYgY29sb3IpCiB7Ci0gICAg
YXV0byBjb2xvcktleSA9IGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBjb2xvci5y
LCBjb2xvci5nLCBjb2xvci5iLCBjb2xvci5hIH0pOworICAgIGF1dG8gY29sb3JLZXkgPSBjb2xv
ckNvbnZlcnQ8U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgY29sb3IuciwgY29sb3IuZywgY29sb3Iu
YiwgY29sb3IuYSB9KTsKIAogICAgIGlmICghY29sb3JLZXkpIHsKICAgICAgICAgaWYgKCFtX3pl
cm9CcnVzaCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ29sb3JJT1MubW0JKHJl
dmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBDb2xvciBjb2xvckZyb21VSUNvbG9y
KFVJQ29sb3IgKmNvbG9yKQogCiAgICAgW2NvbG9yIGdldFJlZDomcmVkQ29tcG9uZW50IGdyZWVu
OiZncmVlbkNvbXBvbmVudCBibHVlOiZibHVlQ29tcG9uZW50IGFscGhhOiZhbHBoYV07CiAKLSAg
ICByZXR1cm4gY29udmVydFRvPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IHN0YXRpY19jYXN0PGZs
b2F0PihyZWRDb21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oZ3JlZW5Db21wb25lbnQpLCBz
dGF0aWNfY2FzdDxmbG9hdD4oYmx1ZUNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBo
YSkgfSk7CisgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBz
dGF0aWNfY2FzdDxmbG9hdD4ocmVkQ29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGdyZWVu
Q29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJsdWVDb21wb25lbnQpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oYWxwaGEpIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wMi0wNiAgU2FtIFdlaW5pZyAgPHdlaW5p
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG1vcmUgc3BlY2lhbCBjYXNlcyBmcm9tIGNv
bG9yIGNvbnZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMTUxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwOgorICAgICAgICAod2Vi
a2l0Q29sb3JUb1dlYkNvcmVDb2xvcik6CisgICAgICAgIFJlcGxhY2UgY29udmVydFRvPD4gY29t
cG9uZW50IHR5cGUgY29udmVyc2lvbiB0byBnZW5lcmFsIGNvbnZlcnRDb2xvcjw+LgorCiAyMDIx
LTAyLTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyMjcyMzM3KTogY3Jhc2ggdW5kZXIgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c2V0
SW5hY3RpdmUoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRD
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRDb2xvci5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3
IEBAIEdfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0Q29sb3IsIHdlYmtpdF8KIAogY29uc3QgV2Vi
Q29yZTo6Q29sb3Igd2Via2l0Q29sb3JUb1dlYkNvcmVDb2xvcihXZWJLaXRDb2xvciogY29sb3Ip
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvbnZlcnRUbzxXZWJDb3JlOjpTUkdCQTx1aW50OF90
Pj4oV2ViQ29yZTo6U1JHQkEgeyBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPnJlZCksIHN0YXRp
Y19jYXN0PGZsb2F0Pihjb2xvci0+Z3JlZW4pLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPmJs
dWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPmFscGhhKSB9KTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6Y29udmVydENvbG9yPFdlYkNvcmU6OlNSR0JBPHVpbnQ4X3Q+PihXZWJDb3JlOjpTUkdC
QSB7IHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+cmVkKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNv
bG9yLT5ncmVlbiksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+Ymx1ZSksIHN0YXRpY19jYXN0
PGZsb2F0Pihjb2xvci0+YWxwaGEpIH0pOwogfQogCiB2b2lkIHdlYmtpdENvbG9yRmlsbEZyb21X
ZWJDb3JlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIHdlYkNvcmVDb2xvciwgV2ViS2l0Q29s
b3IqIGNvbG9yKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjcyNDYyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDItMDYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgorCisgICAgICAgIFJlbW92ZSBtb3JlIHNwZWNpYWwgY2FzZXMgZnJvbSBjb2xvciBj
b252ZXJzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjE1MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIFJlcGxhY2UgY29udmVydFRv
PD4gY29tcG9uZW50IHR5cGUgY29udmVyc2lvbiB0byBnZW5lcmFsIGNvbnZlcnRDb2xvcjw+Lgor
CiAyMDIxLTAyLTA1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtNYWNdIERpc2FibGUgTWVkaWFTZXNzaW9uVGVzdCBBUEkgdGVzdHMKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENv
bG9yVGVzdHMuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5
LDcgKzEwOSw3IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgRXF1YWxpdHkpCiAgICAgfQogCiAgICAg
YXV0byBjb21wb25lbnRCeXRlcyA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAxMjgsIDYzLCAxMjcg
fTsKLSAgICBDb2xvciByZ2IxIHsgY29udmVydFRvPFNSR0JBPGZsb2F0Pj4oY29tcG9uZW50Qnl0
ZXMpIH07CisgICAgQ29sb3IgcmdiMSB7IGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbXBv
bmVudEJ5dGVzKSB9OwogICAgIENvbG9yIHJnYjIgeyBjb21wb25lbnRCeXRlcyB9OwogICAgIEVY
UEVDVF9ORShyZ2IxLCByZ2IyKTsKICAgICBFWFBFQ1RfTkUocmdiMiwgcmdiMSk7CkBAIC0xMzgs
NyArMTM4LDcgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBIYXNoKQogICAgIH0KIAogICAgIGF1dG8g
Y29tcG9uZW50Qnl0ZXMgPSBTUkdCQTx1aW50OF90PiB7IDI1NSwgMTI4LCA2MywgMTI3IH07Ci0g
ICAgQ29sb3IgcmdiMSB7IGNvbnZlcnRUbzxTUkdCQTxmbG9hdD4+KGNvbXBvbmVudEJ5dGVzKSB9
OworICAgIENvbG9yIHJnYjEgeyBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb21wb25lbnRC
eXRlcykgfTsKICAgICBDb2xvciByZ2IyIHsgY29tcG9uZW50Qnl0ZXMgfTsKICAgICBFWFBFQ1Rf
TkUocmdiMS5oYXNoKCksIHJnYjIuaGFzaCgpKTsKIH0K
</data>
<flag name="commit-queue"
          id="437745"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419506</attachid>
            <date>2021-02-06 09:46:47 -0800</date>
            <delta_ts>2021-02-06 11:09:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221519-20210206094646.patch</filename>
            <type>text/plain</type>
            <size>34917</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wMi0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG1vcmUgc3BlY2lhbCBj
YXNlcyBmcm9tIGNvbG9yIGNvbnZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTUxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gUmVtb3ZlIHNwZWNpYWxpemVkIGNvbnZlcnRUbzw+IGZ1bmN0
aW9uIHdoaWNoIG9ubHkgZGlkIGNvbXBvbmVudAorICAgICAgICAgIHR5cGUgY29udmVyc2lvbiB3
aXRoIHRoZSBmdWxseSBnZW5lcmFsIGNvbnZlcnRDb2xvcjw+IGZ1bmN0aW9uLgorCisgICAgICAg
IC0gTWFrZSBDb2xvckNvbXBvbmVudHMgYSBiaXQgbW9yZSByZWFkeSBmb3Igbm9uLTQgY29tcG9u
ZW50IGNvbG9ycyBieQorICAgICAgICAgIHJld29ya2luZyBtZW1iZXIgZnVuY3Rpb25hbGl0eSBi
YXNlZCBvbiBhIG5ldyBtYXBDb2xvckNvbXBvbmVudHMgZnVuY3Rpb24KKyAgICAgICAgICB3aGlj
aCBtYXBzIGEgZnVuY3Rpb24gRiBvdmVyIGFsbCB0aGUgY29tcG9uZW50cyBvZiBhIHNldCBvZiBD
b2xvckNvbXBvbmVudHMuCisgICAgICAgICAgZS5nLgorCisgICAgICAgICAgICAgIGF1dG8gY29s
b3JDb21wb25lbnRzQyA9IG1hcENvbG9yQ29tcG9uZW50cyhbXSAoYXV0byBhLCBhdXRvIGIpIHsg
cmV0dXJuIGEgKyBiOyB9LCBjb2xvckNvbXBvbmVudHNBLCBjb2xvckNvbXBvbmVudHNCKTsKKwor
ICAgICAgICAgIHdpbGwgY3JlYXRlIGEgbmV3IENvbG9yQ29tcG9uZW50cyB3aGVyZSBlYWNoIGNv
bXBvbmVudCBpcyB0aGUgc3VtIG9mIHRoZSAKKyAgICAgICAgICBjb3JyZXNwb25kaW5nIGNvbXBv
bmVudHMgaW4gY29sb3JDb21wb25lbnRzQSBhbmQgY29sb3JDb21wb25lbnRzQi4gSXQncworICAg
ICAgICAgIHZhcmlhZGljIHNvIGl0IGNhbiB0YWtlIGFueSBudW1iZXIgb2YgQ29sb3JDb21wb25l
bnRzLiBUaGlzIGFsbG93cyByZXdyaXRpbmcKKyAgICAgICAgICBhbGwgb2YgdGhlIG1lbWJlcnMg
dG8gYmUgc2l6ZSBpbnZhcmlhbnQgYW5kIGEgbGl0dGxlIGxlc3MgdmVyYm9zZS4KKworICAgICAg
ICAtIFJlcGxhY2Ugc3BlY2lhbCBjYXNlIGZvciB0aGUgaWRlbnRpdHkgY29udmVyc2lvbiBpbiB0
aGUgZmFsbGJhY2sgY29sb3IgY29udmVyc2lvbgorICAgICAgICAgIGNvZGUgcGF0aCwgYW5kIG1v
dmUgaXQgaW50byBpdCdzIG93biBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIG9mIENvbG9yQ29udmVy
c2lvbi4KKworICAgICAgICAtIFJlcGxhY2Ugc3BlY2lhbCBjYXNlIGZvciBjaHJvbWF0aWMgYWRh
cHRhdGlvbiBjb252ZXJzaW9ucyBhbmQgaGF2ZSB0aGVtIGp1c3QKKyAgICAgICAgICB1c2Ugc3Bl
Y2lhbGl6YXRpb25zIG9mIENvbG9yQ29udmVyc2lvbiBsaWtlIGFsbCBvdGhlciBjb252ZXJzaW9u
cy4KKworICAgICAgICAtIFJlcGxhY2Ugc3BlY2lhbCBjYXNlIGZvciBzUkdCIGNvbXBvbmVudCB0
eXBlIGNvbnZlcnNpb25zIGFuZCBoYXZlIHRoZW0ganVzdAorICAgICAgICAgIHVzZSBzcGVjaWFs
aXphdGlvbnMgb2YgQ29sb3JDb252ZXJzaW9uIGxpa2UgYWxsIG90aGVyIGNvbnZlcnNpb25zLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmg6CisgICAgICAg
IChXZWJDb3JlOjptYXBDb2xvckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JD
b21wb25lbnRzPFQ+OjptYXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25l
bnRzPFQ+OjpvcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVu
dHM8VD46OmFicyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpwZXJDb21wb25lbnRNYXgpOgor
ICAgICAgICAoV2ViQ29yZTo6cGVyQ29tcG9uZW50TWluKToKKyAgICAgICAgQWRkIG1hcCBhbmQg
bWFwQ29sb3JDb21wb25lbnRzIGFuZCByZS1pbXBsZW1lbnQgZXhpc3RpbmcKKyAgICAgICAgZnVu
Y3Rpb25hbGl0eSBpbiB0ZXJtcyBvZiB0aGVtLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoaXRlUG9pbnQ6OkQ1
MD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldoaXRlUG9pbnQ6OkQ2NT4+Ojpjb252
ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JBPHVpbnQ4X3Q+Pjo6Y29udmVydCk6CisgICAg
ICAgIChXZWJDb3JlOjpTUkdCQTxmbG9hdD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNSR0JBPHVpbnQ4X3Q+OjpSZWZlcmVuY2VYWVo+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2ludCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RnJvbUQ2NVdoaXRlUG9pbnRUb0Q1MFdoaXRlUG9pbnQp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb252ZXJzaW9uOjpjb252ZXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OnBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
VXNlIENvbG9yQ29udmVyc2lvbiBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBpZGVudGl0eSBjb252
ZXJzaW9uLCBjaG9tYXRpYyAKKyAgICAgICAgYWRhcGF0YXRpb24sIGFuZCBjb21wb25lbnQgdHlw
ZSBjb252ZXJzaW9ucywgcmF0aGVyIHRoYW4gaGFyZCBjb2RpbmcgdGhlbQorICAgICAgICBpbiB0
aGUgZmFsbGJhY2sgY29udmVyc2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVHlwZXMuaDoKKyAgICAgICAgU3BlY2lhbCBjYXNlIFNSR0JBPHVpbnQ4X3Q+IHRvIGhhdmUg
YSBSZWZlcmVuY2VYWVogb2YgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiwgYXMgCisgICAg
ICAgIFhZWkE8dWludDhfdCwgV2hpdGVQb2ludDo6RDY1PiBpcyBub3QgYSB2YWxpZCBjb2xvciAo
WFlaQSBvbmx5IHN1cHBvcnRzIGZsb2F0aW5nIHBvaW50CisgICAgICAgIGNvbXBvbmVudHMpLiBX
ZSBhcmUga2VlcGluZyBpdCBiYXNlZCBvbiBUIGluIG90aGVyIGNhc2VzIHRvIHN1cHBvcnQgZnV0
dXJlIGVmZm9ydHMgdG8gdXNlCisgICAgICAgIG90aGVyIGZsb2F0aW5nIHBvaW50IHR5cGVzIHdp
dGggdGhlc2UgY29sb3IgdHlwZXMgc3VjaCBhcyBoYWxmLWZsb2F0LgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRUbyk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBjb252ZXJ0VG88Piwgd2hpY2ggaXMgbm93
IHN1cGVyc2VkZWQgYnkgdGhlIGdlbmVyYWwgY29udmVydENvbG9yPD4uCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6CisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5Q29sb3JTdHJpbmdWYWx1
ZV0pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRTaGFkb3cpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpDYW52YXNT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50IGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb2xvcjo6bGlnaHRlbmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpk
YXJrZW5lZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y29sb3JTcGFjZUFuZENv
bXBvbmVudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VT
aW1wbGVDb2xvckZyb21BUkdCQ0ZBcnJheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9w
ZXJhdGlvbnM6OnRyYW5zZm9ybUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ck9wZXJhdGlvbnM6OmludmVyc2VUcmFuc2Zvcm1Db2xvciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0NvbG9yR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9y
OjpDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yRnJvbU5TQ29sb3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Db2xvckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yOjpDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRm
b3JtQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4
dERpcmVjdDJEOjpicnVzaFdpdGhDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0NvbG9y
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JGcm9tVUlDb2xvcik6CisgICAgICAgIEFk
b3B0IGNvbnZlcnRDb2xvcjw+IHRvIHJlcGxhY2UgY29udmVydFRvPD4uCisKIDIwMjEtMDItMDYg
IFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdW1F1
aXJrXSBLZWVwIHRoZSByb290IGlubGluZSBib3ggYmFzZWxpbmUgYW5jaG9yZWQgYXQgMApJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDMsNyArNDQzLDcgQEAgc3RhdGljIGdj
aGFyKiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleAogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCiAgICAgaWYgKGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpDb2xvcldlbGwpIHsKLSAgICAgICAgYXV0byBjb2xvciA9IGNvbnZlcnRUbzxTUkdCQTxm
bG9hdD4+KGNvcmVPYmplY3QtPmNvbG9yVmFsdWUoKSk7CisgICAgICAgIGF1dG8gY29sb3IgPSBj
b252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb3JlT2JqZWN0LT5jb2xvclZhbHVlKCkpOwogICAg
ICAgICByZXR1cm4gZ19zdHJkdXBfcHJpbnRmKCJyZ2IgJTcuNWYgJTcuNWYgJTcuNWYgMSIsIGNv
bG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNvbG9yLmJsdWUpOwogICAgIH0KICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJldmlzaW9uIDI3MjQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCAtIChO
U1N0cmluZyAqKWFjY2Vzc2liaWxpdHlDb2xvclN0cmluZ1ZhCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBpZiAoc2VsZi5heEJhY2tpbmdPYmplY3QtPmlzQ29sb3JXZWxsKCkpIHsKLSAgICAg
ICAgYXV0byBjb2xvciA9IGNvbnZlcnRUbzxTUkdCQTxmbG9hdD4+KHNlbGYuYXhCYWNraW5nT2Jq
ZWN0LT5jb2xvclZhbHVlKCkpOworICAgICAgICBhdXRvIGNvbG9yID0gY29udmVydENvbG9yPFNS
R0JBPGZsb2F0Pj4oc2VsZi5heEJhY2tpbmdPYmplY3QtPmNvbG9yVmFsdWUoKSk7CiAgICAgICAg
IHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInJnYiAlNy41ZiAlNy41ZiAlNy41
ZiAxIiwgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZV07CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMjcyNDYy
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzODUsNyArMjM4NSw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuIEAo
YmFja2luZ09iamVjdC0+aXNTZWxlY3RlZCgpKTsKIAogICAgICAgICBpZiAoYmFja2luZ09iamVj
dC0+aXNDb2xvcldlbGwoKSkgewotICAgICAgICAgICAgYXV0byBjb2xvciA9IGNvbnZlcnRUbzxT
UkdCQTxmbG9hdD4+KGJhY2tpbmdPYmplY3QtPmNvbG9yVmFsdWUoKSk7CisgICAgICAgICAgICBh
dXRvIGNvbG9yID0gY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oYmFja2luZ09iamVjdC0+Y29s
b3JWYWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAInJnYiAlNy41ZiAlNy41ZiAlNy41ZiAxIiwgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29s
b3IuYmx1ZV07CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzI0LDcgKzEzMjQsNyBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFNoCiAgICAgaWYgKHN0ZDo6aXNu
YW4oZ3JheUxldmVsKSB8fCBzdGQ6OmlzbmFuKGFscGhhKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1ciwgY29udmVydFRvPFNS
R0JBPHVpbnQ4X3Q+PihtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZzxTUkdCQTxmbG9hdD4+KGdy
YXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIGFscGhhKSkpOworICAgIHNldFNoYWRvdyhG
bG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90
Pj4obWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihncmF5TGV2ZWwsIGdy
YXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQg
Ymx1ciwgZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKQEAgLTEzMzIsNyArMTMz
Miw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0U2gKICAgICBpZiAo
c3RkOjppc25hbihyKSB8fCBzdGQ6OmlzbmFuKGcpIHx8IHN0ZDo6aXNuYW4oYikgIHx8IHN0ZDo6
aXNuYW4oYSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lk
dGgsIGhlaWdodCksIGJsdXIsIGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4obWFrZUZyb21Db21w
b25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBhKSkpOworICAgIHNldFNoYWRv
dyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50
OF90Pj4obWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBh
KSkpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNsZWFyU2hhZG93
KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAJKHJl
dmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBDYW52YXNTdHlsZTo6Q2FudmFz
U3R5bGUoQ29sb3IgY29sb3IpCiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBT
UkdCQTxmbG9hdD4mIGNvbG9yQ29tcG9uZW50cykKLSAgICA6IG1fc3R5bGUoY29udmVydFRvPFNS
R0JBPHVpbnQ4X3Q+Pihjb2xvckNvbXBvbmVudHMpKQorICAgIDogbV9zdHlsZShjb252ZXJ0Q29s
b3I8U1JHQkE8dWludDhfdD4+KGNvbG9yQ29tcG9uZW50cykpCiB7CiB9CiAKQEAgLTE0OCw3ICsx
NDgsNyBAQCBib29sIENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDb2xvcihjb25zCiAKIGJvb2wg
Q2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudChjb25zdCBTUkdCQTxmbG9hdD4mIGNvbXBvbmVudHMp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29sb3I+KG1fc3R5
bGUpICYmIFdURjo6Z2V0PENvbG9yPihtX3N0eWxlKSA9PSBjb252ZXJ0VG88U1JHQkE8dWludDhf
dD4+KGNvbXBvbmVudHMpOworICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENvbG9y
PihtX3N0eWxlKSAmJiBXVEY6OmdldDxDb2xvcj4obV9zdHlsZSkgPT0gY29udmVydENvbG9yPFNS
R0JBPHVpbnQ4X3Q+Pihjb21wb25lbnRzKTsKIH0KIAogdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlT
dHJva2VDb2xvcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkxLDcgKzkxLDcgQEAgQ29sb3IgQ29sb3I6OmxpZ2h0ZW5lZCgpIGNvbnN0CiAKICAg
ICBmbG9hdCBtdWx0aXBsaWVyID0gc3RkOjptaW4oMS4wZiwgdiArIDAuMzNmKSAvIHY7CiAKLSAg
ICByZXR1cm4gY29udmVydFRvPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IG11bHRpcGxpZXIgKiBy
LCBtdWx0aXBsaWVyICogZywgbXVsdGlwbGllciAqIGIsIGEgfSk7CisgICAgcmV0dXJuIGNvbnZl
cnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBtdWx0aXBsaWVyICogciwgbXVsdGlwbGll
ciAqIGcsIG11bHRpcGxpZXIgKiBiLCBhIH0pOwogfQogCiBDb2xvciBDb2xvcjo6ZGFya2VuZWQo
KSBjb25zdApAQCAtMTA1LDcgKzEwNSw3IEBAIENvbG9yIENvbG9yOjpkYXJrZW5lZCgpIGNvbnN0
CiAgICAgZmxvYXQgdiA9IHN0ZDo6bWF4KHsgciwgZywgYiB9KTsKICAgICBmbG9hdCBtdWx0aXBs
aWVyID0gc3RkOjptYXgoMC4wZiwgKHYgLSAwLjMzZikgLyB2KTsKIAotICAgIHJldHVybiBjb252
ZXJ0VG88U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgbXVsdGlwbGllciAqIHIsIG11bHRpcGxpZXIg
KiBnLCBtdWx0aXBsaWVyICogYiwgYSB9KTsKKyAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JB
PHVpbnQ4X3Q+PihTUkdCQSB7IG11bHRpcGxpZXIgKiByLCBtdWx0aXBsaWVyICogZywgbXVsdGlw
bGllciAqIGIsIGEgfSk7CiB9CiAKIGZsb2F0IENvbG9yOjpsaWdodG5lc3MoKSBjb25zdApAQCAt
MTY1LDcgKzE2NSw3IEBAIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmwK
IHsKICAgICBpZiAoaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1cm4geyBhc0V4dGVuZGVkKCku
Y29sb3JTcGFjZSgpLCBhc0V4dGVuZGVkKCkuY29tcG9uZW50cygpIH07Ci0gICAgcmV0dXJuIHsg
Q29sb3JTcGFjZTo6U1JHQiwgYXNDb2xvckNvbXBvbmVudHMoY29udmVydFRvPFNSR0JBPGZsb2F0
Pj4oYXNJbmxpbmUoKSkpIH07CisgICAgcmV0dXJuIHsgQ29sb3JTcGFjZTo6U1JHQiwgYXNDb2xv
ckNvbXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oYXNJbmxpbmUoKSkpIH07CiB9
CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbG9yJiBj
b2xvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9u
ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29tcG9uZW50cy5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiAr
NDEsOSBAQCBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzIHsKICAgICB7CiAgICAgfQogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRj4KKyAgICBjb25zdGV4cHIgYXV0byBtYXAoRiYmIGZ1bmN0aW9uKSBj
b25zdCAtPiBDb2xvckNvbXBvbmVudHM8ZGVjbHR5cGUoZnVuY3Rpb24oc3RkOjpkZWNsdmFsPFQ+
KCkpKT47CisKICAgICBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzJiBvcGVyYXRvcis9KGNvbnN0
IENvbG9yQ29tcG9uZW50cyYpOwogCiAgICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50cyBvcGVy
YXRvcisoVCkgY29uc3Q7CkBAIC01OCw1OCArNjEsNTMgQEAgc3RydWN0IENvbG9yQ29tcG9uZW50
cyB7CiAgICAgc3RkOjphcnJheTxULCBTaXplPiBjb21wb25lbnRzOwogfTsKIAordGVtcGxhdGU8
dHlwZW5hbWUgRiwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gVHM+Citjb25zdGV4cHIgYXV0byBt
YXBDb2xvckNvbXBvbmVudHMoRiYmIGZ1bmN0aW9uLCBUIGNvbXBvbmVudCwgVHMuLi4gY29tcG9u
ZW50cykgLT4gQ29sb3JDb21wb25lbnRzPGRlY2x0eXBlKGZ1bmN0aW9uKGNvbXBvbmVudFswXSwg
Y29tcG9uZW50c1swXS4uLikpPgoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpjb25qdW5jdGlv
bl92PHN0ZDo6Ym9vbF9jb25zdGFudDxUczo6U2l6ZSA9PSBUOjpTaXplPi4uLj4sICJBbGwgQ29s
b3JDb21wb25lbnRzIHBhc3NlZCB0byBtYXBDb2xvckNvbXBvbmVudHMgbXVzdCBoYXZlIHRoZSBz
YW1lIHNpemUiKTsKKworICAgIENvbG9yQ29tcG9uZW50czxkZWNsdHlwZShmdW5jdGlvbihjb21w
b25lbnRbMF0sIGNvbXBvbmVudHNbMF0uLi4pKT4gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgVDo6U2l6ZTsgKytpKQorICAgICAgICByZXN1bHRbaV0gPSBmdW5jdGlvbihjb21w
b25lbnRbaV0sIGNvbXBvbmVudHNbaV0uLi4pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBGPgorY29uc3RleHByIGF1dG8g
Q29sb3JDb21wb25lbnRzPFQ+OjptYXAoRiYmIGZ1bmN0aW9uKSBjb25zdCAtPiBDb2xvckNvbXBv
bmVudHM8ZGVjbHR5cGUoZnVuY3Rpb24oc3RkOjpkZWNsdmFsPFQ+KCkpKT4KK3sKKyAgICByZXR1
cm4gbWFwQ29sb3JDb21wb25lbnRzKHN0ZDo6Zm9yd2FyZDxGPihmdW5jdGlvbiksICp0aGlzKTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4m
IENvbG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IrPShjb25zdCBDb2xvckNvbXBvbmVudHMmIHJo
cykKIHsKLSAgICBjb21wb25lbnRzWzBdICs9IHJoc1swXTsKLSAgICBjb21wb25lbnRzWzFdICs9
IHJoc1sxXTsKLSAgICBjb21wb25lbnRzWzJdICs9IHJoc1syXTsKLSAgICBjb21wb25lbnRzWzNd
ICs9IHJoc1szXTsKKyAgICAqdGhpcyA9IG1hcENvbG9yQ29tcG9uZW50cyhbXShUIGMxLCBUIGMy
KSB7IHJldHVybiBjMSArIGMyOyB9LCAqdGhpcywgcmhzKTsKICAgICByZXR1cm4gKnRoaXM7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IENv
bG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IrKFQgcmhzKSBjb25zdAogewotICAgIHJldHVybiB7
Ci0gICAgICAgIGNvbXBvbmVudHNbMF0gKyByaHMsCi0gICAgICAgIGNvbXBvbmVudHNbMV0gKyBy
aHMsCi0gICAgICAgIGNvbXBvbmVudHNbMl0gKyByaHMsCi0gICAgICAgIGNvbXBvbmVudHNbM10g
KyByaHMKLSAgICB9OworICAgIHJldHVybiBtYXAoW3Joc10oVCBjKSB7IHJldHVybiBjICsgcmhz
OyB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVu
dHM8VD4gQ29sb3JDb21wb25lbnRzPFQ+OjpvcGVyYXRvci8oVCBkZW5vbWluYXRvcikgY29uc3QK
IHsKLSAgICByZXR1cm4gewotICAgICAgICBjb21wb25lbnRzWzBdIC8gZGVub21pbmF0b3IsCi0g
ICAgICAgIGNvbXBvbmVudHNbMV0gLyBkZW5vbWluYXRvciwKLSAgICAgICAgY29tcG9uZW50c1sy
XSAvIGRlbm9taW5hdG9yLAotICAgICAgICBjb21wb25lbnRzWzNdIC8gZGVub21pbmF0b3IKLSAg
ICB9OworICAgIHJldHVybiBtYXAoW2Rlbm9taW5hdG9yXShUIGMpIHsgcmV0dXJuIGMgLyBkZW5v
bWluYXRvcjsgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JD
b21wb25lbnRzPFQ+IENvbG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IqKFQgZmFjdG9yKSBjb25z
dAogewotICAgIHJldHVybiB7Ci0gICAgICAgIGNvbXBvbmVudHNbMF0gKiBmYWN0b3IsCi0gICAg
ICAgIGNvbXBvbmVudHNbMV0gKiBmYWN0b3IsCi0gICAgICAgIGNvbXBvbmVudHNbMl0gKiBmYWN0
b3IsCi0gICAgICAgIGNvbXBvbmVudHNbM10gKiBmYWN0b3IKLSAgICB9OworICAgIHJldHVybiBt
YXAoW2ZhY3Rvcl0oVCBjKSB7IHJldHVybiBjICogZmFjdG9yOyB9KTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gQ29sb3JDb21wb25lbnRz
PFQ+OjphYnMoKSBjb25zdAogewotICAgIHJldHVybiB7Ci0gICAgICAgIHN0ZDo6YWJzKGNvbXBv
bmVudHNbMF0pLAotICAgICAgICBzdGQ6OmFicyhjb21wb25lbnRzWzFdKSwKLSAgICAgICAgc3Rk
OjphYnMoY29tcG9uZW50c1syXSksCi0gICAgICAgIHN0ZDo6YWJzKGNvbXBvbmVudHNbM10pCi0g
ICAgfTsKKyAgICByZXR1cm4gbWFwKFtdKFQgYykgeyByZXR1cm4gc3RkOjphYnMoYyk7IH0pOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTIyLDIzICsxMjAsMTMgQEAgY29uc3RleHBy
IFQgQ29sb3JDb21wb25lbnRzPFQ+OjpnZXQoKSBjbwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNv
bnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWF4KGNvbnN0IENvbG9yQ29t
cG9uZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQogewotICAgIHJldHVy
biB7Ci0gICAgICAgIHN0ZDo6bWF4KGFbMF0sIGJbMF0pLAotICAgICAgICBzdGQ6Om1heChhWzFd
LCBiWzFdKSwKLSAgICAgICAgc3RkOjptYXgoYVsyXSwgYlsyXSksCi0gICAgICAgIHN0ZDo6bWF4
KGFbM10sIGJbM10pCi0gICAgfTsKKyAgICByZXR1cm4gbWFwQ29sb3JDb21wb25lbnRzKFtdKFQg
YzEsIFQgYzIpIHsgcmV0dXJuIHN0ZDo6bWF4KGMxLCBjMik7IH0sIGEsIGIpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBwZXJDb21wb25l
bnRNaW4oY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVudHM8
VD4mIGIpCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgc3RkOjptaW4oYVswXSwgYlswXSksCi0g
ICAgICAgIHN0ZDo6bWluKGFbMV0sIGJbMV0pLAotICAgICAgICBzdGQ6Om1pbihhWzJdLCBiWzJd
KSwKLSAgICAgICAgc3RkOjptaW4oYVszXSwgYlszXSkKLSAgICB9OworICAgIHJldHVybiBtYXBD
b2xvckNvbXBvbmVudHMoW10oVCBjMSwgVCBjMikgeyByZXR1cm4gc3RkOjptaW4oYzEsIGMyKTsg
fSwgYSwgYik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29u
dmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMywxMiArMTMzLDEyIEBAIHN0YXRpYyBj
b25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gRDY1VG8KIAogLy8gTUFSSzogQ2hyb21hdGljIEFk
YXB0YXRpb24gY29udmVyc2lvbnMuCiAKLVhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4gY29u
dmVydEZyb21ENTBXaGl0ZVBvaW50VG9ENjVXaGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQsIFdo
aXRlUG9pbnQ6OkQ1MD4mIGNvbG9yKQorWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiBDb2xv
ckNvbnZlcnNpb248WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiwgWFlaQTxmbG9hdCwgV2hp
dGVQb2ludDo6RDUwPj46OmNvbnZlcnQoY29uc3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUw
PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0
QWxwaGE8WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1Pj4oRDUwVG9ENjVNYXRyaXgudHJhbnNm
b3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLVhZ
WkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBX
aGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4mIGNvbG9yKQorWFla
QTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPiBDb2xvckNvbnZlcnNpb248WFlaQTxmbG9hdCwgV2hp
dGVQb2ludDo6RDUwPiwgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1Pj46OmNvbnZlcnQoY29u
c3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIG1h
a2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxmbG9hdCwgV2hpdGVQb2lu
dDo6RDUwPj4oRDY1VG9ENTBNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xv
ckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CkBAIC02NDYsNCArNjQ2LDMwIEBAIFNSR0JBPGZsb2F0
PiBDb2xvckNvbnZlcnNpb248U1JHQkE8ZmxvYXQKICAgICByZXR1cm4gY29udmVydENvbG9yPFNS
R0JBPGZsb2F0Pj4oY29udmVydENvbG9yPExpbmVhclNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKIH0K
IAorLy8gTUFSSzogU1JHQkE8dWludDhfdD4gY29tcG9uZW50IHR5cGUgY29udmVyc2lvbnMuCisK
K1NSR0JBPGZsb2F0PiBDb2xvckNvbnZlcnNpb248U1JHQkE8ZmxvYXQ+LCBTUkdCQTx1aW50OF90
Pj46OmNvbnZlcnQoY29uc3QgU1JHQkE8dWludDhfdD4mIGNvbG9yKQoreworICAgIHJldHVybiBt
YWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8ZmxvYXQ+Pihhc0NvbG9yQ29tcG9uZW50cyhjb2xvciku
bWFwKFtdKHVpbnQ4X3QgdmFsdWUpIC0+IGZsb2F0IHsKKyAgICAgICAgcmV0dXJuIHZhbHVlIC8g
MjU1LjBmOworICAgIH0pKTsKK30KKworU1JHQkE8dWludDhfdD4gQ29sb3JDb252ZXJzaW9uPFNS
R0JBPHVpbnQ4X3Q+LCBTUkdCQTxmbG9hdD4+Ojpjb252ZXJ0KGNvbnN0IFNSR0JBPGZsb2F0PiYg
Y29sb3IpCit7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50czxTUkdCQTx1aW50OF90Pj4o
YXNDb2xvckNvbXBvbmVudHMoY29sb3IpLm1hcChbXShmbG9hdCB2YWx1ZSkgLT4gdWludDhfdCB7
CisgICAgICAgIHJldHVybiBzdGQ6Omxyb3VuZCh2YWx1ZSAqIDI1NS4wZik7CisgICAgfSkpOwor
fQorCitTUkdCQTx1aW50OF90Pjo6UmVmZXJlbmNlWFlaIENvbG9yQ29udmVyc2lvbjxTUkdCQTx1
aW50OF90Pjo6UmVmZXJlbmNlWFlaLCBTUkdCQTx1aW50OF90Pj46OmNvbnZlcnQoY29uc3QgU1JH
QkE8dWludDhfdD4mIGNvbG9yKQoreworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8Zmxv
YXQ+OjpSZWZlcmVuY2VYWVo+KGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKSk7Cit9
CisKK1NSR0JBPHVpbnQ4X3Q+IENvbG9yQ29udmVyc2lvbjxTUkdCQTx1aW50OF90PiwgU1JHQkE8
dWludDhfdD46OlJlZmVyZW5jZVhZWj46OmNvbnZlcnQoY29uc3QgU1JHQkE8dWludDhfdD46OlJl
ZmVyZW5jZVhZWiYgY29sb3IpCit7CisgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50
OF90Pj4oY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTksMjUgKzI5OSw0NiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2xvckNvbnZlcnNpb248SFdC
QTxmCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhXQkE8ZmxvYXQ+IGNvbnZlcnQoY29uc3Qg
U1JHQkE8ZmxvYXQ+Jik7CiB9OwogCisvLyBTcGVjaWFsIGNhc2VzIGZvciBTUkdCQTx1aW50OF90
Pi4gT25seSBzUkdCIHN1cHBvcnRzIG5vbi1mbG9hdGluZyBwb2ludCBjb21wb25lbnQgdHlwZXMu
CiAKK3RlbXBsYXRlPD4gc3RydWN0IENvbG9yQ29udmVyc2lvbjxTUkdCQTx1aW50OF90Pjo6UmVm
ZXJlbmNlWFlaLCBTUkdCQTx1aW50OF90Pj4geworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
UkdCQTx1aW50OF90Pjo6UmVmZXJlbmNlWFlaIGNvbnZlcnQoY29uc3QgU1JHQkE8dWludDhfdD4m
KTsKK307CiAKLS8vIENocm9tYXRpYyBBZGFwdGF0aW9uIGNvbnZlcnNpb25zLgotV0VCQ09SRV9F
WFBPUlQgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiBjb252ZXJ0RnJvbUQ1MFdoaXRlUG9p
bnRUb0Q2NVdoaXRlUG9pbnQoY29uc3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPiYpOwot
V0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPiBjb252ZXJ0RnJvbUQ2
NVdoaXRlUG9pbnRUb0Q1MFdoaXRlUG9pbnQoY29uc3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6
RDY1PiYpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBXaGl0ZVBvaW50IGlucHV0V2hpdGVQb2lu
dD4gY29uc3RleHByIHR5cGVuYW1lIFQ6OlJlZmVyZW5jZVhZWiBwZXJmb3JtQ2hvbWF0aWNBZGFw
YXRhdGlvbihjb25zdCBYWVpBPGZsb2F0LCBpbnB1dFdoaXRlUG9pbnQ+JiBjb2xvcikKLXsKLSAg
ICBjb25zdGV4cHIgV2hpdGVQb2ludCBvdXRwdXRXaGl0ZVBvaW50ID0gVDo6UmVmZXJlbmNlWFla
Ojp3aGl0ZVBvaW50OwordGVtcGxhdGU8PiBzdHJ1Y3QgQ29sb3JDb252ZXJzaW9uPFNSR0JBPHVp
bnQ4X3Q+LCBTUkdCQTx1aW50OF90Pjo6UmVmZXJlbmNlWFlaPiB7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFNSR0JBPHVpbnQ4X3Q+IGNvbnZlcnQoY29uc3QgU1JHQkE8dWludDhfdD46OlJl
ZmVyZW5jZVhZWiYpOworfTsKIAotICAgIGlmIGNvbnN0ZXhwciAob3V0cHV0V2hpdGVQb2ludCA9
PSBpbnB1dFdoaXRlUG9pbnQpCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb2xvckNvbnZlcnNpb248U1JH
QkE8ZmxvYXQ+LCBTUkdCQTx1aW50OF90Pj4geworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
UkdCQTxmbG9hdD4gY29udmVydChjb25zdCBTUkdCQTx1aW50OF90PiYpOworfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgQ29sb3JDb252ZXJzaW9uPFNSR0JBPHVpbnQ4X3Q+LCBTUkdCQTxmbG9hdD4+
IHsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1JHQkE8dWludDhfdD4gY29udmVydChjb25z
dCBTUkdCQTxmbG9hdD4mKTsKK307CisKKworLy8gWFlaQSBDaHJvbWF0aWMgQWRhcHRhdGlvbiBj
b252ZXJzaW9ucy4KKwordGVtcGxhdGU8PiBzdHJ1Y3QgQ29sb3JDb252ZXJzaW9uPFhZWkE8Zmxv
YXQsIFdoaXRlUG9pbnQ6OkQ2NT4sIFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4+IHsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiBjb252
ZXJ0KGNvbnN0IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4mKTsKK307CisKK3RlbXBsYXRl
PD4gc3RydWN0IENvbG9yQ29udmVyc2lvbjxYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENTA+LCBY
WVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENjU+PiB7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4gY29udmVydChjb25zdCBYWVpBPGZsb2F0LCBX
aGl0ZVBvaW50OjpENjU+Jik7Cit9OworCisKKy8vIElkZW50aXR5IGNvbnZlcnNpb24uCisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gc3RydWN0IENvbG9yQ29udmVyc2lvbjxDb2xvclR5
cGUsIENvbG9yVHlwZT4geworICAgIHN0YXRpYyBDb2xvclR5cGUgY29udmVydChjb25zdCBDb2xv
clR5cGUmIGNvbG9yKQorICAgIHsKICAgICAgICAgcmV0dXJuIGNvbG9yOwotICAgIGVsc2UgaWYg
Y29uc3RleHByIChvdXRwdXRXaGl0ZVBvaW50ID09IFdoaXRlUG9pbnQ6OkQ1MCkKLSAgICAgICAg
cmV0dXJuIGNvbnZlcnRGcm9tRDY1V2hpdGVQb2ludFRvRDUwV2hpdGVQb2ludChjb2xvcik7Ci0g
ICAgZWxzZSBpZiBjb25zdGV4cHIgKG91dHB1dFdoaXRlUG9pbnQgPT0gV2hpdGVQb2ludDo6RDY1
KQotICAgICAgICByZXR1cm4gY29udmVydEZyb21ENTBXaGl0ZVBvaW50VG9ENjVXaGl0ZVBvaW50
KGNvbG9yKTsKLX0KKyAgICB9Cit9OwogCi0vLyBGYWxsYmFjayBjb252ZXJzaW9ucy4KKy8vIEZh
bGxiYWNrIGNvbnZlcnNpb24uCiAKIC8vIEFsbCB0eXBlcyBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBh
IGNvbnZlcnNpb24gdG8gdGhlaXIgcmVmZXJlbmNlIFhZWiBzcGFjZSwgc28gdGhpcyBpcyBndWFy
YW50ZWVkCiAvLyB0byB3b3JrIGlmIGFub3RoZXIgc3BlY2lhbGl6YXRpb24gaXMgbm90IGFscmVh
ZHkgcHJvdmlkZWQuCkBAIC0zNTcsMTcgKzM3OCw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFdo
aXRlUG9pbnQgaW5wdXRXaGkKIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dCwgdHlwZW5hbWUgSW5w
dXQ+IHN0cnVjdCBDb2xvckNvbnZlcnNpb24gewogICAgIHN0YXRpYyBPdXRwdXQgY29udmVydChj
b25zdCBJbnB1dCYgY29sb3IpCiAgICAgewotICAgICAgICBpZiBjb25zdGV4cHIoc3RkOjppc19z
YW1lX3Y8T3V0cHV0LCBJbnB1dD4pCi0gICAgICAgICAgICByZXR1cm4gY29sb3I7Ci0gICAgICAg
IGVsc2UgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBJbnB1dDo6Q29tcG9u
ZW50VHlwZSwgdWludDhfdD4pCi0gICAgICAgICAgICByZXR1cm4gY29udmVydENvbG9yPE91dHB1
dD4oY29udmVydFRvPFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKLSAgICAgICAgZWxzZSBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIE91dHB1dDo6Q29tcG9uZW50VHlwZSwgdWlu
dDhfdD4pCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvPFNSR0JBPHVpbnQ4X3Q+Pihjb252
ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIGF1dG8geHl6MSA9IGNvbnZlcnRDb2xvcjx0eXBlbmFtZSBJbnB1dDo6UmVmZXJlbmNlWFla
Pihjb2xvcik7Ci0gICAgICAgICAgICBhdXRvIHh5ejIgPSBwZXJmb3JtQ2hvbWF0aWNBZGFwYXRh
dGlvbjxPdXRwdXQ+KHh5ejEpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxPdXRw
dXQ+KHh5ejIpOwotICAgICAgICB9CisgICAgICAgIGF1dG8geHl6MSA9IGNvbnZlcnRDb2xvcjx0
eXBlbmFtZSBJbnB1dDo6UmVmZXJlbmNlWFlaPihjb2xvcik7CisgICAgICAgIGF1dG8geHl6MiA9
IGNvbnZlcnRDb2xvcjx0eXBlbmFtZSBPdXRwdXQ6OlJlZmVyZW5jZVhZWj4oeHl6MSk7CisgICAg
ICAgIHJldHVybiBjb252ZXJ0Q29sb3I8T3V0cHV0Pih4eXoyKTsKICAgICB9CiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCShyZXZp
c2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5
cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMSw3ICszMDEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBSZWMyMDIwKFQsIFQsIFQsIFQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU1JH
QkEgOiBSR0JBVHlwZTxTUkdCQSwgVCwgUkdCTW9kZWw8VD4+IHsKICAgICB1c2luZyBSR0JBVHlw
ZTxTUkdCQSwgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKICAgICB1c2luZyBMaW5lYXJDb3Vu
dGVycGFydCA9IExpbmVhclNSR0JBPFQ+OwotICAgIHVzaW5nIFJlZmVyZW5jZVhZWiA9IFhZWkE8
VCwgV2hpdGVQb2ludDo6RDY1PjsKKyAgICB1c2luZyBSZWZlcmVuY2VYWVogPSBYWVpBPHN0ZDo6
Y29uZGl0aW9uYWxfdDxzdGQ6OmlzX3NhbWVfdjxULCB1aW50OF90PiwgZmxvYXQsIFQ+LCBXaGl0
ZVBvaW50OjpENjU+OwogfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBKFQsIFQsIFQsIFQp
IC0+IFNSR0JBPFQ+OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclV0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LCAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTAsMTAgKzUwLDYgQEAgdWludDhfdCBjb252ZXJ0UHJlc2NhbGVkU1JHQkFGbG9hdFRvU1JH
QgogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0Qnl0ZUFscGhhVG8odWludDhfdCk7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnRGbG9hdEFscGhhVG8oZmxvYXQpOwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBUIGNvbnZlcnRUbyhjb25zdCBVJik7Ci10ZW1w
bGF0ZTw+IFNSR0JBPGZsb2F0PiBjb252ZXJ0VG8oY29uc3QgU1JHQkE8dWludDhfdD4mKTsKLXRl
bXBsYXRlPD4gU1JHQkE8dWludDhfdD4gY29udmVydFRvKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwot
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+IENvbG9yVHlw
ZSBjb2xvckJ5TW9kaWZpbmdFYWNoTm9uQWxwaGFDb21wb25lbnQoY29uc3QgQ29sb3JUeXBlJiwg
RnVuY3RvciYmKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29s
b3JUeXBlIGNvbG9yV2l0aE92ZXJyaWRlbkFscGhhKGNvbnN0IENvbG9yVHlwZSYsIHVpbnQ4X3Qg
b3ZlcnJpZGVBbHBoYSk7CkBAIC02MiwxMyArNTgsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29s
b3JUeXBlPiBDb2xvclR5cGUgYwogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4
cHIgQ29sb3JUeXBlIGludmVydGVkQ29sb3JXaXRoT3ZlcnJpZGVuQWxwaGEoY29uc3QgQ29sb3JU
eXBlJiwgdWludDhfdCBvdmVycmlkZUFscGhhKTsKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlw
ZT4gQ29sb3JUeXBlIGludmVydGVkQ29sb3JXaXRoT3ZlcnJpZGVuQWxwaGEoY29uc3QgQ29sb3JU
eXBlJiwgZmxvYXQgb3ZlcnJpZGVBbHBoYSk7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlw
ZSwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBDb2xv
clR5cGU6Ok1vZGVsLCBSR0JNb2RlbDx0eXBlbmFtZSBDb2xvclR5cGU6OkNvbXBvbmVudFR5cGU+
Pj4qID0gbnVsbHB0cj4gY29uc3RleHByIGJvb2wgaXNCbGFjayhjb25zdCBDb2xvclR5cGUmKTsK
K3RlbXBsYXRlPFdoaXRlUG9pbnQgVz4gY29uc3RleHByIGJvb2wgaXNCbGFjayhjb25zdCBYWVpB
PGZsb2F0LCBXPiYpOwogY29uc3RleHByIGJvb2wgaXNCbGFjayhjb25zdCBMYWI8ZmxvYXQ+Jik7
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19zYW1lX3Y8dHlwZW5hbWUgQ29sb3JUeXBlOjpNb2RlbCwgUkdCTW9kZWw8dHlwZW5h
bWUgQ29sb3JUeXBlOjpDb21wb25lbnRUeXBlPj4+KiA9IG51bGxwdHI+Ci1jb25zdGV4cHIgYm9v
bCBpc0JsYWNrKGNvbnN0IENvbG9yVHlwZSYpOwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5
cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lX3Y8dHlwZW5hbWUgQ29s
b3JUeXBlOjpNb2RlbCwgUkdCTW9kZWw8dHlwZW5hbWUgQ29sb3JUeXBlOjpDb21wb25lbnRUeXBl
Pj4+KiA9IG51bGxwdHI+IGNvbnN0ZXhwciBib29sIGlzV2hpdGUoY29uc3QgQ29sb3JUeXBlJik7
Cit0ZW1wbGF0ZTxXaGl0ZVBvaW50IFc+IGNvbnN0ZXhwciBib29sIGlzV2hpdGUoY29uc3QgWFla
QTxmbG9hdCwgVz4mKTsKIGNvbnN0ZXhwciBib29sIGlzV2hpdGUoY29uc3QgTGFiPGZsb2F0PiYp
OwotdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIENvbG9yVHlwZTo6TW9kZWwsIFJHQk1vZGVsPHR5cGVu
YW1lIENvbG9yVHlwZTo6Q29tcG9uZW50VHlwZT4+PiogPSBudWxscHRyPgotY29uc3RleHByIGJv
b2wgaXNXaGl0ZShjb25zdCBDb2xvclR5cGUmKTsKIAogY29uc3RleHByIHVpbnQxNl90IGZhc3RN
dWx0aXBseUJ5MjU1KHVpbnQxNl90KTsKIGNvbnN0ZXhwciB1aW50MTZfdCBmYXN0RGl2aWRlQnky
NTUodWludDE2X3QpOwpAQCAtOTksMjYgKzk1LDYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgZmxvYXQg
Y29udmVydEZsb2F0QWxwaAogICAgIHJldHVybiBjbGFtcGVkQWxwaGEodmFsdWUpOwogfQogCi10
ZW1wbGF0ZTw+IGlubGluZSBTUkdCQTxmbG9hdD4gY29udmVydFRvKGNvbnN0IFNSR0JBPHVpbnQ4
X3Q+JiBjb2xvcikKLXsKLSAgICBhdXRvIGNvbnZlcnRUb1NSR0JBRmxvYXQgPSBbXSh1aW50OF90
IHZhbHVlKSAtPiBmbG9hdCB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSAvIDI1NS4wZjsKLSAgICB9
OwotCi0gICAgYXV0byBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3IpOwotICAg
IHJldHVybiB7IGNvbnZlcnRUb1NSR0JBRmxvYXQoY29tcG9uZW50c1swXSksIGNvbnZlcnRUb1NS
R0JBRmxvYXQoY29tcG9uZW50c1sxXSksIGNvbnZlcnRUb1NSR0JBRmxvYXQoY29tcG9uZW50c1sy
XSksIGNvbnZlcnRUb1NSR0JBRmxvYXQoY29tcG9uZW50c1szXSkgfTsKLX0KLQotdGVtcGxhdGU8
PiBpbmxpbmUgU1JHQkE8dWludDhfdD4gY29udmVydFRvKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29s
b3IpCi17Ci0gICAgYXV0byBjb252ZXJ0VG9TUkdCQUJ5dGUgPSBbXShmbG9hdCB2YWx1ZSkgLT4g
dWludDhfdCB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmNsYW1wKHN0ZDo6bHJvdW5kKHZhbHVlICog
MjU1LjBmKSwgMGwsIDI1NWwpOwotICAgIH07Ci0KLSAgICBhdXRvIGNvbXBvbmVudHMgPSBhc0Nv
bG9yQ29tcG9uZW50cyhjb2xvcik7Ci0gICAgcmV0dXJuIHsgY29udmVydFRvU1JHQkFCeXRlKGNv
bXBvbmVudHNbMF0pLCBjb252ZXJ0VG9TUkdCQUJ5dGUoY29tcG9uZW50c1sxXSksIGNvbnZlcnRU
b1NSR0JBQnl0ZShjb21wb25lbnRzWzJdKSwgY29udmVydFRvU1JHQkFCeXRlKGNvbXBvbmVudHNb
M10pIH07Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgRnVuY3Rv
cj4gQ29sb3JUeXBlIGNvbG9yQnlNb2RpZmluZ0VhY2hOb25BbHBoYUNvbXBvbmVudChjb25zdCBD
b2xvclR5cGUmIGNvbG9yLCBGdW5jdG9yJiYgZnVuY3RvcikKIHsKICAgICBhdXRvIGNvbXBvbmVu
dHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGlj
IE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcAogICAgICAgICBjb21wb25lbnRBcnJh
eVtpXSA9IGNvbXBvbmVudDsKICAgICB9CiAKLSAgICByZXR1cm4gY29udmVydFRvPFNSR0JBPHVp
bnQ4X3Q+PihTUkdCQSB7IGNvbXBvbmVudEFycmF5WzFdLCBjb21wb25lbnRBcnJheVsyXSwgY29t
cG9uZW50QXJyYXlbM10sIGNvbXBvbmVudEFycmF5WzBdIH0pOworICAgIHJldHVybiBjb252ZXJ0
Q29sb3I8U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgY29tcG9uZW50QXJyYXlbMV0sIGNvbXBvbmVu
dEFycmF5WzJdLCBjb21wb25lbnRBcnJheVszXSwgY29tcG9uZW50QXJyYXlbMF0gfSk7CiB9CiAK
IFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNz
Q3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmlidXRlZFN0cmluZykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgRmlsdGVyT3BlcmF0aW9uczo6
dHJhbnNmb3JtQ29sb3IoQ28KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBjb2xvciA9IGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4oc1JHQkFDb2xvcik7CisgICAgY29s
b3IgPSBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KHNSR0JBQ29sb3IpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpp
bnZlcnNlVHJhbnNmb3JtQwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGNvbG9yID0gY29udmVydFRvPFNSR0JBPHVpbnQ4X3Q+PihzUkdCQUNvbG9yKTsKKyAgICBjb2xv
ciA9IGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oc1JHQkFDb2xvcik7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9D
b2xvckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0NvbG9yR3RrLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0NvbG9yR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb2xvcjo6Q29sb3IoY29uc3QgR2Rr
UkdCQSYgY29sb3IpCi0gICAgOiBDb2xvcihjb252ZXJ0VG88U1JHQkE8dWludDhfdD4+KFNSR0JB
IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLnJlZCksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xv
ci5ncmVlbiksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci5ibHVlKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGNvbG9yLmFscGhhKSB9KSkKKyAgICA6IENvbG9yKGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50
OF90Pj4oU1JHQkEgeyBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3IucmVkKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGNvbG9yLmdyZWVuKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLmJsdWUpLCBzdGF0
aWNfY2FzdDxmbG9hdD4oY29sb3IuYWxwaGEpIH0pKQogewogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCShyZXZpc2lvbiAy
NzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JB
PHVpbnQ4X3Q+PiBtYWtlU2ltcAogICAgIFtyZ2JDb2xvciBnZXRSZWQ6JnJlZENvbXBvbmVudCBn
cmVlbjomZ3JlZW5Db21wb25lbnQgYmx1ZTomYmx1ZUNvbXBvbmVudCBhbHBoYTomYWxwaGFdOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAotICAgIHJldHVybiBjb252ZXJ0VG88U1JH
QkE8dWludDhfdD4+KFNSR0JBIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlZENvbXBvbmVudCksIHN0
YXRpY19jYXN0PGZsb2F0PihncmVlbkNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihibHVl
Q29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFscGhhKSB9KTsKKyAgICByZXR1cm4gY29u
dmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IHN0YXRpY19jYXN0PGZsb2F0PihyZWRD
b21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oZ3JlZW5Db21wb25lbnQpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oYmx1ZUNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBoYSkgfSk7CiB9
CiAKIENvbG9yIGNvbG9yRnJvbU5TQ29sb3IoTlNDb2xvciAqY29sb3IpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQu
Y3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vQ29sb3JEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb2xvcjo6
Q29sb3IoRDJEMV9DT0xPUl9GIGNvbG9yKQotICAgIDogQ29sb3IoY29udmVydFRvPFNSR0JBPHVp
bnQ4X3Q+PihTUkdCQSB7IGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEgfSkpCisg
ICAgOiBDb2xvcihjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgY29sb3Iuciwg
Y29sb3IuZywgY29sb3IuYiwgY29sb3IuYSB9KSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEOjpzZXRB
Y3RpdmVMCiAKIENPTVB0cjxJRDJEMVNvbGlkQ29sb3JCcnVzaD4gUGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQ6OmJydXNoV2l0aENvbG9yKGNvbnN0IEQyRDFfQ09MT1JfRiYgY29sb3IpCiB7Ci0gICAg
YXV0byBjb2xvcktleSA9IGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBjb2xvci5y
LCBjb2xvci5nLCBjb2xvci5iLCBjb2xvci5hIH0pOworICAgIGF1dG8gY29sb3JLZXkgPSBjb2xv
ckNvbnZlcnQ8U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgY29sb3IuciwgY29sb3IuZywgY29sb3Iu
YiwgY29sb3IuYSB9KTsKIAogICAgIGlmICghY29sb3JLZXkpIHsKICAgICAgICAgaWYgKCFtX3pl
cm9CcnVzaCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQ29sb3JJT1MubW0JKHJl
dmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBDb2xvciBjb2xvckZyb21VSUNvbG9y
KFVJQ29sb3IgKmNvbG9yKQogCiAgICAgW2NvbG9yIGdldFJlZDomcmVkQ29tcG9uZW50IGdyZWVu
OiZncmVlbkNvbXBvbmVudCBibHVlOiZibHVlQ29tcG9uZW50IGFscGhhOiZhbHBoYV07CiAKLSAg
ICByZXR1cm4gY29udmVydFRvPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IHN0YXRpY19jYXN0PGZs
b2F0PihyZWRDb21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oZ3JlZW5Db21wb25lbnQpLCBz
dGF0aWNfY2FzdDxmbG9hdD4oYmx1ZUNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBo
YSkgfSk7CisgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBz
dGF0aWNfY2FzdDxmbG9hdD4ocmVkQ29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGdyZWVu
Q29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJsdWVDb21wb25lbnQpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oYWxwaGEpIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wMi0wNiAgU2FtIFdlaW5pZyAgPHdlaW5p
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG1vcmUgc3BlY2lhbCBjYXNlcyBmcm9tIGNv
bG9yIGNvbnZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMTUxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwOgorICAgICAgICAod2Vi
a2l0Q29sb3JUb1dlYkNvcmVDb2xvcik6CisgICAgICAgIFJlcGxhY2UgY29udmVydFRvPD4gY29t
cG9uZW50IHR5cGUgY29udmVyc2lvbiB0byBnZW5lcmFsIGNvbnZlcnRDb2xvcjw+LgorCiAyMDIx
LTAyLTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyMjcyMzM3KTogY3Jhc2ggdW5kZXIgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c2V0
SW5hY3RpdmUoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRD
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRDb2xvci5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3
IEBAIEdfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0Q29sb3IsIHdlYmtpdF8KIAogY29uc3QgV2Vi
Q29yZTo6Q29sb3Igd2Via2l0Q29sb3JUb1dlYkNvcmVDb2xvcihXZWJLaXRDb2xvciogY29sb3Ip
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvbnZlcnRUbzxXZWJDb3JlOjpTUkdCQTx1aW50OF90
Pj4oV2ViQ29yZTo6U1JHQkEgeyBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPnJlZCksIHN0YXRp
Y19jYXN0PGZsb2F0Pihjb2xvci0+Z3JlZW4pLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPmJs
dWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPmFscGhhKSB9KTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6Y29udmVydENvbG9yPFdlYkNvcmU6OlNSR0JBPHVpbnQ4X3Q+PihXZWJDb3JlOjpTUkdC
QSB7IHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+cmVkKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNv
bG9yLT5ncmVlbiksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+Ymx1ZSksIHN0YXRpY19jYXN0
PGZsb2F0Pihjb2xvci0+YWxwaGEpIH0pOwogfQogCiB2b2lkIHdlYmtpdENvbG9yRmlsbEZyb21X
ZWJDb3JlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIHdlYkNvcmVDb2xvciwgV2ViS2l0Q29s
b3IqIGNvbG9yKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjcyNDYyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDItMDYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgorCisgICAgICAgIFJlbW92ZSBtb3JlIHNwZWNpYWwgY2FzZXMgZnJvbSBjb2xvciBj
b252ZXJzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjE1MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIFJlcGxhY2UgY29udmVydFRv
PD4gY29tcG9uZW50IHR5cGUgY29udmVyc2lvbiB0byBnZW5lcmFsIGNvbnZlcnRDb2xvcjw+Lgor
CiAyMDIxLTAyLTA1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtNYWNdIERpc2FibGUgTWVkaWFTZXNzaW9uVGVzdCBBUEkgdGVzdHMKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENv
bG9yVGVzdHMuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5
LDcgKzEwOSw3IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgRXF1YWxpdHkpCiAgICAgfQogCiAgICAg
YXV0byBjb21wb25lbnRCeXRlcyA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAxMjgsIDYzLCAxMjcg
fTsKLSAgICBDb2xvciByZ2IxIHsgY29udmVydFRvPFNSR0JBPGZsb2F0Pj4oY29tcG9uZW50Qnl0
ZXMpIH07CisgICAgQ29sb3IgcmdiMSB7IGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbXBv
bmVudEJ5dGVzKSB9OwogICAgIENvbG9yIHJnYjIgeyBjb21wb25lbnRCeXRlcyB9OwogICAgIEVY
UEVDVF9ORShyZ2IxLCByZ2IyKTsKICAgICBFWFBFQ1RfTkUocmdiMiwgcmdiMSk7CkBAIC0xMzgs
NyArMTM4LDcgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBIYXNoKQogICAgIH0KIAogICAgIGF1dG8g
Y29tcG9uZW50Qnl0ZXMgPSBTUkdCQTx1aW50OF90PiB7IDI1NSwgMTI4LCA2MywgMTI3IH07Ci0g
ICAgQ29sb3IgcmdiMSB7IGNvbnZlcnRUbzxTUkdCQTxmbG9hdD4+KGNvbXBvbmVudEJ5dGVzKSB9
OworICAgIENvbG9yIHJnYjEgeyBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb21wb25lbnRC
eXRlcykgfTsKICAgICBDb2xvciByZ2IyIHsgY29tcG9uZW50Qnl0ZXMgfTsKICAgICBFWFBFQ1Rf
TkUocmdiMS5oYXNoKCksIHJnYjIuaGFzaCgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419510</attachid>
            <date>2021-02-06 11:09:54 -0800</date>
            <delta_ts>2021-02-07 08:57:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221519-20210206094646.patch</filename>
            <type>text/plain</type>
            <size>34939</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wMi0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG1vcmUgc3BlY2lhbCBj
YXNlcyBmcm9tIGNvbG9yIGNvbnZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTUxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gUmVtb3ZlIHNwZWNpYWxpemVkIGNvbnZlcnRUbzw+IGZ1bmN0
aW9uIHdoaWNoIG9ubHkgZGlkIGNvbXBvbmVudAorICAgICAgICAgIHR5cGUgY29udmVyc2lvbiB3
aXRoIHRoZSBmdWxseSBnZW5lcmFsIGNvbnZlcnRDb2xvcjw+IGZ1bmN0aW9uLgorCisgICAgICAg
IC0gTWFrZSBDb2xvckNvbXBvbmVudHMgYSBiaXQgbW9yZSByZWFkeSBmb3Igbm9uLTQgY29tcG9u
ZW50IGNvbG9ycyBieQorICAgICAgICAgIHJld29ya2luZyBtZW1iZXIgZnVuY3Rpb25hbGl0eSBi
YXNlZCBvbiBhIG5ldyBtYXBDb2xvckNvbXBvbmVudHMgZnVuY3Rpb24KKyAgICAgICAgICB3aGlj
aCBtYXBzIGEgZnVuY3Rpb24gRiBvdmVyIGFsbCB0aGUgY29tcG9uZW50cyBvZiBhIHNldCBvZiBD
b2xvckNvbXBvbmVudHMuCisgICAgICAgICAgZS5nLgorCisgICAgICAgICAgICAgIGF1dG8gY29s
b3JDb21wb25lbnRzQyA9IG1hcENvbG9yQ29tcG9uZW50cyhbXSAoYXV0byBhLCBhdXRvIGIpIHsg
cmV0dXJuIGEgKyBiOyB9LCBjb2xvckNvbXBvbmVudHNBLCBjb2xvckNvbXBvbmVudHNCKTsKKwor
ICAgICAgICAgIHdpbGwgY3JlYXRlIGEgbmV3IENvbG9yQ29tcG9uZW50cyB3aGVyZSBlYWNoIGNv
bXBvbmVudCBpcyB0aGUgc3VtIG9mIHRoZSAKKyAgICAgICAgICBjb3JyZXNwb25kaW5nIGNvbXBv
bmVudHMgaW4gY29sb3JDb21wb25lbnRzQSBhbmQgY29sb3JDb21wb25lbnRzQi4gSXQncworICAg
ICAgICAgIHZhcmlhZGljIHNvIGl0IGNhbiB0YWtlIGFueSBudW1iZXIgb2YgQ29sb3JDb21wb25l
bnRzLiBUaGlzIGFsbG93cyByZXdyaXRpbmcKKyAgICAgICAgICBhbGwgb2YgdGhlIG1lbWJlcnMg
dG8gYmUgc2l6ZSBpbnZhcmlhbnQgYW5kIGEgbGl0dGxlIGxlc3MgdmVyYm9zZS4KKworICAgICAg
ICAtIFJlcGxhY2Ugc3BlY2lhbCBjYXNlIGZvciB0aGUgaWRlbnRpdHkgY29udmVyc2lvbiBpbiB0
aGUgZmFsbGJhY2sgY29sb3IgY29udmVyc2lvbgorICAgICAgICAgIGNvZGUgcGF0aCwgYW5kIG1v
dmUgaXQgaW50byBpdCdzIG93biBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIG9mIENvbG9yQ29udmVy
c2lvbi4KKworICAgICAgICAtIFJlcGxhY2Ugc3BlY2lhbCBjYXNlIGZvciBjaHJvbWF0aWMgYWRh
cHRhdGlvbiBjb252ZXJzaW9ucyBhbmQgaGF2ZSB0aGVtIGp1c3QKKyAgICAgICAgICB1c2Ugc3Bl
Y2lhbGl6YXRpb25zIG9mIENvbG9yQ29udmVyc2lvbiBsaWtlIGFsbCBvdGhlciBjb252ZXJzaW9u
cy4KKworICAgICAgICAtIFJlcGxhY2Ugc3BlY2lhbCBjYXNlIGZvciBzUkdCIGNvbXBvbmVudCB0
eXBlIGNvbnZlcnNpb25zIGFuZCBoYXZlIHRoZW0ganVzdAorICAgICAgICAgIHVzZSBzcGVjaWFs
aXphdGlvbnMgb2YgQ29sb3JDb252ZXJzaW9uIGxpa2UgYWxsIG90aGVyIGNvbnZlcnNpb25zLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmg6CisgICAgICAg
IChXZWJDb3JlOjptYXBDb2xvckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JD
b21wb25lbnRzPFQ+OjptYXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21wb25l
bnRzPFQ+OjpvcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVu
dHM8VD46OmFicyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpwZXJDb21wb25lbnRNYXgpOgor
ICAgICAgICAoV2ViQ29yZTo6cGVyQ29tcG9uZW50TWluKToKKyAgICAgICAgQWRkIG1hcCBhbmQg
bWFwQ29sb3JDb21wb25lbnRzIGFuZCByZS1pbXBsZW1lbnQgZXhpc3RpbmcKKyAgICAgICAgZnVu
Y3Rpb25hbGl0eSBpbiB0ZXJtcyBvZiB0aGVtLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoaXRlUG9pbnQ6OkQ1
MD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldoaXRlUG9pbnQ6OkQ2NT4+Ojpjb252
ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JBPHVpbnQ4X3Q+Pjo6Y29udmVydCk6CisgICAg
ICAgIChXZWJDb3JlOjpTUkdCQTxmbG9hdD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNSR0JBPHVpbnQ4X3Q+OjpSZWZlcmVuY2VYWVo+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2ludCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RnJvbUQ2NVdoaXRlUG9pbnRUb0Q1MFdoaXRlUG9pbnQp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb252ZXJzaW9uOjpjb252ZXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OnBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
VXNlIENvbG9yQ29udmVyc2lvbiBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBpZGVudGl0eSBjb252
ZXJzaW9uLCBjaG9tYXRpYyAKKyAgICAgICAgYWRhcGF0YXRpb24sIGFuZCBjb21wb25lbnQgdHlw
ZSBjb252ZXJzaW9ucywgcmF0aGVyIHRoYW4gaGFyZCBjb2RpbmcgdGhlbQorICAgICAgICBpbiB0
aGUgZmFsbGJhY2sgY29udmVyc2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVHlwZXMuaDoKKyAgICAgICAgU3BlY2lhbCBjYXNlIFNSR0JBPHVpbnQ4X3Q+IHRvIGhhdmUg
YSBSZWZlcmVuY2VYWVogb2YgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiwgYXMgCisgICAg
ICAgIFhZWkE8dWludDhfdCwgV2hpdGVQb2ludDo6RDY1PiBpcyBub3QgYSB2YWxpZCBjb2xvciAo
WFlaQSBvbmx5IHN1cHBvcnRzIGZsb2F0aW5nIHBvaW50CisgICAgICAgIGNvbXBvbmVudHMpLiBX
ZSBhcmUga2VlcGluZyBpdCBiYXNlZCBvbiBUIGluIG90aGVyIGNhc2VzIHRvIHN1cHBvcnQgZnV0
dXJlIGVmZm9ydHMgdG8gdXNlCisgICAgICAgIG90aGVyIGZsb2F0aW5nIHBvaW50IHR5cGVzIHdp
dGggdGhlc2UgY29sb3IgdHlwZXMgc3VjaCBhcyBoYWxmLWZsb2F0LgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRUbyk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBjb252ZXJ0VG88Piwgd2hpY2ggaXMgbm93
IHN1cGVyc2VkZWQgYnkgdGhlIGdlbmVyYWwgY29udmVydENvbG9yPD4uCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6CisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5Q29sb3JTdHJpbmdWYWx1
ZV0pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRTaGFkb3cpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpDYW52YXNT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50IGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb2xvcjo6bGlnaHRlbmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpk
YXJrZW5lZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Y29sb3JTcGFjZUFuZENv
bXBvbmVudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VT
aW1wbGVDb2xvckZyb21BUkdCQ0ZBcnJheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9w
ZXJhdGlvbnM6OnRyYW5zZm9ybUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ck9wZXJhdGlvbnM6OmludmVyc2VUcmFuc2Zvcm1Db2xvciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0NvbG9yR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9y
OjpDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yRnJvbU5TQ29sb3IpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Db2xvckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yOjpDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRm
b3JtQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4
dERpcmVjdDJEOjpicnVzaFdpdGhDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0NvbG9y
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29sb3JGcm9tVUlDb2xvcik6CisgICAgICAgIEFk
b3B0IGNvbnZlcnRDb2xvcjw+IHRvIHJlcGxhY2UgY29udmVydFRvPD4uCisKIDIwMjEtMDItMDYg
IFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdW1F1
aXJrXSBLZWVwIHRoZSByb290IGlubGluZSBib3ggYmFzZWxpbmUgYW5jaG9yZWQgYXQgMApJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDMsNyArNDQzLDcgQEAgc3RhdGljIGdj
aGFyKiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleAogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCiAgICAgaWYgKGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpDb2xvcldlbGwpIHsKLSAgICAgICAgYXV0byBjb2xvciA9IGNvbnZlcnRUbzxTUkdCQTxm
bG9hdD4+KGNvcmVPYmplY3QtPmNvbG9yVmFsdWUoKSk7CisgICAgICAgIGF1dG8gY29sb3IgPSBj
b252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb3JlT2JqZWN0LT5jb2xvclZhbHVlKCkpOwogICAg
ICAgICByZXR1cm4gZ19zdHJkdXBfcHJpbnRmKCJyZ2IgJTcuNWYgJTcuNWYgJTcuNWYgMSIsIGNv
bG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNvbG9yLmJsdWUpOwogICAgIH0KICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJldmlzaW9uIDI3MjQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCAtIChO
U1N0cmluZyAqKWFjY2Vzc2liaWxpdHlDb2xvclN0cmluZ1ZhCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBpZiAoc2VsZi5heEJhY2tpbmdPYmplY3QtPmlzQ29sb3JXZWxsKCkpIHsKLSAgICAg
ICAgYXV0byBjb2xvciA9IGNvbnZlcnRUbzxTUkdCQTxmbG9hdD4+KHNlbGYuYXhCYWNraW5nT2Jq
ZWN0LT5jb2xvclZhbHVlKCkpOworICAgICAgICBhdXRvIGNvbG9yID0gY29udmVydENvbG9yPFNS
R0JBPGZsb2F0Pj4oc2VsZi5heEJhY2tpbmdPYmplY3QtPmNvbG9yVmFsdWUoKSk7CiAgICAgICAg
IHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInJnYiAlNy41ZiAlNy41ZiAlNy41
ZiAxIiwgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZV07CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMjcyNDYy
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzODUsNyArMjM4NSw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuIEAo
YmFja2luZ09iamVjdC0+aXNTZWxlY3RlZCgpKTsKIAogICAgICAgICBpZiAoYmFja2luZ09iamVj
dC0+aXNDb2xvcldlbGwoKSkgewotICAgICAgICAgICAgYXV0byBjb2xvciA9IGNvbnZlcnRUbzxT
UkdCQTxmbG9hdD4+KGJhY2tpbmdPYmplY3QtPmNvbG9yVmFsdWUoKSk7CisgICAgICAgICAgICBh
dXRvIGNvbG9yID0gY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oYmFja2luZ09iamVjdC0+Y29s
b3JWYWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAInJnYiAlNy41ZiAlNy41ZiAlNy41ZiAxIiwgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29s
b3IuYmx1ZV07CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzI0LDcgKzEzMjQsNyBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFNoCiAgICAgaWYgKHN0ZDo6aXNu
YW4oZ3JheUxldmVsKSB8fCBzdGQ6OmlzbmFuKGFscGhhKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1ciwgY29udmVydFRvPFNS
R0JBPHVpbnQ4X3Q+PihtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZzxTUkdCQTxmbG9hdD4+KGdy
YXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIGFscGhhKSkpOworICAgIHNldFNoYWRvdyhG
bG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90
Pj4obWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihncmF5TGV2ZWwsIGdy
YXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQg
Ymx1ciwgZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKQEAgLTEzMzIsNyArMTMz
Miw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0U2gKICAgICBpZiAo
c3RkOjppc25hbihyKSB8fCBzdGQ6OmlzbmFuKGcpIHx8IHN0ZDo6aXNuYW4oYikgIHx8IHN0ZDo6
aXNuYW4oYSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lk
dGgsIGhlaWdodCksIGJsdXIsIGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4obWFrZUZyb21Db21w
b25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBhKSkpOworICAgIHNldFNoYWRv
dyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50
OF90Pj4obWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBh
KSkpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNsZWFyU2hhZG93
KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAJKHJl
dmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBDYW52YXNTdHlsZTo6Q2FudmFz
U3R5bGUoQ29sb3IgY29sb3IpCiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBT
UkdCQTxmbG9hdD4mIGNvbG9yQ29tcG9uZW50cykKLSAgICA6IG1fc3R5bGUoY29udmVydFRvPFNS
R0JBPHVpbnQ4X3Q+Pihjb2xvckNvbXBvbmVudHMpKQorICAgIDogbV9zdHlsZShjb252ZXJ0Q29s
b3I8U1JHQkE8dWludDhfdD4+KGNvbG9yQ29tcG9uZW50cykpCiB7CiB9CiAKQEAgLTE0OCw3ICsx
NDgsNyBAQCBib29sIENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDb2xvcihjb25zCiAKIGJvb2wg
Q2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudChjb25zdCBTUkdCQTxmbG9hdD4mIGNvbXBvbmVudHMp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29sb3I+KG1fc3R5
bGUpICYmIFdURjo6Z2V0PENvbG9yPihtX3N0eWxlKSA9PSBjb252ZXJ0VG88U1JHQkE8dWludDhf
dD4+KGNvbXBvbmVudHMpOworICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENvbG9y
PihtX3N0eWxlKSAmJiBXVEY6OmdldDxDb2xvcj4obV9zdHlsZSkgPT0gY29udmVydENvbG9yPFNS
R0JBPHVpbnQ4X3Q+Pihjb21wb25lbnRzKTsKIH0KIAogdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlT
dHJva2VDb2xvcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkxLDcgKzkxLDcgQEAgQ29sb3IgQ29sb3I6OmxpZ2h0ZW5lZCgpIGNvbnN0CiAKICAg
ICBmbG9hdCBtdWx0aXBsaWVyID0gc3RkOjptaW4oMS4wZiwgdiArIDAuMzNmKSAvIHY7CiAKLSAg
ICByZXR1cm4gY29udmVydFRvPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IG11bHRpcGxpZXIgKiBy
LCBtdWx0aXBsaWVyICogZywgbXVsdGlwbGllciAqIGIsIGEgfSk7CisgICAgcmV0dXJuIGNvbnZl
cnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBtdWx0aXBsaWVyICogciwgbXVsdGlwbGll
ciAqIGcsIG11bHRpcGxpZXIgKiBiLCBhIH0pOwogfQogCiBDb2xvciBDb2xvcjo6ZGFya2VuZWQo
KSBjb25zdApAQCAtMTA1LDcgKzEwNSw3IEBAIENvbG9yIENvbG9yOjpkYXJrZW5lZCgpIGNvbnN0
CiAgICAgZmxvYXQgdiA9IHN0ZDo6bWF4KHsgciwgZywgYiB9KTsKICAgICBmbG9hdCBtdWx0aXBs
aWVyID0gc3RkOjptYXgoMC4wZiwgKHYgLSAwLjMzZikgLyB2KTsKIAotICAgIHJldHVybiBjb252
ZXJ0VG88U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgbXVsdGlwbGllciAqIHIsIG11bHRpcGxpZXIg
KiBnLCBtdWx0aXBsaWVyICogYiwgYSB9KTsKKyAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JB
PHVpbnQ4X3Q+PihTUkdCQSB7IG11bHRpcGxpZXIgKiByLCBtdWx0aXBsaWVyICogZywgbXVsdGlw
bGllciAqIGIsIGEgfSk7CiB9CiAKIGZsb2F0IENvbG9yOjpsaWdodG5lc3MoKSBjb25zdApAQCAt
MTY1LDcgKzE2NSw3IEBAIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmwK
IHsKICAgICBpZiAoaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1cm4geyBhc0V4dGVuZGVkKCku
Y29sb3JTcGFjZSgpLCBhc0V4dGVuZGVkKCkuY29tcG9uZW50cygpIH07Ci0gICAgcmV0dXJuIHsg
Q29sb3JTcGFjZTo6U1JHQiwgYXNDb2xvckNvbXBvbmVudHMoY29udmVydFRvPFNSR0JBPGZsb2F0
Pj4oYXNJbmxpbmUoKSkpIH07CisgICAgcmV0dXJuIHsgQ29sb3JTcGFjZTo6U1JHQiwgYXNDb2xv
ckNvbXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oYXNJbmxpbmUoKSkpIH07CiB9
CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbG9yJiBj
b2xvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9u
ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29tcG9uZW50cy5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiAr
NDEsOSBAQCBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzIHsKICAgICB7CiAgICAgfQogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRj4KKyAgICBjb25zdGV4cHIgYXV0byBtYXAoRiYmIGZ1bmN0aW9uKSBj
b25zdCAtPiBDb2xvckNvbXBvbmVudHM8ZGVjbHR5cGUoZnVuY3Rpb24oc3RkOjpkZWNsdmFsPFQ+
KCkpKT47CisKICAgICBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzJiBvcGVyYXRvcis9KGNvbnN0
IENvbG9yQ29tcG9uZW50cyYpOwogCiAgICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50cyBvcGVy
YXRvcisoVCkgY29uc3Q7CkBAIC01OCw1OCArNjEsNTMgQEAgc3RydWN0IENvbG9yQ29tcG9uZW50
cyB7CiAgICAgc3RkOjphcnJheTxULCBTaXplPiBjb21wb25lbnRzOwogfTsKIAordGVtcGxhdGU8
dHlwZW5hbWUgRiwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gVHM+Citjb25zdGV4cHIgYXV0byBt
YXBDb2xvckNvbXBvbmVudHMoRiYmIGZ1bmN0aW9uLCBUIGNvbXBvbmVudCwgVHMuLi4gY29tcG9u
ZW50cykgLT4gQ29sb3JDb21wb25lbnRzPGRlY2x0eXBlKGZ1bmN0aW9uKGNvbXBvbmVudFswXSwg
Y29tcG9uZW50c1swXS4uLikpPgoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpjb25qdW5jdGlv
bl92PHN0ZDo6Ym9vbF9jb25zdGFudDxUczo6U2l6ZSA9PSBUOjpTaXplPi4uLj4sICJBbGwgQ29s
b3JDb21wb25lbnRzIHBhc3NlZCB0byBtYXBDb2xvckNvbXBvbmVudHMgbXVzdCBoYXZlIHRoZSBz
YW1lIHNpemUiKTsKKworICAgIENvbG9yQ29tcG9uZW50czxkZWNsdHlwZShmdW5jdGlvbihjb21w
b25lbnRbMF0sIGNvbXBvbmVudHNbMF0uLi4pKT4gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgVDo6U2l6ZTsgKytpKQorICAgICAgICByZXN1bHRbaV0gPSBmdW5jdGlvbihjb21w
b25lbnRbaV0sIGNvbXBvbmVudHNbaV0uLi4pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBGPgorY29uc3RleHByIGF1dG8g
Q29sb3JDb21wb25lbnRzPFQ+OjptYXAoRiYmIGZ1bmN0aW9uKSBjb25zdCAtPiBDb2xvckNvbXBv
bmVudHM8ZGVjbHR5cGUoZnVuY3Rpb24oc3RkOjpkZWNsdmFsPFQ+KCkpKT4KK3sKKyAgICByZXR1
cm4gbWFwQ29sb3JDb21wb25lbnRzKHN0ZDo6Zm9yd2FyZDxGPihmdW5jdGlvbiksICp0aGlzKTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4m
IENvbG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IrPShjb25zdCBDb2xvckNvbXBvbmVudHMmIHJo
cykKIHsKLSAgICBjb21wb25lbnRzWzBdICs9IHJoc1swXTsKLSAgICBjb21wb25lbnRzWzFdICs9
IHJoc1sxXTsKLSAgICBjb21wb25lbnRzWzJdICs9IHJoc1syXTsKLSAgICBjb21wb25lbnRzWzNd
ICs9IHJoc1szXTsKKyAgICAqdGhpcyA9IG1hcENvbG9yQ29tcG9uZW50cyhbXShUIGMxLCBUIGMy
KSB7IHJldHVybiBjMSArIGMyOyB9LCAqdGhpcywgcmhzKTsKICAgICByZXR1cm4gKnRoaXM7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IENv
bG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IrKFQgcmhzKSBjb25zdAogewotICAgIHJldHVybiB7
Ci0gICAgICAgIGNvbXBvbmVudHNbMF0gKyByaHMsCi0gICAgICAgIGNvbXBvbmVudHNbMV0gKyBy
aHMsCi0gICAgICAgIGNvbXBvbmVudHNbMl0gKyByaHMsCi0gICAgICAgIGNvbXBvbmVudHNbM10g
KyByaHMKLSAgICB9OworICAgIHJldHVybiBtYXAoW3Joc10oVCBjKSB7IHJldHVybiBjICsgcmhz
OyB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVu
dHM8VD4gQ29sb3JDb21wb25lbnRzPFQ+OjpvcGVyYXRvci8oVCBkZW5vbWluYXRvcikgY29uc3QK
IHsKLSAgICByZXR1cm4gewotICAgICAgICBjb21wb25lbnRzWzBdIC8gZGVub21pbmF0b3IsCi0g
ICAgICAgIGNvbXBvbmVudHNbMV0gLyBkZW5vbWluYXRvciwKLSAgICAgICAgY29tcG9uZW50c1sy
XSAvIGRlbm9taW5hdG9yLAotICAgICAgICBjb21wb25lbnRzWzNdIC8gZGVub21pbmF0b3IKLSAg
ICB9OworICAgIHJldHVybiBtYXAoW2Rlbm9taW5hdG9yXShUIGMpIHsgcmV0dXJuIGMgLyBkZW5v
bWluYXRvcjsgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JD
b21wb25lbnRzPFQ+IENvbG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IqKFQgZmFjdG9yKSBjb25z
dAogewotICAgIHJldHVybiB7Ci0gICAgICAgIGNvbXBvbmVudHNbMF0gKiBmYWN0b3IsCi0gICAg
ICAgIGNvbXBvbmVudHNbMV0gKiBmYWN0b3IsCi0gICAgICAgIGNvbXBvbmVudHNbMl0gKiBmYWN0
b3IsCi0gICAgICAgIGNvbXBvbmVudHNbM10gKiBmYWN0b3IKLSAgICB9OworICAgIHJldHVybiBt
YXAoW2ZhY3Rvcl0oVCBjKSB7IHJldHVybiBjICogZmFjdG9yOyB9KTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gQ29sb3JDb21wb25lbnRz
PFQ+OjphYnMoKSBjb25zdAogewotICAgIHJldHVybiB7Ci0gICAgICAgIHN0ZDo6YWJzKGNvbXBv
bmVudHNbMF0pLAotICAgICAgICBzdGQ6OmFicyhjb21wb25lbnRzWzFdKSwKLSAgICAgICAgc3Rk
OjphYnMoY29tcG9uZW50c1syXSksCi0gICAgICAgIHN0ZDo6YWJzKGNvbXBvbmVudHNbM10pCi0g
ICAgfTsKKyAgICByZXR1cm4gbWFwKFtdKFQgYykgeyByZXR1cm4gc3RkOjphYnMoYyk7IH0pOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTIyLDIzICsxMjAsMTMgQEAgY29uc3RleHBy
IFQgQ29sb3JDb21wb25lbnRzPFQ+OjpnZXQoKSBjbwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNv
bnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWF4KGNvbnN0IENvbG9yQ29t
cG9uZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQogewotICAgIHJldHVy
biB7Ci0gICAgICAgIHN0ZDo6bWF4KGFbMF0sIGJbMF0pLAotICAgICAgICBzdGQ6Om1heChhWzFd
LCBiWzFdKSwKLSAgICAgICAgc3RkOjptYXgoYVsyXSwgYlsyXSksCi0gICAgICAgIHN0ZDo6bWF4
KGFbM10sIGJbM10pCi0gICAgfTsKKyAgICByZXR1cm4gbWFwQ29sb3JDb21wb25lbnRzKFtdKFQg
YzEsIFQgYzIpIHsgcmV0dXJuIHN0ZDo6bWF4KGMxLCBjMik7IH0sIGEsIGIpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBwZXJDb21wb25l
bnRNaW4oY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVudHM8
VD4mIGIpCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgc3RkOjptaW4oYVswXSwgYlswXSksCi0g
ICAgICAgIHN0ZDo6bWluKGFbMV0sIGJbMV0pLAotICAgICAgICBzdGQ6Om1pbihhWzJdLCBiWzJd
KSwKLSAgICAgICAgc3RkOjptaW4oYVszXSwgYlszXSkKLSAgICB9OworICAgIHJldHVybiBtYXBD
b2xvckNvbXBvbmVudHMoW10oVCBjMSwgVCBjMikgeyByZXR1cm4gc3RkOjptaW4oYzEsIGMyKTsg
fSwgYSwgYik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29u
dmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMywxMiArMTMzLDEyIEBAIHN0YXRpYyBj
b25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gRDY1VG8KIAogLy8gTUFSSzogQ2hyb21hdGljIEFk
YXB0YXRpb24gY29udmVyc2lvbnMuCiAKLVhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4gY29u
dmVydEZyb21ENTBXaGl0ZVBvaW50VG9ENjVXaGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQsIFdo
aXRlUG9pbnQ6OkQ1MD4mIGNvbG9yKQorWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiBDb2xv
ckNvbnZlcnNpb248WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiwgWFlaQTxmbG9hdCwgV2hp
dGVQb2ludDo6RDUwPj46OmNvbnZlcnQoY29uc3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUw
PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0
QWxwaGE8WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1Pj4oRDUwVG9ENjVNYXRyaXgudHJhbnNm
b3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLVhZ
WkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBX
aGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4mIGNvbG9yKQorWFla
QTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPiBDb2xvckNvbnZlcnNpb248WFlaQTxmbG9hdCwgV2hp
dGVQb2ludDo6RDUwPiwgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1Pj46OmNvbnZlcnQoY29u
c3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIG1h
a2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxmbG9hdCwgV2hpdGVQb2lu
dDo6RDUwPj4oRDY1VG9ENTBNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xv
ckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CkBAIC02NDYsNCArNjQ2LDMwIEBAIFNSR0JBPGZsb2F0
PiBDb2xvckNvbnZlcnNpb248U1JHQkE8ZmxvYXQKICAgICByZXR1cm4gY29udmVydENvbG9yPFNS
R0JBPGZsb2F0Pj4oY29udmVydENvbG9yPExpbmVhclNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKIH0K
IAorLy8gTUFSSzogU1JHQkE8dWludDhfdD4gY29tcG9uZW50IHR5cGUgY29udmVyc2lvbnMuCisK
K1NSR0JBPGZsb2F0PiBDb2xvckNvbnZlcnNpb248U1JHQkE8ZmxvYXQ+LCBTUkdCQTx1aW50OF90
Pj46OmNvbnZlcnQoY29uc3QgU1JHQkE8dWludDhfdD4mIGNvbG9yKQoreworICAgIHJldHVybiBt
YWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8ZmxvYXQ+Pihhc0NvbG9yQ29tcG9uZW50cyhjb2xvciku
bWFwKFtdKHVpbnQ4X3QgdmFsdWUpIC0+IGZsb2F0IHsKKyAgICAgICAgcmV0dXJuIHZhbHVlIC8g
MjU1LjBmOworICAgIH0pKTsKK30KKworU1JHQkE8dWludDhfdD4gQ29sb3JDb252ZXJzaW9uPFNS
R0JBPHVpbnQ4X3Q+LCBTUkdCQTxmbG9hdD4+Ojpjb252ZXJ0KGNvbnN0IFNSR0JBPGZsb2F0PiYg
Y29sb3IpCit7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50czxTUkdCQTx1aW50OF90Pj4o
YXNDb2xvckNvbXBvbmVudHMoY29sb3IpLm1hcChbXShmbG9hdCB2YWx1ZSkgLT4gdWludDhfdCB7
CisgICAgICAgIHJldHVybiBzdGQ6OmNsYW1wKHN0ZDo6bHJvdW5kKHZhbHVlICogMjU1LjBmKSwg
MGwsIDI1NWwpOworICAgIH0pKTsKK30KKworU1JHQkE8dWludDhfdD46OlJlZmVyZW5jZVhZWiBD
b2xvckNvbnZlcnNpb248U1JHQkE8dWludDhfdD46OlJlZmVyZW5jZVhZWiwgU1JHQkE8dWludDhf
dD4+Ojpjb252ZXJ0KGNvbnN0IFNSR0JBPHVpbnQ4X3Q+JiBjb2xvcikKK3sKKyAgICByZXR1cm4g
Y29udmVydENvbG9yPFNSR0JBPGZsb2F0Pjo6UmVmZXJlbmNlWFlaPihjb252ZXJ0Q29sb3I8U1JH
QkE8ZmxvYXQ+Pihjb2xvcikpOworfQorCitTUkdCQTx1aW50OF90PiBDb2xvckNvbnZlcnNpb248
U1JHQkE8dWludDhfdD4sIFNSR0JBPHVpbnQ4X3Q+OjpSZWZlcmVuY2VYWVo+Ojpjb252ZXJ0KGNv
bnN0IFNSR0JBPHVpbnQ4X3Q+OjpSZWZlcmVuY2VYWVomIGNvbG9yKQoreworICAgIHJldHVybiBj
b252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNv
bG9yKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lvbiAy
NzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMjk5LDI1ICsyOTksNDYgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQ29sb3JDb252ZXJzaW9uPEhXQkE8ZgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIV0JB
PGZsb2F0PiBjb252ZXJ0KGNvbnN0IFNSR0JBPGZsb2F0PiYpOwogfTsKIAorLy8gU3BlY2lhbCBj
YXNlcyBmb3IgU1JHQkE8dWludDhfdD4uIE9ubHkgc1JHQiBzdXBwb3J0cyBub24tZmxvYXRpbmcg
cG9pbnQgY29tcG9uZW50IHR5cGVzLgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb2xvckNvbnZlcnNp
b248U1JHQkE8dWludDhfdD46OlJlZmVyZW5jZVhZWiwgU1JHQkE8dWludDhfdD4+IHsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgU1JHQkE8dWludDhfdD46OlJlZmVyZW5jZVhZWiBjb252ZXJ0
KGNvbnN0IFNSR0JBPHVpbnQ4X3Q+Jik7Cit9OwogCi0vLyBDaHJvbWF0aWMgQWRhcHRhdGlvbiBj
b252ZXJzaW9ucy4KLVdFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4g
Y29udmVydEZyb21ENTBXaGl0ZVBvaW50VG9ENjVXaGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQs
IFdoaXRlUG9pbnQ6OkQ1MD4mKTsKLVdFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQsIFdoaXRlUG9p
bnQ6OkQ1MD4gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBXaGl0ZVBvaW50KGNvbnN0IFhZ
WkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4mKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgV2hp
dGVQb2ludCBpbnB1dFdoaXRlUG9pbnQ+IGNvbnN0ZXhwciB0eXBlbmFtZSBUOjpSZWZlcmVuY2VY
WVogcGVyZm9ybUNob21hdGljQWRhcGF0YXRpb24oY29uc3QgWFlaQTxmbG9hdCwgaW5wdXRXaGl0
ZVBvaW50PiYgY29sb3IpCi17Ci0gICAgY29uc3RleHByIFdoaXRlUG9pbnQgb3V0cHV0V2hpdGVQ
b2ludCA9IFQ6OlJlZmVyZW5jZVhZWjo6d2hpdGVQb2ludDsKK3RlbXBsYXRlPD4gc3RydWN0IENv
bG9yQ29udmVyc2lvbjxTUkdCQTx1aW50OF90PiwgU1JHQkE8dWludDhfdD46OlJlZmVyZW5jZVhZ
Wj4geworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTUkdCQTx1aW50OF90PiBjb252ZXJ0KGNv
bnN0IFNSR0JBPHVpbnQ4X3Q+OjpSZWZlcmVuY2VYWVomKTsKK307CiAKLSAgICBpZiBjb25zdGV4
cHIgKG91dHB1dFdoaXRlUG9pbnQgPT0gaW5wdXRXaGl0ZVBvaW50KQordGVtcGxhdGU8PiBzdHJ1
Y3QgQ29sb3JDb252ZXJzaW9uPFNSR0JBPGZsb2F0PiwgU1JHQkE8dWludDhfdD4+IHsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgU1JHQkE8ZmxvYXQ+IGNvbnZlcnQoY29uc3QgU1JHQkE8dWlu
dDhfdD4mKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IENvbG9yQ29udmVyc2lvbjxTUkdCQTx1
aW50OF90PiwgU1JHQkE8ZmxvYXQ+PiB7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNSR0JB
PHVpbnQ4X3Q+IGNvbnZlcnQoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Cit9OworCisKKy8vIFhZWkEg
Q2hyb21hdGljIEFkYXB0YXRpb24gY29udmVyc2lvbnMuCisKK3RlbXBsYXRlPD4gc3RydWN0IENv
bG9yQ29udmVyc2lvbjxYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENjU+LCBYWVpBPGZsb2F0LCBX
aGl0ZVBvaW50OjpENTA+PiB7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFhZWkE8ZmxvYXQs
IFdoaXRlUG9pbnQ6OkQ2NT4gY29udmVydChjb25zdCBYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpE
NTA+Jik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb2xvckNvbnZlcnNpb248WFlaQTxmbG9h
dCwgV2hpdGVQb2ludDo6RDUwPiwgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1Pj4geworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENTA+IGNvbnZl
cnQoY29uc3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiYpOworfTsKKworCisvLyBJZGVu
dGl0eSBjb252ZXJzaW9uLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IHN0cnVjdCBD
b2xvckNvbnZlcnNpb248Q29sb3JUeXBlLCBDb2xvclR5cGU+IHsKKyAgICBzdGF0aWMgQ29sb3JU
eXBlIGNvbnZlcnQoY29uc3QgQ29sb3JUeXBlJiBjb2xvcikKKyAgICB7CiAgICAgICAgIHJldHVy
biBjb2xvcjsKLSAgICBlbHNlIGlmIGNvbnN0ZXhwciAob3V0cHV0V2hpdGVQb2ludCA9PSBXaGl0
ZVBvaW50OjpENTApCi0gICAgICAgIHJldHVybiBjb252ZXJ0RnJvbUQ2NVdoaXRlUG9pbnRUb0Q1
MFdoaXRlUG9pbnQoY29sb3IpOwotICAgIGVsc2UgaWYgY29uc3RleHByIChvdXRwdXRXaGl0ZVBv
aW50ID09IFdoaXRlUG9pbnQ6OkQ2NSkKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRGcm9tRDUwV2hp
dGVQb2ludFRvRDY1V2hpdGVQb2ludChjb2xvcik7Ci19CisgICAgfQorfTsKIAotLy8gRmFsbGJh
Y2sgY29udmVyc2lvbnMuCisvLyBGYWxsYmFjayBjb252ZXJzaW9uLgogCiAvLyBBbGwgdHlwZXMg
YXJlIHJlcXVpcmVkIHRvIGhhdmUgYSBjb252ZXJzaW9uIHRvIHRoZWlyIHJlZmVyZW5jZSBYWVog
c3BhY2UsIHNvIHRoaXMgaXMgZ3VhcmFudGVlZAogLy8gdG8gd29yayBpZiBhbm90aGVyIHNwZWNp
YWxpemF0aW9uIGlzIG5vdCBhbHJlYWR5IHByb3ZpZGVkLgpAQCAtMzU3LDE3ICszNzgsOSBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBXaGl0ZVBvaW50IGlucHV0V2hpCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPdXRwdXQsIHR5cGVuYW1lIElucHV0PiBzdHJ1Y3QgQ29sb3JDb252ZXJzaW9uIHsKICAgICBz
dGF0aWMgT3V0cHV0IGNvbnZlcnQoY29uc3QgSW5wdXQmIGNvbG9yKQogICAgIHsKLSAgICAgICAg
aWYgY29uc3RleHByKHN0ZDo6aXNfc2FtZV92PE91dHB1dCwgSW5wdXQ+KQotICAgICAgICAgICAg
cmV0dXJuIGNvbG9yOwotICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8
dHlwZW5hbWUgSW5wdXQ6OkNvbXBvbmVudFR5cGUsIHVpbnQ4X3Q+KQotICAgICAgICAgICAgcmV0
dXJuIGNvbnZlcnRDb2xvcjxPdXRwdXQ+KGNvbnZlcnRUbzxTUkdCQTxmbG9hdD4+KGNvbG9yKSk7
Ci0gICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBPdXRw
dXQ6OkNvbXBvbmVudFR5cGUsIHVpbnQ4X3Q+KQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRU
bzxTUkdCQTx1aW50OF90Pj4oY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIHh5ejEgPSBjb252ZXJ0Q29sb3I8dHlwZW5h
bWUgSW5wdXQ6OlJlZmVyZW5jZVhZWj4oY29sb3IpOwotICAgICAgICAgICAgYXV0byB4eXoyID0g
cGVyZm9ybUNob21hdGljQWRhcGF0YXRpb248T3V0cHV0Pih4eXoxKTsKLSAgICAgICAgICAgIHJl
dHVybiBjb252ZXJ0Q29sb3I8T3V0cHV0Pih4eXoyKTsKLSAgICAgICAgfQorICAgICAgICBhdXRv
IHh5ejEgPSBjb252ZXJ0Q29sb3I8dHlwZW5hbWUgSW5wdXQ6OlJlZmVyZW5jZVhZWj4oY29sb3Ip
OworICAgICAgICBhdXRvIHh5ejIgPSBjb252ZXJ0Q29sb3I8dHlwZW5hbWUgT3V0cHV0OjpSZWZl
cmVuY2VYWVo+KHh5ejEpOworICAgICAgICByZXR1cm4gY29udmVydENvbG9yPE91dHB1dD4oeHl6
Mik7CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yVHlwZXMuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsNyArMzAx
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVjMjAyMChULCBULCBULCBUKQogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IFNSR0JBIDogUkdCQVR5cGU8U1JHQkEsIFQsIFJHQk1vZGVsPFQ+
PiB7CiAgICAgdXNpbmcgUkdCQVR5cGU8U1JHQkEsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7
CiAgICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJTUkdCQTxUPjsKLSAgICB1c2lu
ZyBSZWZlcmVuY2VYWVogPSBYWVpBPFQsIFdoaXRlUG9pbnQ6OkQ2NT47CisgICAgdXNpbmcgUmVm
ZXJlbmNlWFlaID0gWFlaQTxzdGQ6OmNvbmRpdGlvbmFsX3Q8c3RkOjppc19zYW1lX3Y8VCwgdWlu
dDhfdD4sIGZsb2F0LCBUPiwgV2hpdGVQb2ludDo6RDY1PjsKIH07CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBTUkdCQShULCBULCBULCBUKSAtPiBTUkdCQTxUPjsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCShyZXZpc2lvbiAy
NzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNywgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDEwICs1MCw2IEBAIHVpbnQ4X3QgY29udmVydFBy
ZXNjYWxlZFNSR0JBRmxvYXRUb1NSR0IKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgY29udmVydEJ5
dGVBbHBoYVRvKHVpbnQ4X3QpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0RmxvYXRB
bHBoYVRvKGZsb2F0KTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gVCBjb252
ZXJ0VG8oY29uc3QgVSYpOwotdGVtcGxhdGU8PiBTUkdCQTxmbG9hdD4gY29udmVydFRvKGNvbnN0
IFNSR0JBPHVpbnQ4X3Q+Jik7Ci10ZW1wbGF0ZTw+IFNSR0JBPHVpbnQ4X3Q+IGNvbnZlcnRUbyhj
b25zdCBTUkdCQTxmbG9hdD4mKTsKLQogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBl
bmFtZSBGdW5jdG9yPiBDb2xvclR5cGUgY29sb3JCeU1vZGlmaW5nRWFjaE5vbkFscGhhQ29tcG9u
ZW50KGNvbnN0IENvbG9yVHlwZSYsIEZ1bmN0b3ImJik7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENv
bG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZSBjb2xvcldpdGhPdmVycmlkZW5BbHBoYShjb25z
dCBDb2xvclR5cGUmLCB1aW50OF90IG92ZXJyaWRlQWxwaGEpOwpAQCAtNjIsMTMgKzU4LDEzIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gQ29sb3JUeXBlIGMKIHRlbXBsYXRlPHR5cGVu
YW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZSBpbnZlcnRlZENvbG9yV2l0aE92ZXJy
aWRlbkFscGhhKGNvbnN0IENvbG9yVHlwZSYsIHVpbnQ4X3Qgb3ZlcnJpZGVBbHBoYSk7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IENvbG9yVHlwZSBpbnZlcnRlZENvbG9yV2l0aE92ZXJy
aWRlbkFscGhhKGNvbnN0IENvbG9yVHlwZSYsIGZsb2F0IG92ZXJyaWRlQWxwaGEpOwogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19zYW1lX3Y8dHlwZW5hbWUgQ29sb3JUeXBlOjpNb2RlbCwgUkdCTW9kZWw8dHlwZW5hbWUgQ29s
b3JUeXBlOjpDb21wb25lbnRUeXBlPj4+KiA9IG51bGxwdHI+IGNvbnN0ZXhwciBib29sIGlzQmxh
Y2soY29uc3QgQ29sb3JUeXBlJik7Cit0ZW1wbGF0ZTxXaGl0ZVBvaW50IFc+IGNvbnN0ZXhwciBi
b29sIGlzQmxhY2soY29uc3QgWFlaQTxmbG9hdCwgVz4mKTsKIGNvbnN0ZXhwciBib29sIGlzQmxh
Y2soY29uc3QgTGFiPGZsb2F0PiYpOwotdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIENvbG9yVHlwZTo6
TW9kZWwsIFJHQk1vZGVsPHR5cGVuYW1lIENvbG9yVHlwZTo6Q29tcG9uZW50VHlwZT4+PiogPSBu
dWxscHRyPgotY29uc3RleHByIGJvb2wgaXNCbGFjayhjb25zdCBDb2xvclR5cGUmKTsKIAordGVt
cGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfc2FtZV92PHR5cGVuYW1lIENvbG9yVHlwZTo6TW9kZWwsIFJHQk1vZGVsPHR5cGVuYW1lIENv
bG9yVHlwZTo6Q29tcG9uZW50VHlwZT4+PiogPSBudWxscHRyPiBjb25zdGV4cHIgYm9vbCBpc1do
aXRlKGNvbnN0IENvbG9yVHlwZSYpOwordGVtcGxhdGU8V2hpdGVQb2ludCBXPiBjb25zdGV4cHIg
Ym9vbCBpc1doaXRlKGNvbnN0IFhZWkE8ZmxvYXQsIFc+Jik7CiBjb25zdGV4cHIgYm9vbCBpc1do
aXRlKGNvbnN0IExhYjxmbG9hdD4mKTsKLXRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBDb2xvclR5cGU6
Ok1vZGVsLCBSR0JNb2RlbDx0eXBlbmFtZSBDb2xvclR5cGU6OkNvbXBvbmVudFR5cGU+Pj4qID0g
bnVsbHB0cj4KLWNvbnN0ZXhwciBib29sIGlzV2hpdGUoY29uc3QgQ29sb3JUeXBlJik7CiAKIGNv
bnN0ZXhwciB1aW50MTZfdCBmYXN0TXVsdGlwbHlCeTI1NSh1aW50MTZfdCk7CiBjb25zdGV4cHIg
dWludDE2X3QgZmFzdERpdmlkZUJ5MjU1KHVpbnQxNl90KTsKQEAgLTk5LDI2ICs5NSw2IEBAIHRl
bXBsYXRlPD4gaW5saW5lIGZsb2F0IGNvbnZlcnRGbG9hdEFscGgKICAgICByZXR1cm4gY2xhbXBl
ZEFscGhhKHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgU1JHQkE8ZmxvYXQ+IGNvbnZl
cnRUbyhjb25zdCBTUkdCQTx1aW50OF90PiYgY29sb3IpCi17Ci0gICAgYXV0byBjb252ZXJ0VG9T
UkdCQUZsb2F0ID0gW10odWludDhfdCB2YWx1ZSkgLT4gZmxvYXQgewotICAgICAgICByZXR1cm4g
dmFsdWUgLyAyNTUuMGY7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcG9uZW50cyA9IGFzQ29sb3JD
b21wb25lbnRzKGNvbG9yKTsKLSAgICByZXR1cm4geyBjb252ZXJ0VG9TUkdCQUZsb2F0KGNvbXBv
bmVudHNbMF0pLCBjb252ZXJ0VG9TUkdCQUZsb2F0KGNvbXBvbmVudHNbMV0pLCBjb252ZXJ0VG9T
UkdCQUZsb2F0KGNvbXBvbmVudHNbMl0pLCBjb252ZXJ0VG9TUkdCQUZsb2F0KGNvbXBvbmVudHNb
M10pIH07Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIFNSR0JBPHVpbnQ4X3Q+IGNvbnZlcnRUbyhj
b25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQotewotICAgIGF1dG8gY29udmVydFRvU1JHQkFCeXRl
ID0gW10oZmxvYXQgdmFsdWUpIC0+IHVpbnQ4X3QgewotICAgICAgICByZXR1cm4gc3RkOjpjbGFt
cChzdGQ6Omxyb3VuZCh2YWx1ZSAqIDI1NS4wZiksIDBsLCAyNTVsKTsKLSAgICB9OwotCi0gICAg
YXV0byBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3IpOwotICAgIHJldHVybiB7
IGNvbnZlcnRUb1NSR0JBQnl0ZShjb21wb25lbnRzWzBdKSwgY29udmVydFRvU1JHQkFCeXRlKGNv
bXBvbmVudHNbMV0pLCBjb252ZXJ0VG9TUkdCQUJ5dGUoY29tcG9uZW50c1syXSksIGNvbnZlcnRU
b1NSR0JBQnl0ZShjb21wb25lbnRzWzNdKSB9OwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xv
clR5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+IENvbG9yVHlwZSBjb2xvckJ5TW9kaWZpbmdFYWNoTm9u
QWxwaGFDb21wb25lbnQoY29uc3QgQ29sb3JUeXBlJiBjb2xvciwgRnVuY3RvciYmIGZ1bmN0b3Ip
CiB7CiAgICAgYXV0byBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3IpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAko
cmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MCw3ICs4MCw3IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gbWFrZVNpbXAK
ICAgICAgICAgY29tcG9uZW50QXJyYXlbaV0gPSBjb21wb25lbnQ7CiAgICAgfQogCi0gICAgcmV0
dXJuIGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBjb21wb25lbnRBcnJheVsxXSwg
Y29tcG9uZW50QXJyYXlbMl0sIGNvbXBvbmVudEFycmF5WzNdLCBjb21wb25lbnRBcnJheVswXSB9
KTsKKyAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IGNvbXBv
bmVudEFycmF5WzFdLCBjb21wb25lbnRBcnJheVsyXSwgY29tcG9uZW50QXJyYXlbM10sIGNvbXBv
bmVudEFycmF5WzBdIH0pOwogfQogCiBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVm
IGF0dHJpYnV0ZWRTdHJpbmcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBi
b29sIEZpbHRlck9wZXJhdGlvbnM6OnRyYW5zZm9ybUNvbG9yKENvCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29sb3IgPSBjb252ZXJ0VG88U1JHQkE8dWludDhfdD4+
KHNSR0JBQ29sb3IpOworICAgIGNvbG9yID0gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+Pihz
UkdCQUNvbG9yKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTM2LDcgKzEzNiw3IEBAIGJv
b2wgRmlsdGVyT3BlcmF0aW9uczo6aW52ZXJzZVRyYW5zZm9ybUMKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBjb2xvciA9IGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4o
c1JHQkFDb2xvcik7CisgICAgY29sb3IgPSBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KHNS
R0JBQ29sb3IpOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAJKHJldmlzaW9uIDI3MjQ2
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Q29sb3I6OkNvbG9yKGNvbnN0IEdka1JHQkEmIGNvbG9yKQotICAgIDogQ29sb3IoY29udmVydFRv
PFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci5yZWQpLCBz
dGF0aWNfY2FzdDxmbG9hdD4oY29sb3IuZ3JlZW4pLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3Iu
Ymx1ZSksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci5hbHBoYSkgfSkpCisgICAgOiBDb2xvcihj
b252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNv
bG9yLnJlZCksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci5ncmVlbiksIHN0YXRpY19jYXN0PGZs
b2F0Pihjb2xvci5ibHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLmFscGhhKSB9KSkKIHsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b2xvck1hYy5tbQkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBA
IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gbWFrZVNpbXAKICAgICBbcmdiQ29sb3Ig
Z2V0UmVkOiZyZWRDb21wb25lbnQgZ3JlZW46JmdyZWVuQ29tcG9uZW50IGJsdWU6JmJsdWVDb21w
b25lbnQgYWxwaGE6JmFscGhhXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKLSAg
ICByZXR1cm4gY29udmVydFRvPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IHN0YXRpY19jYXN0PGZs
b2F0PihyZWRDb21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oZ3JlZW5Db21wb25lbnQpLCBz
dGF0aWNfY2FzdDxmbG9hdD4oYmx1ZUNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBo
YSkgfSk7CisgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBz
dGF0aWNfY2FzdDxmbG9hdD4ocmVkQ29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGdyZWVu
Q29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJsdWVDb21wb25lbnQpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oYWxwaGEpIH0pOwogfQogCiBDb2xvciBjb2xvckZyb21OU0NvbG9yKE5TQ29sb3Ig
KmNvbG9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0NvbG9y
RGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Db2xvckRpcmVjdDJELmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQ29sb3I6OkNvbG9yKEQyRDFfQ09MT1JfRiBjb2xvcikKLSAgICA6IENv
bG9yKGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBjb2xvci5yLCBjb2xvci5nLCBj
b2xvci5iLCBjb2xvci5hIH0pKQorICAgIDogQ29sb3IoY29udmVydENvbG9yPFNSR0JBPHVpbnQ4
X3Q+PihTUkdCQSB7IGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEgfSkpCiB7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNv
bnRleHREaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcAkocmV2aXNpb24gMjcyNDYy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4
dERpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRDo6c2V0QWN0aXZlTAogCiBDT01QdHI8SUQyRDFTb2xpZENvbG9yQnJ1
c2g+IFBsYXRmb3JtQ29udGV4dERpcmVjdDJEOjpicnVzaFdpdGhDb2xvcihjb25zdCBEMkQxX0NP
TE9SX0YmIGNvbG9yKQogewotICAgIGF1dG8gY29sb3JLZXkgPSBjb252ZXJ0VG88U1JHQkE8dWlu
dDhfdD4+KFNSR0JBIHsgY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSB9KTsKKyAg
ICBhdXRvIGNvbG9yS2V5ID0gY29sb3JDb252ZXJ0PFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IGNv
bG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEgfSk7CiAKICAgICBpZiAoIWNvbG9yS2V5
KSB7CiAgICAgICAgIGlmICghbV96ZXJvQnJ1c2gpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvQ29sb3JJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0NvbG9ySU9TLm1tCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvQ29sb3JJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAg
Q29sb3IgY29sb3JGcm9tVUlDb2xvcihVSUNvbG9yICpjb2xvcikKIAogICAgIFtjb2xvciBnZXRS
ZWQ6JnJlZENvbXBvbmVudCBncmVlbjomZ3JlZW5Db21wb25lbnQgYmx1ZTomYmx1ZUNvbXBvbmVu
dCBhbHBoYTomYWxwaGFdOwogCi0gICAgcmV0dXJuIGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4o
U1JHQkEgeyBzdGF0aWNfY2FzdDxmbG9hdD4ocmVkQ29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGdyZWVuQ29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJsdWVDb21wb25lbnQpLCBz
dGF0aWNfY2FzdDxmbG9hdD4oYWxwaGEpIH0pOworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JH
QkE8dWludDhfdD4+KFNSR0JBIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlZENvbXBvbmVudCksIHN0
YXRpY19jYXN0PGZsb2F0PihncmVlbkNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihibHVl
Q29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFscGhhKSB9KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDIt
MDYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBtb3Jl
IHNwZWNpYWwgY2FzZXMgZnJvbSBjb2xvciBjb252ZXJzaW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE1MTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENv
bG9yLmNwcDoKKyAgICAgICAgKHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IpOgorICAgICAgICBS
ZXBsYWNlIGNvbnZlcnRUbzw+IGNvbXBvbmVudCB0eXBlIGNvbnZlcnNpb24gdG8gZ2VuZXJhbCBj
b252ZXJ0Q29sb3I8Pi4KKwogMjAyMS0wMi0wNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI3MjMzNyk6IGNyYXNoIHVuZGVyIFdlYkNvcmU6
OlNwZWVjaFJlY29nbml6ZXI6OnNldEluYWN0aXZlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdENvbG9y
LCB3ZWJraXRfCiAKIGNvbnN0IFdlYkNvcmU6OkNvbG9yIHdlYmtpdENvbG9yVG9XZWJDb3JlQ29s
b3IoV2ViS2l0Q29sb3IqIGNvbG9yKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb252ZXJ0VG88
V2ViQ29yZTo6U1JHQkE8dWludDhfdD4+KFdlYkNvcmU6OlNSR0JBIHsgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGNvbG9yLT5yZWQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPmdyZWVuKSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5ibHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5hbHBo
YSkgfSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvbnZlcnRDb2xvcjxXZWJDb3JlOjpTUkdCQTx1
aW50OF90Pj4oV2ViQ29yZTo6U1JHQkEgeyBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPnJlZCks
IHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+Z3JlZW4pLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29s
b3ItPmJsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPmFscGhhKSB9KTsKIH0KIAogdm9p
ZCB3ZWJraXRDb2xvckZpbGxGcm9tV2ViQ29yZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiB3
ZWJDb3JlQ29sb3IsIFdlYktpdENvbG9yKiBjb2xvcikKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MikKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTA2ICBT
YW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbW9yZSBzcGVj
aWFsIGNhc2VzIGZyb20gY29sb3IgY29udmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0
ZW5kZWRDb2xvclRlc3RzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICBSZXBsYWNlIGNvbnZlcnRUbzw+IGNvbXBvbmVudCB0eXBlIGNvbnZlcnNpb24gdG8gZ2Vu
ZXJhbCBjb252ZXJ0Q29sb3I8Pi4KKwogMjAyMS0wMi0wNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBEaXNhYmxlIE1lZGlhU2Vzc2lvblRl
c3QgQVBJIHRlc3RzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0
ZW5kZWRDb2xvclRlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBURVNUKEV4dGVuZGVkQ29sb3IsIEVx
dWFsaXR5KQogICAgIH0KIAogICAgIGF1dG8gY29tcG9uZW50Qnl0ZXMgPSBTUkdCQTx1aW50OF90
PiB7IDI1NSwgMTI4LCA2MywgMTI3IH07Ci0gICAgQ29sb3IgcmdiMSB7IGNvbnZlcnRUbzxTUkdC
QTxmbG9hdD4+KGNvbXBvbmVudEJ5dGVzKSB9OworICAgIENvbG9yIHJnYjEgeyBjb252ZXJ0Q29s
b3I8U1JHQkE8ZmxvYXQ+Pihjb21wb25lbnRCeXRlcykgfTsKICAgICBDb2xvciByZ2IyIHsgY29t
cG9uZW50Qnl0ZXMgfTsKICAgICBFWFBFQ1RfTkUocmdiMSwgcmdiMik7CiAgICAgRVhQRUNUX05F
KHJnYjIsIHJnYjEpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgSGFz
aCkKICAgICB9CiAKICAgICBhdXRvIGNvbXBvbmVudEJ5dGVzID0gU1JHQkE8dWludDhfdD4geyAy
NTUsIDEyOCwgNjMsIDEyNyB9OwotICAgIENvbG9yIHJnYjEgeyBjb252ZXJ0VG88U1JHQkE8Zmxv
YXQ+Pihjb21wb25lbnRCeXRlcykgfTsKKyAgICBDb2xvciByZ2IxIHsgY29udmVydENvbG9yPFNS
R0JBPGZsb2F0Pj4oY29tcG9uZW50Qnl0ZXMpIH07CiAgICAgQ29sb3IgcmdiMiB7IGNvbXBvbmVu
dEJ5dGVzIH07CiAgICAgRVhQRUNUX05FKHJnYjEuaGFzaCgpLCByZ2IyLmhhc2goKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419539</attachid>
            <date>2021-02-07 08:57:33 -0800</date>
            <delta_ts>2021-02-07 11:23:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221519-20210207085732.patch</filename>
            <type>text/plain</type>
            <size>34306</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBACisyMDIxLTAyLTA3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbW9yZSBzcGVjaWFsIGNh
c2VzIGZyb20gY29sb3IgY29udmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgLSBSZW1vdmUgc3BlY2lhbGl6ZWQgY29udmVydFRvPD4gZnVuY3Rp
b24gd2hpY2ggb25seSBkaWQgY29tcG9uZW50CisgICAgICAgICAgdHlwZSBjb252ZXJzaW9uIHdp
dGggdGhlIGZ1bGx5IGdlbmVyYWwgY29udmVydENvbG9yPD4gZnVuY3Rpb24uCisKKyAgICAgICAg
LSBNYWtlIENvbG9yQ29tcG9uZW50cyBhIGJpdCBtb3JlIHJlYWR5IGZvciBub24tNCBjb21wb25l
bnQgY29sb3JzIGJ5CisgICAgICAgICAgcmV3b3JraW5nIG1lbWJlciBmdW5jdGlvbmFsaXR5IGJh
c2VkIG9uIGEgbmV3IG1hcENvbG9yQ29tcG9uZW50cyBmdW5jdGlvbgorICAgICAgICAgIHdoaWNo
IG1hcHMgYSBmdW5jdGlvbiBGIG92ZXIgYWxsIHRoZSBjb21wb25lbnRzIG9mIGEgc2V0IG9mIENv
bG9yQ29tcG9uZW50cy4KKyAgICAgICAgICBlLmcuCisKKyAgICAgICAgICAgICAgYXV0byBjb2xv
ckNvbXBvbmVudHNDID0gbWFwQ29sb3JDb21wb25lbnRzKFtdIChhdXRvIGEsIGF1dG8gYikgeyBy
ZXR1cm4gYSArIGI7IH0sIGNvbG9yQ29tcG9uZW50c0EsIGNvbG9yQ29tcG9uZW50c0IpOworCisg
ICAgICAgICAgd2lsbCBjcmVhdGUgYSBuZXcgQ29sb3JDb21wb25lbnRzIHdoZXJlIGVhY2ggY29t
cG9uZW50IGlzIHRoZSBzdW0gb2YgdGhlIAorICAgICAgICAgIGNvcnJlc3BvbmRpbmcgY29tcG9u
ZW50cyBpbiBjb2xvckNvbXBvbmVudHNBIGFuZCBjb2xvckNvbXBvbmVudHNCLiBJdCdzCisgICAg
ICAgICAgdmFyaWFkaWMgc28gaXQgY2FuIHRha2UgYW55IG51bWJlciBvZiBDb2xvckNvbXBvbmVu
dHMuIFRoaXMgYWxsb3dzIHJld3JpdGluZworICAgICAgICAgIGFsbCBvZiB0aGUgbWVtYmVycyB0
byBiZSBzaXplIGludmFyaWFudCBhbmQgYSBsaXR0bGUgbGVzcyB2ZXJib3NlLgorCisgICAgICAg
IC0gUmVwbGFjZSBzcGVjaWFsIGNhc2UgZm9yIHRoZSBpZGVudGl0eSBjb252ZXJzaW9uIGluIHRo
ZSBmYWxsYmFjayBjb2xvciBjb252ZXJzaW9uCisgICAgICAgICAgY29kZSBwYXRoLCBhbmQgbW92
ZSBpdCBpbnRvIGl0J3Mgb3duIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gb2YgQ29sb3JDb252ZXJz
aW9uLgorCisgICAgICAgIC0gUmVwbGFjZSBzcGVjaWFsIGNhc2UgZm9yIGNocm9tYXRpYyBhZGFw
dGF0aW9uIGNvbnZlcnNpb25zIGFuZCBoYXZlIHRoZW0ganVzdAorICAgICAgICAgIHVzZSBzcGVj
aWFsaXphdGlvbnMgb2YgQ29sb3JDb252ZXJzaW9uIGxpa2UgYWxsIG90aGVyIGNvbnZlcnNpb25z
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmg6CisgICAg
ICAgIChXZWJDb3JlOjptYXBDb2xvckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3JDb21wb25lbnRzPFQ+OjptYXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb21w
b25lbnRzPFQ+OjpvcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBv
bmVudHM8VD46OmFicyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpwZXJDb21wb25lbnRNYXgp
OgorICAgICAgICAoV2ViQ29yZTo6cGVyQ29tcG9uZW50TWluKToKKyAgICAgICAgQWRkIG1hcCBh
bmQgbWFwQ29sb3JDb21wb25lbnRzIGFuZCByZS1pbXBsZW1lbnQgZXhpc3RpbmcKKyAgICAgICAg
ZnVuY3Rpb25hbGl0eSBpbiB0ZXJtcyBvZiB0aGVtLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoaXRlUG9pbnQ6
OkQ1MD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldoaXRlUG9pbnQ6OkQ2NT4+Ojpj
b252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JBPHVpbnQ4X3Q+Pjo6Y29udmVydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUkdCQTxmbG9hdD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNSR0JBPHVpbnQ4X3Q+OjpSZWZlcmVuY2VYWVo+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2ludCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RnJvbUQ2NVdoaXRlUG9pbnRUb0Q1MFdoaXRlUG9p
bnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDb252ZXJzaW9uOjpjb252ZXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgVXNlIENvbG9yQ29udmVyc2lvbiBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBpZGVudGl0eSBj
b252ZXJzaW9uLCBjaG9tYXRpYyAKKyAgICAgICAgYWRhcGF0YXRpb24sIGFuZCBjb21wb25lbnQg
dHlwZSBjb252ZXJzaW9ucywgcmF0aGVyIHRoYW4gaGFyZCBjb2RpbmcgdGhlbQorICAgICAgICBp
biB0aGUgZmFsbGJhY2sgY29udmVyc2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG8pOiBEZWxldGVk
LgorICAgICAgICBSZW1vdmUgY29udmVydFRvPD4sIHdoaWNoIGlzIG5vdyBzdXBlcnNlZGVkIGJ5
IHRoZSBnZW5lcmFsIGNvbnZlcnRDb2xvcjw+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAgICAgICAod2Via2l0QWNj
ZXNzaWJsZVRleHRHZXRUZXh0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUNvbG9yU3RyaW5nVmFsdWVdKToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6c2V0U2hhZG93KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudCBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6Omxp
Z2h0ZW5lZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6ZGFya2VuZWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmNvbG9yU3BhY2VBbmRDb21wb25lbnRzIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlU2ltcGxlQ29sb3JGcm9t
QVJHQkNGQXJyYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zOjp0cmFu
c2Zvcm1Db2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zOjpp
bnZlcnNlVHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2d0ay9Db2xvckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Q29sb3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Om1ha2VTaW1wbGVDb2xvckZyb21OU0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Q29s
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6YnJ1
c2hXaXRoQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Db2xvcklPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbG9yRnJvbVVJQ29sb3IpOgorICAgICAgICBBZG9wdCBjb252ZXJ0Q29s
b3I8PiB0byByZXBsYWNlIGNvbnZlcnRUbzw+LgorCiAyMDIxLTAyLTA2ICBaYWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBDb250aW51YXRpb24gcHJl
IGFuZCBwb3N0IGJsb2NrIGlubGluZSBib3hlcyBzaG91bGQgbm90IGhhdmUgYm90aCB0aGUgc3Rh
cnQgYW5kIGVuZCBkZWNvcmF0aW9ucyBvZiB0aGUgb3JpZ2luYWwgaW5saW5lIGJveApJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDMsNyArNDQzLDcgQEAgc3RhdGljIGdjaGFy
KiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleAogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCiAgICAgaWYgKGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpDb2xvcldlbGwpIHsKLSAgICAgICAgYXV0byBjb2xvciA9IGNvbnZlcnRUbzxTUkdCQTxmbG9h
dD4+KGNvcmVPYmplY3QtPmNvbG9yVmFsdWUoKSk7CisgICAgICAgIGF1dG8gY29sb3IgPSBjb252
ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb3JlT2JqZWN0LT5jb2xvclZhbHVlKCkpOwogICAgICAg
ICByZXR1cm4gZ19zdHJkdXBfcHJpbnRmKCJyZ2IgJTcuNWYgJTcuNWYgJTcuNWYgMSIsIGNvbG9y
LnJlZCwgY29sb3IuZ3JlZW4sIGNvbG9yLmJsdWUpOwogICAgIH0KICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJldmlzaW9uIDI3MjQ2MikKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCAtIChOU1N0
cmluZyAqKWFjY2Vzc2liaWxpdHlDb2xvclN0cmluZ1ZhCiAgICAgICAgIHJldHVybiBuaWw7CiAK
ICAgICBpZiAoc2VsZi5heEJhY2tpbmdPYmplY3QtPmlzQ29sb3JXZWxsKCkpIHsKLSAgICAgICAg
YXV0byBjb2xvciA9IGNvbnZlcnRUbzxTUkdCQTxmbG9hdD4+KHNlbGYuYXhCYWNraW5nT2JqZWN0
LT5jb2xvclZhbHVlKCkpOworICAgICAgICBhdXRvIGNvbG9yID0gY29udmVydENvbG9yPFNSR0JB
PGZsb2F0Pj4oc2VsZi5heEJhY2tpbmdPYmplY3QtPmNvbG9yVmFsdWUoKSk7CiAgICAgICAgIHJl
dHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInJnYiAlNy41ZiAlNy41ZiAlNy41ZiAx
IiwgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZV07CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzODUsNyArMjM4NSw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuIEAoYmFj
a2luZ09iamVjdC0+aXNTZWxlY3RlZCgpKTsKIAogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+
aXNDb2xvcldlbGwoKSkgewotICAgICAgICAgICAgYXV0byBjb2xvciA9IGNvbnZlcnRUbzxTUkdC
QTxmbG9hdD4+KGJhY2tpbmdPYmplY3QtPmNvbG9yVmFsdWUoKSk7CisgICAgICAgICAgICBhdXRv
IGNvbG9yID0gY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oYmFja2luZ09iamVjdC0+Y29sb3JW
YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
InJnYiAlNy41ZiAlNy41ZiAlNy41ZiAxIiwgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3Iu
Ymx1ZV07CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHJldmlzaW9u
IDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzI0LDcgKzEzMjQsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFNoCiAgICAgaWYgKHN0ZDo6aXNuYW4o
Z3JheUxldmVsKSB8fCBzdGQ6OmlzbmFuKGFscGhhKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1ciwgY29udmVydFRvPFNSR0JB
PHVpbnQ4X3Q+PihtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZzxTUkdCQTxmbG9hdD4+KGdyYXlM
ZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIGFscGhhKSkpOworICAgIHNldFNoYWRvdyhGbG9h
dFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4o
bWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihncmF5TGV2ZWwsIGdyYXlM
ZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1
ciwgZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKQEAgLTEzMzIsNyArMTMzMiw3
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0U2gKICAgICBpZiAoc3Rk
Ojppc25hbihyKSB8fCBzdGQ6OmlzbmFuKGcpIHx8IHN0ZDo6aXNuYW4oYikgIHx8IHN0ZDo6aXNu
YW4oYSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgs
IGhlaWdodCksIGJsdXIsIGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4obWFrZUZyb21Db21wb25l
bnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBhKSkpOworICAgIHNldFNoYWRvdyhG
bG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90
Pj4obWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8ZmxvYXQ+PihyLCBnLCBiLCBhKSkp
OwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNsZWFyU2hhZG93KCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBDYW52YXNTdHlsZTo6Q2FudmFzU3R5
bGUoQ29sb3IgY29sb3IpCiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBTUkdC
QTxmbG9hdD4mIGNvbG9yQ29tcG9uZW50cykKLSAgICA6IG1fc3R5bGUoY29udmVydFRvPFNSR0JB
PHVpbnQ4X3Q+Pihjb2xvckNvbXBvbmVudHMpKQorICAgIDogbV9zdHlsZShjb252ZXJ0Q29sb3I8
U1JHQkE8dWludDhfdD4+KGNvbG9yQ29tcG9uZW50cykpCiB7CiB9CiAKQEAgLTE0OCw3ICsxNDgs
NyBAQCBib29sIENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDb2xvcihjb25zCiAKIGJvb2wgQ2Fu
dmFzU3R5bGU6OmlzRXF1aXZhbGVudChjb25zdCBTUkdCQTxmbG9hdD4mIGNvbXBvbmVudHMpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29sb3I+KG1fc3R5bGUp
ICYmIFdURjo6Z2V0PENvbG9yPihtX3N0eWxlKSA9PSBjb252ZXJ0VG88U1JHQkE8dWludDhfdD4+
KGNvbXBvbmVudHMpOworICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENvbG9yPiht
X3N0eWxlKSAmJiBXVEY6OmdldDxDb2xvcj4obV9zdHlsZSkgPT0gY29udmVydENvbG9yPFNSR0JB
PHVpbnQ4X3Q+Pihjb21wb25lbnRzKTsKIH0KIAogdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJv
a2VDb2xvcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkxLDcgKzkxLDcgQEAgQ29sb3IgQ29sb3I6OmxpZ2h0ZW5lZCgpIGNvbnN0CiAKICAgICBm
bG9hdCBtdWx0aXBsaWVyID0gc3RkOjptaW4oMS4wZiwgdiArIDAuMzNmKSAvIHY7CiAKLSAgICBy
ZXR1cm4gY29udmVydFRvPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IG11bHRpcGxpZXIgKiByLCBt
dWx0aXBsaWVyICogZywgbXVsdGlwbGllciAqIGIsIGEgfSk7CisgICAgcmV0dXJuIGNvbnZlcnRD
b2xvcjxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBtdWx0aXBsaWVyICogciwgbXVsdGlwbGllciAq
IGcsIG11bHRpcGxpZXIgKiBiLCBhIH0pOwogfQogCiBDb2xvciBDb2xvcjo6ZGFya2VuZWQoKSBj
b25zdApAQCAtMTA1LDcgKzEwNSw3IEBAIENvbG9yIENvbG9yOjpkYXJrZW5lZCgpIGNvbnN0CiAg
ICAgZmxvYXQgdiA9IHN0ZDo6bWF4KHsgciwgZywgYiB9KTsKICAgICBmbG9hdCBtdWx0aXBsaWVy
ID0gc3RkOjptYXgoMC4wZiwgKHYgLSAwLjMzZikgLyB2KTsKIAotICAgIHJldHVybiBjb252ZXJ0
VG88U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgbXVsdGlwbGllciAqIHIsIG11bHRpcGxpZXIgKiBn
LCBtdWx0aXBsaWVyICogYiwgYSB9KTsKKyAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVp
bnQ4X3Q+PihTUkdCQSB7IG11bHRpcGxpZXIgKiByLCBtdWx0aXBsaWVyICogZywgbXVsdGlwbGll
ciAqIGIsIGEgfSk7CiB9CiAKIGZsb2F0IENvbG9yOjpsaWdodG5lc3MoKSBjb25zdApAQCAtMTY1
LDcgKzE2NSw3IEBAIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmwKIHsK
ICAgICBpZiAoaXNFeHRlbmRlZCgpKQogICAgICAgICByZXR1cm4geyBhc0V4dGVuZGVkKCkuY29s
b3JTcGFjZSgpLCBhc0V4dGVuZGVkKCkuY29tcG9uZW50cygpIH07Ci0gICAgcmV0dXJuIHsgQ29s
b3JTcGFjZTo6U1JHQiwgYXNDb2xvckNvbXBvbmVudHMoY29udmVydFRvPFNSR0JBPGZsb2F0Pj4o
YXNJbmxpbmUoKSkpIH07CisgICAgcmV0dXJuIHsgQ29sb3JTcGFjZTo6U1JHQiwgYXNDb2xvckNv
bXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oYXNJbmxpbmUoKSkpIH07CiB9CiAK
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbG9yJiBjb2xv
cikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29tcG9uZW50cy5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
OSBAQCBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzIHsKICAgICB7CiAgICAgfQogCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRj4KKyAgICBjb25zdGV4cHIgYXV0byBtYXAoRiYmIGZ1bmN0aW9uKSBjb25z
dCAtPiBDb2xvckNvbXBvbmVudHM8ZGVjbHR5cGUoZnVuY3Rpb24oc3RkOjpkZWNsdmFsPFQ+KCkp
KT47CisKICAgICBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzJiBvcGVyYXRvcis9KGNvbnN0IENv
bG9yQ29tcG9uZW50cyYpOwogCiAgICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50cyBvcGVyYXRv
cisoVCkgY29uc3Q7CkBAIC01OCw1OCArNjEsNTMgQEAgc3RydWN0IENvbG9yQ29tcG9uZW50cyB7
CiAgICAgc3RkOjphcnJheTxULCBTaXplPiBjb21wb25lbnRzOwogfTsKIAordGVtcGxhdGU8dHlw
ZW5hbWUgRiwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gVHM+Citjb25zdGV4cHIgYXV0byBtYXBD
b2xvckNvbXBvbmVudHMoRiYmIGZ1bmN0aW9uLCBUIGNvbXBvbmVudCwgVHMuLi4gY29tcG9uZW50
cykgLT4gQ29sb3JDb21wb25lbnRzPGRlY2x0eXBlKGZ1bmN0aW9uKGNvbXBvbmVudFswXSwgY29t
cG9uZW50c1swXS4uLikpPgoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpjb25qdW5jdGlvbl92
PHN0ZDo6Ym9vbF9jb25zdGFudDxUczo6U2l6ZSA9PSBUOjpTaXplPi4uLj4sICJBbGwgQ29sb3JD
b21wb25lbnRzIHBhc3NlZCB0byBtYXBDb2xvckNvbXBvbmVudHMgbXVzdCBoYXZlIHRoZSBzYW1l
IHNpemUiKTsKKworICAgIENvbG9yQ29tcG9uZW50czxkZWNsdHlwZShmdW5jdGlvbihjb21wb25l
bnRbMF0sIGNvbXBvbmVudHNbMF0uLi4pKT4gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgVDo6U2l6ZTsgKytpKQorICAgICAgICByZXN1bHRbaV0gPSBmdW5jdGlvbihjb21wb25l
bnRbaV0sIGNvbXBvbmVudHNbaV0uLi4pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBGPgorY29uc3RleHByIGF1dG8gQ29s
b3JDb21wb25lbnRzPFQ+OjptYXAoRiYmIGZ1bmN0aW9uKSBjb25zdCAtPiBDb2xvckNvbXBvbmVu
dHM8ZGVjbHR5cGUoZnVuY3Rpb24oc3RkOjpkZWNsdmFsPFQ+KCkpKT4KK3sKKyAgICByZXR1cm4g
bWFwQ29sb3JDb21wb25lbnRzKHN0ZDo6Zm9yd2FyZDxGPihmdW5jdGlvbiksICp0aGlzKTsKK30K
KwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4mIENv
bG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IrPShjb25zdCBDb2xvckNvbXBvbmVudHMmIHJocykK
IHsKLSAgICBjb21wb25lbnRzWzBdICs9IHJoc1swXTsKLSAgICBjb21wb25lbnRzWzFdICs9IHJo
c1sxXTsKLSAgICBjb21wb25lbnRzWzJdICs9IHJoc1syXTsKLSAgICBjb21wb25lbnRzWzNdICs9
IHJoc1szXTsKKyAgICAqdGhpcyA9IG1hcENvbG9yQ29tcG9uZW50cyhbXShUIGMxLCBUIGMyKSB7
IHJldHVybiBjMSArIGMyOyB9LCAqdGhpcywgcmhzKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IENvbG9y
Q29tcG9uZW50czxUPjo6b3BlcmF0b3IrKFQgcmhzKSBjb25zdAogewotICAgIHJldHVybiB7Ci0g
ICAgICAgIGNvbXBvbmVudHNbMF0gKyByaHMsCi0gICAgICAgIGNvbXBvbmVudHNbMV0gKyByaHMs
Ci0gICAgICAgIGNvbXBvbmVudHNbMl0gKyByaHMsCi0gICAgICAgIGNvbXBvbmVudHNbM10gKyBy
aHMKLSAgICB9OworICAgIHJldHVybiBtYXAoW3Joc10oVCBjKSB7IHJldHVybiBjICsgcmhzOyB9
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8
VD4gQ29sb3JDb21wb25lbnRzPFQ+OjpvcGVyYXRvci8oVCBkZW5vbWluYXRvcikgY29uc3QKIHsK
LSAgICByZXR1cm4gewotICAgICAgICBjb21wb25lbnRzWzBdIC8gZGVub21pbmF0b3IsCi0gICAg
ICAgIGNvbXBvbmVudHNbMV0gLyBkZW5vbWluYXRvciwKLSAgICAgICAgY29tcG9uZW50c1syXSAv
IGRlbm9taW5hdG9yLAotICAgICAgICBjb21wb25lbnRzWzNdIC8gZGVub21pbmF0b3IKLSAgICB9
OworICAgIHJldHVybiBtYXAoW2Rlbm9taW5hdG9yXShUIGMpIHsgcmV0dXJuIGMgLyBkZW5vbWlu
YXRvcjsgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25zdGV4cHIgQ29sb3JDb21w
b25lbnRzPFQ+IENvbG9yQ29tcG9uZW50czxUPjo6b3BlcmF0b3IqKFQgZmFjdG9yKSBjb25zdAog
ewotICAgIHJldHVybiB7Ci0gICAgICAgIGNvbXBvbmVudHNbMF0gKiBmYWN0b3IsCi0gICAgICAg
IGNvbXBvbmVudHNbMV0gKiBmYWN0b3IsCi0gICAgICAgIGNvbXBvbmVudHNbMl0gKiBmYWN0b3Is
Ci0gICAgICAgIGNvbXBvbmVudHNbM10gKiBmYWN0b3IKLSAgICB9OworICAgIHJldHVybiBtYXAo
W2ZhY3Rvcl0oVCBjKSB7IHJldHVybiBjICogZmFjdG9yOyB9KTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KIGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gQ29sb3JDb21wb25lbnRzPFQ+
OjphYnMoKSBjb25zdAogewotICAgIHJldHVybiB7Ci0gICAgICAgIHN0ZDo6YWJzKGNvbXBvbmVu
dHNbMF0pLAotICAgICAgICBzdGQ6OmFicyhjb21wb25lbnRzWzFdKSwKLSAgICAgICAgc3RkOjph
YnMoY29tcG9uZW50c1syXSksCi0gICAgICAgIHN0ZDo6YWJzKGNvbXBvbmVudHNbM10pCi0gICAg
fTsKKyAgICByZXR1cm4gbWFwKFtdKFQgYykgeyByZXR1cm4gc3RkOjphYnMoYyk7IH0pOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTIyLDIzICsxMjAsMTMgQEAgY29uc3RleHByIFQg
Q29sb3JDb21wb25lbnRzPFQ+OjpnZXQoKSBjbwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNvbnN0
ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gcGVyQ29tcG9uZW50TWF4KGNvbnN0IENvbG9yQ29tcG9u
ZW50czxUPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBiKQogewotICAgIHJldHVybiB7
Ci0gICAgICAgIHN0ZDo6bWF4KGFbMF0sIGJbMF0pLAotICAgICAgICBzdGQ6Om1heChhWzFdLCBi
WzFdKSwKLSAgICAgICAgc3RkOjptYXgoYVsyXSwgYlsyXSksCi0gICAgICAgIHN0ZDo6bWF4KGFb
M10sIGJbM10pCi0gICAgfTsKKyAgICByZXR1cm4gbWFwQ29sb3JDb21wb25lbnRzKFtdKFQgYzEs
IFQgYzIpIHsgcmV0dXJuIHN0ZDo6bWF4KGMxLCBjMik7IH0sIGEsIGIpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBwZXJDb21wb25lbnRN
aW4oY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVudHM8VD4m
IGIpCiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgc3RkOjptaW4oYVswXSwgYlswXSksCi0gICAg
ICAgIHN0ZDo6bWluKGFbMV0sIGJbMV0pLAotICAgICAgICBzdGQ6Om1pbihhWzJdLCBiWzJdKSwK
LSAgICAgICAgc3RkOjptaW4oYVszXSwgYlszXSkKLSAgICB9OworICAgIHJldHVybiBtYXBDb2xv
ckNvbXBvbmVudHMoW10oVCBjMSwgVCBjMikgeyByZXR1cm4gc3RkOjptaW4oYzEsIGMyKTsgfSwg
YSwgYik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHJldmlzaW9u
IDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVy
c2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMywxMiArMTMzLDEyIEBAIHN0YXRpYyBjb25z
dGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gRDY1VG8KIAogLy8gTUFSSzogQ2hyb21hdGljIEFkYXB0
YXRpb24gY29udmVyc2lvbnMuCiAKLVhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4gY29udmVy
dEZyb21ENTBXaGl0ZVBvaW50VG9ENjVXaGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQsIFdoaXRl
UG9pbnQ6OkQ1MD4mIGNvbG9yKQorWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiBDb2xvckNv
bnZlcnNpb248WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiwgWFlaQTxmbG9hdCwgV2hpdGVQ
b2ludDo6RDUwPj46OmNvbnZlcnQoY29uc3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPiYg
Y29sb3IpCiB7CiAgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxw
aGE8WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1Pj4oRDUwVG9ENjVNYXRyaXgudHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLVhZWkE8
ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBXaGl0
ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4mIGNvbG9yKQorWFlaQTxm
bG9hdCwgV2hpdGVQb2ludDo6RDUwPiBDb2xvckNvbnZlcnNpb248WFlaQTxmbG9hdCwgV2hpdGVQ
b2ludDo6RDUwPiwgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1Pj46OmNvbnZlcnQoY29uc3Qg
WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIG1ha2VG
cm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6
RDUwPj4oRDY1VG9ENTBNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNv
bXBvbmVudHMoY29sb3IpKSk7CiB9CkBAIC02NDYsNCArNjQ2LDIwIEBAIFNSR0JBPGZsb2F0PiBD
b2xvckNvbnZlcnNpb248U1JHQkE8ZmxvYXQKICAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JB
PGZsb2F0Pj4oY29udmVydENvbG9yPExpbmVhclNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKIH0KIAor
Ly8gTUFSSzogU1JHQkE8dWludDhfdD4gY29tcG9uZW50IHR5cGUgY29udmVyc2lvbnMuCisKK1NS
R0JBPGZsb2F0PiBDb2xvckNvbnZlcnNpb248U1JHQkE8ZmxvYXQ+LCBTUkdCQTx1aW50OF90Pj46
OmNvbnZlcnQoY29uc3QgU1JHQkE8dWludDhfdD4mIGNvbG9yKQoreworICAgIHJldHVybiBtYWtl
RnJvbUNvbXBvbmVudHM8U1JHQkE8ZmxvYXQ+Pihhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikubWFw
KFtdKHVpbnQ4X3QgdmFsdWUpIC0+IGZsb2F0IHsKKyAgICAgICAgcmV0dXJuIHZhbHVlIC8gMjU1
LjBmOworICAgIH0pKTsKK30KKworU1JHQkE8dWludDhfdD4gQ29sb3JDb252ZXJzaW9uPFNSR0JB
PHVpbnQ4X3Q+LCBTUkdCQTxmbG9hdD4+Ojpjb252ZXJ0KGNvbnN0IFNSR0JBPGZsb2F0PiYgY29s
b3IpCit7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50czxTUkdCQTx1aW50OF90Pj4oYXND
b2xvckNvbXBvbmVudHMoY29sb3IpLm1hcChbXShmbG9hdCB2YWx1ZSkgLT4gdWludDhfdCB7Cisg
ICAgICAgIHJldHVybiBzdGQ6Omxyb3VuZCh2YWx1ZSAqIDI1NS4wZik7CisgICAgfSkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkocmV2aXNpb24gMjcyNDYyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5OSwyNSArMjk5LDM2IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbG9yQ29u
dmVyc2lvbjxIV0JBPGYKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSFdCQTxmbG9hdD4gY29u
dmVydChjb25zdCBTUkdCQTxmbG9hdD4mKTsKIH07CiAKKy8vIFNwZWNpYWwgY2FzZXMgZm9yIFNS
R0JBPHVpbnQ4X3Q+LiBPbmx5IHNSR0Igc3VwcG9ydHMgbm9uLWZsb2F0aW5nIHBvaW50IGNvbXBv
bmVudCB0eXBlcy4KK3RlbXBsYXRlPD4gc3RydWN0IENvbG9yQ29udmVyc2lvbjxTUkdCQTxmbG9h
dD4sIFNSR0JBPHVpbnQ4X3Q+PiB7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNSR0JBPGZs
b2F0PiBjb252ZXJ0KGNvbnN0IFNSR0JBPHVpbnQ4X3Q+Jik7Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBDb2xvckNvbnZlcnNpb248U1JHQkE8dWludDhfdD4sIFNSR0JBPGZsb2F0Pj4geworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTUkdCQTx1aW50OF90PiBjb252ZXJ0KGNvbnN0IFNSR0JB
PGZsb2F0PiYpOworfTsKIAogCi0vLyBDaHJvbWF0aWMgQWRhcHRhdGlvbiBjb252ZXJzaW9ucy4K
LVdFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4gY29udmVydEZyb21E
NTBXaGl0ZVBvaW50VG9ENjVXaGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6
OkQ1MD4mKTsKLVdFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4gY29u
dmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBXaGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQsIFdo
aXRlUG9pbnQ6OkQ2NT4mKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgV2hpdGVQb2ludCBpbnB1
dFdoaXRlUG9pbnQ+IGNvbnN0ZXhwciB0eXBlbmFtZSBUOjpSZWZlcmVuY2VYWVogcGVyZm9ybUNo
b21hdGljQWRhcGF0YXRpb24oY29uc3QgWFlaQTxmbG9hdCwgaW5wdXRXaGl0ZVBvaW50PiYgY29s
b3IpCi17Ci0gICAgY29uc3RleHByIFdoaXRlUG9pbnQgb3V0cHV0V2hpdGVQb2ludCA9IFQ6OlJl
ZmVyZW5jZVhZWjo6d2hpdGVQb2ludDsKKy8vIFhZWkEgQ2hyb21hdGljIEFkYXB0YXRpb24gY29u
dmVyc2lvbnMuCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb2xvckNvbnZlcnNpb248WFlaQTxmbG9hdCwg
V2hpdGVQb2ludDo6RDY1PiwgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPj4geworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENjU+IGNvbnZlcnQo
Y29uc3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPiYpOworfTsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgQ29sb3JDb252ZXJzaW9uPFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4sIFhZWkE8
ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4+IHsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgWFla
QTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPiBjb252ZXJ0KGNvbnN0IFhZWkE8ZmxvYXQsIFdoaXRl
UG9pbnQ6OkQ2NT4mKTsKK307CiAKLSAgICBpZiBjb25zdGV4cHIgKG91dHB1dFdoaXRlUG9pbnQg
PT0gaW5wdXRXaGl0ZVBvaW50KQorCisvLyBJZGVudGl0eSBjb252ZXJzaW9uLgorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2xvclR5cGU+IHN0cnVjdCBDb2xvckNvbnZlcnNpb248Q29sb3JUeXBlLCBD
b2xvclR5cGU+IHsKKyAgICBzdGF0aWMgQ29sb3JUeXBlIGNvbnZlcnQoY29uc3QgQ29sb3JUeXBl
JiBjb2xvcikKKyAgICB7CiAgICAgICAgIHJldHVybiBjb2xvcjsKLSAgICBlbHNlIGlmIGNvbnN0
ZXhwciAob3V0cHV0V2hpdGVQb2ludCA9PSBXaGl0ZVBvaW50OjpENTApCi0gICAgICAgIHJldHVy
biBjb252ZXJ0RnJvbUQ2NVdoaXRlUG9pbnRUb0Q1MFdoaXRlUG9pbnQoY29sb3IpOwotICAgIGVs
c2UgaWYgY29uc3RleHByIChvdXRwdXRXaGl0ZVBvaW50ID09IFdoaXRlUG9pbnQ6OkQ2NSkKLSAg
ICAgICAgcmV0dXJuIGNvbnZlcnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2ludChjb2xv
cik7Ci19CisgICAgfQorfTsKIAotLy8gRmFsbGJhY2sgY29udmVyc2lvbnMuCisvLyBGYWxsYmFj
ayBjb252ZXJzaW9uLgogCiAvLyBBbGwgdHlwZXMgYXJlIHJlcXVpcmVkIHRvIGhhdmUgYSBjb252
ZXJzaW9uIHRvIHRoZWlyIHJlZmVyZW5jZSBYWVogc3BhY2UsIHNvIHRoaXMgaXMgZ3VhcmFudGVl
ZAogLy8gdG8gd29yayBpZiBhbm90aGVyIHNwZWNpYWxpemF0aW9uIGlzIG5vdCBhbHJlYWR5IHBy
b3ZpZGVkLgpAQCAtMzU3LDE1ICszNjgsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgV2hpdGVQ
b2ludCBpbnB1dFdoaQogdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0LCB0eXBlbmFtZSBJbnB1dD4g
c3RydWN0IENvbG9yQ29udmVyc2lvbiB7CiAgICAgc3RhdGljIE91dHB1dCBjb252ZXJ0KGNvbnN0
IElucHV0JiBjb2xvcikKICAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwcihzdGQ6OmlzX3NhbWVf
djxPdXRwdXQsIElucHV0PikKLSAgICAgICAgICAgIHJldHVybiBjb2xvcjsKLSAgICAgICAgZWxz
ZSBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIElucHV0OjpDb21wb25lbnRU
eXBlLCB1aW50OF90PikKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0Q29sb3I8T3V0cHV0Pihj
b252ZXJ0VG88U1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwotICAgICAgICBlbHNlIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19zYW1lX3Y8dHlwZW5hbWUgT3V0cHV0OjpDb21wb25lbnRUeXBlLCB1aW50OF90
PikKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG88U1JHQkE8dWludDhfdD4+KGNvbnZlcnRD
b2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKSk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19zYW1lX3Y8SW5wdXQsIFNSR0JBPHVpbnQ4X3Q+PikKKyAgICAgICAgICAgIHJldHVybiBjb252
ZXJ0Q29sb3I8T3V0cHV0Pihjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb2xvcikpOworICAg
ICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8T3V0cHV0LCBTUkdCQTx1aW50
OF90Pj4pCisgICAgICAgICAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+Pihj
b252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIGF1dG8geHl6MSA9IGNvbnZlcnRDb2xvcjx0eXBlbmFtZSBJbnB1dDo6UmVmZXJlbmNl
WFlaPihjb2xvcik7Ci0gICAgICAgICAgICBhdXRvIHh5ejIgPSBwZXJmb3JtQ2hvbWF0aWNBZGFw
YXRhdGlvbjxPdXRwdXQ+KHh5ejEpOworICAgICAgICAgICAgYXV0byB4eXoyID0gY29udmVydENv
bG9yPHR5cGVuYW1lIE91dHB1dDo6UmVmZXJlbmNlWFlaPih4eXoxKTsKICAgICAgICAgICAgIHJl
dHVybiBjb252ZXJ0Q29sb3I8T3V0cHV0Pih4eXoyKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMu
aAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCwxMCArNTAsNiBAQCB1aW50
OF90IGNvbnZlcnRQcmVzY2FsZWRTUkdCQUZsb2F0VG9TUkdCCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBUIGNvbnZlcnRCeXRlQWxwaGFUbyh1aW50OF90KTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQg
Y29udmVydEZsb2F0QWxwaGFUbyhmbG9hdCk7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IFQgY29udmVydFRvKGNvbnN0IFUmKTsKLXRlbXBsYXRlPD4gU1JHQkE8ZmxvYXQ+IGNv
bnZlcnRUbyhjb25zdCBTUkdCQTx1aW50OF90PiYpOwotdGVtcGxhdGU8PiBTUkdCQTx1aW50OF90
PiBjb252ZXJ0VG8oY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIENv
bG9yVHlwZSwgdHlwZW5hbWUgRnVuY3Rvcj4gQ29sb3JUeXBlIGNvbG9yQnlNb2RpZmluZ0VhY2hO
b25BbHBoYUNvbXBvbmVudChjb25zdCBDb2xvclR5cGUmLCBGdW5jdG9yJiYpOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGUgY29sb3JXaXRoT3ZlcnJp
ZGVuQWxwaGEoY29uc3QgQ29sb3JUeXBlJiwgdWludDhfdCBvdmVycmlkZUFscGhhKTsKQEAgLTYy
LDEzICs1OCwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IENvbG9yVHlwZSBjCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGUgaW52ZXJ0ZWRD
b2xvcldpdGhPdmVycmlkZW5BbHBoYShjb25zdCBDb2xvclR5cGUmLCB1aW50OF90IG92ZXJyaWRl
QWxwaGEpOwogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlPiBDb2xvclR5cGUgaW52ZXJ0ZWRD
b2xvcldpdGhPdmVycmlkZW5BbHBoYShjb25zdCBDb2xvclR5cGUmLCBmbG9hdCBvdmVycmlkZUFs
cGhhKTsKIAordGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZl90PHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIENvbG9yVHlwZTo6TW9kZWwsIFJHQk1vZGVs
PHR5cGVuYW1lIENvbG9yVHlwZTo6Q29tcG9uZW50VHlwZT4+PiogPSBudWxscHRyPiBjb25zdGV4
cHIgYm9vbCBpc0JsYWNrKGNvbnN0IENvbG9yVHlwZSYpOwordGVtcGxhdGU8V2hpdGVQb2ludCBX
PiBjb25zdGV4cHIgYm9vbCBpc0JsYWNrKGNvbnN0IFhZWkE8ZmxvYXQsIFc+Jik7CiBjb25zdGV4
cHIgYm9vbCBpc0JsYWNrKGNvbnN0IExhYjxmbG9hdD4mKTsKLXRlbXBsYXRlPHR5cGVuYW1lIENv
bG9yVHlwZSwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWVfdjx0eXBlbmFt
ZSBDb2xvclR5cGU6Ok1vZGVsLCBSR0JNb2RlbDx0eXBlbmFtZSBDb2xvclR5cGU6OkNvbXBvbmVu
dFR5cGU+Pj4qID0gbnVsbHB0cj4KLWNvbnN0ZXhwciBib29sIGlzQmxhY2soY29uc3QgQ29sb3JU
eXBlJik7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBDb2xvclR5cGU6Ok1vZGVsLCBSR0JNb2Rl
bDx0eXBlbmFtZSBDb2xvclR5cGU6OkNvbXBvbmVudFR5cGU+Pj4qID0gbnVsbHB0cj4gY29uc3Rl
eHByIGJvb2wgaXNXaGl0ZShjb25zdCBDb2xvclR5cGUmKTsKK3RlbXBsYXRlPFdoaXRlUG9pbnQg
Vz4gY29uc3RleHByIGJvb2wgaXNXaGl0ZShjb25zdCBYWVpBPGZsb2F0LCBXPiYpOwogY29uc3Rl
eHByIGJvb2wgaXNXaGl0ZShjb25zdCBMYWI8ZmxvYXQ+Jik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBD
b2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lX3Y8dHlwZW5h
bWUgQ29sb3JUeXBlOjpNb2RlbCwgUkdCTW9kZWw8dHlwZW5hbWUgQ29sb3JUeXBlOjpDb21wb25l
bnRUeXBlPj4+KiA9IG51bGxwdHI+Ci1jb25zdGV4cHIgYm9vbCBpc1doaXRlKGNvbnN0IENvbG9y
VHlwZSYpOwogCiBjb25zdGV4cHIgdWludDE2X3QgZmFzdE11bHRpcGx5QnkyNTUodWludDE2X3Qp
OwogY29uc3RleHByIHVpbnQxNl90IGZhc3REaXZpZGVCeTI1NSh1aW50MTZfdCk7CkBAIC05OSwy
NiArOTUsNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBmbG9hdCBjb252ZXJ0RmxvYXRBbHBoCiAgICAg
cmV0dXJuIGNsYW1wZWRBbHBoYSh2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIFNSR0JB
PGZsb2F0PiBjb252ZXJ0VG8oY29uc3QgU1JHQkE8dWludDhfdD4mIGNvbG9yKQotewotICAgIGF1
dG8gY29udmVydFRvU1JHQkFGbG9hdCA9IFtdKHVpbnQ4X3QgdmFsdWUpIC0+IGZsb2F0IHsKLSAg
ICAgICAgcmV0dXJuIHZhbHVlIC8gMjU1LjBmOwotICAgIH07Ci0KLSAgICBhdXRvIGNvbXBvbmVu
dHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvcik7Ci0gICAgcmV0dXJuIHsgY29udmVydFRvU1JH
QkFGbG9hdChjb21wb25lbnRzWzBdKSwgY29udmVydFRvU1JHQkFGbG9hdChjb21wb25lbnRzWzFd
KSwgY29udmVydFRvU1JHQkFGbG9hdChjb21wb25lbnRzWzJdKSwgY29udmVydFRvU1JHQkFGbG9h
dChjb21wb25lbnRzWzNdKSB9OwotfQotCi10ZW1wbGF0ZTw+IGlubGluZSBTUkdCQTx1aW50OF90
PiBjb252ZXJ0VG8oY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICBhdXRvIGNvbnZl
cnRUb1NSR0JBQnl0ZSA9IFtdKGZsb2F0IHZhbHVlKSAtPiB1aW50OF90IHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6Y2xhbXAoc3RkOjpscm91bmQodmFsdWUgKiAyNTUuMGYpLCAwbCwgMjU1bCk7Ci0g
ICAgfTsKLQotICAgIGF1dG8gY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKTsK
LSAgICByZXR1cm4geyBjb252ZXJ0VG9TUkdCQUJ5dGUoY29tcG9uZW50c1swXSksIGNvbnZlcnRU
b1NSR0JBQnl0ZShjb21wb25lbnRzWzFdKSwgY29udmVydFRvU1JHQkFCeXRlKGNvbXBvbmVudHNb
Ml0pLCBjb252ZXJ0VG9TUkdCQUJ5dGUoY29tcG9uZW50c1szXSkgfTsKLX0KLQogdGVtcGxhdGU8
dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBGdW5jdG9yPiBDb2xvclR5cGUgY29sb3JCeU1v
ZGlmaW5nRWFjaE5vbkFscGhhQ29tcG9uZW50KGNvbnN0IENvbG9yVHlwZSYgY29sb3IsIEZ1bmN0
b3ImJiBmdW5jdG9yKQogewogICAgIGF1dG8gY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRz
KGNvbG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhf
dD4+IG1ha2VTaW1wCiAgICAgICAgIGNvbXBvbmVudEFycmF5W2ldID0gY29tcG9uZW50OwogICAg
IH0KIAotICAgIHJldHVybiBjb252ZXJ0VG88U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgY29tcG9u
ZW50QXJyYXlbMV0sIGNvbXBvbmVudEFycmF5WzJdLCBjb21wb25lbnRBcnJheVszXSwgY29tcG9u
ZW50QXJyYXlbMF0gfSk7CisgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4o
U1JHQkEgeyBjb21wb25lbnRBcnJheVsxXSwgY29tcG9uZW50QXJyYXlbMl0sIGNvbXBvbmVudEFy
cmF5WzNdLCBjb21wb25lbnRBcnJheVswXSB9KTsKIH0KIAogUmVmPEluYmFuZEdlbmVyaWNDdWU+
IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmli
dXRlZFN0cmluZ1JlZiBhdHRyaWJ1dGVkU3RyaW5nKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlv
bnMuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcs
NyArMTE3LDcgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjp0cmFuc2Zvcm1Db2xvcihDbwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbG9yID0gY29udmVydFRvPFNS
R0JBPHVpbnQ4X3Q+PihzUkdCQUNvbG9yKTsKKyAgICBjb2xvciA9IGNvbnZlcnRDb2xvcjxTUkdC
QTx1aW50OF90Pj4oc1JHQkFDb2xvcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEzNiw3
ICsxMzYsNyBAQCBib29sIEZpbHRlck9wZXJhdGlvbnM6OmludmVyc2VUcmFuc2Zvcm1DCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29sb3IgPSBjb252ZXJ0VG88U1JH
QkE8dWludDhfdD4+KHNSR0JBQ29sb3IpOworICAgIGNvbG9yID0gY29udmVydENvbG9yPFNSR0JB
PHVpbnQ4X3Q+PihzUkdCQUNvbG9yKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0NvbG9yR3RrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3BwCShy
ZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
Q29sb3JHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIENvbG9yOjpDb2xvcihjb25zdCBHZGtSR0JBJiBjb2xvcikKLSAgICA6IENv
bG9yKGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBzdGF0aWNfY2FzdDxmbG9hdD4o
Y29sb3IucmVkKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLmdyZWVuKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGNvbG9yLmJsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3IuYWxwaGEpIH0pKQor
ICAgIDogQ29sb3IoY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IHN0YXRpY19j
YXN0PGZsb2F0Pihjb2xvci5yZWQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3IuZ3JlZW4pLCBz
dGF0aWNfY2FzdDxmbG9hdD4oY29sb3IuYmx1ZSksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci5h
bHBoYSkgfSkpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db2xvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29sb3JNYWMubW0JKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
OTgsNyArOTgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IG1ha2VTaW1wCiAg
ICAgW3JnYkNvbG9yIGdldFJlZDomcmVkQ29tcG9uZW50IGdyZWVuOiZncmVlbkNvbXBvbmVudCBi
bHVlOiZibHVlQ29tcG9uZW50IGFscGhhOiZhbHBoYV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwogCi0gICAgcmV0dXJuIGNvbnZlcnRUbzxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBz
dGF0aWNfY2FzdDxmbG9hdD4ocmVkQ29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGdyZWVu
Q29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJsdWVDb21wb25lbnQpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oYWxwaGEpIH0pOworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhf
dD4+KFNSR0JBIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlZENvbXBvbmVudCksIHN0YXRpY19jYXN0
PGZsb2F0PihncmVlbkNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihibHVlQ29tcG9uZW50
KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFscGhhKSB9KTsKIH0KIAogQ29sb3IgY29sb3JGcm9tTlND
b2xvcihOU0NvbG9yICpjb2xvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Db2xvckRpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI3MjQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Db2xvckRpcmVjdDJELmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw3ICszNCw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENvbG9yOjpDb2xvcihEMkQxX0NPTE9SX0YgY29s
b3IpCi0gICAgOiBDb2xvcihjb252ZXJ0VG88U1JHQkE8dWludDhfdD4+KFNSR0JBIHsgY29sb3Iu
ciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSB9KSkKKyAgICA6IENvbG9yKGNvbnZlcnRDb2xv
cjxTUkdCQTx1aW50OF90Pj4oU1JHQkEgeyBjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iLCBjb2xv
ci5hIH0pKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5jcHAJKHJl
dmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Q
bGF0Zm9ybUNvbnRleHREaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMyLDcgKzEzMiw3IEBA
IHZvaWQgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OnNldEFjdGl2ZUwKIAogQ09NUHRyPElEMkQx
U29saWRDb2xvckJydXNoPiBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6YnJ1c2hXaXRoQ29sb3Io
Y29uc3QgRDJEMV9DT0xPUl9GJiBjb2xvcikKIHsKLSAgICBhdXRvIGNvbG9yS2V5ID0gY29udmVy
dFRvPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNv
bG9yLmEgfSk7CisgICAgYXV0byBjb2xvcktleSA9IGNvbG9yQ29udmVydDxTUkdCQTx1aW50OF90
Pj4oU1JHQkEgeyBjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iLCBjb2xvci5hIH0pOwogCiAgICAg
aWYgKCFjb2xvcktleSkgewogICAgICAgICBpZiAoIW1femVyb0JydXNoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0NvbG9ySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9Db2xvcklPUy5tbQkocmV2aXNpb24gMjcyNDYyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0NvbG9ySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw3ICs0Nyw3IEBAIENvbG9yIGNvbG9yRnJvbVVJQ29sb3IoVUlDb2xvciAqY29sb3IpCiAKICAg
ICBbY29sb3IgZ2V0UmVkOiZyZWRDb21wb25lbnQgZ3JlZW46JmdyZWVuQ29tcG9uZW50IGJsdWU6
JmJsdWVDb21wb25lbnQgYWxwaGE6JmFscGhhXTsKIAotICAgIHJldHVybiBjb252ZXJ0VG88U1JH
QkE8dWludDhfdD4+KFNSR0JBIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlZENvbXBvbmVudCksIHN0
YXRpY19jYXN0PGZsb2F0PihncmVlbkNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihibHVl
Q29tcG9uZW50KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFscGhhKSB9KTsKKyAgICByZXR1cm4gY29u
dmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihTUkdCQSB7IHN0YXRpY19jYXN0PGZsb2F0PihyZWRD
b21wb25lbnQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oZ3JlZW5Db21wb25lbnQpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oYmx1ZUNvbXBvbmVudCksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBoYSkgfSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzI0NjMp
CisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDIxLTAyLTA3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgbW9yZSBzcGVjaWFsIGNhc2VzIGZyb20gY29sb3IgY29udmVyc2lvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRDb2xvci5jcHA6CisgICAgICAgICh3ZWJraXRDb2xvclRvV2ViQ29yZUNvbG9y
KToKKyAgICAgICAgUmVwbGFjZSBjb252ZXJ0VG88PiBjb21wb25lbnQgdHlwZSBjb252ZXJzaW9u
IHRvIGdlbmVyYWwgY29udmVydENvbG9yPD4uCisKIDIwMjEtMDItMDUgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNzIzMzcpOiBjcmFzaCB1
bmRlciBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzZXRJbmFjdGl2ZSgpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAkocmV2aXNp
b24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgR19ERUZJTkVfQk9YRURfVFlQ
RShXZWJLaXRDb2xvciwgd2Via2l0XwogCiBjb25zdCBXZWJDb3JlOjpDb2xvciB3ZWJraXRDb2xv
clRvV2ViQ29yZUNvbG9yKFdlYktpdENvbG9yKiBjb2xvcikKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6Y29udmVydFRvPFdlYkNvcmU6OlNSR0JBPHVpbnQ4X3Q+PihXZWJDb3JlOjpTUkdCQSB7IHN0
YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+cmVkKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5n
cmVlbiksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+Ymx1ZSksIHN0YXRpY19jYXN0PGZsb2F0
Pihjb2xvci0+YWxwaGEpIH0pOworICAgIHJldHVybiBXZWJDb3JlOjpjb252ZXJ0Q29sb3I8V2Vi
Q29yZTo6U1JHQkE8dWludDhfdD4+KFdlYkNvcmU6OlNSR0JBIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGNvbG9yLT5yZWQpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPmdyZWVuKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGNvbG9yLT5ibHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5hbHBoYSkg
fSk7CiB9CiAKIHZvaWQgd2Via2l0Q29sb3JGaWxsRnJvbVdlYkNvcmVDb2xvcihjb25zdCBXZWJD
b3JlOjpDb2xvciYgd2ViQ29yZUNvbG9yLCBXZWJLaXRDb2xvciogY29sb3IpCkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzI0
NjIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAyMS0wMi0wNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIG1vcmUgc3BlY2lhbCBjYXNlcyBmcm9tIGNvbG9yIGNvbnZlcnNpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTUxOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgUmVwbGFjZSBjb252ZXJ0VG88PiBjb21wb25lbnQgdHlwZSBjb252
ZXJzaW9uIHRvIGdlbmVyYWwgY29udmVydENvbG9yPD4uCisKIDIwMjEtMDItMDUgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gRGlzYWJsZSBN
ZWRpYVNlc3Npb25UZXN0IEFQSSB0ZXN0cwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAJKHJldmlzaW9u
IDI3MjQ2MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENv
bG9yVGVzdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgVEVTVChFeHRl
bmRlZENvbG9yLCBFcXVhbGl0eSkKICAgICB9CiAKICAgICBhdXRvIGNvbXBvbmVudEJ5dGVzID0g
U1JHQkE8dWludDhfdD4geyAyNTUsIDEyOCwgNjMsIDEyNyB9OwotICAgIENvbG9yIHJnYjEgeyBj
b252ZXJ0VG88U1JHQkE8ZmxvYXQ+Pihjb21wb25lbnRCeXRlcykgfTsKKyAgICBDb2xvciByZ2Ix
IHsgY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29tcG9uZW50Qnl0ZXMpIH07CiAgICAgQ29s
b3IgcmdiMiB7IGNvbXBvbmVudEJ5dGVzIH07CiAgICAgRVhQRUNUX05FKHJnYjEsIHJnYjIpOwog
ICAgIEVYUEVDVF9ORShyZ2IyLCByZ2IxKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBURVNUKEV4dGVu
ZGVkQ29sb3IsIEhhc2gpCiAgICAgfQogCiAgICAgYXV0byBjb21wb25lbnRCeXRlcyA9IFNSR0JB
PHVpbnQ4X3Q+IHsgMjU1LCAxMjgsIDYzLCAxMjcgfTsKLSAgICBDb2xvciByZ2IxIHsgY29udmVy
dFRvPFNSR0JBPGZsb2F0Pj4oY29tcG9uZW50Qnl0ZXMpIH07CisgICAgQ29sb3IgcmdiMSB7IGNv
bnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbXBvbmVudEJ5dGVzKSB9OwogICAgIENvbG9yIHJn
YjIgeyBjb21wb25lbnRCeXRlcyB9OwogICAgIEVYUEVDVF9ORShyZ2IxLmhhc2goKSwgcmdiMi5o
YXNoKCkpOwogfQpJbmRleDogVG9vbHMvbGxkYi9sbGRiX3dlYmtpdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9sbGRiL2xsZGJfd2Via2l0LnB5CShyZXZpc2lvbiAyNzI0NjIpCisrKyBUb29scy9s
bGRiL2xsZGJfd2Via2l0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00NjcsMTIgKzQ2NywyMiBAQCBj
bGFzcyBXZWJDb3JlQ29sb3JQcm92aWRlcjoKICAgICBkZWYgX3RvX3N0cmluZ19leHRlbmRlZChz
ZWxmKToKICAgICAgICAgZXh0ZW5kZWRfY29sb3IgPSBzZWxmLnZhbG9iai5HZXRDaGlsZE1lbWJl
cldpdGhOYW1lKCdtX2NvbG9yRGF0YScpLkdldENoaWxkTWVtYmVyV2l0aE5hbWUoJ2V4dGVuZGVk
Q29sb3InKS5EZXJlZmVyZW5jZSgpCiAgICAgICAgIHByb2ZpbGUgPSBleHRlbmRlZF9jb2xvci5H
ZXRDaGlsZE1lbWJlcldpdGhOYW1lKCdtX2NvbG9yU3BhY2UnKS5HZXRWYWx1ZSgpCi0gICAgICAg
IGlmIHByb2ZpbGUgPT0gJ1NSR0InOgotICAgICAgICAgICAgcHJvZmlsZSA9ICdzcmdiJwotICAg
ICAgICBlbGlmIHByb2ZpbGUgPT0gJ0xpbmVhclJHQic6Ci0gICAgICAgICAgICBwcm9maWxlID0g
J2xpbmVhci1yZ2InCisgICAgICAgIGlmIHByb2ZpbGUgPT0gJ0E5OFJHQic6CisgICAgICAgICAg
ICBwcm9maWxlID0gJ2E5OC1yZ2InCiAgICAgICAgIGVsaWYgcHJvZmlsZSA9PSAnRGlzcGxheVAz
JzoKICAgICAgICAgICAgIHByb2ZpbGUgPSAnZGlzcGxheS1wMycKKyAgICAgICAgZWxpZiBwcm9m
aWxlID09ICdMYWInOgorICAgICAgICAgICAgcHJvZmlsZSA9ICdsYWInCisgICAgICAgIGVsaWYg
cHJvZmlsZSA9PSAnTGluZWFyU1JHQic6CisgICAgICAgICAgICBwcm9maWxlID0gJ2xpbmVhci1z
cmdiJworICAgICAgICBlbGlmIHByb2ZpbGUgPT0gJ1Byb1Bob3RvUkdCJzoKKyAgICAgICAgICAg
IHByb2ZpbGUgPSAncHJvcGhvdG8tcmdiJworICAgICAgICBlbGlmIHByb2ZpbGUgPT0gJ1JlYzIw
MjAnOgorICAgICAgICAgICAgcHJvZmlsZSA9ICdyZWMyMDIwJworICAgICAgICBlbGlmIHByb2Zp
bGUgPT0gJ1NSR0InOgorICAgICAgICAgICAgcHJvZmlsZSA9ICdzcmdiJworICAgICAgICBlbGlm
IHByb2ZpbGUgPT0gJ1hZWl9ENTAnOgorICAgICAgICAgICAgcHJvZmlsZSA9ICd4eXotZDUwJwog
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgcHJvZmlsZSA9ICd1bmtub3duJwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>