<?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>186083</bug_id>
          
          <creation_ts>2018-05-29 22:00:03 -0700</creation_ts>
          <short_desc>[LFC] Miscellaneous fixes to get closer to geometry correctness</short_desc>
          <delta_ts>2018-05-30 08:27:17 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</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>1428358</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-05-29 22:00:03 -0700</bug_when>
    <thetext>when laying out &lt;div&gt;&lt;/div&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428418</commentid>
    <comment_count>1</comment_count>
      <attachid>341569</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-05-30 07:32:50 -0700</bug_when>
    <thetext>Created attachment 341569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428422</commentid>
    <comment_count>2</comment_count>
      <attachid>341569</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-05-30 07:41:45 -0700</bug_when>
    <thetext>Comment on attachment 341569
Patch

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

&gt; Source/WebCore/layout/blockformatting/BlockFormattingContextGeometry.cpp:120
&gt; +    auto width = [&amp;]() {

computeWidth() maybe? width() sounds like an accessor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428426</commentid>
    <comment_count>3</comment_count>
      <attachid>341573</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-05-30 07:47:33 -0700</bug_when>
    <thetext>Created attachment 341573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428428</commentid>
    <comment_count>4</comment_count>
      <attachid>341574</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-05-30 07:58:27 -0700</bug_when>
    <thetext>Created attachment 341574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428433</commentid>
    <comment_count>5</comment_count>
      <attachid>341574</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-30 08:26:56 -0700</bug_when>
    <thetext>Comment on attachment 341574
Patch

Clearing flags on attachment: 341574

Committed r232291: &lt;https://trac.webkit.org/changeset/232291&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428434</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-30 08:26:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428435</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-30 08:27:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/40650779&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341569</attachid>
            <date>2018-05-30 07:32:50 -0700</date>
            <delta_ts>2018-05-30 07:47:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186083-20180530073249.patch</filename>
            <type>text/plain</type>
            <size>19483</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg4YTdiNmIyYzdmMDFi
Yzg1MmU5ODQ3ZGY2YTZlMDgwNWVlMTI4Mi4uNTI4ZmQwZTUwYjkwNGI1NWM0YjY3MTI5MTUwNzNm
Y2RlZTk2ZmRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTA1LTI5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gTWlzY2VsbGFuZW91
cyBmaXhlcyB0byBnZXQgY2xvc2VyIHRvIGdlb21ldHJ5IGNvcnJlY3RuZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYwODMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcik6CisgICAgICAgICogbGF5b3V0L0xh
eW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRDb250ZXh0
Ojppbml0aWFsaXplUm9vdCk6CisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQm94SW5mb3JtYXRpb25J
Zk5lZWRlZCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojppc1N0cmV0
Y2hlZFRvVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojppbml0aWFsQ29udGFp
bmluZ0Jsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y29tcHV0ZWRJbkZsb3dOb25S
ZXBsYWNlZENvbXB1dGVkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6aW5GbG93
Tm9uUmVwbGFjZWRDb21wdXRlZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0KTog
bGFtYmRhIHNob3VsZCBjYXB0dXJlIHRoZSBzcGVjaWZpY2F0aW9uIHBhcnQuIAorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93
Tm9uUmVwbGFjZWRXaWR0aCk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjptYXJnaW5Cb3ggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpwYWRkaW5nQm94IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Y29udGVudEJveCBjb25zdCk6CisgICAgICAg
ICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Qm94Ojppc0RvY3VtZW50Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Qm94Ojppc0JvZHlCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oOiBpZ25v
cmUgYm9yZGVyLXdpZHRoIHdoZW4gdHlwZSBpcyBoaWRkZW4gb3Igbm9uZS4gCisgICAgICAgIChX
ZWJDb3JlOjpCb3JkZXJWYWx1ZTo6Ym94TW9kZWxXaWR0aCBjb25zdCk6CisKIDIwMTgtMDUtMjkg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGNvbnNp
c3RlbmN5IGNoZWNrIGJldHdlZW4gVVJMIGFuZCBDRlVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDhjNzRlYzU0MTgx
N2VkMDk4ODNhMDZmMDc5MmQ2YzdiM2NhNzMwOTMuLjc4OWZmMWE5MjYxMDQxNDU5NWM0MWY1M2Ix
NDUzNWE0NjhmZjUzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTUyOSwxMCArNTI5LDEwIEBAIERpc3BsYXk6OkJv
eDo6RWRnZXMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcihMYXlv
dXRDb250ZXh0JiwKIHsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAg
IHJldHVybiB7Ci0gICAgICAgIHN0eWxlLmJvcmRlclRvcCgpLndpZHRoKCksCi0gICAgICAgIHN0
eWxlLmJvcmRlckxlZnQoKS53aWR0aCgpLAotICAgICAgICBzdHlsZS5ib3JkZXJCb3R0b20oKS53
aWR0aCgpLAotICAgICAgICBzdHlsZS5ib3JkZXJSaWdodCgpLndpZHRoKCkKKyAgICAgICAgc3R5
bGUuYm9yZGVyVG9wKCkuYm94TW9kZWxXaWR0aCgpLAorICAgICAgICBzdHlsZS5ib3JkZXJMZWZ0
KCkuYm94TW9kZWxXaWR0aCgpLAorICAgICAgICBzdHlsZS5ib3JkZXJCb3R0b20oKS5ib3hNb2Rl
bFdpZHRoKCksCisgICAgICAgIHN0eWxlLmJvcmRlclJpZ2h0KCkuYm94TW9kZWxXaWR0aCgpCiAg
ICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCmluZGV4IDhm
MjhlN2FiOGRmNzFlODg5MTQ3NWIxMjVlNmExNzQ0NDkyYjM4NTguLmUwMTViNTE5N2FlMzFmZmI5
YzliOTE5OTMxYmZhMjI4NjZmZWE5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29u
dGV4dC5jcHAKQEAgLTYxLDEyICs2MSwxMiBAQCB2b2lkIExheW91dENvbnRleHQ6OmluaXRpYWxp
emVSb290KGNvbnN0IENvbnRhaW5lciYgcm9vdCwgY29uc3QgTGF5b3V0U2l6ZSYgY29udAogICAg
IGRpc3BsYXlCb3guc2V0TWFyZ2luKHsgfSk7CiAKICAgICBhdXRvJiBzdHlsZSA9IHJvb3Quc3R5
bGUoKTsKLSAgICAvLyBGSVhNRTogbV9yb290IGNvdWxkIHZlcnkgd2VsbCBiZSBhIGZvcm1hdHRp
bmcgY29udGV4dCByb290IHdpdGggYW5jZXN0b3JzIGFuZCByZXNvbHZhYmxlIGJvcmRlciBhbmQg
cGFkZGluZyAoYXMgb3Bwb3NlZCB0byB0aGUgdG9wbW9zdCByb290KSAgCisgICAgLy8gRklYTUU6
IG1fcm9vdCBjb3VsZCB2ZXJ5IHdlbGwgYmUgYSBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCB3aXRo
IGFuY2VzdG9ycyBhbmQgcmVzb2x2YWJsZSBib3JkZXIgYW5kIHBhZGRpbmcgKGFzIG9wcG9zZWQg
dG8gdGhlIHRvcG1vc3Qgcm9vdCkKICAgICBkaXNwbGF5Qm94LnNldEJvcmRlcih7Ci0gICAgICAg
IHN0eWxlLmJvcmRlclRvcCgpLndpZHRoKCksCi0gICAgICAgIHN0eWxlLmJvcmRlckxlZnQoKS53
aWR0aCgpLAotICAgICAgICBzdHlsZS5ib3JkZXJCb3R0b20oKS53aWR0aCgpLAotICAgICAgICBz
dHlsZS5ib3JkZXJSaWdodCgpLndpZHRoKCkKKyAgICAgICAgc3R5bGUuYm9yZGVyVG9wKCkuYm94
TW9kZWxXaWR0aCgpLAorICAgICAgICBzdHlsZS5ib3JkZXJMZWZ0KCkuYm94TW9kZWxXaWR0aCgp
LAorICAgICAgICBzdHlsZS5ib3JkZXJCb3R0b20oKS5ib3hNb2RlbFdpZHRoKCksCisgICAgICAg
IHN0eWxlLmJvcmRlclJpZ2h0KCkuYm94TW9kZWxXaWR0aCgpCiAgICAgfSk7CiAKICAgICBkaXNw
bGF5Qm94LnNldFBhZGRpbmcoewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1Zl
cmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcApp
bmRleCBhN2FmNzMxMTYzMTU3NGI4ZjQ3Nzg4Y2U5YzcxOTA2NjkxZTUwNTQwLi45YWI4MDhmMWI4
ZGU1NTZhMGZjZTBmZmY1NWZlMTY0OTNhYjJlZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCBvdXRwdXRNaXNtYXRj
aGluZ0JveEluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYQog
ICAgIGlmIChyZW5kZXJlci5wYWRkaW5nQm94UmVjdCgpICE9IGRpc3BsYXlCb3gtPnBhZGRpbmdC
b3goKSkKICAgICAgICAgb3V0cHV0UmVjdCgicGFkZGluZ0JveCIsIHJlbmRlcmVyLnBhZGRpbmdC
b3hSZWN0KCksIGRpc3BsYXlCb3gtPnBhZGRpbmdCb3goKSk7CiAKLSAgICBpZiAocmVuZGVyZXIu
bWFyZ2luQm94UmVjdCgpICE9IGRpc3BsYXlCb3gtPmNvbnRlbnRCb3goKSkKKyAgICBpZiAocmVu
ZGVyZXIuY29udGVudEJveFJlY3QoKSAhPSBkaXNwbGF5Qm94LT5jb250ZW50Qm94KCkpCiAgICAg
ICAgIG91dHB1dFJlY3QoImNvbnRlbnRCb3giLCByZW5kZXJlci5jb250ZW50Qm94UmVjdCgpLCBk
aXNwbGF5Qm94LT5jb250ZW50Qm94KCkpOwogCiAgICAgc3RyZWFtLm5leHRMaW5lKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggMjUzMWU5MDM2
MzljODQ0ZGFmNWZiYWE0NTAyY2RkY2ZhN2EyMWE2YS4uNTJlNjFlNTJjODJlOTkxNzg0ZjY4YWYy
MWU2OTVmMTg3NzdmMWYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdl
b21ldHJ5LmNwcApAQCAtMzMsODcgKzMzLDEyNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFt
ZXNwYWNlIExheW91dCB7CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENvbnRl
eHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorc3RhdGljIGJvb2wgaXNTdHJldGNoZWRUb1ZpZXdw
b3J0KGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZs
b3coKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOworICAgIEFTU0VSVChsYXlvdXRCb3guaXNJ
bkZsb3coKSk7CisgICAgLy8gSW4gcXVpcmtzIG1vZGUsIGJvZHkgYW5kIGh0bWwgc3RyZXRjaCB0
byB0aGUgdmlld3BvcnQuCisgICAgLy8gaWYgKCFsYXlvdXRCb3guZG9jdW1lbnQoKS5pblF1aXJr
c01vZGUoKSkKKyAgICAvLyAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBodHRwczovL3d3dy53
My5vcmcvVFIvQ1NTMjIvdmlzdWRldC5odG1sCi0gICAgLy8gSWYgJ2hlaWdodCcgaXMgJ2F1dG8n
LCB0aGUgaGVpZ2h0IGRlcGVuZHMgb24gd2hldGhlciB0aGUgZWxlbWVudCBoYXMgYW55IGJsb2Nr
LWxldmVsIGNoaWxkcmVuIGFuZCB3aGV0aGVyIGl0IGhhcyBwYWRkaW5nIG9yIGJvcmRlcnM6Ci0g
ICAgLy8gVGhlIGVsZW1lbnQncyBoZWlnaHQgaXMgdGhlIGRpc3RhbmNlIGZyb20gaXRzIHRvcCBj
b250ZW50IGVkZ2UgdG8gdGhlIGZpcnN0IGFwcGxpY2FibGUgb2YgdGhlIGZvbGxvd2luZzoKLSAg
ICAvLyAxLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGxhc3QgbGluZSBib3gsIGlmIHRoZSBib3gg
ZXN0YWJsaXNoZXMgYSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IHdpdGggb25lIG9yIG1vcmUg
bGluZXMKLSAgICAvLyAyLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGJvdHRvbSAocG9zc2libHkg
Y29sbGFwc2VkKSBtYXJnaW4gb2YgaXRzIGxhc3QgaW4tZmxvdyBjaGlsZCwgaWYgdGhlIGNoaWxk
J3MgYm90dG9tIG1hcmdpbgotICAgIC8vICAgIGRvZXMgbm90IGNvbGxhcHNlIHdpdGggdGhlIGVs
ZW1lbnQncyBib3R0b20gbWFyZ2luCi0gICAgLy8gMy4gdGhlIGJvdHRvbSBib3JkZXIgZWRnZSBv
ZiB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIHdob3NlIHRvcCBtYXJnaW4gZG9lc24ndCBjb2xsYXBz
ZSB3aXRoIHRoZSBlbGVtZW50J3MgYm90dG9tIG1hcmdpbgotICAgIC8vIDQuIHplcm8sIG90aGVy
d2lzZQotICAgIC8vIE9ubHkgY2hpbGRyZW4gaW4gdGhlIG5vcm1hbCBmbG93IGFyZSB0YWtlbiBp
bnRvIGFjY291bnQgKGkuZS4sIGZsb2F0aW5nIGJveGVzIGFuZCBhYnNvbHV0ZWx5IHBvc2l0aW9u
ZWQgYm94ZXMgYXJlIGlnbm9yZWQsCi0gICAgLy8gYW5kIHJlbGF0aXZlbHkgcG9zaXRpb25lZCBi
b3hlcyBhcmUgY29uc2lkZXJlZCB3aXRob3V0IHRoZWlyIG9mZnNldCkuIE5vdGUgdGhhdCB0aGUg
Y2hpbGQgYm94IG1heSBiZSBhbiBhbm9ueW1vdXMgYmxvY2sgYm94LgotICAgIGlmICghbGF5b3V0
Qm94LnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBPbmx5IGZpeGVkIHZhbHVlcyB5ZXQuCi0gICAgICAgIHJldHVybiBsYXlvdXRCb3guc3R5bGUo
KS5sb2dpY2FsSGVpZ2h0KCkudmFsdWUoKTsKLSAgICB9CisgICAgaWYgKCFsYXlvdXRCb3guaXNE
b2N1bWVudEJveCgpIHx8ICFsYXlvdXRCb3guaXNCb2R5Qm94KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxD
b250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKTsK
K30KIAotICAgIC8vIDEuIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgbGFzdCBsaW5lIGJveCwgaWYg
dGhlIGJveCBlc3RhYmxpc2hlcyBhIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgd2l0aCBvbmUg
b3IgbW9yZSBsaW5lcwotICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgIC8vIGhlaWdodCA9IGxhc3RMaW5lQm94KCkuYm90dG9t
KCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KK3N0YXRpYyBjb25zdCBDb250YWluZXImIGlu
aXRpYWxDb250YWluaW5nQmxvY2soY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgYXV0byog
Y29udGFpbmluZ0Jsb2NrID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOworICAgIHdoaWxl
IChjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpKQorICAgICAgICBjb250YWluaW5n
QmxvY2sgPSBjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOworICAgIHJldHVybiAq
Y29udGFpbmluZ0Jsb2NrOworfQogCi0gICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBi
b3R0b20gKHBvc3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZsb3cgY2hp
bGQsIGlmIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4KLSAgICBhdXRvKiBsYXN0SW5GbG93
Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkubGFzdEluRmxvd0NoaWxkKCk7
Ci0gICAgQVNTRVJUKGxhc3RJbkZsb3dDaGlsZCk7Ci0gICAgaWYgKCFCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoUGFyZW50
KCpsYXN0SW5GbG93Q2hpbGQpKSB7Ci0gICAgICAgIGF1dG8qIGxhc3RJbkZsb3dEaXNwbGF5Qm94
ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXN0SW5GbG93Q2hpbGQp
OwotICAgICAgICBBU1NFUlQobGFzdEluRmxvd0Rpc3BsYXlCb3gpOwotICAgICAgICByZXR1cm4g
bGFzdEluRmxvd0Rpc3BsYXlCb3gtPmJvdHRvbSgpICsgbGFzdEluRmxvd0Rpc3BsYXlCb3gtPm1h
cmdpbkJvdHRvbSgpOwotICAgIH0KK0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENv
bnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIEFTU0VSVChsYXlvdXRCb3guaXNJ
bkZsb3coKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogCi0gICAgLy8gMy4gdGhlIGJvdHRv
bSBib3JkZXIgZWRnZSBvZiB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIHdob3NlIHRvcCBtYXJnaW4g
ZG9lc24ndCBjb2xsYXBzZSB3aXRoIHRoZSBlbGVtZW50J3MgYm90dG9tIG1hcmdpbgotICAgIGF1
dG8qIGluRmxvd0NoaWxkID0gbGFzdEluRmxvd0NoaWxkOwotICAgIHdoaWxlIChpbkZsb3dDaGls
ZCAmJiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Ub3BD
b2xsYXBzZWRXaXRoUGFyZW50TWFyZ2luQm90dG9tKCppbkZsb3dDaGlsZCkpCi0gICAgICAgIGlu
Rmxvd0NoaWxkID0gaW5GbG93Q2hpbGQtPnByZXZpb3VzSW5GbG93U2libGluZygpOwotICAgIGlm
IChpbkZsb3dDaGlsZCkgewotICAgICAgICBhdXRvKiBpbkZsb3dEaXNwbGF5Qm94ID0gbGF5b3V0
Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCppbkZsb3dDaGlsZCk7Ci0gICAgICAgIEFT
U0VSVChpbkZsb3dEaXNwbGF5Qm94KTsKLSAgICAgICAgcmV0dXJuIGluRmxvd0Rpc3BsYXlCb3gt
PnRvcCgpICsgaW5GbG93RGlzcGxheUJveC0+Ym9yZGVyQm94KCkuaGVpZ2h0KCk7Ci0gICAgfQor
ICAgIGF1dG8gaGVpZ2h0ID0gWyZdKCkgLT4gTGF5b3V0VW5pdCB7CisgICAgICAgIC8vIGh0dHBz
Oi8vd3d3LnczLm9yZy9UUi9DU1MyMi92aXN1ZGV0Lmh0bWwKKyAgICAgICAgLy8gSWYgJ2hlaWdo
dCcgaXMgJ2F1dG8nLCB0aGUgaGVpZ2h0IGRlcGVuZHMgb24gd2hldGhlciB0aGUgZWxlbWVudCBo
YXMgYW55IGJsb2NrLWxldmVsIGNoaWxkcmVuIGFuZCB3aGV0aGVyIGl0IGhhcyBwYWRkaW5nIG9y
IGJvcmRlcnM6CisgICAgICAgIC8vIFRoZSBlbGVtZW50J3MgaGVpZ2h0IGlzIHRoZSBkaXN0YW5j
ZSBmcm9tIGl0cyB0b3AgY29udGVudCBlZGdlIHRvIHRoZSBmaXJzdCBhcHBsaWNhYmxlIG9mIHRo
ZSBmb2xsb3dpbmc6CisgICAgICAgIC8vIDEuIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgbGFzdCBs
aW5lIGJveCwgaWYgdGhlIGJveCBlc3RhYmxpc2hlcyBhIGlubGluZSBmb3JtYXR0aW5nIGNvbnRl
eHQgd2l0aCBvbmUgb3IgbW9yZSBsaW5lcworICAgICAgICAvLyAyLiB0aGUgYm90dG9tIGVkZ2Ug
b2YgdGhlIGJvdHRvbSAocG9zc2libHkgY29sbGFwc2VkKSBtYXJnaW4gb2YgaXRzIGxhc3QgaW4t
ZmxvdyBjaGlsZCwgaWYgdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbgorICAgICAgICAvLyAgICBk
b2VzIG5vdCBjb2xsYXBzZSB3aXRoIHRoZSBlbGVtZW50J3MgYm90dG9tIG1hcmdpbgorICAgICAg
ICAvLyAzLiB0aGUgYm90dG9tIGJvcmRlciBlZGdlIG9mIHRoZSBsYXN0IGluLWZsb3cgY2hpbGQg
d2hvc2UgdG9wIG1hcmdpbiBkb2Vzbid0IGNvbGxhcHNlIHdpdGggdGhlIGVsZW1lbnQncyBib3R0
b20gbWFyZ2luCisgICAgICAgIC8vIDQuIHplcm8sIG90aGVyd2lzZQorICAgICAgICAvLyBPbmx5
IGNoaWxkcmVuIGluIHRoZSBub3JtYWwgZmxvdyBhcmUgdGFrZW4gaW50byBhY2NvdW50IChpLmUu
LCBmbG9hdGluZyBib3hlcyBhbmQgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGFyZSBpZ25v
cmVkLAorICAgICAgICAvLyBhbmQgcmVsYXRpdmVseSBwb3NpdGlvbmVkIGJveGVzIGFyZSBjb25z
aWRlcmVkIHdpdGhvdXQgdGhlaXIgb2Zmc2V0KS4gTm90ZSB0aGF0IHRoZSBjaGlsZCBib3ggbWF5
IGJlIGFuIGFub255bW91cyBibG9jayBib3guCisgICAgICAgIGlmICghbGF5b3V0Qm94LnN0eWxl
KCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogT25s
eSBmaXhlZCB2YWx1ZXMgeWV0LgorICAgICAgICAgICAgcmV0dXJuIGxheW91dEJveC5zdHlsZSgp
LmxvZ2ljYWxIZWlnaHQoKS52YWx1ZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpczxD
b250YWluZXI+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5o
YXNJbkZsb3dDaGlsZCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLy8gMS4g
dGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBsYXN0IGxpbmUgYm94LCBpZiB0aGUgYm94IGVzdGFibGlz
aGVzIGEgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCB3aXRoIG9uZSBvciBtb3JlIGxpbmVzCisg
ICAgICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgp
KSB7CisgICAgICAgICAgICAvLyBoZWlnaHQgPSBsYXN0TGluZUJveCgpLmJvdHRvbSgpOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICAvLyAyLiB0aGUgYm90dG9t
IGVkZ2Ugb2YgdGhlIGJvdHRvbSAocG9zc2libHkgY29sbGFwc2VkKSBtYXJnaW4gb2YgaXRzIGxh
c3QgaW4tZmxvdyBjaGlsZCwgaWYgdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbi4uLgorICAgICAg
ICBhdXRvKiBsYXN0SW5GbG93Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCku
bGFzdEluRmxvd0NoaWxkKCk7CisgICAgICAgIEFTU0VSVChsYXN0SW5GbG93Q2hpbGQpOworICAg
ICAgICBpZiAoIUJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjppc01hcmdp
bkJvdHRvbUNvbGxhcHNlZFdpdGhQYXJlbnQoKmxhc3RJbkZsb3dDaGlsZCkpIHsKKyAgICAgICAg
ICAgIGF1dG8qIGxhc3RJbkZsb3dEaXNwbGF5Qm94ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KCpsYXN0SW5GbG93Q2hpbGQpOworICAgICAgICAgICAgQVNTRVJUKGxhc3RJ
bkZsb3dEaXNwbGF5Qm94KTsKKyAgICAgICAgICAgIHJldHVybiBsYXN0SW5GbG93RGlzcGxheUJv
eC0+Ym90dG9tKCkgKyBsYXN0SW5GbG93RGlzcGxheUJveC0+bWFyZ2luQm90dG9tKCk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyAzLiB0aGUgYm90dG9tIGJvcmRlciBlZGdlIG9mIHRoZSBsYXN0
IGluLWZsb3cgY2hpbGQgd2hvc2UgdG9wIG1hcmdpbiBkb2Vzbid0IGNvbGxhcHNlIHdpdGggdGhl
IGVsZW1lbnQncyBib3R0b20gbWFyZ2luCisgICAgICAgIGF1dG8qIGluRmxvd0NoaWxkID0gbGFz
dEluRmxvd0NoaWxkOworICAgICAgICB3aGlsZSAoaW5GbG93Q2hpbGQgJiYgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6OmlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBhcmVu
dE1hcmdpbkJvdHRvbSgqaW5GbG93Q2hpbGQpKQorICAgICAgICAgICAgaW5GbG93Q2hpbGQgPSBp
bkZsb3dDaGlsZC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CisgICAgICAgIGlmIChpbkZsb3dD
aGlsZCkgeworICAgICAgICAgICAgYXV0byogaW5GbG93RGlzcGxheUJveCA9IGxheW91dENvbnRl
eHQuZGlzcGxheUJveEZvckxheW91dEJveCgqaW5GbG93Q2hpbGQpOworICAgICAgICAgICAgQVNT
RVJUKGluRmxvd0Rpc3BsYXlCb3gpOworICAgICAgICAgICAgcmV0dXJuIGluRmxvd0Rpc3BsYXlC
b3gtPnRvcCgpICsgaW5GbG93RGlzcGxheUJveC0+Ym9yZGVyQm94KCkuaGVpZ2h0KCk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyA0LiB6ZXJvLCBvdGhlcndpc2UKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfTsKIAotICAgIC8vIDQuIHplcm8sIG90aGVyd2lzZQotICAgIHJldHVybiAwOworICAg
IGF1dG8gY29tcHV0ZWRIZWlnaHQgPSBoZWlnaHQoKTsKKyAgICBpZiAoIWlzU3RyZXRjaGVkVG9W
aWV3cG9ydChsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4gY29tcHV0ZWRIZWlnaHQ7CisgICAg
YXV0byBpbml0aWFsQ29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSktPmNvbnRl
bnRCb3goKS5oZWlnaHQoKTsKKyAgICByZXR1cm4gc3RkOjptYXgoY29tcHV0ZWRIZWlnaHQsIGlu
aXRpYWxDb250YWluaW5nQmxvY2tIZWlnaHQpOwogfQogCiBMYXlvdXRVbml0IEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoKExheW91dENvbnRl
eHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChs
YXlvdXRCb3guaXNJbkZsb3coKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogCi0gICAgLy8g
MTAuMy4zIEJsb2NrLWxldmVsLCBub24tcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cK
LSAgICAvLyBUaGUgZm9sbG93aW5nIGNvbnN0cmFpbnRzIG11c3QgaG9sZCBhbW9uZyB0aGUgdXNl
ZCB2YWx1ZXMgb2YgdGhlIG90aGVyIHByb3BlcnRpZXM6Ci0gICAgLy8gJ21hcmdpbi1sZWZ0JyAr
ICdib3JkZXItbGVmdC13aWR0aCcgKyAncGFkZGluZy1sZWZ0JyArICd3aWR0aCcgKyAncGFkZGlu
Zy1yaWdodCcgKyAnYm9yZGVyLXJpZ2h0LXdpZHRoJyArICdtYXJnaW4tcmlnaHQnID0gd2lkdGgg
b2YgY29udGFpbmluZyBibG9jaworICAgIGF1dG8gd2lkdGggPSBbJl0oKSB7CisgICAgICAgIC8v
IDEwLjMuMyBCbG9jay1sZXZlbCwgbm9uLXJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93
CisgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY29uc3RyYWludHMgbXVzdCBob2xkIGFtb25nIHRo
ZSB1c2VkIHZhbHVlcyBvZiB0aGUgb3RoZXIgcHJvcGVydGllczoKKyAgICAgICAgLy8gJ21hcmdp
bi1sZWZ0JyArICdib3JkZXItbGVmdC13aWR0aCcgKyAncGFkZGluZy1sZWZ0JyArICd3aWR0aCcg
KyAncGFkZGluZy1yaWdodCcgKyAnYm9yZGVyLXJpZ2h0LXdpZHRoJyArICdtYXJnaW4tcmlnaHQn
ID0gd2lkdGggb2YgY29udGFpbmluZyBibG9jawogCi0gICAgLy8gSWYgJ3dpZHRoJyBpcyBzZXQg
dG8gJ2F1dG8nLCBhbnkgb3RoZXIgJ2F1dG8nIHZhbHVlcyBiZWNvbWUgJzAnIGFuZCAnd2lkdGgn
IGZvbGxvd3MgZnJvbSB0aGUgcmVzdWx0aW5nIGVxdWFsaXR5LgotICAgIGF1dG8mIHN0eWxlID0g
bGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91
dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9j
aygpKS0+d2lkdGgoKTsKKyAgICAgICAgLy8gSWYgJ3dpZHRoJyBpcyBzZXQgdG8gJ2F1dG8nLCBh
bnkgb3RoZXIgJ2F1dG8nIHZhbHVlcyBiZWNvbWUgJzAnIGFuZCAnd2lkdGgnIGZvbGxvd3MgZnJv
bSB0aGUgcmVzdWx0aW5nIGVxdWFsaXR5LgorICAgICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJv
eC5zdHlsZSgpOworICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29u
dGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkp
LT53aWR0aCgpOworCisgICAgICAgIExheW91dFVuaXQgY29tcHV0ZWRXaWR0aFZhbHVlOworICAg
ICAgICBhdXRvIHdpZHRoID0gc3R5bGUubG9naWNhbFdpZHRoKCk7CisgICAgICAgIGlmICh3aWR0
aC5pc0F1dG8oKSkgeworICAgICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9ICpsYXlvdXRDb250
ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGF1dG8g
bWFyZ2luTGVmdCA9IGRpc3BsYXlCb3gubWFyZ2luTGVmdCgpOworICAgICAgICAgICAgYXV0byBt
YXJnaW5SaWdodCA9IGRpc3BsYXlCb3gubWFyZ2luUmlnaHQoKTsKIAotICAgIExheW91dFVuaXQg
Y29tcHV0ZWRXaWR0aFZhbHVlOwotICAgIGF1dG8gd2lkdGggPSBzdHlsZS5sb2dpY2FsV2lkdGgo
KTsKLSAgICBpZiAod2lkdGguaXNBdXRvKCkpIHsKLSAgICAgICAgYXV0byYgZGlzcGxheUJveCA9
ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKLSAgICAg
ICAgYXV0byBtYXJnaW5MZWZ0ID0gZGlzcGxheUJveC5tYXJnaW5MZWZ0KCk7Ci0gICAgICAgIGF1
dG8gbWFyZ2luUmlnaHQgPSBkaXNwbGF5Qm94Lm1hcmdpblJpZ2h0KCk7CisgICAgICAgICAgICBh
dXRvIHBhZGRpbmdMZWZ0ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpOworICAgICAgICAgICAg
YXV0byBwYWRkaW5nUmlnaHQgPSBkaXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpOwogCi0gICAgICAg
IGF1dG8gcGFkZGluZ0xlZnQgPSBkaXNwbGF5Qm94LnBhZGRpbmdMZWZ0KCk7Ci0gICAgICAgIGF1
dG8gcGFkZGluZ1JpZ2h0ID0gZGlzcGxheUJveC5wYWRkaW5nUmlnaHQoKTsKKyAgICAgICAgICAg
IGF1dG8gYm9yZGVyTGVmdCA9IGRpc3BsYXlCb3guYm9yZGVyTGVmdCgpOworICAgICAgICAgICAg
YXV0byBib3JkZXJSaWdodCA9IGRpc3BsYXlCb3guYm9yZGVyUmlnaHQoKTsKIAotICAgICAgICBh
dXRvIGJvcmRlckxlZnQgPSBkaXNwbGF5Qm94LmJvcmRlckxlZnQoKTsKLSAgICAgICAgYXV0byBi
b3JkZXJSaWdodCA9IGRpc3BsYXlCb3guYm9yZGVyUmlnaHQoKTsKKyAgICAgICAgICAgIGNvbXB1
dGVkV2lkdGhWYWx1ZSA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKG1hcmdpbkxlZnQgKyBib3Jk
ZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArIG1hcmdp
blJpZ2h0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjb21wdXRlZFdpZHRoVmFsdWUg
PSB2YWx1ZUZvckxlbmd0aCh3aWR0aCwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogCi0gICAgICAg
IGNvbXB1dGVkV2lkdGhWYWx1ZSA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKG1hcmdpbkxlZnQg
KyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCAr
IG1hcmdpblJpZ2h0KTsKLSAgICB9IGVsc2UKLSAgICAgICAgY29tcHV0ZWRXaWR0aFZhbHVlID0g
dmFsdWVGb3JMZW5ndGgod2lkdGgsIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAgICAgICAgcmV0
dXJuIGNvbXB1dGVkV2lkdGhWYWx1ZTsKKyAgICB9OwogCi0gICAgcmV0dXJuIGNvbXB1dGVkV2lk
dGhWYWx1ZTsKKyAgICBhdXRvIGNvbXB1dGVkV2lkdGggPSB3aWR0aCgpOworICAgIGlmICghaXNT
dHJldGNoZWRUb1ZpZXdwb3J0KGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBjb21wdXRlZFdp
ZHRoOworICAgIGF1dG8gaW5pdGlhbENvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4
dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2sobGF5b3V0Qm94
KSktPmNvbnRlbnRCb3goKS53aWR0aCgpOworICAgIHJldHVybiBzdGQ6Om1heChjb21wdXRlZFdp
ZHRoLCBpbml0aWFsQ29udGFpbmluZ0Jsb2NrV2lkdGgpOwogfQogCiBMYXlvdXRQb2ludCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljUG9zaXRpb24oTGF5b3V0Q29udGV4
dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKaW5kZXggZDdkNTU4NDdlZmNk
ODViYjAxNTRmNDk2ZDFhMDFiNWNlOTcxYjk0YS4uZDBjOGI5ZTQwZjE2MWY2MmE5N2FlMTdmMGE1
NWUzY2UyYWE1N2FiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0
cmVlL0Rpc3BsYXlCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJl
ZS9EaXNwbGF5Qm94LmNwcApAQCAtNTYsNyArNTYsNyBAQCBCb3g6OlJlY3QgQm94OjptYXJnaW5C
b3goKSBjb25zdAogICAgIGF1dG8gbWFyZ2luQm94ID0gYm9yZGVyQm94KCk7CiAKICAgICBtYXJn
aW5Cb3guc2hpZnRMZWZ0VG8obWFyZ2luQm94LmxlZnQoKSArIG1fbWFyZ2luLmxlZnQpOwotICAg
IG1hcmdpbkJveC5zaGlmdEJvdHRvbVRvKG1hcmdpbkJveC50b3AoKSArIG1fbWFyZ2luLnRvcCk7
CisgICAgbWFyZ2luQm94LnNoaWZ0VG9wVG8obWFyZ2luQm94LnRvcCgpICsgbV9tYXJnaW4udG9w
KTsKICAgICBtYXJnaW5Cb3guc2hpZnRSaWdodFRvKG1hcmdpbkJveC5yaWdodCgpIC0gbV9tYXJn
aW4ucmlnaHQpOwogICAgIG1hcmdpbkJveC5zaGlmdEJvdHRvbVRvKG1hcmdpbkJveC5ib3R0b20o
KSAtIG1fbWFyZ2luLmJvdHRvbSk7CiAKQEAgLTg1LDcgKzg1LDcgQEAgQm94OjpSZWN0IEJveDo6
cGFkZGluZ0JveCgpIGNvbnN0CiAKICAgICBwYWRkaW5nQm94LnNoaWZ0TGVmdFRvKHBhZGRpbmdC
b3gubGVmdCgpICsgbV9ib3JkZXIubGVmdCk7CiAgICAgcGFkZGluZ0JveC5zaGlmdFRvcFRvKHBh
ZGRpbmdCb3gudG9wKCkgKyBtX2JvcmRlci50b3ApOwotICAgIHBhZGRpbmdCb3guc2hpZnRSaWdo
dFRvKHBhZGRpbmdCb3gubGVmdCgpIC0gbV9ib3JkZXIucmlnaHQpOworICAgIHBhZGRpbmdCb3gu
c2hpZnRSaWdodFRvKHBhZGRpbmdCb3gucmlnaHQoKSAtIG1fYm9yZGVyLnJpZ2h0KTsKICAgICBw
YWRkaW5nQm94LnNoaWZ0Qm90dG9tVG8ocGFkZGluZ0JveC5ib3R0b20oKSAtIG1fYm9yZGVyLmJv
dHRvbSk7CiAKICAgICByZXR1cm4gcGFkZGluZ0JveDsKQEAgLTEwNSw4ICsxMDUsOCBAQCBCb3g6
OlJlY3QgQm94Ojpjb250ZW50Qm94KCkgY29uc3QKIAogICAgIGNvbnRlbnRCb3guc2hpZnRMZWZ0
VG8oY29udGVudEJveC5sZWZ0KCkgKyBtX3BhZGRpbmcubGVmdCk7CiAgICAgY29udGVudEJveC5z
aGlmdFRvcFRvKGNvbnRlbnRCb3gudG9wKCkgKyBtX3BhZGRpbmcudG9wKTsKLSAgICBjb250ZW50
Qm94LnNoaWZ0Qm90dG9tVG8oY29udGVudEJveC5ib3R0b20oKSAtIG1fcGFkZGluZy5ib3R0b20p
OwogICAgIGNvbnRlbnRCb3guc2hpZnRSaWdodFRvKGNvbnRlbnRCb3gucmlnaHQoKSAtIG1fcGFk
ZGluZy5yaWdodCk7CisgICAgY29udGVudEJveC5zaGlmdEJvdHRvbVRvKGNvbnRlbnRCb3guYm90
dG9tKCkgLSBtX3BhZGRpbmcuYm90dG9tKTsKIAogICAgIHJldHVybiBjb250ZW50Qm94OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKaW5kZXgg
OTY2OWI5NDQwZWIyNGEzYzEyZDQ0YTE1ZDRmYTdmMDc5NTAwY2UwZS4uNTQwMzE4YTBlMzI0ZmEz
YzM4ZjE4OTlmMWVkMTU2OWY4Yzg4ZTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCkBAIC0xODEsNiArMTgxLDE4IEBAIGJvb2wgQm94Ojpp
c0luaXRpYWxDb250YWluaW5nQmxvY2soKSBjb25zdAogICAgIHJldHVybiAhcGFyZW50KCk7CiB9
CiAKK2Jvb2wgQm94Ojppc0RvY3VtZW50Qm94KCkgY29uc3QKK3sKKyAgICAvLyByZXR1cm4gZG9j
dW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSA9PSAmZWxlbWVudCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBCb3g6OmlzQm9keUJveCgpIGNvbnN0Cit7CisgICAgLy8gcmV0dXJuIGVs
ZW1lbnQoKS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZyk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBjb25zdCBCb3gqIEJveDo6bmV4dEluRmxvd1NpYmxpbmcoKSBjb25zdAogewogICAg
IGlmIChhdXRvKiBuZXh0U2libGluZyA9IHRoaXMtPm5leHRTaWJsaW5nKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKaW5kZXggMWUwYjg1ZmZkZTkx
MzY4YjY5ODJjZTExNmM4MmMxM2ExYzI5ZDIxZS4uZjk4MjE0YzE1MzM0YmI3MWFhM2RjNTk3OWFl
ZWU5MzJhYjI4NmE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Qm94LmgKQEAgLTc0LDYgKzc0LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNCbG9ja0NvbnRh
aW5lckJveCgpIGNvbnN0OwogICAgIGJvb2wgaXNJbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29u
c3Q7CiAKKyAgICBib29sIGlzRG9jdW1lbnRCb3goKSBjb25zdDsKKyAgICBib29sIGlzQm9keUJv
eCgpIGNvbnN0OworCiAgICAgY29uc3QgQ29udGFpbmVyKiBwYXJlbnQoKSBjb25zdCB7IHJldHVy
biBtX3BhcmVudDsgfQogICAgIGNvbnN0IEJveCogbmV4dFNpYmxpbmcoKSBjb25zdCB7IHJldHVy
biBtX25leHRTaWJsaW5nOyB9CiAgICAgY29uc3QgQm94KiBuZXh0SW5GbG93U2libGluZygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaAppbmRl
eCBiZjg0OTY1NWFlYzk5OTgzZDQxOTE3YjBjMWFhMTYyZTZmMGRiNTI0Li42ZjdmODIxZWE2MjY2
MDVlODRjOTk1NjAyOTBjODdiMmU0MjdmMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQm9yZGVyVmFsdWUuaApAQCAtNzIsNiArNzIsOCBAQCBwdWJsaWM6CiAKICAgICBm
bG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KICAgICBCb3JkZXJTdHlsZSBz
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJvcmRlclN0eWxlPihtX3N0eWxlKTsg
fQorICAgIAorICAgIGZsb2F0IGJveE1vZGVsV2lkdGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgog
ICAgIGZsb2F0IG1fd2lkdGggeyAzIH07CkBAIC04Myw0ICs4NSwxMyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdW5zaWduZWQgbV9pc0F1dG8gOiAxOyAvLyBPdXRsaW5lSXNBdXRvCiB9OwogCitpbmxpbmUg
ZmxvYXQgQm9yZGVyVmFsdWU6OmJveE1vZGVsV2lkdGgoKSBjb25zdAoreworICAgIGF1dG8gc3R5
bGUgPSB0aGlzLT5zdHlsZSgpOworICAgIGlmIChzdHlsZSA9PSBCb3JkZXJTdHlsZTo6Tm9uZSB8
fCBzdHlsZSA9PSBCb3JkZXJTdHlsZTo6SGlkZGVuKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IHJldHVybiB3aWR0aCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341573</attachid>
            <date>2018-05-30 07:47:33 -0700</date>
            <delta_ts>2018-05-30 07:58:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186083-20180530074732.patch</filename>
            <type>text/plain</type>
            <size>19511</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg4YTdiNmIyYzdmMDFi
Yzg1MmU5ODQ3ZGY2YTZlMDgwNWVlMTI4Mi4uZTkwYWYyNzg5MDYwNWEwM2QzZTdiM2RkNGRkNzgz
ZjI4N2I4MTViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTA1LTI5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gTWlzY2VsbGFuZW91
cyBmaXhlcyB0byBnZXQgY2xvc2VyIHRvIGdlb21ldHJ5IGNvcnJlY3RuZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYwODMKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcik6CisgICAgICAgICogbGF5b3V0L0xh
eW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRDb250ZXh0
Ojppbml0aWFsaXplUm9vdCk6CisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQm94SW5mb3JtYXRpb25J
Zk5lZWRlZCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojppc1N0cmV0
Y2hlZFRvVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojppbml0aWFsQ29udGFp
bmluZ0Jsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y29tcHV0ZWRJbkZsb3dOb25S
ZXBsYWNlZENvbXB1dGVkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6aW5GbG93
Tm9uUmVwbGFjZWRDb21wdXRlZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0KTog
bGFtYmRhIHNob3VsZCBjYXB0dXJlIHRoZSBzcGVjaWZpY2F0aW9uIHBhcnQuIAorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93
Tm9uUmVwbGFjZWRXaWR0aCk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjptYXJnaW5Cb3ggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpwYWRkaW5nQm94IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Y29udGVudEJveCBjb25zdCk6CisgICAgICAg
ICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Qm94Ojppc0RvY3VtZW50Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Qm94Ojppc0JvZHlCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oOiBpZ25v
cmUgYm9yZGVyLXdpZHRoIHdoZW4gdHlwZSBpcyBoaWRkZW4gb3Igbm9uZS4gCisgICAgICAgIChX
ZWJDb3JlOjpCb3JkZXJWYWx1ZTo6Ym94TW9kZWxXaWR0aCBjb25zdCk6CisKIDIwMTgtMDUtMjkg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGNvbnNp
c3RlbmN5IGNoZWNrIGJldHdlZW4gVVJMIGFuZCBDRlVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDhjNzRlYzU0MTgx
N2VkMDk4ODNhMDZmMDc5MmQ2YzdiM2NhNzMwOTMuLjc4OWZmMWE5MjYxMDQxNDU5NWM0MWY1M2Ix
NDUzNWE0NjhmZjUzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTUyOSwxMCArNTI5LDEwIEBAIERpc3BsYXk6OkJv
eDo6RWRnZXMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcihMYXlv
dXRDb250ZXh0JiwKIHsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAg
IHJldHVybiB7Ci0gICAgICAgIHN0eWxlLmJvcmRlclRvcCgpLndpZHRoKCksCi0gICAgICAgIHN0
eWxlLmJvcmRlckxlZnQoKS53aWR0aCgpLAotICAgICAgICBzdHlsZS5ib3JkZXJCb3R0b20oKS53
aWR0aCgpLAotICAgICAgICBzdHlsZS5ib3JkZXJSaWdodCgpLndpZHRoKCkKKyAgICAgICAgc3R5
bGUuYm9yZGVyVG9wKCkuYm94TW9kZWxXaWR0aCgpLAorICAgICAgICBzdHlsZS5ib3JkZXJMZWZ0
KCkuYm94TW9kZWxXaWR0aCgpLAorICAgICAgICBzdHlsZS5ib3JkZXJCb3R0b20oKS5ib3hNb2Rl
bFdpZHRoKCksCisgICAgICAgIHN0eWxlLmJvcmRlclJpZ2h0KCkuYm94TW9kZWxXaWR0aCgpCiAg
ICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCmluZGV4IDhm
MjhlN2FiOGRmNzFlODg5MTQ3NWIxMjVlNmExNzQ0NDkyYjM4NTguLmUwMTViNTE5N2FlMzFmZmI5
YzliOTE5OTMxYmZhMjI4NjZmZWE5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29u
dGV4dC5jcHAKQEAgLTYxLDEyICs2MSwxMiBAQCB2b2lkIExheW91dENvbnRleHQ6OmluaXRpYWxp
emVSb290KGNvbnN0IENvbnRhaW5lciYgcm9vdCwgY29uc3QgTGF5b3V0U2l6ZSYgY29udAogICAg
IGRpc3BsYXlCb3guc2V0TWFyZ2luKHsgfSk7CiAKICAgICBhdXRvJiBzdHlsZSA9IHJvb3Quc3R5
bGUoKTsKLSAgICAvLyBGSVhNRTogbV9yb290IGNvdWxkIHZlcnkgd2VsbCBiZSBhIGZvcm1hdHRp
bmcgY29udGV4dCByb290IHdpdGggYW5jZXN0b3JzIGFuZCByZXNvbHZhYmxlIGJvcmRlciBhbmQg
cGFkZGluZyAoYXMgb3Bwb3NlZCB0byB0aGUgdG9wbW9zdCByb290KSAgCisgICAgLy8gRklYTUU6
IG1fcm9vdCBjb3VsZCB2ZXJ5IHdlbGwgYmUgYSBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCB3aXRo
IGFuY2VzdG9ycyBhbmQgcmVzb2x2YWJsZSBib3JkZXIgYW5kIHBhZGRpbmcgKGFzIG9wcG9zZWQg
dG8gdGhlIHRvcG1vc3Qgcm9vdCkKICAgICBkaXNwbGF5Qm94LnNldEJvcmRlcih7Ci0gICAgICAg
IHN0eWxlLmJvcmRlclRvcCgpLndpZHRoKCksCi0gICAgICAgIHN0eWxlLmJvcmRlckxlZnQoKS53
aWR0aCgpLAotICAgICAgICBzdHlsZS5ib3JkZXJCb3R0b20oKS53aWR0aCgpLAotICAgICAgICBz
dHlsZS5ib3JkZXJSaWdodCgpLndpZHRoKCkKKyAgICAgICAgc3R5bGUuYm9yZGVyVG9wKCkuYm94
TW9kZWxXaWR0aCgpLAorICAgICAgICBzdHlsZS5ib3JkZXJMZWZ0KCkuYm94TW9kZWxXaWR0aCgp
LAorICAgICAgICBzdHlsZS5ib3JkZXJCb3R0b20oKS5ib3hNb2RlbFdpZHRoKCksCisgICAgICAg
IHN0eWxlLmJvcmRlclJpZ2h0KCkuYm94TW9kZWxXaWR0aCgpCiAgICAgfSk7CiAKICAgICBkaXNw
bGF5Qm94LnNldFBhZGRpbmcoewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1Zl
cmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcApp
bmRleCBhN2FmNzMxMTYzMTU3NGI4ZjQ3Nzg4Y2U5YzcxOTA2NjkxZTUwNTQwLi45YWI4MDhmMWI4
ZGU1NTZhMGZjZTBmZmY1NWZlMTY0OTNhYjJlZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCBvdXRwdXRNaXNtYXRj
aGluZ0JveEluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYQog
ICAgIGlmIChyZW5kZXJlci5wYWRkaW5nQm94UmVjdCgpICE9IGRpc3BsYXlCb3gtPnBhZGRpbmdC
b3goKSkKICAgICAgICAgb3V0cHV0UmVjdCgicGFkZGluZ0JveCIsIHJlbmRlcmVyLnBhZGRpbmdC
b3hSZWN0KCksIGRpc3BsYXlCb3gtPnBhZGRpbmdCb3goKSk7CiAKLSAgICBpZiAocmVuZGVyZXIu
bWFyZ2luQm94UmVjdCgpICE9IGRpc3BsYXlCb3gtPmNvbnRlbnRCb3goKSkKKyAgICBpZiAocmVu
ZGVyZXIuY29udGVudEJveFJlY3QoKSAhPSBkaXNwbGF5Qm94LT5jb250ZW50Qm94KCkpCiAgICAg
ICAgIG91dHB1dFJlY3QoImNvbnRlbnRCb3giLCByZW5kZXJlci5jb250ZW50Qm94UmVjdCgpLCBk
aXNwbGF5Qm94LT5jb250ZW50Qm94KCkpOwogCiAgICAgc3RyZWFtLm5leHRMaW5lKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggMjUzMWU5MDM2
MzljODQ0ZGFmNWZiYWE0NTAyY2RkY2ZhN2EyMWE2YS4uOWUwOWY5ZjgyNDg0M2Y3NDk1MjM3YjBl
ZWFkNTZlNWZjYmUyNzkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdl
b21ldHJ5LmNwcApAQCAtMzMsODcgKzMzLDEyNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFt
ZXNwYWNlIExheW91dCB7CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENvbnRl
eHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorc3RhdGljIGJvb2wgaXNTdHJldGNoZWRUb1ZpZXdw
b3J0KGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZs
b3coKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOworICAgIEFTU0VSVChsYXlvdXRCb3guaXNJ
bkZsb3coKSk7CisgICAgLy8gSW4gcXVpcmtzIG1vZGUsIGJvZHkgYW5kIGh0bWwgc3RyZXRjaCB0
byB0aGUgdmlld3BvcnQuCisgICAgLy8gaWYgKCFsYXlvdXRCb3guZG9jdW1lbnQoKS5pblF1aXJr
c01vZGUoKSkKKyAgICAvLyAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBodHRwczovL3d3dy53
My5vcmcvVFIvQ1NTMjIvdmlzdWRldC5odG1sCi0gICAgLy8gSWYgJ2hlaWdodCcgaXMgJ2F1dG8n
LCB0aGUgaGVpZ2h0IGRlcGVuZHMgb24gd2hldGhlciB0aGUgZWxlbWVudCBoYXMgYW55IGJsb2Nr
LWxldmVsIGNoaWxkcmVuIGFuZCB3aGV0aGVyIGl0IGhhcyBwYWRkaW5nIG9yIGJvcmRlcnM6Ci0g
ICAgLy8gVGhlIGVsZW1lbnQncyBoZWlnaHQgaXMgdGhlIGRpc3RhbmNlIGZyb20gaXRzIHRvcCBj
b250ZW50IGVkZ2UgdG8gdGhlIGZpcnN0IGFwcGxpY2FibGUgb2YgdGhlIGZvbGxvd2luZzoKLSAg
ICAvLyAxLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGxhc3QgbGluZSBib3gsIGlmIHRoZSBib3gg
ZXN0YWJsaXNoZXMgYSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IHdpdGggb25lIG9yIG1vcmUg
bGluZXMKLSAgICAvLyAyLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGJvdHRvbSAocG9zc2libHkg
Y29sbGFwc2VkKSBtYXJnaW4gb2YgaXRzIGxhc3QgaW4tZmxvdyBjaGlsZCwgaWYgdGhlIGNoaWxk
J3MgYm90dG9tIG1hcmdpbgotICAgIC8vICAgIGRvZXMgbm90IGNvbGxhcHNlIHdpdGggdGhlIGVs
ZW1lbnQncyBib3R0b20gbWFyZ2luCi0gICAgLy8gMy4gdGhlIGJvdHRvbSBib3JkZXIgZWRnZSBv
ZiB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIHdob3NlIHRvcCBtYXJnaW4gZG9lc24ndCBjb2xsYXBz
ZSB3aXRoIHRoZSBlbGVtZW50J3MgYm90dG9tIG1hcmdpbgotICAgIC8vIDQuIHplcm8sIG90aGVy
d2lzZQotICAgIC8vIE9ubHkgY2hpbGRyZW4gaW4gdGhlIG5vcm1hbCBmbG93IGFyZSB0YWtlbiBp
bnRvIGFjY291bnQgKGkuZS4sIGZsb2F0aW5nIGJveGVzIGFuZCBhYnNvbHV0ZWx5IHBvc2l0aW9u
ZWQgYm94ZXMgYXJlIGlnbm9yZWQsCi0gICAgLy8gYW5kIHJlbGF0aXZlbHkgcG9zaXRpb25lZCBi
b3hlcyBhcmUgY29uc2lkZXJlZCB3aXRob3V0IHRoZWlyIG9mZnNldCkuIE5vdGUgdGhhdCB0aGUg
Y2hpbGQgYm94IG1heSBiZSBhbiBhbm9ueW1vdXMgYmxvY2sgYm94LgotICAgIGlmICghbGF5b3V0
Qm94LnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBPbmx5IGZpeGVkIHZhbHVlcyB5ZXQuCi0gICAgICAgIHJldHVybiBsYXlvdXRCb3guc3R5bGUo
KS5sb2dpY2FsSGVpZ2h0KCkudmFsdWUoKTsKLSAgICB9CisgICAgaWYgKCFsYXlvdXRCb3guaXNE
b2N1bWVudEJveCgpIHx8ICFsYXlvdXRCb3guaXNCb2R5Qm94KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxD
b250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKTsK
K30KIAotICAgIC8vIDEuIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgbGFzdCBsaW5lIGJveCwgaWYg
dGhlIGJveCBlc3RhYmxpc2hlcyBhIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgd2l0aCBvbmUg
b3IgbW9yZSBsaW5lcwotICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgIC8vIGhlaWdodCA9IGxhc3RMaW5lQm94KCkuYm90dG9t
KCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KK3N0YXRpYyBjb25zdCBDb250YWluZXImIGlu
aXRpYWxDb250YWluaW5nQmxvY2soY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgYXV0byog
Y29udGFpbmluZ0Jsb2NrID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOworICAgIHdoaWxl
IChjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpKQorICAgICAgICBjb250YWluaW5n
QmxvY2sgPSBjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOworICAgIHJldHVybiAq
Y29udGFpbmluZ0Jsb2NrOworfQogCi0gICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBi
b3R0b20gKHBvc3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZsb3cgY2hp
bGQsIGlmIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4KLSAgICBhdXRvKiBsYXN0SW5GbG93
Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkubGFzdEluRmxvd0NoaWxkKCk7
Ci0gICAgQVNTRVJUKGxhc3RJbkZsb3dDaGlsZCk7Ci0gICAgaWYgKCFCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoUGFyZW50
KCpsYXN0SW5GbG93Q2hpbGQpKSB7Ci0gICAgICAgIGF1dG8qIGxhc3RJbkZsb3dEaXNwbGF5Qm94
ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXN0SW5GbG93Q2hpbGQp
OwotICAgICAgICBBU1NFUlQobGFzdEluRmxvd0Rpc3BsYXlCb3gpOwotICAgICAgICByZXR1cm4g
bGFzdEluRmxvd0Rpc3BsYXlCb3gtPmJvdHRvbSgpICsgbGFzdEluRmxvd0Rpc3BsYXlCb3gtPm1h
cmdpbkJvdHRvbSgpOwotICAgIH0KK0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENv
bnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIEFTU0VSVChsYXlvdXRCb3guaXNJ
bkZsb3coKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogCi0gICAgLy8gMy4gdGhlIGJvdHRv
bSBib3JkZXIgZWRnZSBvZiB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIHdob3NlIHRvcCBtYXJnaW4g
ZG9lc24ndCBjb2xsYXBzZSB3aXRoIHRoZSBlbGVtZW50J3MgYm90dG9tIG1hcmdpbgotICAgIGF1
dG8qIGluRmxvd0NoaWxkID0gbGFzdEluRmxvd0NoaWxkOwotICAgIHdoaWxlIChpbkZsb3dDaGls
ZCAmJiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Ub3BD
b2xsYXBzZWRXaXRoUGFyZW50TWFyZ2luQm90dG9tKCppbkZsb3dDaGlsZCkpCi0gICAgICAgIGlu
Rmxvd0NoaWxkID0gaW5GbG93Q2hpbGQtPnByZXZpb3VzSW5GbG93U2libGluZygpOwotICAgIGlm
IChpbkZsb3dDaGlsZCkgewotICAgICAgICBhdXRvKiBpbkZsb3dEaXNwbGF5Qm94ID0gbGF5b3V0
Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCppbkZsb3dDaGlsZCk7Ci0gICAgICAgIEFT
U0VSVChpbkZsb3dEaXNwbGF5Qm94KTsKLSAgICAgICAgcmV0dXJuIGluRmxvd0Rpc3BsYXlCb3gt
PnRvcCgpICsgaW5GbG93RGlzcGxheUJveC0+Ym9yZGVyQm94KCkuaGVpZ2h0KCk7Ci0gICAgfQor
ICAgIGF1dG8gY29tcHV0ZUhlaWdodCA9IFsmXSgpIC0+IExheW91dFVuaXQgeworICAgICAgICAv
LyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIvdmlzdWRldC5odG1sCisgICAgICAgIC8vIElm
ICdoZWlnaHQnIGlzICdhdXRvJywgdGhlIGhlaWdodCBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGVs
ZW1lbnQgaGFzIGFueSBibG9jay1sZXZlbCBjaGlsZHJlbiBhbmQgd2hldGhlciBpdCBoYXMgcGFk
ZGluZyBvciBib3JkZXJzOgorICAgICAgICAvLyBUaGUgZWxlbWVudCdzIGhlaWdodCBpcyB0aGUg
ZGlzdGFuY2UgZnJvbSBpdHMgdG9wIGNvbnRlbnQgZWRnZSB0byB0aGUgZmlyc3QgYXBwbGljYWJs
ZSBvZiB0aGUgZm9sbG93aW5nOgorICAgICAgICAvLyAxLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhl
IGxhc3QgbGluZSBib3gsIGlmIHRoZSBib3ggZXN0YWJsaXNoZXMgYSBpbmxpbmUgZm9ybWF0dGlu
ZyBjb250ZXh0IHdpdGggb25lIG9yIG1vcmUgbGluZXMKKyAgICAgICAgLy8gMi4gdGhlIGJvdHRv
bSBlZGdlIG9mIHRoZSBib3R0b20gKHBvc3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBs
YXN0IGluLWZsb3cgY2hpbGQsIGlmIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4KKyAgICAgICAg
Ly8gICAgZG9lcyBub3QgY29sbGFwc2Ugd2l0aCB0aGUgZWxlbWVudCdzIGJvdHRvbSBtYXJnaW4K
KyAgICAgICAgLy8gMy4gdGhlIGJvdHRvbSBib3JkZXIgZWRnZSBvZiB0aGUgbGFzdCBpbi1mbG93
IGNoaWxkIHdob3NlIHRvcCBtYXJnaW4gZG9lc24ndCBjb2xsYXBzZSB3aXRoIHRoZSBlbGVtZW50
J3MgYm90dG9tIG1hcmdpbgorICAgICAgICAvLyA0LiB6ZXJvLCBvdGhlcndpc2UKKyAgICAgICAg
Ly8gT25seSBjaGlsZHJlbiBpbiB0aGUgbm9ybWFsIGZsb3cgYXJlIHRha2VuIGludG8gYWNjb3Vu
dCAoaS5lLiwgZmxvYXRpbmcgYm94ZXMgYW5kIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBh
cmUgaWdub3JlZCwKKyAgICAgICAgLy8gYW5kIHJlbGF0aXZlbHkgcG9zaXRpb25lZCBib3hlcyBh
cmUgY29uc2lkZXJlZCB3aXRob3V0IHRoZWlyIG9mZnNldCkuIE5vdGUgdGhhdCB0aGUgY2hpbGQg
Ym94IG1heSBiZSBhbiBhbm9ueW1vdXMgYmxvY2sgYm94LgorICAgICAgICBpZiAoIWxheW91dEJv
eC5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKSkgeworICAgICAgICAgICAgLy8gRklY
TUU6IE9ubHkgZml4ZWQgdmFsdWVzIHlldC4KKyAgICAgICAgICAgIHJldHVybiBsYXlvdXRCb3gu
c3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkudmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91
dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAg
IC8vIDEuIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgbGFzdCBsaW5lIGJveCwgaWYgdGhlIGJveCBl
c3RhYmxpc2hlcyBhIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgd2l0aCBvbmUgb3IgbW9yZSBs
aW5lcworICAgICAgICBpZiAobGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQoKSkgeworICAgICAgICAgICAgLy8gaGVpZ2h0ID0gbGFzdExpbmVCb3goKS5ib3R0b20o
KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gMi4gdGhl
IGJvdHRvbSBlZGdlIG9mIHRoZSBib3R0b20gKHBvc3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9m
IGl0cyBsYXN0IGluLWZsb3cgY2hpbGQsIGlmIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4K
KyAgICAgICAgYXV0byogbGFzdEluRmxvd0NoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlv
dXRCb3gpLmxhc3RJbkZsb3dDaGlsZCgpOworICAgICAgICBBU1NFUlQobGFzdEluRmxvd0NoaWxk
KTsKKyAgICAgICAgaWYgKCFCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6
aXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoUGFyZW50KCpsYXN0SW5GbG93Q2hpbGQpKSB7Cisg
ICAgICAgICAgICBhdXRvKiBsYXN0SW5GbG93RGlzcGxheUJveCA9IGxheW91dENvbnRleHQuZGlz
cGxheUJveEZvckxheW91dEJveCgqbGFzdEluRmxvd0NoaWxkKTsKKyAgICAgICAgICAgIEFTU0VS
VChsYXN0SW5GbG93RGlzcGxheUJveCk7CisgICAgICAgICAgICByZXR1cm4gbGFzdEluRmxvd0Rp
c3BsYXlCb3gtPmJvdHRvbSgpICsgbGFzdEluRmxvd0Rpc3BsYXlCb3gtPm1hcmdpbkJvdHRvbSgp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gMy4gdGhlIGJvdHRvbSBib3JkZXIgZWRnZSBvZiB0
aGUgbGFzdCBpbi1mbG93IGNoaWxkIHdob3NlIHRvcCBtYXJnaW4gZG9lc24ndCBjb2xsYXBzZSB3
aXRoIHRoZSBlbGVtZW50J3MgYm90dG9tIG1hcmdpbgorICAgICAgICBhdXRvKiBpbkZsb3dDaGls
ZCA9IGxhc3RJbkZsb3dDaGlsZDsKKyAgICAgICAgd2hpbGUgKGluRmxvd0NoaWxkICYmIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjppc01hcmdpblRvcENvbGxhcHNlZFdp
dGhQYXJlbnRNYXJnaW5Cb3R0b20oKmluRmxvd0NoaWxkKSkKKyAgICAgICAgICAgIGluRmxvd0No
aWxkID0gaW5GbG93Q2hpbGQtPnByZXZpb3VzSW5GbG93U2libGluZygpOworICAgICAgICBpZiAo
aW5GbG93Q2hpbGQpIHsKKyAgICAgICAgICAgIGF1dG8qIGluRmxvd0Rpc3BsYXlCb3ggPSBsYXlv
dXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmluRmxvd0NoaWxkKTsKKyAgICAgICAg
ICAgIEFTU0VSVChpbkZsb3dEaXNwbGF5Qm94KTsKKyAgICAgICAgICAgIHJldHVybiBpbkZsb3dE
aXNwbGF5Qm94LT50b3AoKSArIGluRmxvd0Rpc3BsYXlCb3gtPmJvcmRlckJveCgpLmhlaWdodCgp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gNC4gemVybywgb3RoZXJ3aXNlCisgICAgICAgIHJl
dHVybiAwOworICAgIH07CiAKLSAgICAvLyA0LiB6ZXJvLCBvdGhlcndpc2UKLSAgICByZXR1cm4g
MDsKKyAgICBhdXRvIGNvbXB1dGVkSGVpZ2h0ID0gY29tcHV0ZUhlaWdodCgpOworICAgIGlmICgh
aXNTdHJldGNoZWRUb1ZpZXdwb3J0KGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBjb21wdXRl
ZEhlaWdodDsKKyAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxvY2tIZWlnaHQgPSBsYXlvdXRD
b250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goaW5pdGlhbENvbnRhaW5pbmdCbG9jayhsYXlv
dXRCb3gpKS0+Y29udGVudEJveCgpLmhlaWdodCgpOworICAgIHJldHVybiBzdGQ6Om1heChjb21w
dXRlZEhlaWdodCwgaW5pdGlhbENvbnRhaW5pbmdCbG9ja0hlaWdodCk7CiB9CiAKIExheW91dFVu
aXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lk
dGgoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7
CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpICYmICFsYXlvdXRCb3gucmVwbGFjZWQo
KSk7CiAKLSAgICAvLyAxMC4zLjMgQmxvY2stbGV2ZWwsIG5vbi1yZXBsYWNlZCBlbGVtZW50cyBp
biBub3JtYWwgZmxvdwotICAgIC8vIFRoZSBmb2xsb3dpbmcgY29uc3RyYWludHMgbXVzdCBob2xk
IGFtb25nIHRoZSB1c2VkIHZhbHVlcyBvZiB0aGUgb3RoZXIgcHJvcGVydGllczoKLSAgICAvLyAn
bWFyZ2luLWxlZnQnICsgJ2JvcmRlci1sZWZ0LXdpZHRoJyArICdwYWRkaW5nLWxlZnQnICsgJ3dp
ZHRoJyArICdwYWRkaW5nLXJpZ2h0JyArICdib3JkZXItcmlnaHQtd2lkdGgnICsgJ21hcmdpbi1y
aWdodCcgPSB3aWR0aCBvZiBjb250YWluaW5nIGJsb2NrCisgICAgYXV0byBjb21wdXRlV2lkdGgg
PSBbJl0oKSB7CisgICAgICAgIC8vIDEwLjMuMyBCbG9jay1sZXZlbCwgbm9uLXJlcGxhY2VkIGVs
ZW1lbnRzIGluIG5vcm1hbCBmbG93CisgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY29uc3RyYWlu
dHMgbXVzdCBob2xkIGFtb25nIHRoZSB1c2VkIHZhbHVlcyBvZiB0aGUgb3RoZXIgcHJvcGVydGll
czoKKyAgICAgICAgLy8gJ21hcmdpbi1sZWZ0JyArICdib3JkZXItbGVmdC13aWR0aCcgKyAncGFk
ZGluZy1sZWZ0JyArICd3aWR0aCcgKyAncGFkZGluZy1yaWdodCcgKyAnYm9yZGVyLXJpZ2h0LXdp
ZHRoJyArICdtYXJnaW4tcmlnaHQnID0gd2lkdGggb2YgY29udGFpbmluZyBibG9jawogCi0gICAg
Ly8gSWYgJ3dpZHRoJyBpcyBzZXQgdG8gJ2F1dG8nLCBhbnkgb3RoZXIgJ2F1dG8nIHZhbHVlcyBi
ZWNvbWUgJzAnIGFuZCAnd2lkdGgnIGZvbGxvd3MgZnJvbSB0aGUgcmVzdWx0aW5nIGVxdWFsaXR5
LgotICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgYXV0byBjb250YWlu
aW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5
b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS0+d2lkdGgoKTsKKyAgICAgICAgLy8gSWYgJ3dpZHRo
JyBpcyBzZXQgdG8gJ2F1dG8nLCBhbnkgb3RoZXIgJ2F1dG8nIHZhbHVlcyBiZWNvbWUgJzAnIGFu
ZCAnd2lkdGgnIGZvbGxvd3MgZnJvbSB0aGUgcmVzdWx0aW5nIGVxdWFsaXR5LgorICAgICAgICBh
dXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOworICAgICAgICBhdXRvIGNvbnRhaW5pbmdC
bG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRC
b3guY29udGFpbmluZ0Jsb2NrKCkpLT53aWR0aCgpOworCisgICAgICAgIExheW91dFVuaXQgY29t
cHV0ZWRXaWR0aFZhbHVlOworICAgICAgICBhdXRvIHdpZHRoID0gc3R5bGUubG9naWNhbFdpZHRo
KCk7CisgICAgICAgIGlmICh3aWR0aC5pc0F1dG8oKSkgeworICAgICAgICAgICAgYXV0byYgZGlz
cGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
KTsKKyAgICAgICAgICAgIGF1dG8gbWFyZ2luTGVmdCA9IGRpc3BsYXlCb3gubWFyZ2luTGVmdCgp
OworICAgICAgICAgICAgYXV0byBtYXJnaW5SaWdodCA9IGRpc3BsYXlCb3gubWFyZ2luUmlnaHQo
KTsKIAotICAgIExheW91dFVuaXQgY29tcHV0ZWRXaWR0aFZhbHVlOwotICAgIGF1dG8gd2lkdGgg
PSBzdHlsZS5sb2dpY2FsV2lkdGgoKTsKLSAgICBpZiAod2lkdGguaXNBdXRvKCkpIHsKLSAgICAg
ICAgYXV0byYgZGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3gobGF5b3V0Qm94KTsKLSAgICAgICAgYXV0byBtYXJnaW5MZWZ0ID0gZGlzcGxheUJveC5tYXJn
aW5MZWZ0KCk7Ci0gICAgICAgIGF1dG8gbWFyZ2luUmlnaHQgPSBkaXNwbGF5Qm94Lm1hcmdpblJp
Z2h0KCk7CisgICAgICAgICAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gZGlzcGxheUJveC5wYWRkaW5n
TGVmdCgpOworICAgICAgICAgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBkaXNwbGF5Qm94LnBhZGRp
bmdSaWdodCgpOwogCi0gICAgICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBkaXNwbGF5Qm94LnBhZGRp
bmdMZWZ0KCk7Ci0gICAgICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0gZGlzcGxheUJveC5wYWRkaW5n
UmlnaHQoKTsKKyAgICAgICAgICAgIGF1dG8gYm9yZGVyTGVmdCA9IGRpc3BsYXlCb3guYm9yZGVy
TGVmdCgpOworICAgICAgICAgICAgYXV0byBib3JkZXJSaWdodCA9IGRpc3BsYXlCb3guYm9yZGVy
UmlnaHQoKTsKIAotICAgICAgICBhdXRvIGJvcmRlckxlZnQgPSBkaXNwbGF5Qm94LmJvcmRlckxl
ZnQoKTsKLSAgICAgICAgYXV0byBib3JkZXJSaWdodCA9IGRpc3BsYXlCb3guYm9yZGVyUmlnaHQo
KTsKKyAgICAgICAgICAgIGNvbXB1dGVkV2lkdGhWYWx1ZSA9IGNvbnRhaW5pbmdCbG9ja1dpZHRo
IC0gKG1hcmdpbkxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyBwYWRkaW5nUmlnaHQg
KyBib3JkZXJSaWdodCArIG1hcmdpblJpZ2h0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBjb21wdXRlZFdpZHRoVmFsdWUgPSB2YWx1ZUZvckxlbmd0aCh3aWR0aCwgY29udGFpbmluZ0Js
b2NrV2lkdGgpOwogCi0gICAgICAgIGNvbXB1dGVkV2lkdGhWYWx1ZSA9IGNvbnRhaW5pbmdCbG9j
a1dpZHRoIC0gKG1hcmdpbkxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyBwYWRkaW5n
UmlnaHQgKyBib3JkZXJSaWdodCArIG1hcmdpblJpZ2h0KTsKLSAgICB9IGVsc2UKLSAgICAgICAg
Y29tcHV0ZWRXaWR0aFZhbHVlID0gdmFsdWVGb3JMZW5ndGgod2lkdGgsIGNvbnRhaW5pbmdCbG9j
a1dpZHRoKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVkV2lkdGhWYWx1ZTsKKyAgICB9OwogCi0g
ICAgcmV0dXJuIGNvbXB1dGVkV2lkdGhWYWx1ZTsKKyAgICBhdXRvIGNvbXB1dGVkV2lkdGggPSBj
b21wdXRlV2lkdGgoKTsKKyAgICBpZiAoIWlzU3RyZXRjaGVkVG9WaWV3cG9ydChsYXlvdXRCb3gp
KQorICAgICAgICByZXR1cm4gY29tcHV0ZWRXaWR0aDsKKyAgICBhdXRvIGluaXRpYWxDb250YWlu
aW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChpbml0
aWFsQ29udGFpbmluZ0Jsb2NrKGxheW91dEJveCkpLT5jb250ZW50Qm94KCkud2lkdGgoKTsKKyAg
ICByZXR1cm4gc3RkOjptYXgoY29tcHV0ZWRXaWR0aCwgaW5pdGlhbENvbnRhaW5pbmdCbG9ja1dp
ZHRoKTsKIH0KIAogTGF5b3V0UG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OnN0YXRpY1Bvc2l0aW9uKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYg
bGF5b3V0Qm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlCb3guY3BwCmluZGV4IGQ3ZDU1ODQ3ZWZjZDg1YmIwMTU0ZjQ5NmQxYTAxYjVjZTk3MWI5NGEu
LmQwYzhiOWU0MGYxNjFmNjJhOTdhZTE3ZjBhNTVlM2NlMmFhNTdhYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKQEAgLTU2LDcgKzU2
LDcgQEAgQm94OjpSZWN0IEJveDo6bWFyZ2luQm94KCkgY29uc3QKICAgICBhdXRvIG1hcmdpbkJv
eCA9IGJvcmRlckJveCgpOwogCiAgICAgbWFyZ2luQm94LnNoaWZ0TGVmdFRvKG1hcmdpbkJveC5s
ZWZ0KCkgKyBtX21hcmdpbi5sZWZ0KTsKLSAgICBtYXJnaW5Cb3guc2hpZnRCb3R0b21UbyhtYXJn
aW5Cb3gudG9wKCkgKyBtX21hcmdpbi50b3ApOworICAgIG1hcmdpbkJveC5zaGlmdFRvcFRvKG1h
cmdpbkJveC50b3AoKSArIG1fbWFyZ2luLnRvcCk7CiAgICAgbWFyZ2luQm94LnNoaWZ0UmlnaHRU
byhtYXJnaW5Cb3gucmlnaHQoKSAtIG1fbWFyZ2luLnJpZ2h0KTsKICAgICBtYXJnaW5Cb3guc2hp
ZnRCb3R0b21UbyhtYXJnaW5Cb3guYm90dG9tKCkgLSBtX21hcmdpbi5ib3R0b20pOwogCkBAIC04
NSw3ICs4NSw3IEBAIEJveDo6UmVjdCBCb3g6OnBhZGRpbmdCb3goKSBjb25zdAogCiAgICAgcGFk
ZGluZ0JveC5zaGlmdExlZnRUbyhwYWRkaW5nQm94LmxlZnQoKSArIG1fYm9yZGVyLmxlZnQpOwog
ICAgIHBhZGRpbmdCb3guc2hpZnRUb3BUbyhwYWRkaW5nQm94LnRvcCgpICsgbV9ib3JkZXIudG9w
KTsKLSAgICBwYWRkaW5nQm94LnNoaWZ0UmlnaHRUbyhwYWRkaW5nQm94LmxlZnQoKSAtIG1fYm9y
ZGVyLnJpZ2h0KTsKKyAgICBwYWRkaW5nQm94LnNoaWZ0UmlnaHRUbyhwYWRkaW5nQm94LnJpZ2h0
KCkgLSBtX2JvcmRlci5yaWdodCk7CiAgICAgcGFkZGluZ0JveC5zaGlmdEJvdHRvbVRvKHBhZGRp
bmdCb3guYm90dG9tKCkgLSBtX2JvcmRlci5ib3R0b20pOwogCiAgICAgcmV0dXJuIHBhZGRpbmdC
b3g7CkBAIC0xMDUsOCArMTA1LDggQEAgQm94OjpSZWN0IEJveDo6Y29udGVudEJveCgpIGNvbnN0
CiAKICAgICBjb250ZW50Qm94LnNoaWZ0TGVmdFRvKGNvbnRlbnRCb3gubGVmdCgpICsgbV9wYWRk
aW5nLmxlZnQpOwogICAgIGNvbnRlbnRCb3guc2hpZnRUb3BUbyhjb250ZW50Qm94LnRvcCgpICsg
bV9wYWRkaW5nLnRvcCk7Ci0gICAgY29udGVudEJveC5zaGlmdEJvdHRvbVRvKGNvbnRlbnRCb3gu
Ym90dG9tKCkgLSBtX3BhZGRpbmcuYm90dG9tKTsKICAgICBjb250ZW50Qm94LnNoaWZ0UmlnaHRU
byhjb250ZW50Qm94LnJpZ2h0KCkgLSBtX3BhZGRpbmcucmlnaHQpOworICAgIGNvbnRlbnRCb3gu
c2hpZnRCb3R0b21Ubyhjb250ZW50Qm94LmJvdHRvbSgpIC0gbV9wYWRkaW5nLmJvdHRvbSk7CiAK
ICAgICByZXR1cm4gY29udGVudEJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4IDk2NjliOTQ0MGViMjRhM2MxMmQ0NGExNWQ0ZmE3
ZjA3OTUwMGNlMGUuLjU0MDMxOGEwZTMyNGZhM2MzOGYxODk5ZjFlZDE1NjlmOGM4OGUzMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAt
MTgxLDYgKzE4MSwxOCBAQCBib29sIEJveDo6aXNJbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29u
c3QKICAgICByZXR1cm4gIXBhcmVudCgpOwogfQogCitib29sIEJveDo6aXNEb2N1bWVudEJveCgp
IGNvbnN0Cit7CisgICAgLy8gcmV0dXJuIGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkgPT0g
JmVsZW1lbnQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQm94Ojppc0JvZHlCb3go
KSBjb25zdAoreworICAgIC8vIHJldHVybiBlbGVtZW50KCkuaGFzVGFnTmFtZShIVE1MTmFtZXM6
OmJvZHlUYWcpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogY29uc3QgQm94KiBCb3g6Om5leHRJ
bkZsb3dTaWJsaW5nKCkgY29uc3QKIHsKICAgICBpZiAoYXV0byogbmV4dFNpYmxpbmcgPSB0aGlz
LT5uZXh0U2libGluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJveC5oCmluZGV4IDFlMGI4NWZmZGU5MTM2OGI2OTgyY2UxMTZjODJjMTNhMWMyOWQyMWUu
LmY5ODIxNGMxNTMzNGJiNzFhYTNkYzU5NzlhZWVlOTMyYWIyODZhNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC03NCw2ICs3NCw5IEBAIHB1
YmxpYzoKICAgICBib29sIGlzQmxvY2tDb250YWluZXJCb3goKSBjb25zdDsKICAgICBib29sIGlz
SW5pdGlhbENvbnRhaW5pbmdCbG9jaygpIGNvbnN0OwogCisgICAgYm9vbCBpc0RvY3VtZW50Qm94
KCkgY29uc3Q7CisgICAgYm9vbCBpc0JvZHlCb3goKSBjb25zdDsKKwogICAgIGNvbnN0IENvbnRh
aW5lciogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICBjb25zdCBCb3gq
IG5leHRTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0U2libGluZzsgfQogICAgIGNvbnN0
IEJveCogbmV4dEluRmxvd1NpYmxpbmcoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0JvcmRlclZhbHVlLmgKaW5kZXggYmY4NDk2NTVhZWM5OTk4M2Q0MTkxN2IwYzFh
YTE2MmU2ZjBkYjUyNC4uNmY3ZjgyMWVhNjI2NjA1ZTg0Yzk5NTYwMjkwYzg3YjJlNDI3ZjAxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmgKQEAgLTcy
LDYgKzcyLDggQEAgcHVibGljOgogCiAgICAgZmxvYXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3dpZHRoOyB9CiAgICAgQm9yZGVyU3R5bGUgc3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxCb3JkZXJTdHlsZT4obV9zdHlsZSk7IH0KKyAgICAKKyAgICBmbG9hdCBib3hNb2RlbFdp
ZHRoKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBmbG9hdCBtX3dpZHRoIHsgMyB9OwpAQCAt
ODMsNCArODUsMTMgQEAgcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIG1faXNBdXRvIDogMTsgLy8g
T3V0bGluZUlzQXV0bwogfTsKIAoraW5saW5lIGZsb2F0IEJvcmRlclZhbHVlOjpib3hNb2RlbFdp
ZHRoKCkgY29uc3QKK3sKKyAgICBhdXRvIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKKyAgICBpZiAo
c3R5bGUgPT0gQm9yZGVyU3R5bGU6Ok5vbmUgfHwgc3R5bGUgPT0gQm9yZGVyU3R5bGU6OkhpZGRl
bikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gd2lkdGgoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341574</attachid>
            <date>2018-05-30 07:58:27 -0700</date>
            <delta_ts>2018-05-30 08:26:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186083-20180530075825.patch</filename>
            <type>text/plain</type>
            <size>19534</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDUzYThmNjhhZDllNjM1
YjkwZTI5MzdhYjM4NGJhNjNhZTQ4OGQyOC4uZTZiNjNlYzdjMDg3MGI5MjdkNDkyYWYxNGY3YzI2
Nzc4NzhlOWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTA1LTMwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gTWlzY2VsbGFuZW91
cyBmaXhlcyB0byBnZXQgY2xvc2VyIHRvIGdlb21ldHJ5IGNvcnJlY3RuZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYwODMKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcik6CisgICAgICAgICogbGF5b3V0L0xh
eW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRDb250ZXh0
Ojppbml0aWFsaXplUm9vdCk6CisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQm94SW5mb3JtYXRpb25J
Zk5lZWRlZCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojppc1N0cmV0
Y2hlZFRvVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojppbml0aWFsQ29udGFp
bmluZ0Jsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y29tcHV0ZWRJbkZsb3dOb25S
ZXBsYWNlZENvbXB1dGVkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6aW5GbG93
Tm9uUmVwbGFjZWRDb21wdXRlZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0KTog
bGFtYmRhIHNob3VsZCBjYXB0dXJlIHRoZSBzcGVjaWZpY2F0aW9uIHBhcnQuIAorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93
Tm9uUmVwbGFjZWRXaWR0aCk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjptYXJnaW5Cb3ggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpwYWRkaW5nQm94IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Y29udGVudEJveCBjb25zdCk6CisgICAgICAg
ICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Qm94Ojppc0RvY3VtZW50Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Qm94Ojppc0JvZHlCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oOiBpZ25v
cmUgYm9yZGVyLXdpZHRoIHdoZW4gdHlwZSBpcyBoaWRkZW4gb3Igbm9uZS4gCisgICAgICAgIChX
ZWJDb3JlOjpCb3JkZXJWYWx1ZTo6Ym94TW9kZWxXaWR0aCBjb25zdCk6CisKIDIwMTgtMDUtMzAg
IFN0ZXBoZW4gTWNHcnVlciAgPHNtY2dydWVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBpT1M6
IHNldHRpbmcgJ2RlZmF1bHRWYWx1ZScgb2YgaW5wdXQgdHlwZT1kYXRlIGZyb20gc2NyaXB0IHNo
b3VsZCBjYXVzZSBhIFVJIHVwZGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDhjNzRlYzU0MTgxN2VkMDk4ODNhMDZm
MDc5MmQ2YzdiM2NhNzMwOTMuLjc4OWZmMWE5MjYxMDQxNDU5NWM0MWY1M2IxNDUzNWE0NjhmZjUz
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdl
b21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAKQEAgLTUyOSwxMCArNTI5LDEwIEBAIERpc3BsYXk6OkJveDo6RWRnZXMgRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcihMYXlvdXRDb250ZXh0JiwK
IHsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIHJldHVybiB7Ci0g
ICAgICAgIHN0eWxlLmJvcmRlclRvcCgpLndpZHRoKCksCi0gICAgICAgIHN0eWxlLmJvcmRlckxl
ZnQoKS53aWR0aCgpLAotICAgICAgICBzdHlsZS5ib3JkZXJCb3R0b20oKS53aWR0aCgpLAotICAg
ICAgICBzdHlsZS5ib3JkZXJSaWdodCgpLndpZHRoKCkKKyAgICAgICAgc3R5bGUuYm9yZGVyVG9w
KCkuYm94TW9kZWxXaWR0aCgpLAorICAgICAgICBzdHlsZS5ib3JkZXJMZWZ0KCkuYm94TW9kZWxX
aWR0aCgpLAorICAgICAgICBzdHlsZS5ib3JkZXJCb3R0b20oKS5ib3hNb2RlbFdpZHRoKCksCisg
ICAgICAgIHN0eWxlLmJvcmRlclJpZ2h0KCkuYm94TW9kZWxXaWR0aCgpCiAgICAgfTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCmluZGV4IDhmMjhlN2FiOGRmNzFl
ODg5MTQ3NWIxMjVlNmExNzQ0NDkyYjM4NTguLmUwMTViNTE5N2FlMzFmZmI5YzliOTE5OTMxYmZh
MjI4NjZmZWE5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAKQEAg
LTYxLDEyICs2MSwxMiBAQCB2b2lkIExheW91dENvbnRleHQ6OmluaXRpYWxpemVSb290KGNvbnN0
IENvbnRhaW5lciYgcm9vdCwgY29uc3QgTGF5b3V0U2l6ZSYgY29udAogICAgIGRpc3BsYXlCb3gu
c2V0TWFyZ2luKHsgfSk7CiAKICAgICBhdXRvJiBzdHlsZSA9IHJvb3Quc3R5bGUoKTsKLSAgICAv
LyBGSVhNRTogbV9yb290IGNvdWxkIHZlcnkgd2VsbCBiZSBhIGZvcm1hdHRpbmcgY29udGV4dCBy
b290IHdpdGggYW5jZXN0b3JzIGFuZCByZXNvbHZhYmxlIGJvcmRlciBhbmQgcGFkZGluZyAoYXMg
b3Bwb3NlZCB0byB0aGUgdG9wbW9zdCByb290KSAgCisgICAgLy8gRklYTUU6IG1fcm9vdCBjb3Vs
ZCB2ZXJ5IHdlbGwgYmUgYSBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCB3aXRoIGFuY2VzdG9ycyBh
bmQgcmVzb2x2YWJsZSBib3JkZXIgYW5kIHBhZGRpbmcgKGFzIG9wcG9zZWQgdG8gdGhlIHRvcG1v
c3Qgcm9vdCkKICAgICBkaXNwbGF5Qm94LnNldEJvcmRlcih7Ci0gICAgICAgIHN0eWxlLmJvcmRl
clRvcCgpLndpZHRoKCksCi0gICAgICAgIHN0eWxlLmJvcmRlckxlZnQoKS53aWR0aCgpLAotICAg
ICAgICBzdHlsZS5ib3JkZXJCb3R0b20oKS53aWR0aCgpLAotICAgICAgICBzdHlsZS5ib3JkZXJS
aWdodCgpLndpZHRoKCkKKyAgICAgICAgc3R5bGUuYm9yZGVyVG9wKCkuYm94TW9kZWxXaWR0aCgp
LAorICAgICAgICBzdHlsZS5ib3JkZXJMZWZ0KCkuYm94TW9kZWxXaWR0aCgpLAorICAgICAgICBz
dHlsZS5ib3JkZXJCb3R0b20oKS5ib3hNb2RlbFdpZHRoKCksCisgICAgICAgIHN0eWxlLmJvcmRl
clJpZ2h0KCkuYm94TW9kZWxXaWR0aCgpCiAgICAgfSk7CiAKICAgICBkaXNwbGF5Qm94LnNldFBh
ZGRpbmcoewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAppbmRleCBhN2FmNzMx
MTYzMTU3NGI4ZjQ3Nzg4Y2U5YzcxOTA2NjkxZTUwNTQwLi45YWI4MDhmMWI4ZGU1NTZhMGZjZTBm
ZmY1NWZlMTY0OTNhYjJlZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNw
cApAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCBvdXRwdXRNaXNtYXRjaGluZ0JveEluZm9y
bWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYQogICAgIGlmIChyZW5k
ZXJlci5wYWRkaW5nQm94UmVjdCgpICE9IGRpc3BsYXlCb3gtPnBhZGRpbmdCb3goKSkKICAgICAg
ICAgb3V0cHV0UmVjdCgicGFkZGluZ0JveCIsIHJlbmRlcmVyLnBhZGRpbmdCb3hSZWN0KCksIGRp
c3BsYXlCb3gtPnBhZGRpbmdCb3goKSk7CiAKLSAgICBpZiAocmVuZGVyZXIubWFyZ2luQm94UmVj
dCgpICE9IGRpc3BsYXlCb3gtPmNvbnRlbnRCb3goKSkKKyAgICBpZiAocmVuZGVyZXIuY29udGVu
dEJveFJlY3QoKSAhPSBkaXNwbGF5Qm94LT5jb250ZW50Qm94KCkpCiAgICAgICAgIG91dHB1dFJl
Y3QoImNvbnRlbnRCb3giLCByZW5kZXJlci5jb250ZW50Qm94UmVjdCgpLCBkaXNwbGF5Qm94LT5j
b250ZW50Qm94KCkpOwogCiAgICAgc3RyZWFtLm5leHRMaW5lKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggMjUzMWU5MDM2MzljODQ0ZGFmNWZi
YWE0NTAyY2RkY2ZhN2EyMWE2YS4uOTRiYzI5MjAwOTg0MmM4Zjk4MzFlNTQxN2E3OTUyNzdjN2I4
YzU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApA
QCAtMzMsODcgKzMzLDEyNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91
dCB7CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxv
d05vblJlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQorc3RhdGljIGJvb2wgaXNTdHJldGNoZWRUb1ZpZXdwb3J0KGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQogewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSAmJiAhbGF5
b3V0Qm94LnJlcGxhY2VkKCkpOworICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSk7Cisg
ICAgLy8gSW4gcXVpcmtzIG1vZGUsIGJvZHkgYW5kIGh0bWwgc3RyZXRjaCB0byB0aGUgdmlld3Bv
cnQuCisgICAgLy8gaWYgKCFsYXlvdXRCb3guZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSkKKyAg
ICAvLyAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NT
MjIvdmlzdWRldC5odG1sCi0gICAgLy8gSWYgJ2hlaWdodCcgaXMgJ2F1dG8nLCB0aGUgaGVpZ2h0
IGRlcGVuZHMgb24gd2hldGhlciB0aGUgZWxlbWVudCBoYXMgYW55IGJsb2NrLWxldmVsIGNoaWxk
cmVuIGFuZCB3aGV0aGVyIGl0IGhhcyBwYWRkaW5nIG9yIGJvcmRlcnM6Ci0gICAgLy8gVGhlIGVs
ZW1lbnQncyBoZWlnaHQgaXMgdGhlIGRpc3RhbmNlIGZyb20gaXRzIHRvcCBjb250ZW50IGVkZ2Ug
dG8gdGhlIGZpcnN0IGFwcGxpY2FibGUgb2YgdGhlIGZvbGxvd2luZzoKLSAgICAvLyAxLiB0aGUg
Ym90dG9tIGVkZ2Ugb2YgdGhlIGxhc3QgbGluZSBib3gsIGlmIHRoZSBib3ggZXN0YWJsaXNoZXMg
YSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IHdpdGggb25lIG9yIG1vcmUgbGluZXMKLSAgICAv
LyAyLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGJvdHRvbSAocG9zc2libHkgY29sbGFwc2VkKSBt
YXJnaW4gb2YgaXRzIGxhc3QgaW4tZmxvdyBjaGlsZCwgaWYgdGhlIGNoaWxkJ3MgYm90dG9tIG1h
cmdpbgotICAgIC8vICAgIGRvZXMgbm90IGNvbGxhcHNlIHdpdGggdGhlIGVsZW1lbnQncyBib3R0
b20gbWFyZ2luCi0gICAgLy8gMy4gdGhlIGJvdHRvbSBib3JkZXIgZWRnZSBvZiB0aGUgbGFzdCBp
bi1mbG93IGNoaWxkIHdob3NlIHRvcCBtYXJnaW4gZG9lc24ndCBjb2xsYXBzZSB3aXRoIHRoZSBl
bGVtZW50J3MgYm90dG9tIG1hcmdpbgotICAgIC8vIDQuIHplcm8sIG90aGVyd2lzZQotICAgIC8v
IE9ubHkgY2hpbGRyZW4gaW4gdGhlIG5vcm1hbCBmbG93IGFyZSB0YWtlbiBpbnRvIGFjY291bnQg
KGkuZS4sIGZsb2F0aW5nIGJveGVzIGFuZCBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgYXJl
IGlnbm9yZWQsCi0gICAgLy8gYW5kIHJlbGF0aXZlbHkgcG9zaXRpb25lZCBib3hlcyBhcmUgY29u
c2lkZXJlZCB3aXRob3V0IHRoZWlyIG9mZnNldCkuIE5vdGUgdGhhdCB0aGUgY2hpbGQgYm94IG1h
eSBiZSBhbiBhbm9ueW1vdXMgYmxvY2sgYm94LgotICAgIGlmICghbGF5b3V0Qm94LnN0eWxlKCku
bG9naWNhbEhlaWdodCgpLmlzQXV0bygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmx5IGZpeGVk
IHZhbHVlcyB5ZXQuCi0gICAgICAgIHJldHVybiBsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsSGVp
Z2h0KCkudmFsdWUoKTsKLSAgICB9CisgICAgaWYgKCFsYXlvdXRCb3guaXNEb2N1bWVudEJveCgp
IHx8ICFsYXlvdXRCb3guaXNCb2R5Qm94KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxh
eW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKTsKK30KIAotICAgIC8v
IDEuIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgbGFzdCBsaW5lIGJveCwgaWYgdGhlIGJveCBlc3Rh
Ymxpc2hlcyBhIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgd2l0aCBvbmUgb3IgbW9yZSBsaW5l
cwotICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgp
KSB7Ci0gICAgICAgIC8vIGhlaWdodCA9IGxhc3RMaW5lQm94KCkuYm90dG9tKCk7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KK3N0YXRpYyBjb25zdCBDb250YWluZXImIGluaXRpYWxDb250YWlu
aW5nQmxvY2soY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgYXV0byogY29udGFpbmluZ0Js
b2NrID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOworICAgIHdoaWxlIChjb250YWluaW5n
QmxvY2stPmNvbnRhaW5pbmdCbG9jaygpKQorICAgICAgICBjb250YWluaW5nQmxvY2sgPSBjb250
YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOworICAgIHJldHVybiAqY29udGFpbmluZ0Js
b2NrOworfQogCi0gICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBib3R0b20gKHBvc3Np
Ymx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZsb3cgY2hpbGQsIGlmIHRoZSBj
aGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4KLSAgICBhdXRvKiBsYXN0SW5GbG93Q2hpbGQgPSBkb3du
Y2FzdDxDb250YWluZXI+KGxheW91dEJveCkubGFzdEluRmxvd0NoaWxkKCk7Ci0gICAgQVNTRVJU
KGxhc3RJbkZsb3dDaGlsZCk7Ci0gICAgaWYgKCFCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJn
aW5Db2xsYXBzZTo6aXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoUGFyZW50KCpsYXN0SW5GbG93
Q2hpbGQpKSB7Ci0gICAgICAgIGF1dG8qIGxhc3RJbkZsb3dEaXNwbGF5Qm94ID0gbGF5b3V0Q29u
dGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXN0SW5GbG93Q2hpbGQpOwotICAgICAgICBB
U1NFUlQobGFzdEluRmxvd0Rpc3BsYXlCb3gpOwotICAgICAgICByZXR1cm4gbGFzdEluRmxvd0Rp
c3BsYXlCb3gtPmJvdHRvbSgpICsgbGFzdEluRmxvd0Rpc3BsYXlCb3gtPm1hcmdpbkJvdHRvbSgp
OwotICAgIH0KK0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Omlu
Rmxvd05vblJlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQoreworICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSAmJiAh
bGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogCi0gICAgLy8gMy4gdGhlIGJvdHRvbSBib3JkZXIgZWRn
ZSBvZiB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIHdob3NlIHRvcCBtYXJnaW4gZG9lc24ndCBjb2xs
YXBzZSB3aXRoIHRoZSBlbGVtZW50J3MgYm90dG9tIG1hcmdpbgotICAgIGF1dG8qIGluRmxvd0No
aWxkID0gbGFzdEluRmxvd0NoaWxkOwotICAgIHdoaWxlIChpbkZsb3dDaGlsZCAmJiBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Ub3BDb2xsYXBzZWRXaXRo
UGFyZW50TWFyZ2luQm90dG9tKCppbkZsb3dDaGlsZCkpCi0gICAgICAgIGluRmxvd0NoaWxkID0g
aW5GbG93Q2hpbGQtPnByZXZpb3VzSW5GbG93U2libGluZygpOwotICAgIGlmIChpbkZsb3dDaGls
ZCkgewotICAgICAgICBhdXRvKiBpbkZsb3dEaXNwbGF5Qm94ID0gbGF5b3V0Q29udGV4dC5kaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94KCppbkZsb3dDaGlsZCk7Ci0gICAgICAgIEFTU0VSVChpbkZsb3dE
aXNwbGF5Qm94KTsKLSAgICAgICAgcmV0dXJuIGluRmxvd0Rpc3BsYXlCb3gtPnRvcCgpICsgaW5G
bG93RGlzcGxheUJveC0+Ym9yZGVyQm94KCkuaGVpZ2h0KCk7Ci0gICAgfQorICAgIGF1dG8gY29t
cHV0ZSA9IFsmXSgpIC0+IExheW91dFVuaXQgeworICAgICAgICAvLyBodHRwczovL3d3dy53My5v
cmcvVFIvQ1NTMjIvdmlzdWRldC5odG1sCisgICAgICAgIC8vIElmICdoZWlnaHQnIGlzICdhdXRv
JywgdGhlIGhlaWdodCBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGVsZW1lbnQgaGFzIGFueSBibG9j
ay1sZXZlbCBjaGlsZHJlbiBhbmQgd2hldGhlciBpdCBoYXMgcGFkZGluZyBvciBib3JkZXJzOgor
ICAgICAgICAvLyBUaGUgZWxlbWVudCdzIGhlaWdodCBpcyB0aGUgZGlzdGFuY2UgZnJvbSBpdHMg
dG9wIGNvbnRlbnQgZWRnZSB0byB0aGUgZmlyc3QgYXBwbGljYWJsZSBvZiB0aGUgZm9sbG93aW5n
OgorICAgICAgICAvLyAxLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGxhc3QgbGluZSBib3gsIGlm
IHRoZSBib3ggZXN0YWJsaXNoZXMgYSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IHdpdGggb25l
IG9yIG1vcmUgbGluZXMKKyAgICAgICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBib3R0
b20gKHBvc3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZsb3cgY2hpbGQs
IGlmIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4KKyAgICAgICAgLy8gICAgZG9lcyBub3QgY29s
bGFwc2Ugd2l0aCB0aGUgZWxlbWVudCdzIGJvdHRvbSBtYXJnaW4KKyAgICAgICAgLy8gMy4gdGhl
IGJvdHRvbSBib3JkZXIgZWRnZSBvZiB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIHdob3NlIHRvcCBt
YXJnaW4gZG9lc24ndCBjb2xsYXBzZSB3aXRoIHRoZSBlbGVtZW50J3MgYm90dG9tIG1hcmdpbgor
ICAgICAgICAvLyA0LiB6ZXJvLCBvdGhlcndpc2UKKyAgICAgICAgLy8gT25seSBjaGlsZHJlbiBp
biB0aGUgbm9ybWFsIGZsb3cgYXJlIHRha2VuIGludG8gYWNjb3VudCAoaS5lLiwgZmxvYXRpbmcg
Ym94ZXMgYW5kIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBhcmUgaWdub3JlZCwKKyAgICAg
ICAgLy8gYW5kIHJlbGF0aXZlbHkgcG9zaXRpb25lZCBib3hlcyBhcmUgY29uc2lkZXJlZCB3aXRo
b3V0IHRoZWlyIG9mZnNldCkuIE5vdGUgdGhhdCB0aGUgY2hpbGQgYm94IG1heSBiZSBhbiBhbm9u
eW1vdXMgYmxvY2sgYm94LgorICAgICAgICBpZiAoIWxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxI
ZWlnaHQoKS5pc0F1dG8oKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IE9ubHkgZml4ZWQgdmFs
dWVzIHlldC4KKyAgICAgICAgICAgIHJldHVybiBsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsSGVp
Z2h0KCkudmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghaXM8Q29udGFpbmVyPihs
YXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuaGFzSW5GbG93Q2hp
bGQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIC8vIDEuIHRoZSBib3R0b20g
ZWRnZSBvZiB0aGUgbGFzdCBsaW5lIGJveCwgaWYgdGhlIGJveCBlc3RhYmxpc2hlcyBhIGlubGlu
ZSBmb3JtYXR0aW5nIGNvbnRleHQgd2l0aCBvbmUgb3IgbW9yZSBsaW5lcworICAgICAgICBpZiAo
bGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgeworICAgICAg
ICAgICAgLy8gaGVpZ2h0ID0gbGFzdExpbmVCb3goKS5ib3R0b20oKTsKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9mIHRo
ZSBib3R0b20gKHBvc3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZsb3cg
Y2hpbGQsIGlmIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4KKyAgICAgICAgYXV0byogbGFz
dEluRmxvd0NoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmxhc3RJbkZsb3dD
aGlsZCgpOworICAgICAgICBBU1NFUlQobGFzdEluRmxvd0NoaWxkKTsKKyAgICAgICAgaWYgKCFC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Cb3R0b21Db2xs
YXBzZWRXaXRoUGFyZW50KCpsYXN0SW5GbG93Q2hpbGQpKSB7CisgICAgICAgICAgICBhdXRvKiBs
YXN0SW5GbG93RGlzcGxheUJveCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJv
eCgqbGFzdEluRmxvd0NoaWxkKTsKKyAgICAgICAgICAgIEFTU0VSVChsYXN0SW5GbG93RGlzcGxh
eUJveCk7CisgICAgICAgICAgICByZXR1cm4gbGFzdEluRmxvd0Rpc3BsYXlCb3gtPmJvdHRvbSgp
ICsgbGFzdEluRmxvd0Rpc3BsYXlCb3gtPm1hcmdpbkJvdHRvbSgpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gMy4gdGhlIGJvdHRvbSBib3JkZXIgZWRnZSBvZiB0aGUgbGFzdCBpbi1mbG93IGNo
aWxkIHdob3NlIHRvcCBtYXJnaW4gZG9lc24ndCBjb2xsYXBzZSB3aXRoIHRoZSBlbGVtZW50J3Mg
Ym90dG9tIG1hcmdpbgorICAgICAgICBhdXRvKiBpbkZsb3dDaGlsZCA9IGxhc3RJbkZsb3dDaGls
ZDsKKyAgICAgICAgd2hpbGUgKGluRmxvd0NoaWxkICYmIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Ok1hcmdpbkNvbGxhcHNlOjppc01hcmdpblRvcENvbGxhcHNlZFdpdGhQYXJlbnRNYXJnaW5Cb3R0
b20oKmluRmxvd0NoaWxkKSkKKyAgICAgICAgICAgIGluRmxvd0NoaWxkID0gaW5GbG93Q2hpbGQt
PnByZXZpb3VzSW5GbG93U2libGluZygpOworICAgICAgICBpZiAoaW5GbG93Q2hpbGQpIHsKKyAg
ICAgICAgICAgIGF1dG8qIGluRmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3goKmluRmxvd0NoaWxkKTsKKyAgICAgICAgICAgIEFTU0VSVChpbkZsb3dE
aXNwbGF5Qm94KTsKKyAgICAgICAgICAgIHJldHVybiBpbkZsb3dEaXNwbGF5Qm94LT50b3AoKSAr
IGluRmxvd0Rpc3BsYXlCb3gtPmJvcmRlckJveCgpLmhlaWdodCgpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gNC4gemVybywgb3RoZXJ3aXNlCisgICAgICAgIHJldHVybiAwOworICAgIH07CiAK
LSAgICAvLyA0LiB6ZXJvLCBvdGhlcndpc2UKLSAgICByZXR1cm4gMDsKKyAgICBhdXRvIGNvbXB1
dGVkSGVpZ2h0ID0gY29tcHV0ZSgpOworICAgIGlmICghaXNTdHJldGNoZWRUb1ZpZXdwb3J0KGxh
eW91dEJveCkpCisgICAgICAgIHJldHVybiBjb21wdXRlZEhlaWdodDsKKyAgICBhdXRvIGluaXRp
YWxDb250YWluaW5nQmxvY2tIZWlnaHQgPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3goaW5pdGlhbENvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpKS0+Y29udGVudEJveCgpLmhl
aWdodCgpOworICAgIHJldHVybiBzdGQ6Om1heChjb21wdXRlZEhlaWdodCwgaW5pdGlhbENvbnRh
aW5pbmdCbG9ja0hlaWdodCk7CiB9CiAKIExheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGgoTGF5b3V0Q29udGV4dCYgbGF5b3V0
Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5p
c0luRmxvdygpICYmICFsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAKLSAgICAvLyAxMC4zLjMgQmxv
Y2stbGV2ZWwsIG5vbi1yZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdwotICAgIC8vIFRo
ZSBmb2xsb3dpbmcgY29uc3RyYWludHMgbXVzdCBob2xkIGFtb25nIHRoZSB1c2VkIHZhbHVlcyBv
ZiB0aGUgb3RoZXIgcHJvcGVydGllczoKLSAgICAvLyAnbWFyZ2luLWxlZnQnICsgJ2JvcmRlci1s
ZWZ0LXdpZHRoJyArICdwYWRkaW5nLWxlZnQnICsgJ3dpZHRoJyArICdwYWRkaW5nLXJpZ2h0JyAr
ICdib3JkZXItcmlnaHQtd2lkdGgnICsgJ21hcmdpbi1yaWdodCcgPSB3aWR0aCBvZiBjb250YWlu
aW5nIGJsb2NrCisgICAgYXV0byBjb21wdXRlID0gWyZdKCkgeworICAgICAgICAvLyAxMC4zLjMg
QmxvY2stbGV2ZWwsIG5vbi1yZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdworICAgICAg
ICAvLyBUaGUgZm9sbG93aW5nIGNvbnN0cmFpbnRzIG11c3QgaG9sZCBhbW9uZyB0aGUgdXNlZCB2
YWx1ZXMgb2YgdGhlIG90aGVyIHByb3BlcnRpZXM6CisgICAgICAgIC8vICdtYXJnaW4tbGVmdCcg
KyAnYm9yZGVyLWxlZnQtd2lkdGgnICsgJ3BhZGRpbmctbGVmdCcgKyAnd2lkdGgnICsgJ3BhZGRp
bmctcmlnaHQnICsgJ2JvcmRlci1yaWdodC13aWR0aCcgKyAnbWFyZ2luLXJpZ2h0JyA9IHdpZHRo
IG9mIGNvbnRhaW5pbmcgYmxvY2sKIAotICAgIC8vIElmICd3aWR0aCcgaXMgc2V0IHRvICdhdXRv
JywgYW55IG90aGVyICdhdXRvJyB2YWx1ZXMgYmVjb21lICcwJyBhbmQgJ3dpZHRoJyBmb2xsb3dz
IGZyb20gdGhlIHJlc3VsdGluZyBlcXVhbGl0eS4KLSAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJv
eC5zdHlsZSgpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSktPndp
ZHRoKCk7CisgICAgICAgIC8vIElmICd3aWR0aCcgaXMgc2V0IHRvICdhdXRvJywgYW55IG90aGVy
ICdhdXRvJyB2YWx1ZXMgYmVjb21lICcwJyBhbmQgJ3dpZHRoJyBmb2xsb3dzIGZyb20gdGhlIHJl
c3VsdGluZyBlcXVhbGl0eS4KKyAgICAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUo
KTsKKyAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlz
cGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS0+d2lkdGgo
KTsKKworICAgICAgICBMYXlvdXRVbml0IGNvbXB1dGVkV2lkdGhWYWx1ZTsKKyAgICAgICAgYXV0
byB3aWR0aCA9IHN0eWxlLmxvZ2ljYWxXaWR0aCgpOworICAgICAgICBpZiAod2lkdGguaXNBdXRv
KCkpIHsKKyAgICAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgICAgICAgICBhdXRvIG1hcmdpbkxl
ZnQgPSBkaXNwbGF5Qm94Lm1hcmdpbkxlZnQoKTsKKyAgICAgICAgICAgIGF1dG8gbWFyZ2luUmln
aHQgPSBkaXNwbGF5Qm94Lm1hcmdpblJpZ2h0KCk7CiAKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVk
V2lkdGhWYWx1ZTsKLSAgICBhdXRvIHdpZHRoID0gc3R5bGUubG9naWNhbFdpZHRoKCk7Ci0gICAg
aWYgKHdpZHRoLmlzQXV0bygpKSB7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0
Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7Ci0gICAgICAgIGF1dG8g
bWFyZ2luTGVmdCA9IGRpc3BsYXlCb3gubWFyZ2luTGVmdCgpOwotICAgICAgICBhdXRvIG1hcmdp
blJpZ2h0ID0gZGlzcGxheUJveC5tYXJnaW5SaWdodCgpOworICAgICAgICAgICAgYXV0byBwYWRk
aW5nTGVmdCA9IGRpc3BsYXlCb3gucGFkZGluZ0xlZnQoKTsKKyAgICAgICAgICAgIGF1dG8gcGFk
ZGluZ1JpZ2h0ID0gZGlzcGxheUJveC5wYWRkaW5nUmlnaHQoKTsKIAotICAgICAgICBhdXRvIHBh
ZGRpbmdMZWZ0ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpOwotICAgICAgICBhdXRvIHBhZGRp
bmdSaWdodCA9IGRpc3BsYXlCb3gucGFkZGluZ1JpZ2h0KCk7CisgICAgICAgICAgICBhdXRvIGJv
cmRlckxlZnQgPSBkaXNwbGF5Qm94LmJvcmRlckxlZnQoKTsKKyAgICAgICAgICAgIGF1dG8gYm9y
ZGVyUmlnaHQgPSBkaXNwbGF5Qm94LmJvcmRlclJpZ2h0KCk7CiAKLSAgICAgICAgYXV0byBib3Jk
ZXJMZWZ0ID0gZGlzcGxheUJveC5ib3JkZXJMZWZ0KCk7Ci0gICAgICAgIGF1dG8gYm9yZGVyUmln
aHQgPSBkaXNwbGF5Qm94LmJvcmRlclJpZ2h0KCk7CisgICAgICAgICAgICBjb21wdXRlZFdpZHRo
VmFsdWUgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtIChtYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCAr
IHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyBtYXJnaW5SaWdodCk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY29tcHV0ZWRXaWR0aFZhbHVlID0gdmFsdWVG
b3JMZW5ndGgod2lkdGgsIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKIAotICAgICAgICBjb21wdXRl
ZFdpZHRoVmFsdWUgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtIChtYXJnaW5MZWZ0ICsgYm9yZGVy
TGVmdCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyBtYXJnaW5S
aWdodCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGNvbXB1dGVkV2lkdGhWYWx1ZSA9IHZhbHVlRm9y
TGVuZ3RoKHdpZHRoLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgICAgIHJldHVybiBjb21w
dXRlZFdpZHRoVmFsdWU7CisgICAgfTsKIAotICAgIHJldHVybiBjb21wdXRlZFdpZHRoVmFsdWU7
CisgICAgYXV0byBjb21wdXRlZFdpZHRoID0gY29tcHV0ZSgpOworICAgIGlmICghaXNTdHJldGNo
ZWRUb1ZpZXdwb3J0KGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBjb21wdXRlZFdpZHRoOwor
ICAgIGF1dG8gaW5pdGlhbENvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSktPmNv
bnRlbnRCb3goKS53aWR0aCgpOworICAgIHJldHVybiBzdGQ6Om1heChjb21wdXRlZFdpZHRoLCBp
bml0aWFsQ29udGFpbmluZ0Jsb2NrV2lkdGgpOwogfQogCiBMYXlvdXRQb2ludCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljUG9zaXRpb24oTGF5b3V0Q29udGV4dCYgbGF5
b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKaW5kZXggZDdkNTU4NDdlZmNkODViYjAx
NTRmNDk2ZDFhMDFiNWNlOTcxYjk0YS4uZDBjOGI5ZTQwZjE2MWY2MmE5N2FlMTdmMGE1NWUzY2Uy
YWE1N2FiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNw
bGF5Qm94LmNwcApAQCAtNTYsNyArNTYsNyBAQCBCb3g6OlJlY3QgQm94OjptYXJnaW5Cb3goKSBj
b25zdAogICAgIGF1dG8gbWFyZ2luQm94ID0gYm9yZGVyQm94KCk7CiAKICAgICBtYXJnaW5Cb3gu
c2hpZnRMZWZ0VG8obWFyZ2luQm94LmxlZnQoKSArIG1fbWFyZ2luLmxlZnQpOwotICAgIG1hcmdp
bkJveC5zaGlmdEJvdHRvbVRvKG1hcmdpbkJveC50b3AoKSArIG1fbWFyZ2luLnRvcCk7CisgICAg
bWFyZ2luQm94LnNoaWZ0VG9wVG8obWFyZ2luQm94LnRvcCgpICsgbV9tYXJnaW4udG9wKTsKICAg
ICBtYXJnaW5Cb3guc2hpZnRSaWdodFRvKG1hcmdpbkJveC5yaWdodCgpIC0gbV9tYXJnaW4ucmln
aHQpOwogICAgIG1hcmdpbkJveC5zaGlmdEJvdHRvbVRvKG1hcmdpbkJveC5ib3R0b20oKSAtIG1f
bWFyZ2luLmJvdHRvbSk7CiAKQEAgLTg1LDcgKzg1LDcgQEAgQm94OjpSZWN0IEJveDo6cGFkZGlu
Z0JveCgpIGNvbnN0CiAKICAgICBwYWRkaW5nQm94LnNoaWZ0TGVmdFRvKHBhZGRpbmdCb3gubGVm
dCgpICsgbV9ib3JkZXIubGVmdCk7CiAgICAgcGFkZGluZ0JveC5zaGlmdFRvcFRvKHBhZGRpbmdC
b3gudG9wKCkgKyBtX2JvcmRlci50b3ApOwotICAgIHBhZGRpbmdCb3guc2hpZnRSaWdodFRvKHBh
ZGRpbmdCb3gubGVmdCgpIC0gbV9ib3JkZXIucmlnaHQpOworICAgIHBhZGRpbmdCb3guc2hpZnRS
aWdodFRvKHBhZGRpbmdCb3gucmlnaHQoKSAtIG1fYm9yZGVyLnJpZ2h0KTsKICAgICBwYWRkaW5n
Qm94LnNoaWZ0Qm90dG9tVG8ocGFkZGluZ0JveC5ib3R0b20oKSAtIG1fYm9yZGVyLmJvdHRvbSk7
CiAKICAgICByZXR1cm4gcGFkZGluZ0JveDsKQEAgLTEwNSw4ICsxMDUsOCBAQCBCb3g6OlJlY3Qg
Qm94Ojpjb250ZW50Qm94KCkgY29uc3QKIAogICAgIGNvbnRlbnRCb3guc2hpZnRMZWZ0VG8oY29u
dGVudEJveC5sZWZ0KCkgKyBtX3BhZGRpbmcubGVmdCk7CiAgICAgY29udGVudEJveC5zaGlmdFRv
cFRvKGNvbnRlbnRCb3gudG9wKCkgKyBtX3BhZGRpbmcudG9wKTsKLSAgICBjb250ZW50Qm94LnNo
aWZ0Qm90dG9tVG8oY29udGVudEJveC5ib3R0b20oKSAtIG1fcGFkZGluZy5ib3R0b20pOwogICAg
IGNvbnRlbnRCb3guc2hpZnRSaWdodFRvKGNvbnRlbnRCb3gucmlnaHQoKSAtIG1fcGFkZGluZy5y
aWdodCk7CisgICAgY29udGVudEJveC5zaGlmdEJvdHRvbVRvKGNvbnRlbnRCb3guYm90dG9tKCkg
LSBtX3BhZGRpbmcuYm90dG9tKTsKIAogICAgIHJldHVybiBjb250ZW50Qm94OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKaW5kZXggOTY2OWI5
NDQwZWIyNGEzYzEyZDQ0YTE1ZDRmYTdmMDc5NTAwY2UwZS4uNTQwMzE4YTBlMzI0ZmEzYzM4ZjE4
OTlmMWVkMTU2OWY4Yzg4ZTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRCb3guY3BwCkBAIC0xODEsNiArMTgxLDE4IEBAIGJvb2wgQm94Ojppc0luaXRp
YWxDb250YWluaW5nQmxvY2soKSBjb25zdAogICAgIHJldHVybiAhcGFyZW50KCk7CiB9CiAKK2Jv
b2wgQm94Ojppc0RvY3VtZW50Qm94KCkgY29uc3QKK3sKKyAgICAvLyByZXR1cm4gZG9jdW1lbnQo
KS5kb2N1bWVudEVsZW1lbnQoKSA9PSAmZWxlbWVudCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBCb3g6OmlzQm9keUJveCgpIGNvbnN0Cit7CisgICAgLy8gcmV0dXJuIGVsZW1lbnQo
KS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZyk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiBjb25zdCBCb3gqIEJveDo6bmV4dEluRmxvd1NpYmxpbmcoKSBjb25zdAogewogICAgIGlmIChh
dXRvKiBuZXh0U2libGluZyA9IHRoaXMtPm5leHRTaWJsaW5nKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKaW5kZXggMWUwYjg1ZmZkZTkxMzY4YjY5
ODJjZTExNmM4MmMxM2ExYzI5ZDIxZS4uZjk4MjE0YzE1MzM0YmI3MWFhM2RjNTk3OWFlZWU5MzJh
YjI4NmE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmgKQEAgLTc0LDYgKzc0LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNCbG9ja0NvbnRhaW5lckJv
eCgpIGNvbnN0OwogICAgIGJvb2wgaXNJbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29uc3Q7CiAK
KyAgICBib29sIGlzRG9jdW1lbnRCb3goKSBjb25zdDsKKyAgICBib29sIGlzQm9keUJveCgpIGNv
bnN0OworCiAgICAgY29uc3QgQ29udGFpbmVyKiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmVudDsgfQogICAgIGNvbnN0IEJveCogbmV4dFNpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX25l
eHRTaWJsaW5nOyB9CiAgICAgY29uc3QgQm94KiBuZXh0SW5GbG93U2libGluZygpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaAppbmRleCBiZjg0
OTY1NWFlYzk5OTgzZDQxOTE3YjBjMWFhMTYyZTZmMGRiNTI0Li42ZjdmODIxZWE2MjY2MDVlODRj
OTk1NjAyOTBjODdiMmU0MjdmMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQm9yZGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQm9yZGVyVmFsdWUuaApAQCAtNzIsNiArNzIsOCBAQCBwdWJsaWM6CiAKICAgICBmbG9hdCB3
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KICAgICBCb3JkZXJTdHlsZSBzdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJvcmRlclN0eWxlPihtX3N0eWxlKTsgfQorICAg
IAorICAgIGZsb2F0IGJveE1vZGVsV2lkdGgoKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIGZs
b2F0IG1fd2lkdGggeyAzIH07CkBAIC04Myw0ICs4NSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdW5z
aWduZWQgbV9pc0F1dG8gOiAxOyAvLyBPdXRsaW5lSXNBdXRvCiB9OwogCitpbmxpbmUgZmxvYXQg
Qm9yZGVyVmFsdWU6OmJveE1vZGVsV2lkdGgoKSBjb25zdAoreworICAgIGF1dG8gc3R5bGUgPSB0
aGlzLT5zdHlsZSgpOworICAgIGlmIChzdHlsZSA9PSBCb3JkZXJTdHlsZTo6Tm9uZSB8fCBzdHls
ZSA9PSBCb3JkZXJTdHlsZTo6SGlkZGVuKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVy
biB3aWR0aCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>