<?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>256537</bug_id>
          
          <creation_ts>2023-05-09 11:36:39 -0700</creation_ts>
          <short_desc>[Repaint] Cleanup RenderElement::repaintAfterLayoutIfNeeded</short_desc>
          <delta_ts>2023-05-09 19:33:19 -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>Layout and Rendering</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>
          
          <blocked>251176</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</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>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1954091</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-05-09 11:36:39 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954106</commentid>
    <comment_count>1</comment_count>
      <attachid>466296</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-05-09 12:21:31 -0700</bug_when>
    <thetext>Created attachment 466296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954107</commentid>
    <comment_count>2</comment_count>
      <attachid>466297</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-05-09 12:29:16 -0700</bug_when>
    <thetext>Created attachment 466297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954128</commentid>
    <comment_count>3</comment_count>
      <attachid>466297</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2023-05-09 14:07:59 -0700</bug_when>
    <thetext>Comment on attachment 466297
Patch

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

&gt; Source/WebCore/rendering/RenderElement.cpp:1287
&gt; +    auto width = absoluteValue(newOutlineAndBoxShadowBox.width() - oldOutlineAndBoxShadowBox.width());

Nicer to compute a size delta  (with &quot;delta&quot; in the name).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954165</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-05-09 15:24:11 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Comment on attachment 466297 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=466297&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderElement.cpp:1287
&gt; &gt; +    auto width = absoluteValue(newOutlineAndBoxShadowBox.width() - oldOutlineAndBoxShadowBox.width());
&gt; 
&gt; Nicer to compute a size delta  (with &quot;delta&quot; in the name).
Good point!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954177</commentid>
    <comment_count>5</comment_count>
      <attachid>466300</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-05-09 16:01:27 -0700</bug_when>
    <thetext>Created attachment 466300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954226</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-05-09 19:32:33 -0700</bug_when>
    <thetext>Committed 263890@main (e10f145ce649): &lt;https://commits.webkit.org/263890@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 466300.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954227</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-05-09 19:33:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/109131286&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466296</attachid>
            <date>2023-05-09 12:21:31 -0700</date>
            <delta_ts>2023-05-09 12:29:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>20193</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">Y29tbWl0IDcyNjkzYzk1MzI1YmFiYzQxMDI5ZWEyMzU0NzhiMGVkZjU2MTFmOWYKQXV0aG9yOiBB
bGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6ICAgVHVlIE1heSA5IDExOjM2OjUw
IDIwMjMgLTA3MDAKCiAgICBbUmVwYWludF0gQ2xlYW51cCBSZW5kZXJFbGVtZW50OjpyZXBhaW50
QWZ0ZXJMYXlvdXRJZk5lZWRlZAogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI1NjUzNwogICAgCiAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KICAgIAog
ICAgMS4gUmVuYW1lIGluY29taW5nIHBhcmFtZXRlcnMgdG8gaW5kaWNhdGUKICAgICAgLSB3aGV0
aGVyIHRoZXkgYXJlIGNsaXBwZWQgb3IgdW5jbGlwcGVkCiAgICAgIC0gd2hhdCB0aGV5IGFjdHVh
bGx5IGluY2x1ZGUgKG91dGxpbmUgdnMuIG91dGxpbmUgYW5kIGJveCBzaGFkb3cpCiAgICAyLiBS
ZW1vdmUgcmVkdW5kYW50L21pc2xlYWRpbmcgY29tbWVudChzKSAoZS5nLiAxNjgxNEBtYWluIGNo
YW5nZWQgdGhlICJXZSBkaWRuJ3QgbW92ZSwgYnV0IHdlIGRpZCBjaGFuZ2Ugc2l6ZS4iIHBhcnQg
d2hlcmUgbm93IHNpemUgY2hhbmdpbmcgZ2V0cyBoYW5kbGVzIGJvdGggYmVmb3JlIGFuZCBhZnRl
ciB0aGUgY29tbWVudCkuCiAgICAzLiBJbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucyBmb3IgZWFj
aCBDU1MgcHJvcGVydHkgdGhhdCBtYXkgZXhwYW5kIHRoZSBkYW1hZ2VkIGFyZWEgKHRoZXkgbWFr
ZSB0aGlzIGFkZGl0aW9uYWwgcmVwYWludCBsb2dpYyBlYXNpZXIgdG8gcmVhc29uIGFib3V0KS4K
ICAgIAogICAgTGV0J3MgbG9vayBhdCBhIHZlcnkgc2ltcGxlIGV4YW1wbGUgKGJveCBzaHJpbmtz
IHZlcnRpY2FsbHkpLgogICAgCiAgICBiZWZvcmU6CiAgICAKICAgICAgICA3MHB4CiAgICAgX19f
X19fX19fCiAgICB8ICAgICAgICAgfAogICAgfCAgICAgICAgIHwgIDEwMHB4CiAgICB8ICAgICAg
ICAgfAogICAgfCAgICAgICAgIHwKICAgIHxfX19fX19fX198CiAgICAKICAgIGFmdGVyOgogICAg
CiAgICAgICAgNzBweAogICAgIF9fX19fX19fXwogICAgfCAgICAgICAgIHwKICAgIHwgICAgICAg
ICB8ICA2MHB4CiAgICB8X19fX19fX19ffAogICAgCiAgICBXaXRoIG5vIGRlY29yYXRpb24gKGFz
c3VtZSB0aGVzZSBib3ggbGluZXMgYXJlIG5vdCBib3JkZXJzL291dGxpbmVzIGV0YyBsaWtlIDxk
aXYgc3R5bGU9IndpZHRoOiA3MHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBn
cmVlbiI+PC9kaXY+KSBvbiB0aGlzIGJveCwKICAgIHRoZSAiZGVsdGEiIGxvZ2ljIChhYm92ZSB0
aGUgY2xlYW51cCBwYXJ0KSBjb21wbGV0ZWx5IHRha2VzIGNhcmUgdGhlIGRhbWFnZWQgYXJlYSBi
eSBpc3N1aW5nIGEgcmVwYWludCBhdCBbMHB4LCA2MHB4LCA3MHB4LCA0MHB4XS4KICAgIFRoZSBz
dWJzZXF1ZW50IHBhaW50IHdpbGwgcHV0IHNvbWUgbmV3IHBpeGVscyBpbiB0aGVyZSByZW1vdmlu
ZyBhbGwgdGhlIG9sZCBjb250ZW50IChiYWNrZ3JvdW5kIGNvbG9yKS4KICAgIAogICAgICAgIDcw
cHgKICAgICBfX19fX19fX18KICAgIHwgICAgICAgICB8CiAgICB8ICAgICAgICAgfCAgNjBweAog
ICAgfF9fX19fX19fX3wKICAgICoqKioqKioqKioqCiAgICAqKioqKioqKioqKgogICAgCiAgICAo
d2hlcmUgJyonIG1lYW5zIGRhbWFnZWQgcGl4ZWwpCiAgICAKICAgIEhvd2V2ZXIgd2l0aCBzb21l
IGRlY29yYXRpb25zIChhbmQgbGV0J3MganVzdCBnbyB3aXRoIHRoZSBzaW1wbGVzdCBjYXNlIGhl
cmU7IGEgYm9yZGVyKSwgd2l0aG91dCBkYW1hZ2luZyBhZGRpdGlvbmFsIGNhbnZhcyBzcGFjZQog
ICAgdGhlIGJvdHRvbSBkZWNvcmF0aW9uIChib3JkZXIpIHdvdWxkIG5vdCBiZSB2aXNpYmxlIGF0
IGFsbCBhZnRlciB0aGUgc3Vic2VxdWVudCBwYWludC4KICAgIAogICAgICAgIDcwcHgKICAgICBf
X19fX19fX18KICAgIHwgICAgICAgICB8CiAgICB8ICAgICAgICAgfCAgNjBweAogICAgfCAgICAg
ICAgIHwKICAgIAogICAgXl4gd2UgaXNzdWUgcmVwYWludCBvbiB0aGUgcGl4ZWxzIHdoZXJlIHRo
ZSBib3JkZXIgdXNlZCB0byBiZSwgYnV0IG5vdCB3aGVyZSBpdCBpcyBub3cuCiAgICAKICAgIFNv
IGluc3RlYWQgd2UgbmVlZCB0byBleHRlbmQgdGhlIHJlcGFpbnQgcmVjdCBieSBmaW5kaW5nIG91
dCB3aGF0IGVsc2Ugd2UgaGF2ZSBpbiB0aGF0IGJveCB0aGF0IG5lZWQgYWRkaXRpb25hbCBwYWlu
dCAoZS5nLiBib3JkZXIsIG5lZ2F0aXZlIG91dGxpbmUsIGluc2V0IGJveCBzaGFkb3cgZXRjKS4K
ICAgIChhbmQgdGhhdCdzIHdoYXQgdGhpcyBjaGFuZ2UgaXMgYWJvdXQpLgogICAgCiAgICAgICAg
NzBweAogICAgIF9fX19fX19fXwogICAgfCAgICAgICAgIHwKICAgIHwgICAgICAgICB8ICA2MHB4
CiAgICAqKioqKioqKioqKgogICAgKioqKioqKioqKioKICAgICoqKioqKioqKioqCiAgICAKICAg
ICogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgogICAgKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKToKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggNWE4MmZhNDU3YTgxLi42
OGFmYWE2YTcwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAKQEAgLTEyMDUsMjEgKzEyMDUsMjEgQEAgc3RhdGljIGJvb2wgbXVzdFJlcGFpbnRCYWNrZ3Jv
dW5kT3JCb3JkZXIoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIFJlbmRlckVsZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVk
KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExh
eW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgb2xkT3V0bGluZUJveCwgY29u
c3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyLCBjb25zdCBMYXlvdXRSZWN0KiBuZXdPdXRsaW5l
Qm94UmVjdFB0cikKK2Jvb2wgUmVuZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVk
ZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3Qg
TGF5b3V0UmVjdCYgb2xkQ2xpcHBlZE92ZXJmbG93UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgb2xk
T3V0bGluZUFuZEJveFNoYWRvd0JveCwgY29uc3QgTGF5b3V0UmVjdCogbmV3Q2xpcHBlZE92ZXJm
bG93UmVjdFB0ciwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0bGluZUFuZEJveFNoYWRvd0JveFJl
Y3RQdHIpCiB7CiAgICAgaWYgKHZpZXcoKS5wcmludGluZygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7IC8vIERvbid0IHJlcGFpbnQgaWYgd2UncmUgcHJpbnRpbmcuCiAKICAgICAvLyBUaGlzIEFT
U0VSVCBmYWlscyBkdWUgdG8gYW5pbWF0aW9ucy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNzA0OAotICAgIC8vIEFTU0VSVCghbmV3Qm91bmRzUHRyIHx8ICpu
ZXdCb3VuZHNQdHIgPT0gY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRh
aW5lcikpOwotICAgIExheW91dFJlY3QgbmV3Qm91bmRzID0gbmV3Qm91bmRzUHRyID8gKm5ld0Jv
dW5kc1B0ciA6IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIp
OwotICAgIExheW91dFJlY3QgbmV3T3V0bGluZUJveDsKKyAgICAvLyBBU1NFUlQoIW5ld0NsaXBw
ZWRPdmVyZmxvd1JlY3RQdHIgfHwgKm5ld0NsaXBwZWRPdmVyZmxvd1JlY3RQdHIgPT0gY2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcikpOworICAgIExheW91dFJl
Y3QgbmV3Q2xpcHBlZE92ZXJmbG93UmVjdCA9IG5ld0NsaXBwZWRPdmVyZmxvd1JlY3RQdHIgPyAq
bmV3Q2xpcHBlZE92ZXJmbG93UmVjdFB0ciA6IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KHJlcGFpbnRDb250YWluZXIpOworICAgIExheW91dFJlY3QgbmV3T3V0bGluZUFuZEJveFNoYWRv
d0JveDsKIAogICAgIGJvb2wgZnVsbFJlcGFpbnQgPSBzZWxmTmVlZHNMYXlvdXQoKTsKIAotICAg
IGlmICghZnVsbFJlcGFpbnQgJiYgb2xkQm91bmRzICE9IG5ld0JvdW5kcyAmJiBzdHlsZSgpLmhh
c0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIGF1dG8gb2xkUmFkaXVzID0gc3R5bGUoKS5nZXRS
b3VuZGVkQm9yZGVyRm9yKG9sZEJvdW5kcykucmFkaWkoKTsKLSAgICAgICAgYXV0byBuZXdSYWRp
dXMgPSBzdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IobmV3Qm91bmRzKS5yYWRpaSgpOworICAg
IGlmICghZnVsbFJlcGFpbnQgJiYgb2xkQ2xpcHBlZE92ZXJmbG93UmVjdCAhPSBuZXdDbGlwcGVk
T3ZlcmZsb3dSZWN0ICYmIHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkpIHsKKyAgICAgICAgYXV0
byBvbGRSYWRpdXMgPSBzdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3Iob2xkQ2xpcHBlZE92ZXJm
bG93UmVjdCkucmFkaWkoKTsKKyAgICAgICAgYXV0byBuZXdSYWRpdXMgPSBzdHlsZSgpLmdldFJv
dW5kZWRCb3JkZXJGb3IobmV3Q2xpcHBlZE92ZXJmbG93UmVjdCkucmFkaWkoKTsKIAogICAgICAg
ICBmdWxsUmVwYWludCA9IG9sZFJhZGl1cyAhPSBuZXdSYWRpdXM7CiAgICAgfQpAQCAtMTIyNywx
MDAgKzEyMjcsMTQzIEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZO
ZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwCiAgICAgaWYgKCFmdWxsUmVw
YWludCkgewogICAgICAgICAvLyBUaGlzIEFTU0VSVCBmYWlscyBkdWUgdG8gYW5pbWF0aW9ucy4g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzA0OAogICAgICAg
ICAvLyBBU1NFUlQoIW5ld091dGxpbmVCb3hSZWN0UHRyIHx8ICpuZXdPdXRsaW5lQm94UmVjdFB0
ciA9PSBvdXRsaW5lQm91bmRzRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKSk7Ci0gICAgICAg
IG5ld091dGxpbmVCb3ggPSBuZXdPdXRsaW5lQm94UmVjdFB0ciA/ICpuZXdPdXRsaW5lQm94UmVj
dFB0ciA6IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpOwotICAgICAg
ICBmdWxsUmVwYWludCA9IChuZXdPdXRsaW5lQm94LmxvY2F0aW9uKCkgIT0gb2xkT3V0bGluZUJv
eC5sb2NhdGlvbigpIHx8IChtdXN0UmVwYWludEJhY2tncm91bmRPckJvcmRlcigqdGhpcykgJiYg
KG5ld0JvdW5kcyAhPSBvbGRCb3VuZHMgfHwgbmV3T3V0bGluZUJveCAhPSBvbGRPdXRsaW5lQm94
KSkpOworICAgICAgICBuZXdPdXRsaW5lQW5kQm94U2hhZG93Qm94ID0gbmV3T3V0bGluZUFuZEJv
eFNoYWRvd0JveFJlY3RQdHIgPyAqbmV3T3V0bGluZUFuZEJveFNoYWRvd0JveFJlY3RQdHIgOiBv
dXRsaW5lQm91bmRzRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKKyAgICAgICAgZnVsbFJl
cGFpbnQgPSAobmV3T3V0bGluZUFuZEJveFNoYWRvd0JveC5sb2NhdGlvbigpICE9IG9sZE91dGxp
bmVBbmRCb3hTaGFkb3dCb3gubG9jYXRpb24oKSB8fCAobXVzdFJlcGFpbnRCYWNrZ3JvdW5kT3JC
b3JkZXIoKnRoaXMpICYmIChuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0ICE9IG9sZENsaXBwZWRPdmVy
Zmxvd1JlY3QgfHwgbmV3T3V0bGluZUFuZEJveFNoYWRvd0JveCAhPSBvbGRPdXRsaW5lQW5kQm94
U2hhZG93Qm94KSkpOwogICAgIH0KIAogICAgIGlmICghcmVwYWludENvbnRhaW5lcikKICAgICAg
ICAgcmVwYWludENvbnRhaW5lciA9ICZ2aWV3KCk7CiAKICAgICBpZiAoZnVsbFJlcGFpbnQpIHsK
LSAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIG9sZEJvdW5k
cyk7Ci0gICAgICAgIGlmIChuZXdCb3VuZHMgIT0gb2xkQm91bmRzKQotICAgICAgICAgICAgcmVw
YWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIG5ld0JvdW5kcyk7CisgICAgICAg
IHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBvbGRDbGlwcGVkT3ZlcmZs
b3dSZWN0KTsKKyAgICAgICAgaWYgKG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QgIT0gb2xkQ2xpcHBl
ZE92ZXJmbG93UmVjdCkKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50
Q29udGFpbmVyLCBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0KTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgaWYgKG5ld0JvdW5kcyA9PSBvbGRCb3VuZHMgJiYgbmV3T3V0bGluZUJv
eCA9PSBvbGRPdXRsaW5lQm94KQorICAgIGlmIChuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0ID09IG9s
ZENsaXBwZWRPdmVyZmxvd1JlY3QgJiYgbmV3T3V0bGluZUFuZEJveFNoYWRvd0JveCA9PSBvbGRP
dXRsaW5lQW5kQm94U2hhZG93Qm94KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
bmV3Qm91bmRzLmlzRW1wdHkoKSAmJiAhb2xkQm91bmRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmVw
YWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIG9sZEJvdW5kcyk7Ci0gICAgZWxz
ZSBpZiAoIW5ld0JvdW5kcy5pc0VtcHR5KCkgJiYgb2xkQm91bmRzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIG5ld0JvdW5kcyk7Cisg
ICAgaWYgKG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QuaXNFbXB0eSgpICYmICFvbGRDbGlwcGVkT3Zl
cmZsb3dSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFp
bnRDb250YWluZXIsIG9sZENsaXBwZWRPdmVyZmxvd1JlY3QpOworICAgIGVsc2UgaWYgKCFuZXdD
bGlwcGVkT3ZlcmZsb3dSZWN0LmlzRW1wdHkoKSAmJiBvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0Lmlz
RW1wdHkoKSkKKyAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIs
IG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QpOwogICAgIGVsc2UgewotICAgICAgICBMYXlvdXRVbml0
IGRlbHRhTGVmdCA9IG5ld0JvdW5kcy54KCkgLSBvbGRCb3VuZHMueCgpOworICAgICAgICBMYXlv
dXRVbml0IGRlbHRhTGVmdCA9IG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QueCgpIC0gb2xkQ2xpcHBl
ZE92ZXJmbG93UmVjdC54KCk7CiAgICAgICAgIGlmIChkZWx0YUxlZnQgPiAwKQotICAgICAgICAg
ICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3Qob2xk
Qm91bmRzLngoKSwgb2xkQm91bmRzLnkoKSwgZGVsdGFMZWZ0LCBvbGRCb3VuZHMuaGVpZ2h0KCkp
KTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBM
YXlvdXRSZWN0KG9sZENsaXBwZWRPdmVyZmxvd1JlY3QueCgpLCBvbGRDbGlwcGVkT3ZlcmZsb3dS
ZWN0LnkoKSwgZGVsdGFMZWZ0LCBvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0LmhlaWdodCgpKSk7CiAg
ICAgICAgIGVsc2UgaWYgKGRlbHRhTGVmdCA8IDApCi0gICAgICAgICAgICByZXBhaW50VXNpbmdD
b250YWluZXIocmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdChuZXdCb3VuZHMueCgpLCBuZXdC
b3VuZHMueSgpLCAtZGVsdGFMZWZ0LCBuZXdCb3VuZHMuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAg
IHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0KG5ld0Ns
aXBwZWRPdmVyZmxvd1JlY3QueCgpLCBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LnkoKSwgLWRlbHRh
TGVmdCwgbmV3Q2xpcHBlZE92ZXJmbG93UmVjdC5oZWlnaHQoKSkpOwogCi0gICAgICAgIExheW91
dFVuaXQgZGVsdGFSaWdodCA9IG5ld0JvdW5kcy5tYXhYKCkgLSBvbGRCb3VuZHMubWF4WCgpOwor
ICAgICAgICBMYXlvdXRVbml0IGRlbHRhUmlnaHQgPSBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0Lm1h
eFgoKSAtIG9sZENsaXBwZWRPdmVyZmxvd1JlY3QubWF4WCgpOwogICAgICAgICBpZiAoZGVsdGFS
aWdodCA+IDApCi0gICAgICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRh
aW5lciwgTGF5b3V0UmVjdChvbGRCb3VuZHMubWF4WCgpLCBuZXdCb3VuZHMueSgpLCBkZWx0YVJp
Z2h0LCBuZXdCb3VuZHMuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRh
aW5lcihyZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0KG9sZENsaXBwZWRPdmVyZmxvd1JlY3Qu
bWF4WCgpLCBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LnkoKSwgZGVsdGFSaWdodCwgbmV3Q2xpcHBl
ZE92ZXJmbG93UmVjdC5oZWlnaHQoKSkpOwogICAgICAgICBlbHNlIGlmIChkZWx0YVJpZ2h0IDwg
MCkKLSAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBM
YXlvdXRSZWN0KG5ld0JvdW5kcy5tYXhYKCksIG9sZEJvdW5kcy55KCksIC1kZWx0YVJpZ2h0LCBv
bGRCb3VuZHMuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihy
ZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0KG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QubWF4WCgp
LCBvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0LnkoKSwgLWRlbHRhUmlnaHQsIG9sZENsaXBwZWRPdmVy
Zmxvd1JlY3QuaGVpZ2h0KCkpKTsKIAotICAgICAgICBMYXlvdXRVbml0IGRlbHRhVG9wID0gbmV3
Qm91bmRzLnkoKSAtIG9sZEJvdW5kcy55KCk7CisgICAgICAgIExheW91dFVuaXQgZGVsdGFUb3Ag
PSBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LnkoKSAtIG9sZENsaXBwZWRPdmVyZmxvd1JlY3QueSgp
OwogICAgICAgICBpZiAoZGVsdGFUb3AgPiAwKQotICAgICAgICAgICAgcmVwYWludFVzaW5nQ29u
dGFpbmVyKHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3Qob2xkQm91bmRzLngoKSwgb2xkQm91
bmRzLnkoKSwgb2xkQm91bmRzLndpZHRoKCksIGRlbHRhVG9wKSk7CisgICAgICAgICAgICByZXBh
aW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdChvbGRDbGlwcGVk
T3ZlcmZsb3dSZWN0LngoKSwgb2xkQ2xpcHBlZE92ZXJmbG93UmVjdC55KCksIG9sZENsaXBwZWRP
dmVyZmxvd1JlY3Qud2lkdGgoKSwgZGVsdGFUb3ApKTsKICAgICAgICAgZWxzZSBpZiAoZGVsdGFU
b3AgPCAwKQotICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWlu
ZXIsIExheW91dFJlY3QobmV3Qm91bmRzLngoKSwgbmV3Qm91bmRzLnkoKSwgbmV3Qm91bmRzLndp
ZHRoKCksIC1kZWx0YVRvcCkpOworICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QobmV3Q2xpcHBlZE92ZXJmbG93UmVjdC54KCksIG5l
d0NsaXBwZWRPdmVyZmxvd1JlY3QueSgpLCBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LndpZHRoKCks
IC1kZWx0YVRvcCkpOwogCi0gICAgICAgIExheW91dFVuaXQgZGVsdGFCb3R0b20gPSBuZXdCb3Vu
ZHMubWF4WSgpIC0gb2xkQm91bmRzLm1heFkoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBkZWx0YUJv
dHRvbSA9IG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QubWF4WSgpIC0gb2xkQ2xpcHBlZE92ZXJmbG93
UmVjdC5tYXhZKCk7CiAgICAgICAgIGlmIChkZWx0YUJvdHRvbSA+IDApCi0gICAgICAgICAgICBy
ZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdChuZXdCb3Vu
ZHMueCgpLCBvbGRCb3VuZHMubWF4WSgpLCBuZXdCb3VuZHMud2lkdGgoKSwgZGVsdGFCb3R0b20p
KTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBM
YXlvdXRSZWN0KG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QueCgpLCBvbGRDbGlwcGVkT3ZlcmZsb3dS
ZWN0Lm1heFkoKSwgbmV3Q2xpcHBlZE92ZXJmbG93UmVjdC53aWR0aCgpLCBkZWx0YUJvdHRvbSkp
OwogICAgICAgICBlbHNlIGlmIChkZWx0YUJvdHRvbSA8IDApCi0gICAgICAgICAgICByZXBhaW50
VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdChvbGRCb3VuZHMueCgp
LCBuZXdCb3VuZHMubWF4WSgpLCBvbGRCb3VuZHMud2lkdGgoKSwgLWRlbHRhQm90dG9tKSk7Cisg
ICAgICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgTGF5b3V0
UmVjdChvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0LngoKSwgbmV3Q2xpcHBlZE92ZXJmbG93UmVjdC5t
YXhZKCksIG9sZENsaXBwZWRPdmVyZmxvd1JlY3Qud2lkdGgoKSwgLWRlbHRhQm90dG9tKSk7CiAg
ICAgfQogCi0gICAgaWYgKG5ld091dGxpbmVCb3ggPT0gb2xkT3V0bGluZUJveCkKKyAgICBpZiAo
bmV3T3V0bGluZUFuZEJveFNoYWRvd0JveCA9PSBvbGRPdXRsaW5lQW5kQm94U2hhZG93Qm94KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBXZSBkaWRuJ3QgbW92ZSwgYnV0IHdlIGRp
ZCBjaGFuZ2Ugc2l6ZS4gSW52YWxpZGF0ZSB0aGUgZGVsdGEsIHdoaWNoIHdpbGwgY29uc2lzdCBv
ZiBwb3NzaWJseQotICAgIC8vIHR3byByZWN0YW5nbGVzIChidXQgdHlwaWNhbGx5IG9ubHkgb25l
KS4KKyAgICAvLyBMZXQncyBmaWd1cmUgb3V0IGhvdyBtdWNoIHdlIG5lZWQgdG8gcmVwYWludCB3
aXRoaW4gdGhlIG5ldyBib3VuZHMuCisgICAgLy8gZS5nLiB3aGVuIHJlbmRlcmVyIHNocmlua3Mg
dmVydGljYWxseSBpdCdzIG5vdCBzdWZmaWNpZW50IHRvIHJlcGFpbnQgdGhlICJzaHJ1bmsgYXJl
YSIgKHRvIGNsZWFyIG9sZCBjb250ZW50LCBzZWUgYWJvdmUpIHdlIG5lZWQgdG8gdGFrZSBjYXJl
IG9mIHRoZSBhcmVhIHdpdGhpbiB0aGUgbmV3IGJvdW5kcyB0byBtYWtlIHN1cmUKKyAgICAvLyBk
ZWNvcmF0aW9ucyBsaWtlIGJvcmRlciwgb3V0bGluZSBldGMgZ2V0IHJlcGFpbnRlZCBhcyB3ZWxs
ICh0aGV5IGFyZSBlbmNsb3NlZCBieSBvbGQvbmV3IGJvdW5kcykuCiAgICAgY29uc3QgUmVuZGVy
U3R5bGUmIG91dGxpbmVTdHlsZSA9IG91dGxpbmVTdHlsZUZvclJlcGFpbnQoKTsKLSAgICBMYXlv
dXRVbml0IG91dGxpbmVXaWR0aCB7IG91dGxpbmVTdHlsZS5vdXRsaW5lU2l6ZSgpIH07Ci0gICAg
YXV0byBpbnNldFNoYWRvd0V4dGVudCA9IHN0eWxlKCkuYm94U2hhZG93SW5zZXRFeHRlbnQoKTsK
LSAgICBMYXlvdXRVbml0IHdpZHRoID0gYWJzb2x1dGVWYWx1ZShuZXdPdXRsaW5lQm94LndpZHRo
KCkgLSBvbGRPdXRsaW5lQm94LndpZHRoKCkpOworICAgIGF1dG8mIHN0eWxlID0gdGhpcy0+c3R5
bGUoKTsKKyAgICBhdXRvIG91dGxpbmVXaWR0aCA9IExheW91dFVuaXQgeyBvdXRsaW5lU3R5bGUu
b3V0bGluZVNpemUoKSB9OworICAgIGF1dG8gaW5zZXRTaGFkb3dFeHRlbnQgPSBzdHlsZS5ib3hT
aGFkb3dJbnNldEV4dGVudCgpOworICAgIGF1dG8gd2lkdGggPSBhYnNvbHV0ZVZhbHVlKG5ld091
dGxpbmVBbmRCb3hTaGFkb3dCb3gud2lkdGgoKSAtIG9sZE91dGxpbmVBbmRCb3hTaGFkb3dCb3gu
d2lkdGgoKSk7CiAgICAgaWYgKHdpZHRoKSB7Ci0gICAgICAgIExheW91dFVuaXQgc2hhZG93TGVm
dDsKLSAgICAgICAgTGF5b3V0VW5pdCBzaGFkb3dSaWdodDsKLSAgICAgICAgc3R5bGUoKS5nZXRC
b3hTaGFkb3dIb3Jpem9udGFsRXh0ZW50KHNoYWRvd0xlZnQsIHNoYWRvd1JpZ2h0KTsKLSAgICAg
ICAgTGF5b3V0VW5pdCBib3JkZXJSaWdodCA9IGlzPFJlbmRlckJveD4oKnRoaXMpID8gZG93bmNh
c3Q8UmVuZGVyQm94PigqdGhpcykuYm9yZGVyUmlnaHQoKSA6IDBfbHU7Ci0gICAgICAgIExheW91
dFVuaXQgYm94V2lkdGggPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckJv
eD4oKnRoaXMpLndpZHRoKCkgOiAwX2x1OwotICAgICAgICBMYXlvdXRVbml0IG1pbkluc2V0Umln
aHRTaGFkb3dFeHRlbnQgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PigtaW5zZXRTaGFkb3dFeHRlbnQu
cmlnaHQoKSwgc3RkOjptaW4obmV3Qm91bmRzLndpZHRoKCksIG9sZEJvdW5kcy53aWR0aCgpKSk7
Ci0gICAgICAgIExheW91dFVuaXQgYm9yZGVyV2lkdGggPSBzdGQ6Om1heChib3JkZXJSaWdodCwg
c3RkOjptYXgodmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndp
ZHRoLCBib3hXaWR0aCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS53aWR0aCwgYm94V2lkdGgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgZGVjb3JhdGlv
bnNXaWR0aCA9IHN0ZDo6bWF4KExheW91dFVuaXQoLW91dGxpbmVTdHlsZS5vdXRsaW5lT2Zmc2V0
KCkpLCBib3JkZXJXaWR0aCArIG1pbkluc2V0UmlnaHRTaGFkb3dFeHRlbnQpICsgc3RkOjptYXgo
b3V0bGluZVdpZHRoLCBzaGFkb3dSaWdodCk7Ci0gICAgICAgIExheW91dFJlY3QgcmlnaHRSZWN0
KG5ld091dGxpbmVCb3gueCgpICsgc3RkOjptaW4obmV3T3V0bGluZUJveC53aWR0aCgpLCBvbGRP
dXRsaW5lQm94LndpZHRoKCkpIC0gZGVjb3JhdGlvbnNXaWR0aCwKLSAgICAgICAgICAgIG5ld091
dGxpbmVCb3gueSgpLAotICAgICAgICAgICAgd2lkdGggKyBkZWNvcmF0aW9uc1dpZHRoLAotICAg
ICAgICAgICAgc3RkOjptYXgobmV3T3V0bGluZUJveC5oZWlnaHQoKSwgb2xkT3V0bGluZUJveC5o
ZWlnaHQoKSkpOwotICAgICAgICBMYXlvdXRVbml0IHJpZ2h0ID0gc3RkOjptaW4obmV3Qm91bmRz
Lm1heFgoKSwgb2xkQm91bmRzLm1heFgoKSk7Ci0gICAgICAgIGlmIChyaWdodFJlY3QueCgpIDwg
cmlnaHQpIHsKLSAgICAgICAgICAgIHJpZ2h0UmVjdC5zZXRXaWR0aChzdGQ6Om1pbihyaWdodFJl
Y3Qud2lkdGgoKSwgcmlnaHQgLSByaWdodFJlY3QueCgpKSk7Ci0gICAgICAgICAgICByZXBhaW50
VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcmlnaHRSZWN0KTsKKyAgICAgICAgYXV0
byBpbnNldEV4dGVudCA9IFsmXSB7CisgICAgICAgICAgICAvLyBJbnNldCAiY29udGVudCIgaXMg
aW5zaWRlIHRoZSBib3JkZXIgYm94IChlLmcuIGJvcmRlciwgbmVnYXRpdmUgb3V0bGluZSBhbmQg
Ym94IHNoYWRvdykuCisgICAgICAgICAgICBhdXRvIGJvcmRlclJpZ2h0RXh0ZW50ID0gWyZdKCkg
LT4gTGF5b3V0VW5pdCB7CisgICAgICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJCb3g+KCp0aGlz
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgICAgICBhdXRv
JiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCp0aGlzKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGJvcmRlckJveFdpZHRoID0gcmVuZGVyQm94LndpZHRoKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWF4KHJlbmRlckJveC5ib3JkZXJSaWdodCgpLCBzdGQ6Om1heCh2YWx1
ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoLCBib3JkZXJCb3hX
aWR0aCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lk
dGgsIGJvcmRlckJveFdpZHRoKSkpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8g
b3V0bGluZVJpZ2h0SW5zZXRFeHRlbnQgPSBbJl0oKSAtPiBMYXlvdXRVbml0IHsKKyAgICAgICAg
ICAgICAgICBhdXRvIG9mZnNldCA9IExheW91dFVuaXQgeyBvdXRsaW5lU3R5bGUub3V0bGluZU9m
ZnNldCgpIH07CisgICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldCA8IDAgPyAtb2Zmc2V0IDog
MF9sdTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBhdXRvIGJveFNoYWRvd1JpZ2h0SW5z
ZXRFeHRlbnQgPSBbJl0geworICAgICAgICAgICAgICAgIGF1dG8gcmlnaHRJbnNldCA9IGluc2V0
U2hhZG93RXh0ZW50LnJpZ2h0KCk7CisgICAgICAgICAgICAgICAgLy8gQ2xpcCBpbnNldCBzaGFk
b3cgYXQgdGhlIGNsaXBwZWQgb3ZlcmZsb3cgcmVjdC4gV2Ugd291bGQgbmV2ZXIgcGFpbnQgb3V0
c2lkZS4KKyAgICAgICAgICAgICAgICByZXR1cm4gcmlnaHRJbnNldCA8IDAgPyBzdGQ6Om1pbigt
cmlnaHRJbnNldCwgc3RkOjptaW4obmV3Q2xpcHBlZE92ZXJmbG93UmVjdC53aWR0aCgpLCBvbGRD
bGlwcGVkT3ZlcmZsb3dSZWN0LndpZHRoKCkpKSA6IDBfbHU7CisgICAgICAgICAgICB9OworICAg
ICAgICAgICAgLy8gT3V0bGluZSBzdGFydHMgYXQgdGhlIGJvcmRlciBib3ggd2hpbGUgYm94IHNo
YWRvdyBzdGFydHMgYXQgdGhlIHBhZGRpbmcgYm94LgorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWF4KG91dGxpbmVSaWdodEluc2V0RXh0ZW50KCksIGJvcmRlclJpZ2h0RXh0ZW50KCkgKyBib3hT
aGFkb3dSaWdodEluc2V0RXh0ZW50KCkpOworICAgICAgICB9OworICAgICAgICBhdXRvIG91dHNl
dEV4dGVudCA9IFsmXSB7CisgICAgICAgICAgICAvLyBPdXRzZXQgImNvbnRlbnQiIGlzIG91dHNp
ZGUgb2YgdGhlIGJvcmRlciBib3ggKGUuZy4gcmVndWxhciBvdXRsaW5lIGFuZCBib3ggc2hhZG93
KS4KKyAgICAgICAgICAgIGF1dG8gc2hhZG93TGVmdCA9IExheW91dFVuaXQgeyB9OworICAgICAg
ICAgICAgYXV0byBzaGFkb3dSaWdodCA9IExheW91dFVuaXQgeyB9OworICAgICAgICAgICAgc3R5
bGUuZ2V0Qm94U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3dMZWZ0LCBzaGFkb3dSaWdodCk7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgob3V0bGluZVdpZHRoLCBzaGFkb3dSaWdodCk7
CisgICAgICAgIH07CisgICAgICAgIGF1dG8gZGVjb3JhdGlvblJpZ2h0RXh0ZW50ID0gaW5zZXRF
eHRlbnQoKSArIG91dHNldEV4dGVudCgpOworICAgICAgICAvLyBCb3RoIGluc2V0IGFuZCBvdXRz
ZXQgImRlY29yYXRpb25zIiBhcmUgd2l0aGluIHRoZSAib3V0bGluZSBhbmQgYm94IHNoYWRvdyIg
Ym94LgorICAgICAgICBhdXRvIGRlY29yYXRpb25MZWZ0ID0gbmV3T3V0bGluZUFuZEJveFNoYWRv
d0JveC54KCkgKyBzdGQ6Om1pbihuZXdPdXRsaW5lQW5kQm94U2hhZG93Qm94LndpZHRoKCksIG9s
ZE91dGxpbmVBbmRCb3hTaGFkb3dCb3gud2lkdGgoKSkgLSBkZWNvcmF0aW9uUmlnaHRFeHRlbnQ7
CisgICAgICAgIGF1dG8gY2xpcHBlZEJvdW5kc1JpZ2h0ID0gc3RkOjptaW4obmV3Q2xpcHBlZE92
ZXJmbG93UmVjdC5tYXhYKCksIG9sZENsaXBwZWRPdmVyZmxvd1JlY3QubWF4WCgpKTsKKyAgICAg
ICAgYXV0byBkYW1hZ2VFeHRlbnRXaXRoaW5DbGlwcGVkT3ZlcmZsb3cgPSBjbGlwcGVkQm91bmRz
UmlnaHQgLSBkZWNvcmF0aW9uTGVmdDsKKyAgICAgICAgaWYgKGRhbWFnZUV4dGVudFdpdGhpbkNs
aXBwZWRPdmVyZmxvdyA+IDApIHsKKyAgICAgICAgICAgIGRhbWFnZUV4dGVudFdpdGhpbkNsaXBw
ZWRPdmVyZmxvdyA9IHN0ZDo6bWluKHdpZHRoICsgZGVjb3JhdGlvblJpZ2h0RXh0ZW50LCBkYW1h
Z2VFeHRlbnRXaXRoaW5DbGlwcGVkT3ZlcmZsb3cpOworICAgICAgICAgICAgYXV0byBkYW1hZ2Vk
UmVjdCA9IExheW91dFJlY3QgeyBkZWNvcmF0aW9uTGVmdCwgbmV3T3V0bGluZUFuZEJveFNoYWRv
d0JveC55KCksIGRhbWFnZUV4dGVudFdpdGhpbkNsaXBwZWRPdmVyZmxvdywgc3RkOjptYXgobmV3
T3V0bGluZUFuZEJveFNoYWRvd0JveC5oZWlnaHQoKSwgb2xkT3V0bGluZUFuZEJveFNoYWRvd0Jv
eC5oZWlnaHQoKSkgfTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50
Q29udGFpbmVyLCBkYW1hZ2VkUmVjdCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgTGF5b3V0VW5p
dCBoZWlnaHQgPSBhYnNvbHV0ZVZhbHVlKG5ld091dGxpbmVCb3guaGVpZ2h0KCkgLSBvbGRPdXRs
aW5lQm94LmhlaWdodCgpKTsKKyAgICBhdXRvIGhlaWdodCA9IGFic29sdXRlVmFsdWUobmV3T3V0
bGluZUFuZEJveFNoYWRvd0JveC5oZWlnaHQoKSAtIG9sZE91dGxpbmVBbmRCb3hTaGFkb3dCb3gu
aGVpZ2h0KCkpOwogICAgIGlmIChoZWlnaHQpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBzaGFkb3dU
b3A7Ci0gICAgICAgIExheW91dFVuaXQgc2hhZG93Qm90dG9tOwotICAgICAgICBzdHlsZSgpLmdl
dEJveFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvd1RvcCwgc2hhZG93Qm90dG9tKTsKLSAgICAg
ICAgTGF5b3V0VW5pdCBib3JkZXJCb3R0b20gPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25j
YXN0PFJlbmRlckJveD4oKnRoaXMpLmJvcmRlckJvdHRvbSgpIDogMF9sdTsKLSAgICAgICAgTGF5
b3V0VW5pdCBib3hIZWlnaHQgPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRl
ckJveD4oKnRoaXMpLmhlaWdodCgpIDogMF9sdTsKLSAgICAgICAgTGF5b3V0VW5pdCBtaW5JbnNl
dEJvdHRvbVNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRvd0V4
dGVudC5ib3R0b20oKSwgc3RkOjptaW4obmV3Qm91bmRzLmhlaWdodCgpLCBvbGRCb3VuZHMuaGVp
Z2h0KCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJIZWlnaHQgPSBzdGQ6Om1heChib3Jk
ZXJCb3R0b20sIHN0ZDo6bWF4KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tTGVm
dFJhZGl1cygpLmhlaWdodCwgYm94SGVpZ2h0KSwKLSAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3Ro
KHN0eWxlKCkuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQsIGJveEhlaWdodCkpKTsK
LSAgICAgICAgTGF5b3V0VW5pdCBkZWNvcmF0aW9uc0hlaWdodCA9IHN0ZDo6bWF4KExheW91dFVu
aXQoLW91dGxpbmVTdHlsZS5vdXRsaW5lT2Zmc2V0KCkpLCBib3JkZXJIZWlnaHQgKyBtaW5JbnNl
dEJvdHRvbVNoYWRvd0V4dGVudCkgKyBzdGQ6Om1heChvdXRsaW5lV2lkdGgsIHNoYWRvd0JvdHRv
bSk7Ci0gICAgICAgIExheW91dFJlY3QgYm90dG9tUmVjdChuZXdPdXRsaW5lQm94LngoKSwKLSAg
ICAgICAgICAgIHN0ZDo6bWluKG5ld091dGxpbmVCb3gubWF4WSgpLCBvbGRPdXRsaW5lQm94Lm1h
eFkoKSkgLSBkZWNvcmF0aW9uc0hlaWdodCwKLSAgICAgICAgICAgIHN0ZDo6bWF4KG5ld091dGxp
bmVCb3gud2lkdGgoKSwgb2xkT3V0bGluZUJveC53aWR0aCgpKSwKLSAgICAgICAgICAgIGhlaWdo
dCArIGRlY29yYXRpb25zSGVpZ2h0KTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3R0b20gPSBzdGQ6
Om1pbihuZXdCb3VuZHMubWF4WSgpLCBvbGRCb3VuZHMubWF4WSgpKTsKLSAgICAgICAgaWYgKGJv
dHRvbVJlY3QueSgpIDwgYm90dG9tKSB7Ci0gICAgICAgICAgICBib3R0b21SZWN0LnNldEhlaWdo
dChzdGQ6Om1pbihib3R0b21SZWN0LmhlaWdodCgpLCBib3R0b20gLSBib3R0b21SZWN0LnkoKSkp
OwotICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGJv
dHRvbVJlY3QpOworICAgICAgICBhdXRvIGluc2V0RXh0ZW50ID0gWyZdIHsKKyAgICAgICAgICAg
IC8vIEluc2V0ICJjb250ZW50IiBpcyBpbnNpZGUgdGhlIGJvcmRlciBib3ggKGUuZy4gYm9yZGVy
LCBuZWdhdGl2ZSBvdXRsaW5lIGFuZCBib3ggc2hhZG93KS4KKyAgICAgICAgICAgIGF1dG8gYm9y
ZGVyQm90dG9tRXh0ZW50ID0gWyZdKCkgLT4gTGF5b3V0VW5pdCB7CisgICAgICAgICAgICAgICAg
aWYgKCFpczxSZW5kZXJCb3g+KCp0aGlzKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAgICAgICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+
KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBhdXRvIGJvcmRlckJveEhlaWdodCA9IHJlbmRlckJv
eC5oZWlnaHQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgocmVuZGVyQm94LmJv
cmRlckJvdHRvbSgpLCBzdGQ6Om1heCh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21M
ZWZ0UmFkaXVzKCkuaGVpZ2h0LCBib3JkZXJCb3hIZWlnaHQpLCB2YWx1ZUZvckxlbmd0aChzdHls
ZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLmhlaWdodCwgYm9yZGVyQm94SGVpZ2h0KSkpOwor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8gb3V0bGluZUJvdHRvbUluc2V0RXh0ZW50
ID0gWyZdKCkgLT4gTGF5b3V0VW5pdCB7CisgICAgICAgICAgICAgICAgYXV0byBvZmZzZXQgPSBM
YXlvdXRVbml0IHsgb3V0bGluZVN0eWxlLm91dGxpbmVPZmZzZXQoKSB9OworICAgICAgICAgICAg
ICAgIHJldHVybiBvZmZzZXQgPCAwID8gLW9mZnNldCA6IDBfbHU7CisgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgYXV0byBib3hTaGFkb3dCb3R0b21JbnNldEV4dGVudCA9IFsmXSB7CisgICAg
ICAgICAgICAgICAgYXV0byBib3R0b21JbnNldCA9IGluc2V0U2hhZG93RXh0ZW50LmJvdHRvbSgp
OworICAgICAgICAgICAgICAgIC8vIENsaXAgaW5zZXQgc2hhZG93IGF0IHRoZSBjbGlwcGVkIG92
ZXJmbG93IHJlY3QuIFdlIHdvdWxkIG5ldmVyIHBhaW50IG91dHNpZGUuCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGJvdHRvbUluc2V0IDwgMCA/IHN0ZDo6bWluKC1ib3R0b21JbnNldCwgc3RkOjpt
aW4obmV3Q2xpcHBlZE92ZXJmbG93UmVjdC5oZWlnaHQoKSwgb2xkQ2xpcHBlZE92ZXJmbG93UmVj
dC5oZWlnaHQoKSkpIDogMF9sdTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICAvLyBPdXRs
aW5lIHN0YXJ0cyBhdCB0aGUgYm9yZGVyIGJveCB3aGlsZSBib3ggc2hhZG93IHN0YXJ0cyBhdCB0
aGUgcGFkZGluZyBib3guCisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgob3V0bGluZUJvdHRv
bUluc2V0RXh0ZW50KCksIGJvcmRlckJvdHRvbUV4dGVudCgpICsgYm94U2hhZG93Qm90dG9tSW5z
ZXRFeHRlbnQoKSk7CisgICAgICAgIH07CisgICAgICAgIGF1dG8gb3V0c2V0RXh0ZW50ID0gWyZd
IHsKKyAgICAgICAgICAgIC8vIE91dHNldCAiY29udGVudCIgaXMgb3V0c2lkZSBvZiB0aGUgYm9y
ZGVyIGJveCAoZS5nLiByZWd1bGFyIG91dGxpbmUgYW5kIGJveCBzaGFkb3cpLgorICAgICAgICAg
ICAgYXV0byBzaGFkb3dUb3AgPSBMYXlvdXRVbml0IHsgfTsKKyAgICAgICAgICAgIGF1dG8gc2hh
ZG93Qm90dG9tID0gTGF5b3V0VW5pdCB7IH07CisgICAgICAgICAgICBzdHlsZS5nZXRCb3hTaGFk
b3dWZXJ0aWNhbEV4dGVudChzaGFkb3dUb3AsIHNoYWRvd0JvdHRvbSk7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYXgob3V0bGluZVdpZHRoLCBzaGFkb3dCb3R0b20pOworICAgICAgICB9Owor
ICAgICAgICBhdXRvIGRlY29yYXRpb25Cb3R0b21FeHRlbnQgPSBpbnNldEV4dGVudCgpICsgb3V0
c2V0RXh0ZW50KCk7CisgICAgICAgIC8vIEJvdGggaW5zZXQgYW5kIG91dHNldCAiZGVjb3JhdGlv
bnMiIGFyZSB3aXRoaW4gdGhlICJvdXRsaW5lIGFuZCBib3ggc2hhZG93IiBib3guCisgICAgICAg
IGF1dG8gZGVjb3JhdGlvblRvcCA9IHN0ZDo6bWluKG5ld091dGxpbmVBbmRCb3hTaGFkb3dCb3gu
bWF4WSgpLCBvbGRPdXRsaW5lQW5kQm94U2hhZG93Qm94Lm1heFkoKSkgLSBkZWNvcmF0aW9uQm90
dG9tRXh0ZW50OworICAgICAgICBhdXRvIGNsaXBwZWRCb3VuZHNCb3R0b20gPSBzdGQ6Om1pbihu
ZXdDbGlwcGVkT3ZlcmZsb3dSZWN0Lm1heFkoKSwgb2xkQ2xpcHBlZE92ZXJmbG93UmVjdC5tYXhZ
KCkpOworICAgICAgICBhdXRvIGRhbWFnZUV4dGVudFdpdGhpbkNsaXBwZWRPdmVyZmxvdyA9IGNs
aXBwZWRCb3VuZHNCb3R0b20gLSBkZWNvcmF0aW9uVG9wOworICAgICAgICBpZiAoZGFtYWdlRXh0
ZW50V2l0aGluQ2xpcHBlZE92ZXJmbG93ID4gMCkgeworICAgICAgICAgICAgZGFtYWdlRXh0ZW50
V2l0aGluQ2xpcHBlZE92ZXJmbG93ID0gc3RkOjptaW4oaGVpZ2h0ICsgZGVjb3JhdGlvbkJvdHRv
bUV4dGVudCwgZGFtYWdlRXh0ZW50V2l0aGluQ2xpcHBlZE92ZXJmbG93KTsKKyAgICAgICAgICAg
IGF1dG8gZGFtYWdlZFJlY3QgPSBMYXlvdXRSZWN0IHsgbmV3T3V0bGluZUFuZEJveFNoYWRvd0Jv
eC54KCksIGRlY29yYXRpb25Ub3AsIHN0ZDo6bWF4KG5ld091dGxpbmVBbmRCb3hTaGFkb3dCb3gu
d2lkdGgoKSwgb2xkT3V0bGluZUFuZEJveFNoYWRvd0JveC53aWR0aCgpKSwgZGFtYWdlRXh0ZW50
V2l0aGluQ2xpcHBlZE92ZXJmbG93IH07CisgICAgICAgICAgICByZXBhaW50VXNpbmdDb250YWlu
ZXIocmVwYWludENvbnRhaW5lciwgZGFtYWdlZFJlY3QpOwogICAgICAgICB9CiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466297</attachid>
            <date>2023-05-09 12:29:16 -0700</date>
            <delta_ts>2023-05-09 16:21:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-256537-20230509122915.patch</filename>
            <type>text/plain</type>
            <size>20082</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA3MjY5M2M5NTMyNWJhYmM0MTAyOWVhMjM1NDc4YjBlZGY1NjExZjlmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgOSBNYXkgMjAyMyAxMTozNjo1MCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtSZXBhaW50
XSBDbGVhbnVwIFJlbmRlckVsZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NTM3CgpSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCjEuIFJlbmFtZSBpbmNvbWluZyBwYXJhbWV0ZXJzIHRvIGluZGljYXRl
CiAgLSB3aGV0aGVyIHRoZXkgYXJlIGNsaXBwZWQgb3IgdW5jbGlwcGVkCiAgLSB3aGF0IHRoZXkg
YWN0dWFsbHkgaW5jbHVkZSAob3V0bGluZSB2cy4gb3V0bGluZSBhbmQgYm94IHNoYWRvdykKMi4g
UmVtb3ZlIHJlZHVuZGFudC9taXNsZWFkaW5nIGNvbW1lbnQocykgKGUuZy4gMTY4MTRAbWFpbiBj
aGFuZ2VkIHRoZSAiV2UgZGlkbid0IG1vdmUsIGJ1dCB3ZSBkaWQgY2hhbmdlIHNpemUuIiBwYXJ0
IHdoZXJlIG5vdyBzaXplIGNoYW5naW5nIGdldHMgaGFuZGxlcyBib3RoIGJlZm9yZSBhbmQgYWZ0
ZXIgdGhlIGNvbW1lbnQpLgozLiBJbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucyBmb3IgZWFjaCBD
U1MgcHJvcGVydHkgdGhhdCBtYXkgZXhwYW5kIHRoZSBkYW1hZ2VkIGFyZWEgKHRoZXkgbWFrZSB0
aGlzIGFkZGl0aW9uYWwgcmVwYWludCBsb2dpYyBlYXNpZXIgdG8gcmVhc29uIGFib3V0KS4KCkxl
dCdzIGxvb2sgYXQgYSB2ZXJ5IHNpbXBsZSBleGFtcGxlIChib3ggc2hyaW5rcyB2ZXJ0aWNhbGx5
KS4KCmJlZm9yZToKCiAgICA3MHB4CiBfX19fX19fX18KfCAgICAgICAgIHwKfCAgICAgICAgIHwg
IDEwMHB4CnwgICAgICAgICB8CnwgICAgICAgICB8CnxfX19fX19fX198CgphZnRlcjoKCiAgICA3
MHB4CiBfX19fX19fX18KfCAgICAgICAgIHwKfCAgICAgICAgIHwgIDYwcHgKfF9fX19fX19fX3wK
CldpdGggbm8gZGVjb3JhdGlvbiAoYXNzdW1lIHRoZXNlIGJveCBsaW5lcyBhcmUgbm90IGJvcmRl
cnMvb3V0bGluZXMgZXRjIGxpa2UgPGRpdiBzdHlsZT0id2lkdGg6IDcwcHg7IGhlaWdodDogMTAw
cHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIj48L2Rpdj4pIG9uIHRoaXMgYm94LAp0aGUgImRl
bHRhIiBsb2dpYyAoYWJvdmUgdGhlIGNsZWFudXAgcGFydCkgY29tcGxldGVseSB0YWtlcyBjYXJl
IHRoZSBkYW1hZ2VkIGFyZWEgYnkgaXNzdWluZyBhIHJlcGFpbnQgYXQgWzBweCwgNjBweCwgNzBw
eCwgNDBweF0uClRoZSBzdWJzZXF1ZW50IHBhaW50IHdpbGwgcHV0IHNvbWUgbmV3IHBpeGVscyBp
biB0aGVyZSByZW1vdmluZyBhbGwgdGhlIG9sZCBjb250ZW50IChiYWNrZ3JvdW5kIGNvbG9yKS4K
CiAgICA3MHB4CiBfX19fX19fX18KfCAgICAgICAgIHwKfCAgICAgICAgIHwgIDYwcHgKfF9fX19f
X19fX3wKKioqKioqKioqKioKKioqKioqKioqKioKCih3aGVyZSAnKicgbWVhbnMgZGFtYWdlZCBw
aXhlbCkKCkhvd2V2ZXIgd2l0aCBzb21lIGRlY29yYXRpb25zIChhbmQgbGV0J3MganVzdCBnbyB3
aXRoIHRoZSBzaW1wbGVzdCBjYXNlIGhlcmU7IGEgYm9yZGVyKSwgd2l0aG91dCBkYW1hZ2luZyBh
ZGRpdGlvbmFsIGNhbnZhcyBzcGFjZQp0aGUgYm90dG9tIGRlY29yYXRpb24gKGJvcmRlcikgd291
bGQgbm90IGJlIHZpc2libGUgYXQgYWxsIGFmdGVyIHRoZSBzdWJzZXF1ZW50IHBhaW50LgoKICAg
IDcwcHgKIF9fX19fX19fXwp8ICAgICAgICAgfAp8ICAgICAgICAgfCAgNjBweAp8ICAgICAgICAg
fAoKXl4gd2UgaXNzdWUgcmVwYWludCBvbiB0aGUgcGl4ZWxzIHdoZXJlIHRoZSBib3JkZXIgdXNl
ZCB0byBiZSwgYnV0IG5vdCB3aGVyZSBpdCBpcyBub3cuCgpTbyBpbnN0ZWFkIHdlIG5lZWQgdG8g
ZXh0ZW5kIHRoZSByZXBhaW50IHJlY3QgYnkgZmluZGluZyBvdXQgd2hhdCBlbHNlIHdlIGhhdmUg
aW4gdGhhdCBib3ggdGhhdCBuZWVkIGFkZGl0aW9uYWwgcGFpbnQgKGUuZy4gYm9yZGVyLCBuZWdh
dGl2ZSBvdXRsaW5lLCBpbnNldCBib3ggc2hhZG93IGV0YykuCihhbmQgdGhhdCdzIHdoYXQgdGhp
cyBjaGFuZ2UgaXMgYWJvdXQpLgoKICAgIDcwcHgKIF9fX19fX19fXwp8ICAgICAgICAgfAp8ICAg
ICAgICAgfCAgNjBweAoqKioqKioqKioqKgoqKioqKioqKioqKgoqKioqKioqKioqKgoKKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJF
bGVtZW50OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZCk6Ci0tLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIHwgMTgxICsrKysrKysrKysrKystLS0tLS0tLQog
MSBmaWxlIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspLCA2OSBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggNWE4MmZhNDU3YTgx
Li42OGFmYWE2YTcwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAKQEAgLTEyMDUsMjEgKzEyMDUsMjEgQEAgc3RhdGljIGJvb2wgbXVzdFJlcGFpbnRCYWNr
Z3JvdW5kT3JCb3JkZXIoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1ib29sIFJlbmRlckVsZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElmTmVl
ZGVkKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0
IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgb2xkT3V0bGluZUJveCwg
Y29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyLCBjb25zdCBMYXlvdXRSZWN0KiBuZXdPdXRs
aW5lQm94UmVjdFB0cikKK2Jvb2wgUmVuZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZO
ZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29u
c3QgTGF5b3V0UmVjdCYgb2xkQ2xpcHBlZE92ZXJmbG93UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYg
b2xkT3V0bGluZUFuZEJveFNoYWRvd0JveCwgY29uc3QgTGF5b3V0UmVjdCogbmV3Q2xpcHBlZE92
ZXJmbG93UmVjdFB0ciwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0bGluZUFuZEJveFNoYWRvd0Jv
eFJlY3RQdHIpCiB7CiAgICAgaWYgKHZpZXcoKS5wcmludGluZygpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7IC8vIERvbid0IHJlcGFpbnQgaWYgd2UncmUgcHJpbnRpbmcuCiAKICAgICAvLyBUaGlz
IEFTU0VSVCBmYWlscyBkdWUgdG8gYW5pbWF0aW9ucy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNzA0OAotICAgIC8vIEFTU0VSVCghbmV3Qm91bmRzUHRyIHx8
ICpuZXdCb3VuZHNQdHIgPT0gY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENv
bnRhaW5lcikpOwotICAgIExheW91dFJlY3QgbmV3Qm91bmRzID0gbmV3Qm91bmRzUHRyID8gKm5l
d0JvdW5kc1B0ciA6IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWlu
ZXIpOwotICAgIExheW91dFJlY3QgbmV3T3V0bGluZUJveDsKKyAgICAvLyBBU1NFUlQoIW5ld0Ns
aXBwZWRPdmVyZmxvd1JlY3RQdHIgfHwgKm5ld0NsaXBwZWRPdmVyZmxvd1JlY3RQdHIgPT0gY2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcikpOworICAgIExheW91
dFJlY3QgbmV3Q2xpcHBlZE92ZXJmbG93UmVjdCA9IG5ld0NsaXBwZWRPdmVyZmxvd1JlY3RQdHIg
PyAqbmV3Q2xpcHBlZE92ZXJmbG93UmVjdFB0ciA6IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KHJlcGFpbnRDb250YWluZXIpOworICAgIExheW91dFJlY3QgbmV3T3V0bGluZUFuZEJveFNo
YWRvd0JveDsKIAogICAgIGJvb2wgZnVsbFJlcGFpbnQgPSBzZWxmTmVlZHNMYXlvdXQoKTsKIAot
ICAgIGlmICghZnVsbFJlcGFpbnQgJiYgb2xkQm91bmRzICE9IG5ld0JvdW5kcyAmJiBzdHlsZSgp
Lmhhc0JvcmRlclJhZGl1cygpKSB7Ci0gICAgICAgIGF1dG8gb2xkUmFkaXVzID0gc3R5bGUoKS5n
ZXRSb3VuZGVkQm9yZGVyRm9yKG9sZEJvdW5kcykucmFkaWkoKTsKLSAgICAgICAgYXV0byBuZXdS
YWRpdXMgPSBzdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IobmV3Qm91bmRzKS5yYWRpaSgpOwor
ICAgIGlmICghZnVsbFJlcGFpbnQgJiYgb2xkQ2xpcHBlZE92ZXJmbG93UmVjdCAhPSBuZXdDbGlw
cGVkT3ZlcmZsb3dSZWN0ICYmIHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkpIHsKKyAgICAgICAg
YXV0byBvbGRSYWRpdXMgPSBzdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3Iob2xkQ2xpcHBlZE92
ZXJmbG93UmVjdCkucmFkaWkoKTsKKyAgICAgICAgYXV0byBuZXdSYWRpdXMgPSBzdHlsZSgpLmdl
dFJvdW5kZWRCb3JkZXJGb3IobmV3Q2xpcHBlZE92ZXJmbG93UmVjdCkucmFkaWkoKTsKIAogICAg
ICAgICBmdWxsUmVwYWludCA9IG9sZFJhZGl1cyAhPSBuZXdSYWRpdXM7CiAgICAgfQpAQCAtMTIy
NywxMDAgKzEyMjcsMTQzIEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0
SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwCiAgICAgaWYgKCFmdWxs
UmVwYWludCkgewogICAgICAgICAvLyBUaGlzIEFTU0VSVCBmYWlscyBkdWUgdG8gYW5pbWF0aW9u
cy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzA0OAogICAg
ICAgICAvLyBBU1NFUlQoIW5ld091dGxpbmVCb3hSZWN0UHRyIHx8ICpuZXdPdXRsaW5lQm94UmVj
dFB0ciA9PSBvdXRsaW5lQm91bmRzRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKSk7Ci0gICAg
ICAgIG5ld091dGxpbmVCb3ggPSBuZXdPdXRsaW5lQm94UmVjdFB0ciA/ICpuZXdPdXRsaW5lQm94
UmVjdFB0ciA6IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpOwotICAg
ICAgICBmdWxsUmVwYWludCA9IChuZXdPdXRsaW5lQm94LmxvY2F0aW9uKCkgIT0gb2xkT3V0bGlu
ZUJveC5sb2NhdGlvbigpIHx8IChtdXN0UmVwYWludEJhY2tncm91bmRPckJvcmRlcigqdGhpcykg
JiYgKG5ld0JvdW5kcyAhPSBvbGRCb3VuZHMgfHwgbmV3T3V0bGluZUJveCAhPSBvbGRPdXRsaW5l
Qm94KSkpOworICAgICAgICBuZXdPdXRsaW5lQW5kQm94U2hhZG93Qm94ID0gbmV3T3V0bGluZUFu
ZEJveFNoYWRvd0JveFJlY3RQdHIgPyAqbmV3T3V0bGluZUFuZEJveFNoYWRvd0JveFJlY3RQdHIg
OiBvdXRsaW5lQm91bmRzRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKKyAgICAgICAgZnVs
bFJlcGFpbnQgPSAobmV3T3V0bGluZUFuZEJveFNoYWRvd0JveC5sb2NhdGlvbigpICE9IG9sZE91
dGxpbmVBbmRCb3hTaGFkb3dCb3gubG9jYXRpb24oKSB8fCAobXVzdFJlcGFpbnRCYWNrZ3JvdW5k
T3JCb3JkZXIoKnRoaXMpICYmIChuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0ICE9IG9sZENsaXBwZWRP
dmVyZmxvd1JlY3QgfHwgbmV3T3V0bGluZUFuZEJveFNoYWRvd0JveCAhPSBvbGRPdXRsaW5lQW5k
Qm94U2hhZG93Qm94KSkpOwogICAgIH0KIAogICAgIGlmICghcmVwYWludENvbnRhaW5lcikKICAg
ICAgICAgcmVwYWludENvbnRhaW5lciA9ICZ2aWV3KCk7CiAKICAgICBpZiAoZnVsbFJlcGFpbnQp
IHsKLSAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIG9sZEJv
dW5kcyk7Ci0gICAgICAgIGlmIChuZXdCb3VuZHMgIT0gb2xkQm91bmRzKQotICAgICAgICAgICAg
cmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIG5ld0JvdW5kcyk7CisgICAg
ICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBvbGRDbGlwcGVkT3Zl
cmZsb3dSZWN0KTsKKyAgICAgICAgaWYgKG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QgIT0gb2xkQ2xp
cHBlZE92ZXJmbG93UmVjdCkKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBh
aW50Q29udGFpbmVyLCBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgaWYgKG5ld0JvdW5kcyA9PSBvbGRCb3VuZHMgJiYgbmV3T3V0bGlu
ZUJveCA9PSBvbGRPdXRsaW5lQm94KQorICAgIGlmIChuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0ID09
IG9sZENsaXBwZWRPdmVyZmxvd1JlY3QgJiYgbmV3T3V0bGluZUFuZEJveFNoYWRvd0JveCA9PSBv
bGRPdXRsaW5lQW5kQm94U2hhZG93Qm94KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAobmV3Qm91bmRzLmlzRW1wdHkoKSAmJiAhb2xkQm91bmRzLmlzRW1wdHkoKSkKLSAgICAgICAg
cmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIG9sZEJvdW5kcyk7Ci0gICAg
ZWxzZSBpZiAoIW5ld0JvdW5kcy5pc0VtcHR5KCkgJiYgb2xkQm91bmRzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIG5ld0JvdW5kcyk7
CisgICAgaWYgKG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QuaXNFbXB0eSgpICYmICFvbGRDbGlwcGVk
T3ZlcmZsb3dSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJl
cGFpbnRDb250YWluZXIsIG9sZENsaXBwZWRPdmVyZmxvd1JlY3QpOworICAgIGVsc2UgaWYgKCFu
ZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LmlzRW1wdHkoKSAmJiBvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0
LmlzRW1wdHkoKSkKKyAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWlu
ZXIsIG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QpOwogICAgIGVsc2UgewotICAgICAgICBMYXlvdXRV
bml0IGRlbHRhTGVmdCA9IG5ld0JvdW5kcy54KCkgLSBvbGRCb3VuZHMueCgpOworICAgICAgICBM
YXlvdXRVbml0IGRlbHRhTGVmdCA9IG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QueCgpIC0gb2xkQ2xp
cHBlZE92ZXJmbG93UmVjdC54KCk7CiAgICAgICAgIGlmIChkZWx0YUxlZnQgPiAwKQotICAgICAg
ICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3Qo
b2xkQm91bmRzLngoKSwgb2xkQm91bmRzLnkoKSwgZGVsdGFMZWZ0LCBvbGRCb3VuZHMuaGVpZ2h0
KCkpKTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
LCBMYXlvdXRSZWN0KG9sZENsaXBwZWRPdmVyZmxvd1JlY3QueCgpLCBvbGRDbGlwcGVkT3ZlcmZs
b3dSZWN0LnkoKSwgZGVsdGFMZWZ0LCBvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0LmhlaWdodCgpKSk7
CiAgICAgICAgIGVsc2UgaWYgKGRlbHRhTGVmdCA8IDApCi0gICAgICAgICAgICByZXBhaW50VXNp
bmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdChuZXdCb3VuZHMueCgpLCBu
ZXdCb3VuZHMueSgpLCAtZGVsdGFMZWZ0LCBuZXdCb3VuZHMuaGVpZ2h0KCkpKTsKKyAgICAgICAg
ICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0KG5l
d0NsaXBwZWRPdmVyZmxvd1JlY3QueCgpLCBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LnkoKSwgLWRl
bHRhTGVmdCwgbmV3Q2xpcHBlZE92ZXJmbG93UmVjdC5oZWlnaHQoKSkpOwogCi0gICAgICAgIExh
eW91dFVuaXQgZGVsdGFSaWdodCA9IG5ld0JvdW5kcy5tYXhYKCkgLSBvbGRCb3VuZHMubWF4WCgp
OworICAgICAgICBMYXlvdXRVbml0IGRlbHRhUmlnaHQgPSBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0
Lm1heFgoKSAtIG9sZENsaXBwZWRPdmVyZmxvd1JlY3QubWF4WCgpOwogICAgICAgICBpZiAoZGVs
dGFSaWdodCA+IDApCi0gICAgICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENv
bnRhaW5lciwgTGF5b3V0UmVjdChvbGRCb3VuZHMubWF4WCgpLCBuZXdCb3VuZHMueSgpLCBkZWx0
YVJpZ2h0LCBuZXdCb3VuZHMuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0KG9sZENsaXBwZWRPdmVyZmxvd1Jl
Y3QubWF4WCgpLCBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LnkoKSwgZGVsdGFSaWdodCwgbmV3Q2xp
cHBlZE92ZXJmbG93UmVjdC5oZWlnaHQoKSkpOwogICAgICAgICBlbHNlIGlmIChkZWx0YVJpZ2h0
IDwgMCkKLSAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
LCBMYXlvdXRSZWN0KG5ld0JvdW5kcy5tYXhYKCksIG9sZEJvdW5kcy55KCksIC1kZWx0YVJpZ2h0
LCBvbGRCb3VuZHMuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5l
cihyZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0KG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QubWF4
WCgpLCBvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0LnkoKSwgLWRlbHRhUmlnaHQsIG9sZENsaXBwZWRP
dmVyZmxvd1JlY3QuaGVpZ2h0KCkpKTsKIAotICAgICAgICBMYXlvdXRVbml0IGRlbHRhVG9wID0g
bmV3Qm91bmRzLnkoKSAtIG9sZEJvdW5kcy55KCk7CisgICAgICAgIExheW91dFVuaXQgZGVsdGFU
b3AgPSBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LnkoKSAtIG9sZENsaXBwZWRPdmVyZmxvd1JlY3Qu
eSgpOwogICAgICAgICBpZiAoZGVsdGFUb3AgPiAwKQotICAgICAgICAgICAgcmVwYWludFVzaW5n
Q29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3Qob2xkQm91bmRzLngoKSwgb2xk
Qm91bmRzLnkoKSwgb2xkQm91bmRzLndpZHRoKCksIGRlbHRhVG9wKSk7CisgICAgICAgICAgICBy
ZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdChvbGRDbGlw
cGVkT3ZlcmZsb3dSZWN0LngoKSwgb2xkQ2xpcHBlZE92ZXJmbG93UmVjdC55KCksIG9sZENsaXBw
ZWRPdmVyZmxvd1JlY3Qud2lkdGgoKSwgZGVsdGFUb3ApKTsKICAgICAgICAgZWxzZSBpZiAoZGVs
dGFUb3AgPCAwKQotICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250
YWluZXIsIExheW91dFJlY3QobmV3Qm91bmRzLngoKSwgbmV3Qm91bmRzLnkoKSwgbmV3Qm91bmRz
LndpZHRoKCksIC1kZWx0YVRvcCkpOworICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVy
KHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QobmV3Q2xpcHBlZE92ZXJmbG93UmVjdC54KCks
IG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QueSgpLCBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LndpZHRo
KCksIC1kZWx0YVRvcCkpOwogCi0gICAgICAgIExheW91dFVuaXQgZGVsdGFCb3R0b20gPSBuZXdC
b3VuZHMubWF4WSgpIC0gb2xkQm91bmRzLm1heFkoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBkZWx0
YUJvdHRvbSA9IG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QubWF4WSgpIC0gb2xkQ2xpcHBlZE92ZXJm
bG93UmVjdC5tYXhZKCk7CiAgICAgICAgIGlmIChkZWx0YUJvdHRvbSA+IDApCi0gICAgICAgICAg
ICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdChuZXdC
b3VuZHMueCgpLCBvbGRCb3VuZHMubWF4WSgpLCBuZXdCb3VuZHMud2lkdGgoKSwgZGVsdGFCb3R0
b20pKTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
LCBMYXlvdXRSZWN0KG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QueCgpLCBvbGRDbGlwcGVkT3ZlcmZs
b3dSZWN0Lm1heFkoKSwgbmV3Q2xpcHBlZE92ZXJmbG93UmVjdC53aWR0aCgpLCBkZWx0YUJvdHRv
bSkpOwogICAgICAgICBlbHNlIGlmIChkZWx0YUJvdHRvbSA8IDApCi0gICAgICAgICAgICByZXBh
aW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdChvbGRCb3VuZHMu
eCgpLCBuZXdCb3VuZHMubWF4WSgpLCBvbGRCb3VuZHMud2lkdGgoKSwgLWRlbHRhQm90dG9tKSk7
CisgICAgICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgTGF5
b3V0UmVjdChvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0LngoKSwgbmV3Q2xpcHBlZE92ZXJmbG93UmVj
dC5tYXhZKCksIG9sZENsaXBwZWRPdmVyZmxvd1JlY3Qud2lkdGgoKSwgLWRlbHRhQm90dG9tKSk7
CiAgICAgfQogCi0gICAgaWYgKG5ld091dGxpbmVCb3ggPT0gb2xkT3V0bGluZUJveCkKKyAgICBp
ZiAobmV3T3V0bGluZUFuZEJveFNoYWRvd0JveCA9PSBvbGRPdXRsaW5lQW5kQm94U2hhZG93Qm94
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBXZSBkaWRuJ3QgbW92ZSwgYnV0IHdl
IGRpZCBjaGFuZ2Ugc2l6ZS4gSW52YWxpZGF0ZSB0aGUgZGVsdGEsIHdoaWNoIHdpbGwgY29uc2lz
dCBvZiBwb3NzaWJseQotICAgIC8vIHR3byByZWN0YW5nbGVzIChidXQgdHlwaWNhbGx5IG9ubHkg
b25lKS4KKyAgICAvLyBMZXQncyBmaWd1cmUgb3V0IGhvdyBtdWNoIHdlIG5lZWQgdG8gcmVwYWlu
dCB3aXRoaW4gdGhlIG5ldyBib3VuZHMuCisgICAgLy8gZS5nLiB3aGVuIHJlbmRlcmVyIHNocmlu
a3MgdmVydGljYWxseSBpdCdzIG5vdCBzdWZmaWNpZW50IHRvIHJlcGFpbnQgdGhlICJzaHJ1bmsg
YXJlYSIgKHRvIGNsZWFyIG9sZCBjb250ZW50LCBzZWUgYWJvdmUpIHdlIG5lZWQgdG8gdGFrZSBj
YXJlIG9mIHRoZSBhcmVhIHdpdGhpbiB0aGUgbmV3IGJvdW5kcyB0byBtYWtlIHN1cmUKKyAgICAv
LyBkZWNvcmF0aW9ucyBsaWtlIGJvcmRlciwgb3V0bGluZSBldGMgZ2V0IHJlcGFpbnRlZCBhcyB3
ZWxsICh0aGV5IGFyZSBlbmNsb3NlZCBieSBvbGQvbmV3IGJvdW5kcykuCiAgICAgY29uc3QgUmVu
ZGVyU3R5bGUmIG91dGxpbmVTdHlsZSA9IG91dGxpbmVTdHlsZUZvclJlcGFpbnQoKTsKLSAgICBM
YXlvdXRVbml0IG91dGxpbmVXaWR0aCB7IG91dGxpbmVTdHlsZS5vdXRsaW5lU2l6ZSgpIH07Ci0g
ICAgYXV0byBpbnNldFNoYWRvd0V4dGVudCA9IHN0eWxlKCkuYm94U2hhZG93SW5zZXRFeHRlbnQo
KTsKLSAgICBMYXlvdXRVbml0IHdpZHRoID0gYWJzb2x1dGVWYWx1ZShuZXdPdXRsaW5lQm94Lndp
ZHRoKCkgLSBvbGRPdXRsaW5lQm94LndpZHRoKCkpOworICAgIGF1dG8mIHN0eWxlID0gdGhpcy0+
c3R5bGUoKTsKKyAgICBhdXRvIG91dGxpbmVXaWR0aCA9IExheW91dFVuaXQgeyBvdXRsaW5lU3R5
bGUub3V0bGluZVNpemUoKSB9OworICAgIGF1dG8gaW5zZXRTaGFkb3dFeHRlbnQgPSBzdHlsZS5i
b3hTaGFkb3dJbnNldEV4dGVudCgpOworICAgIGF1dG8gd2lkdGggPSBhYnNvbHV0ZVZhbHVlKG5l
d091dGxpbmVBbmRCb3hTaGFkb3dCb3gud2lkdGgoKSAtIG9sZE91dGxpbmVBbmRCb3hTaGFkb3dC
b3gud2lkdGgoKSk7CiAgICAgaWYgKHdpZHRoKSB7Ci0gICAgICAgIExheW91dFVuaXQgc2hhZG93
TGVmdDsKLSAgICAgICAgTGF5b3V0VW5pdCBzaGFkb3dSaWdodDsKLSAgICAgICAgc3R5bGUoKS5n
ZXRCb3hTaGFkb3dIb3Jpem9udGFsRXh0ZW50KHNoYWRvd0xlZnQsIHNoYWRvd1JpZ2h0KTsKLSAg
ICAgICAgTGF5b3V0VW5pdCBib3JkZXJSaWdodCA9IGlzPFJlbmRlckJveD4oKnRoaXMpID8gZG93
bmNhc3Q8UmVuZGVyQm94PigqdGhpcykuYm9yZGVyUmlnaHQoKSA6IDBfbHU7Ci0gICAgICAgIExh
eW91dFVuaXQgYm94V2lkdGggPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRl
ckJveD4oKnRoaXMpLndpZHRoKCkgOiAwX2x1OwotICAgICAgICBMYXlvdXRVbml0IG1pbkluc2V0
UmlnaHRTaGFkb3dFeHRlbnQgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PigtaW5zZXRTaGFkb3dFeHRl
bnQucmlnaHQoKSwgc3RkOjptaW4obmV3Qm91bmRzLndpZHRoKCksIG9sZEJvdW5kcy53aWR0aCgp
KSk7Ci0gICAgICAgIExheW91dFVuaXQgYm9yZGVyV2lkdGggPSBzdGQ6Om1heChib3JkZXJSaWdo
dCwgc3RkOjptYXgodmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJUb3BSaWdodFJhZGl1cygp
LndpZHRoLCBib3hXaWR0aCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tUmln
aHRSYWRpdXMoKS53aWR0aCwgYm94V2lkdGgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgZGVjb3Jh
dGlvbnNXaWR0aCA9IHN0ZDo6bWF4KExheW91dFVuaXQoLW91dGxpbmVTdHlsZS5vdXRsaW5lT2Zm
c2V0KCkpLCBib3JkZXJXaWR0aCArIG1pbkluc2V0UmlnaHRTaGFkb3dFeHRlbnQpICsgc3RkOjpt
YXgob3V0bGluZVdpZHRoLCBzaGFkb3dSaWdodCk7Ci0gICAgICAgIExheW91dFJlY3QgcmlnaHRS
ZWN0KG5ld091dGxpbmVCb3gueCgpICsgc3RkOjptaW4obmV3T3V0bGluZUJveC53aWR0aCgpLCBv
bGRPdXRsaW5lQm94LndpZHRoKCkpIC0gZGVjb3JhdGlvbnNXaWR0aCwKLSAgICAgICAgICAgIG5l
d091dGxpbmVCb3gueSgpLAotICAgICAgICAgICAgd2lkdGggKyBkZWNvcmF0aW9uc1dpZHRoLAot
ICAgICAgICAgICAgc3RkOjptYXgobmV3T3V0bGluZUJveC5oZWlnaHQoKSwgb2xkT3V0bGluZUJv
eC5oZWlnaHQoKSkpOwotICAgICAgICBMYXlvdXRVbml0IHJpZ2h0ID0gc3RkOjptaW4obmV3Qm91
bmRzLm1heFgoKSwgb2xkQm91bmRzLm1heFgoKSk7Ci0gICAgICAgIGlmIChyaWdodFJlY3QueCgp
IDwgcmlnaHQpIHsKLSAgICAgICAgICAgIHJpZ2h0UmVjdC5zZXRXaWR0aChzdGQ6Om1pbihyaWdo
dFJlY3Qud2lkdGgoKSwgcmlnaHQgLSByaWdodFJlY3QueCgpKSk7Ci0gICAgICAgICAgICByZXBh
aW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgcmlnaHRSZWN0KTsKKyAgICAgICAg
YXV0byBpbnNldEV4dGVudCA9IFsmXSB7CisgICAgICAgICAgICAvLyBJbnNldCAiY29udGVudCIg
aXMgaW5zaWRlIHRoZSBib3JkZXIgYm94IChlLmcuIGJvcmRlciwgbmVnYXRpdmUgb3V0bGluZSBh
bmQgYm94IHNoYWRvdykuCisgICAgICAgICAgICBhdXRvIGJvcmRlclJpZ2h0RXh0ZW50ID0gWyZd
KCkgLT4gTGF5b3V0VW5pdCB7CisgICAgICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJCb3g+KCp0
aGlzKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgICAgICBh
dXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCp0aGlzKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIGJvcmRlckJveFdpZHRoID0gcmVuZGVyQm94LndpZHRoKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWF4KHJlbmRlckJveC5ib3JkZXJSaWdodCgpLCBzdGQ6Om1heCh2
YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoLCBib3JkZXJC
b3hXaWR0aCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCku
d2lkdGgsIGJvcmRlckJveFdpZHRoKSkpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1
dG8gb3V0bGluZVJpZ2h0SW5zZXRFeHRlbnQgPSBbJl0oKSAtPiBMYXlvdXRVbml0IHsKKyAgICAg
ICAgICAgICAgICBhdXRvIG9mZnNldCA9IExheW91dFVuaXQgeyBvdXRsaW5lU3R5bGUub3V0bGlu
ZU9mZnNldCgpIH07CisgICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldCA8IDAgPyAtb2Zmc2V0
IDogMF9sdTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBhdXRvIGJveFNoYWRvd1JpZ2h0
SW5zZXRFeHRlbnQgPSBbJl0geworICAgICAgICAgICAgICAgIGF1dG8gcmlnaHRJbnNldCA9IGlu
c2V0U2hhZG93RXh0ZW50LnJpZ2h0KCk7CisgICAgICAgICAgICAgICAgLy8gQ2xpcCBpbnNldCBz
aGFkb3cgYXQgdGhlIGNsaXBwZWQgb3ZlcmZsb3cgcmVjdC4gV2Ugd291bGQgbmV2ZXIgcGFpbnQg
b3V0c2lkZS4KKyAgICAgICAgICAgICAgICByZXR1cm4gcmlnaHRJbnNldCA8IDAgPyBzdGQ6Om1p
bigtcmlnaHRJbnNldCwgc3RkOjptaW4obmV3Q2xpcHBlZE92ZXJmbG93UmVjdC53aWR0aCgpLCBv
bGRDbGlwcGVkT3ZlcmZsb3dSZWN0LndpZHRoKCkpKSA6IDBfbHU7CisgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgLy8gT3V0bGluZSBzdGFydHMgYXQgdGhlIGJvcmRlciBib3ggd2hpbGUgYm94
IHNoYWRvdyBzdGFydHMgYXQgdGhlIHBhZGRpbmcgYm94LgorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWF4KG91dGxpbmVSaWdodEluc2V0RXh0ZW50KCksIGJvcmRlclJpZ2h0RXh0ZW50KCkgKyBi
b3hTaGFkb3dSaWdodEluc2V0RXh0ZW50KCkpOworICAgICAgICB9OworICAgICAgICBhdXRvIG91
dHNldEV4dGVudCA9IFsmXSB7CisgICAgICAgICAgICAvLyBPdXRzZXQgImNvbnRlbnQiIGlzIG91
dHNpZGUgb2YgdGhlIGJvcmRlciBib3ggKGUuZy4gcmVndWxhciBvdXRsaW5lIGFuZCBib3ggc2hh
ZG93KS4KKyAgICAgICAgICAgIGF1dG8gc2hhZG93TGVmdCA9IExheW91dFVuaXQgeyB9OworICAg
ICAgICAgICAgYXV0byBzaGFkb3dSaWdodCA9IExheW91dFVuaXQgeyB9OworICAgICAgICAgICAg
c3R5bGUuZ2V0Qm94U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3dMZWZ0LCBzaGFkb3dSaWdo
dCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgob3V0bGluZVdpZHRoLCBzaGFkb3dSaWdo
dCk7CisgICAgICAgIH07CisgICAgICAgIGF1dG8gZGVjb3JhdGlvblJpZ2h0RXh0ZW50ID0gaW5z
ZXRFeHRlbnQoKSArIG91dHNldEV4dGVudCgpOworICAgICAgICAvLyBCb3RoIGluc2V0IGFuZCBv
dXRzZXQgImRlY29yYXRpb25zIiBhcmUgd2l0aGluIHRoZSAib3V0bGluZSBhbmQgYm94IHNoYWRv
dyIgYm94LgorICAgICAgICBhdXRvIGRlY29yYXRpb25MZWZ0ID0gbmV3T3V0bGluZUFuZEJveFNo
YWRvd0JveC54KCkgKyBzdGQ6Om1pbihuZXdPdXRsaW5lQW5kQm94U2hhZG93Qm94LndpZHRoKCks
IG9sZE91dGxpbmVBbmRCb3hTaGFkb3dCb3gud2lkdGgoKSkgLSBkZWNvcmF0aW9uUmlnaHRFeHRl
bnQ7CisgICAgICAgIGF1dG8gY2xpcHBlZEJvdW5kc1JpZ2h0ID0gc3RkOjptaW4obmV3Q2xpcHBl
ZE92ZXJmbG93UmVjdC5tYXhYKCksIG9sZENsaXBwZWRPdmVyZmxvd1JlY3QubWF4WCgpKTsKKyAg
ICAgICAgYXV0byBkYW1hZ2VFeHRlbnRXaXRoaW5DbGlwcGVkT3ZlcmZsb3cgPSBjbGlwcGVkQm91
bmRzUmlnaHQgLSBkZWNvcmF0aW9uTGVmdDsKKyAgICAgICAgaWYgKGRhbWFnZUV4dGVudFdpdGhp
bkNsaXBwZWRPdmVyZmxvdyA+IDApIHsKKyAgICAgICAgICAgIGRhbWFnZUV4dGVudFdpdGhpbkNs
aXBwZWRPdmVyZmxvdyA9IHN0ZDo6bWluKHdpZHRoICsgZGVjb3JhdGlvblJpZ2h0RXh0ZW50LCBk
YW1hZ2VFeHRlbnRXaXRoaW5DbGlwcGVkT3ZlcmZsb3cpOworICAgICAgICAgICAgYXV0byBkYW1h
Z2VkUmVjdCA9IExheW91dFJlY3QgeyBkZWNvcmF0aW9uTGVmdCwgbmV3T3V0bGluZUFuZEJveFNo
YWRvd0JveC55KCksIGRhbWFnZUV4dGVudFdpdGhpbkNsaXBwZWRPdmVyZmxvdywgc3RkOjptYXgo
bmV3T3V0bGluZUFuZEJveFNoYWRvd0JveC5oZWlnaHQoKSwgb2xkT3V0bGluZUFuZEJveFNoYWRv
d0JveC5oZWlnaHQoKSkgfTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBh
aW50Q29udGFpbmVyLCBkYW1hZ2VkUmVjdCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgTGF5b3V0
VW5pdCBoZWlnaHQgPSBhYnNvbHV0ZVZhbHVlKG5ld091dGxpbmVCb3guaGVpZ2h0KCkgLSBvbGRP
dXRsaW5lQm94LmhlaWdodCgpKTsKKyAgICBhdXRvIGhlaWdodCA9IGFic29sdXRlVmFsdWUobmV3
T3V0bGluZUFuZEJveFNoYWRvd0JveC5oZWlnaHQoKSAtIG9sZE91dGxpbmVBbmRCb3hTaGFkb3dC
b3guaGVpZ2h0KCkpOwogICAgIGlmIChoZWlnaHQpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBzaGFk
b3dUb3A7Ci0gICAgICAgIExheW91dFVuaXQgc2hhZG93Qm90dG9tOwotICAgICAgICBzdHlsZSgp
LmdldEJveFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvd1RvcCwgc2hhZG93Qm90dG9tKTsKLSAg
ICAgICAgTGF5b3V0VW5pdCBib3JkZXJCb3R0b20gPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRv
d25jYXN0PFJlbmRlckJveD4oKnRoaXMpLmJvcmRlckJvdHRvbSgpIDogMF9sdTsKLSAgICAgICAg
TGF5b3V0VW5pdCBib3hIZWlnaHQgPSBpczxSZW5kZXJCb3g+KCp0aGlzKSA/IGRvd25jYXN0PFJl
bmRlckJveD4oKnRoaXMpLmhlaWdodCgpIDogMF9sdTsKLSAgICAgICAgTGF5b3V0VW5pdCBtaW5J
bnNldEJvdHRvbVNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KC1pbnNldFNoYWRv
d0V4dGVudC5ib3R0b20oKSwgc3RkOjptaW4obmV3Qm91bmRzLmhlaWdodCgpLCBvbGRCb3VuZHMu
aGVpZ2h0KCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJIZWlnaHQgPSBzdGQ6Om1heChi
b3JkZXJCb3R0b20sIHN0ZDo6bWF4KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9t
TGVmdFJhZGl1cygpLmhlaWdodCwgYm94SGVpZ2h0KSwKLSAgICAgICAgICAgIHZhbHVlRm9yTGVu
Z3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQsIGJveEhlaWdodCkp
KTsKLSAgICAgICAgTGF5b3V0VW5pdCBkZWNvcmF0aW9uc0hlaWdodCA9IHN0ZDo6bWF4KExheW91
dFVuaXQoLW91dGxpbmVTdHlsZS5vdXRsaW5lT2Zmc2V0KCkpLCBib3JkZXJIZWlnaHQgKyBtaW5J
bnNldEJvdHRvbVNoYWRvd0V4dGVudCkgKyBzdGQ6Om1heChvdXRsaW5lV2lkdGgsIHNoYWRvd0Jv
dHRvbSk7Ci0gICAgICAgIExheW91dFJlY3QgYm90dG9tUmVjdChuZXdPdXRsaW5lQm94LngoKSwK
LSAgICAgICAgICAgIHN0ZDo6bWluKG5ld091dGxpbmVCb3gubWF4WSgpLCBvbGRPdXRsaW5lQm94
Lm1heFkoKSkgLSBkZWNvcmF0aW9uc0hlaWdodCwKLSAgICAgICAgICAgIHN0ZDo6bWF4KG5ld091
dGxpbmVCb3gud2lkdGgoKSwgb2xkT3V0bGluZUJveC53aWR0aCgpKSwKLSAgICAgICAgICAgIGhl
aWdodCArIGRlY29yYXRpb25zSGVpZ2h0KTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3R0b20gPSBz
dGQ6Om1pbihuZXdCb3VuZHMubWF4WSgpLCBvbGRCb3VuZHMubWF4WSgpKTsKLSAgICAgICAgaWYg
KGJvdHRvbVJlY3QueSgpIDwgYm90dG9tKSB7Ci0gICAgICAgICAgICBib3R0b21SZWN0LnNldEhl
aWdodChzdGQ6Om1pbihib3R0b21SZWN0LmhlaWdodCgpLCBib3R0b20gLSBib3R0b21SZWN0Lnko
KSkpOwotICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIs
IGJvdHRvbVJlY3QpOworICAgICAgICBhdXRvIGluc2V0RXh0ZW50ID0gWyZdIHsKKyAgICAgICAg
ICAgIC8vIEluc2V0ICJjb250ZW50IiBpcyBpbnNpZGUgdGhlIGJvcmRlciBib3ggKGUuZy4gYm9y
ZGVyLCBuZWdhdGl2ZSBvdXRsaW5lIGFuZCBib3ggc2hhZG93KS4KKyAgICAgICAgICAgIGF1dG8g
Ym9yZGVyQm90dG9tRXh0ZW50ID0gWyZdKCkgLT4gTGF5b3V0VW5pdCB7CisgICAgICAgICAgICAg
ICAgaWYgKCFpczxSZW5kZXJCb3g+KCp0aGlzKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJC
b3g+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBhdXRvIGJvcmRlckJveEhlaWdodCA9IHJlbmRl
ckJveC5oZWlnaHQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgocmVuZGVyQm94
LmJvcmRlckJvdHRvbSgpLCBzdGQ6Om1heCh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0
b21MZWZ0UmFkaXVzKCkuaGVpZ2h0LCBib3JkZXJCb3hIZWlnaHQpLCB2YWx1ZUZvckxlbmd0aChz
dHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLmhlaWdodCwgYm9yZGVyQm94SGVpZ2h0KSkp
OworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8gb3V0bGluZUJvdHRvbUluc2V0RXh0
ZW50ID0gWyZdKCkgLT4gTGF5b3V0VW5pdCB7CisgICAgICAgICAgICAgICAgYXV0byBvZmZzZXQg
PSBMYXlvdXRVbml0IHsgb3V0bGluZVN0eWxlLm91dGxpbmVPZmZzZXQoKSB9OworICAgICAgICAg
ICAgICAgIHJldHVybiBvZmZzZXQgPCAwID8gLW9mZnNldCA6IDBfbHU7CisgICAgICAgICAgICB9
OworICAgICAgICAgICAgYXV0byBib3hTaGFkb3dCb3R0b21JbnNldEV4dGVudCA9IFsmXSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBib3R0b21JbnNldCA9IGluc2V0U2hhZG93RXh0ZW50LmJvdHRv
bSgpOworICAgICAgICAgICAgICAgIC8vIENsaXAgaW5zZXQgc2hhZG93IGF0IHRoZSBjbGlwcGVk
IG92ZXJmbG93IHJlY3QuIFdlIHdvdWxkIG5ldmVyIHBhaW50IG91dHNpZGUuCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGJvdHRvbUluc2V0IDwgMCA/IHN0ZDo6bWluKC1ib3R0b21JbnNldCwgc3Rk
OjptaW4obmV3Q2xpcHBlZE92ZXJmbG93UmVjdC5oZWlnaHQoKSwgb2xkQ2xpcHBlZE92ZXJmbG93
UmVjdC5oZWlnaHQoKSkpIDogMF9sdTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICAvLyBP
dXRsaW5lIHN0YXJ0cyBhdCB0aGUgYm9yZGVyIGJveCB3aGlsZSBib3ggc2hhZG93IHN0YXJ0cyBh
dCB0aGUgcGFkZGluZyBib3guCisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgob3V0bGluZUJv
dHRvbUluc2V0RXh0ZW50KCksIGJvcmRlckJvdHRvbUV4dGVudCgpICsgYm94U2hhZG93Qm90dG9t
SW5zZXRFeHRlbnQoKSk7CisgICAgICAgIH07CisgICAgICAgIGF1dG8gb3V0c2V0RXh0ZW50ID0g
WyZdIHsKKyAgICAgICAgICAgIC8vIE91dHNldCAiY29udGVudCIgaXMgb3V0c2lkZSBvZiB0aGUg
Ym9yZGVyIGJveCAoZS5nLiByZWd1bGFyIG91dGxpbmUgYW5kIGJveCBzaGFkb3cpLgorICAgICAg
ICAgICAgYXV0byBzaGFkb3dUb3AgPSBMYXlvdXRVbml0IHsgfTsKKyAgICAgICAgICAgIGF1dG8g
c2hhZG93Qm90dG9tID0gTGF5b3V0VW5pdCB7IH07CisgICAgICAgICAgICBzdHlsZS5nZXRCb3hT
aGFkb3dWZXJ0aWNhbEV4dGVudChzaGFkb3dUb3AsIHNoYWRvd0JvdHRvbSk7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYXgob3V0bGluZVdpZHRoLCBzaGFkb3dCb3R0b20pOworICAgICAgICB9
OworICAgICAgICBhdXRvIGRlY29yYXRpb25Cb3R0b21FeHRlbnQgPSBpbnNldEV4dGVudCgpICsg
b3V0c2V0RXh0ZW50KCk7CisgICAgICAgIC8vIEJvdGggaW5zZXQgYW5kIG91dHNldCAiZGVjb3Jh
dGlvbnMiIGFyZSB3aXRoaW4gdGhlICJvdXRsaW5lIGFuZCBib3ggc2hhZG93IiBib3guCisgICAg
ICAgIGF1dG8gZGVjb3JhdGlvblRvcCA9IHN0ZDo6bWluKG5ld091dGxpbmVBbmRCb3hTaGFkb3dC
b3gubWF4WSgpLCBvbGRPdXRsaW5lQW5kQm94U2hhZG93Qm94Lm1heFkoKSkgLSBkZWNvcmF0aW9u
Qm90dG9tRXh0ZW50OworICAgICAgICBhdXRvIGNsaXBwZWRCb3VuZHNCb3R0b20gPSBzdGQ6Om1p
bihuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0Lm1heFkoKSwgb2xkQ2xpcHBlZE92ZXJmbG93UmVjdC5t
YXhZKCkpOworICAgICAgICBhdXRvIGRhbWFnZUV4dGVudFdpdGhpbkNsaXBwZWRPdmVyZmxvdyA9
IGNsaXBwZWRCb3VuZHNCb3R0b20gLSBkZWNvcmF0aW9uVG9wOworICAgICAgICBpZiAoZGFtYWdl
RXh0ZW50V2l0aGluQ2xpcHBlZE92ZXJmbG93ID4gMCkgeworICAgICAgICAgICAgZGFtYWdlRXh0
ZW50V2l0aGluQ2xpcHBlZE92ZXJmbG93ID0gc3RkOjptaW4oaGVpZ2h0ICsgZGVjb3JhdGlvbkJv
dHRvbUV4dGVudCwgZGFtYWdlRXh0ZW50V2l0aGluQ2xpcHBlZE92ZXJmbG93KTsKKyAgICAgICAg
ICAgIGF1dG8gZGFtYWdlZFJlY3QgPSBMYXlvdXRSZWN0IHsgbmV3T3V0bGluZUFuZEJveFNoYWRv
d0JveC54KCksIGRlY29yYXRpb25Ub3AsIHN0ZDo6bWF4KG5ld091dGxpbmVBbmRCb3hTaGFkb3dC
b3gud2lkdGgoKSwgb2xkT3V0bGluZUFuZEJveFNoYWRvd0JveC53aWR0aCgpKSwgZGFtYWdlRXh0
ZW50V2l0aGluQ2xpcHBlZE92ZXJmbG93IH07CisgICAgICAgICAgICByZXBhaW50VXNpbmdDb250
YWluZXIocmVwYWludENvbnRhaW5lciwgZGFtYWdlZFJlY3QpOwogICAgICAgICB9CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsK
</data>
<flag name="commit-queue"
          id="494044"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466300</attachid>
            <date>2023-05-09 16:01:27 -0700</date>
            <delta_ts>2023-05-09 19:32:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-256537-20230509160126.patch</filename>
            <type>text/plain</type>
            <size>20165</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA5NGNmMjhiMTJjNmY4YzE5MDJhZDYyNTA4MzNiNjE2YWQzZDQ3MjJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgOSBNYXkgMjAyMyAxMTozNjo1MCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtSZXBhaW50
XSBDbGVhbnVwIFJlbmRlckVsZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NTM3CgpSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCgoxLiBSZW5hbWUgaW5jb21pbmcgcGFyYW1ldGVycyB0byBpbmRpY2F0ZQog
IC0gd2hldGhlciB0aGV5IGFyZSBjbGlwcGVkIG9yIHVuY2xpcHBlZAogIC0gd2hhdCB0aGV5IGFj
dHVhbGx5IGluY2x1ZGUgKG91dGxpbmUgdnMuIG91dGxpbmUgYW5kIGJveCBzaGFkb3cpCjIuIFJl
bW92ZSByZWR1bmRhbnQvbWlzbGVhZGluZyBjb21tZW50KHMpIChlLmcuIDE2ODE0QG1haW4gY2hh
bmdlZCB0aGUgIldlIGRpZG4ndCBtb3ZlLCBidXQgd2UgZGlkIGNoYW5nZSBzaXplLiIgcGFydCB3
aGVyZSBub3cgc2l6ZSBjaGFuZ2luZyBnZXRzIGhhbmRsZXMgYm90aCBiZWZvcmUgYW5kIGFmdGVy
IHRoZSBjb21tZW50KS4KMy4gSW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMgZm9yIGVhY2ggQ1NT
IHByb3BlcnR5IHRoYXQgbWF5IGV4cGFuZCB0aGUgZGFtYWdlZCBhcmVhICh0aGV5IG1ha2UgdGhp
cyBhZGRpdGlvbmFsIHJlcGFpbnQgbG9naWMgZWFzaWVyIHRvIHJlYXNvbiBhYm91dCkuCgpMZXQn
cyBsb29rIGF0IGEgdmVyeSBzaW1wbGUgZXhhbXBsZSAoYm94IHNocmlua3MgdmVydGljYWxseSku
CgpiZWZvcmU6CgogICAgNzBweAogX19fX19fX19fCnwgICAgICAgICB8CnwgICAgICAgICB8ICAx
MDBweAp8ICAgICAgICAgfAp8ICAgICAgICAgfAp8X19fX19fX19ffAoKYWZ0ZXI6CgogICAgNzBw
eAogX19fX19fX19fCnwgICAgICAgICB8CnwgICAgICAgICB8ICA2MHB4CnxfX19fX19fX198CgpX
aXRoIG5vIGRlY29yYXRpb24gKGFzc3VtZSB0aGVzZSBib3ggbGluZXMgYXJlIG5vdCBib3JkZXJz
L291dGxpbmVzIGV0YyBsaWtlIDxkaXYgc3R5bGU9IndpZHRoOiA3MHB4OyBoZWlnaHQ6IDEwMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI+PC9kaXY+KSBvbiB0aGlzIGJveCwKdGhlICJkZWx0
YSIgbG9naWMgKGFib3ZlIHRoZSBjbGVhbnVwIHBhcnQpIGNvbXBsZXRlbHkgdGFrZXMgY2FyZSB0
aGUgZGFtYWdlZCBhcmVhIGJ5IGlzc3VpbmcgYSByZXBhaW50IGF0IFswcHgsIDYwcHgsIDcwcHgs
IDQwcHhdLgpUaGUgc3Vic2VxdWVudCBwYWludCB3aWxsIHB1dCBzb21lIG5ldyBwaXhlbHMgaW4g
dGhlcmUgcmVtb3ZpbmcgYWxsIHRoZSBvbGQgY29udGVudCAoYmFja2dyb3VuZCBjb2xvcikuCgog
ICAgNzBweAogX19fX19fX19fCnwgICAgICAgICB8CnwgICAgICAgICB8ICA2MHB4CnxfX19fX19f
X198CioqKioqKioqKioqCioqKioqKioqKioqCgood2hlcmUgJyonIG1lYW5zIGRhbWFnZWQgcGl4
ZWwpCgpIb3dldmVyIHdpdGggc29tZSBkZWNvcmF0aW9ucyAoYW5kIGxldCdzIGp1c3QgZ28gd2l0
aCB0aGUgc2ltcGxlc3QgY2FzZSBoZXJlOyBhIGJvcmRlciksIHdpdGhvdXQgZGFtYWdpbmcgYWRk
aXRpb25hbCBjYW52YXMgc3BhY2UKdGhlIGJvdHRvbSBkZWNvcmF0aW9uIChib3JkZXIpIHdvdWxk
IG5vdCBiZSB2aXNpYmxlIGF0IGFsbCBhZnRlciB0aGUgc3Vic2VxdWVudCBwYWludC4KCiAgICA3
MHB4CiBfX19fX19fX18KfCAgICAgICAgIHwKfCAgICAgICAgIHwgIDYwcHgKfCAgICAgICAgIHwK
Cl5eIHdlIGlzc3VlIHJlcGFpbnQgb24gdGhlIHBpeGVscyB3aGVyZSB0aGUgYm9yZGVyIHVzZWQg
dG8gYmUsIGJ1dCBub3Qgd2hlcmUgaXQgaXMgbm93LgoKU28gaW5zdGVhZCB3ZSBuZWVkIHRvIGV4
dGVuZCB0aGUgcmVwYWludCByZWN0IGJ5IGZpbmRpbmcgb3V0IHdoYXQgZWxzZSB3ZSBoYXZlIGlu
IHRoYXQgYm94IHRoYXQgbmVlZCBhZGRpdGlvbmFsIHBhaW50IChlLmcuIGJvcmRlciwgbmVnYXRp
dmUgb3V0bGluZSwgaW5zZXQgYm94IHNoYWRvdyBldGMpLgooYW5kIHRoYXQncyB3aGF0IHRoaXMg
Y2hhbmdlIGlzIGFib3V0KS4KCiAgICA3MHB4CiBfX19fX19fX18KfCAgICAgICAgIHwKfCAgICAg
ICAgIHwgIDYwcHgKKioqKioqKioqKioKKioqKioqKioqKioKKioqKioqKioqKioKCiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgooV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgotLS0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCB8IDE4NCArKysrKysrKysrKysrLS0tLS0tLS0KIDEg
ZmlsZSBjaGFuZ2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwgNzEgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IDVhODJmYTQ1N2E4MS4u
MTY1ZGFiNjdlZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCkBAIC0xMjA1LDIxICsxMjA1LDIxIEBAIHN0YXRpYyBib29sIG11c3RSZXBhaW50QmFja2dy
b3VuZE9yQm9yZGVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBSZW5kZXJFbGVtZW50OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRl
ZChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBM
YXlvdXRSZWN0JiBvbGRCb3VuZHMsIGNvbnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVCb3gsIGNv
bnN0IExheW91dFJlY3QqIG5ld0JvdW5kc1B0ciwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0bGlu
ZUJveFJlY3RQdHIpCitib29sIFJlbmRlckVsZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElmTmVl
ZGVkKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0
IExheW91dFJlY3QmIG9sZENsaXBwZWRPdmVyZmxvd1JlY3QsIGNvbnN0IExheW91dFJlY3QmIG9s
ZE91dGxpbmVBbmRCb3hTaGFkb3dCb3gsIGNvbnN0IExheW91dFJlY3QqIG5ld0NsaXBwZWRPdmVy
Zmxvd1JlY3RQdHIsIGNvbnN0IExheW91dFJlY3QqIG5ld091dGxpbmVBbmRCb3hTaGFkb3dCb3hS
ZWN0UHRyKQogewogICAgIGlmICh2aWV3KCkucHJpbnRpbmcoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOyAvLyBEb24ndCByZXBhaW50IGlmIHdlJ3JlIHByaW50aW5nLgogCiAgICAgLy8gVGhpcyBB
U1NFUlQgZmFpbHMgZHVlIHRvIGFuaW1hdGlvbnMuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzcwNDgKLSAgICAvLyBBU1NFUlQoIW5ld0JvdW5kc1B0ciB8fCAq
bmV3Qm91bmRzUHRyID09IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250
YWluZXIpKTsKLSAgICBMYXlvdXRSZWN0IG5ld0JvdW5kcyA9IG5ld0JvdW5kc1B0ciA/ICpuZXdC
b3VuZHNQdHIgOiBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVy
KTsKLSAgICBMYXlvdXRSZWN0IG5ld091dGxpbmVCb3g7CisgICAgLy8gQVNTRVJUKCFuZXdDbGlw
cGVkT3ZlcmZsb3dSZWN0UHRyIHx8ICpuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0UHRyID09IGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpKTsKKyAgICBMYXlvdXRS
ZWN0IG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QgPSBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0UHRyID8g
Km5ld0NsaXBwZWRPdmVyZmxvd1JlY3RQdHIgOiBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChyZXBhaW50Q29udGFpbmVyKTsKKyAgICBMYXlvdXRSZWN0IG5ld091dGxpbmVBbmRCb3hTaGFk
b3dCb3g7CiAKICAgICBib29sIGZ1bGxSZXBhaW50ID0gc2VsZk5lZWRzTGF5b3V0KCk7CiAKLSAg
ICBpZiAoIWZ1bGxSZXBhaW50ICYmIG9sZEJvdW5kcyAhPSBuZXdCb3VuZHMgJiYgc3R5bGUoKS5o
YXNCb3JkZXJSYWRpdXMoKSkgewotICAgICAgICBhdXRvIG9sZFJhZGl1cyA9IHN0eWxlKCkuZ2V0
Um91bmRlZEJvcmRlckZvcihvbGRCb3VuZHMpLnJhZGlpKCk7Ci0gICAgICAgIGF1dG8gbmV3UmFk
aXVzID0gc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKG5ld0JvdW5kcykucmFkaWkoKTsKKyAg
ICBpZiAoIWZ1bGxSZXBhaW50ICYmIG9sZENsaXBwZWRPdmVyZmxvd1JlY3QgIT0gbmV3Q2xpcHBl
ZE92ZXJmbG93UmVjdCAmJiBzdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKSB7CisgICAgICAgIGF1
dG8gb2xkUmFkaXVzID0gc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKG9sZENsaXBwZWRPdmVy
Zmxvd1JlY3QpLnJhZGlpKCk7CisgICAgICAgIGF1dG8gbmV3UmFkaXVzID0gc3R5bGUoKS5nZXRS
b3VuZGVkQm9yZGVyRm9yKG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QpLnJhZGlpKCk7CiAKICAgICAg
ICAgZnVsbFJlcGFpbnQgPSBvbGRSYWRpdXMgIT0gbmV3UmFkaXVzOwogICAgIH0KQEAgLTEyMjcs
MTAwICsxMjI3LDE0MiBAQCBib29sIFJlbmRlckVsZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElm
TmVlZGVkKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcAogICAgIGlmICghZnVsbFJl
cGFpbnQpIHsKICAgICAgICAgLy8gVGhpcyBBU1NFUlQgZmFpbHMgZHVlIHRvIGFuaW1hdGlvbnMu
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcwNDgKICAgICAg
ICAgLy8gQVNTRVJUKCFuZXdPdXRsaW5lQm94UmVjdFB0ciB8fCAqbmV3T3V0bGluZUJveFJlY3RQ
dHIgPT0gb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcikpOwotICAgICAg
ICBuZXdPdXRsaW5lQm94ID0gbmV3T3V0bGluZUJveFJlY3RQdHIgPyAqbmV3T3V0bGluZUJveFJl
Y3RQdHIgOiBvdXRsaW5lQm91bmRzRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKLSAgICAg
ICAgZnVsbFJlcGFpbnQgPSAobmV3T3V0bGluZUJveC5sb2NhdGlvbigpICE9IG9sZE91dGxpbmVC
b3gubG9jYXRpb24oKSB8fCAobXVzdFJlcGFpbnRCYWNrZ3JvdW5kT3JCb3JkZXIoKnRoaXMpICYm
IChuZXdCb3VuZHMgIT0gb2xkQm91bmRzIHx8IG5ld091dGxpbmVCb3ggIT0gb2xkT3V0bGluZUJv
eCkpKTsKKyAgICAgICAgbmV3T3V0bGluZUFuZEJveFNoYWRvd0JveCA9IG5ld091dGxpbmVBbmRC
b3hTaGFkb3dCb3hSZWN0UHRyID8gKm5ld091dGxpbmVBbmRCb3hTaGFkb3dCb3hSZWN0UHRyIDog
b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcik7CisgICAgICAgIGZ1bGxS
ZXBhaW50ID0gKG5ld091dGxpbmVBbmRCb3hTaGFkb3dCb3gubG9jYXRpb24oKSAhPSBvbGRPdXRs
aW5lQW5kQm94U2hhZG93Qm94LmxvY2F0aW9uKCkgfHwgKG11c3RSZXBhaW50QmFja2dyb3VuZE9y
Qm9yZGVyKCp0aGlzKSAmJiAobmV3Q2xpcHBlZE92ZXJmbG93UmVjdCAhPSBvbGRDbGlwcGVkT3Zl
cmZsb3dSZWN0IHx8IG5ld091dGxpbmVBbmRCb3hTaGFkb3dCb3ggIT0gb2xkT3V0bGluZUFuZEJv
eFNoYWRvd0JveCkpKTsKICAgICB9CiAKICAgICBpZiAoIXJlcGFpbnRDb250YWluZXIpCiAgICAg
ICAgIHJlcGFpbnRDb250YWluZXIgPSAmdmlldygpOwogCiAgICAgaWYgKGZ1bGxSZXBhaW50KSB7
Ci0gICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBvbGRCb3Vu
ZHMpOwotICAgICAgICBpZiAobmV3Qm91bmRzICE9IG9sZEJvdW5kcykKLSAgICAgICAgICAgIHJl
cGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBuZXdCb3VuZHMpOworICAgICAg
ICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgb2xkQ2xpcHBlZE92ZXJm
bG93UmVjdCk7CisgICAgICAgIGlmIChuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0ICE9IG9sZENsaXBw
ZWRPdmVyZmxvd1JlY3QpCisgICAgICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWlu
dENvbnRhaW5lciwgbmV3Q2xpcHBlZE92ZXJmbG93UmVjdCk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIGlmIChuZXdCb3VuZHMgPT0gb2xkQm91bmRzICYmIG5ld091dGxpbmVC
b3ggPT0gb2xkT3V0bGluZUJveCkKKyAgICBpZiAobmV3Q2xpcHBlZE92ZXJmbG93UmVjdCA9PSBv
bGRDbGlwcGVkT3ZlcmZsb3dSZWN0ICYmIG5ld091dGxpbmVBbmRCb3hTaGFkb3dCb3ggPT0gb2xk
T3V0bGluZUFuZEJveFNoYWRvd0JveCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYg
KG5ld0JvdW5kcy5pc0VtcHR5KCkgJiYgIW9sZEJvdW5kcy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
cGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBvbGRCb3VuZHMpOwotICAgIGVs
c2UgaWYgKCFuZXdCb3VuZHMuaXNFbXB0eSgpICYmIG9sZEJvdW5kcy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBuZXdCb3VuZHMpOwor
ICAgIGlmIChuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LmlzRW1wdHkoKSAmJiAhb2xkQ2xpcHBlZE92
ZXJmbG93UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBh
aW50Q29udGFpbmVyLCBvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0KTsKKyAgICBlbHNlIGlmICghbmV3
Q2xpcHBlZE92ZXJmbG93UmVjdC5pc0VtcHR5KCkgJiYgb2xkQ2xpcHBlZE92ZXJmbG93UmVjdC5p
c0VtcHR5KCkpCisgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
LCBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0KTsKICAgICBlbHNlIHsKLSAgICAgICAgTGF5b3V0VW5p
dCBkZWx0YUxlZnQgPSBuZXdCb3VuZHMueCgpIC0gb2xkQm91bmRzLngoKTsKKyAgICAgICAgTGF5
b3V0VW5pdCBkZWx0YUxlZnQgPSBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LngoKSAtIG9sZENsaXBw
ZWRPdmVyZmxvd1JlY3QueCgpOwogICAgICAgICBpZiAoZGVsdGFMZWZ0ID4gMCkKLSAgICAgICAg
ICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0KG9s
ZEJvdW5kcy54KCksIG9sZEJvdW5kcy55KCksIGRlbHRhTGVmdCwgb2xkQm91bmRzLmhlaWdodCgp
KSk7CisgICAgICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwg
TGF5b3V0UmVjdChvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0LngoKSwgb2xkQ2xpcHBlZE92ZXJmbG93
UmVjdC55KCksIGRlbHRhTGVmdCwgb2xkQ2xpcHBlZE92ZXJmbG93UmVjdC5oZWlnaHQoKSkpOwog
ICAgICAgICBlbHNlIGlmIChkZWx0YUxlZnQgPCAwKQotICAgICAgICAgICAgcmVwYWludFVzaW5n
Q29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QobmV3Qm91bmRzLngoKSwgbmV3
Qm91bmRzLnkoKSwgLWRlbHRhTGVmdCwgbmV3Qm91bmRzLmhlaWdodCgpKSk7CisgICAgICAgICAg
ICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdChuZXdD
bGlwcGVkT3ZlcmZsb3dSZWN0LngoKSwgbmV3Q2xpcHBlZE92ZXJmbG93UmVjdC55KCksIC1kZWx0
YUxlZnQsIG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QuaGVpZ2h0KCkpKTsKIAotICAgICAgICBMYXlv
dXRVbml0IGRlbHRhUmlnaHQgPSBuZXdCb3VuZHMubWF4WCgpIC0gb2xkQm91bmRzLm1heFgoKTsK
KyAgICAgICAgTGF5b3V0VW5pdCBkZWx0YVJpZ2h0ID0gbmV3Q2xpcHBlZE92ZXJmbG93UmVjdC5t
YXhYKCkgLSBvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0Lm1heFgoKTsKICAgICAgICAgaWYgKGRlbHRh
UmlnaHQgPiAwKQotICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250
YWluZXIsIExheW91dFJlY3Qob2xkQm91bmRzLm1heFgoKSwgbmV3Qm91bmRzLnkoKSwgZGVsdGFS
aWdodCwgbmV3Qm91bmRzLmhlaWdodCgpKSk7CisgICAgICAgICAgICByZXBhaW50VXNpbmdDb250
YWluZXIocmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdChvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0
Lm1heFgoKSwgbmV3Q2xpcHBlZE92ZXJmbG93UmVjdC55KCksIGRlbHRhUmlnaHQsIG5ld0NsaXBw
ZWRPdmVyZmxvd1JlY3QuaGVpZ2h0KCkpKTsKICAgICAgICAgZWxzZSBpZiAoZGVsdGFSaWdodCA8
IDApCi0gICAgICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwg
TGF5b3V0UmVjdChuZXdCb3VuZHMubWF4WCgpLCBvbGRCb3VuZHMueSgpLCAtZGVsdGFSaWdodCwg
b2xkQm91bmRzLmhlaWdodCgpKSk7CisgICAgICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIo
cmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdChuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0Lm1heFgo
KSwgb2xkQ2xpcHBlZE92ZXJmbG93UmVjdC55KCksIC1kZWx0YVJpZ2h0LCBvbGRDbGlwcGVkT3Zl
cmZsb3dSZWN0LmhlaWdodCgpKSk7CiAKLSAgICAgICAgTGF5b3V0VW5pdCBkZWx0YVRvcCA9IG5l
d0JvdW5kcy55KCkgLSBvbGRCb3VuZHMueSgpOworICAgICAgICBMYXlvdXRVbml0IGRlbHRhVG9w
ID0gbmV3Q2xpcHBlZE92ZXJmbG93UmVjdC55KCkgLSBvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0Lnko
KTsKICAgICAgICAgaWYgKGRlbHRhVG9wID4gMCkKLSAgICAgICAgICAgIHJlcGFpbnRVc2luZ0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0KG9sZEJvdW5kcy54KCksIG9sZEJv
dW5kcy55KCksIG9sZEJvdW5kcy53aWR0aCgpLCBkZWx0YVRvcCkpOworICAgICAgICAgICAgcmVw
YWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3Qob2xkQ2xpcHBl
ZE92ZXJmbG93UmVjdC54KCksIG9sZENsaXBwZWRPdmVyZmxvd1JlY3QueSgpLCBvbGRDbGlwcGVk
T3ZlcmZsb3dSZWN0LndpZHRoKCksIGRlbHRhVG9wKSk7CiAgICAgICAgIGVsc2UgaWYgKGRlbHRh
VG9wIDwgMCkKLSAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFp
bmVyLCBMYXlvdXRSZWN0KG5ld0JvdW5kcy54KCksIG5ld0JvdW5kcy55KCksIG5ld0JvdW5kcy53
aWR0aCgpLCAtZGVsdGFUb3ApKTsKKyAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihy
ZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0KG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QueCgpLCBu
ZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LnkoKSwgbmV3Q2xpcHBlZE92ZXJmbG93UmVjdC53aWR0aCgp
LCAtZGVsdGFUb3ApKTsKIAotICAgICAgICBMYXlvdXRVbml0IGRlbHRhQm90dG9tID0gbmV3Qm91
bmRzLm1heFkoKSAtIG9sZEJvdW5kcy5tYXhZKCk7CisgICAgICAgIExheW91dFVuaXQgZGVsdGFC
b3R0b20gPSBuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0Lm1heFkoKSAtIG9sZENsaXBwZWRPdmVyZmxv
d1JlY3QubWF4WSgpOwogICAgICAgICBpZiAoZGVsdGFCb3R0b20gPiAwKQotICAgICAgICAgICAg
cmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QobmV3Qm91
bmRzLngoKSwgb2xkQm91bmRzLm1heFkoKSwgbmV3Qm91bmRzLndpZHRoKCksIGRlbHRhQm90dG9t
KSk7CisgICAgICAgICAgICByZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwg
TGF5b3V0UmVjdChuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LngoKSwgb2xkQ2xpcHBlZE92ZXJmbG93
UmVjdC5tYXhZKCksIG5ld0NsaXBwZWRPdmVyZmxvd1JlY3Qud2lkdGgoKSwgZGVsdGFCb3R0b20p
KTsKICAgICAgICAgZWxzZSBpZiAoZGVsdGFCb3R0b20gPCAwKQotICAgICAgICAgICAgcmVwYWlu
dFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3Qob2xkQm91bmRzLngo
KSwgbmV3Qm91bmRzLm1heFkoKSwgb2xkQm91bmRzLndpZHRoKCksIC1kZWx0YUJvdHRvbSkpOwor
ICAgICAgICAgICAgcmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIExheW91
dFJlY3Qob2xkQ2xpcHBlZE92ZXJmbG93UmVjdC54KCksIG5ld0NsaXBwZWRPdmVyZmxvd1JlY3Qu
bWF4WSgpLCBvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0LndpZHRoKCksIC1kZWx0YUJvdHRvbSkpOwog
ICAgIH0KIAotICAgIGlmIChuZXdPdXRsaW5lQm94ID09IG9sZE91dGxpbmVCb3gpCisgICAgaWYg
KG5ld091dGxpbmVBbmRCb3hTaGFkb3dCb3ggPT0gb2xkT3V0bGluZUFuZEJveFNoYWRvd0JveCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gV2UgZGlkbid0IG1vdmUsIGJ1dCB3ZSBk
aWQgY2hhbmdlIHNpemUuIEludmFsaWRhdGUgdGhlIGRlbHRhLCB3aGljaCB3aWxsIGNvbnNpc3Qg
b2YgcG9zc2libHkKLSAgICAvLyB0d28gcmVjdGFuZ2xlcyAoYnV0IHR5cGljYWxseSBvbmx5IG9u
ZSkuCisgICAgLy8gTGV0J3MgZmlndXJlIG91dCBob3cgbXVjaCB3ZSBuZWVkIHRvIHJlcGFpbnQg
d2l0aGluIHRoZSBuZXcgYm91bmRzLgorICAgIC8vIGUuZy4gd2hlbiByZW5kZXJlciBzaHJpbmtz
IHZlcnRpY2FsbHkgaXQncyBub3Qgc3VmZmljaWVudCB0byByZXBhaW50IHRoZSAic2hydW5rIGFy
ZWEiICh0byBjbGVhciBvbGQgY29udGVudCwgc2VlIGFib3ZlKSB3ZSBuZWVkIHRvIHRha2UgY2Fy
ZSBvZiB0aGUgYXJlYSB3aXRoaW4gdGhlIG5ldyBib3VuZHMgdG8gbWFrZSBzdXJlCisgICAgLy8g
ZGVjb3JhdGlvbnMgbGlrZSBib3JkZXIsIG91dGxpbmUgZXRjIGdldCByZXBhaW50ZWQgYXMgd2Vs
bCAodGhleSBhcmUgZW5jbG9zZWQgYnkgb2xkL25ldyBib3VuZHMpLgogICAgIGNvbnN0IFJlbmRl
clN0eWxlJiBvdXRsaW5lU3R5bGUgPSBvdXRsaW5lU3R5bGVGb3JSZXBhaW50KCk7Ci0gICAgTGF5
b3V0VW5pdCBvdXRsaW5lV2lkdGggeyBvdXRsaW5lU3R5bGUub3V0bGluZVNpemUoKSB9OwotICAg
IGF1dG8gaW5zZXRTaGFkb3dFeHRlbnQgPSBzdHlsZSgpLmJveFNoYWRvd0luc2V0RXh0ZW50KCk7
Ci0gICAgTGF5b3V0VW5pdCB3aWR0aCA9IGFic29sdXRlVmFsdWUobmV3T3V0bGluZUJveC53aWR0
aCgpIC0gb2xkT3V0bGluZUJveC53aWR0aCgpKTsKLSAgICBpZiAod2lkdGgpIHsKLSAgICAgICAg
TGF5b3V0VW5pdCBzaGFkb3dMZWZ0OwotICAgICAgICBMYXlvdXRVbml0IHNoYWRvd1JpZ2h0Owot
ICAgICAgICBzdHlsZSgpLmdldEJveFNoYWRvd0hvcml6b250YWxFeHRlbnQoc2hhZG93TGVmdCwg
c2hhZG93UmlnaHQpOwotICAgICAgICBMYXlvdXRVbml0IGJvcmRlclJpZ2h0ID0gaXM8UmVuZGVy
Qm94PigqdGhpcykgPyBkb3duY2FzdDxSZW5kZXJCb3g+KCp0aGlzKS5ib3JkZXJSaWdodCgpIDog
MF9sdTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3hXaWR0aCA9IGlzPFJlbmRlckJveD4oKnRoaXMp
ID8gZG93bmNhc3Q8UmVuZGVyQm94PigqdGhpcykud2lkdGgoKSA6IDBfbHU7Ci0gICAgICAgIExh
eW91dFVuaXQgbWluSW5zZXRSaWdodFNoYWRvd0V4dGVudCA9IHN0ZDo6bWluPExheW91dFVuaXQ+
KC1pbnNldFNoYWRvd0V4dGVudC5yaWdodCgpLCBzdGQ6Om1pbihuZXdCb3VuZHMud2lkdGgoKSwg
b2xkQm91bmRzLndpZHRoKCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IHN0
ZDo6bWF4KGJvcmRlclJpZ2h0LCBzdGQ6Om1heCh2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRl
clRvcFJpZ2h0UmFkaXVzKCkud2lkdGgsIGJveFdpZHRoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUo
KS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoLCBib3hXaWR0aCkpKTsKLSAgICAgICAg
TGF5b3V0VW5pdCBkZWNvcmF0aW9uc1dpZHRoID0gc3RkOjptYXgoTGF5b3V0VW5pdCgtb3V0bGlu
ZVN0eWxlLm91dGxpbmVPZmZzZXQoKSksIGJvcmRlcldpZHRoICsgbWluSW5zZXRSaWdodFNoYWRv
d0V4dGVudCkgKyBzdGQ6Om1heChvdXRsaW5lV2lkdGgsIHNoYWRvd1JpZ2h0KTsKLSAgICAgICAg
TGF5b3V0UmVjdCByaWdodFJlY3QobmV3T3V0bGluZUJveC54KCkgKyBzdGQ6Om1pbihuZXdPdXRs
aW5lQm94LndpZHRoKCksIG9sZE91dGxpbmVCb3gud2lkdGgoKSkgLSBkZWNvcmF0aW9uc1dpZHRo
LAotICAgICAgICAgICAgbmV3T3V0bGluZUJveC55KCksCi0gICAgICAgICAgICB3aWR0aCArIGRl
Y29yYXRpb25zV2lkdGgsCi0gICAgICAgICAgICBzdGQ6Om1heChuZXdPdXRsaW5lQm94LmhlaWdo
dCgpLCBvbGRPdXRsaW5lQm94LmhlaWdodCgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgcmlnaHQg
PSBzdGQ6Om1pbihuZXdCb3VuZHMubWF4WCgpLCBvbGRCb3VuZHMubWF4WCgpKTsKLSAgICAgICAg
aWYgKHJpZ2h0UmVjdC54KCkgPCByaWdodCkgewotICAgICAgICAgICAgcmlnaHRSZWN0LnNldFdp
ZHRoKHN0ZDo6bWluKHJpZ2h0UmVjdC53aWR0aCgpLCByaWdodCAtIHJpZ2h0UmVjdC54KCkpKTsK
LSAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCByaWdo
dFJlY3QpOworICAgIGF1dG8mIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKKyAgICBhdXRvIG91dGxp
bmVXaWR0aCA9IExheW91dFVuaXQgeyBvdXRsaW5lU3R5bGUub3V0bGluZVNpemUoKSB9OworICAg
IGF1dG8gaW5zZXRTaGFkb3dFeHRlbnQgPSBzdHlsZS5ib3hTaGFkb3dJbnNldEV4dGVudCgpOwor
ICAgIGF1dG8gc2l6ZURlbHRhID0gTGF5b3V0U2l6ZSB7IGFic29sdXRlVmFsdWUobmV3T3V0bGlu
ZUFuZEJveFNoYWRvd0JveC53aWR0aCgpIC0gb2xkT3V0bGluZUFuZEJveFNoYWRvd0JveC53aWR0
aCgpKSwgYWJzb2x1dGVWYWx1ZShuZXdPdXRsaW5lQW5kQm94U2hhZG93Qm94LmhlaWdodCgpIC0g
b2xkT3V0bGluZUFuZEJveFNoYWRvd0JveC5oZWlnaHQoKSkgfTsKKyAgICBpZiAoc2l6ZURlbHRh
LndpZHRoKCkpIHsKKyAgICAgICAgYXV0byBpbnNldEV4dGVudCA9IFsmXSB7CisgICAgICAgICAg
ICAvLyBJbnNldCAiY29udGVudCIgaXMgaW5zaWRlIHRoZSBib3JkZXIgYm94IChlLmcuIGJvcmRl
ciwgbmVnYXRpdmUgb3V0bGluZSBhbmQgYm94IHNoYWRvdykuCisgICAgICAgICAgICBhdXRvIGJv
cmRlclJpZ2h0RXh0ZW50ID0gWyZdKCkgLT4gTGF5b3V0VW5pdCB7CisgICAgICAgICAgICAgICAg
aWYgKCFpczxSZW5kZXJCb3g+KCp0aGlzKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAgICAgICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+
KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBhdXRvIGJvcmRlckJveFdpZHRoID0gcmVuZGVyQm94
LndpZHRoKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHJlbmRlckJveC5ib3Jk
ZXJSaWdodCgpLCBzdGQ6Om1heCh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJh
ZGl1cygpLndpZHRoLCBib3JkZXJCb3hXaWR0aCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgsIGJvcmRlckJveFdpZHRoKSkpOworICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgIGF1dG8gb3V0bGluZVJpZ2h0SW5zZXRFeHRlbnQgPSBbJl0oKSAt
PiBMYXlvdXRVbml0IHsKKyAgICAgICAgICAgICAgICBhdXRvIG9mZnNldCA9IExheW91dFVuaXQg
eyBvdXRsaW5lU3R5bGUub3V0bGluZU9mZnNldCgpIH07CisgICAgICAgICAgICAgICAgcmV0dXJu
IG9mZnNldCA8IDAgPyAtb2Zmc2V0IDogMF9sdTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAg
ICBhdXRvIGJveFNoYWRvd1JpZ2h0SW5zZXRFeHRlbnQgPSBbJl0geworICAgICAgICAgICAgICAg
IGF1dG8gcmlnaHRJbnNldCA9IGluc2V0U2hhZG93RXh0ZW50LnJpZ2h0KCk7CisgICAgICAgICAg
ICAgICAgLy8gQ2xpcCBpbnNldCBzaGFkb3cgYXQgdGhlIGNsaXBwZWQgb3ZlcmZsb3cgcmVjdC4g
V2Ugd291bGQgbmV2ZXIgcGFpbnQgb3V0c2lkZS4KKyAgICAgICAgICAgICAgICByZXR1cm4gcmln
aHRJbnNldCA8IDAgPyBzdGQ6Om1pbigtcmlnaHRJbnNldCwgc3RkOjptaW4obmV3Q2xpcHBlZE92
ZXJmbG93UmVjdC53aWR0aCgpLCBvbGRDbGlwcGVkT3ZlcmZsb3dSZWN0LndpZHRoKCkpKSA6IDBf
bHU7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgLy8gT3V0bGluZSBzdGFydHMgYXQgdGhl
IGJvcmRlciBib3ggd2hpbGUgYm94IHNoYWRvdyBzdGFydHMgYXQgdGhlIHBhZGRpbmcgYm94Lgor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KG91dGxpbmVSaWdodEluc2V0RXh0ZW50KCksIGJv
cmRlclJpZ2h0RXh0ZW50KCkgKyBib3hTaGFkb3dSaWdodEluc2V0RXh0ZW50KCkpOworICAgICAg
ICB9OworICAgICAgICBhdXRvIG91dHNldEV4dGVudCA9IFsmXSB7CisgICAgICAgICAgICAvLyBP
dXRzZXQgImNvbnRlbnQiIGlzIG91dHNpZGUgb2YgdGhlIGJvcmRlciBib3ggKGUuZy4gcmVndWxh
ciBvdXRsaW5lIGFuZCBib3ggc2hhZG93KS4KKyAgICAgICAgICAgIGF1dG8gc2hhZG93TGVmdCA9
IExheW91dFVuaXQgeyB9OworICAgICAgICAgICAgYXV0byBzaGFkb3dSaWdodCA9IExheW91dFVu
aXQgeyB9OworICAgICAgICAgICAgc3R5bGUuZ2V0Qm94U2hhZG93SG9yaXpvbnRhbEV4dGVudChz
aGFkb3dMZWZ0LCBzaGFkb3dSaWdodCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgob3V0
bGluZVdpZHRoLCBzaGFkb3dSaWdodCk7CisgICAgICAgIH07CisgICAgICAgIGF1dG8gZGVjb3Jh
dGlvblJpZ2h0RXh0ZW50ID0gaW5zZXRFeHRlbnQoKSArIG91dHNldEV4dGVudCgpOworICAgICAg
ICAvLyBCb3RoIGluc2V0IGFuZCBvdXRzZXQgImRlY29yYXRpb25zIiBhcmUgd2l0aGluIHRoZSAi
b3V0bGluZSBhbmQgYm94IHNoYWRvdyIgYm94LgorICAgICAgICBhdXRvIGRlY29yYXRpb25MZWZ0
ID0gbmV3T3V0bGluZUFuZEJveFNoYWRvd0JveC54KCkgKyBzdGQ6Om1pbihuZXdPdXRsaW5lQW5k
Qm94U2hhZG93Qm94LndpZHRoKCksIG9sZE91dGxpbmVBbmRCb3hTaGFkb3dCb3gud2lkdGgoKSkg
LSBkZWNvcmF0aW9uUmlnaHRFeHRlbnQ7CisgICAgICAgIGF1dG8gY2xpcHBlZEJvdW5kc1JpZ2h0
ID0gc3RkOjptaW4obmV3Q2xpcHBlZE92ZXJmbG93UmVjdC5tYXhYKCksIG9sZENsaXBwZWRPdmVy
Zmxvd1JlY3QubWF4WCgpKTsKKyAgICAgICAgYXV0byBkYW1hZ2VFeHRlbnRXaXRoaW5DbGlwcGVk
T3ZlcmZsb3cgPSBjbGlwcGVkQm91bmRzUmlnaHQgLSBkZWNvcmF0aW9uTGVmdDsKKyAgICAgICAg
aWYgKGRhbWFnZUV4dGVudFdpdGhpbkNsaXBwZWRPdmVyZmxvdyA+IDApIHsKKyAgICAgICAgICAg
IGRhbWFnZUV4dGVudFdpdGhpbkNsaXBwZWRPdmVyZmxvdyA9IHN0ZDo6bWluKHNpemVEZWx0YS53
aWR0aCgpICsgZGVjb3JhdGlvblJpZ2h0RXh0ZW50LCBkYW1hZ2VFeHRlbnRXaXRoaW5DbGlwcGVk
T3ZlcmZsb3cpOworICAgICAgICAgICAgYXV0byBkYW1hZ2VkUmVjdCA9IExheW91dFJlY3QgeyBk
ZWNvcmF0aW9uTGVmdCwgbmV3T3V0bGluZUFuZEJveFNoYWRvd0JveC55KCksIGRhbWFnZUV4dGVu
dFdpdGhpbkNsaXBwZWRPdmVyZmxvdywgc3RkOjptYXgobmV3T3V0bGluZUFuZEJveFNoYWRvd0Jv
eC5oZWlnaHQoKSwgb2xkT3V0bGluZUFuZEJveFNoYWRvd0JveC5oZWlnaHQoKSkgfTsKKyAgICAg
ICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBkYW1hZ2VkUmVj
dCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgTGF5b3V0VW5pdCBoZWlnaHQgPSBhYnNvbHV0ZVZh
bHVlKG5ld091dGxpbmVCb3guaGVpZ2h0KCkgLSBvbGRPdXRsaW5lQm94LmhlaWdodCgpKTsKLSAg
ICBpZiAoaGVpZ2h0KSB7Ci0gICAgICAgIExheW91dFVuaXQgc2hhZG93VG9wOwotICAgICAgICBM
YXlvdXRVbml0IHNoYWRvd0JvdHRvbTsKLSAgICAgICAgc3R5bGUoKS5nZXRCb3hTaGFkb3dWZXJ0
aWNhbEV4dGVudChzaGFkb3dUb3AsIHNoYWRvd0JvdHRvbSk7Ci0gICAgICAgIExheW91dFVuaXQg
Ym9yZGVyQm90dG9tID0gaXM8UmVuZGVyQm94PigqdGhpcykgPyBkb3duY2FzdDxSZW5kZXJCb3g+
KCp0aGlzKS5ib3JkZXJCb3R0b20oKSA6IDBfbHU7Ci0gICAgICAgIExheW91dFVuaXQgYm94SGVp
Z2h0ID0gaXM8UmVuZGVyQm94PigqdGhpcykgPyBkb3duY2FzdDxSZW5kZXJCb3g+KCp0aGlzKS5o
ZWlnaHQoKSA6IDBfbHU7Ci0gICAgICAgIExheW91dFVuaXQgbWluSW5zZXRCb3R0b21TaGFkb3dF
eHRlbnQgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PigtaW5zZXRTaGFkb3dFeHRlbnQuYm90dG9tKCks
IHN0ZDo6bWluKG5ld0JvdW5kcy5oZWlnaHQoKSwgb2xkQm91bmRzLmhlaWdodCgpKSk7Ci0gICAg
ICAgIExheW91dFVuaXQgYm9yZGVySGVpZ2h0ID0gc3RkOjptYXgoYm9yZGVyQm90dG9tLCBzdGQ6
Om1heCh2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWln
aHQsIGJveEhlaWdodCksCi0gICAgICAgICAgICB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0LCBib3hIZWlnaHQpKSk7Ci0gICAgICAgIExheW91
dFVuaXQgZGVjb3JhdGlvbnNIZWlnaHQgPSBzdGQ6Om1heChMYXlvdXRVbml0KC1vdXRsaW5lU3R5
bGUub3V0bGluZU9mZnNldCgpKSwgYm9yZGVySGVpZ2h0ICsgbWluSW5zZXRCb3R0b21TaGFkb3dF
eHRlbnQpICsgc3RkOjptYXgob3V0bGluZVdpZHRoLCBzaGFkb3dCb3R0b20pOwotICAgICAgICBM
YXlvdXRSZWN0IGJvdHRvbVJlY3QobmV3T3V0bGluZUJveC54KCksCi0gICAgICAgICAgICBzdGQ6
Om1pbihuZXdPdXRsaW5lQm94Lm1heFkoKSwgb2xkT3V0bGluZUJveC5tYXhZKCkpIC0gZGVjb3Jh
dGlvbnNIZWlnaHQsCi0gICAgICAgICAgICBzdGQ6Om1heChuZXdPdXRsaW5lQm94LndpZHRoKCks
IG9sZE91dGxpbmVCb3gud2lkdGgoKSksCi0gICAgICAgICAgICBoZWlnaHQgKyBkZWNvcmF0aW9u
c0hlaWdodCk7Ci0gICAgICAgIExheW91dFVuaXQgYm90dG9tID0gc3RkOjptaW4obmV3Qm91bmRz
Lm1heFkoKSwgb2xkQm91bmRzLm1heFkoKSk7Ci0gICAgICAgIGlmIChib3R0b21SZWN0LnkoKSA8
IGJvdHRvbSkgewotICAgICAgICAgICAgYm90dG9tUmVjdC5zZXRIZWlnaHQoc3RkOjptaW4oYm90
dG9tUmVjdC5oZWlnaHQoKSwgYm90dG9tIC0gYm90dG9tUmVjdC55KCkpKTsKLSAgICAgICAgICAg
IHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBib3R0b21SZWN0KTsKKyAg
ICBpZiAoc2l6ZURlbHRhLmhlaWdodCgpKSB7CisgICAgICAgIGF1dG8gaW5zZXRFeHRlbnQgPSBb
Jl0geworICAgICAgICAgICAgLy8gSW5zZXQgImNvbnRlbnQiIGlzIGluc2lkZSB0aGUgYm9yZGVy
IGJveCAoZS5nLiBib3JkZXIsIG5lZ2F0aXZlIG91dGxpbmUgYW5kIGJveCBzaGFkb3cpLgorICAg
ICAgICAgICAgYXV0byBib3JkZXJCb3R0b21FeHRlbnQgPSBbJl0oKSAtPiBMYXlvdXRVbml0IHsK
KyAgICAgICAgICAgICAgICBpZiAoIWlzPFJlbmRlckJveD4oKnRoaXMpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgICAgIGF1dG8mIHJlbmRlckJveCA9IGRv
d25jYXN0PFJlbmRlckJveD4oKnRoaXMpOworICAgICAgICAgICAgICAgIGF1dG8gYm9yZGVyQm94
SGVpZ2h0ID0gcmVuZGVyQm94LmhlaWdodCgpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1heChyZW5kZXJCb3guYm9yZGVyQm90dG9tKCksIHN0ZDo6bWF4KHZhbHVlRm9yTGVuZ3RoKHN0
eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQsIGJvcmRlckJveEhlaWdodCksIHZh
bHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0LCBib3Jk
ZXJCb3hIZWlnaHQpKSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgYXV0byBvdXRsaW5l
Qm90dG9tSW5zZXRFeHRlbnQgPSBbJl0oKSAtPiBMYXlvdXRVbml0IHsKKyAgICAgICAgICAgICAg
ICBhdXRvIG9mZnNldCA9IExheW91dFVuaXQgeyBvdXRsaW5lU3R5bGUub3V0bGluZU9mZnNldCgp
IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldCA8IDAgPyAtb2Zmc2V0IDogMF9sdTsK
KyAgICAgICAgICAgIH07CisgICAgICAgICAgICBhdXRvIGJveFNoYWRvd0JvdHRvbUluc2V0RXh0
ZW50ID0gWyZdIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJvdHRvbUluc2V0ID0gaW5zZXRTaGFk
b3dFeHRlbnQuYm90dG9tKCk7CisgICAgICAgICAgICAgICAgLy8gQ2xpcCBpbnNldCBzaGFkb3cg
YXQgdGhlIGNsaXBwZWQgb3ZlcmZsb3cgcmVjdC4gV2Ugd291bGQgbmV2ZXIgcGFpbnQgb3V0c2lk
ZS4KKyAgICAgICAgICAgICAgICByZXR1cm4gYm90dG9tSW5zZXQgPCAwID8gc3RkOjptaW4oLWJv
dHRvbUluc2V0LCBzdGQ6Om1pbihuZXdDbGlwcGVkT3ZlcmZsb3dSZWN0LmhlaWdodCgpLCBvbGRD
bGlwcGVkT3ZlcmZsb3dSZWN0LmhlaWdodCgpKSkgOiAwX2x1OworICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIC8vIE91dGxpbmUgc3RhcnRzIGF0IHRoZSBib3JkZXIgYm94IHdoaWxlIGJveCBz
aGFkb3cgc3RhcnRzIGF0IHRoZSBwYWRkaW5nIGJveC4KKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1heChvdXRsaW5lQm90dG9tSW5zZXRFeHRlbnQoKSwgYm9yZGVyQm90dG9tRXh0ZW50KCkgKyBi
b3hTaGFkb3dCb3R0b21JbnNldEV4dGVudCgpKTsKKyAgICAgICAgfTsKKyAgICAgICAgYXV0byBv
dXRzZXRFeHRlbnQgPSBbJl0geworICAgICAgICAgICAgLy8gT3V0c2V0ICJjb250ZW50IiBpcyBv
dXRzaWRlIG9mIHRoZSBib3JkZXIgYm94IChlLmcuIHJlZ3VsYXIgb3V0bGluZSBhbmQgYm94IHNo
YWRvdykuCisgICAgICAgICAgICBhdXRvIHNoYWRvd1RvcCA9IExheW91dFVuaXQgeyB9OworICAg
ICAgICAgICAgYXV0byBzaGFkb3dCb3R0b20gPSBMYXlvdXRVbml0IHsgfTsKKyAgICAgICAgICAg
IHN0eWxlLmdldEJveFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvd1RvcCwgc2hhZG93Qm90dG9t
KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heChvdXRsaW5lV2lkdGgsIHNoYWRvd0JvdHRv
bSk7CisgICAgICAgIH07CisgICAgICAgIGF1dG8gZGVjb3JhdGlvbkJvdHRvbUV4dGVudCA9IGlu
c2V0RXh0ZW50KCkgKyBvdXRzZXRFeHRlbnQoKTsKKyAgICAgICAgLy8gQm90aCBpbnNldCBhbmQg
b3V0c2V0ICJkZWNvcmF0aW9ucyIgYXJlIHdpdGhpbiB0aGUgIm91dGxpbmUgYW5kIGJveCBzaGFk
b3ciIGJveC4KKyAgICAgICAgYXV0byBkZWNvcmF0aW9uVG9wID0gc3RkOjptaW4obmV3T3V0bGlu
ZUFuZEJveFNoYWRvd0JveC5tYXhZKCksIG9sZE91dGxpbmVBbmRCb3hTaGFkb3dCb3gubWF4WSgp
KSAtIGRlY29yYXRpb25Cb3R0b21FeHRlbnQ7CisgICAgICAgIGF1dG8gY2xpcHBlZEJvdW5kc0Jv
dHRvbSA9IHN0ZDo6bWluKG5ld0NsaXBwZWRPdmVyZmxvd1JlY3QubWF4WSgpLCBvbGRDbGlwcGVk
T3ZlcmZsb3dSZWN0Lm1heFkoKSk7CisgICAgICAgIGF1dG8gZGFtYWdlRXh0ZW50V2l0aGluQ2xp
cHBlZE92ZXJmbG93ID0gY2xpcHBlZEJvdW5kc0JvdHRvbSAtIGRlY29yYXRpb25Ub3A7CisgICAg
ICAgIGlmIChkYW1hZ2VFeHRlbnRXaXRoaW5DbGlwcGVkT3ZlcmZsb3cgPiAwKSB7CisgICAgICAg
ICAgICBkYW1hZ2VFeHRlbnRXaXRoaW5DbGlwcGVkT3ZlcmZsb3cgPSBzdGQ6Om1pbihzaXplRGVs
dGEuaGVpZ2h0KCkgKyBkZWNvcmF0aW9uQm90dG9tRXh0ZW50LCBkYW1hZ2VFeHRlbnRXaXRoaW5D
bGlwcGVkT3ZlcmZsb3cpOworICAgICAgICAgICAgYXV0byBkYW1hZ2VkUmVjdCA9IExheW91dFJl
Y3QgeyBuZXdPdXRsaW5lQW5kQm94U2hhZG93Qm94LngoKSwgZGVjb3JhdGlvblRvcCwgc3RkOjpt
YXgobmV3T3V0bGluZUFuZEJveFNoYWRvd0JveC53aWR0aCgpLCBvbGRPdXRsaW5lQW5kQm94U2hh
ZG93Qm94LndpZHRoKCkpLCBkYW1hZ2VFeHRlbnRXaXRoaW5DbGlwcGVkT3ZlcmZsb3cgfTsKKyAg
ICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBkYW1hZ2Vk
UmVjdCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>