<?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>212872</bug_id>
          
          <creation_ts>2020-06-06 18:34:20 -0700</creation_ts>
          <short_desc>Extended Color: Replace uses of differenceSquared() with luminance based computations</short_desc>
          <delta_ts>2020-06-08 11:39:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1660020</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-06 18:34:20 -0700</bug_when>
    <thetext>[Color] Replace uses of differenceSquared() with luminance based computations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660021</commentid>
    <comment_count>1</comment_count>
      <attachid>401282</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-06 18:35:14 -0700</bug_when>
    <thetext>Created attachment 401282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660071</commentid>
    <comment_count>2</comment_count>
      <attachid>401294</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-07 07:54:15 -0700</bug_when>
    <thetext>Created attachment 401294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660094</commentid>
    <comment_count>3</comment_count>
      <attachid>401301</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-07 10:18:46 -0700</bug_when>
    <thetext>Created attachment 401301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660095</commentid>
    <comment_count>4</comment_count>
      <attachid>401302</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-07 11:00:04 -0700</bug_when>
    <thetext>Created attachment 401302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660101</commentid>
    <comment_count>5</comment_count>
      <attachid>401305</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-07 13:21:01 -0700</bug_when>
    <thetext>Created attachment 401305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660117</commentid>
    <comment_count>6</comment_count>
      <attachid>401307</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-07 17:54:32 -0700</bug_when>
    <thetext>Created attachment 401307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660274</commentid>
    <comment_count>7</comment_count>
      <attachid>401307</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-08 11:23:24 -0700</bug_when>
    <thetext>Comment on attachment 401307
Patch

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

&gt; Source/WebCore/platform/graphics/Color.h:139
&gt; +    WEBCORE_EXPORT Color lighten() const;
&gt; +    WEBCORE_EXPORT Color darken() const;

A Cocoa-style name would be lightened/darkened or lightened/darkenedColor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660281</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-08 11:38:37 -0700</bug_when>
    <thetext>Committed r262729: &lt;https://trac.webkit.org/changeset/262729&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401307.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660283</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-08 11:39:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/64128197&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401282</attachid>
            <date>2020-06-06 18:35:14 -0700</date>
            <delta_ts>2020-06-07 07:54:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212872-20200606183514.patch</filename>
            <type>text/plain</type>
            <size>10696</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA2LTA2ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29sb3JdIFJlcGxhY2UgdXNlcyBv
ZiBkaWZmZXJlbmNlU3F1YXJlZCgpIHdpdGggbHVtaW5hbmNlIGJhc2VkIGNvbXB1dGF0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyODcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OmxpZ2h0ZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmRhcmtlbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bHVtaW5hbmNlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmRpZmZlcmVuY2VTcXVhcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yOjpsaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xv
cjo6ZGFyayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpsdW1pbmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6c1JHQlRvTGlu
ZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpj
YWxjdWxhdGVCb3JkZXJTdHlsZUNvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmRpc2FibGVkVGV4dENvbG9y
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKToKKwogMjAy
MC0wNi0wNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNd
IEFkZCBzdXBwb3J0IGZvciB3aWR0aDogbWluL21heC1jb250ZW50CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNjI2NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDIyICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdGV4cHIg
U2ltcGxlQ29sb3IgbGlnaHRlbmVkQmxhY2sgeyAweEZGNTQ1NDU0IH07CiBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGRhcmtlbmVkV2hpdGUgeyAweEZGQUJBQkFCIH07CiAKLWludCBkaWZm
ZXJlbmNlU3F1YXJlZChjb25zdCBDb2xvciYgYzEsIGNvbnN0IENvbG9yJiBjMikKLXsKLSAgICAv
LyBGSVhNRTogRXh0ZW5kZWRDb2xvciAtIG5lZWRzIHRvIGhhbmRsZSBjb2xvciBzcGFjZXMuCi0g
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHJldHVybiBhIGZsb2F0aW5nIHBvaW50
IG51bWJlciwgYnV0IG1hbnkgb2YgdGhlIGNhbGwKLSAgICAvLyBzaXRlcyBoYXZlIHBpY2tlZCBj
b21wYXJpc29uIHZhbHVlcyBiYXNlZCBvbiBmZWVsLiBXZSdkIG5lZWQgdG8gYnJlYWsgb3V0Ci0g
ICAgLy8gb3VyIGxvZ2FyaXRobSB0YWJsZXMgdG8gY2hhbmdlIHRoZW0gOikKLQotICAgIGF1dG8g
W2MxUmVkLCBjMUJsdWUsIGMxR3JlZW4sIGMxQWxwaGFdID0gYzEudG9TUkdCQVNpbXBsZUNvbG9y
TG9zc3koKTsKLSAgICBhdXRvIFtjMlJlZCwgYzJCbHVlLCBjMkdyZWVuLCBjMkFscGhhXSA9IGMy
LnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCk7Ci0KLSAgICBpbnQgZFIgPSBjMVJlZCAtIGMyUmVk
OwotICAgIGludCBkRyA9IGMxR3JlZW4gLSBjMkdyZWVuOwotICAgIGludCBkQiA9IGMxQmx1ZSAt
IGMyQmx1ZTsKLSAgICByZXR1cm4gZFIgKiBkUiArIGRHICogZEcgKyBkQiAqIGRCOwotfQotCiBD
b2xvcjo6Q29sb3IoY29uc3QgQ29sb3ImIG90aGVyKQogICAgIDogbV9jb2xvckRhdGEob3RoZXIu
bV9jb2xvckRhdGEpCiB7CkBAIC0xMTYsNyArMTAwLDcgQEAgU3RyaW5nIENvbG9yOjpuYW1lRm9y
UmVuZGVyVHJlZUFzVGV4dCgpIAogICAgIHJldHVybiBhc1NpbXBsZSgpLnNlcmlhbGl6YXRpb25G
b3JSZW5kZXJUcmVlQXNUZXh0KCk7CiB9CiAKLUNvbG9yIENvbG9yOjpsaWdodCgpIGNvbnN0CitD
b2xvciBDb2xvcjo6bGlnaHRlbigpIGNvbnN0CiB7CiAgICAgLy8gSGFyZGNvZGUgdGhpcyBjb21t
b24gY2FzZSBmb3Igc3BlZWQuCiAgICAgaWYgKCFpc0V4dGVuZGVkKCkgJiYgYXNTaW1wbGUoKSA9
PSBibGFjaykKQEAgLTE0MSw3ICsxMjUsNyBAQCBDb2xvciBDb2xvcjo6bGlnaHQoKSBjb25zdAog
ICAgICk7CiB9CiAKLUNvbG9yIENvbG9yOjpkYXJrKCkgY29uc3QKK0NvbG9yIENvbG9yOjpkYXJr
ZW4oKSBjb25zdAogewogICAgIC8vIEhhcmRjb2RlIHRoaXMgY29tbW9uIGNhc2UgZm9yIHNwZWVk
LgogICAgIGlmICghaXNFeHRlbmRlZCgpICYmIGFzU2ltcGxlKCkgPT0gd2hpdGUpCkBAIC0xNzYs
NiArMTYwLDEyIEBAIGZsb2F0IENvbG9yOjpsaWdodG5lc3MoKSBjb25zdAogICAgIHJldHVybiBX
ZWJDb3JlOjpsaWdodG5lc3ModG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKIH0KIAorZmxvYXQg
Q29sb3I6Omx1bWluYW5jZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFRoaXMgY2FuIHByb2Jh
Ymx5IGF2b2lkIHRvIHNSR0IgYnkgaGF2aW5nIHBlci1jb2xvcnNwYWNlIGFsZ29yaXRobXMgZm9y
IGx1bWluYW5jZSAoZS5nLiBjb252ZXJ0VG9YWVooYykueUNvbXBvbmVudCgpKS4KKyAgICByZXR1
cm4gV2ViQ29yZTo6bHVtaW5hbmNlKHRvU1JHQkFDb21wb25lbnRzTG9zc3koKSk7Cit9CisKIENv
bG9yIENvbG9yOjpibGVuZChjb25zdCBDb2xvciYgc291cmNlKSBjb25zdAogewogICAgIGlmICgh
aXNWaXNpYmxlKCkgfHwgc291cmNlLmlzT3BhcXVlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2MjY1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSwxMCAr
MTM1LDEzIEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIHdpbGwgY29udmVydCBub24tc1JHQiBjb2xv
cnNwYWNlIGNvbG9ycyBpbnRvIHNSR0IuCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3JDb21wb25l
bnRzPGZsb2F0PiB0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkgY29uc3Q7CiAKLSAgICBDb2xvciBs
aWdodCgpIGNvbnN0OwotICAgIENvbG9yIGRhcmsoKSBjb25zdDsKKyAgICBDb2xvciBsaWdodGVu
KCkgY29uc3Q7CisgICAgQ29sb3IgZGFya2VuKCkgY29uc3Q7CiAKLSAgICBib29sIGlzRGFyaygp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGx1bWluYW5jZSgpIGNvbnN0OworCisg
ICAgLy8gRklYTUU6IFJlcGxhY2UgcmVtYWluaW5nIHVzZXMgd2l0aCBsdW1pbmFuY2UuCisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RhcmsoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBm
bG9hdCBsaWdodG5lc3MoKSBjb25zdDsKIAogICAgIC8vIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRp
b24gb2YgUG9ydGVyLUR1ZmYncyAic291cmNlLW92ZXIiIGVxdWF0aW9uCkBAIC0yMDEsNyArMjA0
LDYgQEAgcHVibGljOgogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3ImIGEs
IGNvbnN0IENvbG9yJiBiKTsKICAgICBmcmllbmQgYm9vbCBlcXVhbElnbm9yaW5nU2VtYW50aWND
b2xvcihjb25zdCBDb2xvciYgYSwgY29uc3QgQ29sb3ImIGIpOwogICAgIGZyaWVuZCBib29sIGV4
dGVuZGVkQ29sb3JzRXF1YWwoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwotICAgIGZyaWVu
ZCBpbnQgZGlmZmVyZW5jZVNxdWFyZWQoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwogCiAg
ICAgc3RhdGljIGJvb2wgaXNCbGFja0NvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgc3RhdGljIGJv
b2wgaXNXaGl0ZUNvbG9yKGNvbnN0IENvbG9yJik7CkBAIC0yNDQsOCArMjQ2LDYgQEAgYm9vbCBl
eHRlbmRlZENvbG9yc0VxdWFsKGNvbnN0IENvbG9yJiwgYwogQ29sb3IgYmxlbmQoY29uc3QgQ29s
b3ImIGZyb20sIGNvbnN0IENvbG9yJiB0bywgZG91YmxlIHByb2dyZXNzKTsKIENvbG9yIGJsZW5k
V2l0aG91dFByZW11bHRpcGx5KGNvbnN0IENvbG9yJiBmcm9tLCBjb25zdCBDb2xvciYgdG8sIGRv
dWJsZSBwcm9ncmVzcyk7CiAKLWludCBkaWZmZXJlbmNlU3F1YXJlZChjb25zdCBDb2xvciYsIGNv
bnN0IENvbG9yJik7Ci0KICNpZiBVU0UoQ0cpCiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmIGNh
Y2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAkocmV2aXNpb24g
MjYyNjU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsMjMgKzE0NywxNCBAQCBmbG9hdCBsaWdodG5l
c3MoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsCiAgICAgcmV0dXJuIDAuNWYgKiAobWF4ICsgbWlu
KTsKIH0KIAotLy8gVGhpcyBpcyBzaW1pbGFyIHRvIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50
IGJ1dCBmb3Igc29tZSByZWFzb24KLS8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1X
Q0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmCi0vLyBkb2Vzbid0IHVzZSB0aGUg
c3RhbmRhcmQgc1JHQiAtPiBsaW5lYXJSR0IgdGhyZXNob2xkIG9mIDAuMDQwNDUuCi1zdGF0aWMg
ZmxvYXQgc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2UoZmxvYXQgYykKLXsK
LSAgICBpZiAoYyA8PSAwLjAzOTI4ZikKLSAgICAgICAgcmV0dXJuIGMgLyAxMi45MmY7Ci0KLSAg
ICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3RkOjpwb3coKGMgKyAwLjA1NWYpIC8gMS4wNTVmLCAy
LjRmKSwgMCwgMSk7Ci19Ci0KIGZsb2F0IGx1bWluYW5jZShjb25zdCBDb2xvckNvbXBvbmVudHM8
ZmxvYXQ+JiBzUkdCQ29tcG9uZW50cykKIHsKLSAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3
dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRl
ZgotICAgIHJldHVybiAwLjIxMjZmICogc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JMdW1p
bmFuY2Uoc1JHQkNvbXBvbmVudHNbMF0pCi0gICAgICAgICsgMC43MTUyZiAqIHNSR0JUb0xpbmVh
ckNvbG9yQ29tcG9uZW50Rm9yTHVtaW5hbmNlKHNSR0JDb21wb25lbnRzWzFdKQotICAgICAgICAr
IDAuMDcyMmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShzUkdCQ29t
cG9uZW50c1syXSk7CisgICAgLy8gTk9URTogVGhpcyBpcyB0aGUgZXF1aXZpbGVudCBvZiBgbGlu
ZWFyU1JHQlRvWFlaKHJnYlRvTGluZWFyQ29tcG9uZW50cyhzUkdCQ29tcG9uZW50cykpWzFdYAor
ICAgIC8vIEZJTVhFOiBJZiB3ZSBjYW4gZ2VuZXJhbGl6ZSBDb2xvck1hdHJpeCBhIGJpdCBtb3Jl
LCBpdCBtaWdodCBiZSBuaWNlIHRvIHdyaXRlIHRoaXMgYXM6CisgICAgLy8gICAgICBhdXRvIGxp
bmVhclNSR0JDb21wb25lbnRzID0gcmdiVG9MaW5lYXJDb21wb25lbnRzKHNSR0JDb21wb25lbnRz
KTsKKyAgICAvLyAgICAgIHJldHVybiBsaW5lYXJTUkdCQ29tcG9uZW50cyAqIGxpbmVhclNSR0JU
b1hZWk1hdHJpeC5yb3coMSk7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSByZ2JUb0xpbmVhckNv
bXBvbmVudHMoc1JHQkNvbXBvbmVudHMpOworICAgIHJldHVybiAwLjIxMjZmICogciArIDAuNzE1
MmYgKiBnICsgMC4wNzIyZiAqIGI7CiB9CiAKIGZsb2F0IGNvbnRyYXN0UmF0aW8oY29uc3QgQ29s
b3JDb21wb25lbnRzPGZsb2F0PiYgY29tcG9uZW50c0EsIGNvbnN0IENvbG9yQ29tcG9uZW50czxm
bG9hdD4mIGNvbXBvbmVudHNCKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAJKHJldmlzaW9uIDI2MjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODE0LDExICsxODE0LDEzIEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjpjYWxjdWxhdGVCb3JkZXJTdHlsZUMKIAogICAgIC8vIEhlcmUg
d2Ugd2lsbCBkYXJrZW4gdGhlIGJvcmRlciBkZWNvcmF0aW9uIGNvbG9yIHdoZW4gbmVlZGVkLiBU
aGlzIHdpbGwgeWllbGQgYSBzaW1pbGFyIGJlaGF2aW9yIGFzIGluIEZGLgogICAgIGlmIChvcGVy
YXRpb24gPT0gRGFya2VuKSB7Ci0gICAgICAgIGlmIChkaWZmZXJlbmNlU3F1YXJlZChjb2xvciwg
Q29sb3I6OmJsYWNrKSA+IGRpZmZlcmVuY2VTcXVhcmVkKGJhc2VEYXJrQ29sb3IsIENvbG9yOjpi
bGFjaykpCi0gICAgICAgICAgICBjb2xvciA9IGNvbG9yLmRhcmsoKTsKKyAgICAgICAgLy8gRklY
TUU6IFByZWNvbXB1dGUgYmFzZURhcmtDb2xvci5sdW1pbmFuY2UoKQorICAgICAgICBpZiAoY29s
b3IubHVtaW5hbmNlKCkgPiBiYXNlRGFya0NvbG9yLmx1bWluYW5jZSgpKQorICAgICAgICAgICAg
Y29sb3IgPSBjb2xvci5kYXJrZW4oKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoZGlmZmVy
ZW5jZVNxdWFyZWQoY29sb3IsIENvbG9yOjp3aGl0ZSkgPiBkaWZmZXJlbmNlU3F1YXJlZChiYXNl
TGlnaHRDb2xvciwgQ29sb3I6OndoaXRlKSkKLSAgICAgICAgICAgIGNvbG9yID0gY29sb3IubGln
aHQoKTsKKyAgICAgICAgLy8gRklYTUU6IFByZWNvbXB1dGUgYmFzZUxpZ2h0Q29sb3IubHVtaW5h
bmNlKCkKKyAgICAgICAgaWYgKGNvbG9yLmx1bWluYW5jZSgpIDwgYmFzZUxpZ2h0Q29sb3IubHVt
aW5hbmNlKCkpCisgICAgICAgICAgICBjb2xvciA9IGNvbG9yLmxpZ2h0ZW4oKTsKICAgICB9CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkocmV2aXNp
b24gMjYyNjU5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTM4MiwyNyArMTM4MiwyNSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6
dGFwSGlnaGxpZ2h0Q29sb3IoKQogCiAjZW5kaWYKIAotLy8gVmFsdWUgY2hvc2VuIGJ5IG9ic2Vy
dmF0aW9uLiBUaGlzIGNhbiBiZSB0d2Vha2VkLgotc3RhdGljIGNvbnN0IGludCBtaW5Db2xvckNv
bnRyYXN0VmFsdWUgPSAxMzAwOwogLy8gRm9yIHRyYW5zcGFyZW50IG9yIHRyYW5zbHVjZW50IGJh
Y2tncm91bmQgY29sb3IsIHVzZSBsaWdodGVuaW5nLgotc3RhdGljIGNvbnN0IGZsb2F0IG1pbkRp
c2FibGVkQ29sb3JBbHBoYVZhbHVlID0gMC41OworY29uc3RleHByIGZsb2F0IG1pbkRpc2FibGVk
Q29sb3JBbHBoYVZhbHVlID0gMC41OwogCiBDb2xvciBSZW5kZXJUaGVtZTo6ZGlzYWJsZWRUZXh0
Q29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xv
cikgY29uc3QKIHsKICAgICAvLyBUaGUgZXhwbGljaXQgY2hlY2sgZm9yIGJsYWNrIGlzIGFuIG9w
dGltaXphdGlvbiBmb3IgdGhlIDk5JSBjYXNlIChibGFjayBvbiB3aGl0ZSkuCiAgICAgLy8gVGhp
cyBhbHNvIG1lYW5zIHRoYXQgYmxhY2sgb24gYmxhY2sgd2lsbCB0dXJuIGludG8gZ3JleSBvbiBi
bGFjayB3aGVuIGRpc2FibGVkLgogICAgIENvbG9yIGRpc2FibGVkQ29sb3I7Ci0gICAgaWYgKENv
bG9yOjppc0JsYWNrQ29sb3IodGV4dENvbG9yKSB8fCBiYWNrZ3JvdW5kQ29sb3IuYWxwaGFBc0Zs
b2F0KCkgPCBtaW5EaXNhYmxlZENvbG9yQWxwaGFWYWx1ZSB8fCBkaWZmZXJlbmNlU3F1YXJlZCh0
ZXh0Q29sb3IsIENvbG9yOjp3aGl0ZSkgPiBkaWZmZXJlbmNlU3F1YXJlZChiYWNrZ3JvdW5kQ29s
b3IsIENvbG9yOjp3aGl0ZSkpCi0gICAgICAgIGRpc2FibGVkQ29sb3IgPSB0ZXh0Q29sb3IubGln
aHQoKTsKKyAgICBpZiAodGV4dENvbG9yID09IENvbG9yOjpibGFjayB8fCBiYWNrZ3JvdW5kQ29s
b3IuYWxwaGFBc0Zsb2F0KCkgPCBtaW5EaXNhYmxlZENvbG9yQWxwaGFWYWx1ZSB8fCB0ZXh0Q29s
b3IubHVtaW5hbmNlKCkgPCBiYWNrZ3JvdW5kQ29sb3IubHVtaW5hbmNlKCkpCisgICAgICAgIGRp
c2FibGVkQ29sb3IgPSB0ZXh0Q29sb3IubGlnaHRlbigpOwogICAgIGVsc2UKLSAgICAgICAgZGlz
YWJsZWRDb2xvciA9IHRleHRDb2xvci5kYXJrKCk7CisgICAgICAgIGRpc2FibGVkQ29sb3IgPSB0
ZXh0Q29sb3IuZGFya2VuKCk7CiAgICAgCiAgICAgLy8gSWYgdGhlcmUncyBub3QgdmVyeSBtdWNo
IGNvbnRyYXN0IGJldHdlZW4gdGhlIGRpc2FibGVkIGNvbG9yIGFuZCB0aGUgYmFja2dyb3VuZCBj
b2xvciwKICAgICAvLyBqdXN0IGxlYXZlIHRoZSB0ZXh0IGNvbG9yIGFsb25lLiBXZSBkb24ndCB3
YW50IHRvIGNoYW5nZSBhIGdvb2QgY29udHJhc3QgY29sb3Igc2NoZW1lIHNvIHRoYXQgaXQgaGFz
IHJlYWxseSBiYWQgY29udHJhc3QuCiAgICAgLy8gSWYgdGhlIGNvbnRyYXN0IHdhcyBhbHJlYWR5
IHBvb3IsIHRoZW4gaXQgZG9lc24ndCBkbyBhbnkgZ29vZCB0byBjaGFuZ2UgaXQgdG8gYSBkaWZm
ZXJlbnQgcG9vciBjb250cmFzdCBjb2xvciBzY2hlbWUuCi0gICAgaWYgKGRpZmZlcmVuY2VTcXVh
cmVkKGRpc2FibGVkQ29sb3IsIGJhY2tncm91bmRDb2xvcikgPCBtaW5Db2xvckNvbnRyYXN0VmFs
dWUpCisgICAgaWYgKHRleHRDb2xvcklzTGVnaWJsZUFnYWluc3RCYWNrZ3JvdW5kQ29sb3IoZGlz
YWJsZWRDb2xvciwgYmFja2dyb3VuZENvbG9yKSkKICAgICAgICAgcmV0dXJuIHRleHRDb2xvcjsK
LSAgICAKKwogICAgIHJldHVybiBkaXNhYmxlZENvbG9yOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAJKHJldmlzaW9uIDI2MjY1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDEyICs3MSw5IEBAIHN0YXRpYyBDb2xvciBhZGp1c3RDb2xvckZvclZpc2liaWxp
dHlPbkIKICAgICBpZiAodGV4dENvbG9ySXNMZWdpYmxlQWdhaW5zdEJhY2tncm91bmRDb2xvcih0
ZXh0Q29sb3IsIGJhY2tncm91bmRDb2xvcikpCiAgICAgICAgIHJldHVybiB0ZXh0Q29sb3I7CiAK
LSAgICBpbnQgZGlzdGFuY2VGcm9tV2hpdGUgPSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3Is
IENvbG9yOjp3aGl0ZSk7Ci0gICAgaW50IGRpc3RhbmNlRnJvbUJsYWNrID0gZGlmZmVyZW5jZVNx
dWFyZWQodGV4dENvbG9yLCBDb2xvcjo6YmxhY2spOwotICAgIGlmIChkaXN0YW5jZUZyb21XaGl0
ZSA8IGRpc3RhbmNlRnJvbUJsYWNrKQotICAgICAgICByZXR1cm4gdGV4dENvbG9yLmRhcmsoKTsK
LQotICAgIHJldHVybiB0ZXh0Q29sb3IubGlnaHQoKTsKKyAgICBpZiAodGV4dEx1bWluYW5jZS5s
dW1pbmFuY2UoKSA+IDAuNSkKKyAgICAgICAgcmV0dXJuIHRleHRDb2xvci5kYXJrZW4oKTsKKyAg
ICByZXR1cm4gdGV4dENvbG9yLmxpZ2h0ZW4oKTsKIH0KIAogVGV4dFBhaW50U3R5bGUgY29tcHV0
ZVRleHRQYWludFN0eWxlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmIGxp
bmVTdHlsZSwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401294</attachid>
            <date>2020-06-07 07:54:15 -0700</date>
            <delta_ts>2020-06-07 10:18:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212872-20200607075415.patch</filename>
            <type>text/plain</type>
            <size>10692</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA2LTA3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29sb3JdIFJlcGxhY2UgdXNlcyBv
ZiBkaWZmZXJlbmNlU3F1YXJlZCgpIHdpdGggbHVtaW5hbmNlIGJhc2VkIGNvbXB1dGF0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyODcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OmxpZ2h0ZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmRhcmtlbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bHVtaW5hbmNlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmRpZmZlcmVuY2VTcXVhcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yOjpsaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xv
cjo6ZGFyayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpsdW1pbmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6c1JHQlRvTGlu
ZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpj
YWxjdWxhdGVCb3JkZXJTdHlsZUNvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmRpc2FibGVkVGV4dENvbG9y
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKToKKwogMjAy
MC0wNi0wNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNd
IEFkZCBzdXBwb3J0IGZvciB3aWR0aDogbWluL21heC1jb250ZW50CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNjI2NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDIyICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdGV4cHIg
U2ltcGxlQ29sb3IgbGlnaHRlbmVkQmxhY2sgeyAweEZGNTQ1NDU0IH07CiBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGRhcmtlbmVkV2hpdGUgeyAweEZGQUJBQkFCIH07CiAKLWludCBkaWZm
ZXJlbmNlU3F1YXJlZChjb25zdCBDb2xvciYgYzEsIGNvbnN0IENvbG9yJiBjMikKLXsKLSAgICAv
LyBGSVhNRTogRXh0ZW5kZWRDb2xvciAtIG5lZWRzIHRvIGhhbmRsZSBjb2xvciBzcGFjZXMuCi0g
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHJldHVybiBhIGZsb2F0aW5nIHBvaW50
IG51bWJlciwgYnV0IG1hbnkgb2YgdGhlIGNhbGwKLSAgICAvLyBzaXRlcyBoYXZlIHBpY2tlZCBj
b21wYXJpc29uIHZhbHVlcyBiYXNlZCBvbiBmZWVsLiBXZSdkIG5lZWQgdG8gYnJlYWsgb3V0Ci0g
ICAgLy8gb3VyIGxvZ2FyaXRobSB0YWJsZXMgdG8gY2hhbmdlIHRoZW0gOikKLQotICAgIGF1dG8g
W2MxUmVkLCBjMUJsdWUsIGMxR3JlZW4sIGMxQWxwaGFdID0gYzEudG9TUkdCQVNpbXBsZUNvbG9y
TG9zc3koKTsKLSAgICBhdXRvIFtjMlJlZCwgYzJCbHVlLCBjMkdyZWVuLCBjMkFscGhhXSA9IGMy
LnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCk7Ci0KLSAgICBpbnQgZFIgPSBjMVJlZCAtIGMyUmVk
OwotICAgIGludCBkRyA9IGMxR3JlZW4gLSBjMkdyZWVuOwotICAgIGludCBkQiA9IGMxQmx1ZSAt
IGMyQmx1ZTsKLSAgICByZXR1cm4gZFIgKiBkUiArIGRHICogZEcgKyBkQiAqIGRCOwotfQotCiBD
b2xvcjo6Q29sb3IoY29uc3QgQ29sb3ImIG90aGVyKQogICAgIDogbV9jb2xvckRhdGEob3RoZXIu
bV9jb2xvckRhdGEpCiB7CkBAIC0xMTYsNyArMTAwLDcgQEAgU3RyaW5nIENvbG9yOjpuYW1lRm9y
UmVuZGVyVHJlZUFzVGV4dCgpIAogICAgIHJldHVybiBhc1NpbXBsZSgpLnNlcmlhbGl6YXRpb25G
b3JSZW5kZXJUcmVlQXNUZXh0KCk7CiB9CiAKLUNvbG9yIENvbG9yOjpsaWdodCgpIGNvbnN0CitD
b2xvciBDb2xvcjo6bGlnaHRlbigpIGNvbnN0CiB7CiAgICAgLy8gSGFyZGNvZGUgdGhpcyBjb21t
b24gY2FzZSBmb3Igc3BlZWQuCiAgICAgaWYgKCFpc0V4dGVuZGVkKCkgJiYgYXNTaW1wbGUoKSA9
PSBibGFjaykKQEAgLTE0MSw3ICsxMjUsNyBAQCBDb2xvciBDb2xvcjo6bGlnaHQoKSBjb25zdAog
ICAgICk7CiB9CiAKLUNvbG9yIENvbG9yOjpkYXJrKCkgY29uc3QKK0NvbG9yIENvbG9yOjpkYXJr
ZW4oKSBjb25zdAogewogICAgIC8vIEhhcmRjb2RlIHRoaXMgY29tbW9uIGNhc2UgZm9yIHNwZWVk
LgogICAgIGlmICghaXNFeHRlbmRlZCgpICYmIGFzU2ltcGxlKCkgPT0gd2hpdGUpCkBAIC0xNzYs
NiArMTYwLDEyIEBAIGZsb2F0IENvbG9yOjpsaWdodG5lc3MoKSBjb25zdAogICAgIHJldHVybiBX
ZWJDb3JlOjpsaWdodG5lc3ModG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKIH0KIAorZmxvYXQg
Q29sb3I6Omx1bWluYW5jZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFRoaXMgY2FuIHByb2Jh
Ymx5IGF2b2lkIHRvIHNSR0IgYnkgaGF2aW5nIHBlci1jb2xvcnNwYWNlIGFsZ29yaXRobXMgZm9y
IGx1bWluYW5jZSAoZS5nLiBjb252ZXJ0VG9YWVooYykueUNvbXBvbmVudCgpKS4KKyAgICByZXR1
cm4gV2ViQ29yZTo6bHVtaW5hbmNlKHRvU1JHQkFDb21wb25lbnRzTG9zc3koKSk7Cit9CisKIENv
bG9yIENvbG9yOjpibGVuZChjb25zdCBDb2xvciYgc291cmNlKSBjb25zdAogewogICAgIGlmICgh
aXNWaXNpYmxlKCkgfHwgc291cmNlLmlzT3BhcXVlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2MjY1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSwxMCAr
MTM1LDEzIEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIHdpbGwgY29udmVydCBub24tc1JHQiBjb2xv
cnNwYWNlIGNvbG9ycyBpbnRvIHNSR0IuCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3JDb21wb25l
bnRzPGZsb2F0PiB0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkgY29uc3Q7CiAKLSAgICBDb2xvciBs
aWdodCgpIGNvbnN0OwotICAgIENvbG9yIGRhcmsoKSBjb25zdDsKKyAgICBDb2xvciBsaWdodGVu
KCkgY29uc3Q7CisgICAgQ29sb3IgZGFya2VuKCkgY29uc3Q7CiAKLSAgICBib29sIGlzRGFyaygp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGx1bWluYW5jZSgpIGNvbnN0OworCisg
ICAgLy8gRklYTUU6IFJlcGxhY2UgcmVtYWluaW5nIHVzZXMgd2l0aCBsdW1pbmFuY2UuCisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RhcmsoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBm
bG9hdCBsaWdodG5lc3MoKSBjb25zdDsKIAogICAgIC8vIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRp
b24gb2YgUG9ydGVyLUR1ZmYncyAic291cmNlLW92ZXIiIGVxdWF0aW9uCkBAIC0yMDEsNyArMjA0
LDYgQEAgcHVibGljOgogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3ImIGEs
IGNvbnN0IENvbG9yJiBiKTsKICAgICBmcmllbmQgYm9vbCBlcXVhbElnbm9yaW5nU2VtYW50aWND
b2xvcihjb25zdCBDb2xvciYgYSwgY29uc3QgQ29sb3ImIGIpOwogICAgIGZyaWVuZCBib29sIGV4
dGVuZGVkQ29sb3JzRXF1YWwoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwotICAgIGZyaWVu
ZCBpbnQgZGlmZmVyZW5jZVNxdWFyZWQoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwogCiAg
ICAgc3RhdGljIGJvb2wgaXNCbGFja0NvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgc3RhdGljIGJv
b2wgaXNXaGl0ZUNvbG9yKGNvbnN0IENvbG9yJik7CkBAIC0yNDQsOCArMjQ2LDYgQEAgYm9vbCBl
eHRlbmRlZENvbG9yc0VxdWFsKGNvbnN0IENvbG9yJiwgYwogQ29sb3IgYmxlbmQoY29uc3QgQ29s
b3ImIGZyb20sIGNvbnN0IENvbG9yJiB0bywgZG91YmxlIHByb2dyZXNzKTsKIENvbG9yIGJsZW5k
V2l0aG91dFByZW11bHRpcGx5KGNvbnN0IENvbG9yJiBmcm9tLCBjb25zdCBDb2xvciYgdG8sIGRv
dWJsZSBwcm9ncmVzcyk7CiAKLWludCBkaWZmZXJlbmNlU3F1YXJlZChjb25zdCBDb2xvciYsIGNv
bnN0IENvbG9yJik7Ci0KICNpZiBVU0UoQ0cpCiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmIGNh
Y2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAkocmV2aXNpb24g
MjYyNjU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsMjMgKzE0NywxNCBAQCBmbG9hdCBsaWdodG5l
c3MoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsCiAgICAgcmV0dXJuIDAuNWYgKiAobWF4ICsgbWlu
KTsKIH0KIAotLy8gVGhpcyBpcyBzaW1pbGFyIHRvIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50
IGJ1dCBmb3Igc29tZSByZWFzb24KLS8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1X
Q0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmCi0vLyBkb2Vzbid0IHVzZSB0aGUg
c3RhbmRhcmQgc1JHQiAtPiBsaW5lYXJSR0IgdGhyZXNob2xkIG9mIDAuMDQwNDUuCi1zdGF0aWMg
ZmxvYXQgc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2UoZmxvYXQgYykKLXsK
LSAgICBpZiAoYyA8PSAwLjAzOTI4ZikKLSAgICAgICAgcmV0dXJuIGMgLyAxMi45MmY7Ci0KLSAg
ICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3RkOjpwb3coKGMgKyAwLjA1NWYpIC8gMS4wNTVmLCAy
LjRmKSwgMCwgMSk7Ci19Ci0KIGZsb2F0IGx1bWluYW5jZShjb25zdCBDb2xvckNvbXBvbmVudHM8
ZmxvYXQ+JiBzUkdCQ29tcG9uZW50cykKIHsKLSAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3
dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRl
ZgotICAgIHJldHVybiAwLjIxMjZmICogc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JMdW1p
bmFuY2Uoc1JHQkNvbXBvbmVudHNbMF0pCi0gICAgICAgICsgMC43MTUyZiAqIHNSR0JUb0xpbmVh
ckNvbG9yQ29tcG9uZW50Rm9yTHVtaW5hbmNlKHNSR0JDb21wb25lbnRzWzFdKQotICAgICAgICAr
IDAuMDcyMmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShzUkdCQ29t
cG9uZW50c1syXSk7CisgICAgLy8gTk9URTogVGhpcyBpcyB0aGUgZXF1aXZpbGVudCBvZiBgbGlu
ZWFyU1JHQlRvWFlaKHJnYlRvTGluZWFyQ29tcG9uZW50cyhzUkdCQ29tcG9uZW50cykpWzFdYAor
ICAgIC8vIEZJTVhFOiBJZiB3ZSBjYW4gZ2VuZXJhbGl6ZSBDb2xvck1hdHJpeCBhIGJpdCBtb3Jl
LCBpdCBtaWdodCBiZSBuaWNlIHRvIHdyaXRlIHRoaXMgYXM6CisgICAgLy8gICAgICBhdXRvIGxp
bmVhclNSR0JDb21wb25lbnRzID0gcmdiVG9MaW5lYXJDb21wb25lbnRzKHNSR0JDb21wb25lbnRz
KTsKKyAgICAvLyAgICAgIHJldHVybiBsaW5lYXJTUkdCQ29tcG9uZW50cyAqIGxpbmVhclNSR0JU
b1hZWk1hdHJpeC5yb3coMSk7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSByZ2JUb0xpbmVhckNv
bXBvbmVudHMoc1JHQkNvbXBvbmVudHMpOworICAgIHJldHVybiAwLjIxMjZmICogciArIDAuNzE1
MmYgKiBnICsgMC4wNzIyZiAqIGI7CiB9CiAKIGZsb2F0IGNvbnRyYXN0UmF0aW8oY29uc3QgQ29s
b3JDb21wb25lbnRzPGZsb2F0PiYgY29tcG9uZW50c0EsIGNvbnN0IENvbG9yQ29tcG9uZW50czxm
bG9hdD4mIGNvbXBvbmVudHNCKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAJKHJldmlzaW9uIDI2MjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODE0LDExICsxODE0LDEzIEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjpjYWxjdWxhdGVCb3JkZXJTdHlsZUMKIAogICAgIC8vIEhlcmUg
d2Ugd2lsbCBkYXJrZW4gdGhlIGJvcmRlciBkZWNvcmF0aW9uIGNvbG9yIHdoZW4gbmVlZGVkLiBU
aGlzIHdpbGwgeWllbGQgYSBzaW1pbGFyIGJlaGF2aW9yIGFzIGluIEZGLgogICAgIGlmIChvcGVy
YXRpb24gPT0gRGFya2VuKSB7Ci0gICAgICAgIGlmIChkaWZmZXJlbmNlU3F1YXJlZChjb2xvciwg
Q29sb3I6OmJsYWNrKSA+IGRpZmZlcmVuY2VTcXVhcmVkKGJhc2VEYXJrQ29sb3IsIENvbG9yOjpi
bGFjaykpCi0gICAgICAgICAgICBjb2xvciA9IGNvbG9yLmRhcmsoKTsKKyAgICAgICAgLy8gRklY
TUU6IFByZWNvbXB1dGUgYmFzZURhcmtDb2xvci5sdW1pbmFuY2UoKQorICAgICAgICBpZiAoY29s
b3IubHVtaW5hbmNlKCkgPiBiYXNlRGFya0NvbG9yLmx1bWluYW5jZSgpKQorICAgICAgICAgICAg
Y29sb3IgPSBjb2xvci5kYXJrZW4oKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoZGlmZmVy
ZW5jZVNxdWFyZWQoY29sb3IsIENvbG9yOjp3aGl0ZSkgPiBkaWZmZXJlbmNlU3F1YXJlZChiYXNl
TGlnaHRDb2xvciwgQ29sb3I6OndoaXRlKSkKLSAgICAgICAgICAgIGNvbG9yID0gY29sb3IubGln
aHQoKTsKKyAgICAgICAgLy8gRklYTUU6IFByZWNvbXB1dGUgYmFzZUxpZ2h0Q29sb3IubHVtaW5h
bmNlKCkKKyAgICAgICAgaWYgKGNvbG9yLmx1bWluYW5jZSgpIDwgYmFzZUxpZ2h0Q29sb3IubHVt
aW5hbmNlKCkpCisgICAgICAgICAgICBjb2xvciA9IGNvbG9yLmxpZ2h0ZW4oKTsKICAgICB9CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkocmV2aXNp
b24gMjYyNjU5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTM4MiwyNyArMTM4MiwyNSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6
dGFwSGlnaGxpZ2h0Q29sb3IoKQogCiAjZW5kaWYKIAotLy8gVmFsdWUgY2hvc2VuIGJ5IG9ic2Vy
dmF0aW9uLiBUaGlzIGNhbiBiZSB0d2Vha2VkLgotc3RhdGljIGNvbnN0IGludCBtaW5Db2xvckNv
bnRyYXN0VmFsdWUgPSAxMzAwOwogLy8gRm9yIHRyYW5zcGFyZW50IG9yIHRyYW5zbHVjZW50IGJh
Y2tncm91bmQgY29sb3IsIHVzZSBsaWdodGVuaW5nLgotc3RhdGljIGNvbnN0IGZsb2F0IG1pbkRp
c2FibGVkQ29sb3JBbHBoYVZhbHVlID0gMC41OworY29uc3RleHByIGZsb2F0IG1pbkRpc2FibGVk
Q29sb3JBbHBoYVZhbHVlID0gMC41OwogCiBDb2xvciBSZW5kZXJUaGVtZTo6ZGlzYWJsZWRUZXh0
Q29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xv
cikgY29uc3QKIHsKICAgICAvLyBUaGUgZXhwbGljaXQgY2hlY2sgZm9yIGJsYWNrIGlzIGFuIG9w
dGltaXphdGlvbiBmb3IgdGhlIDk5JSBjYXNlIChibGFjayBvbiB3aGl0ZSkuCiAgICAgLy8gVGhp
cyBhbHNvIG1lYW5zIHRoYXQgYmxhY2sgb24gYmxhY2sgd2lsbCB0dXJuIGludG8gZ3JleSBvbiBi
bGFjayB3aGVuIGRpc2FibGVkLgogICAgIENvbG9yIGRpc2FibGVkQ29sb3I7Ci0gICAgaWYgKENv
bG9yOjppc0JsYWNrQ29sb3IodGV4dENvbG9yKSB8fCBiYWNrZ3JvdW5kQ29sb3IuYWxwaGFBc0Zs
b2F0KCkgPCBtaW5EaXNhYmxlZENvbG9yQWxwaGFWYWx1ZSB8fCBkaWZmZXJlbmNlU3F1YXJlZCh0
ZXh0Q29sb3IsIENvbG9yOjp3aGl0ZSkgPiBkaWZmZXJlbmNlU3F1YXJlZChiYWNrZ3JvdW5kQ29s
b3IsIENvbG9yOjp3aGl0ZSkpCi0gICAgICAgIGRpc2FibGVkQ29sb3IgPSB0ZXh0Q29sb3IubGln
aHQoKTsKKyAgICBpZiAodGV4dENvbG9yID09IENvbG9yOjpibGFjayB8fCBiYWNrZ3JvdW5kQ29s
b3IuYWxwaGFBc0Zsb2F0KCkgPCBtaW5EaXNhYmxlZENvbG9yQWxwaGFWYWx1ZSB8fCB0ZXh0Q29s
b3IubHVtaW5hbmNlKCkgPCBiYWNrZ3JvdW5kQ29sb3IubHVtaW5hbmNlKCkpCisgICAgICAgIGRp
c2FibGVkQ29sb3IgPSB0ZXh0Q29sb3IubGlnaHRlbigpOwogICAgIGVsc2UKLSAgICAgICAgZGlz
YWJsZWRDb2xvciA9IHRleHRDb2xvci5kYXJrKCk7CisgICAgICAgIGRpc2FibGVkQ29sb3IgPSB0
ZXh0Q29sb3IuZGFya2VuKCk7CiAgICAgCiAgICAgLy8gSWYgdGhlcmUncyBub3QgdmVyeSBtdWNo
IGNvbnRyYXN0IGJldHdlZW4gdGhlIGRpc2FibGVkIGNvbG9yIGFuZCB0aGUgYmFja2dyb3VuZCBj
b2xvciwKICAgICAvLyBqdXN0IGxlYXZlIHRoZSB0ZXh0IGNvbG9yIGFsb25lLiBXZSBkb24ndCB3
YW50IHRvIGNoYW5nZSBhIGdvb2QgY29udHJhc3QgY29sb3Igc2NoZW1lIHNvIHRoYXQgaXQgaGFz
IHJlYWxseSBiYWQgY29udHJhc3QuCiAgICAgLy8gSWYgdGhlIGNvbnRyYXN0IHdhcyBhbHJlYWR5
IHBvb3IsIHRoZW4gaXQgZG9lc24ndCBkbyBhbnkgZ29vZCB0byBjaGFuZ2UgaXQgdG8gYSBkaWZm
ZXJlbnQgcG9vciBjb250cmFzdCBjb2xvciBzY2hlbWUuCi0gICAgaWYgKGRpZmZlcmVuY2VTcXVh
cmVkKGRpc2FibGVkQ29sb3IsIGJhY2tncm91bmRDb2xvcikgPCBtaW5Db2xvckNvbnRyYXN0VmFs
dWUpCisgICAgaWYgKHRleHRDb2xvcklzTGVnaWJsZUFnYWluc3RCYWNrZ3JvdW5kQ29sb3IoZGlz
YWJsZWRDb2xvciwgYmFja2dyb3VuZENvbG9yKSkKICAgICAgICAgcmV0dXJuIHRleHRDb2xvcjsK
LSAgICAKKwogICAgIHJldHVybiBkaXNhYmxlZENvbG9yOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAJKHJldmlzaW9uIDI2MjY1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDEyICs3MSw5IEBAIHN0YXRpYyBDb2xvciBhZGp1c3RDb2xvckZvclZpc2liaWxp
dHlPbkIKICAgICBpZiAodGV4dENvbG9ySXNMZWdpYmxlQWdhaW5zdEJhY2tncm91bmRDb2xvcih0
ZXh0Q29sb3IsIGJhY2tncm91bmRDb2xvcikpCiAgICAgICAgIHJldHVybiB0ZXh0Q29sb3I7CiAK
LSAgICBpbnQgZGlzdGFuY2VGcm9tV2hpdGUgPSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3Is
IENvbG9yOjp3aGl0ZSk7Ci0gICAgaW50IGRpc3RhbmNlRnJvbUJsYWNrID0gZGlmZmVyZW5jZVNx
dWFyZWQodGV4dENvbG9yLCBDb2xvcjo6YmxhY2spOwotICAgIGlmIChkaXN0YW5jZUZyb21XaGl0
ZSA8IGRpc3RhbmNlRnJvbUJsYWNrKQotICAgICAgICByZXR1cm4gdGV4dENvbG9yLmRhcmsoKTsK
LQotICAgIHJldHVybiB0ZXh0Q29sb3IubGlnaHQoKTsKKyAgICBpZiAodGV4dENvbG9yLmx1bWlu
YW5jZSgpID4gMC41KQorICAgICAgICByZXR1cm4gdGV4dENvbG9yLmRhcmtlbigpOworICAgIHJl
dHVybiB0ZXh0Q29sb3IubGlnaHRlbigpOwogfQogCiBUZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4
dFBhaW50U3R5bGUoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0
eWxlLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401301</attachid>
            <date>2020-06-07 10:18:46 -0700</date>
            <delta_ts>2020-06-07 11:00:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212872-20200607101845.patch</filename>
            <type>text/plain</type>
            <size>10950</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA2LTA3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29sb3JdIFJlcGxhY2UgdXNlcyBv
ZiBkaWZmZXJlbmNlU3F1YXJlZCgpIHdpdGggbHVtaW5hbmNlIGJhc2VkIGNvbXB1dGF0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyODcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OmxpZ2h0ZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmRhcmtlbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bHVtaW5hbmNlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmRpZmZlcmVuY2VTcXVhcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yOjpsaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xv
cjo6ZGFyayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpsdW1pbmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6c1JHQlRvTGlu
ZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpj
YWxjdWxhdGVCb3JkZXJTdHlsZUNvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmRpc2FibGVkVGV4dENvbG9y
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKToKKwogMjAy
MC0wNi0wNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNd
IEFkZCBzdXBwb3J0IGZvciB3aWR0aDogbWluL21heC1jb250ZW50CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNjI2NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDIyICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdGV4cHIg
U2ltcGxlQ29sb3IgbGlnaHRlbmVkQmxhY2sgeyAweEZGNTQ1NDU0IH07CiBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGRhcmtlbmVkV2hpdGUgeyAweEZGQUJBQkFCIH07CiAKLWludCBkaWZm
ZXJlbmNlU3F1YXJlZChjb25zdCBDb2xvciYgYzEsIGNvbnN0IENvbG9yJiBjMikKLXsKLSAgICAv
LyBGSVhNRTogRXh0ZW5kZWRDb2xvciAtIG5lZWRzIHRvIGhhbmRsZSBjb2xvciBzcGFjZXMuCi0g
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHJldHVybiBhIGZsb2F0aW5nIHBvaW50
IG51bWJlciwgYnV0IG1hbnkgb2YgdGhlIGNhbGwKLSAgICAvLyBzaXRlcyBoYXZlIHBpY2tlZCBj
b21wYXJpc29uIHZhbHVlcyBiYXNlZCBvbiBmZWVsLiBXZSdkIG5lZWQgdG8gYnJlYWsgb3V0Ci0g
ICAgLy8gb3VyIGxvZ2FyaXRobSB0YWJsZXMgdG8gY2hhbmdlIHRoZW0gOikKLQotICAgIGF1dG8g
W2MxUmVkLCBjMUJsdWUsIGMxR3JlZW4sIGMxQWxwaGFdID0gYzEudG9TUkdCQVNpbXBsZUNvbG9y
TG9zc3koKTsKLSAgICBhdXRvIFtjMlJlZCwgYzJCbHVlLCBjMkdyZWVuLCBjMkFscGhhXSA9IGMy
LnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCk7Ci0KLSAgICBpbnQgZFIgPSBjMVJlZCAtIGMyUmVk
OwotICAgIGludCBkRyA9IGMxR3JlZW4gLSBjMkdyZWVuOwotICAgIGludCBkQiA9IGMxQmx1ZSAt
IGMyQmx1ZTsKLSAgICByZXR1cm4gZFIgKiBkUiArIGRHICogZEcgKyBkQiAqIGRCOwotfQotCiBD
b2xvcjo6Q29sb3IoY29uc3QgQ29sb3ImIG90aGVyKQogICAgIDogbV9jb2xvckRhdGEob3RoZXIu
bV9jb2xvckRhdGEpCiB7CkBAIC0xMTYsNyArMTAwLDcgQEAgU3RyaW5nIENvbG9yOjpuYW1lRm9y
UmVuZGVyVHJlZUFzVGV4dCgpIAogICAgIHJldHVybiBhc1NpbXBsZSgpLnNlcmlhbGl6YXRpb25G
b3JSZW5kZXJUcmVlQXNUZXh0KCk7CiB9CiAKLUNvbG9yIENvbG9yOjpsaWdodCgpIGNvbnN0CitD
b2xvciBDb2xvcjo6bGlnaHRlbigpIGNvbnN0CiB7CiAgICAgLy8gSGFyZGNvZGUgdGhpcyBjb21t
b24gY2FzZSBmb3Igc3BlZWQuCiAgICAgaWYgKCFpc0V4dGVuZGVkKCkgJiYgYXNTaW1wbGUoKSA9
PSBibGFjaykKQEAgLTE0MSw3ICsxMjUsNyBAQCBDb2xvciBDb2xvcjo6bGlnaHQoKSBjb25zdAog
ICAgICk7CiB9CiAKLUNvbG9yIENvbG9yOjpkYXJrKCkgY29uc3QKK0NvbG9yIENvbG9yOjpkYXJr
ZW4oKSBjb25zdAogewogICAgIC8vIEhhcmRjb2RlIHRoaXMgY29tbW9uIGNhc2UgZm9yIHNwZWVk
LgogICAgIGlmICghaXNFeHRlbmRlZCgpICYmIGFzU2ltcGxlKCkgPT0gd2hpdGUpCkBAIC0xNzYs
NiArMTYwLDEyIEBAIGZsb2F0IENvbG9yOjpsaWdodG5lc3MoKSBjb25zdAogICAgIHJldHVybiBX
ZWJDb3JlOjpsaWdodG5lc3ModG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKIH0KIAorZmxvYXQg
Q29sb3I6Omx1bWluYW5jZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFRoaXMgY2FuIHByb2Jh
Ymx5IGF2b2lkIHRvIHNSR0IgYnkgaGF2aW5nIHBlci1jb2xvcnNwYWNlIGFsZ29yaXRobXMgZm9y
IGx1bWluYW5jZSAoZS5nLiBjb252ZXJ0VG9YWVooYykueUNvbXBvbmVudCgpKS4KKyAgICByZXR1
cm4gV2ViQ29yZTo6bHVtaW5hbmNlKHRvU1JHQkFDb21wb25lbnRzTG9zc3koKSk7Cit9CisKIENv
bG9yIENvbG9yOjpibGVuZChjb25zdCBDb2xvciYgc291cmNlKSBjb25zdAogewogICAgIGlmICgh
aXNWaXNpYmxlKCkgfHwgc291cmNlLmlzT3BhcXVlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2MjY1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSwxMCAr
MTM1LDEzIEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIHdpbGwgY29udmVydCBub24tc1JHQiBjb2xv
cnNwYWNlIGNvbG9ycyBpbnRvIHNSR0IuCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3JDb21wb25l
bnRzPGZsb2F0PiB0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkgY29uc3Q7CiAKLSAgICBDb2xvciBs
aWdodCgpIGNvbnN0OwotICAgIENvbG9yIGRhcmsoKSBjb25zdDsKKyAgICBDb2xvciBsaWdodGVu
KCkgY29uc3Q7CisgICAgQ29sb3IgZGFya2VuKCkgY29uc3Q7CiAKLSAgICBib29sIGlzRGFyaygp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGx1bWluYW5jZSgpIGNvbnN0OworCisg
ICAgLy8gRklYTUU6IFJlcGxhY2UgcmVtYWluaW5nIHVzZXMgd2l0aCBsdW1pbmFuY2UuCisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RhcmsoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBm
bG9hdCBsaWdodG5lc3MoKSBjb25zdDsKIAogICAgIC8vIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRp
b24gb2YgUG9ydGVyLUR1ZmYncyAic291cmNlLW92ZXIiIGVxdWF0aW9uCkBAIC0yMDEsNyArMjA0
LDYgQEAgcHVibGljOgogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3ImIGEs
IGNvbnN0IENvbG9yJiBiKTsKICAgICBmcmllbmQgYm9vbCBlcXVhbElnbm9yaW5nU2VtYW50aWND
b2xvcihjb25zdCBDb2xvciYgYSwgY29uc3QgQ29sb3ImIGIpOwogICAgIGZyaWVuZCBib29sIGV4
dGVuZGVkQ29sb3JzRXF1YWwoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwotICAgIGZyaWVu
ZCBpbnQgZGlmZmVyZW5jZVNxdWFyZWQoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwogCiAg
ICAgc3RhdGljIGJvb2wgaXNCbGFja0NvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgc3RhdGljIGJv
b2wgaXNXaGl0ZUNvbG9yKGNvbnN0IENvbG9yJik7CkBAIC0yNDQsOCArMjQ2LDYgQEAgYm9vbCBl
eHRlbmRlZENvbG9yc0VxdWFsKGNvbnN0IENvbG9yJiwgYwogQ29sb3IgYmxlbmQoY29uc3QgQ29s
b3ImIGZyb20sIGNvbnN0IENvbG9yJiB0bywgZG91YmxlIHByb2dyZXNzKTsKIENvbG9yIGJsZW5k
V2l0aG91dFByZW11bHRpcGx5KGNvbnN0IENvbG9yJiBmcm9tLCBjb25zdCBDb2xvciYgdG8sIGRv
dWJsZSBwcm9ncmVzcyk7CiAKLWludCBkaWZmZXJlbmNlU3F1YXJlZChjb25zdCBDb2xvciYsIGNv
bnN0IENvbG9yJik7Ci0KICNpZiBVU0UoQ0cpCiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmIGNh
Y2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAkocmV2aXNpb24g
MjYyNjU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsMjMgKzE0NywxNCBAQCBmbG9hdCBsaWdodG5l
c3MoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsCiAgICAgcmV0dXJuIDAuNWYgKiAobWF4ICsgbWlu
KTsKIH0KIAotLy8gVGhpcyBpcyBzaW1pbGFyIHRvIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50
IGJ1dCBmb3Igc29tZSByZWFzb24KLS8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1X
Q0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmCi0vLyBkb2Vzbid0IHVzZSB0aGUg
c3RhbmRhcmQgc1JHQiAtPiBsaW5lYXJSR0IgdGhyZXNob2xkIG9mIDAuMDQwNDUuCi1zdGF0aWMg
ZmxvYXQgc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2UoZmxvYXQgYykKLXsK
LSAgICBpZiAoYyA8PSAwLjAzOTI4ZikKLSAgICAgICAgcmV0dXJuIGMgLyAxMi45MmY7Ci0KLSAg
ICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3RkOjpwb3coKGMgKyAwLjA1NWYpIC8gMS4wNTVmLCAy
LjRmKSwgMCwgMSk7Ci19Ci0KIGZsb2F0IGx1bWluYW5jZShjb25zdCBDb2xvckNvbXBvbmVudHM8
ZmxvYXQ+JiBzUkdCQ29tcG9uZW50cykKIHsKLSAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3
dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRl
ZgotICAgIHJldHVybiAwLjIxMjZmICogc1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JMdW1p
bmFuY2Uoc1JHQkNvbXBvbmVudHNbMF0pCi0gICAgICAgICsgMC43MTUyZiAqIHNSR0JUb0xpbmVh
ckNvbG9yQ29tcG9uZW50Rm9yTHVtaW5hbmNlKHNSR0JDb21wb25lbnRzWzFdKQotICAgICAgICAr
IDAuMDcyMmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShzUkdCQ29t
cG9uZW50c1syXSk7CisgICAgLy8gTk9URTogVGhpcyBpcyB0aGUgZXF1aXZpbGVudCBvZiBgbGlu
ZWFyU1JHQlRvWFlaKHJnYlRvTGluZWFyQ29tcG9uZW50cyhzUkdCQ29tcG9uZW50cykpWzFdYAor
ICAgIC8vIEZJTVhFOiBJZiB3ZSBjYW4gZ2VuZXJhbGl6ZSBDb2xvck1hdHJpeCBhIGJpdCBtb3Jl
LCBpdCBtaWdodCBiZSBuaWNlIHRvIHdyaXRlIHRoaXMgYXM6CisgICAgLy8gICAgICBhdXRvIGxp
bmVhclNSR0JDb21wb25lbnRzID0gcmdiVG9MaW5lYXJDb21wb25lbnRzKHNSR0JDb21wb25lbnRz
KTsKKyAgICAvLyAgICAgIHJldHVybiBsaW5lYXJTUkdCQ29tcG9uZW50cyAqIGxpbmVhclNSR0JU
b1hZWk1hdHJpeC5yb3coMSk7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSByZ2JUb0xpbmVhckNv
bXBvbmVudHMoc1JHQkNvbXBvbmVudHMpOworICAgIHJldHVybiAwLjIxMjZmICogciArIDAuNzE1
MmYgKiBnICsgMC4wNzIyZiAqIGI7CiB9CiAKIGZsb2F0IGNvbnRyYXN0UmF0aW8oY29uc3QgQ29s
b3JDb21wb25lbnRzPGZsb2F0PiYgY29tcG9uZW50c0EsIGNvbnN0IENvbG9yQ29tcG9uZW50czxm
bG9hdD4mIGNvbXBvbmVudHNCKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAJKHJldmlzaW9uIDI2MjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODE0LDExICsxODE0LDEzIEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjpjYWxjdWxhdGVCb3JkZXJTdHlsZUMKIAogICAgIC8vIEhlcmUg
d2Ugd2lsbCBkYXJrZW4gdGhlIGJvcmRlciBkZWNvcmF0aW9uIGNvbG9yIHdoZW4gbmVlZGVkLiBU
aGlzIHdpbGwgeWllbGQgYSBzaW1pbGFyIGJlaGF2aW9yIGFzIGluIEZGLgogICAgIGlmIChvcGVy
YXRpb24gPT0gRGFya2VuKSB7Ci0gICAgICAgIGlmIChkaWZmZXJlbmNlU3F1YXJlZChjb2xvciwg
Q29sb3I6OmJsYWNrKSA+IGRpZmZlcmVuY2VTcXVhcmVkKGJhc2VEYXJrQ29sb3IsIENvbG9yOjpi
bGFjaykpCi0gICAgICAgICAgICBjb2xvciA9IGNvbG9yLmRhcmsoKTsKKyAgICAgICAgLy8gRklY
TUU6IFByZWNvbXB1dGUgYmFzZURhcmtDb2xvci5sdW1pbmFuY2UoKQorICAgICAgICBpZiAoY29s
b3IubHVtaW5hbmNlKCkgPiBiYXNlRGFya0NvbG9yLmx1bWluYW5jZSgpKQorICAgICAgICAgICAg
Y29sb3IgPSBjb2xvci5kYXJrZW4oKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoZGlmZmVy
ZW5jZVNxdWFyZWQoY29sb3IsIENvbG9yOjp3aGl0ZSkgPiBkaWZmZXJlbmNlU3F1YXJlZChiYXNl
TGlnaHRDb2xvciwgQ29sb3I6OndoaXRlKSkKLSAgICAgICAgICAgIGNvbG9yID0gY29sb3IubGln
aHQoKTsKKyAgICAgICAgLy8gRklYTUU6IFByZWNvbXB1dGUgYmFzZUxpZ2h0Q29sb3IubHVtaW5h
bmNlKCkKKyAgICAgICAgaWYgKGNvbG9yLmx1bWluYW5jZSgpIDwgYmFzZUxpZ2h0Q29sb3IubHVt
aW5hbmNlKCkpCisgICAgICAgICAgICBjb2xvciA9IGNvbG9yLmxpZ2h0ZW4oKTsKICAgICB9CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkocmV2aXNp
b24gMjYyNjU5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlNwaW5CdXR0b25FbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmgiCisjaW5jbHVkZSAiVGV4dFBhaW50U3R5bGUuaCIKICNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgpAQCAtMTM4MiwyNyAr
MTM4MywyNSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6dGFwSGlnaGxpZ2h0Q29sb3IoKQogCiAjZW5k
aWYKIAotLy8gVmFsdWUgY2hvc2VuIGJ5IG9ic2VydmF0aW9uLiBUaGlzIGNhbiBiZSB0d2Vha2Vk
Lgotc3RhdGljIGNvbnN0IGludCBtaW5Db2xvckNvbnRyYXN0VmFsdWUgPSAxMzAwOwogLy8gRm9y
IHRyYW5zcGFyZW50IG9yIHRyYW5zbHVjZW50IGJhY2tncm91bmQgY29sb3IsIHVzZSBsaWdodGVu
aW5nLgotc3RhdGljIGNvbnN0IGZsb2F0IG1pbkRpc2FibGVkQ29sb3JBbHBoYVZhbHVlID0gMC41
OworY29uc3RleHByIGZsb2F0IG1pbkRpc2FibGVkQ29sb3JBbHBoYVZhbHVlID0gMC41OwogCiBD
b2xvciBSZW5kZXJUaGVtZTo6ZGlzYWJsZWRUZXh0Q29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xv
ciwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikgY29uc3QKIHsKICAgICAvLyBUaGUgZXhw
bGljaXQgY2hlY2sgZm9yIGJsYWNrIGlzIGFuIG9wdGltaXphdGlvbiBmb3IgdGhlIDk5JSBjYXNl
IChibGFjayBvbiB3aGl0ZSkuCiAgICAgLy8gVGhpcyBhbHNvIG1lYW5zIHRoYXQgYmxhY2sgb24g
YmxhY2sgd2lsbCB0dXJuIGludG8gZ3JleSBvbiBibGFjayB3aGVuIGRpc2FibGVkLgogICAgIENv
bG9yIGRpc2FibGVkQ29sb3I7Ci0gICAgaWYgKENvbG9yOjppc0JsYWNrQ29sb3IodGV4dENvbG9y
KSB8fCBiYWNrZ3JvdW5kQ29sb3IuYWxwaGFBc0Zsb2F0KCkgPCBtaW5EaXNhYmxlZENvbG9yQWxw
aGFWYWx1ZSB8fCBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIENvbG9yOjp3aGl0ZSkgPiBk
aWZmZXJlbmNlU3F1YXJlZChiYWNrZ3JvdW5kQ29sb3IsIENvbG9yOjp3aGl0ZSkpCi0gICAgICAg
IGRpc2FibGVkQ29sb3IgPSB0ZXh0Q29sb3IubGlnaHQoKTsKKyAgICBpZiAodGV4dENvbG9yID09
IENvbG9yOjpibGFjayB8fCBiYWNrZ3JvdW5kQ29sb3IuYWxwaGFBc0Zsb2F0KCkgPCBtaW5EaXNh
YmxlZENvbG9yQWxwaGFWYWx1ZSB8fCB0ZXh0Q29sb3IubHVtaW5hbmNlKCkgPCBiYWNrZ3JvdW5k
Q29sb3IubHVtaW5hbmNlKCkpCisgICAgICAgIGRpc2FibGVkQ29sb3IgPSB0ZXh0Q29sb3IubGln
aHRlbigpOwogICAgIGVsc2UKLSAgICAgICAgZGlzYWJsZWRDb2xvciA9IHRleHRDb2xvci5kYXJr
KCk7CisgICAgICAgIGRpc2FibGVkQ29sb3IgPSB0ZXh0Q29sb3IuZGFya2VuKCk7CiAgICAgCiAg
ICAgLy8gSWYgdGhlcmUncyBub3QgdmVyeSBtdWNoIGNvbnRyYXN0IGJldHdlZW4gdGhlIGRpc2Fi
bGVkIGNvbG9yIGFuZCB0aGUgYmFja2dyb3VuZCBjb2xvciwKICAgICAvLyBqdXN0IGxlYXZlIHRo
ZSB0ZXh0IGNvbG9yIGFsb25lLiBXZSBkb24ndCB3YW50IHRvIGNoYW5nZSBhIGdvb2QgY29udHJh
c3QgY29sb3Igc2NoZW1lIHNvIHRoYXQgaXQgaGFzIHJlYWxseSBiYWQgY29udHJhc3QuCiAgICAg
Ly8gSWYgdGhlIGNvbnRyYXN0IHdhcyBhbHJlYWR5IHBvb3IsIHRoZW4gaXQgZG9lc24ndCBkbyBh
bnkgZ29vZCB0byBjaGFuZ2UgaXQgdG8gYSBkaWZmZXJlbnQgcG9vciBjb250cmFzdCBjb2xvciBz
Y2hlbWUuCi0gICAgaWYgKGRpZmZlcmVuY2VTcXVhcmVkKGRpc2FibGVkQ29sb3IsIGJhY2tncm91
bmRDb2xvcikgPCBtaW5Db2xvckNvbnRyYXN0VmFsdWUpCisgICAgaWYgKHRleHRDb2xvcklzTGVn
aWJsZUFnYWluc3RCYWNrZ3JvdW5kQ29sb3IoZGlzYWJsZWRDb2xvciwgYmFja2dyb3VuZENvbG9y
KSkKICAgICAgICAgcmV0dXJuIHRleHRDb2xvcjsKLSAgICAKKwogICAgIHJldHVybiBkaXNhYmxl
ZENvbG9yOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRT
dHlsZS5jcHAJKHJldmlzaW9uIDI2MjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0UGFpbnRTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDEyICs3MSw5IEBAIHN0YXRp
YyBDb2xvciBhZGp1c3RDb2xvckZvclZpc2liaWxpdHlPbkIKICAgICBpZiAodGV4dENvbG9ySXNM
ZWdpYmxlQWdhaW5zdEJhY2tncm91bmRDb2xvcih0ZXh0Q29sb3IsIGJhY2tncm91bmRDb2xvcikp
CiAgICAgICAgIHJldHVybiB0ZXh0Q29sb3I7CiAKLSAgICBpbnQgZGlzdGFuY2VGcm9tV2hpdGUg
PSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIENvbG9yOjp3aGl0ZSk7Ci0gICAgaW50IGRp
c3RhbmNlRnJvbUJsYWNrID0gZGlmZmVyZW5jZVNxdWFyZWQodGV4dENvbG9yLCBDb2xvcjo6Ymxh
Y2spOwotICAgIGlmIChkaXN0YW5jZUZyb21XaGl0ZSA8IGRpc3RhbmNlRnJvbUJsYWNrKQotICAg
ICAgICByZXR1cm4gdGV4dENvbG9yLmRhcmsoKTsKLQotICAgIHJldHVybiB0ZXh0Q29sb3IubGln
aHQoKTsKKyAgICBpZiAodGV4dENvbG9yLmx1bWluYW5jZSgpID4gMC41KQorICAgICAgICByZXR1
cm4gdGV4dENvbG9yLmRhcmtlbigpOworICAgIHJldHVybiB0ZXh0Q29sb3IubGlnaHRlbigpOwog
fQogCiBUZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4dFBhaW50U3R5bGUoY29uc3QgRnJhbWUmIGZy
YW1lLCBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401302</attachid>
            <date>2020-06-07 11:00:04 -0700</date>
            <delta_ts>2020-06-07 13:21:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212872-20200607110003.patch</filename>
            <type>text/plain</type>
            <size>10994</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA2LTA3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29sb3JdIFJlcGxhY2UgdXNlcyBv
ZiBkaWZmZXJlbmNlU3F1YXJlZCgpIHdpdGggbHVtaW5hbmNlIGJhc2VkIGNvbXB1dGF0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyODcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29sb3I6OmxpZ2h0ZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmRhcmtlbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bHVtaW5hbmNlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmRpZmZlcmVuY2VTcXVhcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9yOjpsaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xv
cjo6ZGFyayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpsdW1pbmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6c1JHQlRvTGlu
ZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpj
YWxjdWxhdGVCb3JkZXJTdHlsZUNvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmRpc2FibGVkVGV4dENvbG9y
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKToKKwogMjAy
MC0wNi0wNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNd
IEFkZCBzdXBwb3J0IGZvciB3aWR0aDogbWluL21heC1jb250ZW50CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNjI2NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDIyICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdGV4cHIg
U2ltcGxlQ29sb3IgbGlnaHRlbmVkQmxhY2sgeyAweEZGNTQ1NDU0IH07CiBzdGF0aWMgY29uc3Rl
eHByIFNpbXBsZUNvbG9yIGRhcmtlbmVkV2hpdGUgeyAweEZGQUJBQkFCIH07CiAKLWludCBkaWZm
ZXJlbmNlU3F1YXJlZChjb25zdCBDb2xvciYgYzEsIGNvbnN0IENvbG9yJiBjMikKLXsKLSAgICAv
LyBGSVhNRTogRXh0ZW5kZWRDb2xvciAtIG5lZWRzIHRvIGhhbmRsZSBjb2xvciBzcGFjZXMuCi0g
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHJldHVybiBhIGZsb2F0aW5nIHBvaW50
IG51bWJlciwgYnV0IG1hbnkgb2YgdGhlIGNhbGwKLSAgICAvLyBzaXRlcyBoYXZlIHBpY2tlZCBj
b21wYXJpc29uIHZhbHVlcyBiYXNlZCBvbiBmZWVsLiBXZSdkIG5lZWQgdG8gYnJlYWsgb3V0Ci0g
ICAgLy8gb3VyIGxvZ2FyaXRobSB0YWJsZXMgdG8gY2hhbmdlIHRoZW0gOikKLQotICAgIGF1dG8g
W2MxUmVkLCBjMUJsdWUsIGMxR3JlZW4sIGMxQWxwaGFdID0gYzEudG9TUkdCQVNpbXBsZUNvbG9y
TG9zc3koKTsKLSAgICBhdXRvIFtjMlJlZCwgYzJCbHVlLCBjMkdyZWVuLCBjMkFscGhhXSA9IGMy
LnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCk7Ci0KLSAgICBpbnQgZFIgPSBjMVJlZCAtIGMyUmVk
OwotICAgIGludCBkRyA9IGMxR3JlZW4gLSBjMkdyZWVuOwotICAgIGludCBkQiA9IGMxQmx1ZSAt
IGMyQmx1ZTsKLSAgICByZXR1cm4gZFIgKiBkUiArIGRHICogZEcgKyBkQiAqIGRCOwotfQotCiBD
b2xvcjo6Q29sb3IoY29uc3QgQ29sb3ImIG90aGVyKQogICAgIDogbV9jb2xvckRhdGEob3RoZXIu
bV9jb2xvckRhdGEpCiB7CkBAIC0xMTYsNyArMTAwLDcgQEAgU3RyaW5nIENvbG9yOjpuYW1lRm9y
UmVuZGVyVHJlZUFzVGV4dCgpIAogICAgIHJldHVybiBhc1NpbXBsZSgpLnNlcmlhbGl6YXRpb25G
b3JSZW5kZXJUcmVlQXNUZXh0KCk7CiB9CiAKLUNvbG9yIENvbG9yOjpsaWdodCgpIGNvbnN0CitD
b2xvciBDb2xvcjo6bGlnaHRlbigpIGNvbnN0CiB7CiAgICAgLy8gSGFyZGNvZGUgdGhpcyBjb21t
b24gY2FzZSBmb3Igc3BlZWQuCiAgICAgaWYgKCFpc0V4dGVuZGVkKCkgJiYgYXNTaW1wbGUoKSA9
PSBibGFjaykKQEAgLTE0MSw3ICsxMjUsNyBAQCBDb2xvciBDb2xvcjo6bGlnaHQoKSBjb25zdAog
ICAgICk7CiB9CiAKLUNvbG9yIENvbG9yOjpkYXJrKCkgY29uc3QKK0NvbG9yIENvbG9yOjpkYXJr
ZW4oKSBjb25zdAogewogICAgIC8vIEhhcmRjb2RlIHRoaXMgY29tbW9uIGNhc2UgZm9yIHNwZWVk
LgogICAgIGlmICghaXNFeHRlbmRlZCgpICYmIGFzU2ltcGxlKCkgPT0gd2hpdGUpCkBAIC0xNzYs
NiArMTYwLDEyIEBAIGZsb2F0IENvbG9yOjpsaWdodG5lc3MoKSBjb25zdAogICAgIHJldHVybiBX
ZWJDb3JlOjpsaWdodG5lc3ModG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKIH0KIAorZmxvYXQg
Q29sb3I6Omx1bWluYW5jZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFRoaXMgY2FuIHByb2Jh
Ymx5IGF2b2lkIHRvIHNSR0IgYnkgaGF2aW5nIHBlci1jb2xvcnNwYWNlIGFsZ29yaXRobXMgZm9y
IGx1bWluYW5jZSAoZS5nLiBjb252ZXJ0VG9YWVooYykueUNvbXBvbmVudCgpKS4KKyAgICByZXR1
cm4gV2ViQ29yZTo6bHVtaW5hbmNlKHRvU1JHQkFDb21wb25lbnRzTG9zc3koKSk7Cit9CisKIENv
bG9yIENvbG9yOjpibGVuZChjb25zdCBDb2xvciYgc291cmNlKSBjb25zdAogewogICAgIGlmICgh
aXNWaXNpYmxlKCkgfHwgc291cmNlLmlzT3BhcXVlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2MjY1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSwxMCAr
MTM1LDEzIEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIHdpbGwgY29udmVydCBub24tc1JHQiBjb2xv
cnNwYWNlIGNvbG9ycyBpbnRvIHNSR0IuCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3JDb21wb25l
bnRzPGZsb2F0PiB0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkgY29uc3Q7CiAKLSAgICBDb2xvciBs
aWdodCgpIGNvbnN0OwotICAgIENvbG9yIGRhcmsoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBDb2xvciBsaWdodGVuKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgZGFya2Vu
KCkgY29uc3Q7CiAKLSAgICBib29sIGlzRGFyaygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGZsb2F0IGx1bWluYW5jZSgpIGNvbnN0OworCisgICAgLy8gRklYTUU6IFJlcGxhY2UgcmVtYWlu
aW5nIHVzZXMgd2l0aCBsdW1pbmFuY2UuCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Rhcmso
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCBsaWdodG5lc3MoKSBjb25zdDsKIAog
ICAgIC8vIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgUG9ydGVyLUR1ZmYncyAic291cmNl
LW92ZXIiIGVxdWF0aW9uCkBAIC0yMDEsNyArMjA0LDYgQEAgcHVibGljOgogICAgIGZyaWVuZCBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3ImIGEsIGNvbnN0IENvbG9yJiBiKTsKICAgICBmcmll
bmQgYm9vbCBlcXVhbElnbm9yaW5nU2VtYW50aWNDb2xvcihjb25zdCBDb2xvciYgYSwgY29uc3Qg
Q29sb3ImIGIpOwogICAgIGZyaWVuZCBib29sIGV4dGVuZGVkQ29sb3JzRXF1YWwoY29uc3QgQ29s
b3ImLCBjb25zdCBDb2xvciYpOwotICAgIGZyaWVuZCBpbnQgZGlmZmVyZW5jZVNxdWFyZWQoY29u
c3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwogCiAgICAgc3RhdGljIGJvb2wgaXNCbGFja0NvbG9y
KGNvbnN0IENvbG9yJik7CiAgICAgc3RhdGljIGJvb2wgaXNXaGl0ZUNvbG9yKGNvbnN0IENvbG9y
Jik7CkBAIC0yNDQsOCArMjQ2LDYgQEAgYm9vbCBleHRlbmRlZENvbG9yc0VxdWFsKGNvbnN0IENv
bG9yJiwgYwogQ29sb3IgYmxlbmQoY29uc3QgQ29sb3ImIGZyb20sIGNvbnN0IENvbG9yJiB0bywg
ZG91YmxlIHByb2dyZXNzKTsKIENvbG9yIGJsZW5kV2l0aG91dFByZW11bHRpcGx5KGNvbnN0IENv
bG9yJiBmcm9tLCBjb25zdCBDb2xvciYgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CiAKLWludCBkaWZm
ZXJlbmNlU3F1YXJlZChjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJik7Ci0KICNpZiBVU0UoQ0cp
CiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImKTsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjYyNjU5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDcsMjMgKzE0NywxNCBAQCBmbG9hdCBsaWdodG5lc3MoY29uc3QgQ29sb3JDb21wb25lbnRzPGZs
CiAgICAgcmV0dXJuIDAuNWYgKiAobWF4ICsgbWluKTsKIH0KIAotLy8gVGhpcyBpcyBzaW1pbGFy
IHRvIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50IGJ1dCBmb3Igc29tZSByZWFzb24KLS8vIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVt
aW5hbmNlZGVmCi0vLyBkb2Vzbid0IHVzZSB0aGUgc3RhbmRhcmQgc1JHQiAtPiBsaW5lYXJSR0Ig
dGhyZXNob2xkIG9mIDAuMDQwNDUuCi1zdGF0aWMgZmxvYXQgc1JHQlRvTGluZWFyQ29sb3JDb21w
b25lbnRGb3JMdW1pbmFuY2UoZmxvYXQgYykKLXsKLSAgICBpZiAoYyA8PSAwLjAzOTI4ZikKLSAg
ICAgICAgcmV0dXJuIGMgLyAxMi45MmY7Ci0KLSAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3Rk
Ojpwb3coKGMgKyAwLjA1NWYpIC8gMS4wNTVmLCAyLjRmKSwgMCwgMSk7Ci19Ci0KIGZsb2F0IGx1
bWluYW5jZShjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBzUkdCQ29tcG9uZW50cykKIHsK
LSAgICAvLyBWYWx1ZXMgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIw
LTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZgotICAgIHJldHVybiAwLjIxMjZmICogc1JH
QlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2Uoc1JHQkNvbXBvbmVudHNbMF0pCi0g
ICAgICAgICsgMC43MTUyZiAqIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50Rm9yTHVtaW5hbmNl
KHNSR0JDb21wb25lbnRzWzFdKQotICAgICAgICArIDAuMDcyMmYgKiBzUkdCVG9MaW5lYXJDb2xv
ckNvbXBvbmVudEZvckx1bWluYW5jZShzUkdCQ29tcG9uZW50c1syXSk7CisgICAgLy8gTk9URTog
VGhpcyBpcyB0aGUgZXF1aXZpbGVudCBvZiBgbGluZWFyU1JHQlRvWFlaKHJnYlRvTGluZWFyQ29t
cG9uZW50cyhzUkdCQ29tcG9uZW50cykpWzFdYAorICAgIC8vIEZJTVhFOiBJZiB3ZSBjYW4gZ2Vu
ZXJhbGl6ZSBDb2xvck1hdHJpeCBhIGJpdCBtb3JlLCBpdCBtaWdodCBiZSBuaWNlIHRvIHdyaXRl
IHRoaXMgYXM6CisgICAgLy8gICAgICBhdXRvIGxpbmVhclNSR0JDb21wb25lbnRzID0gcmdiVG9M
aW5lYXJDb21wb25lbnRzKHNSR0JDb21wb25lbnRzKTsKKyAgICAvLyAgICAgIHJldHVybiBsaW5l
YXJTUkdCQ29tcG9uZW50cyAqIGxpbmVhclNSR0JUb1hZWk1hdHJpeC5yb3coMSk7CisgICAgYXV0
byBbciwgZywgYiwgYV0gPSByZ2JUb0xpbmVhckNvbXBvbmVudHMoc1JHQkNvbXBvbmVudHMpOwor
ICAgIHJldHVybiAwLjIxMjZmICogciArIDAuNzE1MmYgKiBnICsgMC4wNzIyZiAqIGI7CiB9CiAK
IGZsb2F0IGNvbnRyYXN0UmF0aW8oY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgY29tcG9u
ZW50c0EsIGNvbnN0IENvbG9yQ29tcG9uZW50czxmbG9hdD4mIGNvbXBvbmVudHNCKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDI2MjY1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODE0LDExICsxODE0LDEzIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpjYWxjdWxh
dGVCb3JkZXJTdHlsZUMKIAogICAgIC8vIEhlcmUgd2Ugd2lsbCBkYXJrZW4gdGhlIGJvcmRlciBk
ZWNvcmF0aW9uIGNvbG9yIHdoZW4gbmVlZGVkLiBUaGlzIHdpbGwgeWllbGQgYSBzaW1pbGFyIGJl
aGF2aW9yIGFzIGluIEZGLgogICAgIGlmIChvcGVyYXRpb24gPT0gRGFya2VuKSB7Ci0gICAgICAg
IGlmIChkaWZmZXJlbmNlU3F1YXJlZChjb2xvciwgQ29sb3I6OmJsYWNrKSA+IGRpZmZlcmVuY2VT
cXVhcmVkKGJhc2VEYXJrQ29sb3IsIENvbG9yOjpibGFjaykpCi0gICAgICAgICAgICBjb2xvciA9
IGNvbG9yLmRhcmsoKTsKKyAgICAgICAgLy8gRklYTUU6IFByZWNvbXB1dGUgYmFzZURhcmtDb2xv
ci5sdW1pbmFuY2UoKQorICAgICAgICBpZiAoY29sb3IubHVtaW5hbmNlKCkgPiBDb2xvcihiYXNl
RGFya0NvbG9yKS5sdW1pbmFuY2UoKSkKKyAgICAgICAgICAgIGNvbG9yID0gY29sb3IuZGFya2Vu
KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGRpZmZlcmVuY2VTcXVhcmVkKGNvbG9yLCBD
b2xvcjo6d2hpdGUpID4gZGlmZmVyZW5jZVNxdWFyZWQoYmFzZUxpZ2h0Q29sb3IsIENvbG9yOjp3
aGl0ZSkpCi0gICAgICAgICAgICBjb2xvciA9IGNvbG9yLmxpZ2h0KCk7CisgICAgICAgIC8vIEZJ
WE1FOiBQcmVjb21wdXRlIGJhc2VMaWdodENvbG9yLmx1bWluYW5jZSgpCisgICAgICAgIGlmIChj
b2xvci5sdW1pbmFuY2UoKSA8IENvbG9yKGJhc2VMaWdodENvbG9yKS5sdW1pbmFuY2UoKSkKKyAg
ICAgICAgICAgIGNvbG9yID0gY29sb3IubGlnaHRlbigpOwogICAgIH0KIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCShyZXZpc2lvbiAyNjI2NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiU3BpbkJ1dHRvbkVsZW1lbnQuaCIKICNpbmNs
dWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuaCIKKyNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CkBAIC0xMzgyLDI3ICsxMzgzLDI1IEBAIENv
bG9yIFJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRDb2xvcigpCiAKICNlbmRpZgogCi0vLyBWYWx1
ZSBjaG9zZW4gYnkgb2JzZXJ2YXRpb24uIFRoaXMgY2FuIGJlIHR3ZWFrZWQuCi1zdGF0aWMgY29u
c3QgaW50IG1pbkNvbG9yQ29udHJhc3RWYWx1ZSA9IDEzMDA7CiAvLyBGb3IgdHJhbnNwYXJlbnQg
b3IgdHJhbnNsdWNlbnQgYmFja2dyb3VuZCBjb2xvciwgdXNlIGxpZ2h0ZW5pbmcuCi1zdGF0aWMg
Y29uc3QgZmxvYXQgbWluRGlzYWJsZWRDb2xvckFscGhhVmFsdWUgPSAwLjU7Citjb25zdGV4cHIg
ZmxvYXQgbWluRGlzYWJsZWRDb2xvckFscGhhVmFsdWUgPSAwLjU7CiAKIENvbG9yIFJlbmRlclRo
ZW1lOjpkaXNhYmxlZFRleHRDb2xvcihjb25zdCBDb2xvciYgdGV4dENvbG9yLCBjb25zdCBDb2xv
ciYgYmFja2dyb3VuZENvbG9yKSBjb25zdAogewogICAgIC8vIFRoZSBleHBsaWNpdCBjaGVjayBm
b3IgYmxhY2sgaXMgYW4gb3B0aW1pemF0aW9uIGZvciB0aGUgOTklIGNhc2UgKGJsYWNrIG9uIHdo
aXRlKS4KICAgICAvLyBUaGlzIGFsc28gbWVhbnMgdGhhdCBibGFjayBvbiBibGFjayB3aWxsIHR1
cm4gaW50byBncmV5IG9uIGJsYWNrIHdoZW4gZGlzYWJsZWQuCiAgICAgQ29sb3IgZGlzYWJsZWRD
b2xvcjsKLSAgICBpZiAoQ29sb3I6OmlzQmxhY2tDb2xvcih0ZXh0Q29sb3IpIHx8IGJhY2tncm91
bmRDb2xvci5hbHBoYUFzRmxvYXQoKSA8IG1pbkRpc2FibGVkQ29sb3JBbHBoYVZhbHVlIHx8IGRp
ZmZlcmVuY2VTcXVhcmVkKHRleHRDb2xvciwgQ29sb3I6OndoaXRlKSA+IGRpZmZlcmVuY2VTcXVh
cmVkKGJhY2tncm91bmRDb2xvciwgQ29sb3I6OndoaXRlKSkKLSAgICAgICAgZGlzYWJsZWRDb2xv
ciA9IHRleHRDb2xvci5saWdodCgpOworICAgIGlmICh0ZXh0Q29sb3IgPT0gQ29sb3I6OmJsYWNr
IHx8IGJhY2tncm91bmRDb2xvci5hbHBoYUFzRmxvYXQoKSA8IG1pbkRpc2FibGVkQ29sb3JBbHBo
YVZhbHVlIHx8IHRleHRDb2xvci5sdW1pbmFuY2UoKSA8IGJhY2tncm91bmRDb2xvci5sdW1pbmFu
Y2UoKSkKKyAgICAgICAgZGlzYWJsZWRDb2xvciA9IHRleHRDb2xvci5saWdodGVuKCk7CiAgICAg
ZWxzZQotICAgICAgICBkaXNhYmxlZENvbG9yID0gdGV4dENvbG9yLmRhcmsoKTsKKyAgICAgICAg
ZGlzYWJsZWRDb2xvciA9IHRleHRDb2xvci5kYXJrZW4oKTsKICAgICAKICAgICAvLyBJZiB0aGVy
ZSdzIG5vdCB2ZXJ5IG11Y2ggY29udHJhc3QgYmV0d2VlbiB0aGUgZGlzYWJsZWQgY29sb3IgYW5k
IHRoZSBiYWNrZ3JvdW5kIGNvbG9yLAogICAgIC8vIGp1c3QgbGVhdmUgdGhlIHRleHQgY29sb3Ig
YWxvbmUuIFdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIGEgZ29vZCBjb250cmFzdCBjb2xvciBzY2hl
bWUgc28gdGhhdCBpdCBoYXMgcmVhbGx5IGJhZCBjb250cmFzdC4KICAgICAvLyBJZiB0aGUgY29u
dHJhc3Qgd2FzIGFscmVhZHkgcG9vciwgdGhlbiBpdCBkb2Vzbid0IGRvIGFueSBnb29kIHRvIGNo
YW5nZSBpdCB0byBhIGRpZmZlcmVudCBwb29yIGNvbnRyYXN0IGNvbG9yIHNjaGVtZS4KLSAgICBp
ZiAoZGlmZmVyZW5jZVNxdWFyZWQoZGlzYWJsZWRDb2xvciwgYmFja2dyb3VuZENvbG9yKSA8IG1p
bkNvbG9yQ29udHJhc3RWYWx1ZSkKKyAgICBpZiAodGV4dENvbG9ySXNMZWdpYmxlQWdhaW5zdEJh
Y2tncm91bmRDb2xvcihkaXNhYmxlZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpKQogICAgICAgICBy
ZXR1cm4gdGV4dENvbG9yOwotICAgIAorCiAgICAgcmV0dXJuIGRpc2FibGVkQ29sb3I7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAkocmV2
aXNpb24gMjYyNjU5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsMTIgKzcxLDkgQEAgc3RhdGljIENvbG9yIGFkanVz
dENvbG9yRm9yVmlzaWJpbGl0eU9uQgogICAgIGlmICh0ZXh0Q29sb3JJc0xlZ2libGVBZ2FpbnN0
QmFja2dyb3VuZENvbG9yKHRleHRDb2xvciwgYmFja2dyb3VuZENvbG9yKSkKICAgICAgICAgcmV0
dXJuIHRleHRDb2xvcjsKIAotICAgIGludCBkaXN0YW5jZUZyb21XaGl0ZSA9IGRpZmZlcmVuY2VT
cXVhcmVkKHRleHRDb2xvciwgQ29sb3I6OndoaXRlKTsKLSAgICBpbnQgZGlzdGFuY2VGcm9tQmxh
Y2sgPSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIENvbG9yOjpibGFjayk7Ci0gICAgaWYg
KGRpc3RhbmNlRnJvbVdoaXRlIDwgZGlzdGFuY2VGcm9tQmxhY2spCi0gICAgICAgIHJldHVybiB0
ZXh0Q29sb3IuZGFyaygpOwotCi0gICAgcmV0dXJuIHRleHRDb2xvci5saWdodCgpOworICAgIGlm
ICh0ZXh0Q29sb3IubHVtaW5hbmNlKCkgPiAwLjUpCisgICAgICAgIHJldHVybiB0ZXh0Q29sb3Iu
ZGFya2VuKCk7CisgICAgcmV0dXJuIHRleHRDb2xvci5saWdodGVuKCk7CiB9CiAKIFRleHRQYWlu
dFN0eWxlIGNvbXB1dGVUZXh0UGFpbnRTdHlsZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJl
bmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401305</attachid>
            <date>2020-06-07 13:21:01 -0700</date>
            <delta_ts>2020-06-07 17:54:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212872-20200607132100.patch</filename>
            <type>text/plain</type>
            <size>15696</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjcwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDIwLTA2LTA3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogUmVwbGFj
ZSB1c2VzIG9mIGRpZmZlcmVuY2VTcXVhcmVkKCkgd2l0aCBsdW1pbmFuY2UgYmFzZWQgY29tcHV0
YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTI4NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXBsYWNlIGFsbCB1c2VzIG9mIGRpZmZlcmVuY2VTcXVhcmVkKCkgd2l0aCBsdW1pbmFuY2UgYmFz
ZWQgY29tcGFyaXNvbnMuIFRoaXMgaXMKKyAgICAgICAgcG9zc2libGUgYmVjYXVzZSBhbGwgb2Yg
dGhlIHVzZXMgb2YgZGlmZmVyZW5jZVNxdWFyZWQoKSB3ZXJlIGFib3V0IGlkZW50aWZ5aW5nIGEK
KyAgICAgICAgZGlzdGFuY2UgZnJvbSBibGFjayBvciB3aGl0ZSB0byBkZXRlcm1pbmUgcmVsYXRp
dmUgYnJpZ2h0bmVzcy4gSXQgaXMgbW9yZSBhY2N1cmF0ZQorICAgICAgICB0byBkbyB0aGlzIGlu
IHRlcm1zIG9mIGx1bWluYW5jZSwgYW5kIGhhcyB0aGUgYWRkZWQgYmVuZWZpdCBvZiBiZWluZyBz
b21ldGhpbmcgdGhhdAorICAgICAgICBpcyBleHByZXNzaWJsZSBpbiBhbGwgY29sb3JzcGFjZXMg
KHNpbmNlIGx1bWluYW5jZSBpcyBkZWZpbmVkIGFzIHRoZSBZLWNvbXBvbmVudCAKKyAgICAgICAg
b2YgdGhlIFhZWiBjb2xvcnNwYWNlIHdoaWNoIGFsbCBjb2xvcnNwYWNlcyBhcmUgY29udmVydGFi
bGUgdG8pLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9yOjpsaWdodGVuIGNvbnN0KToKKyAgICAgICAgUmVuYW1lZCBDb2xv
cjo6bGlnaHQoKSB0byBDb2xvcjo6bGlnaHRlbigpLCB3aGljaCBtYWtlcyBtb3JlIHNlbnNlLiBU
aGUgYWxnb3JpdGhtCisgICAgICAgIHVzZWQgc2hvdWxkIGJlIHVwZGF0ZWQgYXQgc29tZSBwb2lu
dCB0byBhbHNvIHVzZSBsdW1pbmFuY2UsIGJ1dCBpcyB1bmNoYW5nZWQgZm9yCisgICAgICAgIG5v
dy4KKworICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmRhcmtlbiBjb25zdCk6CisgICAgICAgIFJl
bmFtZWQgQ29sb3I6OmRhcmsoKSB0byBDb2xvcjo6ZGFya2VuKCksIHdoaWNoIG1ha2VzIG1vcmUg
c2Vuc2UuIFRoZSBhbGdvcml0aG0KKyAgICAgICAgdXNlZCBzaG91bGQgYmUgdXBkYXRlZCBhdCBz
b21lIHBvaW50IHRvIGFsc28gdXNlIGx1bWluYW5jZSwgYnV0IGlzIHVuY2hhbmdlZCBmb3IKKyAg
ICAgICAgbm93LgorCisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bHVtaW5hbmNlIGNvbnN0KToK
KyAgICAgICAgQWRkZWQuIENvbnZlcnRzIHRvIHNSR0IgZm9yIG5vdywgYnV0IGNhbiBiZSB1cGRh
dGVkIHRvIHdvcmsgd2l0aCBvdGhlciBjb2xvciBzcGFjZXMKKyAgICAgICAgd2hlbiBuZWVkZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICBSZW1vdmVk
IGRpZmZlcmVuY2VTcXVhcmVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bHVtaW5hbmNlKToKKyAgICAgICAgVXBk
YXRlZCB0byB1c2UgdGhlIHN0YW5kYXJkIGNvbnZlcnNpb24gdG8gbGluZWFyLXNSR0IuIFdoaWxl
IHRoZXJlIGFyZSBjZXJ0YWlubHkKKyAgICAgICAgc29tZSBwbGFjZXMgdGhhdCBzcGVjaWZ5IGEg
MC4wMzkyOCBjdXRvZmYsIHRoZSBtdWNoIG1vcmUgYWNjZXB0ZWQgdmFsdWUgKGFuZCB2YWx1ZQor
ICAgICAgICBzcGVjaWZpZWQgYnkgdGhlIElFQykgaXMgMC4wNDA0NSwgd2hpY2ggd2UgdXNlIGZv
ciBhbGwgb3RoZXIgZ2FtbWEgY29ycmVjdGlvbi4KKyAgICAgICAgKFNlZSBodHRwczovL2VudHJv
cHltaW5lLmNvbS9pbWFnZXdvcnNlbmVyL3NyZ2Jmb3JtdWxhLyBvciBodHRwczovL2VuLndpa2lw
ZWRpYS5vcmcvd2lraS9TUkdCI1RoZV9mb3J3YXJkX3RyYW5zZm9ybWF0aW9uXyhDSUVfWFlaX3Rv
X3NSR0IpCisgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMpLgorCisgICAgICAg
IEFsc28gYWRkZWQgYSBGSVhNRSBhYm91dCBob3cgaW4gdGhlIGZ1dHVyZSB3ZSBjYW4gYXZvaWQg
aGFyZGNvZGluZyB0aGUgc3BlY2lmaWMgdmFsdWVzCisgICAgICAgIG11bHRpcGxlIHRpbWVzIGJ5
IGV4dHJhY3RpbmcgdGhlbSBmcm9tIHRoZSBsaW5lYXItc1JHQiB0byBYWVogbWF0cml4LgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQ29sb3IpOgorICAgICAgICBVc2UgbHVt
aW5hbmNlLCByYXRoZXIgdGhhbiBkaXN0YW5jZSBhcyBhIGJldHRlciBjb21wYXJpc29uIGZvciB3
aGV0aGVyIHRoZSBjb2xvcgorICAgICAgICBpcyB0b28gZGFyayBvciB0b28gbGlnaHQgZm9yIG1v
ZGlmaWNhdGlvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6ZGlzYWJsZWRUZXh0Q29sb3IgY29uc3QpOgorICAg
ICAgICBVc2UgbHVtaW5hbmNlLCByYXRoZXIgdGhhbiBkaXN0YW5jZSBhcyBhIGJldHRlciBjb21w
YXJpc29uIGZvciB3aGV0aGVyIHRoZSBjb2xvcgorICAgICAgICBpcyB0b28gZGFyayBvciB0b28g
bGlnaHQgZm9yIG1vZGlmaWNhdGlvbi4gQWxzbyByZS11c2VzIGV4aXN0aW5nIHRleHRDb2xvcklz
TGVnaWJsZUFnYWluc3RCYWNrZ3JvdW5kQ29sb3IKKyAgICAgICAgZnVuY3Rpb24gKHdoaWNoIHVz
ZXMgdGhlIFdDQUcgZGVmaW5pdGlvbikgdG8gZGV0ZXJtaW5lIGlsbGVnaWJpbGl0eSBpc3N1ZXMg
ZHVlCisgICAgICAgIHRvIGNvbnRyYXN0LiAKKworICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFp
bnRTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RDb2xvckZvclZpc2liaWxpdHlP
bkJhY2tncm91bmQpOgorICAgICAgICBVc2UgbHVtaW5hbmNlLCByYXRoZXIgdGhhbiBkaXN0YW5j
ZSBhcyBhIGJldHRlciBjb21wYXJpc29uIGZvciB3aGV0aGVyIHRoZSBjb2xvcgorICAgICAgICBp
cyB0b28gZGFyayBvciB0b28gbGlnaHQgZm9yIG1vZGlmaWNhdGlvbi4KKwogMjAyMC0wNi0wNyAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0hlaWdodCBw
ZXJjZW50YWdlXSBTa2lwIGFub255bW91cyB3cmFwcGVycyB3aGVuIHNlYXJjaGluZyBmb3IgZml4
ZWQgaGVpZ2h0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
Y3BwCShyZXZpc2lvbiAyNjI2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIyICszOCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHN0YXRpYyBjb25zdGV4cHIgU2ltcGxlQ29sb3IgbGlnaHRlbmVkQmxhY2sgeyAw
eEZGNTQ1NDU0IH07CiBzdGF0aWMgY29uc3RleHByIFNpbXBsZUNvbG9yIGRhcmtlbmVkV2hpdGUg
eyAweEZGQUJBQkFCIH07CiAKLWludCBkaWZmZXJlbmNlU3F1YXJlZChjb25zdCBDb2xvciYgYzEs
IGNvbnN0IENvbG9yJiBjMikKLXsKLSAgICAvLyBGSVhNRTogRXh0ZW5kZWRDb2xvciAtIG5lZWRz
IHRvIGhhbmRsZSBjb2xvciBzcGFjZXMuCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2Jh
Ymx5IHJldHVybiBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgYnV0IG1hbnkgb2YgdGhlIGNhbGwK
LSAgICAvLyBzaXRlcyBoYXZlIHBpY2tlZCBjb21wYXJpc29uIHZhbHVlcyBiYXNlZCBvbiBmZWVs
LiBXZSdkIG5lZWQgdG8gYnJlYWsgb3V0Ci0gICAgLy8gb3VyIGxvZ2FyaXRobSB0YWJsZXMgdG8g
Y2hhbmdlIHRoZW0gOikKLQotICAgIGF1dG8gW2MxUmVkLCBjMUJsdWUsIGMxR3JlZW4sIGMxQWxw
aGFdID0gYzEudG9TUkdCQVNpbXBsZUNvbG9yTG9zc3koKTsKLSAgICBhdXRvIFtjMlJlZCwgYzJC
bHVlLCBjMkdyZWVuLCBjMkFscGhhXSA9IGMyLnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCk7Ci0K
LSAgICBpbnQgZFIgPSBjMVJlZCAtIGMyUmVkOwotICAgIGludCBkRyA9IGMxR3JlZW4gLSBjMkdy
ZWVuOwotICAgIGludCBkQiA9IGMxQmx1ZSAtIGMyQmx1ZTsKLSAgICByZXR1cm4gZFIgKiBkUiAr
IGRHICogZEcgKyBkQiAqIGRCOwotfQotCiBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3ImIG90aGVy
KQogICAgIDogbV9jb2xvckRhdGEob3RoZXIubV9jb2xvckRhdGEpCiB7CkBAIC0xMTYsNyArMTAw
LDcgQEAgU3RyaW5nIENvbG9yOjpuYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIAogICAgIHJldHVy
biBhc1NpbXBsZSgpLnNlcmlhbGl6YXRpb25Gb3JSZW5kZXJUcmVlQXNUZXh0KCk7CiB9CiAKLUNv
bG9yIENvbG9yOjpsaWdodCgpIGNvbnN0CitDb2xvciBDb2xvcjo6bGlnaHRlbigpIGNvbnN0CiB7
CiAgICAgLy8gSGFyZGNvZGUgdGhpcyBjb21tb24gY2FzZSBmb3Igc3BlZWQuCiAgICAgaWYgKCFp
c0V4dGVuZGVkKCkgJiYgYXNTaW1wbGUoKSA9PSBibGFjaykKQEAgLTE0MSw3ICsxMjUsNyBAQCBD
b2xvciBDb2xvcjo6bGlnaHQoKSBjb25zdAogICAgICk7CiB9CiAKLUNvbG9yIENvbG9yOjpkYXJr
KCkgY29uc3QKK0NvbG9yIENvbG9yOjpkYXJrZW4oKSBjb25zdAogewogICAgIC8vIEhhcmRjb2Rl
IHRoaXMgY29tbW9uIGNhc2UgZm9yIHNwZWVkLgogICAgIGlmICghaXNFeHRlbmRlZCgpICYmIGFz
U2ltcGxlKCkgPT0gd2hpdGUpCkBAIC0xNzYsNiArMTYwLDEyIEBAIGZsb2F0IENvbG9yOjpsaWdo
dG5lc3MoKSBjb25zdAogICAgIHJldHVybiBXZWJDb3JlOjpsaWdodG5lc3ModG9TUkdCQUNvbXBv
bmVudHNMb3NzeSgpKTsKIH0KIAorZmxvYXQgQ29sb3I6Omx1bWluYW5jZSgpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IFRoaXMgY2FuIHByb2JhYmx5IGF2b2lkIGNvbnZlcnNpb24gdG8gc1JHQiBi
eSBoYXZpbmcgcGVyLWNvbG9yc3BhY2UgYWxnb3JpdGhtcyBmb3IgbHVtaW5hbmNlIChlLmcuIGNv
bnZlcnRUb1hZWihjKS55Q29tcG9uZW50KCkpLgorICAgIHJldHVybiBXZWJDb3JlOjpsdW1pbmFu
Y2UodG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKK30KKwogQ29sb3IgQ29sb3I6OmJsZW5kKGNv
bnN0IENvbG9yJiBzb3VyY2UpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1Zpc2libGUoKSB8fCBzb3Vy
Y2UuaXNPcGFxdWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaAkocmV2aXNpb24gMjYyNjU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDEwICsxMzUsMTMgQEAgcHVibGljOgog
ICAgIC8vIFRoaXMgd2lsbCBjb252ZXJ0IG5vbi1zUkdCIGNvbG9yc3BhY2UgY29sb3JzIGludG8g
c1JHQi4KICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+IHRvU1JHQkFD
b21wb25lbnRzTG9zc3koKSBjb25zdDsKIAotICAgIENvbG9yIGxpZ2h0KCkgY29uc3Q7Ci0gICAg
Q29sb3IgZGFyaygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGxpZ2h0ZW4oKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkYXJrZW4oKSBjb25zdDsKIAotICAgIGJv
b2wgaXNEYXJrKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgbHVtaW5hbmNlKCkg
Y29uc3Q7CisKKyAgICAvLyBGSVhNRTogUmVwbGFjZSByZW1haW5pbmcgdXNlcyB3aXRoIGx1bWlu
YW5jZS4KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRGFyaygpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIGZsb2F0IGxpZ2h0bmVzcygpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBpcyBhbiBp
bXBsZW1lbnRhdGlvbiBvZiBQb3J0ZXItRHVmZidzICJzb3VyY2Utb3ZlciIgZXF1YXRpb24KQEAg
LTIwMSw3ICsyMDQsNiBAQCBwdWJsaWM6CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDb2xvciYgYSwgY29uc3QgQ29sb3ImIGIpOwogICAgIGZyaWVuZCBib29sIGVxdWFsSWdub3Jp
bmdTZW1hbnRpY0NvbG9yKGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYik7CiAgICAgZnJp
ZW5kIGJvb2wgZXh0ZW5kZWRDb2xvcnNFcXVhbChjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJik7
Ci0gICAgZnJpZW5kIGludCBkaWZmZXJlbmNlU3F1YXJlZChjb25zdCBDb2xvciYsIGNvbnN0IENv
bG9yJik7CiAKICAgICBzdGF0aWMgYm9vbCBpc0JsYWNrQ29sb3IoY29uc3QgQ29sb3ImKTsKICAg
ICBzdGF0aWMgYm9vbCBpc1doaXRlQ29sb3IoY29uc3QgQ29sb3ImKTsKQEAgLTI0NCw4ICsyNDYs
NiBAQCBib29sIGV4dGVuZGVkQ29sb3JzRXF1YWwoY29uc3QgQ29sb3ImLCBjCiBDb2xvciBibGVu
ZChjb25zdCBDb2xvciYgZnJvbSwgY29uc3QgQ29sb3ImIHRvLCBkb3VibGUgcHJvZ3Jlc3MpOwog
Q29sb3IgYmxlbmRXaXRob3V0UHJlbXVsdGlwbHkoY29uc3QgQ29sb3ImIGZyb20sIGNvbnN0IENv
bG9yJiB0bywgZG91YmxlIHByb2dyZXNzKTsKIAotaW50IGRpZmZlcmVuY2VTcXVhcmVkKGNvbnN0
IENvbG9yJiwgY29uc3QgQ29sb3ImKTsKLQogI2lmIFVTRShDRykKIFdFQkNPUkVfRVhQT1JUIENH
Q29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYpOwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3Bw
CShyZXZpc2lvbiAyNjI2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NywyMyArMTQ3LDE0IEBAIGZs
b2F0IGxpZ2h0bmVzcyhjb25zdCBDb2xvckNvbXBvbmVudHM8ZmwKICAgICByZXR1cm4gMC41ZiAq
IChtYXggKyBtaW4pOwogfQogCi0vLyBUaGlzIGlzIHNpbWlsYXIgdG8gc1JHQlRvTGluZWFyQ29s
b3JDb21wb25lbnQgYnV0IGZvciBzb21lIHJlYXNvbgotLy8gaHR0cHM6Ly93d3cudzMub3JnL1RS
LzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jcmVsYXRpdmVsdW1pbmFuY2VkZWYKLS8vIGRvZXNu
J3QgdXNlIHRoZSBzdGFuZGFyZCBzUkdCIC0+IGxpbmVhclJHQiB0aHJlc2hvbGQgb2YgMC4wNDA0
NS4KLXN0YXRpYyBmbG9hdCBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudEZvckx1bWluYW5jZShm
bG9hdCBjKQotewotICAgIGlmIChjIDw9IDAuMDM5MjhmKQotICAgICAgICByZXR1cm4gYyAvIDEy
LjkyZjsKLQotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6OnBvdygoYyArIDAuMDU1Zikg
LyAxLjA1NWYsIDIuNGYpLCAwLCAxKTsKLX0KLQogZmxvYXQgbHVtaW5hbmNlKGNvbnN0IENvbG9y
Q29tcG9uZW50czxmbG9hdD4mIHNSR0JDb21wb25lbnRzKQogewotICAgIC8vIFZhbHVlcyBmcm9t
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI3JlbGF0aXZl
bHVtaW5hbmNlZGVmCi0gICAgcmV0dXJuIDAuMjEyNmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBv
bmVudEZvckx1bWluYW5jZShzUkdCQ29tcG9uZW50c1swXSkKLSAgICAgICAgKyAwLjcxNTJmICog
c1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2Uoc1JHQkNvbXBvbmVudHNbMV0p
Ci0gICAgICAgICsgMC4wNzIyZiAqIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50Rm9yTHVtaW5h
bmNlKHNSR0JDb21wb25lbnRzWzJdKTsKKyAgICAvLyBOT1RFOiBUaGlzIGlzIHRoZSBlcXVpdmls
ZW50IG9mIGBsaW5lYXJTUkdCVG9YWVoocmdiVG9MaW5lYXJDb21wb25lbnRzKHNSR0JDb21wb25l
bnRzKSlbMV1gCisgICAgLy8gRklNWEU6IElmIHdlIGNhbiBnZW5lcmFsaXplIENvbG9yTWF0cml4
IGEgYml0IG1vcmUsIGl0IG1pZ2h0IGJlIG5pY2UgdG8gd3JpdGUgdGhpcyBhczoKKyAgICAvLyAg
ICAgIGF1dG8gbGluZWFyU1JHQkNvbXBvbmVudHMgPSByZ2JUb0xpbmVhckNvbXBvbmVudHMoc1JH
QkNvbXBvbmVudHMpOworICAgIC8vICAgICAgcmV0dXJuIGxpbmVhclNSR0JDb21wb25lbnRzICog
bGluZWFyU1JHQlRvWFlaTWF0cml4LnJvdygxKTsKKyAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHJn
YlRvTGluZWFyQ29tcG9uZW50cyhzUkdCQ29tcG9uZW50cyk7CisgICAgcmV0dXJuIDAuMjEyNmYg
KiByICsgMC43MTUyZiAqIGcgKyAwLjA3MjJmICogYjsKIH0KIAogZmxvYXQgY29udHJhc3RSYXRp
byhjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBjb21wb25lbnRzQSwgY29uc3QgQ29sb3JD
b21wb25lbnRzPGZsb2F0PiYgY29tcG9uZW50c0IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjYyNjU5KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MDUsOCAr
MTgwNSw4IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpjYWxjdWxhdGVCb3JkZXJTdHlsZUMKICAgICBB
U1NFUlQoc3R5bGUgPT0gQm9yZGVyU3R5bGU6Okluc2V0IHx8IHN0eWxlID09IEJvcmRlclN0eWxl
OjpPdXRzZXQpOwogCiAgICAgLy8gVGhpcyB2YWx1ZXMgd2VyZSBkZXJpdmVkIGVtcGlyaWNhbGx5
LgotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBiYXNlRGFya0NvbG9yIHsgMHhGRjIwMjAyMCB9
OwotICAgIGNvbnN0ZXhwciBTaW1wbGVDb2xvciBiYXNlTGlnaHRDb2xvciB7IDB4RkZFQkVCRUIg
fTsKKyAgICBjb25zdGV4cHIgZmxvYXQgYmFzZURhcmtDb2xvckx1bWluYW5jZSB7IDAuMDE0NDQz
ODQ0ZiB9OyAvLyBMdW1pbmFuY2Ugb2YgU2ltcGxlQ29sb3IgeyAweEZGMjAyMDIwIH0KKyAgICBj
b25zdGV4cHIgZmxvYXQgYmFzZUxpZ2h0Q29sb3JMdW1pbmFuY2UgeyAwLjgzMDc3ZiB9OyAvLyBM
dW1pbmFuY2Ugb2YgU2ltcGxlQ29sb3IgeyAweEZGRUJFQkVCIH0KIAogICAgIGVudW0gT3BlcmF0
aW9uIHsgRGFya2VuLCBMaWdodGVuIH07CiAKQEAgLTE4MTQsMTEgKzE4MTQsMTEgQEAgdm9pZCBS
ZW5kZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQwogCiAgICAgLy8gSGVyZSB3ZSB3aWxs
IGRhcmtlbiB0aGUgYm9yZGVyIGRlY29yYXRpb24gY29sb3Igd2hlbiBuZWVkZWQuIFRoaXMgd2ls
bCB5aWVsZCBhIHNpbWlsYXIgYmVoYXZpb3IgYXMgaW4gRkYuCiAgICAgaWYgKG9wZXJhdGlvbiA9
PSBEYXJrZW4pIHsKLSAgICAgICAgaWYgKGRpZmZlcmVuY2VTcXVhcmVkKGNvbG9yLCBDb2xvcjo6
YmxhY2spID4gZGlmZmVyZW5jZVNxdWFyZWQoYmFzZURhcmtDb2xvciwgQ29sb3I6OmJsYWNrKSkK
LSAgICAgICAgICAgIGNvbG9yID0gY29sb3IuZGFyaygpOworICAgICAgICBpZiAoY29sb3IubHVt
aW5hbmNlKCkgPiBiYXNlRGFya0NvbG9yTHVtaW5hbmNlKQorICAgICAgICAgICAgY29sb3IgPSBj
b2xvci5kYXJrZW4oKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoZGlmZmVyZW5jZVNxdWFy
ZWQoY29sb3IsIENvbG9yOjp3aGl0ZSkgPiBkaWZmZXJlbmNlU3F1YXJlZChiYXNlTGlnaHRDb2xv
ciwgQ29sb3I6OndoaXRlKSkKLSAgICAgICAgICAgIGNvbG9yID0gY29sb3IubGlnaHQoKTsKKyAg
ICAgICAgaWYgKGNvbG9yLmx1bWluYW5jZSgpIDwgYmFzZUxpZ2h0Q29sb3JMdW1pbmFuY2UpCisg
ICAgICAgICAgICBjb2xvciA9IGNvbG9yLmxpZ2h0ZW4oKTsKICAgICB9CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkocmV2aXNpb24gMjYyNjU5KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlNwaW5CdXR0b25FbGVtZW50LmgiCiAjaW5j
bHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmgiCisjaW5jbHVkZSAiVGV4dFBhaW50U3R5bGUuaCIKICNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgpAQCAtMTM4MiwyNyArMTM4MywyNSBAQCBD
b2xvciBSZW5kZXJUaGVtZTo6dGFwSGlnaGxpZ2h0Q29sb3IoKQogCiAjZW5kaWYKIAotLy8gVmFs
dWUgY2hvc2VuIGJ5IG9ic2VydmF0aW9uLiBUaGlzIGNhbiBiZSB0d2Vha2VkLgotc3RhdGljIGNv
bnN0IGludCBtaW5Db2xvckNvbnRyYXN0VmFsdWUgPSAxMzAwOwogLy8gRm9yIHRyYW5zcGFyZW50
IG9yIHRyYW5zbHVjZW50IGJhY2tncm91bmQgY29sb3IsIHVzZSBsaWdodGVuaW5nLgotc3RhdGlj
IGNvbnN0IGZsb2F0IG1pbkRpc2FibGVkQ29sb3JBbHBoYVZhbHVlID0gMC41OworY29uc3RleHBy
IGZsb2F0IG1pbkRpc2FibGVkQ29sb3JBbHBoYVZhbHVlID0gMC41ZjsKIAogQ29sb3IgUmVuZGVy
VGhlbWU6OmRpc2FibGVkVGV4dENvbG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IsIGNvbnN0IENv
bG9yJiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGV4cGxpY2l0IGNoZWNr
IGZvciBibGFjayBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIHRoZSA5OSUgY2FzZSAoYmxhY2sgb24g
d2hpdGUpLgogICAgIC8vIFRoaXMgYWxzbyBtZWFucyB0aGF0IGJsYWNrIG9uIGJsYWNrIHdpbGwg
dHVybiBpbnRvIGdyZXkgb24gYmxhY2sgd2hlbiBkaXNhYmxlZC4KICAgICBDb2xvciBkaXNhYmxl
ZENvbG9yOwotICAgIGlmIChDb2xvcjo6aXNCbGFja0NvbG9yKHRleHRDb2xvcikgfHwgYmFja2dy
b3VuZENvbG9yLmFscGhhQXNGbG9hdCgpIDwgbWluRGlzYWJsZWRDb2xvckFscGhhVmFsdWUgfHwg
ZGlmZmVyZW5jZVNxdWFyZWQodGV4dENvbG9yLCBDb2xvcjo6d2hpdGUpID4gZGlmZmVyZW5jZVNx
dWFyZWQoYmFja2dyb3VuZENvbG9yLCBDb2xvcjo6d2hpdGUpKQotICAgICAgICBkaXNhYmxlZENv
bG9yID0gdGV4dENvbG9yLmxpZ2h0KCk7CisgICAgaWYgKHRleHRDb2xvciA9PSBDb2xvcjo6Ymxh
Y2sgfHwgYmFja2dyb3VuZENvbG9yLmFscGhhQXNGbG9hdCgpIDwgbWluRGlzYWJsZWRDb2xvckFs
cGhhVmFsdWUgfHwgdGV4dENvbG9yLmx1bWluYW5jZSgpIDwgYmFja2dyb3VuZENvbG9yLmx1bWlu
YW5jZSgpKQorICAgICAgICBkaXNhYmxlZENvbG9yID0gdGV4dENvbG9yLmxpZ2h0ZW4oKTsKICAg
ICBlbHNlCi0gICAgICAgIGRpc2FibGVkQ29sb3IgPSB0ZXh0Q29sb3IuZGFyaygpOworICAgICAg
ICBkaXNhYmxlZENvbG9yID0gdGV4dENvbG9yLmRhcmtlbigpOwogICAgIAogICAgIC8vIElmIHRo
ZXJlJ3Mgbm90IHZlcnkgbXVjaCBjb250cmFzdCBiZXR3ZWVuIHRoZSBkaXNhYmxlZCBjb2xvciBh
bmQgdGhlIGJhY2tncm91bmQgY29sb3IsCiAgICAgLy8ganVzdCBsZWF2ZSB0aGUgdGV4dCBjb2xv
ciBhbG9uZS4gV2UgZG9uJ3Qgd2FudCB0byBjaGFuZ2UgYSBnb29kIGNvbnRyYXN0IGNvbG9yIHNj
aGVtZSBzbyB0aGF0IGl0IGhhcyByZWFsbHkgYmFkIGNvbnRyYXN0LgogICAgIC8vIElmIHRoZSBj
b250cmFzdCB3YXMgYWxyZWFkeSBwb29yLCB0aGVuIGl0IGRvZXNuJ3QgZG8gYW55IGdvb2QgdG8g
Y2hhbmdlIGl0IHRvIGEgZGlmZmVyZW50IHBvb3IgY29udHJhc3QgY29sb3Igc2NoZW1lLgotICAg
IGlmIChkaWZmZXJlbmNlU3F1YXJlZChkaXNhYmxlZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpIDwg
bWluQ29sb3JDb250cmFzdFZhbHVlKQorICAgIGlmICh0ZXh0Q29sb3JJc0xlZ2libGVBZ2FpbnN0
QmFja2dyb3VuZENvbG9yKGRpc2FibGVkQ29sb3IsIGJhY2tncm91bmRDb2xvcikpCiAgICAgICAg
IHJldHVybiB0ZXh0Q29sb3I7Ci0gICAgCisKICAgICByZXR1cm4gZGlzYWJsZWRDb2xvcjsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCShy
ZXZpc2lvbiAyNjI2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSwxMiArNzEsOSBAQCBzdGF0aWMgQ29sb3IgYWRq
dXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CCiAgICAgaWYgKHRleHRDb2xvcklzTGVnaWJsZUFnYWlu
c3RCYWNrZ3JvdW5kQ29sb3IodGV4dENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpKQogICAgICAgICBy
ZXR1cm4gdGV4dENvbG9yOwogCi0gICAgaW50IGRpc3RhbmNlRnJvbVdoaXRlID0gZGlmZmVyZW5j
ZVNxdWFyZWQodGV4dENvbG9yLCBDb2xvcjo6d2hpdGUpOwotICAgIGludCBkaXN0YW5jZUZyb21C
bGFjayA9IGRpZmZlcmVuY2VTcXVhcmVkKHRleHRDb2xvciwgQ29sb3I6OmJsYWNrKTsKLSAgICBp
ZiAoZGlzdGFuY2VGcm9tV2hpdGUgPCBkaXN0YW5jZUZyb21CbGFjaykKLSAgICAgICAgcmV0dXJu
IHRleHRDb2xvci5kYXJrKCk7Ci0KLSAgICByZXR1cm4gdGV4dENvbG9yLmxpZ2h0KCk7CisgICAg
aWYgKHRleHRDb2xvci5sdW1pbmFuY2UoKSA+IDAuNSkKKyAgICAgICAgcmV0dXJuIHRleHRDb2xv
ci5kYXJrZW4oKTsKKyAgICByZXR1cm4gdGV4dENvbG9yLmxpZ2h0ZW4oKTsKIH0KIAogVGV4dFBh
aW50U3R5bGUgY29tcHV0ZVRleHRQYWludFN0eWxlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8pCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjI3MDApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAyMC0wNi0wNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgRXh0ZW5kZWQgQ29sb3I6IFJlcGxhY2UgdXNlcyBvZiBkaWZmZXJlbmNlU3F1YXJlZCgpIHdp
dGggbHVtaW5hbmNlIGJhc2VkIGNvbXB1dGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyODcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29s
b3JUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgQWRk
IGJhc2ljIHRlc3RzIGZvciBDb2xvcjo6bHVtaW5hbmNlKCksIGVuc3VyaW5nIHdoaXRlID09IDEs
IGJsYWNrID09IDAsIGFuZCAKKyAgICAgICAgZGFya2VuKCkgYW5kIGxpZ2h0ZW4oKSBjcmVhdCBj
b2xvcnMgd2l0aCBsZXNzIHRoYW4gLyBncmVhdGVyIHRoYW4gbHVtaW5hbmNlLgorCiAyMDIwLTA2
LTA3ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAgICAgICBBbGxvdyBy
dW4tanNjLXN0cmVzcy10ZXN0cyBzdGlsbCBydW4gaWYgc29tZSBvZiB0aGUgcmVtb3RlIGhvc3Rz
IGFyZSBub3QgYXZhaWxhYmxlCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ29sb3JUZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NvbG9yVGVzdHMuY3BwCShyZXZpc2lvbiAyNjI2NTkpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwNyw0ICsyMDcsMjkgQEAgVEVTVChDb2xvciwgVmFsaWRpdHkpCiAgICAgRVhQRUNUX0VRKHNp
bXBsZU90aGVyVmFsaWRDb2xvci5hbHBoYUNvbXBvbmVudCgpLCA0KTsKIH0KIAorVEVTVChDb2xv
ciwgTHVtaW5hbmNlKQoreworICAgIEVYUEVDVF9GTE9BVF9FUShDb2xvcihDb2xvcjo6YmxhY2sp
Lmx1bWluYW5jZSgpLCAwKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoQ29sb3IoQ29sb3I6OndoaXRl
KS5sdW1pbmFuY2UoKSwgMSk7CisKKyAgICBhdXRvIGMgPSBtYWtlU2ltcGxlQ29sb3IoODUsIDkw
LCAxNjApOworICAgIEVYUEVDVF9GTE9BVF9FUShDb2xvcihjKS5sdW1pbmFuY2UoKSwgMC4xMTc4
MTY5Mik7CisKKyAgICBFWFBFQ1RfRVEoYy5yZWRDb21wb25lbnQoKSwgODUpOworICAgIEVYUEVD
VF9FUShjLmdyZWVuQ29tcG9uZW50KCksIDkwKTsKKyAgICBFWFBFQ1RfRVEoYy5ibHVlQ29tcG9u
ZW50KCksIDE2MCk7CisKKyAgICBhdXRvIGNMaWd0ZW5lZCA9IENvbG9yKGMpLmxpZ2h0ZW4oKS50
b1NSR0JBU2ltcGxlQ29sb3JMb3NzeSgpOworICAgIEVYUEVDVF9GTE9BVF9FUShDb2xvcihjTGln
dGVuZWQpLmx1bWluYW5jZSgpLCAwLjI5MjI5NzI0KTsKKyAgICBFWFBFQ1RfRVEoY0xpZ3RlbmVk
LnJlZENvbXBvbmVudCgpLCAxMzApOworICAgIEVYUEVDVF9FUShjTGlndGVuZWQuZ3JlZW5Db21w
b25lbnQoKSwgMTM3KTsKKyAgICBFWFBFQ1RfRVEoY0xpZ3RlbmVkLmJsdWVDb21wb25lbnQoKSwg
MjQ1KTsKKworICAgIGF1dG8gY0RhcmtlbiA9IENvbG9yKGMpLmRhcmtlbigpLnRvU1JHQkFTaW1w
bGVDb2xvckxvc3N5KCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKENvbG9yKGNEYXJrZW4pLmx1bWlu
YW5jZSgpLCAwLjAyNjI4ODQ3Nik7CisgICAgRVhQRUNUX0VRKGNEYXJrZW4ucmVkQ29tcG9uZW50
KCksIDQwKTsKKyAgICBFWFBFQ1RfRVEoY0Rhcmtlbi5ncmVlbkNvbXBvbmVudCgpLCA0Mik7Cisg
ICAgRVhQRUNUX0VRKGNEYXJrZW4uYmx1ZUNvbXBvbmVudCgpLCA3Nik7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401307</attachid>
            <date>2020-06-07 17:54:32 -0700</date>
            <delta_ts>2020-06-08 11:38:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212872-20200607175432.patch</filename>
            <type>text/plain</type>
            <size>15593</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjcwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDIwLTA2LTA3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogUmVwbGFj
ZSB1c2VzIG9mIGRpZmZlcmVuY2VTcXVhcmVkKCkgd2l0aCBsdW1pbmFuY2UgYmFzZWQgY29tcHV0
YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTI4NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXBsYWNlIGFsbCB1c2VzIG9mIGRpZmZlcmVuY2VTcXVhcmVkKCkgd2l0aCBsdW1pbmFuY2UgYmFz
ZWQgY29tcGFyaXNvbnMuIFRoaXMgaXMKKyAgICAgICAgcG9zc2libGUgYmVjYXVzZSBhbGwgb2Yg
dGhlIHVzZXMgb2YgZGlmZmVyZW5jZVNxdWFyZWQoKSB3ZXJlIGFib3V0IGlkZW50aWZ5aW5nIGEK
KyAgICAgICAgZGlzdGFuY2UgZnJvbSBibGFjayBvciB3aGl0ZSB0byBkZXRlcm1pbmUgcmVsYXRp
dmUgYnJpZ2h0bmVzcy4gSXQgaXMgbW9yZSBhY2N1cmF0ZQorICAgICAgICB0byBkbyB0aGlzIGlu
IHRlcm1zIG9mIGx1bWluYW5jZSwgYW5kIGhhcyB0aGUgYWRkZWQgYmVuZWZpdCBvZiBiZWluZyBz
b21ldGhpbmcgdGhhdAorICAgICAgICBpcyBleHByZXNzaWJsZSBpbiBhbGwgY29sb3JzcGFjZXMg
KHNpbmNlIGx1bWluYW5jZSBpcyBkZWZpbmVkIGFzIHRoZSBZLWNvbXBvbmVudCAKKyAgICAgICAg
b2YgdGhlIFhZWiBjb2xvcnNwYWNlIHdoaWNoIGFsbCBjb2xvcnNwYWNlcyBhcmUgY29udmVydGFi
bGUgdG8pLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9yOjpsaWdodGVuIGNvbnN0KToKKyAgICAgICAgUmVuYW1lZCBDb2xv
cjo6bGlnaHQoKSB0byBDb2xvcjo6bGlnaHRlbigpLCB3aGljaCBtYWtlcyBtb3JlIHNlbnNlLiBU
aGUgYWxnb3JpdGhtCisgICAgICAgIHVzZWQgc2hvdWxkIGJlIHVwZGF0ZWQgYXQgc29tZSBwb2lu
dCB0byBhbHNvIHVzZSBsdW1pbmFuY2UsIGJ1dCBpcyB1bmNoYW5nZWQgZm9yCisgICAgICAgIG5v
dy4KKworICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmRhcmtlbiBjb25zdCk6CisgICAgICAgIFJl
bmFtZWQgQ29sb3I6OmRhcmsoKSB0byBDb2xvcjo6ZGFya2VuKCksIHdoaWNoIG1ha2VzIG1vcmUg
c2Vuc2UuIFRoZSBhbGdvcml0aG0KKyAgICAgICAgdXNlZCBzaG91bGQgYmUgdXBkYXRlZCBhdCBz
b21lIHBvaW50IHRvIGFsc28gdXNlIGx1bWluYW5jZSwgYnV0IGlzIHVuY2hhbmdlZCBmb3IKKyAg
ICAgICAgbm93LgorCisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bHVtaW5hbmNlIGNvbnN0KToK
KyAgICAgICAgQWRkZWQuIENvbnZlcnRzIHRvIHNSR0IgZm9yIG5vdywgYnV0IGNhbiBiZSB1cGRh
dGVkIHRvIHdvcmsgd2l0aCBvdGhlciBjb2xvciBzcGFjZXMKKyAgICAgICAgd2hlbiBuZWVkZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICBSZW1vdmVk
IGRpZmZlcmVuY2VTcXVhcmVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bHVtaW5hbmNlKToKKyAgICAgICAgVXBk
YXRlZCB0byB1c2UgdGhlIHN0YW5kYXJkIGNvbnZlcnNpb24gdG8gbGluZWFyLXNSR0IuIFdoaWxl
IHRoZXJlIGFyZSBjZXJ0YWlubHkKKyAgICAgICAgc29tZSBwbGFjZXMgdGhhdCBzcGVjaWZ5IGEg
MC4wMzkyOCBjdXRvZmYsIHRoZSBtdWNoIG1vcmUgYWNjZXB0ZWQgdmFsdWUgKGFuZCB2YWx1ZQor
ICAgICAgICBzcGVjaWZpZWQgYnkgdGhlIElFQykgaXMgMC4wNDA0NSwgd2hpY2ggd2UgdXNlIGZv
ciBhbGwgb3RoZXIgZ2FtbWEgY29ycmVjdGlvbi4KKyAgICAgICAgKFNlZSBodHRwczovL2VudHJv
cHltaW5lLmNvbS9pbWFnZXdvcnNlbmVyL3NyZ2Jmb3JtdWxhLyBvciBodHRwczovL2VuLndpa2lw
ZWRpYS5vcmcvd2lraS9TUkdCI1RoZV9mb3J3YXJkX3RyYW5zZm9ybWF0aW9uXyhDSUVfWFlaX3Rv
X3NSR0IpCisgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMpLgorCisgICAgICAg
IEFsc28gYWRkZWQgYSBGSVhNRSBhYm91dCBob3cgaW4gdGhlIGZ1dHVyZSB3ZSBjYW4gYXZvaWQg
aGFyZGNvZGluZyB0aGUgc3BlY2lmaWMgdmFsdWVzCisgICAgICAgIG11bHRpcGxlIHRpbWVzIGJ5
IGV4dHJhY3RpbmcgdGhlbSBmcm9tIHRoZSBsaW5lYXItc1JHQiB0byBYWVogbWF0cml4LgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQ29sb3IpOgorICAgICAgICBVc2UgbHVt
aW5hbmNlLCByYXRoZXIgdGhhbiBkaXN0YW5jZSBhcyBhIGJldHRlciBjb21wYXJpc29uIGZvciB3
aGV0aGVyIHRoZSBjb2xvcgorICAgICAgICBpcyB0b28gZGFyayBvciB0b28gbGlnaHQgZm9yIG1v
ZGlmaWNhdGlvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6ZGlzYWJsZWRUZXh0Q29sb3IgY29uc3QpOgorICAg
ICAgICBVc2UgbHVtaW5hbmNlLCByYXRoZXIgdGhhbiBkaXN0YW5jZSBhcyBhIGJldHRlciBjb21w
YXJpc29uIGZvciB3aGV0aGVyIHRoZSBjb2xvcgorICAgICAgICBpcyB0b28gZGFyayBvciB0b28g
bGlnaHQgZm9yIG1vZGlmaWNhdGlvbi4gQWxzbyB1cyB0aGUgY29udHJhc3RSYXRpbyB1dGlsaXR5
CisgICAgICAgIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpbGxlZ2liaWxpdHkgaXNzdWVzIGR1ZSB0
byBjb250cmFzdCwgcGlja2luZyBhIG5ldyBtaW5pbXVtCisgICAgICAgIHRoYXQgcm91Z2hseSBt
YXRjaGVzIHRoZSBvbGQgb25lIGJhc2VkIGZhc3QvZm9ybXMvaW5wdXQtZGlzYWJsZWQtY29sb3Iu
aHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmFkanVzdENvbG9yRm9yVmlzaWJpbGl0eU9uQmFja2dyb3VuZCk6CisgICAgICAg
IFVzZSBsdW1pbmFuY2UsIHJhdGhlciB0aGFuIGRpc3RhbmNlIGFzIGEgYmV0dGVyIGNvbXBhcmlz
b24gZm9yIHdoZXRoZXIgdGhlIGNvbG9yCisgICAgICAgIGlzIHRvbyBkYXJrIG9yIHRvbyBsaWdo
dCBmb3IgbW9kaWZpY2F0aW9uLgorCiAyMDIwLTA2LTA3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSGVpZ2h0IHBlcmNlbnRhZ2VdIFNraXAgYW5vbnlt
b3VzIHdyYXBwZXJzIHdoZW4gc2VhcmNoaW5nIGZvciBmaXhlZCBoZWlnaHQKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9uIDI2MjY1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsMjIgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0
ZXhwciBTaW1wbGVDb2xvciBsaWdodGVuZWRCbGFjayB7IDB4RkY1NDU0NTQgfTsKIHN0YXRpYyBj
b25zdGV4cHIgU2ltcGxlQ29sb3IgZGFya2VuZWRXaGl0ZSB7IDB4RkZBQkFCQUIgfTsKIAotaW50
IGRpZmZlcmVuY2VTcXVhcmVkKGNvbnN0IENvbG9yJiBjMSwgY29uc3QgQ29sb3ImIGMyKQotewot
ICAgIC8vIEZJWE1FOiBFeHRlbmRlZENvbG9yIC0gbmVlZHMgdG8gaGFuZGxlIGNvbG9yIHNwYWNl
cy4KLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgcmV0dXJuIGEgZmxvYXRpbmcg
cG9pbnQgbnVtYmVyLCBidXQgbWFueSBvZiB0aGUgY2FsbAotICAgIC8vIHNpdGVzIGhhdmUgcGlj
a2VkIGNvbXBhcmlzb24gdmFsdWVzIGJhc2VkIG9uIGZlZWwuIFdlJ2QgbmVlZCB0byBicmVhayBv
dXQKLSAgICAvLyBvdXIgbG9nYXJpdGhtIHRhYmxlcyB0byBjaGFuZ2UgdGhlbSA6KQotCi0gICAg
YXV0byBbYzFSZWQsIGMxQmx1ZSwgYzFHcmVlbiwgYzFBbHBoYV0gPSBjMS50b1NSR0JBU2ltcGxl
Q29sb3JMb3NzeSgpOwotICAgIGF1dG8gW2MyUmVkLCBjMkJsdWUsIGMyR3JlZW4sIGMyQWxwaGFd
ID0gYzIudG9TUkdCQVNpbXBsZUNvbG9yTG9zc3koKTsKLQotICAgIGludCBkUiA9IGMxUmVkIC0g
YzJSZWQ7Ci0gICAgaW50IGRHID0gYzFHcmVlbiAtIGMyR3JlZW47Ci0gICAgaW50IGRCID0gYzFC
bHVlIC0gYzJCbHVlOwotICAgIHJldHVybiBkUiAqIGRSICsgZEcgKiBkRyArIGRCICogZEI7Ci19
Ci0KIENvbG9yOjpDb2xvcihjb25zdCBDb2xvciYgb3RoZXIpCiAgICAgOiBtX2NvbG9yRGF0YShv
dGhlci5tX2NvbG9yRGF0YSkKIHsKQEAgLTExNiw3ICsxMDAsNyBAQCBTdHJpbmcgQ29sb3I6Om5h
bWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgCiAgICAgcmV0dXJuIGFzU2ltcGxlKCkuc2VyaWFsaXph
dGlvbkZvclJlbmRlclRyZWVBc1RleHQoKTsKIH0KIAotQ29sb3IgQ29sb3I6OmxpZ2h0KCkgY29u
c3QKK0NvbG9yIENvbG9yOjpsaWdodGVuKCkgY29uc3QKIHsKICAgICAvLyBIYXJkY29kZSB0aGlz
IGNvbW1vbiBjYXNlIGZvciBzcGVlZC4KICAgICBpZiAoIWlzRXh0ZW5kZWQoKSAmJiBhc1NpbXBs
ZSgpID09IGJsYWNrKQpAQCAtMTQxLDcgKzEyNSw3IEBAIENvbG9yIENvbG9yOjpsaWdodCgpIGNv
bnN0CiAgICAgKTsKIH0KIAotQ29sb3IgQ29sb3I6OmRhcmsoKSBjb25zdAorQ29sb3IgQ29sb3I6
OmRhcmtlbigpIGNvbnN0CiB7CiAgICAgLy8gSGFyZGNvZGUgdGhpcyBjb21tb24gY2FzZSBmb3Ig
c3BlZWQuCiAgICAgaWYgKCFpc0V4dGVuZGVkKCkgJiYgYXNTaW1wbGUoKSA9PSB3aGl0ZSkKQEAg
LTE3Niw2ICsxNjAsMTIgQEAgZmxvYXQgQ29sb3I6OmxpZ2h0bmVzcygpIGNvbnN0CiAgICAgcmV0
dXJuIFdlYkNvcmU6OmxpZ2h0bmVzcyh0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpOwogfQogCitm
bG9hdCBDb2xvcjo6bHVtaW5hbmNlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBjYW4g
cHJvYmFibHkgYXZvaWQgY29udmVyc2lvbiB0byBzUkdCIGJ5IGhhdmluZyBwZXItY29sb3JzcGFj
ZSBhbGdvcml0aG1zIGZvciBsdW1pbmFuY2UgKGUuZy4gY29udmVydFRvWFlaKGMpLnlDb21wb25l
bnQoKSkuCisgICAgcmV0dXJuIFdlYkNvcmU6Omx1bWluYW5jZSh0b1NSR0JBQ29tcG9uZW50c0xv
c3N5KCkpOworfQorCiBDb2xvciBDb2xvcjo6YmxlbmQoY29uc3QgQ29sb3ImIHNvdXJjZSkgY29u
c3QKIHsKICAgICBpZiAoIWlzVmlzaWJsZSgpIHx8IHNvdXJjZS5pc09wYXF1ZSgpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNjI2NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzUsMTAgKzEzNSwxMyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyB3aWxsIGNvbnZl
cnQgbm9uLXNSR0IgY29sb3JzcGFjZSBjb2xvcnMgaW50byBzUkdCLgogICAgIFdFQkNPUkVfRVhQ
T1JUIENvbG9yQ29tcG9uZW50czxmbG9hdD4gdG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpIGNvbnN0
OwogCi0gICAgQ29sb3IgbGlnaHQoKSBjb25zdDsKLSAgICBDb2xvciBkYXJrKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgbGlnaHRlbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIENvbG9yIGRhcmtlbigpIGNvbnN0OwogCi0gICAgYm9vbCBpc0RhcmsoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBmbG9hdCBsdW1pbmFuY2UoKSBjb25zdDsKKworICAgIC8vIEZJWE1F
OiBSZXBsYWNlIHJlbWFpbmluZyB1c2VzIHdpdGggbHVtaW5hbmNlLgorICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNEYXJrKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgbGlnaHRu
ZXNzKCkgY29uc3Q7CiAKICAgICAvLyBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIFBvcnRl
ci1EdWZmJ3MgInNvdXJjZS1vdmVyIiBlcXVhdGlvbgpAQCAtMjAxLDcgKzIwNCw2IEBAIHB1Ymxp
YzoKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xv
ciYgYik7CiAgICAgZnJpZW5kIGJvb2wgZXF1YWxJZ25vcmluZ1NlbWFudGljQ29sb3IoY29uc3Qg
Q29sb3ImIGEsIGNvbnN0IENvbG9yJiBiKTsKICAgICBmcmllbmQgYm9vbCBleHRlbmRlZENvbG9y
c0VxdWFsKGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImKTsKLSAgICBmcmllbmQgaW50IGRpZmZl
cmVuY2VTcXVhcmVkKGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImKTsKIAogICAgIHN0YXRpYyBi
b29sIGlzQmxhY2tDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHN0YXRpYyBib29sIGlzV2hpdGVD
b2xvcihjb25zdCBDb2xvciYpOwpAQCAtMjQ0LDggKzI0Niw2IEBAIGJvb2wgZXh0ZW5kZWRDb2xv
cnNFcXVhbChjb25zdCBDb2xvciYsIGMKIENvbG9yIGJsZW5kKGNvbnN0IENvbG9yJiBmcm9tLCBj
b25zdCBDb2xvciYgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CiBDb2xvciBibGVuZFdpdGhvdXRQcmVt
dWx0aXBseShjb25zdCBDb2xvciYgZnJvbSwgY29uc3QgQ29sb3ImIHRvLCBkb3VibGUgcHJvZ3Jl
c3MpOwogCi1pbnQgZGlmZmVyZW5jZVNxdWFyZWQoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYp
OwotCiAjaWYgVVNFKENHKQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9y
KGNvbnN0IENvbG9yJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDI2MjY1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ3LDIzICsxNDcsMTQgQEAgZmxvYXQgbGlnaHRuZXNzKGNvbnN0IENv
bG9yQ29tcG9uZW50czxmbAogICAgIHJldHVybiAwLjVmICogKG1heCArIG1pbik7CiB9CiAKLS8v
IFRoaXMgaXMgc2ltaWxhciB0byBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudCBidXQgZm9yIHNv
bWUgcmVhc29uCi0vLyBodHRwczovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgx
MjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZgotLy8gZG9lc24ndCB1c2UgdGhlIHN0YW5kYXJkIHNS
R0IgLT4gbGluZWFyUkdCIHRocmVzaG9sZCBvZiAwLjA0MDQ1Lgotc3RhdGljIGZsb2F0IHNSR0JU
b0xpbmVhckNvbG9yQ29tcG9uZW50Rm9yTHVtaW5hbmNlKGZsb2F0IGMpCi17Ci0gICAgaWYgKGMg
PD0gMC4wMzkyOGYpCi0gICAgICAgIHJldHVybiBjIC8gMTIuOTJmOwotCi0gICAgcmV0dXJuIGNs
YW1wVG88ZmxvYXQ+KHN0ZDo6cG93KChjICsgMC4wNTVmKSAvIDEuMDU1ZiwgMi40ZiksIDAsIDEp
OwotfQotCiBmbG9hdCBsdW1pbmFuY2UoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0PiYgc1JH
QkNvbXBvbmVudHMpCiB7Ci0gICAgLy8gVmFsdWVzIGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RS
LzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jcmVsYXRpdmVsdW1pbmFuY2VkZWYKLSAgICByZXR1
cm4gMC4yMTI2ZiAqIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50Rm9yTHVtaW5hbmNlKHNSR0JD
b21wb25lbnRzWzBdKQotICAgICAgICArIDAuNzE1MmYgKiBzUkdCVG9MaW5lYXJDb2xvckNvbXBv
bmVudEZvckx1bWluYW5jZShzUkdCQ29tcG9uZW50c1sxXSkKLSAgICAgICAgKyAwLjA3MjJmICog
c1JHQlRvTGluZWFyQ29sb3JDb21wb25lbnRGb3JMdW1pbmFuY2Uoc1JHQkNvbXBvbmVudHNbMl0p
OworICAgIC8vIE5PVEU6IFRoaXMgaXMgdGhlIGVxdWl2aWxlbnQgb2YgYGxpbmVhclNSR0JUb1hZ
WihyZ2JUb0xpbmVhckNvbXBvbmVudHMoc1JHQkNvbXBvbmVudHMpKVsxXWAKKyAgICAvLyBGSU1Y
RTogSWYgd2UgY2FuIGdlbmVyYWxpemUgQ29sb3JNYXRyaXggYSBiaXQgbW9yZSwgaXQgbWlnaHQg
YmUgbmljZSB0byB3cml0ZSB0aGlzIGFzOgorICAgIC8vICAgICAgYXV0byBsaW5lYXJTUkdCQ29t
cG9uZW50cyA9IHJnYlRvTGluZWFyQ29tcG9uZW50cyhzUkdCQ29tcG9uZW50cyk7CisgICAgLy8g
ICAgICByZXR1cm4gbGluZWFyU1JHQkNvbXBvbmVudHMgKiBsaW5lYXJTUkdCVG9YWVpNYXRyaXgu
cm93KDEpOworICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gcmdiVG9MaW5lYXJDb21wb25lbnRzKHNS
R0JDb21wb25lbnRzKTsKKyAgICByZXR1cm4gMC4yMTI2ZiAqIHIgKyAwLjcxNTJmICogZyArIDAu
MDcyMmYgKiBiOwogfQogCiBmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IENvbG9yQ29tcG9uZW50
czxmbG9hdD4mIGNvbXBvbmVudHNBLCBjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQ+JiBjb21w
b25lbnRzQikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CShyZXZpc2lvbiAyNjI2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwNSw4ICsxODA1LDggQEAgdm9pZCBSZW5kZXJP
YmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQwogICAgIEFTU0VSVChzdHlsZSA9PSBCb3JkZXJT
dHlsZTo6SW5zZXQgfHwgc3R5bGUgPT0gQm9yZGVyU3R5bGU6Ok91dHNldCk7CiAKICAgICAvLyBU
aGlzIHZhbHVlcyB3ZXJlIGRlcml2ZWQgZW1waXJpY2FsbHkuCi0gICAgY29uc3RleHByIFNpbXBs
ZUNvbG9yIGJhc2VEYXJrQ29sb3IgeyAweEZGMjAyMDIwIH07Ci0gICAgY29uc3RleHByIFNpbXBs
ZUNvbG9yIGJhc2VMaWdodENvbG9yIHsgMHhGRkVCRUJFQiB9OworICAgIGNvbnN0ZXhwciBmbG9h
dCBiYXNlRGFya0NvbG9yTHVtaW5hbmNlIHsgMC4wMTQ0NDM4NDRmIH07IC8vIEx1bWluYW5jZSBv
ZiBTaW1wbGVDb2xvciB7IDB4RkYyMDIwMjAgfQorICAgIGNvbnN0ZXhwciBmbG9hdCBiYXNlTGln
aHRDb2xvckx1bWluYW5jZSB7IDAuODMwNzdmIH07IC8vIEx1bWluYW5jZSBvZiBTaW1wbGVDb2xv
ciB7IDB4RkZFQkVCRUIgfQogCiAgICAgZW51bSBPcGVyYXRpb24geyBEYXJrZW4sIExpZ2h0ZW4g
fTsKIApAQCAtMTgxNCwxMSArMTgxNCwxMSBAQCB2b2lkIFJlbmRlck9iamVjdDo6Y2FsY3VsYXRl
Qm9yZGVyU3R5bGVDCiAKICAgICAvLyBIZXJlIHdlIHdpbGwgZGFya2VuIHRoZSBib3JkZXIgZGVj
b3JhdGlvbiBjb2xvciB3aGVuIG5lZWRlZC4gVGhpcyB3aWxsIHlpZWxkIGEgc2ltaWxhciBiZWhh
dmlvciBhcyBpbiBGRi4KICAgICBpZiAob3BlcmF0aW9uID09IERhcmtlbikgewotICAgICAgICBp
ZiAoZGlmZmVyZW5jZVNxdWFyZWQoY29sb3IsIENvbG9yOjpibGFjaykgPiBkaWZmZXJlbmNlU3F1
YXJlZChiYXNlRGFya0NvbG9yLCBDb2xvcjo6YmxhY2spKQotICAgICAgICAgICAgY29sb3IgPSBj
b2xvci5kYXJrKCk7CisgICAgICAgIGlmIChjb2xvci5sdW1pbmFuY2UoKSA+IGJhc2VEYXJrQ29s
b3JMdW1pbmFuY2UpCisgICAgICAgICAgICBjb2xvciA9IGNvbG9yLmRhcmtlbigpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGlmIChkaWZmZXJlbmNlU3F1YXJlZChjb2xvciwgQ29sb3I6OndoaXRl
KSA+IGRpZmZlcmVuY2VTcXVhcmVkKGJhc2VMaWdodENvbG9yLCBDb2xvcjo6d2hpdGUpKQotICAg
ICAgICAgICAgY29sb3IgPSBjb2xvci5saWdodCgpOworICAgICAgICBpZiAoY29sb3IubHVtaW5h
bmNlKCkgPCBiYXNlTGlnaHRDb2xvckx1bWluYW5jZSkKKyAgICAgICAgICAgIGNvbG9yID0gY29s
b3IubGlnaHRlbigpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCShyZXZpc2lvbiAyNjI2NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgzLDI2ICsxMzgzLDI3
IEBAIENvbG9yIFJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRDb2xvcigpCiAjZW5kaWYKIAogLy8g
VmFsdWUgY2hvc2VuIGJ5IG9ic2VydmF0aW9uLiBUaGlzIGNhbiBiZSB0d2Vha2VkLgotc3RhdGlj
IGNvbnN0IGludCBtaW5Db2xvckNvbnRyYXN0VmFsdWUgPSAxMzAwOworY29uc3RleHByIGZsb2F0
IG1pbkNvbG9yQ29udHJhc3RWYWx1ZSA9IDEuMWY7CisKIC8vIEZvciB0cmFuc3BhcmVudCBvciB0
cmFuc2x1Y2VudCBiYWNrZ3JvdW5kIGNvbG9yLCB1c2UgbGlnaHRlbmluZy4KLXN0YXRpYyBjb25z
dCBmbG9hdCBtaW5EaXNhYmxlZENvbG9yQWxwaGFWYWx1ZSA9IDAuNTsKK2NvbnN0ZXhwciBmbG9h
dCBtaW5EaXNhYmxlZENvbG9yQWxwaGFWYWx1ZSA9IDAuNWY7CiAKIENvbG9yIFJlbmRlclRoZW1l
OjpkaXNhYmxlZFRleHRDb2xvcihjb25zdCBDb2xvciYgdGV4dENvbG9yLCBjb25zdCBDb2xvciYg
YmFja2dyb3VuZENvbG9yKSBjb25zdAogewogICAgIC8vIFRoZSBleHBsaWNpdCBjaGVjayBmb3Ig
YmxhY2sgaXMgYW4gb3B0aW1pemF0aW9uIGZvciB0aGUgOTklIGNhc2UgKGJsYWNrIG9uIHdoaXRl
KS4KICAgICAvLyBUaGlzIGFsc28gbWVhbnMgdGhhdCBibGFjayBvbiBibGFjayB3aWxsIHR1cm4g
aW50byBncmV5IG9uIGJsYWNrIHdoZW4gZGlzYWJsZWQuCiAgICAgQ29sb3IgZGlzYWJsZWRDb2xv
cjsKLSAgICBpZiAoQ29sb3I6OmlzQmxhY2tDb2xvcih0ZXh0Q29sb3IpIHx8IGJhY2tncm91bmRD
b2xvci5hbHBoYUFzRmxvYXQoKSA8IG1pbkRpc2FibGVkQ29sb3JBbHBoYVZhbHVlIHx8IGRpZmZl
cmVuY2VTcXVhcmVkKHRleHRDb2xvciwgQ29sb3I6OndoaXRlKSA+IGRpZmZlcmVuY2VTcXVhcmVk
KGJhY2tncm91bmRDb2xvciwgQ29sb3I6OndoaXRlKSkKLSAgICAgICAgZGlzYWJsZWRDb2xvciA9
IHRleHRDb2xvci5saWdodCgpOworICAgIGlmIChlcXVhbElnbm9yaW5nU2VtYW50aWNDb2xvcih0
ZXh0Q29sb3IsIENvbG9yOjpibGFjaykgfHwgYmFja2dyb3VuZENvbG9yLmFscGhhQXNGbG9hdCgp
IDwgbWluRGlzYWJsZWRDb2xvckFscGhhVmFsdWUgfHwgdGV4dENvbG9yLmx1bWluYW5jZSgpIDwg
YmFja2dyb3VuZENvbG9yLmx1bWluYW5jZSgpKQorICAgICAgICBkaXNhYmxlZENvbG9yID0gdGV4
dENvbG9yLmxpZ2h0ZW4oKTsKICAgICBlbHNlCi0gICAgICAgIGRpc2FibGVkQ29sb3IgPSB0ZXh0
Q29sb3IuZGFyaygpOworICAgICAgICBkaXNhYmxlZENvbG9yID0gdGV4dENvbG9yLmRhcmtlbigp
OwogICAgIAogICAgIC8vIElmIHRoZXJlJ3Mgbm90IHZlcnkgbXVjaCBjb250cmFzdCBiZXR3ZWVu
IHRoZSBkaXNhYmxlZCBjb2xvciBhbmQgdGhlIGJhY2tncm91bmQgY29sb3IsCiAgICAgLy8ganVz
dCBsZWF2ZSB0aGUgdGV4dCBjb2xvciBhbG9uZS4gV2UgZG9uJ3Qgd2FudCB0byBjaGFuZ2UgYSBn
b29kIGNvbnRyYXN0IGNvbG9yIHNjaGVtZSBzbyB0aGF0IGl0IGhhcyByZWFsbHkgYmFkIGNvbnRy
YXN0LgogICAgIC8vIElmIHRoZSBjb250cmFzdCB3YXMgYWxyZWFkeSBwb29yLCB0aGVuIGl0IGRv
ZXNuJ3QgZG8gYW55IGdvb2QgdG8gY2hhbmdlIGl0IHRvIGEgZGlmZmVyZW50IHBvb3IgY29udHJh
c3QgY29sb3Igc2NoZW1lLgotICAgIGlmIChkaWZmZXJlbmNlU3F1YXJlZChkaXNhYmxlZENvbG9y
LCBiYWNrZ3JvdW5kQ29sb3IpIDwgbWluQ29sb3JDb250cmFzdFZhbHVlKQorICAgIGlmIChjb250
cmFzdFJhdGlvKGRpc2FibGVkQ29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpLCBiYWNrZ3Jv
dW5kQ29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKSA8IG1pbkNvbG9yQ29udHJhc3RWYWx1
ZSkKICAgICAgICAgcmV0dXJuIHRleHRDb2xvcjsKLSAgICAKKwogICAgIHJldHVybiBkaXNhYmxl
ZENvbG9yOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRT
dHlsZS5jcHAJKHJldmlzaW9uIDI2MjY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0UGFpbnRTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDEyICs3MSw5IEBAIHN0YXRp
YyBDb2xvciBhZGp1c3RDb2xvckZvclZpc2liaWxpdHlPbkIKICAgICBpZiAodGV4dENvbG9ySXNM
ZWdpYmxlQWdhaW5zdEJhY2tncm91bmRDb2xvcih0ZXh0Q29sb3IsIGJhY2tncm91bmRDb2xvcikp
CiAgICAgICAgIHJldHVybiB0ZXh0Q29sb3I7CiAKLSAgICBpbnQgZGlzdGFuY2VGcm9tV2hpdGUg
PSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIENvbG9yOjp3aGl0ZSk7Ci0gICAgaW50IGRp
c3RhbmNlRnJvbUJsYWNrID0gZGlmZmVyZW5jZVNxdWFyZWQodGV4dENvbG9yLCBDb2xvcjo6Ymxh
Y2spOwotICAgIGlmIChkaXN0YW5jZUZyb21XaGl0ZSA8IGRpc3RhbmNlRnJvbUJsYWNrKQotICAg
ICAgICByZXR1cm4gdGV4dENvbG9yLmRhcmsoKTsKLQotICAgIHJldHVybiB0ZXh0Q29sb3IubGln
aHQoKTsKKyAgICBpZiAodGV4dENvbG9yLmx1bWluYW5jZSgpID4gMC41KQorICAgICAgICByZXR1
cm4gdGV4dENvbG9yLmRhcmtlbigpOworICAgIHJldHVybiB0ZXh0Q29sb3IubGlnaHRlbigpOwog
fQogCiBUZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4dFBhaW50U3R5bGUoY29uc3QgRnJhbWUmIGZy
YW1lLCBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbykKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI2MjcwMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDIwLTA2LTA3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNv
bT4KKworICAgICAgICBFeHRlbmRlZCBDb2xvcjogUmVwbGFjZSB1c2VzIG9mIGRpZmZlcmVuY2VT
cXVhcmVkKCkgd2l0aCBsdW1pbmFuY2UgYmFzZWQgY29tcHV0YXRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI4NzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Db2xvclRlc3RzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICBBZGQgYmFzaWMgdGVzdHMgZm9yIENvbG9yOjpsdW1pbmFuY2UoKSwgZW5zdXJpbmcg
d2hpdGUgPT0gMSwgYmxhY2sgPT0gMCwgYW5kIAorICAgICAgICBkYXJrZW4oKSBhbmQgbGlnaHRl
bigpIGNyZWF0IGNvbG9ycyB3aXRoIGxlc3MgdGhhbiAvIGdyZWF0ZXIgdGhhbiBsdW1pbmFuY2Uu
CisKIDIwMjAtMDYtMDcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAg
ICAgIEFsbG93IHJ1bi1qc2Mtc3RyZXNzLXRlc3RzIHN0aWxsIHJ1biBpZiBzb21lIG9mIHRoZSBy
ZW1vdGUgaG9zdHMgYXJlIG5vdCBhdmFpbGFibGUKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JUZXN0cy5jcHAJKHJldmlzaW9uIDI2MjY1OSkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjA3LDQgKzIwNywyOSBAQCBURVNUKENvbG9yLCBWYWxpZGl0eSkKICAgICBF
WFBFQ1RfRVEoc2ltcGxlT3RoZXJWYWxpZENvbG9yLmFscGhhQ29tcG9uZW50KCksIDQpOwogfQog
CitURVNUKENvbG9yLCBMdW1pbmFuY2UpCit7CisgICAgRVhQRUNUX0ZMT0FUX0VRKENvbG9yKENv
bG9yOjpibGFjaykubHVtaW5hbmNlKCksIDApOworICAgIEVYUEVDVF9GTE9BVF9FUShDb2xvcihD
b2xvcjo6d2hpdGUpLmx1bWluYW5jZSgpLCAxKTsKKworICAgIGF1dG8gYyA9IG1ha2VTaW1wbGVD
b2xvcig4NSwgOTAsIDE2MCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKENvbG9yKGMpLmx1bWluYW5j
ZSgpLCAwLjExNzgxNjkyKTsKKworICAgIEVYUEVDVF9FUShjLnJlZENvbXBvbmVudCgpLCA4NSk7
CisgICAgRVhQRUNUX0VRKGMuZ3JlZW5Db21wb25lbnQoKSwgOTApOworICAgIEVYUEVDVF9FUShj
LmJsdWVDb21wb25lbnQoKSwgMTYwKTsKKworICAgIGF1dG8gY0xpZ3RlbmVkID0gQ29sb3IoYyku
bGlnaHRlbigpLnRvU1JHQkFTaW1wbGVDb2xvckxvc3N5KCk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KENvbG9yKGNMaWd0ZW5lZCkubHVtaW5hbmNlKCksIDAuMjkyMjk3MjQpOworICAgIEVYUEVDVF9F
UShjTGlndGVuZWQucmVkQ29tcG9uZW50KCksIDEzMCk7CisgICAgRVhQRUNUX0VRKGNMaWd0ZW5l
ZC5ncmVlbkNvbXBvbmVudCgpLCAxMzcpOworICAgIEVYUEVDVF9FUShjTGlndGVuZWQuYmx1ZUNv
bXBvbmVudCgpLCAyNDUpOworCisgICAgYXV0byBjRGFya2VuID0gQ29sb3IoYykuZGFya2VuKCku
dG9TUkdCQVNpbXBsZUNvbG9yTG9zc3koKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoQ29sb3IoY0Rh
cmtlbikubHVtaW5hbmNlKCksIDAuMDI2Mjg4NDc2KTsKKyAgICBFWFBFQ1RfRVEoY0Rhcmtlbi5y
ZWRDb21wb25lbnQoKSwgNDApOworICAgIEVYUEVDVF9FUShjRGFya2VuLmdyZWVuQ29tcG9uZW50
KCksIDQyKTsKKyAgICBFWFBFQ1RfRVEoY0Rhcmtlbi5ibHVlQ29tcG9uZW50KCksIDc2KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>