<?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>205584</bug_id>
          
          <creation_ts>2019-12-24 20:27:34 -0800</creation_ts>
          <short_desc>[LFC][IFC] Forward scan for soft wrap opportunities</short_desc>
          <delta_ts>2019-12-25 09:51:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>dino</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>1601432</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-12-24 20:27:34 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601433</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-24 20:27:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/58188386&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601434</commentid>
    <comment_count>2</comment_count>
      <attachid>386396</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-12-24 20:30:16 -0800</bug_when>
    <thetext>Created attachment 386396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601449</commentid>
    <comment_count>3</comment_count>
      <attachid>386402</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-12-24 22:53:56 -0800</bug_when>
    <thetext>Created attachment 386402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601480</commentid>
    <comment_count>4</comment_count>
      <attachid>386402</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-25 07:52:35 -0800</bug_when>
    <thetext>Comment on attachment 386402
Patch

Clearing flags on attachment: 386402

Committed r253909: &lt;https://trac.webkit.org/changeset/253909&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601481</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-25 07:52:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601486</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-12-25 09:49:56 -0800</bug_when>
    <thetext>Committed r253909: &lt;https://trac.webkit.org/changeset/253909&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601487</commentid>
    <comment_count>7</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-12-25 09:51:10 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #6)
&gt; Committed r253909: &lt;https://trac.webkit.org/changeset/253909&gt;

Oops. Ran mark-bug-fixed before committing :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386396</attachid>
            <date>2019-12-24 20:30:16 -0800</date>
            <delta_ts>2019-12-24 22:53:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205584-20191224203015.patch</filename>
            <type>text/plain</type>
            <size>44501</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJmYzMwOWRiYzZkMGFl
MWY2N2IxYTViMTQzNDk0NDY1ZDQwNDJiOC4uOTczMjI3ZjliMDYwOGUzZTE2Mjg3ODg5ZDlhMzRl
YjNiZDEwNzM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTEyLTI0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBGb3J3YXJk
IHNjYW4gZm9yIHNvZnQgd3JhcCBvcHBvcnR1bml0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1ODQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU4MTg4Mzg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdJUC4KKworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVC
cmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJyZWFrZXI6OmJyZWFr
aW5nQ29udGV4dEZvcklubGluZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpl
bmRzV2l0aFNvZnRXcmFwT3Bwb3J0dW5pdHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpp
c0F0U29mdFdyYXBPcHBvcnR1bml0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVC
cmVha2VyOjpuZXh0V3JhcE9wcG9ydHVuaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZUJyZWFrZXI6OkNvbnRpbm91c0NvbnRlbnQ6OkNvbnRpbm91c0NvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnJlYWtlcjo6Q29udGlub3VzQ29udGVudDo6bGFzdENv
bnRlbnRSdW5JbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCcmVh
a2VyOjpsYXN0U29mdFdyYXBPcHBvcnR1bml0eSk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuaDoKKyAgICAgICAgKiBsYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjppc1Zpc3VhbGx5Tm9uRW1wdHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6aGFzRW1w
dHlUZXh0Q29udGVudCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJ1aWxkZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVUZXh0SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJ
dGVtOjppc0VtcHR5Q29udGVudCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lVGV4dEl0ZW0uaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9MaW5lTGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRp
bm91c0NvbnRlbnQ6OmlzTGluZUJyZWFrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Q29udGlub3VzQ29udGVudDo6c2V0SXNMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6bGF5b3V0TGluZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0OjpuZXh0Q29udGlub3VzQ29udGVudEZvckxpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6YWRkRmxvYXRJ
dGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0OjpwbGFj
ZUlubGluZUNvbnRlbnRPbkN1cnJlbnRMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Q29udGlub3VzQ29udGVudDo6ZW5kc1dpdGhMaW5lQnJlYWsgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250aW5vdXNDb250ZW50OjpzZXRFbmRzV2l0aExpbmVC
cmVhayk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxh
eW91dENvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy90ZXh0L1Rl
eHRVdGlsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGV4dFV0aWw6OndpZHRoKToK
KwogMjAxOS0xMi0yMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtMRkNdW0ludGVncmF0aW9uXSBEbyBub3QgcmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2Ugd2hl
biBpdCBpcyBmb2xsb3dlZCBieSBhIGxpbmUgYnJlYWsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcApp
bmRleCAzODliMTNiMjA2ODMwNTg5MTkwYzc3ZDUyNTg0ZDhjOGQ2M2E3N2VkLi5hMjcyNDkxNjVh
YzYxMjZkNjU3MzZkNjczNmQxNGY1N2QwOGM4YTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuY3Bw
CkBAIC02OCwyNiArNjgsMjggQEAgTGluZUJyZWFrZXI6OkJyZWFraW5nQ29udGV4dCBMaW5lQnJl
YWtlcjo6YnJlYWtpbmdDb250ZXh0Rm9ySW5saW5lQ29udGVudChjb25zdAogewogICAgIEFTU0VS
VCghY2FuZGlkYXRlUnVucy5pc0VtcHR5KCkpOwogICAgIGlmIChjYW5kaWRhdGVSdW5zLndpZHRo
KCkgPD0gbGluZVN0YXR1cy5hdmFpbGFibGVXaWR0aCkKLSAgICAgICAgcmV0dXJuIHsgQnJlYWtp
bmdDb250ZXh0OjpDb250ZW50V3JhcHBpbmdSdWxlOjpLZWVwLCB7IH0gfTsKKyAgICAgICAgcmV0
dXJuIHsgQnJlYWtpbmdDb250ZXh0OjpDb250ZW50V3JhcHBpbmdSdWxlOjpLZWVwLCBJc0VuZE9m
TGluZTo6Tm8sIHsgfSB9OwogICAgIGlmIChjYW5kaWRhdGVSdW5zLmhhc1RyYWlsaW5nQ29sbGFw
c2libGVDb250ZW50KCkpIHsKKyAgICAgICAgQVNTRVJUKGNhbmRpZGF0ZVJ1bnMuaGFzVGV4dENv
bnRlbnRPbmx5KCkpOworICAgICAgICBhdXRvIElzRW5kT2ZMaW5lID0gaXNUZXh0Q29udGVudFdy
YXBwaW5nQWxsb3dlZChjYW5kaWRhdGVSdW5zLnJ1bnMoKS5sYXN0KCkuaW5saW5lSXRlbS5zdHls
ZSgpKSA/IElzRW5kT2ZMaW5lOjpZZXMgOiBJc0VuZE9mTGluZTo6Tm87CiAgICAgICAgIC8vIEZp
cnN0IGNoZWNrIGlmIHRoZSBjb250ZW50IGZpdHMgd2l0aG91dCB0aGUgdHJhaWxpbmcgY29sbGFw
c2libGUgcGFydC4KICAgICAgICAgaWYgKGNhbmRpZGF0ZVJ1bnMubm9uQ29sbGFwc2libGVXaWR0
aCgpIDw9IGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGgpCi0gICAgICAgICAgICByZXR1cm4geyBC
cmVha2luZ0NvbnRleHQ6OkNvbnRlbnRXcmFwcGluZ1J1bGU6OktlZXAsIHsgfSB9OworICAgICAg
ICAgICAgcmV0dXJuIHsgQnJlYWtpbmdDb250ZXh0OjpDb250ZW50V3JhcHBpbmdSdWxlOjpLZWVw
T3ZlcmZsb3csIElzRW5kT2ZMaW5lLCB7IH0gfTsKICAgICAgICAgLy8gTm93IGNoZWNrIGlmIHdl
IGNhbiB0cmltIHRoZSBsaW5lIHRvby4KICAgICAgICAgaWYgKGxpbmVTdGF0dXMubGluZUhhc0Z1
bGx5Q29sbGFwc2libGVUcmFpbGluZ1J1biAmJiBjYW5kaWRhdGVSdW5zLmlzVHJhaWxpbmdDb250
ZW50RnVsbHlDb2xsYXBzaWJsZSgpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGlzIG5ldyBjb250
ZW50IGlzIGZ1bGx5IGNvbGxhcHNpYmxlLCBpdCBzaG91ZCBzdXJlbHkgZml0LgotICAgICAgICAg
ICAgcmV0dXJuIHsgQnJlYWtpbmdDb250ZXh0OjpDb250ZW50V3JhcHBpbmdSdWxlOjpLZWVwLCB7
IH0gfTsKKyAgICAgICAgICAgIHJldHVybiB7IEJyZWFraW5nQ29udGV4dDo6Q29udGVudFdyYXBw
aW5nUnVsZTo6S2VlcE92ZXJmbG93LCBJc0VuZE9mTGluZSwgeyB9IH07CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgaWYgKGxpbmVTdGF0dXMuY29sbGFwc2libGVXaWR0aCAmJiBjYW5kaWRhdGVSdW5z
Lmhhc05vbkNvbnRlbnRSdW5zT25seSgpKSB7Ci0gICAgICAgIC8vIExldCdzIHNlZSBpZiB0aGUg
bm9uLWNvbnRlbnQgcnVucyBmaXQgd2hlbiB0aGUgbGluZSBoYXMgdHJhaWxpbmcgY29sbGFwc2li
bGUgY29udGVudAorICAgICAgICAvLyBMZXQncyBzZWUgaWYgdGhlIG5vbi1jb250ZW50IHJ1bnMg
Zml0IHdoZW4gdGhlIGxpbmUgaGFzIHRyYWlsaW5nIGNvbGxhcHNpYmxlIGNvbnRlbnQuCiAgICAg
ICAgIC8vICJ0ZXh0IGNvbnRlbnQgPHNwYW4gc3R5bGU9InBhZGRpbmc6IDFweCI+PC9zcGFuPiIg
PC0gdGhlIDxzcGFuPjwvc3Bhbj4gcnVucyBjb3VsZCBmaXQgYWZ0ZXIgY29sbGFwc2luZyB0aGUg
dHJhaWxpbmcgd2hpdGVzcGFjZS4KICAgICAgICAgaWYgKGNhbmRpZGF0ZVJ1bnMud2lkdGgoKSA8
PSBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoICsgbGluZVN0YXR1cy5jb2xsYXBzaWJsZVdpZHRo
KQotICAgICAgICAgICAgcmV0dXJuIHsgQnJlYWtpbmdDb250ZXh0OjpDb250ZW50V3JhcHBpbmdS
dWxlOjpLZWVwLCB7IH0gfTsKKyAgICAgICAgICAgIHJldHVybiB7IEJyZWFraW5nQ29udGV4dDo6
Q29udGVudFdyYXBwaW5nUnVsZTo6S2VlcE92ZXJmbG93LCBJc0VuZE9mTGluZTo6Tm8sIHsgfSB9
OwogICAgIH0KICAgICBpZiAoY2FuZGlkYXRlUnVucy5pc1Zpc3VhbGx5RW1wdHlXaGl0ZXNwYWNl
Q29udGVudE9ubHkoKSAmJiBzaG91bGRLZWVwRW5kT2ZMaW5lV2hpdGVzcGFjZShjYW5kaWRhdGVS
dW5zKSkgewogICAgICAgICAvLyBUaGlzIG92ZXJmbG93aW5nIGNvbnRlbnQgYXBwYXJlbnRseSBm
YWxscyBpbnRvIHRoZSByZW1vdmUvaGFuZyBlbmQtb2YtbGluZS1zcGFjZXMgY2F0ZXJnb3J5Lgog
ICAgICAgICAvLyBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10ZXh0LTMvI3doaXRlLXNw
YWNlLXByb3BlcnR5IG1hdHJpeAotICAgICAgICByZXR1cm4geyBCcmVha2luZ0NvbnRleHQ6OkNv
bnRlbnRXcmFwcGluZ1J1bGU6OktlZXAsIHsgfSB9OworICAgICAgICByZXR1cm4geyBCcmVha2lu
Z0NvbnRleHQ6OkNvbnRlbnRXcmFwcGluZ1J1bGU6OktlZXBPdmVyZmxvdywgSXNFbmRPZkxpbmU6
Ok5vLCB7IH0gfTsKICAgICB9CiAKICAgICBpZiAoY2FuZGlkYXRlUnVucy5oYXNUZXh0Q29udGVu
dE9ubHkoKSkgewpAQCAtOTgsMjUgKzEwMCwyNyBAQCBMaW5lQnJlYWtlcjo6QnJlYWtpbmdDb250
ZXh0IExpbmVCcmVha2VyOjpicmVha2luZ0NvbnRleHRGb3JJbmxpbmVDb250ZW50KGNvbnN0CiAg
ICAgICAgICAgICAgICAgLy8gMS4gUHVzaCB0aGUgY29udGVudCBvdmVyIHRvIHRoZSBuZXh0IGxp
bmUgd2hlbiB3ZSd2ZSBnb3QgY29udGVudCBvbiB0aGUgbGluZSBhbHJlYWR5LgogICAgICAgICAg
ICAgICAgIC8vIDIuIEtlZXAgdGhlIGZpcnN0IGNoYXJhY3RlciBvbiB0aGUgZW1wdHkgbGluZSAo
b3Iga2VlcCB0aGUgd2hvbGUgcnVuIGlmIGl0IGhhcyBvbmx5IG9uZSBjaGFyYWN0ZXIpLgogICAg
ICAgICAgICAgICAgIGlmICghbGluZVN0YXR1cy5saW5lSXNFbXB0eSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHsgQnJlYWtpbmdDb250ZXh0OjpDb250ZW50V3JhcHBpbmdSdWxlOjpQdXNo
LCB7IH0gfTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgQnJlYWtpbmdDb250ZXh0OjpD
b250ZW50V3JhcHBpbmdSdWxlOjpQdXNoLCBJc0VuZE9mTGluZTo6WWVzLCB7IH0gfTsKICAgICAg
ICAgICAgICAgICBhdXRvIGZpcnN0VGV4dFJ1bkluZGV4ID0gKmNhbmRpZGF0ZVJ1bnMuZmlyc3RU
ZXh0UnVuSW5kZXgoKTsKICAgICAgICAgICAgICAgICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRv
d25jYXN0PElubGluZVRleHRJdGVtPihydW5zW2ZpcnN0VGV4dFJ1bkluZGV4XS5pbmxpbmVJdGVt
KTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkpOwogICAg
ICAgICAgICAgICAgIGlmIChpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSA9PSAxKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4geyBCcmVha2luZ0NvbnRleHQ6OkNvbnRlbnRXcmFwcGluZ1J1bGU6
OktlZXAsIHsgfSB9OworICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBCcmVha2luZ0NvbnRl
eHQ6OkNvbnRlbnRXcmFwcGluZ1J1bGU6OktlZXBPdmVyZmxvdywgSXNFbmRPZkxpbmU6Olllcywg
eyB9IH07CiAgICAgICAgICAgICAgICAgYXV0byBmaXJzdENoYXJhY3RlcldpZHRoID0gVGV4dFV0
aWw6OndpZHRoKGlubGluZVRleHRJdGVtLCBpbmxpbmVUZXh0SXRlbS5zdGFydCgpLCBpbmxpbmVU
ZXh0SXRlbS5zdGFydCgpICsgMSk7CiAgICAgICAgICAgICAgICAgYXV0byBmaXJzdENoYXJhY3Rl
clJ1biA9IFBhcnRpYWxSdW4geyAxLCBmaXJzdENoYXJhY3RlcldpZHRoLCBmYWxzZSB9OwotICAg
ICAgICAgICAgICAgIHJldHVybiB7IEJyZWFraW5nQ29udGV4dDo6Q29udGVudFdyYXBwaW5nUnVs
ZTo6U3BsaXQsIEJyZWFraW5nQ29udGV4dDo6UGFydGlhbFRyYWlsaW5nQ29udGVudCB7IGZpcnN0
VGV4dFJ1bkluZGV4LCBmaXJzdENoYXJhY3RlclJ1biB9IH07CisgICAgICAgICAgICAgICAgcmV0
dXJuIHsgQnJlYWtpbmdDb250ZXh0OjpDb250ZW50V3JhcHBpbmdSdWxlOjpTcGxpdCwgSXNFbmRP
ZkxpbmU6OlllcywgQnJlYWtpbmdDb250ZXh0OjpQYXJ0aWFsVHJhaWxpbmdDb250ZW50IHsgZmly
c3RUZXh0UnVuSW5kZXgsIGZpcnN0Q2hhcmFjdGVyUnVuIH0gfTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGF1dG8gc3BsaXRDb250ZW50ID0gQnJlYWtpbmdDb250ZXh0OjpQYXJ0aWFsVHJh
aWxpbmdDb250ZW50IHsgd3JhcHBlZFRleHRDb250ZW50LT50cmFpbGluZ1J1bkluZGV4LCB3cmFw
cGVkVGV4dENvbnRlbnQtPnBhcnRpYWxUcmFpbGluZ1J1biB9OwotICAgICAgICAgICAgcmV0dXJu
IHsgQnJlYWtpbmdDb250ZXh0OjpDb250ZW50V3JhcHBpbmdSdWxlOjpTcGxpdCwgc3BsaXRDb250
ZW50IH07CisgICAgICAgICAgICByZXR1cm4geyBCcmVha2luZ0NvbnRleHQ6OkNvbnRlbnRXcmFw
cGluZ1J1bGU6OlNwbGl0LCBJc0VuZE9mTGluZTo6WWVzLCBzcGxpdENvbnRlbnQgfTsKICAgICAg
ICAgfQotICAgICAgICAvLyBJZiB3ZSBhcmUgbm90IGFsbG93ZWQgdG8gYnJlYWsgdGhpcyBjb250
ZW50LCB3ZSBzdGlsbCBuZWVkIHRvIGRlY2lkZSB3aGV0aGVyIGtlZXAgaXQgb3IgcHVzaCBpdCB0
byB0aGUgbmV4dCBsaW5lLgotICAgICAgICBhdXRvIGNvbnRlbnRTaG91bGRPdmVyZmxvdyA9IGxp
bmVTdGF0dXMubGluZUlzRW1wdHkgfHwgIWlzVGV4dENvbnRlbnRXcmFwcGluZ0FsbG93ZWQocnVu
c1swXS5pbmxpbmVJdGVtLnN0eWxlKCkpOwotICAgICAgICByZXR1cm4geyBjb250ZW50U2hvdWxk
T3ZlcmZsb3cgPyBCcmVha2luZ0NvbnRleHQ6OkNvbnRlbnRXcmFwcGluZ1J1bGU6OktlZXAgOiBC
cmVha2luZ0NvbnRleHQ6OkNvbnRlbnRXcmFwcGluZ1J1bGU6OlB1c2gsIHsgfSB9OwogICAgIH0K
LSAgICAvLyBGaXJzdCBub24tdGV4dCBpbmxpbmUgY29udGVudCBhbHdheXMgc3RheXMgb24gbGlu
ZS4KLSAgICByZXR1cm4geyBsaW5lU3RhdHVzLmxpbmVJc0VtcHR5ID8gQnJlYWtpbmdDb250ZXh0
OjpDb250ZW50V3JhcHBpbmdSdWxlOjpLZWVwIDogQnJlYWtpbmdDb250ZXh0OjpDb250ZW50V3Jh
cHBpbmdSdWxlOjpQdXNoLCB7IH0gfTsKKyAgICAvLyBJZiB3ZSBhcmUgbm90IGFsbG93ZWQgdG8g
YnJlYWsgdGhpcyBjb250ZW50LCB3ZSBzdGlsbCBuZWVkIHRvIGRlY2lkZSB3aGV0aGVyIGtlZXAg
aXQgb3IgcHVzaCBpdCB0byB0aGUgbmV4dCBsaW5lLgorICAgIGF1dG8gY2FuZGlkYXRlUnVuSW5k
ZXggPSBjYW5kaWRhdGVSdW5zLmxhc3RDb250ZW50UnVuSW5kZXgoKS52YWx1ZU9yKGNhbmRpZGF0
ZVJ1bnMuc2l6ZSgpIC0gMSk7CisgICAgYXV0byBpc1dyYXBwaW5nQWxsb3dlZCA9IGlzVGV4dENv
bnRlbnRXcmFwcGluZ0FsbG93ZWQoY2FuZGlkYXRlUnVucy5ydW5zKClbY2FuZGlkYXRlUnVuSW5k
ZXhdLmlubGluZUl0ZW0uc3R5bGUoKSk7CisgICAgYXV0byBjb250ZW50T3ZlcmZsb3dzID0gbGlu
ZVN0YXR1cy5saW5lSXNFbXB0eSB8fCAhaXNXcmFwcGluZ0FsbG93ZWQ7CisgICAgaWYgKCFjb250
ZW50T3ZlcmZsb3dzKQorICAgICAgICByZXR1cm4geyBCcmVha2luZ0NvbnRleHQ6OkNvbnRlbnRX
cmFwcGluZ1J1bGU6OlB1c2gsIElzRW5kT2ZMaW5lOjpZZXMsIHsgfSB9OworICAgIHJldHVybiB7
IEJyZWFraW5nQ29udGV4dDo6Q29udGVudFdyYXBwaW5nUnVsZTo6S2VlcE92ZXJmbG93LCBpc1dy
YXBwaW5nQWxsb3dlZCA/IElzRW5kT2ZMaW5lOjpZZXMgOiBJc0VuZE9mTGluZTo6Tm8sIHsgfSB9
OwogfQogCiBib29sIExpbmVCcmVha2VyOjpzaG91bGRXcmFwRmxvYXRCb3goSW5saW5lTGF5b3V0
VW5pdCBmbG9hdExvZ2ljYWxXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwg
Ym9vbCBsaW5lSXNFbXB0eSkKQEAgLTI1MywyMCArMjU3LDIwIEBAIE9wdGlvbmFsPExpbmVCcmVh
a2VyOjpQYXJ0aWFsUnVuPiBMaW5lQnJlYWtlcjo6dHJ5QnJlYWtpbmdUZXh0UnVuKGNvbnN0IFJ1
biYgb3ZlCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGJvb2wgZW5kc1dpdGhTb2Z0V3Jh
cE9wcG9ydHVuaXR5KGNvbnN0IElubGluZVRleHRJdGVtJiBwcmV2aW91c1RleHRJdGVtLCBjb25z
dCBJbmxpbmVUZXh0SXRlbSYgbmV4dElubGluZVRleHRJdGVtKQorc3RhdGljIGJvb2wgZW5kc1dp
dGhTb2Z0V3JhcE9wcG9ydHVuaXR5KGNvbnN0IElubGluZVRleHRJdGVtJiBjdXJyZW50VGV4dEl0
ZW0sIGNvbnN0IElubGluZVRleHRJdGVtJiBuZXh0SW5saW5lVGV4dEl0ZW0pCiB7CiAgICAgQVNT
RVJUKCFuZXh0SW5saW5lVGV4dEl0ZW0uaXNXaGl0ZXNwYWNlKCkpOworICAgIC8vIFdlIGFyZSBh
dCB0aGUgcG9zaXRpb24gYWZ0ZXIgYSB3aGl0ZXNwYWNlLgorICAgIGlmIChjdXJyZW50VGV4dEl0
ZW0uaXNXaGl0ZXNwYWNlKCkpCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIC8vIFdoZW4gYm90
aCB0aGVzZSBub24td2hpdGVzcGFjZSBydW5zIGJlbG9uZyB0byB0aGUgc2FtZSBsYXlvdXQgYm94
LCBpdCdzIGd1YXJhbnRlZWQgdGhhdAogICAgIC8vIHRoZXkgYXJlIHNwbGl0IGF0IGEgc29mdCBi
cmVha2luZyBvcHBvcnR1bml0eS4gU2VlIElubGluZVRleHRJdGVtOjptb3ZlVG9OZXh0QnJlYWth
YmxlUG9zaXRpb24uCi0gICAgaWYgKCZwcmV2aW91c1RleHRJdGVtLmxheW91dEJveCgpID09ICZu
ZXh0SW5saW5lVGV4dEl0ZW0ubGF5b3V0Qm94KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IC8vIFdlIGFyZSBhdCB0aGUgcG9zaXRpb24gYWZ0ZXIgYSB3aGl0ZXNwYWNlLgotICAgIGlmIChw
cmV2aW91c1RleHRJdGVtLmlzV2hpdGVzcGFjZSgpKQorICAgIGlmICgmY3VycmVudFRleHRJdGVt
LmxheW91dEJveCgpID09ICZuZXh0SW5saW5lVGV4dEl0ZW0ubGF5b3V0Qm94KCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIC8vIE5vdyB3ZSBuZWVkIHRvIGNvbGxlY3QgYXQgbGVhc3QgMyBh
ZGphY2VudCBjaGFyYWN0ZXJzIHRvIGJlIGFibGUgdG8gbWFrZSBhIGRlc2Npc2lvbiB3aGV0aGVy
IHRoZSBwcmV2aW91cyB0ZXh0IGl0ZW0gZW5kcyB3aXRoIGJyZWFraW5nIG9wcG9ydHVuaXR5Lgog
ICAgIC8vIFtleC1dW2FtcGxlXSA8LSBzZWNvbmQgdG8gbGFzdFt4XSBsYXN0Wy1dIGN1cnJlbnRb
YV0KICAgICAvLyBXZSBuZWVkIGF0IGxlYXN0IDEgY2hhcmFjdGVyIGluIHRoZSBjdXJyZW50IGlu
bGluZSB0ZXh0IGl0ZW0gYW5kIDIgbW9yZSBmcm9tIHByZXZpb3VzIGlubGluZSBpdGVtcy4KLSAg
ICBhdXRvIHByZXZpb3VzQ29udGVudCA9IHByZXZpb3VzVGV4dEl0ZW0ubGF5b3V0Qm94KCkudGV4
dENvbnRleHQoKS0+Y29udGVudDsKKyAgICBhdXRvIHByZXZpb3VzQ29udGVudCA9IGN1cnJlbnRU
ZXh0SXRlbS5sYXlvdXRCb3goKS50ZXh0Q29udGV4dCgpLT5jb250ZW50OwogICAgIGF1dG8gbGlu
ZUJyZWFrSXRlcmF0b3IgPSBMYXp5TGluZUJyZWFrSXRlcmF0b3IgeyBuZXh0SW5saW5lVGV4dEl0
ZW0ubGF5b3V0Qm94KCkudGV4dENvbnRleHQoKS0+Y29udGVudCB9OwogICAgIGF1dG8gcHJldmlv
dXNDb250ZW50TGVuZ3RoID0gcHJldmlvdXNDb250ZW50Lmxlbmd0aCgpOwogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgbG9vayBpbnRvIHRoZSBlbnRpcmUgdW5jb21taXR0ZWQgY29udGVudCBmb3Ig
bW9yZSB0ZXh0IGNvbnRleHQuCkBAIC0yNzksMTEwICsyODMsMTE4IEBAIHN0YXRpYyBib29sIGVu
ZHNXaXRoU29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVUZXh0SXRlbSYgcHJldmlvdXNU
ZXh0SXRlbSwKICAgICByZXR1cm4gIVRleHRVdGlsOjpmaW5kTmV4dEJyZWFrYWJsZVBvc2l0aW9u
KGxpbmVCcmVha0l0ZXJhdG9yLCAwLCBuZXh0SW5saW5lVGV4dEl0ZW0uc3R5bGUoKSk7CiB9CiAK
LU9wdGlvbmFsPHNpemVfdD4gTGluZUJyZWFrZXI6Omxhc3RTb2Z0V3JhcE9wcG9ydHVuaXR5KGNv
bnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFJ1bkxpc3QmIHByaW9yQ29udGVudCkK
K3N0YXRpYyBib29sIGlzQXRTb2Z0V3JhcE9wcG9ydHVuaXR5KGNvbnN0IElubGluZUl0ZW0mIGN1
cnJlbnQsIGNvbnN0IElubGluZUl0ZW0mIG5leHQpCiB7CisgICAgLy8gImlzIGF0IiBzaW1wbGUg
bWVhbnMgdGhhdCB0aGVyZSdzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5IHJpZ2h0IGFmdGVyIHRo
ZSBbY3VycmVudF0uCisgICAgLy8gW3RleHRdWyBdW3RleHRdW2NvbnRhaW5lciBzdGFydF0uLi4g
KDxkaXY+dGV4dCBjb250ZW50PHNwYW4+Li48L2Rpdj4pCisgICAgLy8gc29mdCB3cmFwIGluZGV4
ZXM6IDAgYW5kIDEgZGVmaW5pdGVseSwgMiBkZXBlbmRzIG9uIHRoZSBjb250ZW50IGFmdGVyIHRo
ZSBbY29udGFpbmVyIHN0YXJ0XS4KKwogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9j
c3MtdGV4dC0zLyNsaW5lLWJyZWFrLWRldGFpbHMKICAgICAvLyBGaWd1cmUgb3V0IGlmIHRoZSBu
ZXcgaW5jb21pbmcgY29udGVudCBwdXRzIHRoZSB1bmNvbW1pdHRlZCBjb250ZW50IG9uIGEgc29m
dCB3cmFwIG9wcG9ydHVuaXR5LgogICAgIC8vIGUuZy4gW2NvbnRhaW5lciBzdGFydF1bcHJpb3Jf
Y29udGludW91c19jb250ZW50XVtjb250YWluZXIgZW5kXSAoPHNwYW4+cHJpb3JfY29udGludW91
c19jb250ZW50PC9zcGFuPikKICAgICAvLyBBbiBpbmNvbWluZyA8aW1nPiBib3ggd291bGQgZW5h
YmxlIHVzIHRvIGNvbW1pdCB0aGUgIjxzcGFuPnByaW9yX2NvbnRpbnVvdXNfY29udGVudDwvc3Bh
bj4iIGNvbnRlbnQKICAgICAvLyBidXQgYW4gaW5jb21pbmcgdGV4dCBjb250ZW50IHdvdWxkIG5v
dCBuZWNlc3NhcmlseS4KLSAgICBBU1NFUlQoIWlubGluZUl0ZW0uaXNGbG9hdCgpICYmICFpbmxp
bmVJdGVtLmlzTGluZUJyZWFrKCkpOwotICAgIGlmIChwcmlvckNvbnRlbnQuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIC8vIENhbid0IGRlY2lkZSBpdCB5ZXQuCi0gICAgICAgIHJldHVybiB7IH07Cisg
ICAgQVNTRVJUKGN1cnJlbnQuaXNUZXh0KCkgfHwgY3VycmVudC5pc0JveCgpKTsKKyAgICBBU1NF
UlQobmV4dC5pc1RleHQoKSB8fCBuZXh0LmlzQm94KCkpOworICAgIGlmIChjdXJyZW50LmlzQm94
KCkgfHwgbmV4dC5pc0JveCgpKSB7CisgICAgICAgIC8vIFt0ZXh0XVtjb250YWluZXIgc3RhcnRd
W2NvbnRhaW5lciBlbmRdW2lubGluZSBib3hdICh0ZXh0PHNwYW4+PC9zcGFuPjxpbWc+KSA6IHRo
ZXJlJ3MgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkgYmV0d2VlbiB0aGUgW3RleHRdIGFuZCBbaW1n
XS4KKyAgICAgICAgLy8gVGhlIGxpbmUgYnJlYWtpbmcgYmVoYXZpb3Igb2YgYSByZXBsYWNlZCBl
bGVtZW50IG9yIG90aGVyIGF0b21pYyBpbmxpbmUgaXMgZXF1aXZhbGVudCB0byBhbiBpZGVvZ3Jh
cGhpYyBjaGFyYWN0ZXIuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoY3Vy
cmVudC5zdHlsZSgpLmxpbmVCcmVhaygpID09IExpbmVCcmVhazo6QW55d2hlcmUgfHwgbmV4dC5z
dHlsZSgpLmxpbmVCcmVhaygpID09IExpbmVCcmVhazo6QW55d2hlcmUpIHsKKyAgICAgICAgLy8g
VGhlcmUgaXMgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkgYXJvdW5kIGV2ZXJ5IHR5cG9ncmFwaGlj
IGNoYXJhY3RlciB1bml0LCBpbmNsdWRpbmcgYXJvdW5kIGFueSBwdW5jdHVhdGlvbiBjaGFyYWN0
ZXIKKyAgICAgICAgLy8gb3IgcHJlc2VydmVkIHdoaXRlIHNwYWNlcywgb3IgaW4gdGhlIG1pZGRs
ZSBvZiB3b3Jkcy4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGF1dG8mIGN1cnJl
bnRJbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihjdXJyZW50KTsKKyAg
ICBhdXRvJiBuZXh0SW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4obmV4
dCk7CisgICAgaWYgKGN1cnJlbnRJbmxpbmVUZXh0SXRlbS5pc1doaXRlc3BhY2UoKSkgeworICAg
ICAgICAvLyBbIF1bdGV4dF0gOiBhZnRlciBbd2hpdGVzcGFjZV0gcG9zaXRpb24gaXMgYSBzb2Z0
IHdyYXAgb3Bwb3J0dW5pdHkuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAo
bmV4dElubGluZVRleHRJdGVtLmlzV2hpdGVzcGFjZSgpKSB7CisgICAgICAgIC8vIFt0ZXh0XVsg
XSAoPHNwYW4+dGV4dDwvc3Bhbj4gKQorICAgICAgICAvLyB3aGl0ZS1zcGFjZTogYnJlYWstc3Bh
Y2VzOiBsaW5lIGJyZWFraW5nIG9wcG9ydHVuaXR5IGV4aXN0cyBhZnRlciBldmVyeSBwcmVzZXJ2
ZWQgd2hpdGUgc3BhY2UgY2hhcmFjdGVyLCBidXQgbm90IGJlZm9yZS4KKyAgICAgICAgcmV0dXJu
IG5leHRJbmxpbmVUZXh0SXRlbS5zdHlsZSgpLndoaXRlU3BhY2UoKSAhPSBXaGl0ZVNwYWNlOjpC
cmVha1NwYWNlczsKICAgICB9CisgICAgLy8gQm90aCBjdXJyZW50IGFuZCBuZXh0IGl0ZW1zIGFy
ZSBub24td2hpdGVzcGFjZSB0ZXh0LgorICAgIC8vIFt0ZXh0XVt0ZXh0XSA6IGlzIGEgY29udGlu
dW91cyBjb250ZW50LgorICAgIC8vIFt0ZXh0LV1bdGV4dF0gOiBhZnRlciBbaHlwaGVuXSBwb3Np
dGlvbiBpcyBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eS4KKyAgICByZXR1cm4gZW5kc1dpdGhTb2Z0
V3JhcE9wcG9ydHVuaXR5KGN1cnJlbnRJbmxpbmVUZXh0SXRlbSwgbmV4dElubGluZVRleHRJdGVt
KTsKK30KIAotICAgIGF1dG8gbGFzdElubGluZUl0ZW1XaXRoQ29udGVudCA9IFsmXSAoKSAtPiBj
b25zdCBJbmxpbmVJdGVtKiB7Ci0gICAgICAgIGZvciAoYXV0byYgcHJldmlvdXNSdW4gOiBXVEY6
Om1ha2VSZXZlcnNlZFJhbmdlKHByaW9yQ29udGVudCkpIHsKLSAgICAgICAgICAgIGF1dG8mIHBy
ZXZpb3VzSW5saW5lSXRlbSA9IHByZXZpb3VzUnVuLmlubGluZUl0ZW07Ci0gICAgICAgICAgICBp
ZiAocHJldmlvdXNJbmxpbmVJdGVtLmlzVGV4dCgpIHx8IHByZXZpb3VzSW5saW5lSXRlbS5pc0Jv
eCgpKQotICAgICAgICAgICAgICAgIHJldHVybiAmcHJldmlvdXNJbmxpbmVJdGVtOwotICAgICAg
ICAgICAgQVNTRVJUKHByZXZpb3VzSW5saW5lSXRlbS5pc0NvbnRhaW5lclN0YXJ0KCkgfHwgcHJl
dmlvdXNJbmxpbmVJdGVtLmlzQ29udGFpbmVyRW5kKCkpOworc2l6ZV90IExpbmVCcmVha2VyOjpu
ZXh0V3JhcE9wcG9ydHVuaXR5KGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCB1bnNp
Z25lZCBzdGFydEluZGV4KQoreworICAgIC8vIDEuIEZpbmQgdGhlIHN0YXJ0IGNhbmRpZGF0ZSBi
eSBza2lwcGluZyBsZWFkaW5nIG5vbi1jb250ZW50IGl0ZW1zIGUuZyA8c3Bhbj48c3Bhbj5zdGFy
dCA6IHNraXAgIjxzcGFuPjxzcGFuPiIKKyAgICAvLyAyLiBGaW5kIHRoZSBlbmQgY2FuZGlkYXRl
IGJ5IHNraXBwaW5nIG5vbi1jb250ZW50IGl0ZW1zIGluYmV0d2VlbiBlLmcuIDxzcGFuPjxzcGFu
PnN0YXJ0PC9zcGFuPmVuZDogc2tpcCAiPC9zcGFuPiIKKyAgICAvLyAzLiBDaGVjayBpZiB0aGVy
ZSdzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5IGJldHdlZW4gdGhlIDIgY2FuZGlkYXRlIGlubGlu
ZSBpdGVtcyBhbmQgcmVwZWF0LgorICAgIC8vIDQuIEFueSBmb3JjZSBsaW5lIGJyZWFrIGluYmV0
d2VlbiBpcyBjb25zaWRlcmVkIGFzIGEgd3JhcCBvcHBvcnR1bml0eS4KKworICAgIC8vIFtleC1d
W2NvbnRhaW5lciBzdGFydF1bY29udGFpbmVyIGVuZF1bZmxvYXRdW2FtcGxlXSAoZXgtPHNwYW4+
PC9zcGFuPjxkaXYgc3R5bGU9ImZsb2F0OmxlZnQiPjwvZGl2PmFtcGxlKSA6IHdyYXAgaW5kZXgg
aXMgYXQgW2V4LV0uCisgICAgLy8gW2V4XVtjb250YWluZXIgc3RhcnRdW2FtcC1dW2NvbnRhaW5l
ciBzdGFydF1bbGVdIChleDxzcGFuPmFtcC08c3Bhbj5hbXBsZSkgOiB3cmFwIGluZGV4IGlzIGF0
IFthbXAtXS4KKyAgICAvLyBbZXgtXVtjb250YWluZXIgc3RhcnRdW2xpbmUgYnJlYWtdW2FtcGxl
XSAoZXgtPHNwYW4+PGJyPmFtcGxlKSA6IHdyYXAgaW5kZXggaXMgYWZ0ZXIgW2JyXS4KKyAgICBh
dXRvIGVuZCA9IGlubGluZUNvbnRlbnQuc2l6ZSgpOworCisgICAgc3RydWN0IFdyYXBDb250ZW50
IHsKKyAgICAgICAgV3JhcENvbnRlbnQoc2l6ZV90IGluZGV4LCBib29sIGlzQXRMaW5lQnJlYWsp
CisgICAgICAgICAgICA6IG1faW5kZXgoaW5kZXgpCisgICAgICAgICAgICAsIG1faXNBdExpbmVC
cmVhayhpc0F0TGluZUJyZWFrKQorICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfTsKKyAgICAgICAgc2l6ZV90IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0
dXJuIG1faW5kZXg7IH0KKyAgICAgICAgYm9vbCBpc0F0TGluZUJyZWFrKCkgY29uc3QgeyByZXR1
cm4gbV9pc0F0TGluZUJyZWFrOyB9CiAKLSAgICBhdXRvKiBsYXN0VW5jb21pdHRlZENvbnRlbnQg
PSAmcHJpb3JDb250ZW50Lmxhc3QoKS5pbmxpbmVJdGVtOwotICAgIGlmIChpbmxpbmVJdGVtLmlz
VGV4dCgpKSB7Ci0gICAgICAgIGlmIChpbmxpbmVJdGVtLnN0eWxlKCkubGluZUJyZWFrKCkgPT0g
TGluZUJyZWFrOjpBbnl3aGVyZSkgewotICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBzb2Z0IHdy
YXAgb3Bwb3J0dW5pdHkgYXJvdW5kIGV2ZXJ5IHR5cG9ncmFwaGljIGNoYXJhY3RlciB1bml0LCBp
bmNsdWRpbmcgYXJvdW5kIGFueSBwdW5jdHVhdGlvbiBjaGFyYWN0ZXIKLSAgICAgICAgICAgIC8v
IG9yIHByZXNlcnZlZCB3aGl0ZSBzcGFjZXMsIG9yIGluIHRoZSBtaWRkbGUgb2Ygd29yZHMuCi0g
ICAgICAgICAgICByZXR1cm4gcHJpb3JDb250ZW50LnNpemUoKTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pLmlzV2hpdGVzcGFjZSgp
KSB7Ci0gICAgICAgICAgICAvLyBbcHJpb3IgY29udGVudF1bIF0gKDxzcGFuPnNvbWVfY29udGVu
dDwvc3Bhbj4gKQotICAgICAgICAgICAgLy8gd2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlczogbGlu
ZSBicmVha2luZyBvcHBvcnR1bml0eSBleGlzdHMgYWZ0ZXIgZXZlcnkgcHJlc2VydmVkIHdoaXRl
IHNwYWNlIGNoYXJhY3RlciwgYnV0IG5vdCBiZWZvcmUuCi0gICAgICAgICAgICBhdXRvIGlzQXRT
b2Z0V3JhcE9wcG9ydHVuaXR5QmVmb3JlV2hpdGVzcGFjZSA9IGlubGluZUl0ZW0uc3R5bGUoKS53
aGl0ZVNwYWNlKCkgIT0gV2hpdGVTcGFjZTo6QnJlYWtTcGFjZXM7Ci0gICAgICAgICAgICAvLyBb
IF1bIF0gOiBhZGphY2VudCB3aGl0ZXNwYWNlIGNvbnRlbnQgaGFzIHNvZnQgd3JhcCBvcHBvcnR1
bml0eS4KLSAgICAgICAgICAgIGlmIChsYXN0VW5jb21pdHRlZENvbnRlbnQtPmlzVGV4dCgpICYm
IGRvd25jYXN0PElubGluZVRleHRJdGVtPigqbGFzdFVuY29taXR0ZWRDb250ZW50KS5pc1doaXRl
c3BhY2UoKSkKLSAgICAgICAgICAgICAgICBpc0F0U29mdFdyYXBPcHBvcnR1bml0eUJlZm9yZVdo
aXRlc3BhY2UgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGlzQXRTb2Z0V3JhcE9wcG9ydHVu
aXR5QmVmb3JlV2hpdGVzcGFjZSA/IG1ha2VPcHRpb25hbChwcmlvckNvbnRlbnQuc2l6ZSgpKSA6
IFdURjo6bnVsbG9wdDsKLSAgICAgICAgfQotICAgICAgICBpZiAobGFzdFVuY29taXR0ZWRDb250
ZW50LT5pc0NvbnRhaW5lclN0YXJ0KCkpIHsKLSAgICAgICAgICAgIC8vIFtjb250YWluZXIgc3Rh
cnRdW3RleHRdICg8c3Bhbj50ZXh0KSA6IHRoZSBbY29udGFpbmVyIHN0YXJ0XSBhbmQgdGhlIFt0
ZXh0XSBjb250ZW50IGZvcm0gYSBjb250aW51b3VzIGNvbnRlbnQuCi0gICAgICAgICAgICByZXR1
cm4geyB9OwotICAgICAgICB9Ci0gICAgICAgIGlmIChsYXN0VW5jb21pdHRlZENvbnRlbnQtPmlz
Q29udGFpbmVyRW5kKCkpIHsKLSAgICAgICAgICAgIC8vIFtjb250YWluZXIgZW5kXVt0ZXh0XSAo
PC9zcGFuPnRleHQpCi0gICAgICAgICAgICAvLyBOZWVkIHRvIGNoZWNrIHdoYXQncyBiZWZvcmUg
dGhlIDwvc3Bhbj4gdG8gYmUgYWJsZSB0byBkZWNpZGUgd2hldGhlciBpdCdzIGEgY29udGludW91
cyBjb250ZW50LgotICAgICAgICAgICAgLy8gZS5nLgotICAgICAgICAgICAgLy8gW3RleHRdW2Nv
bnRhaW5lciBlbmRdW3RleHRdICh0ZXh0PC9zcGFuPnRleHQpIDogdGhlcmUncyBubyBzb2Z0IHdy
YXAgb3Bwb3J0dW5pdHkgaGVyZS4KLSAgICAgICAgICAgIC8vIFtpbmxpbmUgYm94XVtjb250YWlu
ZXIgZW5kXVt0ZXh0XSAoPGltZz48L3NwYW4+dGV4dCkgOiBhZnRlciBbY29udGFpbmVyIGVuZF0g
cG9zaXRpb24gaXMgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkuCi0gICAgICAgICAgICBsYXN0VW5j
b21pdHRlZENvbnRlbnQgPSBsYXN0SW5saW5lSXRlbVdpdGhDb250ZW50KCk7Ci0gICAgICAgICAg
ICBpZiAoIWxhc3RVbmNvbWl0dGVkQ29udGVudCkgewotICAgICAgICAgICAgICAgIC8vIERpZCBu
b3QgZmluZCBhbnkgY29udGVudCBhdCBhbGwgKGUuZy4gW2NvbnRhaW5lciBzdGFydF1bY29udGFp
bmVyIGVuZF1bdGV4dF0gKDxzcGFuPjwvc3Bhbj50ZXh0KSkuCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAobGFzdFVuY29t
aXR0ZWRDb250ZW50LT5pc1RleHQoKSkgewotICAgICAgICAgICAgLy8gW3RleHRdW3RleHRdIDog
aXMgYSBjb250aW51b3VzIGNvbnRlbnQuCi0gICAgICAgICAgICAvLyBbdGV4dC1dW3RleHRdIDog
YWZ0ZXIgW2h5cGhlbl0gcG9zaXRpb24gaXMgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkuCi0gICAg
ICAgICAgICAvLyBbIF1bdGV4dF0gOiBhZnRlciBbd2hpdGVzcGFjZV0gcG9zaXRpb24gaXMgYSBz
b2Z0IHdyYXAgb3Bwb3J0dW5pdHkuCi0gICAgICAgICAgICBhdXRvIGxhc3RVbmNvbWl0dGVkRW5k
c1dpdGhTb2Z0V3JhcE9wcG9ydHVuaXR5ID0gZW5kc1dpdGhTb2Z0V3JhcE9wcG9ydHVuaXR5KGRv
d25jYXN0PElubGluZVRleHRJdGVtPigqbGFzdFVuY29taXR0ZWRDb250ZW50KSwgZG93bmNhc3Q8
SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pKTsKLSAgICAgICAgICAgIHJldHVybiBsYXN0VW5j
b21pdHRlZEVuZHNXaXRoU29mdFdyYXBPcHBvcnR1bml0eSA/IG1ha2VPcHRpb25hbChwcmlvckNv
bnRlbnQuc2l6ZSgpKSA6IFdURjo6bnVsbG9wdDsKLSAgICAgICAgfQotICAgICAgICBpZiAobGFz
dFVuY29taXR0ZWRDb250ZW50LT5pc0JveCgpKSB7Ci0gICAgICAgICAgICAvLyBbaW5saW5lIGJv
eF1bdGV4dF0gKDxpbWc+dGV4dCkgOiBhZnRlciBbaW5saW5lIGJveF0gcG9zaXRpb24gaXMgYSBz
b2Z0IHdyYXAgb3Bwb3J0dW5pdHkuCi0gICAgICAgICAgICByZXR1cm4gcHJpb3JDb250ZW50LnNp
emUoKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0g
ICAgaWYgKGlubGluZUl0ZW0uaXNCb3goKSkgewotICAgICAgICBpZiAobGFzdFVuY29taXR0ZWRD
b250ZW50LT5pc0NvbnRhaW5lclN0YXJ0KCkpIHsKLSAgICAgICAgICAgIC8vIFtjb250YWluZXIg
c3RhcnRdW2lubGluZSBib3hdICg8c3BhbT48aW1nPikgOiB0aGUgW2NvbnRhaW5lciBzdGFydF0g
YW5kIHRoZSBbaW5saW5lIGJveF0gZm9ybSBhIGNvbnRpbnVvdXMgY29udGVudC4KLSAgICAgICAg
ICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxhc3RVbmNvbWl0dGVkQ29u
dGVudC0+aXNDb250YWluZXJFbmQoKSkgewotICAgICAgICAgICAgLy8gW2NvbnRhaW5lciBlbmRd
W2lubGluZSBib3hdICg8L3NwYW4+PGltZz4pIDogYWZ0ZXIgW2NvbnRhaW5lciBlbmRdIHBvc2l0
aW9uIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5LgotICAgICAgICAgICAgcmV0dXJuIHByaW9y
Q29udGVudC5zaXplKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxhc3RVbmNvbWl0dGVkQ29u
dGVudC0+aXNUZXh0KCkgfHwgbGFzdFVuY29taXR0ZWRDb250ZW50LT5pc0JveCgpKSB7Ci0gICAg
ICAgICAgICAvLyBbaW5saW5lIGJveF1bdGV4dF0gKDxpbWc+dGV4dCkgYW5kIFtpbmxpbmUgYm94
XVtpbmxpbmUgYm94XSAoPGltZz48aW1nPikgOiBhZnRlciBmaXJzdCBbaW5saW5lIGJveF0gcG9z
aXRpb24gaXMgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkuCi0gICAgICAgICAgICByZXR1cm4gcHJp
b3JDb250ZW50LnNpemUoKTsKKyAgICBwcml2YXRlOgorICAgICAgICBzaXplX3QgbV9pbmRleCB7
IDAgfTsKKyAgICAgICAgYm9vbCBtX2lzQXRMaW5lQnJlYWsgeyBmYWxzZSB9OworICAgIH07Cisg
ICAgYXV0byBuZXh0SW5saW5lSXRlbVdpdGhDb250ZW50ID0gWyZdIChhdXRvIGluZGV4KSB7Cisg
ICAgICAgIC8vIEJyZWFrIGF0IHRoZSBmaXJzdCB0ZXh0L2JveC9saW5lIGJyZWFrIGlubGluZSBp
dGVtLgorICAgICAgICBmb3IgKDsgaW5kZXggPCBlbmQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAg
IGF1dG8mIGlubGluZUl0ZW0gPSAqaW5saW5lQ29udGVudFtpbmRleF07CisgICAgICAgICAgICBp
ZiAoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94KCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIFdyYXBDb250ZW50IHsgaW5kZXgsIGZhbHNlIH07CisgICAgICAgICAgICBp
ZiAoaW5saW5lSXRlbS5pc0xpbmVCcmVhaygpKQorICAgICAgICAgICAgICAgIHJldHVybiBXcmFw
Q29udGVudCB7IGluZGV4LCB0cnVlIH07CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXcmFwQ29udGVudCB7IGVuZCwgZmFsc2UgfTsKKyAg
ICB9OworCisgICAgLy8gU3RhcnQgYXQgdGhlIGZpcnN0IGlubGluZSBpdGVtIHdpdGggY29udGVu
dC4KKyAgICAvLyBbY29udGFpbmVyIHN0YXJ0XVtleC1dIDogc3RhcnQgYXQgW2V4LV0KKyAgICBh
dXRvIHN0YXJ0Q29udGVudCA9IG5leHRJbmxpbmVJdGVtV2l0aENvbnRlbnQoc3RhcnRJbmRleCk7
CisgICAgaWYgKHN0YXJ0Q29udGVudC5pc0F0TGluZUJyZWFrKCkpIHsKKyAgICAgICAgLy8gQ29u
dGVudCBzdGFydHMgd2l0aCBhIGxpbmUgYnJlYWsuIFRoZSB3cmFwIHBvc2l0aW9uIGlzIGFmdGVy
IHRoZSBsaW5lIGJyZWFrLgorICAgICAgICByZXR1cm4gKnN0YXJ0Q29udGVudCArIDE7CiAgICAg
fQogCi0gICAgaWYgKGlubGluZUl0ZW0uaXNDb250YWluZXJTdGFydCgpIHx8IGlubGluZUl0ZW0u
aXNDb250YWluZXJFbmQoKSkgewotICAgICAgICBpZiAobGFzdFVuY29taXR0ZWRDb250ZW50LT5p
c0NvbnRhaW5lclN0YXJ0KCkgfHwgbGFzdFVuY29taXR0ZWRDb250ZW50LT5pc0NvbnRhaW5lckVu
ZCgpKSB7Ci0gICAgICAgICAgICAvLyBbY29udGFpbmVyIHN0YXJ0XVtjb250YWluZXIgZW5kXSAo
PHNwYW4+PHNwYW4+KSBvcgotICAgICAgICAgICAgLy8gW2NvbnRhaW5lciBlbmRdW2NvbnRhaW5l
ciBzdGFydF0gKDwvc3Bhbj48c3Bhbj4pIDogbmVlZCBtb3JlIGNvbnRlbnQgdG8gZGVjaWRlLgot
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICBpZiAobGFzdFVuY29t
aXR0ZWRDb250ZW50LT5pc1RleHQoKSkgewotICAgICAgICAgICAgLy8gWyBdW2NvbnRhaW5lciBz
dGFydF0gKCA8c3Bhbj4pIDogYWZ0ZXIgW3doaXRlc3BhY2VdIHBvc2l0aW9uIGlzIGEgc29mdCB3
cmFwIG9wcG9ydHVuaXR5LgotICAgICAgICAgICAgLy8gW3RleHRdW2NvbnRhaW5lciBzdGFydF0g
KHRleHQ8c3Bhbj4pIDogTmVlZCBtb3JlIGNvbnRlbnQgdG8gZGVjaWRlIChlLmcuIHRleHQ8c3Bh
bj50ZXh0IHZzLiB0ZXh0PHNwYW4+PGltZz4pLgotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0
PElubGluZVRleHRJdGVtPigqbGFzdFVuY29taXR0ZWRDb250ZW50KS5pc1doaXRlc3BhY2UoKSA/
IG1ha2VPcHRpb25hbChwcmlvckNvbnRlbnQuc2l6ZSgpKSA6IFdURjo6bnVsbG9wdDsKLSAgICAg
ICAgfQotICAgICAgICBpZiAobGFzdFVuY29taXR0ZWRDb250ZW50LT5pc0JveCgpKSB7Ci0gICAg
ICAgICAgICAvLyBbaW5saW5lIGJveF1bY29udGFpbmVyIHN0YXJ0XSAoPGltZz48c3Bhbj4pIDog
YWZ0ZXIgW2lubGluZSBib3hdIHBvc2l0aW9uIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5Lgot
ICAgICAgICAgICAgLy8gW2lubGluZSBib3hdW2NvbnRhaW5lciBlbmRdICg8aW1nPjwvc3Bhbj4p
IDogdGhlIFtpbmxpbmUgYm94XSBhbmQgdGhlIFtjb250YWluZXIgZW5kXSBmb3JtIGEgY29udGlu
dW91cyBjb250ZW50LgotICAgICAgICAgICAgcmV0dXJuIGlubGluZUl0ZW0uaXNDb250YWluZXJT
dGFydCgpID8gbWFrZU9wdGlvbmFsKHByaW9yQ29udGVudC5zaXplKCkpIDogV1RGOjpudWxsb3B0
OworICAgIHdoaWxlICgqc3RhcnRDb250ZW50ICE9IGVuZCkgeworICAgICAgICAvLyAxLiBGaW5k
IHRoZSBuZXh0IGlubGluZSBpdGVtIHdpdGggY29udGVudC4KKyAgICAgICAgLy8gMi4gQ2hlY2sg
aWYgdGhlcmUncyBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eSBiZXR3ZWVuIHRoZSBzdGFydCBhbmQg
dGhlIG5leHQgaW5saW5lIGl0ZW0uCisgICAgICAgIGF1dG8gbmV4dENvbnRlbnQgPSBuZXh0SW5s
aW5lSXRlbVdpdGhDb250ZW50KCpzdGFydENvbnRlbnQgKyAxKTsKKyAgICAgICAgaWYgKCpuZXh0
Q29udGVudCA9PSBlbmQgfHwgbmV4dENvbnRlbnQuaXNBdExpbmVCcmVhaygpKQorICAgICAgICAg
ICAgcmV0dXJuICpuZXh0Q29udGVudDsKKyAgICAgICAgaWYgKGlzQXRTb2Z0V3JhcE9wcG9ydHVu
aXR5KCppbmxpbmVDb250ZW50WypzdGFydENvbnRlbnRdLCAqaW5saW5lQ29udGVudFsqbmV4dENv
bnRlbnRdKSkgeworICAgICAgICAgICAgLy8gVGhlcmUncyBhIHNvZnQgd3JhcCBvcHBvcnR1bml0
eSBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgdGhlIG5leHRDb250ZW50LgorICAgICAgICAgICAgLy8g
Tm93IGZvcndhcmQtZmluZCBmcm9tIHRoZSBzdGFydCBwb3NpdGlvbiB0byBzZWUgd2hlcmUgd2Ug
Y2FuIGFjdHVhbGx5IHdyYXAuCisgICAgICAgICAgICAvLyBbZXgtXVthbXBsZV0gdnMuIFtleC1d
W2NvbnRhaW5lciBzdGFydF1bY29udGFpbmVyIGVuZF1bYW1wbGVdCisgICAgICAgICAgICAvLyB3
aGVyZSBbZXgtXSBpcyBzdGFydENvbnRlbnQgYW5kIFthbXBsZV0gaXMgdGhlIG5leHRDb250ZW50
LgorICAgICAgICAgICAgYXV0byBjYW5kaWRhdGVJbmRleCA9ICpzdGFydENvbnRlbnQgKyAxOwor
ICAgICAgICAgICAgZm9yICg7IGNhbmRpZGF0ZUluZGV4IDwgKm5leHRDb250ZW50OyArK2NhbmRp
ZGF0ZUluZGV4KSB7CisgICAgICAgICAgICAgICAgaWYgKGlubGluZUNvbnRlbnRbY2FuZGlkYXRl
SW5kZXhdLT5pc0NvbnRhaW5lclN0YXJ0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5s
aW5lIGNvbnRlbnQgYW5kIFtjb250YWluZXIgc3RhcnRdIGFuZCBbY29udGFpbmVyIGVuZF0gZm9y
bSB1bmJyZWFrYWJsZSBjb250ZW50LgorICAgICAgICAgICAgICAgICAgICAvLyBleC08c3Bhbj48
L3NwYW4+YW1wbGUgIDogd3JhcCBvcHBvcnR1bml0eSBpcyBhZnRlciAiZXgtIi4KKyAgICAgICAg
ICAgICAgICAgICAgLy8gZXgtPC9zcGFuPjwvc3Bhbj5hbXBsZSA6IHdyYXAgb3Bwb3J0dW5pdHkg
aXMgYWZ0ZXIgImV4LTwvc3Bhbj48L3NwYW4+Ii4KKyAgICAgICAgICAgICAgICAgICAgLy8gZXgt
PC9zcGFuPjxzcGFuPmFtcGxlPC9zcGFuPiA6IHdyYXAgb3Bwb3J0dW5pdHkgaXMgYWZ0ZXIgImV4
LTwvc3Bhbj4iLgorICAgICAgICAgICAgICAgICAgICAvLyBleC08c3Bhbj48c3Bhbj5hbXBsZTwv
c3Bhbj48L3NwYW4+IDogd3JhcCBvcHBvcnR1bml0eSBpcyBhZnRlciAiZXgtIi4KKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUluZGV4OworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVJbmRleDsKICAgICAgICAg
fQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgc3RhcnRDb250ZW50ID0g
bmV4dENvbnRlbnQ7CiAgICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBlbmQ7CiB9CiAKIExpbmVCcmVha2VyOjpDb250aW5vdXNDb250
ZW50OjpDb250aW5vdXNDb250ZW50KGNvbnN0IFJ1bkxpc3QmIHJ1bnMpCkBAIC0zOTEsNyArNDAz
LDcgQEAgTGluZUJyZWFrZXI6OkNvbnRpbm91c0NvbnRlbnQ6OkNvbnRpbm91c0NvbnRlbnQoY29u
c3QgUnVuTGlzdCYgcnVucykKICAgICAvLyBGaWd1cmUgb3V0IHRoZSB0cmFpbGluZyBjb2xsYXBz
aWJsZSBzdGF0ZS4KICAgICBmb3IgKGF1dG8mIHJ1biA6IFdURjo6bWFrZVJldmVyc2VkUmFuZ2Uo
bV9ydW5zKSkgewogICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gcnVuLmlubGluZUl0ZW07Ci0g
ICAgICAgIGlmIChpbmxpbmVJdGVtLmlzQm94KCkgfHwgaW5saW5lSXRlbS5pc0xpbmVCcmVhaygp
KSB7CisgICAgICAgIGlmIChpbmxpbmVJdGVtLmlzQm94KCkpIHsKICAgICAgICAgICAgIC8vIFdl
IGRpZCByZWFjaCBhIG5vbi1jb2xsYXBzaWJsZSBjb250ZW50LiBXZSBoYXZlIGFsbCB0aGUgdHJh
aWxpbmcgd2hpdGVzcGFjZSBub3cuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
NDE2LDggKzQyOCwxMSBAQCBMaW5lQnJlYWtlcjo6Q29udGlub3VzQ29udGVudDo6Q29udGlub3Vz
Q29udGVudChjb25zdCBSdW5MaXN0JiBydW5zKQogICAgIH0KICAgICAvLyBUaGUgdHJhaWxpbmcg
d2hpdGVzcGFjZSBsb29wIGFib3ZlIGlzIG1vc3RseSBhYm91dCBpbnNwZWN0aW5nIHRoZSBsYXN0
IGVudHJ5LCBzbyB3aGlsZSBpdAogICAgIC8vIGxvb2tzIGxpa2Ugd2UgYXJlIGxvb3BpbmcgdGhy
b3VnaCB0aGUgbV9ydW5zIHR3aWNlLCBpdCdzIHJlYWxseSBqdXN0IG9uZSBmdWxsIGxvb3AgaW4g
YWRkaXRpb24gdG8gY2hlY2tpbmcgdGhlIGxhc3QgcnVuLgotICAgIGZvciAoYXV0byYgcnVuIDog
bV9ydW5zKQorICAgIGZvciAoYXV0byYgcnVuIDogbV9ydW5zKSB7CisgICAgICAgIC8vIExpbmUg
YnJlYWsgaXMgbm90IGNvbnNpZGVyZWQgYW4gaW5saW5lIGNvbnRlbnQuCisgICAgICAgIEFTU0VS
VCghcnVuLmlubGluZUl0ZW0uaXNMaW5lQnJlYWsoKSk7CiAgICAgICAgIG1fd2lkdGggKz0gcnVu
LmxvZ2ljYWxXaWR0aDsKKyAgICB9CiB9CiAKIGJvb2wgTGluZUJyZWFrZXI6OkNvbnRpbm91c0Nv
bnRlbnQ6Omhhc1RleHRDb250ZW50T25seSgpIGNvbnN0CkBAIC00NTcsNiArNDcyLDE1IEBAIE9w
dGlvbmFsPHVuc2lnbmVkPiBMaW5lQnJlYWtlcjo6Q29udGlub3VzQ29udGVudDo6Zmlyc3RUZXh0
UnVuSW5kZXgoKSBjb25zdAogICAgIHJldHVybiB7IH07CiB9CiAKK09wdGlvbmFsPHVuc2lnbmVk
PiBMaW5lQnJlYWtlcjo6Q29udGlub3VzQ29udGVudDo6bGFzdENvbnRlbnRSdW5JbmRleCgpIGNv
bnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSBtX3J1bnMuc2l6ZSgpOyBpbmRleC0tOykg
eworICAgICAgICBpZiAobV9ydW5zW2luZGV4XS5pbmxpbmVJdGVtLmlzVGV4dCgpIHx8IG1fcnVu
c1tpbmRleF0uaW5saW5lSXRlbS5pc0JveCgpKQorICAgICAgICAgICAgcmV0dXJuIGluZGV4Owor
ICAgIH0KKyAgICByZXR1cm4geyB9OworfQorCiBib29sIExpbmVCcmVha2VyOjpDb250aW5vdXND
b250ZW50OjpoYXNOb25Db250ZW50UnVuc09ubHkoKSBjb25zdAogewogICAgIC8vIDxzcGFuPjwv
c3Bhbj4gPC0gbm9uIGNvbnRlbnQgcnVucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5oCmluZGV4IDcwOGM3
MTA1ZTU0Yjg0OTViMmZlOTAwOTBlMTUxMzg5NWZmZDgzMzguLmM2YTM0MmNmMWYzOWNkY2JmZGJm
YTU5OTAzMGJmOGJjMjk1ODAwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuaApAQCAtNDIsMTMgKzQy
LDE2IEBAIHB1YmxpYzoKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGggeyAw
IH07CiAgICAgICAgIGJvb2wgbmVlZHNIeXBoZW4geyBmYWxzZSB9OwogICAgIH07CisgICAgZW51
bSBjbGFzcyBJc0VuZE9mTGluZSB7IE5vLCBZZXMgfTsKICAgICBzdHJ1Y3QgQnJlYWtpbmdDb250
ZXh0IHsKICAgICAgICAgZW51bSBjbGFzcyBDb250ZW50V3JhcHBpbmdSdWxlIHsKICAgICAgICAg
ICAgIEtlZXAsIC8vIEtlZXAgY29udGVudCBvbiB0aGUgY3VycmVudCBsaW5lLgorICAgICAgICAg
ICAgS2VlcE92ZXJmbG93LCAvLyBLZWVwIGFuZCBvdmVyZmxvdyBjb250ZW50IG9uIHRoZSBjdXJy
ZW50IGxpbmUuCiAgICAgICAgICAgICBTcGxpdCwgLy8gUGFydGlhbCBjb250ZW50IGlzIG9uIHRo
ZSBjdXJyZW50IGxpbmUuCiAgICAgICAgICAgICBQdXNoIC8vIENvbnRlbnQgaXMgcHVzaGVkIHRv
IHRoZSBuZXh0IGxpbmUuCiAgICAgICAgIH07CiAgICAgICAgIENvbnRlbnRXcmFwcGluZ1J1bGUg
Y29udGVudFdyYXBwaW5nUnVsZTsKKyAgICAgICAgSXNFbmRPZkxpbmUgaXNFbmRPZkxpbmUgeyBJ
c0VuZE9mTGluZTo6Tm8gfTsKICAgICAgICAgc3RydWN0IFBhcnRpYWxUcmFpbGluZ0NvbnRlbnQg
ewogICAgICAgICAgICAgdW5zaWduZWQgdHJhaWxpbmdSdW5JbmRleCB7IDAgfTsKICAgICAgICAg
ICAgIE9wdGlvbmFsPFBhcnRpYWxSdW4+IHBhcnRpYWxSdW47IC8vIG51bGxvcHQgcGFydGlhbCBy
dW4gbWVhbnMgdGhlIHRyYWlsaW5nIHJ1biBpcyBhIGNvbXBsZXRlIHJ1bi4KQEAgLTU2LDE2ICs1
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgT3B0aW9uYWw8UGFydGlhbFRyYWlsaW5nQ29udGVudD4g
cGFydGlhbFRyYWlsaW5nQ29udGVudDsKICAgICB9OwogCi0gICAgc3RydWN0IFJ1biB7Ci0gICAg
ICAgIFJ1bihjb25zdCBJbmxpbmVJdGVtJiwgSW5saW5lTGF5b3V0VW5pdCk7Ci0gICAgICAgIFJ1
bihjb25zdCBSdW4mKTsKLSAgICAgICAgUnVuJiBvcGVyYXRvcj0oY29uc3QgUnVuJik7Ci0KLSAg
ICAgICAgY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbTsKLSAgICAgICAgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsV2lkdGggeyAwIH07Ci0gICAgfTsKLSAgICB1c2luZyBSdW5MaXN0ID0gVmVj
dG9yPFJ1biwgMzA+OwotICAgIHN0YXRpYyBPcHRpb25hbDxzaXplX3Q+IGxhc3RTb2Z0V3JhcE9w
cG9ydHVuaXR5KGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBSdW5MaXN0JiBwcmlvckNvbnRlbnQp
OworICAgIHN0YXRpYyBzaXplX3QgbmV4dFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVt
cyYsIHVuc2lnbmVkIHN0YXJ0SW5kZXgpOwogCiAgICAgLy8gVGhpcyBzdHJ1Y3QgcmVwcmVzZW50
cyB0aGUgYW1vdW50IG9mIGNvbnRlbnQgY29tbWl0dGVkIHRvIGxpbmUgYnJlYWtpbmcgYXQgYSB0
aW1lIGUuZy4KICAgICAvLyB0ZXh0IGNvbnRlbnQgPHNwYW4+c3BhbjE8L3NwYW4+YmV0d2Vlbjxz
cGFuPnNwYW4yPC9zcGFuPgpAQCAtNzYsNiArNzAsMTUgQEAgcHVibGljOgogICAgIC8vIFtjb250
ZW50XQogICAgIC8vIFtjb250YWluZXIgc3RhcnRdW3NwYW4xXVtjb250YWluZXIgZW5kXVtiZXR3
ZWVuXVtjb250YWluZXIgc3RhcnRdW3NwYW4yXVtjb250YWluZXIgZW5kXQogICAgIC8vIHNlZSBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQtMy8jbGluZS1icmVhay1kZXRhaWxzCisg
ICAgc3RydWN0IFJ1biB7CisgICAgICAgIFJ1bihjb25zdCBJbmxpbmVJdGVtJiwgSW5saW5lTGF5
b3V0VW5pdCk7CisgICAgICAgIFJ1bihjb25zdCBSdW4mKTsKKyAgICAgICAgUnVuJiBvcGVyYXRv
cj0oY29uc3QgUnVuJik7CisKKyAgICAgICAgY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbTsK
KyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGggeyAwIH07CisgICAgfTsKKyAg
ICB1c2luZyBSdW5MaXN0ID0gVmVjdG9yPFJ1biwgMzA+OwogICAgIHN0cnVjdCBDb250aW5vdXND
b250ZW50IHsKICAgICAgICAgQ29udGlub3VzQ29udGVudChjb25zdCBSdW5MaXN0Jik7CiAKQEAg
LTkyLDYgKzk1LDcgQEAgcHVibGljOgogICAgICAgICBib29sIGlzVHJhaWxpbmdDb250ZW50RnVs
bHlDb2xsYXBzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhaWxpbmdDb2xsYXBzaWJsZUNvbnRl
bnQuaXNGdWxseUNvbGxhcHNpYmxlOyB9CiAKICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZp
cnN0VGV4dFJ1bkluZGV4KCkgY29uc3Q7CisgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0
Q29udGVudFJ1bkluZGV4KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSdW5MaXN0
IG1fcnVuczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCBlZjIxZTkzZTVhM2Y3OGQ5OWE2
MGIzYzZiNWQ2OGUzMjQ4NWFlN2VhLi5kMWY1ZDc4NTgzYjBjZThhZmRiYTA1OGRmNjU2NmE3NDY5
NTFlYjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC00OTUsMTcgKzQ5NSwxMSBAQCB2
b2lkIExpbmVCdWlsZGVyOjphcHBlbmRJbmxpbmVDb250YWluZXJFbmQoY29uc3QgSW5saW5lSXRl
bSYgaW5saW5lSXRlbSwgSW5saW5lTAogdm9pZCBMaW5lQnVpbGRlcjo6YXBwZW5kVGV4dENvbnRl
bnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZUl0ZW0sIElubGluZUxheW91dFVuaXQgbG9n
aWNhbFdpZHRoKQogewogICAgIGF1dG8gd2lsbENvbGxhcHNlQ29tcGxldGVseSA9IFsmXSB7Ci0g
ICAgICAgIC8vIEVtcHR5IHJ1bi4KLSAgICAgICAgaWYgKCFpbmxpbmVJdGVtLmxlbmd0aCgpKSB7
Ci0gICAgICAgICAgICBBU1NFUlQoIWxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWlubGluZUl0ZW0uaXNDb2xsYXBzaWJsZSgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAvLyBMZWFkaW5nIHdoaXRlc3Bh
Y2UuCiAgICAgICAgIGlmIChtX2lubGluZUl0ZW1SdW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybiAhc2hvdWxkUHJlc2VydmVMZWFkaW5nQ29udGVudChpbmxpbmVJdGVtKTsKLQotICAg
ICAgICBpZiAoIWlubGluZUl0ZW0uaXNDb2xsYXBzaWJsZSgpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAvLyBDaGVjayBpZiB0aGUgbGFzdCBpdGVtIGlzIGNvbGxhcHNlZCBh
cyB3ZWxsLgogICAgICAgICBmb3IgKGF1dG8gaSA9IG1faW5saW5lSXRlbVJ1bnMuc2l6ZSgpOyBp
LS07KSB7CiAgICAgICAgICAgICBhdXRvJiBydW4gPSBtX2lubGluZUl0ZW1SdW5zW2ldOwpAQCAt
Njg3LDcgKzY4MSw3IEBAIElubGluZUxheW91dFVuaXQgTGluZUJ1aWxkZXI6OnJ1bkNvbnRlbnRI
ZWlnaHQoY29uc3QgUnVuJiBydW4pIGNvbnN0CiBib29sIExpbmVCdWlsZGVyOjppc1Zpc3VhbGx5
Tm9uRW1wdHkoY29uc3QgSW5saW5lSXRlbVJ1biYgcnVuKSBjb25zdAogewogICAgIGlmIChydW4u
aXNUZXh0KCkpCi0gICAgICAgIHJldHVybiAhcnVuLmlzQ29sbGFwc2VkVG9aZXJvQWR2YW5jZVdp
ZHRoKCk7CisgICAgICAgIHJldHVybiAhcnVuLmhhc0VtcHR5VGV4dENvbnRlbnQoKTsKIAogICAg
IC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGNoZWNrIHdoZXRoZXIgdGhlIGlubGluZSBjb250
YWluZXIgaGFzIGNvbnRlbnQuIEl0IHNpbXBseSBjaGVja3MgaWYgdGhlIGNvbnRhaW5lciBpdHNl
bGYgaXMgY29uc2lkZXJlZCBub24tZW1wdHkuCiAgICAgaWYgKHJ1bi5pc0NvbnRhaW5lclN0YXJ0
KCkgfHwgcnVuLmlzQ29udGFpbmVyRW5kKCkpIHsKQEAgLTg3NCw2ICs4NjgsMTIgQEAgdm9pZCBM
aW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6cmVtb3ZlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nKCkK
ICAgICBBU1NFUlQobV9sb2dpY2FsV2lkdGggPiAwIHx8ICghbV9sb2dpY2FsV2lkdGggJiYgc3R5
bGUoKS5sZXR0ZXJTcGFjaW5nKCkgPj0gaW50TWF4Rm9yTGF5b3V0VW5pdCkpOwogfQogCitib29s
IExpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVuOjpoYXNFbXB0eVRleHRDb250ZW50KCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoaXNUZXh0KCkpOworICAgIHJldHVybiBpc0NvbGxhcHNlZFRvWmVyb0Fk
dmFuY2VXaWR0aCgpIHx8IGRvd25jYXN0PElubGluZVRleHRJdGVtPihtX2lubGluZUl0ZW0pLmlz
RW1wdHlDb250ZW50KCk7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKaW5kZXggZDcw
ZTM4MjNkNDRlYjQ3YmJlNjZlMTMwZGJlNDU3Y2I4Njg1N2Y3MC4uODcwMDE1ZTIxZjQzZDViNTlh
NWU0NGFiMDc2YWM2YTkwNzJiMDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oCkBAIC0xODgsNiAr
MTg4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBib29sIGlzQ29sbGFwc2libGUoKSBjb25zdCB7
IHJldHVybiBpczxJbmxpbmVUZXh0SXRlbT4obV9pbmxpbmVJdGVtKSAmJiBkb3duY2FzdDxJbmxp
bmVUZXh0SXRlbT4obV9pbmxpbmVJdGVtKS5pc0NvbGxhcHNpYmxlKCk7IH0KICAgICAgICAgYm9v
bCBpc1doaXRlc3BhY2UoKSBjb25zdCB7IHJldHVybiBpczxJbmxpbmVUZXh0SXRlbT4obV9pbmxp
bmVJdGVtKSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4obV9pbmxpbmVJdGVtKS5pc1doaXRl
c3BhY2UoKTsgfQorICAgICAgICBib29sIGhhc0VtcHR5VGV4dENvbnRlbnQoKSBjb25zdDsKIAog
ICAgICAgICBib29sIGhhc0V4cGFuc2lvbk9wcG9ydHVuaXR5KCkgY29uc3QgeyByZXR1cm4gaXNX
aGl0ZXNwYWNlKCkgJiYgIWlzQ29sbGFwc2VkVG9aZXJvQWR2YW5jZVdpZHRoKCk7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4
dEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
VGV4dEl0ZW0uY3BwCmluZGV4IDIxMmRiMGJlNzZiYWU3NWYxYjY4ODRkZTg3MTEyYmIyOTRiMWVm
MzcuLmUwMThiNTkxMDk4NWM2MDA0ZjhkZjU0NzM1ODE1MjNjZjk2YTQzY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0
SXRlbS5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElO
R19DT05URVhUKQogCi0jaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJJbmxpbmVT
b2Z0TGluZUJyZWFrSXRlbS5oIgogI2luY2x1ZGUgIlRleHRVdGlsLmgiCisjaW5jbHVkZSA8d3Rm
L3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIExheW91dCB7CkBAIC0xNDcsNiArMTQ3LDEyIEBAIElubGluZVRleHRJdGVtOjpJbmxpbmVU
ZXh0SXRlbShjb25zdCBCb3gmIGlubGluZUJveCkKIHsKIH0KIAorYm9vbCBJbmxpbmVUZXh0SXRl
bTo6aXNFbXB0eUNvbnRlbnQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hl
Y2sgZm9yIG1vcmUgemVybyB3aWR0aCBjb250ZW50IGFuZCBub3QganVzdCBVKzIwMEIuCisgICAg
cmV0dXJuICFtX2xlbmd0aCB8fCAobV9sZW5ndGggPT0gMSAmJiBsYXlvdXRCb3goKS50ZXh0Q29u
dGV4dCgpLT5jb250ZW50W3N0YXJ0KCldID09IHplcm9XaWR0aFNwYWNlKTsgCit9CisKIHN0ZDo6
dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4gSW5saW5lVGV4dEl0ZW06OmxlZnQodW5zaWduZWQg
bGVuZ3RoKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8PSB0aGlzLT5sZW5n
dGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVUZXh0SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lVGV4dEl0ZW0uaAppbmRleCBkNDFjYWZmNGU3ODg2OWU1ODc3OTA5YjExMWVkMGRm
MGY0ZWI2NzRmLi5mYjNhODRlMWE1N2I2MzdhYzE2ZjQxZGM3MGI5YTFmOWYzZTViMTU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZVRleHRJdGVtLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1doaXRl
c3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3RleHRJdGVtVHlwZSA9PSBUZXh0SXRlbVR5cGU6Oldo
aXRlc3BhY2U7IH0KICAgICBib29sIGlzQ29sbGFwc2libGUoKSBjb25zdCB7IHJldHVybiBpc1do
aXRlc3BhY2UoKSAmJiBzdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpOyB9CisgICAgYm9vbCBp
c0VtcHR5Q29udGVudCgpIGNvbnN0OwogICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPElu
bGluZVRleHRJdGVtPiBsZWZ0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29u
dGV4dC5jcHAKaW5kZXggZmNlOTBhMTlkNGIyOThhZGM0NjQ1ZTEyNTU4ODUwMmQ0NTUxN2IyYy4u
NmU4ZTA2NjMzZTUxMzRjMmY5ZjIxYmRhZjg5MDRhMWUxODU3MGEwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRD
b250ZXh0LmNwcApAQCAtNDEsMTMgKzQxLDEzIEBAIHN0cnVjdCBDb250aW5vdXNDb250ZW50IHsK
ICAgICBjb25zdCBMaW5lQnJlYWtlcjo6UnVuTGlzdCYgcnVucygpIGNvbnN0IHsgcmV0dXJuIG1f
cnVuczsgfQogICAgIGNvbnN0IExpbmVMYXlvdXRDb250ZXh0OjpGbG9hdExpc3QmIGZsb2F0cygp
IGNvbnN0IHsgcmV0dXJuIG1fZmxvYXRzOyB9CiAKLSAgICBib29sIGVuZHNXaXRoTGluZUJyZWFr
KCkgY29uc3QgeyByZXR1cm4gbV9lbmRzV2l0aExpbmVCcmVhazsgfQotICAgIHZvaWQgc2V0RW5k
c1dpdGhMaW5lQnJlYWsoKSB7IG1fZW5kc1dpdGhMaW5lQnJlYWsgPSB0cnVlOyB9CisgICAgYm9v
bCBpc0xpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1faXNMaW5lQnJlYWs7IH0KKyAgICB2b2lk
IHNldElzTGluZUJyZWFrKCk7CiAKIHByaXZhdGU6CiAgICAgTGluZUJyZWFrZXI6OlJ1bkxpc3Qg
bV9ydW5zOwogICAgIExpbmVMYXlvdXRDb250ZXh0OjpGbG9hdExpc3QgbV9mbG9hdHM7Ci0gICAg
Ym9vbCBtX2VuZHNXaXRoTGluZUJyZWFrIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNMaW5lQnJl
YWsgeyBmYWxzZSB9OwogfTsKIAogdm9pZCBDb250aW5vdXNDb250ZW50OjphcHBlbmQoY29uc3Qg
SW5saW5lSXRlbSYgaW5saW5lSXRlbSwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbG9naWNh
bFdpZHRoKQpAQCAtNTcsNiArNTcsMTMgQEAgdm9pZCBDb250aW5vdXNDb250ZW50OjphcHBlbmQo
Y29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgT3B0aW9uYWw8SW5saW5lTGF5b3UKICAgICBt
X3J1bnMuYXBwZW5kKHsgaW5saW5lSXRlbSwgKmxvZ2ljYWxXaWR0aCB9KTsKIH0KIAordm9pZCBD
b250aW5vdXNDb250ZW50OjpzZXRJc0xpbmVCcmVhaygpCit7CisgICAgQVNTRVJUKCFoYXNJbnRy
dXNpdmVGbG9hdHMoKSk7CisgICAgQVNTRVJUKHJ1bnMoKS5pc0VtcHR5KCkpOworICAgIG1faXNM
aW5lQnJlYWsgPSB0cnVlOworfQorCiBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBpbmxpbmVJdGVt
V2lkdGgoY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0LCBjb25zdCBJ
bmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVm
dCkKIHsKICAgICBpZiAoaW5saW5lSXRlbS5pc0xpbmVCcmVhaygpKQpAQCAtMTEyLDMzICsxMTks
MjggQEAgTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0Ojps
YXlvdXRMaW5lKExpbmVCdWlsZGVyJiBsaW5lLAogICAgICAgICAvLyAzLiBDaGVjayBpZiB0aGUg
Y29udGVudCBmaXRzIHRoZSBsaW5lIGFuZCBjb21taXQgdGhlIGNvbnRlbnQgYWNjb3JkaW5nbHkg
KGZ1bGwsIHBhcnRpYWwgb3Igbm90IGNvbW1pdCBhdCBhbGwpLgogICAgICAgICAvLyA0LiBSZXR1
cm4gaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgZWl0aGVyIGJ5IG5vdCBiZWluZyBh
YmxlIHRvIGZpdCBtb3JlIGNvbnRlbnQgb3IgYmVjYXVzZSBvZiBhbiBleHBsaWNpdCBsaW5lIGJy
ZWFrLgogICAgICAgICBhdXRvIGNhbmRpZGF0ZUNvbnRlbnQgPSBuZXh0Q29udGlub3VzQ29udGVu
dEZvckxpbmUoY3VycmVudEl0ZW1JbmRleCwgcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBs
aW5lLmxpbmVCb3goKS5sb2dpY2FsV2lkdGgoKSk7CisgICAgICAgIGlmIChjYW5kaWRhdGVDb250
ZW50LmlzTGluZUJyZWFrKCkpIHsKKyAgICAgICAgICAgIGxpbmUuYXBwZW5kKCptX2lubGluZUl0
ZW1zW2N1cnJlbnRJdGVtSW5kZXhdLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBjbG9zZShsaW5l
LCBsZWFkaW5nSW5saW5lSXRlbUluZGV4LCArK2NvbW1pdHRlZElubGluZUl0ZW1Db3VudCwgeyB9
KTsKKyAgICAgICAgfQogICAgICAgICBpZiAoY2FuZGlkYXRlQ29udGVudC5oYXNJbnRydXNpdmVG
bG9hdHMoKSkgewogICAgICAgICAgICAgLy8gQWRkIGZsb2F0cyBmaXJzdCBiZWNhdXNlIHRoZXkg
c2hyaW5rIHRoZSBhdmFpbGFibGUgaG9yaXpvbnRhbCBzcGFjZSBmb3IgdGhlIHJlc3Qgb2YgdGhl
IGNvbnRlbnQuCiAgICAgICAgICAgICBhdXRvIGZsb2F0Q29udGVudCA9IGFkZEZsb2F0SXRlbXMo
bGluZSwgY2FuZGlkYXRlQ29udGVudC5mbG9hdHMoKSk7CiAgICAgICAgICAgICBjb21taXR0ZWRJ
bmxpbmVJdGVtQ291bnQgKz0gZmxvYXRDb250ZW50LmNvdW50OwotICAgICAgICAgICAgaWYgKGZs
b2F0Q29udGVudC5pc0VuZE9mTGluZSA9PSBJc0VuZE9mTGluZTo6WWVzKSB7CisgICAgICAgICAg
ICBpZiAoZmxvYXRDb250ZW50LmlzRW5kT2ZMaW5lID09IExpbmVCcmVha2VyOjpJc0VuZE9mTGlu
ZTo6WWVzKSB7CiAgICAgICAgICAgICAgICAgLy8gRmxvYXRzIHRha2UgdXAgYWxsIHRoZSBob3Jp
em9udGFsIHNwYWNlLgogICAgICAgICAgICAgICAgIHJldHVybiBjbG9zZShsaW5lLCBsZWFkaW5n
SW5saW5lSXRlbUluZGV4LCBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQsIHsgfSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUKCFjYW5kaWRhdGVDb250ZW50LnJ1bnMo
KS5pc0VtcHR5KCkgfHwgY2FuZGlkYXRlQ29udGVudC5lbmRzV2l0aExpbmVCcmVhaygpIHx8IGNh
bmRpZGF0ZUNvbnRlbnQuaGFzSW50cnVzaXZlRmxvYXRzKCkpOwogICAgICAgICBpZiAoIWNhbmRp
ZGF0ZUNvbnRlbnQucnVucygpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gTm93IGNoZWNr
IGlmIHdlIGNhbiBwdXQgdGhpcyBjb250ZW50IG9uIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgICAg
ICAgICBhdXRvIGNvbW1pdHRlZENvbnRlbnQgPSBwbGFjZUlubGluZUNvbnRlbnRPbkN1cnJlbnRM
aW5lKGxpbmUsIGNhbmRpZGF0ZUNvbnRlbnQucnVucygpKTsKICAgICAgICAgICAgIGNvbW1pdHRl
ZElubGluZUl0ZW1Db3VudCArPSBjb21taXR0ZWRDb250ZW50LmNvdW50OwotICAgICAgICAgICAg
aWYgKGNvbW1pdHRlZENvbnRlbnQuaXNFbmRPZkxpbmUgPT0gSXNFbmRPZkxpbmU6Olllcykgewor
ICAgICAgICAgICAgaWYgKGNvbW1pdHRlZENvbnRlbnQuaXNFbmRPZkxpbmUgPT0gTGluZUJyZWFr
ZXI6OklzRW5kT2ZMaW5lOjpZZXMpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBwbGFj
ZSBhbnkgbW9yZSBpdGVtcyBvbiB0aGUgY3VycmVudCBsaW5lLgogICAgICAgICAgICAgICAgIHJl
dHVybiBjbG9zZShsaW5lLCBsZWFkaW5nSW5saW5lSXRlbUluZGV4LCBjb21taXR0ZWRJbmxpbmVJ
dGVtQ291bnQsIGNvbW1pdHRlZENvbnRlbnQucGFydGlhbENvbnRlbnQpOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgICAgIC8vIFdlIGNvdWxkIGZpdCBtb3JlIGNvbnRlbnQgYnV0IHNh
ZGx5IHRoaXMgbGluZSBlbmRzIHdpdGggYW4gZXhwbGljaXQgbGluZSBicmVhay4KLSAgICAgICAg
aWYgKGNhbmRpZGF0ZUNvbnRlbnQuZW5kc1dpdGhMaW5lQnJlYWsoKSkgewotICAgICAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoZSB0cmFpbGluZyBsaW5lIGJyZWFrIGVuZHMgdXAgb24gdGhlIGxpbmUg
dG9vLgotICAgICAgICAgICAgYXV0byBsaW5lQnJlYWtJbmRleCA9IGxlYWRpbmdJbmxpbmVJdGVt
SW5kZXggKyBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQ7Ci0gICAgICAgICAgICBBU1NFUlQobV9p
bmxpbmVJdGVtc1tsaW5lQnJlYWtJbmRleF0tPmlzTGluZUJyZWFrKCkpOwotICAgICAgICAgICAg
bGluZS5hcHBlbmQoKm1faW5saW5lSXRlbXNbbGluZUJyZWFrSW5kZXhdLCAwKTsKLSAgICAgICAg
ICAgIHJldHVybiBjbG9zZShsaW5lLCBsZWFkaW5nSW5saW5lSXRlbUluZGV4LCArK2NvbW1pdHRl
ZElubGluZUl0ZW1Db3VudCwgeyB9KTsKLSAgICAgICAgfQogICAgICAgICBjdXJyZW50SXRlbUlu
ZGV4ID0gbGVhZGluZ0lubGluZUl0ZW1JbmRleCArIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudDsK
ICAgICAgICAgcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoID0geyB9OwogICAgIH0KQEAgLTE3
OCwxMCArMTgwLDEyIEBAIExpbmVMYXlvdXRDb250ZXh0OjpMaW5lQ29udGVudCBMaW5lTGF5b3V0
Q29udGV4dDo6Y2xvc2UoTGluZUJ1aWxkZXImIGxpbmUsIHVuc2lnCiAKIENvbnRpbm91c0NvbnRl
bnQgTGluZUxheW91dENvbnRleHQ6Om5leHRDb250aW5vdXNDb250ZW50Rm9yTGluZSh1bnNpZ25l
ZCBpbmxpbmVJdGVtSW5kZXgsIE9wdGlvbmFsPHVuc2lnbmVkPiBwYXJ0aWFsTGVhZGluZ0NvbnRl
bnRMZW5ndGgsIElubGluZUxheW91dFVuaXQgY3VycmVudExvZ2ljYWxSaWdodCkKIHsKLSAgICBh
dXRvIGNhbmRpZGF0ZUNvbnRlbnQgPSBDb250aW5vdXNDb250ZW50IHsgfTsKICAgICAvLyAxLiBT
aW1wbHkgYWRkIGFueSBvdmVyZmxvdyBjb250ZW50IGZyb20gdGhlIHByZXZpb3VzIGxpbmUgdG8g
dGhlIGNhbmRpZGF0ZSBjb250ZW50LiBJdCdzIGFsd2F5cyBhIHRleHQgY29udGVudC4KICAgICAv
LyAyLiBGaW5kIHRoZSBuZXh0IHNvZnQgd3JhcCBwb3NpdGlvbiBvciBleHBsaWNpdCBsaW5lIGJy
ZWFrLgogICAgIC8vIDMuIENvbGxlY3QgZmxvYXRzIGJldHdlZW4gdGhlIGlubGluZSBjb250ZW50
LgorICAgIGF1dG8gc29mdFdyYXBPcHBvcnR1bml0eUluZGV4ID0gTGluZUJyZWFrZXI6Om5leHRX
cmFwT3Bwb3J0dW5pdHkobV9pbmxpbmVJdGVtcywgaW5saW5lSXRlbUluZGV4KTsKKworICAgIGF1
dG8gY2FuZGlkYXRlQ29udGVudCA9IENvbnRpbm91c0NvbnRlbnQgeyB9OwogICAgIGlmIChwYXJ0
aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgpIHsKICAgICAgICAgLy8gSGFuZGxlIGxlYWRpbmcgcGFy
dGlhbCBjb250ZW50IGZpcnN0IChzcGxpdCB0ZXh0IGZyb20gdGhlIHByZXZpb3VzIGxpbmUpLgog
ICAgICAgICAvLyBDb25zdHJ1Y3QgYSBwYXJ0aWFsIGxlYWRpbmcgaW5saW5lIGl0ZW0uCkBAIC0x
OTIsOCArMTk2LDggQEAgQ29udGlub3VzQ29udGVudCBMaW5lTGF5b3V0Q29udGV4dDo6bmV4dENv
bnRpbm91c0NvbnRlbnRGb3JMaW5lKHVuc2lnbmVkIGlubGluZUkKICAgICAgICAgKytpbmxpbmVJ
dGVtSW5kZXg7CiAgICAgfQogCi0gICAgd2hpbGUgKGlubGluZUl0ZW1JbmRleCA8IG1faW5saW5l
SXRlbXMuc2l6ZSgpKSB7Ci0gICAgICAgIGF1dG8mIGlubGluZUl0ZW0gPSAqbV9pbmxpbmVJdGVt
c1tpbmxpbmVJdGVtSW5kZXhdOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gaW5saW5lSXRlbUlu
ZGV4OyBpbmRleCA8IHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleDsgKytpbmRleCkgeworICAgICAg
ICBhdXRvJiBpbmxpbmVJdGVtID0gKm1faW5saW5lSXRlbXNbaW5kZXhdOwogICAgICAgICBpZiAo
aW5saW5lSXRlbS5pc0Zsb2F0KCkpIHsKICAgICAgICAgICAgIC8vIEZsb2F0cyBhcmUgbm90IHBh
cnQgb2YgdGhlIGxpbmUgY29udGV4dC4KICAgICAgICAgICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0
aGVpciB3aWR0aCBzaG91bGQgYmUgYWRkZWQgdG8gY3VycmVudExvZ2ljYWxSaWdodC4KQEAgLTIw
MiwxOCArMjA2LDEzIEBAIENvbnRpbm91c0NvbnRlbnQgTGluZUxheW91dENvbnRleHQ6Om5leHRD
b250aW5vdXNDb250ZW50Rm9yTGluZSh1bnNpZ25lZCBpbmxpbmVJCiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGlubGluZUl0ZW0uaXNMaW5lQnJlYWsoKSkgewogICAgICAgICAgICAgLy8gV2UgZGVm
aW5pdGVseSBuZWVkIHRvIHN0b3AgYXQgdGhlIGxpbmUgYnJlYWsuCi0gICAgICAgICAgICBjYW5k
aWRhdGVDb250ZW50LnNldEVuZHNXaXRoTGluZUJyZWFrKCk7Ci0gICAgICAgICAgICByZXR1cm4g
Y2FuZGlkYXRlQ29udGVudDsKLSAgICAgICAgfQotICAgICAgICBpZiAoTGluZUJyZWFrZXI6Omxh
c3RTb2Z0V3JhcE9wcG9ydHVuaXR5KGlubGluZUl0ZW0sIGNhbmRpZGF0ZUNvbnRlbnQucnVucygp
KSkgewotICAgICAgICAgICAgLy8gTGV0J3Mgd3JhcCB1cCB0aGlzIGxpc3QsIGlmIHdlIGFycml2
ZWQgdG8gYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkuCi0gICAgICAgICAgICByZXR1cm4gY2FuZGlk
YXRlQ29udGVudDsKKyAgICAgICAgICAgIGNhbmRpZGF0ZUNvbnRlbnQuc2V0SXNMaW5lQnJlYWso
KTsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA9PSBzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXgg
LSAxKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0KICAgICAgICAgYXV0byBp
bmxpbmVJdGVubVdpZHRoID0gaW5saW5lSXRlbVdpZHRoKGZvcm1hdHRpbmdDb250ZXh0KCksIGlu
bGluZUl0ZW0sIGN1cnJlbnRMb2dpY2FsUmlnaHQpOwogICAgICAgICBjYW5kaWRhdGVDb250ZW50
LmFwcGVuZChpbmxpbmVJdGVtLCBpbmxpbmVJdGVubVdpZHRoKTsKICAgICAgICAgY3VycmVudExv
Z2ljYWxSaWdodCArPSBpbmxpbmVJdGVubVdpZHRoOwotICAgICAgICArK2lubGluZUl0ZW1JbmRl
eDsKICAgICB9CiAgICAgcmV0dXJuIGNhbmRpZGF0ZUNvbnRlbnQ7CiB9CkBAIC0yMjYsNyArMjI1
LDcgQEAgTGluZUxheW91dENvbnRleHQ6OkNvbW1pdHRlZENvbnRlbnQgTGluZUxheW91dENvbnRl
eHQ6OmFkZEZsb2F0SXRlbXMoTGluZUJ1aWxkZXIKIAogICAgICAgICBhdXRvIGxpbmVJc0NvbnNp
ZGVyZWRFbXB0eSA9IGxpbmUuaXNWaXN1YWxseUVtcHR5KCkgJiYgIWxpbmUuaGFzSW50cnVzaXZl
RmxvYXQoKTsKICAgICAgICAgaWYgKExpbmVCcmVha2VyKCkuc2hvdWxkV3JhcEZsb2F0Qm94KGxv
Z2ljYWxXaWR0aCwgbGluZS5hdmFpbGFibGVXaWR0aCgpICsgbGluZS50cmFpbGluZ0NvbGxhcHNp
YmxlV2lkdGgoKSwgbGluZUlzQ29uc2lkZXJlZEVtcHR5KSkKLSAgICAgICAgICAgIHJldHVybiB7
IElzRW5kT2ZMaW5lOjpZZXMsIGNvbW1pdHRlZEZsb2F0SXRlbUNvdW50LCB7IH0gfTsKKyAgICAg
ICAgICAgIHJldHVybiB7IExpbmVCcmVha2VyOjpJc0VuZE9mTGluZTo6WWVzLCBjb21taXR0ZWRG
bG9hdEl0ZW1Db3VudCwgeyB9IH07CiAgICAgICAgIC8vIFRoaXMgZmxvYXQgY2FuIHNpdCBvbiB0
aGUgY3VycmVudCBsaW5lLgogICAgICAgICArK2NvbW1pdHRlZEZsb2F0SXRlbUNvdW50OwogICAg
ICAgICBhdXRvJiBmbG9hdEJveCA9IGZsb2F0SXRlbS0+bGF5b3V0Qm94KCk7CkBAIC0yMzgsNyAr
MjM3LDcgQEAgTGluZUxheW91dENvbnRleHQ6OkNvbW1pdHRlZENvbnRlbnQgTGluZUxheW91dENv
bnRleHQ6OmFkZEZsb2F0SXRlbXMoTGluZUJ1aWxkZXIKICAgICAgICAgICAgIGxpbmUubW92ZUxv
Z2ljYWxSaWdodChsb2dpY2FsV2lkdGgpOwogICAgICAgICBtX2Zsb2F0cy5hcHBlbmQoZmxvYXRJ
dGVtKTsKICAgICB9Ci0gICAgcmV0dXJuIHsgSXNFbmRPZkxpbmU6Ok5vLCBjb21taXR0ZWRGbG9h
dEl0ZW1Db3VudCwgeyB9IH07CisgICAgcmV0dXJuIHsgTGluZUJyZWFrZXI6OklzRW5kT2ZMaW5l
OjpObywgY29tbWl0dGVkRmxvYXRJdGVtQ291bnQsIHsgfSB9OwogfQogCiBMaW5lTGF5b3V0Q29u
dGV4dDo6Q29tbWl0dGVkQ29udGVudCBMaW5lTGF5b3V0Q29udGV4dDo6cGxhY2VJbmxpbmVDb250
ZW50T25DdXJyZW50TGluZShMaW5lQnVpbGRlciYgbGluZSwgY29uc3QgTGluZUJyZWFrZXI6OlJ1
bkxpc3QmIHJ1bnMpCkBAIC0yNjAsMTIgKzI1OSwxOCBAQCBMaW5lTGF5b3V0Q29udGV4dDo6Q29t
bWl0dGVkQ29udGVudCBMaW5lTGF5b3V0Q29udGV4dDo6cGxhY2VJbmxpbmVDb250ZW50T25DdXJy
ZQogICAgIGlmIChicmVha2luZ0NvbnRleHQuY29udGVudFdyYXBwaW5nUnVsZSA9PSBMaW5lQnJl
YWtlcjo6QnJlYWtpbmdDb250ZXh0OjpDb250ZW50V3JhcHBpbmdSdWxlOjpLZWVwKSB7CiAgICAg
ICAgIC8vIFRoaXMgY29udGludW91cyBjb250ZW50IGNhbiBiZSBmdWxseSBwbGFjZWQgb24gdGhl
IGN1cnJlbnQgbGluZS4KICAgICAgICAgY29tbWl0Q29udGVudChsaW5lLCBydW5zLCB7IH0pOwot
ICAgICAgICByZXR1cm4geyBJc0VuZE9mTGluZTo6Tm8sIHJ1bnMuc2l6ZSgpLCB7IH0gfTsKKyAg
ICAgICAgcmV0dXJuIHsgYnJlYWtpbmdDb250ZXh0LmlzRW5kT2ZMaW5lLCBydW5zLnNpemUoKSwg
eyB9IH07CisgICAgfQorCisgICAgaWYgKGJyZWFraW5nQ29udGV4dC5jb250ZW50V3JhcHBpbmdS
dWxlID09IExpbmVCcmVha2VyOjpCcmVha2luZ0NvbnRleHQ6OkNvbnRlbnRXcmFwcGluZ1J1bGU6
OktlZXBPdmVyZmxvdykgeworICAgICAgICAvLyBUaGlzIGNvbnRpbnVvdXMgY29udGVudCBjYW4g
YmUgZnVsbHkgcGxhY2VkIG9uIHRoZSBjdXJyZW50IGxpbmUgYnV0IGl0IGRvZXMgb3ZlcmZsb3cu
CisgICAgICAgIGNvbW1pdENvbnRlbnQobGluZSwgcnVucywgeyB9KTsKKyAgICAgICAgcmV0dXJu
IHsgYnJlYWtpbmdDb250ZXh0LmlzRW5kT2ZMaW5lLCBydW5zLnNpemUoKSwgeyB9IH07CiAgICAg
fQogCiAgICAgaWYgKGJyZWFraW5nQ29udGV4dC5jb250ZW50V3JhcHBpbmdSdWxlID09IExpbmVC
cmVha2VyOjpCcmVha2luZ0NvbnRleHQ6OkNvbnRlbnRXcmFwcGluZ1J1bGU6OlB1c2gpIHsKICAg
ICAgICAgLy8gVGhpcyBjb250aW51b3VzIGNvbnRlbnQgY2FuJ3QgYmUgcGxhY2VkIG9uIHRoZSBj
dXJyZW50IGxpbmUuIE5vdGhpbmcgdG8gY29tbWl0IGF0IHRoaXMgdGltZS4KLSAgICAgICAgcmV0
dXJuIHsgSXNFbmRPZkxpbmU6OlllcywgMCwgeyB9IH07CisgICAgICAgIHJldHVybiB7IGJyZWFr
aW5nQ29udGV4dC5pc0VuZE9mTGluZSwgMCwgeyB9IH07CiAgICAgfQogCiAgICAgaWYgKGJyZWFr
aW5nQ29udGV4dC5jb250ZW50V3JhcHBpbmdSdWxlID09IExpbmVCcmVha2VyOjpCcmVha2luZ0Nv
bnRleHQ6OkNvbnRlbnRXcmFwcGluZ1J1bGU6OlNwbGl0KSB7CkBAIC0yNzcsMTUgKzI4MiwxNSBA
QCBMaW5lTGF5b3V0Q29udGV4dDo6Q29tbWl0dGVkQ29udGVudCBMaW5lTGF5b3V0Q29udGV4dDo6
cGxhY2VJbmxpbmVDb250ZW50T25DdXJyZQogICAgICAgICBhdXRvIHRyYWlsaW5nUnVuSW5kZXgg
PSBicmVha2luZ0NvbnRleHQucGFydGlhbFRyYWlsaW5nQ29udGVudC0+dHJhaWxpbmdSdW5JbmRl
eDsKICAgICAgICAgYXV0byBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQgPSB0cmFpbGluZ1J1bklu
ZGV4ICsgMTsKICAgICAgICAgaWYgKCFicmVha2luZ0NvbnRleHQucGFydGlhbFRyYWlsaW5nQ29u
dGVudC0+cGFydGlhbFJ1bikKLSAgICAgICAgICAgIHJldHVybiB7IElzRW5kT2ZMaW5lOjpZZXMs
IGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCwgeyB9IH07CisgICAgICAgICAgICByZXR1cm4geyBi
cmVha2luZ0NvbnRleHQuaXNFbmRPZkxpbmUsIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCwgeyB9
IH07CiAKICAgICAgICAgYXV0byBwYXJ0aWFsUnVuID0gKmJyZWFraW5nQ29udGV4dC5wYXJ0aWFs
VHJhaWxpbmdDb250ZW50LT5wYXJ0aWFsUnVuOwogICAgICAgICBhdXRvJiB0cmFpbGluZ0lubGlu
ZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHJ1bnNbdHJhaWxpbmdSdW5JbmRl
eF0uaW5saW5lSXRlbSk7CiAgICAgICAgIGF1dG8gb3ZlcmZsb3dMZW5ndGggPSB0cmFpbGluZ0lu
bGluZVRleHRJdGVtLmxlbmd0aCgpIC0gcGFydGlhbFJ1bi5sZW5ndGg7Ci0gICAgICAgIHJldHVy
biB7IElzRW5kT2ZMaW5lOjpZZXMsIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCwgTGluZUNvbnRl
bnQ6OlBhcnRpYWxDb250ZW50IHsgcGFydGlhbFJ1bi5uZWVkc0h5cGhlbiwgb3ZlcmZsb3dMZW5n
dGggfSB9OworICAgICAgICByZXR1cm4geyBicmVha2luZ0NvbnRleHQuaXNFbmRPZkxpbmUsIGNv
bW1pdHRlZElubGluZUl0ZW1Db3VudCwgTGluZUNvbnRlbnQ6OlBhcnRpYWxDb250ZW50IHsgcGFy
dGlhbFJ1bi5uZWVkc0h5cGhlbiwgb3ZlcmZsb3dMZW5ndGggfSB9OwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4geyBJc0VuZE9mTGluZTo6Tm8sIDAsIHsgfSB9
OworICAgIHJldHVybiB7IExpbmVCcmVha2VyOjpJc0VuZE9mTGluZTo6Tm8sIDAsIHsgfSB9Owog
fQogCiB2b2lkIExpbmVMYXlvdXRDb250ZXh0Ojpjb21taXRDb250ZW50KExpbmVCdWlsZGVyJiBs
aW5lLCBjb25zdCBMaW5lQnJlYWtlcjo6UnVuTGlzdCYgcnVucywgT3B0aW9uYWw8TGluZUJyZWFr
ZXI6OkJyZWFraW5nQ29udGV4dDo6UGFydGlhbFRyYWlsaW5nQ29udGVudD4gcGFydGlhbFRyYWls
aW5nQ29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCmluZGV4IGNkMDhlNGQzOTAwODI4NGVhOWFh
MWZmZTI5ZmFmZGUxMDY5NzljNjIuLmU1NWJmNTIxZjU0MWFmZTQ3NDYzZjI0NTE2YTJiZWQ3Yjhj
NDU2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0xpbmVMYXlvdXRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaApAQCAtNTQsOSArNTQsOCBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgRmxvYXRMaXN0ID0gVmVjdG9yPFdlYWtQdHI8SW5saW5lSXRlbT4+OwogCiBwcml2
YXRlOgotICAgIGVudW0gY2xhc3MgSXNFbmRPZkxpbmUgeyBObywgWWVzIH07CiAgICAgc3RydWN0
IENvbW1pdHRlZENvbnRlbnQgewotICAgICAgICBJc0VuZE9mTGluZSBpc0VuZE9mTGluZTsKKyAg
ICAgICAgTGluZUJyZWFrZXI6OklzRW5kT2ZMaW5lIGlzRW5kT2ZMaW5lOwogICAgICAgICBzaXpl
X3QgY291bnQgeyAwIH07CiAgICAgICAgIE9wdGlvbmFsIDxMaW5lQ29udGVudDo6UGFydGlhbENv
bnRlbnQ+IHBhcnRpYWxDb250ZW50OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy90ZXh0L1RleHRVdGlsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHQvVGV4dFV0aWwuY3BwCmluZGV4IDE3MTYw
N2VkY2U2NjY1ZjE3ZjNhNzUxODAyYmIwOTk3ZGFlMmU2ODIuLjk2NmYxNDcwNGE0MDk4ZjNlYjMx
ODg3YzcyYTY2YzQ3YTEyYWRhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL3RleHQvVGV4dFV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHQvVGV4dFV0aWwuY3BwCkBAIC01NywxNyArNTcsMTcg
QEAgSW5saW5lTGF5b3V0VW5pdCBUZXh0VXRpbDo6d2lkdGgoY29uc3QgQm94JiBpbmxpbmVCb3gs
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHQKICAgICBhdXRvJiB0ZXh0ID0gdGV4dENvbnRleHQu
Y29udGVudDsKICAgICBBU1NFUlQodG8gPD0gdGV4dC5sZW5ndGgoKSk7CiAKLSAgICBpZiAoZm9u
dC5pc0ZpeGVkUGl0Y2goKSkKLSAgICAgICAgcmV0dXJuIGZpeGVkUGl0Y2hXaWR0aCh0ZXh0LCBz
dHlsZSwgZnJvbSwgdG8sIGNvbnRlbnRMb2dpY2FsTGVmdCk7Ci0KICAgICBhdXRvIGhhc0tlcm5p
bmdPckxpZ2F0dXJlcyA9IGZvbnQuZW5hYmxlS2VybmluZygpIHx8IGZvbnQucmVxdWlyZXNTaGFw
aW5nKCk7CiAgICAgYXV0byBtZWFzdXJlV2l0aEVuZFNwYWNlID0gaGFzS2VybmluZ09yTGlnYXR1
cmVzICYmIHRvIDwgdGV4dC5sZW5ndGgoKSAmJiB0ZXh0W3RvXSA9PSAnICc7CiAgICAgaWYgKG1l
YXN1cmVXaXRoRW5kU3BhY2UpCiAgICAgICAgICsrdG87CiAgICAgZmxvYXQgd2lkdGggPSAwOwot
ICAgIGlmICh0ZXh0Q29udGV4dC5jYW5Vc2VTaW1wbGlmaWVkQ29udGVudE1lYXN1cmluZykKLSAg
ICAgICAgd2lkdGggPSBmb250LndpZHRoRm9yU2ltcGxlVGV4dCh0ZXh0LnN1YnN0cmluZyhmcm9t
LCB0byAtIGZyb20pKTsKLSAgICBlbHNlIHsKKyAgICBpZiAodGV4dENvbnRleHQuY2FuVXNlU2lt
cGxpZmllZENvbnRlbnRNZWFzdXJpbmcpIHsKKyAgICAgICAgaWYgKGZvbnQuaXNGaXhlZFBpdGNo
KCkpCisgICAgICAgICAgICB3aWR0aCA9IGZpeGVkUGl0Y2hXaWR0aCh0ZXh0LCBzdHlsZSwgZnJv
bSwgdG8sIGNvbnRlbnRMb2dpY2FsTGVmdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdp
ZHRoID0gZm9udC53aWR0aEZvclNpbXBsZVRleHQodGV4dC5zdWJzdHJpbmcoZnJvbSwgdG8gLSBm
cm9tKSk7CisgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byB0YWJXaWR0aCA9IHN0eWxlLmNvbGxh
cHNlV2hpdGVTcGFjZSgpID8gVGFiU2l6ZSgwKSA6IHN0eWxlLnRhYlNpemUoKTsKICAgICAgICAg
V2ViQ29yZTo6VGV4dFJ1biBydW4odGV4dC5zdWJzdHJpbmcoZnJvbSwgdG8gLSBmcm9tKSwgY29u
dGVudExvZ2ljYWxMZWZ0KTsKICAgICAgICAgaWYgKHRhYldpZHRoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386402</attachid>
            <date>2019-12-24 22:53:56 -0800</date>
            <delta_ts>2019-12-25 07:52:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205584-20191224225356.patch</filename>
            <type>text/plain</type>
            <size>28119</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUxN2NjNjcwZTZiNDM0
NjU1MjBhODIwN2U1ZmU0YzlhY2VlNzQ5Yi4uZjZmNTJkM2ZjZmRjMzU2YmJmMjk4MjIyZDk2NDVj
YjczZGY5YjE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTEyLTI0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBGb3J3YXJk
IHNjYW4gZm9yIHNvZnQgd3JhcCBvcHBvcnR1bml0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1ODQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU4MTg4Mzg2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBmb3J3YXJkIHNjYW5uaW5nIHRvIGZpbmQgd3JhcCBv
cHBvcnR1bml0aWVzIGluIGlubGluZSBjb250ZW50LgorICAgICAgICBlLmcgPHNwYW4+PC9zcGFu
PmV4YW1wbGU8c3Bhbj48c3Bhbj48L3NwYW4+IGNvbnRlbnQ8L3NwYW4+CisgICAgICAgIFdoZW4g
d2UgcmVhY2ggImV4LSIgY29udGVudCwgaW4gb3JkZXIgdG8gZmlndXJlIG91dCBpZiBpdCBpcyBh
dCBhIHdyYXAgb3Bwb3J0dW5pdHksIHdlIHNjYW4gdGhlIGNvbnRlbnQKKyAgICAgICAgZm9yd2Fy
ZCB1bnRpbCBhZnRlciB3ZSByZWFjaCBhbm90aGVyIGlubGluZSBjb250ZW50LCBpbiB0aGlzIGNh
c2UgIiAiIHJpZ2h0IGJlZm9yZSB0aGUgImNvbnRlbnQiIGFuZAorICAgICAgICBjaGVjayBpZiB3
ZSBjYW4gYnJlYWsgdGhlIGNvbnRlbnQgYmV0d2VlbiB0aGVzZSAyIGlubGluZSBpdGVtcy4KKwor
ICAgICAgICBpc0F0U29mdFdyYXBPcHBvcnR1bml0eTogdGFrZXMgMiAoYWRqYWNlbnQgYnkgc2tp
cHBpbmcgbm9uLWNvbnRlbnQgaW5saW5lIGl0ZW1zKSBhbmQgcmV0dXJuIHRydWUgaWYgdGhlcmUn
cworICAgICAgICBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eSBpbiBiZXR3ZWVuIHRoZW0uCisgICAg
ICAgIExpbmVCcmVha2VyOjpuZXh0V3JhcE9wcG9ydHVuaXR5OiByZXR1cm5zIHRoZSBuZXh0IHdy
YXAgb3Bwb3J0dW5pdHkgKGVpdGhlciBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eSBvciBhIGxpbmUg
YnJlYWsgb3IgdGhlIGVuZCBvZiB0aGUgY29udGVudCkKKworICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6ZW5kc1dpdGhTb2Z0V3JhcE9wcG9ydHVuaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6aXNBdFNvZnRXcmFwT3Bwb3J0dW5pdHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lQnJlYWtlcjo6bmV4dFdyYXBPcHBvcnR1bml0eSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCcmVha2VyOjpDb250aW5vdXNDb250ZW50OjpDb250aW5vdXNDb250ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJyZWFrZXI6Omxhc3RTb2Z0V3JhcE9wcG9y
dHVuaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQnJlYWtlci5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVM
YXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUNhbmRpZGF0
ZUNvbnRlbnQ6OmlzTGluZUJyZWFrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZUNhbmRpZGF0ZUNvbnRlbnQ6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxpbmVDYW5kaWRhdGVDb250ZW50OjpzZXRJc0xpbmVCcmVhayk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0OjpsYXlvdXRMaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUxheW91dENvbnRleHQ6Om5leHRDb250ZW50Rm9yTGluZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbm91c0NvbnRlbnQ6Omhhc0ludHJ1c2l2ZUZsb2F0
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbm91c0Nv
bnRlbnQ6OnJ1bnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpD
b250aW5vdXNDb250ZW50OjpmbG9hdHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpDb250aW5vdXNDb250ZW50OjplbmRzV2l0aExpbmVCcmVhayBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbm91c0NvbnRlbnQ6OnNldEVu
ZHNXaXRoTGluZUJyZWFrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Q29u
dGlub3VzQ29udGVudDo6YXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUxheW91dENvbnRleHQ6Om5leHRDb250aW5vdXNDb250ZW50Rm9yTGluZSk6IERlbGV0
ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQu
aDoKKwogMjAxOS0xMi0yNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdW0lGQ10gTGluZUJyZWFrZXIgc2hvdWxkIHRlbGwgd2hldGhlciB0aGUgbGluZSBz
aG91bGQgcmVjZWl2ZSBubyBtb3JlIGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcAppbmRl
eCAwNjUyM2JkMTk1M2NkYjZlMzViMDlhNmU4MzU5NjdhNTIzYWQwOTJjLi5jMjkxZDg4MmNlYzYx
ZWRlMmQyNDAyMTBmMjk3YTc5ODhhYWI4NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuY3BwCkBA
IC0yNjMsMjAgKzI2MywyMCBAQCBPcHRpb25hbDxMaW5lQnJlYWtlcjo6UGFydGlhbFJ1bj4gTGlu
ZUJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dFJ1bihjb25zdCBSdW4mIG92ZQogICAgIHJldHVybiB7
IH07CiB9CiAKLXN0YXRpYyBib29sIGVuZHNXaXRoU29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJ
bmxpbmVUZXh0SXRlbSYgcHJldmlvdXNUZXh0SXRlbSwgY29uc3QgSW5saW5lVGV4dEl0ZW0mIG5l
eHRJbmxpbmVUZXh0SXRlbSkKK3N0YXRpYyBib29sIGVuZHNXaXRoU29mdFdyYXBPcHBvcnR1bml0
eShjb25zdCBJbmxpbmVUZXh0SXRlbSYgY3VycmVudFRleHRJdGVtLCBjb25zdCBJbmxpbmVUZXh0
SXRlbSYgbmV4dElubGluZVRleHRJdGVtKQogewogICAgIEFTU0VSVCghbmV4dElubGluZVRleHRJ
dGVtLmlzV2hpdGVzcGFjZSgpKTsKKyAgICAvLyBXZSBhcmUgYXQgdGhlIHBvc2l0aW9uIGFmdGVy
IGEgd2hpdGVzcGFjZS4KKyAgICBpZiAoY3VycmVudFRleHRJdGVtLmlzV2hpdGVzcGFjZSgpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAvLyBXaGVuIGJvdGggdGhlc2Ugbm9uLXdoaXRlc3Bh
Y2UgcnVucyBiZWxvbmcgdG8gdGhlIHNhbWUgbGF5b3V0IGJveCwgaXQncyBndWFyYW50ZWVkIHRo
YXQKICAgICAvLyB0aGV5IGFyZSBzcGxpdCBhdCBhIHNvZnQgYnJlYWtpbmcgb3Bwb3J0dW5pdHku
IFNlZSBJbmxpbmVUZXh0SXRlbTo6bW92ZVRvTmV4dEJyZWFrYWJsZVBvc2l0aW9uLgotICAgIGlm
ICgmcHJldmlvdXNUZXh0SXRlbS5sYXlvdXRCb3goKSA9PSAmbmV4dElubGluZVRleHRJdGVtLmxh
eW91dEJveCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAvLyBXZSBhcmUgYXQgdGhlIHBv
c2l0aW9uIGFmdGVyIGEgd2hpdGVzcGFjZS4KLSAgICBpZiAocHJldmlvdXNUZXh0SXRlbS5pc1do
aXRlc3BhY2UoKSkKKyAgICBpZiAoJmN1cnJlbnRUZXh0SXRlbS5sYXlvdXRCb3goKSA9PSAmbmV4
dElubGluZVRleHRJdGVtLmxheW91dEJveCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAv
LyBOb3cgd2UgbmVlZCB0byBjb2xsZWN0IGF0IGxlYXN0IDMgYWRqYWNlbnQgY2hhcmFjdGVycyB0
byBiZSBhYmxlIHRvIG1ha2UgYSBkZXNjaXNpb24gd2hldGhlciB0aGUgcHJldmlvdXMgdGV4dCBp
dGVtIGVuZHMgd2l0aCBicmVha2luZyBvcHBvcnR1bml0eS4KICAgICAvLyBbZXgtXVthbXBsZV0g
PC0gc2Vjb25kIHRvIGxhc3RbeF0gbGFzdFstXSBjdXJyZW50W2FdCiAgICAgLy8gV2UgbmVlZCBh
dCBsZWFzdCAxIGNoYXJhY3RlciBpbiB0aGUgY3VycmVudCBpbmxpbmUgdGV4dCBpdGVtIGFuZCAy
IG1vcmUgZnJvbSBwcmV2aW91cyBpbmxpbmUgaXRlbXMuCi0gICAgYXV0byBwcmV2aW91c0NvbnRl
bnQgPSBwcmV2aW91c1RleHRJdGVtLmxheW91dEJveCgpLnRleHRDb250ZXh0KCktPmNvbnRlbnQ7
CisgICAgYXV0byBwcmV2aW91c0NvbnRlbnQgPSBjdXJyZW50VGV4dEl0ZW0ubGF5b3V0Qm94KCku
dGV4dENvbnRleHQoKS0+Y29udGVudDsKICAgICBhdXRvIGxpbmVCcmVha0l0ZXJhdG9yID0gTGF6
eUxpbmVCcmVha0l0ZXJhdG9yIHsgbmV4dElubGluZVRleHRJdGVtLmxheW91dEJveCgpLnRleHRD
b250ZXh0KCktPmNvbnRlbnQgfTsKICAgICBhdXRvIHByZXZpb3VzQ29udGVudExlbmd0aCA9IHBy
ZXZpb3VzQ29udGVudC5sZW5ndGgoKTsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGxvb2sgaW50
byB0aGUgZW50aXJlIHVuY29tbWl0dGVkIGNvbnRlbnQgZm9yIG1vcmUgdGV4dCBjb250ZXh0LgpA
QCAtMjg5LDExMCArMjg5LDExNiBAQCBzdGF0aWMgYm9vbCBlbmRzV2l0aFNvZnRXcmFwT3Bwb3J0
dW5pdHkoY29uc3QgSW5saW5lVGV4dEl0ZW0mIHByZXZpb3VzVGV4dEl0ZW0sCiAgICAgcmV0dXJu
ICFUZXh0VXRpbDo6ZmluZE5leHRCcmVha2FibGVQb3NpdGlvbihsaW5lQnJlYWtJdGVyYXRvciwg
MCwgbmV4dElubGluZVRleHRJdGVtLnN0eWxlKCkpOwogfQogCi1PcHRpb25hbDxzaXplX3Q+IExp
bmVCcmVha2VyOjpsYXN0U29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVtJiBpbmxp
bmVJdGVtLCBjb25zdCBSdW5MaXN0JiBwcmlvckNvbnRlbnQpCitzdGF0aWMgYm9vbCBpc0F0U29m
dFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVtJiBjdXJyZW50LCBjb25zdCBJbmxpbmVJ
dGVtJiBuZXh0KQogeworICAgIC8vICJpcyBhdCIgc2ltcGxlIG1lYW5zIHRoYXQgdGhlcmUncyBh
IHNvZnQgd3JhcCBvcHBvcnR1bml0eSByaWdodCBhZnRlciB0aGUgW2N1cnJlbnRdLgorICAgIC8v
IFt0ZXh0XVsgXVt0ZXh0XVtjb250YWluZXIgc3RhcnRdLi4uICg8ZGl2PnRleHQgY29udGVudDxz
cGFuPi4uPC9kaXY+KQorICAgIC8vIHNvZnQgd3JhcCBpbmRleGVzOiAwIGFuZCAxIGRlZmluaXRl
bHksIDIgZGVwZW5kcyBvbiB0aGUgY29udGVudCBhZnRlciB0aGUgW2NvbnRhaW5lciBzdGFydF0u
CisKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQtMy8jbGluZS1icmVh
ay1kZXRhaWxzCiAgICAgLy8gRmlndXJlIG91dCBpZiB0aGUgbmV3IGluY29taW5nIGNvbnRlbnQg
cHV0cyB0aGUgdW5jb21taXR0ZWQgY29udGVudCBvbiBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eS4K
ICAgICAvLyBlLmcuIFtjb250YWluZXIgc3RhcnRdW3ByaW9yX2NvbnRpbnVvdXNfY29udGVudF1b
Y29udGFpbmVyIGVuZF0gKDxzcGFuPnByaW9yX2NvbnRpbnVvdXNfY29udGVudDwvc3Bhbj4pCiAg
ICAgLy8gQW4gaW5jb21pbmcgPGltZz4gYm94IHdvdWxkIGVuYWJsZSB1cyB0byBjb21taXQgdGhl
ICI8c3Bhbj5wcmlvcl9jb250aW51b3VzX2NvbnRlbnQ8L3NwYW4+IiBjb250ZW50CiAgICAgLy8g
YnV0IGFuIGluY29taW5nIHRleHQgY29udGVudCB3b3VsZCBub3QgbmVjZXNzYXJpbHkuCi0gICAg
QVNTRVJUKCFpbmxpbmVJdGVtLmlzRmxvYXQoKSAmJiAhaW5saW5lSXRlbS5pc0xpbmVCcmVhaygp
KTsKLSAgICBpZiAocHJpb3JDb250ZW50LmlzRW1wdHkoKSkgewotICAgICAgICAvLyBDYW4ndCBk
ZWNpZGUgaXQgeWV0LgotICAgICAgICByZXR1cm4geyB9OworICAgIEFTU0VSVChjdXJyZW50Lmlz
VGV4dCgpIHx8IGN1cnJlbnQuaXNCb3goKSk7CisgICAgQVNTRVJUKG5leHQuaXNUZXh0KCkgfHwg
bmV4dC5pc0JveCgpKTsKKyAgICBpZiAoY3VycmVudC5pc0JveCgpIHx8IG5leHQuaXNCb3goKSkg
eworICAgICAgICAvLyBbdGV4dF1bY29udGFpbmVyIHN0YXJ0XVtjb250YWluZXIgZW5kXVtpbmxp
bmUgYm94XSAodGV4dDxzcGFuPjwvc3Bhbj48aW1nPikgOiB0aGVyZSdzIGEgc29mdCB3cmFwIG9w
cG9ydHVuaXR5IGJldHdlZW4gdGhlIFt0ZXh0XSBhbmQgW2ltZ10uCisgICAgICAgIC8vIFRoZSBs
aW5lIGJyZWFraW5nIGJlaGF2aW9yIG9mIGEgcmVwbGFjZWQgZWxlbWVudCBvciBvdGhlciBhdG9t
aWMgaW5saW5lIGlzIGVxdWl2YWxlbnQgdG8gYW4gaWRlb2dyYXBoaWMgY2hhcmFjdGVyLgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGN1cnJlbnQuc3R5bGUoKS5saW5lQnJl
YWsoKSA9PSBMaW5lQnJlYWs6OkFueXdoZXJlIHx8IG5leHQuc3R5bGUoKS5saW5lQnJlYWsoKSA9
PSBMaW5lQnJlYWs6OkFueXdoZXJlKSB7CisgICAgICAgIC8vIFRoZXJlIGlzIGEgc29mdCB3cmFw
IG9wcG9ydHVuaXR5IGFyb3VuZCBldmVyeSB0eXBvZ3JhcGhpYyBjaGFyYWN0ZXIgdW5pdCwgaW5j
bHVkaW5nIGFyb3VuZCBhbnkgcHVuY3R1YXRpb24gY2hhcmFjdGVyCisgICAgICAgIC8vIG9yIHBy
ZXNlcnZlZCB3aGl0ZSBzcGFjZXMsIG9yIGluIHRoZSBtaWRkbGUgb2Ygd29yZHMuCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICBhdXRvJiBjdXJyZW50SW5saW5lVGV4dEl0ZW0gPSBk
b3duY2FzdDxJbmxpbmVUZXh0SXRlbT4oY3VycmVudCk7CisgICAgYXV0byYgbmV4dElubGluZVRl
eHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG5leHQpOworICAgIGlmIChjdXJyZW50
SW5saW5lVGV4dEl0ZW0uaXNXaGl0ZXNwYWNlKCkpIHsKKyAgICAgICAgLy8gWyBdW3RleHRdIDog
YWZ0ZXIgW3doaXRlc3BhY2VdIHBvc2l0aW9uIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5Lgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgaWYgKG5leHRJbmxpbmVUZXh0SXRlbS5p
c1doaXRlc3BhY2UoKSkgeworICAgICAgICAvLyBbdGV4dF1bIF0gKDxzcGFuPnRleHQ8L3NwYW4+
ICkKKyAgICAgICAgLy8gd2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlczogbGluZSBicmVha2luZyBv
cHBvcnR1bml0eSBleGlzdHMgYWZ0ZXIgZXZlcnkgcHJlc2VydmVkIHdoaXRlIHNwYWNlIGNoYXJh
Y3RlciwgYnV0IG5vdCBiZWZvcmUuCisgICAgICAgIHJldHVybiBuZXh0SW5saW5lVGV4dEl0ZW0u
c3R5bGUoKS53aGl0ZVNwYWNlKCkgIT0gV2hpdGVTcGFjZTo6QnJlYWtTcGFjZXM7CisgICAgfQor
ICAgIC8vIEJvdGggY3VycmVudCBhbmQgbmV4dCBpdGVtcyBhcmUgbm9uLXdoaXRlc3BhY2UgdGV4
dC4KKyAgICAvLyBbdGV4dF1bdGV4dF0gOiBpcyBhIGNvbnRpbnVvdXMgY29udGVudC4KKyAgICAv
LyBbdGV4dC1dW3RleHRdIDogYWZ0ZXIgW2h5cGhlbl0gcG9zaXRpb24gaXMgYSBzb2Z0IHdyYXAg
b3Bwb3J0dW5pdHkuCisgICAgcmV0dXJuIGVuZHNXaXRoU29mdFdyYXBPcHBvcnR1bml0eShjdXJy
ZW50SW5saW5lVGV4dEl0ZW0sIG5leHRJbmxpbmVUZXh0SXRlbSk7Cit9CiAKLSAgICBhdXRvIGxh
c3RJbmxpbmVJdGVtV2l0aENvbnRlbnQgPSBbJl0gKCkgLT4gY29uc3QgSW5saW5lSXRlbSogewot
ICAgICAgICBmb3IgKGF1dG8mIHByZXZpb3VzUnVuIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShw
cmlvckNvbnRlbnQpKSB7Ci0gICAgICAgICAgICBhdXRvJiBwcmV2aW91c0lubGluZUl0ZW0gPSBw
cmV2aW91c1J1bi5pbmxpbmVJdGVtOwotICAgICAgICAgICAgaWYgKHByZXZpb3VzSW5saW5lSXRl
bS5pc1RleHQoKSB8fCBwcmV2aW91c0lubGluZUl0ZW0uaXNCb3goKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gJnByZXZpb3VzSW5saW5lSXRlbTsKLSAgICAgICAgICAgIEFTU0VSVChwcmV2aW91
c0lubGluZUl0ZW0uaXNDb250YWluZXJTdGFydCgpIHx8IHByZXZpb3VzSW5saW5lSXRlbS5pc0Nv
bnRhaW5lckVuZCgpKTsKK3NpemVfdCBMaW5lQnJlYWtlcjo6bmV4dFdyYXBPcHBvcnR1bml0eShj
b25zdCBJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgdW5zaWduZWQgc3RhcnRJbmRleCkKK3sK
KyAgICAvLyAxLiBGaW5kIHRoZSBzdGFydCBjYW5kaWRhdGUgYnkgc2tpcHBpbmcgbGVhZGluZyBu
b24tY29udGVudCBpdGVtcyBlLmcgPHNwYW4+PHNwYW4+c3RhcnQgOiBza2lwICI8c3Bhbj48c3Bh
bj4iCisgICAgLy8gMi4gRmluZCB0aGUgZW5kIGNhbmRpZGF0ZSBieSBza2lwcGluZyBub24tY29u
dGVudCBpdGVtcyBpbmJldHdlZW4gZS5nLiA8c3Bhbj48c3Bhbj5zdGFydDwvc3Bhbj5lbmQ6IHNr
aXAgIjwvc3Bhbj4iCisgICAgLy8gMy4gQ2hlY2sgaWYgdGhlcmUncyBhIHNvZnQgd3JhcCBvcHBv
cnR1bml0eSBiZXR3ZWVuIHRoZSAyIGNhbmRpZGF0ZSBpbmxpbmUgaXRlbXMgYW5kIHJlcGVhdC4K
KyAgICAvLyA0LiBBbnkgZm9yY2UgbGluZSBicmVhayBpbmJldHdlZW4gaXMgY29uc2lkZXJlZCBh
cyBhIHdyYXAgb3Bwb3J0dW5pdHkuCisKKyAgICAvLyBbZXgtXVtjb250YWluZXIgc3RhcnRdW2Nv
bnRhaW5lciBlbmRdW2Zsb2F0XVthbXBsZV0gKGV4LTxzcGFuPjwvc3Bhbj48ZGl2IHN0eWxlPSJm
bG9hdDpsZWZ0Ij48L2Rpdj5hbXBsZSkgOiB3cmFwIGluZGV4IGlzIGF0IFtleC1dLgorICAgIC8v
IFtleF1bY29udGFpbmVyIHN0YXJ0XVthbXAtXVtjb250YWluZXIgc3RhcnRdW2xlXSAoZXg8c3Bh
bj5hbXAtPHNwYW4+YW1wbGUpIDogd3JhcCBpbmRleCBpcyBhdCBbYW1wLV0uCisgICAgLy8gW2V4
LV1bY29udGFpbmVyIHN0YXJ0XVtsaW5lIGJyZWFrXVthbXBsZV0gKGV4LTxzcGFuPjxicj5hbXBs
ZSkgOiB3cmFwIGluZGV4IGlzIGFmdGVyIFticl0uCisgICAgYXV0byBlbmQgPSBpbmxpbmVDb250
ZW50LnNpemUoKTsKKworICAgIHN0cnVjdCBXcmFwQ29udGVudCB7CisgICAgICAgIFdyYXBDb250
ZW50KHNpemVfdCBpbmRleCwgYm9vbCBpc0F0TGluZUJyZWFrKQorICAgICAgICAgICAgOiBtX2lu
ZGV4KGluZGV4KQorICAgICAgICAgICAgLCBtX2lzQXRMaW5lQnJlYWsoaXNBdExpbmVCcmVhaykK
KyAgICAgICAgewogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH07Cisg
ICAgICAgIHNpemVfdCBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAg
ICAgIGJvb2wgaXNBdExpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1faXNBdExpbmVCcmVhazsg
fQogCi0gICAgYXV0byogbGFzdFVuY29taXR0ZWRDb250ZW50ID0gJnByaW9yQ29udGVudC5sYXN0
KCkuaW5saW5lSXRlbTsKLSAgICBpZiAoaW5saW5lSXRlbS5pc1RleHQoKSkgewotICAgICAgICBp
ZiAoaW5saW5lSXRlbS5zdHlsZSgpLmxpbmVCcmVhaygpID09IExpbmVCcmVhazo6QW55d2hlcmUp
IHsKLSAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5IGFyb3Vu
ZCBldmVyeSB0eXBvZ3JhcGhpYyBjaGFyYWN0ZXIgdW5pdCwgaW5jbHVkaW5nIGFyb3VuZCBhbnkg
cHVuY3R1YXRpb24gY2hhcmFjdGVyCi0gICAgICAgICAgICAvLyBvciBwcmVzZXJ2ZWQgd2hpdGUg
c3BhY2VzLCBvciBpbiB0aGUgbWlkZGxlIG9mIHdvcmRzLgotICAgICAgICAgICAgcmV0dXJuIHBy
aW9yQ29udGVudC5zaXplKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRvd25jYXN0PElubGlu
ZVRleHRJdGVtPihpbmxpbmVJdGVtKS5pc1doaXRlc3BhY2UoKSkgewotICAgICAgICAgICAgLy8g
W3ByaW9yIGNvbnRlbnRdWyBdICg8c3Bhbj5zb21lX2NvbnRlbnQ8L3NwYW4+ICkKLSAgICAgICAg
ICAgIC8vIHdoaXRlLXNwYWNlOiBicmVhay1zcGFjZXM6IGxpbmUgYnJlYWtpbmcgb3Bwb3J0dW5p
dHkgZXhpc3RzIGFmdGVyIGV2ZXJ5IHByZXNlcnZlZCB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXIsIGJ1
dCBub3QgYmVmb3JlLgotICAgICAgICAgICAgYXV0byBpc0F0U29mdFdyYXBPcHBvcnR1bml0eUJl
Zm9yZVdoaXRlc3BhY2UgPSBpbmxpbmVJdGVtLnN0eWxlKCkud2hpdGVTcGFjZSgpICE9IFdoaXRl
U3BhY2U6OkJyZWFrU3BhY2VzOwotICAgICAgICAgICAgLy8gWyBdWyBdIDogYWRqYWNlbnQgd2hp
dGVzcGFjZSBjb250ZW50IGhhcyBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkuCi0gICAgICAgICAgICBp
ZiAobGFzdFVuY29taXR0ZWRDb250ZW50LT5pc1RleHQoKSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0
SXRlbT4oKmxhc3RVbmNvbWl0dGVkQ29udGVudCkuaXNXaGl0ZXNwYWNlKCkpCi0gICAgICAgICAg
ICAgICAgaXNBdFNvZnRXcmFwT3Bwb3J0dW5pdHlCZWZvcmVXaGl0ZXNwYWNlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybiBpc0F0U29mdFdyYXBPcHBvcnR1bml0eUJlZm9yZVdoaXRlc3BhY2Ug
PyBtYWtlT3B0aW9uYWwocHJpb3JDb250ZW50LnNpemUoKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKGxhc3RVbmNvbWl0dGVkQ29udGVudC0+aXNDb250YWluZXJTdGFy
dCgpKSB7Ci0gICAgICAgICAgICAvLyBbY29udGFpbmVyIHN0YXJ0XVt0ZXh0XSAoPHNwYW4+dGV4
dCkgOiB0aGUgW2NvbnRhaW5lciBzdGFydF0gYW5kIHRoZSBbdGV4dF0gY29udGVudCBmb3JtIGEg
Y29udGludW91cyBjb250ZW50LgotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAobGFzdFVuY29taXR0ZWRDb250ZW50LT5pc0NvbnRhaW5lckVuZCgpKSB7Ci0g
ICAgICAgICAgICAvLyBbY29udGFpbmVyIGVuZF1bdGV4dF0gKDwvc3Bhbj50ZXh0KQotICAgICAg
ICAgICAgLy8gTmVlZCB0byBjaGVjayB3aGF0J3MgYmVmb3JlIHRoZSA8L3NwYW4+IHRvIGJlIGFi
bGUgdG8gZGVjaWRlIHdoZXRoZXIgaXQncyBhIGNvbnRpbnVvdXMgY29udGVudC4KLSAgICAgICAg
ICAgIC8vIGUuZy4KLSAgICAgICAgICAgIC8vIFt0ZXh0XVtjb250YWluZXIgZW5kXVt0ZXh0XSAo
dGV4dDwvc3Bhbj50ZXh0KSA6IHRoZXJlJ3Mgbm8gc29mdCB3cmFwIG9wcG9ydHVuaXR5IGhlcmUu
Ci0gICAgICAgICAgICAvLyBbaW5saW5lIGJveF1bY29udGFpbmVyIGVuZF1bdGV4dF0gKDxpbWc+
PC9zcGFuPnRleHQpIDogYWZ0ZXIgW2NvbnRhaW5lciBlbmRdIHBvc2l0aW9uIGlzIGEgc29mdCB3
cmFwIG9wcG9ydHVuaXR5LgotICAgICAgICAgICAgbGFzdFVuY29taXR0ZWRDb250ZW50ID0gbGFz
dElubGluZUl0ZW1XaXRoQ29udGVudCgpOwotICAgICAgICAgICAgaWYgKCFsYXN0VW5jb21pdHRl
ZENvbnRlbnQpIHsKLSAgICAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgYW55IGNvbnRlbnQg
YXQgYWxsIChlLmcuIFtjb250YWluZXIgc3RhcnRdW2NvbnRhaW5lciBlbmRdW3RleHRdICg8c3Bh
bj48L3NwYW4+dGV4dCkpLgotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxhc3RVbmNvbWl0dGVkQ29udGVudC0+aXNUZXh0
KCkpIHsKLSAgICAgICAgICAgIC8vIFt0ZXh0XVt0ZXh0XSA6IGlzIGEgY29udGludW91cyBjb250
ZW50LgotICAgICAgICAgICAgLy8gW3RleHQtXVt0ZXh0XSA6IGFmdGVyIFtoeXBoZW5dIHBvc2l0
aW9uIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5LgotICAgICAgICAgICAgLy8gWyBdW3RleHRd
IDogYWZ0ZXIgW3doaXRlc3BhY2VdIHBvc2l0aW9uIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5
LgotICAgICAgICAgICAgYXV0byBsYXN0VW5jb21pdHRlZEVuZHNXaXRoU29mdFdyYXBPcHBvcnR1
bml0eSA9IGVuZHNXaXRoU29mdFdyYXBPcHBvcnR1bml0eShkb3duY2FzdDxJbmxpbmVUZXh0SXRl
bT4oKmxhc3RVbmNvbWl0dGVkQ29udGVudCksIGRvd25jYXN0PElubGluZVRleHRJdGVtPihpbmxp
bmVJdGVtKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGFzdFVuY29taXR0ZWRFbmRzV2l0aFNvZnRX
cmFwT3Bwb3J0dW5pdHkgPyBtYWtlT3B0aW9uYWwocHJpb3JDb250ZW50LnNpemUoKSkgOiBXVEY6
Om51bGxvcHQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxhc3RVbmNvbWl0dGVkQ29udGVudC0+
aXNCb3goKSkgewotICAgICAgICAgICAgLy8gW2lubGluZSBib3hdW3RleHRdICg8aW1nPnRleHQp
IDogYWZ0ZXIgW2lubGluZSBib3hdIHBvc2l0aW9uIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5
LgotICAgICAgICAgICAgcmV0dXJuIHByaW9yQ29udGVudC5zaXplKCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIGlmIChpbmxpbmVJdGVtLmlz
Qm94KCkpIHsKLSAgICAgICAgaWYgKGxhc3RVbmNvbWl0dGVkQ29udGVudC0+aXNDb250YWluZXJT
dGFydCgpKSB7Ci0gICAgICAgICAgICAvLyBbY29udGFpbmVyIHN0YXJ0XVtpbmxpbmUgYm94XSAo
PHNwYW0+PGltZz4pIDogdGhlIFtjb250YWluZXIgc3RhcnRdIGFuZCB0aGUgW2lubGluZSBib3hd
IGZvcm0gYSBjb250aW51b3VzIGNvbnRlbnQuCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChsYXN0VW5jb21pdHRlZENvbnRlbnQtPmlzQ29udGFpbmVyRW5k
KCkpIHsKLSAgICAgICAgICAgIC8vIFtjb250YWluZXIgZW5kXVtpbmxpbmUgYm94XSAoPC9zcGFu
PjxpbWc+KSA6IGFmdGVyIFtjb250YWluZXIgZW5kXSBwb3NpdGlvbiBpcyBhIHNvZnQgd3JhcCBv
cHBvcnR1bml0eS4KLSAgICAgICAgICAgIHJldHVybiBwcmlvckNvbnRlbnQuc2l6ZSgpOwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChsYXN0VW5jb21pdHRlZENvbnRlbnQtPmlzVGV4dCgpIHx8IGxh
c3RVbmNvbWl0dGVkQ29udGVudC0+aXNCb3goKSkgewotICAgICAgICAgICAgLy8gW2lubGluZSBi
b3hdW3RleHRdICg8aW1nPnRleHQpIGFuZCBbaW5saW5lIGJveF1baW5saW5lIGJveF0gKDxpbWc+
PGltZz4pIDogYWZ0ZXIgZmlyc3QgW2lubGluZSBib3hdIHBvc2l0aW9uIGlzIGEgc29mdCB3cmFw
IG9wcG9ydHVuaXR5LgotICAgICAgICAgICAgcmV0dXJuIHByaW9yQ29udGVudC5zaXplKCk7Cisg
ICAgcHJpdmF0ZToKKyAgICAgICAgc2l6ZV90IG1faW5kZXggeyAwIH07CisgICAgICAgIGJvb2wg
bV9pc0F0TGluZUJyZWFrIHsgZmFsc2UgfTsKKyAgICB9OworICAgIGF1dG8gbmV4dElubGluZUl0
ZW1XaXRoQ29udGVudCA9IFsmXSAoYXV0byBpbmRleCkgeworICAgICAgICAvLyBCcmVhayBhdCB0
aGUgZmlyc3QgdGV4dC9ib3gvbGluZSBicmVhayBpbmxpbmUgaXRlbS4KKyAgICAgICAgZm9yICg7
IGluZGV4IDwgZW5kOyArK2luZGV4KSB7CisgICAgICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0g
KmlubGluZUNvbnRlbnRbaW5kZXhdOworICAgICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNUZXh0
KCkgfHwgaW5saW5lSXRlbS5pc0JveCgpIHx8IGlubGluZUl0ZW0uaXNMaW5lQnJlYWsoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gV3JhcENvbnRlbnQgeyBpbmRleCwgaW5saW5lSXRlbS5pc0xp
bmVCcmVhaygpIH07CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBXcmFwQ29udGVudCB7IGVuZCwgZmFsc2UgfTsKKyAgICB9OworCisgICAg
Ly8gU3RhcnQgYXQgdGhlIGZpcnN0IGlubGluZSBpdGVtIHdpdGggY29udGVudC4KKyAgICAvLyBb
Y29udGFpbmVyIHN0YXJ0XVtleC1dIDogc3RhcnQgYXQgW2V4LV0KKyAgICBhdXRvIHN0YXJ0Q29u
dGVudCA9IG5leHRJbmxpbmVJdGVtV2l0aENvbnRlbnQoc3RhcnRJbmRleCk7CisgICAgaWYgKHN0
YXJ0Q29udGVudC5pc0F0TGluZUJyZWFrKCkpIHsKKyAgICAgICAgLy8gQ29udGVudCBzdGFydHMg
d2l0aCBhIGxpbmUgYnJlYWsuIFRoZSB3cmFwIHBvc2l0aW9uIGlzIGFmdGVyIHRoZSBsaW5lIGJy
ZWFrLgorICAgICAgICByZXR1cm4gKnN0YXJ0Q29udGVudCArIDE7CiAgICAgfQogCi0gICAgaWYg
KGlubGluZUl0ZW0uaXNDb250YWluZXJTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNDb250YWluZXJF
bmQoKSkgewotICAgICAgICBpZiAobGFzdFVuY29taXR0ZWRDb250ZW50LT5pc0NvbnRhaW5lclN0
YXJ0KCkgfHwgbGFzdFVuY29taXR0ZWRDb250ZW50LT5pc0NvbnRhaW5lckVuZCgpKSB7Ci0gICAg
ICAgICAgICAvLyBbY29udGFpbmVyIHN0YXJ0XVtjb250YWluZXIgZW5kXSAoPHNwYW4+PHNwYW4+
KSBvcgotICAgICAgICAgICAgLy8gW2NvbnRhaW5lciBlbmRdW2NvbnRhaW5lciBzdGFydF0gKDwv
c3Bhbj48c3Bhbj4pIDogbmVlZCBtb3JlIGNvbnRlbnQgdG8gZGVjaWRlLgotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICBpZiAobGFzdFVuY29taXR0ZWRDb250ZW50
LT5pc1RleHQoKSkgewotICAgICAgICAgICAgLy8gWyBdW2NvbnRhaW5lciBzdGFydF0gKCA8c3Bh
bj4pIDogYWZ0ZXIgW3doaXRlc3BhY2VdIHBvc2l0aW9uIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVu
aXR5LgotICAgICAgICAgICAgLy8gW3RleHRdW2NvbnRhaW5lciBzdGFydF0gKHRleHQ8c3Bhbj4p
IDogTmVlZCBtb3JlIGNvbnRlbnQgdG8gZGVjaWRlIChlLmcuIHRleHQ8c3Bhbj50ZXh0IHZzLiB0
ZXh0PHNwYW4+PGltZz4pLgotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PElubGluZVRleHRJ
dGVtPigqbGFzdFVuY29taXR0ZWRDb250ZW50KS5pc1doaXRlc3BhY2UoKSA/IG1ha2VPcHRpb25h
bChwcmlvckNvbnRlbnQuc2l6ZSgpKSA6IFdURjo6bnVsbG9wdDsKLSAgICAgICAgfQotICAgICAg
ICBpZiAobGFzdFVuY29taXR0ZWRDb250ZW50LT5pc0JveCgpKSB7Ci0gICAgICAgICAgICAvLyBb
aW5saW5lIGJveF1bY29udGFpbmVyIHN0YXJ0XSAoPGltZz48c3Bhbj4pIDogYWZ0ZXIgW2lubGlu
ZSBib3hdIHBvc2l0aW9uIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5LgotICAgICAgICAgICAg
Ly8gW2lubGluZSBib3hdW2NvbnRhaW5lciBlbmRdICg8aW1nPjwvc3Bhbj4pIDogdGhlIFtpbmxp
bmUgYm94XSBhbmQgdGhlIFtjb250YWluZXIgZW5kXSBmb3JtIGEgY29udGludW91cyBjb250ZW50
LgotICAgICAgICAgICAgcmV0dXJuIGlubGluZUl0ZW0uaXNDb250YWluZXJTdGFydCgpID8gbWFr
ZU9wdGlvbmFsKHByaW9yQ29udGVudC5zaXplKCkpIDogV1RGOjpudWxsb3B0OworICAgIHdoaWxl
ICgqc3RhcnRDb250ZW50ICE9IGVuZCkgeworICAgICAgICAvLyAxLiBGaW5kIHRoZSBuZXh0IGlu
bGluZSBpdGVtIHdpdGggY29udGVudC4KKyAgICAgICAgLy8gMi4gQ2hlY2sgaWYgdGhlcmUncyBh
IHNvZnQgd3JhcCBvcHBvcnR1bml0eSBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgdGhlIG5leHQgaW5s
aW5lIGl0ZW0uCisgICAgICAgIGF1dG8gbmV4dENvbnRlbnQgPSBuZXh0SW5saW5lSXRlbVdpdGhD
b250ZW50KCpzdGFydENvbnRlbnQgKyAxKTsKKyAgICAgICAgaWYgKCpuZXh0Q29udGVudCA9PSBl
bmQgfHwgbmV4dENvbnRlbnQuaXNBdExpbmVCcmVhaygpKQorICAgICAgICAgICAgcmV0dXJuICpu
ZXh0Q29udGVudDsKKyAgICAgICAgaWYgKGlzQXRTb2Z0V3JhcE9wcG9ydHVuaXR5KCppbmxpbmVD
b250ZW50WypzdGFydENvbnRlbnRdLCAqaW5saW5lQ29udGVudFsqbmV4dENvbnRlbnRdKSkgewor
ICAgICAgICAgICAgLy8gVGhlcmUncyBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eSBiZXR3ZWVuIHRo
ZSBzdGFydCBhbmQgdGhlIG5leHRDb250ZW50LgorICAgICAgICAgICAgLy8gTm93IGZvcndhcmQt
ZmluZCBmcm9tIHRoZSBzdGFydCBwb3NpdGlvbiB0byBzZWUgd2hlcmUgd2UgY2FuIGFjdHVhbGx5
IHdyYXAuCisgICAgICAgICAgICAvLyBbZXgtXVthbXBsZV0gdnMuIFtleC1dW2NvbnRhaW5lciBz
dGFydF1bY29udGFpbmVyIGVuZF1bYW1wbGVdCisgICAgICAgICAgICAvLyB3aGVyZSBbZXgtXSBp
cyBzdGFydENvbnRlbnQgYW5kIFthbXBsZV0gaXMgdGhlIG5leHRDb250ZW50LgorICAgICAgICAg
ICAgYXV0byBjYW5kaWRhdGVJbmRleCA9ICpzdGFydENvbnRlbnQgKyAxOworICAgICAgICAgICAg
Zm9yICg7IGNhbmRpZGF0ZUluZGV4IDwgKm5leHRDb250ZW50OyArK2NhbmRpZGF0ZUluZGV4KSB7
CisgICAgICAgICAgICAgICAgaWYgKGlubGluZUNvbnRlbnRbY2FuZGlkYXRlSW5kZXhdLT5pc0Nv
bnRhaW5lclN0YXJ0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5saW5lIGNvbnRlbnQg
YW5kIFtjb250YWluZXIgc3RhcnRdIGFuZCBbY29udGFpbmVyIGVuZF0gZm9ybSB1bmJyZWFrYWJs
ZSBjb250ZW50LgorICAgICAgICAgICAgICAgICAgICAvLyBleC08c3Bhbj48L3NwYW4+YW1wbGUg
IDogd3JhcCBvcHBvcnR1bml0eSBpcyBhZnRlciAiZXgtIi4KKyAgICAgICAgICAgICAgICAgICAg
Ly8gZXgtPC9zcGFuPjwvc3Bhbj5hbXBsZSA6IHdyYXAgb3Bwb3J0dW5pdHkgaXMgYWZ0ZXIgImV4
LTwvc3Bhbj48L3NwYW4+Ii4KKyAgICAgICAgICAgICAgICAgICAgLy8gZXgtPC9zcGFuPjxzcGFu
PmFtcGxlPC9zcGFuPiA6IHdyYXAgb3Bwb3J0dW5pdHkgaXMgYWZ0ZXIgImV4LTwvc3Bhbj4iLgor
ICAgICAgICAgICAgICAgICAgICAvLyBleC08c3Bhbj48c3Bhbj5hbXBsZTwvc3Bhbj48L3NwYW4+
IDogd3JhcCBvcHBvcnR1bml0eSBpcyBhZnRlciAiZXgtIi4KKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGNhbmRpZGF0ZUluZGV4OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVJbmRleDsKICAgICAgICAgfQotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgc3RhcnRDb250ZW50ID0gbmV4dENvbnRlbnQ7
CiAgICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiBlbmQ7CiB9CiAKIExpbmVCcmVha2VyOjpDb250aW5vdXNDb250ZW50OjpDb250aW5v
dXNDb250ZW50KGNvbnN0IFJ1bkxpc3QmIHJ1bnMpCkBAIC00MDEsNyArNDA3LDcgQEAgTGluZUJy
ZWFrZXI6OkNvbnRpbm91c0NvbnRlbnQ6OkNvbnRpbm91c0NvbnRlbnQoY29uc3QgUnVuTGlzdCYg
cnVucykKICAgICAvLyBGaWd1cmUgb3V0IHRoZSB0cmFpbGluZyBjb2xsYXBzaWJsZSBzdGF0ZS4K
ICAgICBmb3IgKGF1dG8mIHJ1biA6IFdURjo6bWFrZVJldmVyc2VkUmFuZ2UobV9ydW5zKSkgewog
ICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gcnVuLmlubGluZUl0ZW07Ci0gICAgICAgIGlmIChp
bmxpbmVJdGVtLmlzQm94KCkgfHwgaW5saW5lSXRlbS5pc0xpbmVCcmVhaygpKSB7CisgICAgICAg
IGlmIChpbmxpbmVJdGVtLmlzQm94KCkpIHsKICAgICAgICAgICAgIC8vIFdlIGRpZCByZWFjaCBh
IG5vbi1jb2xsYXBzaWJsZSBjb250ZW50LiBXZSBoYXZlIGFsbCB0aGUgdHJhaWxpbmcgd2hpdGVz
cGFjZSBub3cuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNDI2LDggKzQzMiwx
MSBAQCBMaW5lQnJlYWtlcjo6Q29udGlub3VzQ29udGVudDo6Q29udGlub3VzQ29udGVudChjb25z
dCBSdW5MaXN0JiBydW5zKQogICAgIH0KICAgICAvLyBUaGUgdHJhaWxpbmcgd2hpdGVzcGFjZSBs
b29wIGFib3ZlIGlzIG1vc3RseSBhYm91dCBpbnNwZWN0aW5nIHRoZSBsYXN0IGVudHJ5LCBzbyB3
aGlsZSBpdAogICAgIC8vIGxvb2tzIGxpa2Ugd2UgYXJlIGxvb3BpbmcgdGhyb3VnaCB0aGUgbV9y
dW5zIHR3aWNlLCBpdCdzIHJlYWxseSBqdXN0IG9uZSBmdWxsIGxvb3AgaW4gYWRkaXRpb24gdG8g
Y2hlY2tpbmcgdGhlIGxhc3QgcnVuLgotICAgIGZvciAoYXV0byYgcnVuIDogbV9ydW5zKQorICAg
IGZvciAoYXV0byYgcnVuIDogbV9ydW5zKSB7CisgICAgICAgIC8vIExpbmUgYnJlYWsgaXMgbm90
IGNvbnNpZGVyZWQgYW4gaW5saW5lIGNvbnRlbnQuCisgICAgICAgIEFTU0VSVCghcnVuLmlubGlu
ZUl0ZW0uaXNMaW5lQnJlYWsoKSk7CiAgICAgICAgIG1fd2lkdGggKz0gcnVuLmxvZ2ljYWxXaWR0
aDsKKyAgICB9CiB9CiAKIGJvb2wgTGluZUJyZWFrZXI6OkNvbnRpbm91c0NvbnRlbnQ6Omhhc1Rl
eHRDb250ZW50T25seSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuaAppbmRleCAzNWYyMzUyNmJm
OWEyMGM5ZjAyY2YyYWQ2YWVjMzNjMWM2YzI1OTgxLi4wZWU1ZTBmZTFhODc5YTcwOGVjYWM4ODll
YmFkNDJmZTIxYWNjMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmgKQEAgLTY3LDcgKzY3LDcgQEAg
cHVibGljOgogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCB7IDAgfTsKICAg
ICB9OwogICAgIHVzaW5nIFJ1bkxpc3QgPSBWZWN0b3I8UnVuLCAzMD47Ci0gICAgc3RhdGljIE9w
dGlvbmFsPHNpemVfdD4gbGFzdFNvZnRXcmFwT3Bwb3J0dW5pdHkoY29uc3QgSW5saW5lSXRlbSYs
IGNvbnN0IFJ1bkxpc3QmIHByaW9yQ29udGVudCk7CisgICAgc3RhdGljIHNpemVfdCBuZXh0V3Jh
cE9wcG9ydHVuaXR5KGNvbnN0IElubGluZUl0ZW1zJiwgdW5zaWduZWQgc3RhcnRJbmRleCk7CiAK
ICAgICAvLyBUaGlzIHN0cnVjdCByZXByZXNlbnRzIHRoZSBhbW91bnQgb2YgY29udGVudCBjb21t
aXR0ZWQgdG8gbGluZSBicmVha2luZyBhdCBhIHRpbWUgZS5nLgogICAgIC8vIHRleHQgY29udGVu
dCA8c3Bhbj5zcGFuMTwvc3Bhbj5iZXR3ZWVuPHNwYW4+c3BhbjI8L3NwYW4+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0
Q29udGV4dC5jcHAKaW5kZXggYzQxZmQ2N2JlYTQ1ZTQ4YjA1OTg5MDY2ZmNmNTJkYWQzMWUxOWE0
Yy4uMWFlNGI4OTc0MzI3YWVhNDAwOGNjYWE5MTdjYTY3YWJmMGRkMjE2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlv
dXRDb250ZXh0LmNwcApAQCAtMzQsMjkgKzM0LDM2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBu
YW1lc3BhY2UgTGF5b3V0IHsKIAotc3RydWN0IENvbnRpbm91c0NvbnRlbnQgeworc3RydWN0IExp
bmVDYW5kaWRhdGVDb250ZW50IHsKICAgICB2b2lkIGFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiwg
T3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbG9naWNhbFdpZHRoKTsKIAogICAgIGJvb2wgaGFz
SW50cnVzaXZlRmxvYXRzKCkgY29uc3QgeyByZXR1cm4gIW1fZmxvYXRzLmlzRW1wdHkoKTsgfQog
ICAgIGNvbnN0IExpbmVCcmVha2VyOjpSdW5MaXN0JiBydW5zKCkgY29uc3QgeyByZXR1cm4gbV9y
dW5zOyB9CiAgICAgY29uc3QgTGluZUxheW91dENvbnRleHQ6OkZsb2F0TGlzdCYgZmxvYXRzKCkg
Y29uc3QgeyByZXR1cm4gbV9mbG9hdHM7IH0KIAotICAgIGJvb2wgZW5kc1dpdGhMaW5lQnJlYWso
KSBjb25zdCB7IHJldHVybiBtX2VuZHNXaXRoTGluZUJyZWFrOyB9Ci0gICAgdm9pZCBzZXRFbmRz
V2l0aExpbmVCcmVhaygpIHsgbV9lbmRzV2l0aExpbmVCcmVhayA9IHRydWU7IH0KKyAgICBib29s
IGlzTGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gbV9pc0xpbmVCcmVhazsgfQorICAgIHZvaWQg
c2V0SXNMaW5lQnJlYWsoKTsKIAogcHJpdmF0ZToKICAgICBMaW5lQnJlYWtlcjo6UnVuTGlzdCBt
X3J1bnM7CiAgICAgTGluZUxheW91dENvbnRleHQ6OkZsb2F0TGlzdCBtX2Zsb2F0czsKLSAgICBi
b29sIG1fZW5kc1dpdGhMaW5lQnJlYWsgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0xpbmVCcmVh
ayB7IGZhbHNlIH07CiB9OwogCi12b2lkIENvbnRpbm91c0NvbnRlbnQ6OmFwcGVuZChjb25zdCBJ
bmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBsb2dpY2Fs
V2lkdGgpCit2b2lkIExpbmVDYW5kaWRhdGVDb250ZW50OjphcHBlbmQoY29uc3QgSW5saW5lSXRl
bSYgaW5saW5lSXRlbSwgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbG9naWNhbFdpZHRoKQog
ewogICAgIGlmIChpbmxpbmVJdGVtLmlzRmxvYXQoKSkKICAgICAgICAgcmV0dXJuIG1fZmxvYXRz
LmFwcGVuZChtYWtlV2Vha1B0cihpbmxpbmVJdGVtKSk7CiAgICAgbV9ydW5zLmFwcGVuZCh7IGlu
bGluZUl0ZW0sICpsb2dpY2FsV2lkdGggfSk7CiB9CiAKK3ZvaWQgTGluZUNhbmRpZGF0ZUNvbnRl
bnQ6OnNldElzTGluZUJyZWFrKCkKK3sKKyAgICBBU1NFUlQoIWhhc0ludHJ1c2l2ZUZsb2F0cygp
KTsKKyAgICBBU1NFUlQocnVucygpLmlzRW1wdHkoKSk7CisgICAgbV9pc0xpbmVCcmVhayA9IHRy
dWU7Cit9CisKIHN0YXRpYyBJbmxpbmVMYXlvdXRVbml0IGlubGluZUl0ZW1XaWR0aChjb25zdCBG
b3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0IElubGluZUl0ZW0mIGlu
bGluZUl0ZW0sIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KQogewogICAgIGlm
IChpbmxpbmVJdGVtLmlzTGluZUJyZWFrKCkpCkBAIC0xMTEsNyArMTE4LDExIEBAIExpbmVMYXlv
dXRDb250ZXh0OjpMaW5lQ29udGVudCBMaW5lTGF5b3V0Q29udGV4dDo6bGF5b3V0TGluZShMaW5l
QnVpbGRlciYgbGluZSwKICAgICAgICAgLy8gMi4gQXBwbHkgZmxvYXRzIGFuZCBzaHJpbmsgdGhl
IGF2YWlsYWJsZSBob3Jpem9udGFsIHNwYWNlIGUuZy4gPHNwYW4+aW50cnVfPGRpdiBzdHlsZT0i
ZmxvYXQ6IGxlZnQiPjwvZGl2PnNpdmVfZmxvYXQ8L3NwYW4+LgogICAgICAgICAvLyAzLiBDaGVj
ayBpZiB0aGUgY29udGVudCBmaXRzIHRoZSBsaW5lIGFuZCBjb21taXQgdGhlIGNvbnRlbnQgYWNj
b3JkaW5nbHkgKGZ1bGwsIHBhcnRpYWwgb3Igbm90IGNvbW1pdCBhdCBhbGwpLgogICAgICAgICAv
LyA0LiBSZXR1cm4gaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgZWl0aGVyIGJ5IG5v
dCBiZWluZyBhYmxlIHRvIGZpdCBtb3JlIGNvbnRlbnQgb3IgYmVjYXVzZSBvZiBhbiBleHBsaWNp
dCBsaW5lIGJyZWFrLgotICAgICAgICBhdXRvIGNhbmRpZGF0ZUNvbnRlbnQgPSBuZXh0Q29udGlu
b3VzQ29udGVudEZvckxpbmUoY3VycmVudEl0ZW1JbmRleCwgcGFydGlhbExlYWRpbmdDb250ZW50
TGVuZ3RoLCBsaW5lLmxpbmVCb3goKS5sb2dpY2FsV2lkdGgoKSk7CisgICAgICAgIGF1dG8gY2Fu
ZGlkYXRlQ29udGVudCA9IG5leHRDb250ZW50Rm9yTGluZShjdXJyZW50SXRlbUluZGV4LCBwYXJ0
aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgsIGxpbmUubGluZUJveCgpLmxvZ2ljYWxXaWR0aCgpKTsK
KyAgICAgICAgaWYgKGNhbmRpZGF0ZUNvbnRlbnQuaXNMaW5lQnJlYWsoKSkgeworICAgICAgICAg
ICAgbGluZS5hcHBlbmQoKm1faW5saW5lSXRlbXNbY3VycmVudEl0ZW1JbmRleF0sIDApOworICAg
ICAgICAgICAgcmV0dXJuIGNsb3NlKGxpbmUsIGxlYWRpbmdJbmxpbmVJdGVtSW5kZXgsICsrY29t
bWl0dGVkSW5saW5lSXRlbUNvdW50LCB7IH0pOworICAgICAgICB9CiAgICAgICAgIGlmIChjYW5k
aWRhdGVDb250ZW50Lmhhc0ludHJ1c2l2ZUZsb2F0cygpKSB7CiAgICAgICAgICAgICAvLyBBZGQg
ZmxvYXRzIGZpcnN0IGJlY2F1c2UgdGhleSBzaHJpbmsgdGhlIGF2YWlsYWJsZSBob3Jpem9udGFs
IHNwYWNlIGZvciB0aGUgcmVzdCBvZiB0aGUgY29udGVudC4KICAgICAgICAgICAgIGF1dG8gZmxv
YXRDb250ZW50ID0gYWRkRmxvYXRJdGVtcyhsaW5lLCBjYW5kaWRhdGVDb250ZW50LmZsb2F0cygp
KTsKQEAgLTEyMSw3ICsxMzIsNiBAQCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQgTGlu
ZUxheW91dENvbnRleHQ6OmxheW91dExpbmUoTGluZUJ1aWxkZXImIGxpbmUsCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNsb3NlKGxpbmUsIGxlYWRpbmdJbmxpbmVJdGVtSW5kZXgsIGNvbW1pdHRl
ZElubGluZUl0ZW1Db3VudCwgeyB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICBBU1NFUlQoIWNhbmRpZGF0ZUNvbnRlbnQucnVucygpLmlzRW1wdHkoKSB8fCBjYW5kaWRhdGVD
b250ZW50LmVuZHNXaXRoTGluZUJyZWFrKCkgfHwgY2FuZGlkYXRlQ29udGVudC5oYXNJbnRydXNp
dmVGbG9hdHMoKSk7CiAgICAgICAgIGlmICghY2FuZGlkYXRlQ29udGVudC5ydW5zKCkuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAvLyBOb3cgY2hlY2sgaWYgd2UgY2FuIHB1dCB0aGlzIGNvbnRl
bnQgb24gdGhlIGN1cnJlbnQgbGluZS4KICAgICAgICAgICAgIGF1dG8gY29tbWl0dGVkQ29udGVu
dCA9IHBsYWNlSW5saW5lQ29udGVudE9uQ3VycmVudExpbmUobGluZSwgY2FuZGlkYXRlQ29udGVu
dC5ydW5zKCkpOwpAQCAtMTMxLDE0ICsxNDEsNiBAQCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNv
bnRlbnQgTGluZUxheW91dENvbnRleHQ6OmxheW91dExpbmUoTGluZUJ1aWxkZXImIGxpbmUsCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNsb3NlKGxpbmUsIGxlYWRpbmdJbmxpbmVJdGVtSW5kZXgs
IGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCwgY29tbWl0dGVkQ29udGVudC5wYXJ0aWFsQ29udGVu
dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgLy8gV2UgY291bGQgZml0IG1v
cmUgY29udGVudCBidXQgc2FkbHkgdGhpcyBsaW5lIGVuZHMgd2l0aCBhbiBleHBsaWNpdCBsaW5l
IGJyZWFrLgotICAgICAgICBpZiAoY2FuZGlkYXRlQ29udGVudC5lbmRzV2l0aExpbmVCcmVhaygp
KSB7Ci0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHRyYWlsaW5nIGxpbmUgYnJlYWsgZW5k
cyB1cCBvbiB0aGUgbGluZSB0b28uCi0gICAgICAgICAgICBhdXRvIGxpbmVCcmVha0luZGV4ID0g
bGVhZGluZ0lubGluZUl0ZW1JbmRleCArIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudDsKLSAgICAg
ICAgICAgIEFTU0VSVChtX2lubGluZUl0ZW1zW2xpbmVCcmVha0luZGV4XS0+aXNMaW5lQnJlYWso
KSk7Ci0gICAgICAgICAgICBsaW5lLmFwcGVuZCgqbV9pbmxpbmVJdGVtc1tsaW5lQnJlYWtJbmRl
eF0sIDApOwotICAgICAgICAgICAgcmV0dXJuIGNsb3NlKGxpbmUsIGxlYWRpbmdJbmxpbmVJdGVt
SW5kZXgsICsrY29tbWl0dGVkSW5saW5lSXRlbUNvdW50LCB7IH0pOwotICAgICAgICB9CiAgICAg
ICAgIGN1cnJlbnRJdGVtSW5kZXggPSBsZWFkaW5nSW5saW5lSXRlbUluZGV4ICsgY29tbWl0dGVk
SW5saW5lSXRlbUNvdW50OwogICAgICAgICBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGggPSB7
IH07CiAgICAgfQpAQCAtMTc2LDEyICsxNzgsMTYgQEAgTGluZUxheW91dENvbnRleHQ6OkxpbmVD
b250ZW50IExpbmVMYXlvdXRDb250ZXh0OjpjbG9zZShMaW5lQnVpbGRlciYgbGluZSwgdW5zaWcK
ICAgICByZXR1cm4gTGluZUNvbnRlbnQgeyB0cmFpbGluZ0lubGluZUl0ZW1JbmRleCwgcGFydGlh
bENvbnRlbnQsIFdURk1vdmUobV9mbG9hdHMpLCBsaW5lLmNsb3NlKGlzTGFzdExpbmVXaXRoSW5s
aW5lQ29udGVudCksIGxpbmUubGluZUJveCgpIH07CiB9CiAKLUNvbnRpbm91c0NvbnRlbnQgTGlu
ZUxheW91dENvbnRleHQ6Om5leHRDb250aW5vdXNDb250ZW50Rm9yTGluZSh1bnNpZ25lZCBpbmxp
bmVJdGVtSW5kZXgsIE9wdGlvbmFsPHVuc2lnbmVkPiBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5n
dGgsIElubGluZUxheW91dFVuaXQgY3VycmVudExvZ2ljYWxSaWdodCkKK0xpbmVDYW5kaWRhdGVD
b250ZW50IExpbmVMYXlvdXRDb250ZXh0OjpuZXh0Q29udGVudEZvckxpbmUodW5zaWduZWQgaW5s
aW5lSXRlbUluZGV4LCBPcHRpb25hbDx1bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVu
Z3RoLCBJbmxpbmVMYXlvdXRVbml0IGN1cnJlbnRMb2dpY2FsUmlnaHQpCiB7Ci0gICAgYXV0byBj
YW5kaWRhdGVDb250ZW50ID0gQ29udGlub3VzQ29udGVudCB7IH07CiAgICAgLy8gMS4gU2ltcGx5
IGFkZCBhbnkgb3ZlcmZsb3cgY29udGVudCBmcm9tIHRoZSBwcmV2aW91cyBsaW5lIHRvIHRoZSBj
YW5kaWRhdGUgY29udGVudC4gSXQncyBhbHdheXMgYSB0ZXh0IGNvbnRlbnQuCiAgICAgLy8gMi4g
RmluZCB0aGUgbmV4dCBzb2Z0IHdyYXAgcG9zaXRpb24gb3IgZXhwbGljaXQgbGluZSBicmVhay4K
ICAgICAvLyAzLiBDb2xsZWN0IGZsb2F0cyBiZXR3ZWVuIHRoZSBpbmxpbmUgY29udGVudC4KKyAg
ICBhdXRvIHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCA9IExpbmVCcmVha2VyOjpuZXh0V3JhcE9w
cG9ydHVuaXR5KG1faW5saW5lSXRlbXMsIGlubGluZUl0ZW1JbmRleCk7CisgICAgLy8gc29mdFdy
YXBPcHBvcnR1bml0eUluZGV4ID09IG1faW5saW5lSXRlbXMuc2l6ZSgpIG1lYW5zIHdlIGRvbid0
IGhhdmUgYW55IHdyYXAgb3Bwb3J0dW5pdHkgaW4gdGhpcyBjb250ZW50LgorICAgIEFTU0VSVChz
b2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXggPD0gbV9pbmxpbmVJdGVtcy5zaXplKCkpOworCisgICAg
YXV0byBjYW5kaWRhdGVDb250ZW50ID0gTGluZUNhbmRpZGF0ZUNvbnRlbnQgeyB9OwogICAgIGlm
IChwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgpIHsKICAgICAgICAgLy8gSGFuZGxlIGxlYWRp
bmcgcGFydGlhbCBjb250ZW50IGZpcnN0IChzcGxpdCB0ZXh0IGZyb20gdGhlIHByZXZpb3VzIGxp
bmUpLgogICAgICAgICAvLyBDb25zdHJ1Y3QgYSBwYXJ0aWFsIGxlYWRpbmcgaW5saW5lIGl0ZW0u
CkBAIC0xOTIsMjggKzE5OCwyNSBAQCBDb250aW5vdXNDb250ZW50IExpbmVMYXlvdXRDb250ZXh0
OjpuZXh0Q29udGlub3VzQ29udGVudEZvckxpbmUodW5zaWduZWQgaW5saW5lSQogICAgICAgICAr
K2lubGluZUl0ZW1JbmRleDsKICAgICB9CiAKLSAgICB3aGlsZSAoaW5saW5lSXRlbUluZGV4IDwg
bV9pbmxpbmVJdGVtcy5zaXplKCkpIHsKLSAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9ICptX2lu
bGluZUl0ZW1zW2lubGluZUl0ZW1JbmRleF07CisgICAgLy8gQXJlIHdlIHdyYXBwaW5nIGF0IGEg
bGluZSBicmVhaz8KKyAgICBhdXRvIGlzU2luZ2xlSXRlbSA9IHNvZnRXcmFwT3Bwb3J0dW5pdHlJ
bmRleCA8IG1faW5saW5lSXRlbXMuc2l6ZSgpICYmIGlubGluZUl0ZW1JbmRleCArIDEgPT0gc29m
dFdyYXBPcHBvcnR1bml0eUluZGV4OworICAgIGlmIChpc1NpbmdsZUl0ZW0gJiYgbV9pbmxpbmVJ
dGVtc1tpbmxpbmVJdGVtSW5kZXhdLT5pc0xpbmVCcmVhaygpKSB7CisgICAgICAgIGNhbmRpZGF0
ZUNvbnRlbnQuc2V0SXNMaW5lQnJlYWsoKTsKKyAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUNvbnRl
bnQ7CisgICAgfQorCisgICAgZm9yIChhdXRvIGluZGV4ID0gaW5saW5lSXRlbUluZGV4OyBpbmRl
eCA8IHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleDsgKytpbmRleCkgeworICAgICAgICBhdXRvJiBp
bmxpbmVJdGVtID0gKm1faW5saW5lSXRlbXNbaW5kZXhdOworICAgICAgICBBU1NFUlQoIWlubGlu
ZUl0ZW0uaXNMaW5lQnJlYWsoKSk7CiAgICAgICAgIGlmIChpbmxpbmVJdGVtLmlzRmxvYXQoKSkg
ewogICAgICAgICAgICAgLy8gRmxvYXRzIGFyZSBub3QgcGFydCBvZiB0aGUgbGluZSBjb250ZXh0
LgogICAgICAgICAgICAgLy8gRklYTUU6IENoZWNrIGlmIHRoZWlyIHdpZHRoIHNob3VsZCBiZSBh
ZGRlZCB0byBjdXJyZW50TG9naWNhbFJpZ2h0LgogICAgICAgICAgICAgY2FuZGlkYXRlQ29udGVu
dC5hcHBlbmQoaW5saW5lSXRlbSwgeyB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChpbmxpbmVJdGVtLmlzTGluZUJyZWFrKCkpIHsKLSAgICAgICAgICAg
IC8vIFdlIGRlZmluaXRlbHkgbmVlZCB0byBzdG9wIGF0IHRoZSBsaW5lIGJyZWFrLgotICAgICAg
ICAgICAgY2FuZGlkYXRlQ29udGVudC5zZXRFbmRzV2l0aExpbmVCcmVhaygpOwotICAgICAgICAg
ICAgcmV0dXJuIGNhbmRpZGF0ZUNvbnRlbnQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKExpbmVC
cmVha2VyOjpsYXN0U29mdFdyYXBPcHBvcnR1bml0eShpbmxpbmVJdGVtLCBjYW5kaWRhdGVDb250
ZW50LnJ1bnMoKSkpIHsKLSAgICAgICAgICAgIC8vIExldCdzIHdyYXAgdXAgdGhpcyBsaXN0LCBp
ZiB3ZSBhcnJpdmVkIHRvIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5LgotICAgICAgICAgICAgcmV0
dXJuIGNhbmRpZGF0ZUNvbnRlbnQ7Ci0gICAgICAgIH0KLQogICAgICAgICBhdXRvIGlubGluZUl0
ZW5tV2lkdGggPSBpbmxpbmVJdGVtV2lkdGgoZm9ybWF0dGluZ0NvbnRleHQoKSwgaW5saW5lSXRl
bSwgY3VycmVudExvZ2ljYWxSaWdodCk7CiAgICAgICAgIGNhbmRpZGF0ZUNvbnRlbnQuYXBwZW5k
KGlubGluZUl0ZW0sIGlubGluZUl0ZW5tV2lkdGgpOwogICAgICAgICBjdXJyZW50TG9naWNhbFJp
Z2h0ICs9IGlubGluZUl0ZW5tV2lkdGg7Ci0gICAgICAgICsraW5saW5lSXRlbUluZGV4OwogICAg
IH0KICAgICByZXR1cm4gY2FuZGlkYXRlQ29udGVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCmlu
ZGV4IDAwM2M4NTVjZThiZmI5YzM2Y2U3ZGJhNWU4MjJmMTc2MWFiMzk0YzMuLjM4NmNhNDk0Mjcz
ZjhjYWE0ODIyYTgxMWVlMDEzMjY2OTdmZjgzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaApAQCAt
MzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAK
LXN0cnVjdCBDb250aW5vdXNDb250ZW50Oworc3RydWN0IExpbmVDYW5kaWRhdGVDb250ZW50Owog
CiBjbGFzcyBMaW5lTGF5b3V0Q29udGV4dCB7CiBwdWJsaWM6CkBAIC01OSw3ICs1OSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHNpemVfdCBjb3VudCB7IDAgfTsKICAgICAgICAgT3B0aW9uYWwgPExp
bmVDb250ZW50OjpQYXJ0aWFsQ29udGVudD4gcGFydGlhbENvbnRlbnQ7CiAgICAgfTsKLSAgICBD
b250aW5vdXNDb250ZW50IG5leHRDb250aW5vdXNDb250ZW50Rm9yTGluZSh1bnNpZ25lZCBpbmxp
bmVJdGVtSW5kZXgsIE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0aCwgSW5saW5lTGF5
b3V0VW5pdCBjdXJyZW50TG9naWNhbFJpZ2h0KTsKKyAgICBMaW5lQ2FuZGlkYXRlQ29udGVudCBu
ZXh0Q29udGVudEZvckxpbmUodW5zaWduZWQgaW5saW5lSXRlbUluZGV4LCBPcHRpb25hbDx1bnNp
Z25lZD4gb3ZlcmZsb3dMZW5ndGgsIElubGluZUxheW91dFVuaXQgY3VycmVudExvZ2ljYWxSaWdo
dCk7CiAgICAgQ29tbWl0dGVkQ29udGVudCBhZGRGbG9hdEl0ZW1zKExpbmVCdWlsZGVyJiwgY29u
c3QgRmxvYXRMaXN0Jik7CiAgICAgQ29tbWl0dGVkQ29udGVudCBwbGFjZUlubGluZUNvbnRlbnRP
bkN1cnJlbnRMaW5lKExpbmVCdWlsZGVyJiwgY29uc3QgTGluZUJyZWFrZXI6OlJ1bkxpc3QmKTsK
ICAgICB2b2lkIGNvbW1pdENvbnRlbnQoTGluZUJ1aWxkZXImLCBjb25zdCBMaW5lQnJlYWtlcjo6
UnVuTGlzdCYsIE9wdGlvbmFsPExpbmVCcmVha2VyOjpCcmVha2luZ0NvbnRleHQ6OlBhcnRpYWxU
cmFpbGluZ0NvbnRlbnQ+KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>