<?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>139658</bug_id>
          
          <creation_ts>2014-12-15 15:19:28 -0800</creation_ts>
          <short_desc>REGRESSION(r177284): &quot;Breaks API tests and LayoutTests on Yosemite Debug&quot; (Requested by msaboff on #webkit).</short_desc>
          <delta_ts>2014-12-15 15:23:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>138821</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>mark.lam</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1055759</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-15 15:19:28 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/177284 broke the build:
&quot;Breaks API tests and LayoutTests on Yosemite Debug&quot; (Requested by msaboff on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055761</commentid>
    <comment_count>1</comment_count>
      <attachid>243316</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-15 15:20:00 -0800</bug_when>
    <thetext>Created attachment 243316
ROLLOUT of r177284

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055763</commentid>
    <comment_count>2</comment_count>
      <attachid>243316</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-15 15:23:29 -0800</bug_when>
    <thetext>Comment on attachment 243316
ROLLOUT of r177284

Clearing flags on attachment: 243316

Committed r177316: &lt;http://trac.webkit.org/changeset/177316&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055764</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-15 15:23:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243316</attachid>
            <date>2014-12-15 15:20:00 -0800</date>
            <delta_ts>2014-12-15 15:23:29 -0800</delta_ts>
            <desc>ROLLOUT of r177284</desc>
            <filename>bug-139658-20141215152048.patch</filename>
            <type>text/plain</type>
            <size>59480</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NmU4OWZhN2QxNzY5OWMxNTJiNmUwYThlYTA3OGRlOGM5ZTliMGUwLi5mZmU1NDU3ZDk5YmU0OTkx
YTkwZjk5MmYwNTI4NWRjMDdlMDhlMDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNC0xMi0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3NzI4NC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTY1OAorCisgICAg
ICAgICJCcmVha3MgQVBJIHRlc3RzIGFuZCBMYXlvdXRUZXN0cyBvbiBZb3NlbWl0ZSBEZWJ1ZyIK
KyAgICAgICAgKFJlcXVlc3RlZCBieSBtc2Fib2ZmIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJl
dmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiTWFrZSBzdXJlIHJhbmdlIGJhc2VkIGl0ZXJh
dGlvbiBvZiBWZWN0b3I8PiBzdGlsbCByZWNlaXZlcworICAgICAgICBib3VuZHMgY2hlY2tpbmci
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg4MjEK
KyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTc3Mjg0CisKIDIwMTQt
MTItMTUgIETDoW5pZWwgQsOhdHlhaSAgPGRiYXR5YWkudS1zemVnZWRAcGFydG5lci5zYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRUZMXSBGVEwgSklUIG5vdCB3b3JraW5nIG9uIEFSTTY0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGE0MjI2MWI0MGZlNGIwODYyNDhjMzhkMjBkOTllMjViNDIyZjU1ODAuLjUzMzNkMjdhNDhiM2I0
NjVmZDlkNDZjZWZiNjE3YTI5Y2FmZTNjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTQtMTIt
MTUgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNzcyODQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk2NTgKKworICAgICAgICAiQnJlYWtzIEFQSSB0ZXN0
cyBhbmQgTGF5b3V0VGVzdHMgb24gWW9zZW1pdGUgRGVidWciCisgICAgICAgIChSZXF1ZXN0ZWQg
YnkgbXNhYm9mZiBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisK
KyAgICAgICAgIk1ha2Ugc3VyZSByYW5nZSBiYXNlZCBpdGVyYXRpb24gb2YgVmVjdG9yPD4gc3Rp
bGwgcmVjZWl2ZXMKKyAgICAgICAgYm91bmRzIGNoZWNraW5nIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4ODIxCisgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzE3NzI4NAorCiAyMDE0LTEyLTE1ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBQdXJnZSBQYXNzUmVmUHRyIGZyb20gRm9j
dXNFdmVudCBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA4MjE5YjFmNTU2MWIxMjhjM2Q0MDZkOWYyNmM2
ZTIyZjg2YzJlMjAuLjNkNGFiZGUyYTk5Y2M3OWQ5YjlhMDYyZWU2OTljNzVmMWQ2MWVlMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNC0xMi0xNSAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjE3NzI4NC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzOTY1OAorCisgICAgICAgICJCcmVha3MgQVBJIHRlc3RzIGFuZCBMYXlvdXRUZXN0cyBvbiBZ
b3NlbWl0ZSBEZWJ1ZyIKKyAgICAgICAgKFJlcXVlc3RlZCBieSBtc2Fib2ZmIG9uICN3ZWJraXQp
LgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiTWFrZSBzdXJlIHJh
bmdlIGJhc2VkIGl0ZXJhdGlvbiBvZiBWZWN0b3I8PiBzdGlsbCByZWNlaXZlcworICAgICAgICBi
b3VuZHMgY2hlY2tpbmciCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzg4MjEKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MTc3Mjg0CisKIDIwMTQtMTItMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgY2xvbmVOb2RlKHRydWUpIGRvZXMgbm90IGNsb25lIG5lc3RlZCB0ZW1wbGF0ZSBl
bGVtZW50cycgY29udGVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDA3MTdhZTg4NmQ5YmQwMjIyZGZkZDg3MGZj
OTA0Mjk0ZDZmMDQyMmQuLjc0MGEyNDQyNjVjYzg1MmJhM2E3YmNhMmExZWI3ZjQ1ODk3OGM0NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcApAQCAtMjI5LDkgKzIyOSw5IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3N5bWJvbFRhYmxlKTsKICAgICBmb3IgKEZ1bmN0aW9uRXhwcmVzc2lv
blZlY3Rvcjo6aXRlcmF0b3IgcHRyID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkRlY2xzLmJlZ2lu
KCksIGVuZCA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25EZWNscy5lbmQoKTsgcHRyICE9IGVuZDsg
KytwdHIpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKFdURjo6Z2V0UHRyKHB0cikpOworICAgICAg
ICB2aXNpdG9yLmFwcGVuZChwdHIpOwogICAgIGZvciAoRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9y
OjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRXhwcnMuYmVnaW4oKSwgZW5k
ID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkV4cHJzLmVuZCgpOyBwdHIgIT0gZW5kOyArK3B0cikK
LSAgICAgICAgdmlzaXRvci5hcHBlbmQoV1RGOjpnZXRQdHIocHRyKSk7CisgICAgICAgIHZpc2l0
b3IuYXBwZW5kKHB0cik7CiAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bV9j
b25zdGFudFJlZ2lzdGVycy5kYXRhKCksIHRoaXNPYmplY3QtPm1fY29uc3RhbnRSZWdpc3RlcnMu
c2l6ZSgpKTsKICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkgewogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMCwgZW5kID0gdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+bV9yZWdleHBzLnNp
emUoKTsgaSAhPSBlbmQ7IGkrKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNTM2MWY4OTc0ZDA1YzEw
MzU4NmZmZGYxMTYzZjk3ZGFlMDRjNWJiNy4uMGIxNTY1ODZiNjMzNGU0OWFmZmM3OThmNTUzNWU4
ZmU0MDIwYjMxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTIyODMsOCArMjI4Myw4IEBAIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9wU2NvcGVzKFJlZ2lzdGVySUQqIHNjb3Bl
LCBDb250cm9sRmxvd0NvbnRlCiAgICAgICAgICAgICBpbnQgdG9wU2NvcGVJbmRleCA9IC0xOwog
ICAgICAgICAgICAgaW50IGJvdHRvbVNjb3BlSW5kZXggPSAtMTsKICAgICAgICAgICAgIGlmIChm
bGlwU2NvcGVzKSB7Ci0gICAgICAgICAgICAgICAgdG9wU2NvcGVJbmRleCA9IHRvcFNjb3BlIC0g
bV9zY29wZUNvbnRleHRTdGFjay5kYXRhKCk7Ci0gICAgICAgICAgICAgICAgYm90dG9tU2NvcGVJ
bmRleCA9IGJvdHRvbVNjb3BlIC0gbV9zY29wZUNvbnRleHRTdGFjay5kYXRhKCk7CisgICAgICAg
ICAgICAgICAgdG9wU2NvcGVJbmRleCA9IHRvcFNjb3BlIC0gbV9zY29wZUNvbnRleHRTdGFjay5i
ZWdpbigpOworICAgICAgICAgICAgICAgIGJvdHRvbVNjb3BlSW5kZXggPSBib3R0b21TY29wZSAt
IG1fc2NvcGVDb250ZXh0U3RhY2suYmVnaW4oKTsKICAgICAgICAgICAgICAgICBzYXZlZFNjb3Bl
Q29udGV4dFN0YWNrID0gbV9zY29wZUNvbnRleHRTdGFjazsKICAgICAgICAgICAgICAgICBtX3Nj
b3BlQ29udGV4dFN0YWNrLnNocmluayhmaW5hbGx5Q29udGV4dC5zY29wZUNvbnRleHRTdGFja1Np
emUpOwogICAgICAgICAgICAgfQpAQCAtMjMyOCw3ICsyMzI4LDcgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0ZXJJRCogc2NvcGUsIENvbnRyb2xG
bG93Q29udGUKICAgICAgICAgICAgIGlmIChmbGlwU2NvcGVzKSB7CiAgICAgICAgICAgICAgICAg
bV9zY29wZUNvbnRleHRTdGFjayA9IHNhdmVkU2NvcGVDb250ZXh0U3RhY2s7CiAgICAgICAgICAg
ICAgICAgdG9wU2NvcGUgPSAmbV9zY29wZUNvbnRleHRTdGFja1t0b3BTY29wZUluZGV4XTsgLy8g
YXNzZXJ0IGl0J3Mgd2l0aGluIGJvdW5kcwotICAgICAgICAgICAgICAgIGJvdHRvbVNjb3BlID0g
bV9zY29wZUNvbnRleHRTdGFjay5kYXRhKCkgKyBib3R0b21TY29wZUluZGV4OyAvLyBkb24ndCBh
c3NlcnQsIHNpbmNlIGl0IHRoZSBpbmRleCBtaWdodCBiZSAtMS4KKyAgICAgICAgICAgICAgICBi
b3R0b21TY29wZSA9IG1fc2NvcGVDb250ZXh0U3RhY2suYmVnaW4oKSArIGJvdHRvbVNjb3BlSW5k
ZXg7IC8vIGRvbid0IGFzc2VydCwgc2luY2UgaXQgdGhlIGluZGV4IG1pZ2h0IGJlIC0xLgogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGZsaXBTd2l0Y2hlcykKICAgICAgICAgICAgICAg
ICBtX3N3aXRjaENvbnRleHRTdGFjayA9IHNhdmVkU3dpdGNoQ29udGV4dFN0YWNrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAzYmUx
OGVhNmM2Y2I3ZjM2ZjQ4ZTIwYjU5ZjcyM2VjYzUxNGI5ZDNmLi5mMDcyNGRmNDcwMzk0OWIzMGQy
NGUzNmFhODJlNzc4YTVjYjliZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNDkxMCw3ICs0OTEwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXAoCiAgICAgYWRkQnJhbmNoKAogICAgICAgICBtX2pp
dC5icmFuY2gzMihKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCB2YWx1ZSwgSW1tMzIodGFibGUu
Y3RpT2Zmc2V0cy5zaXplKCkpKSwKICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwot
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cih0YWJsZS5jdGlPZmZzZXRzLmRhdGEoKSksIHNj
cmF0Y2gpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cih0YWJsZS5jdGlPZmZzZXRzLmJl
Z2luKCkpLCBzY3JhdGNoKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpCYXNlSW5k
ZXgoc2NyYXRjaCwgdmFsdWUsIEpJVENvbXBpbGVyOjp0aW1lc1B0cigpKSwgc2NyYXRjaCk7CiAg
ICAgbV9qaXQuanVtcChzY3JhdGNoKTsKICAgICBkYXRhLT5kaWRVc2VKdW1wVGFibGUgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYmJyZXZpYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGlvbnMuaAppbmRleCA3
YjFhMWNlN2IzODM3ZTgxNGNiYTJiM2VjYzNhMDdiMDE4ZDlhZTMwLi5mYzdjYjFiMjU0MzI2OTRh
YWVlOGZiZjMxNTNlNmUwOGE4MzMyZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFiYnJldmlhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFiYnJldmlhdGlvbnMuaApAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyBpbmxpbmUgTFZh
bHVlIG1kU3RyaW5nKExDb250ZXh0IGNvbnRleHQsIGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWdu
ZWQgbGVuCiBzdGF0aWMgaW5saW5lIExWYWx1ZSBtZFN0cmluZyhMQ29udGV4dCBjb250ZXh0LCBj
b25zdCBjaGFyKiBzdHJpbmcpIHsgcmV0dXJuIG1kU3RyaW5nKGNvbnRleHQsIHN0cmluZywgc3Rk
OjpzdHJsZW4oc3RyaW5nKSk7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVlIG1kTm9kZShMQ29udGV4
dCBjb250ZXh0LCBMVmFsdWUqIGFyZ3MsIHVuc2lnbmVkIG51bUFyZ3MpIHsgcmV0dXJuIGxsdm0t
Pk1ETm9kZUluQ29udGV4dChjb250ZXh0LCBhcmdzLCBudW1BcmdzKTsgfQogdGVtcGxhdGU8dHlw
ZW5hbWUgVmVjdG9yVHlwZT4KLXN0YXRpYyBpbmxpbmUgTFZhbHVlIG1kTm9kZShMQ29udGV4dCBj
b250ZXh0LCBjb25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpIHsgcmV0dXJuIG1kTm9kZShjb250ZXh0
LCBjb25zdF9jYXN0PExWYWx1ZSo+KHZlY3Rvci5kYXRhKCkpLCB2ZWN0b3Iuc2l6ZSgpKTsgfQor
c3RhdGljIGlubGluZSBMVmFsdWUgbWROb2RlKExDb250ZXh0IGNvbnRleHQsIGNvbnN0IFZlY3Rv
clR5cGUmIHZlY3RvcikgeyByZXR1cm4gbWROb2RlKGNvbnRleHQsIGNvbnN0X2Nhc3Q8TFZhbHVl
Kj4odmVjdG9yLmJlZ2luKCkpLCB2ZWN0b3Iuc2l6ZSgpKTsgfQogc3RhdGljIGlubGluZSBMVmFs
dWUgbWROb2RlKExDb250ZXh0IGNvbnRleHQpIHsgcmV0dXJuIG1kTm9kZShjb250ZXh0LCAwLCAw
KTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgbWROb2RlKExDb250ZXh0IGNvbnRleHQsIExWYWx1
ZSBhcmcxKSB7IHJldHVybiBtZE5vZGUoY29udGV4dCwgJmFyZzEsIDEpOyB9CiBzdGF0aWMgaW5s
aW5lIExWYWx1ZSBtZE5vZGUoTENvbnRleHQgY29udGV4dCwgTFZhbHVlIGFyZzEsIExWYWx1ZSBh
cmcyKQpAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyBpbmxpbmUgTFZhbHVlIGJ1aWxkQ2FsbChM
QnVpbGRlciBidWlsZGVyLCBMVmFsdWUgZnVuY3Rpb24sIGNvbnN0IExWYWx1ZSoKIHRlbXBsYXRl
PHR5cGVuYW1lIFZlY3RvclR5cGU+CiBpbmxpbmUgTFZhbHVlIGJ1aWxkQ2FsbChMQnVpbGRlciBi
dWlsZGVyLCBMVmFsdWUgZnVuY3Rpb24sIGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikKIHsKLSAg
ICByZXR1cm4gYnVpbGRDYWxsKGJ1aWxkZXIsIGZ1bmN0aW9uLCB2ZWN0b3IuZGF0YSgpLCB2ZWN0
b3Iuc2l6ZSgpKTsKKyAgICByZXR1cm4gYnVpbGRDYWxsKGJ1aWxkZXIsIGZ1bmN0aW9uLCB2ZWN0
b3IuYmVnaW4oKSwgdmVjdG9yLnNpemUoKSk7CiB9CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBidWls
ZENhbGwoTEJ1aWxkZXIgYnVpbGRlciwgTFZhbHVlIGZ1bmN0aW9uKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCA0NGFmY2E0Y2JhZDhiM2U1NTMzNDEy
OWFjOWM5YjBkZWZkOTU2MWU4Li42OTE5YWVhYjAwYTFiMjVjNDc1YmJmOWRkMjVjNjg4ZjBhYTU4
YTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTYx
LDcgKzE2MSw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIFZl
Y3RvcjxpbnQ+IHRlc3RWZWN0b3I7CiAgICAgdGVzdFZlY3Rvci5yZXNpemUoNDIpOwogICAgIEFT
U0VSVChiaXR3aXNlX2Nhc3Q8dWludDMyX3QqPigmdGVzdFZlY3Rvcilbc2l6ZW9mKHZvaWQqKS9z
aXplb2YodWludDMyX3QpICsgMV0gPT0gNDIpOwotICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8aW50
Kio+KCZ0ZXN0VmVjdG9yKVswXSA9PSB0ZXN0VmVjdG9yLmRhdGEoKSk7CisgICAgQVNTRVJUKGJp
dHdpc2VfY2FzdDxpbnQqKj4oJnRlc3RWZWN0b3IpWzBdID09IHRlc3RWZWN0b3IuYmVnaW4oKSk7
CiAjZW5kaWYKIAogICAgIEFTU0VSVChTdHJpbmdJbXBsOjpzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9
PSAzMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA5MzZjOGJjYWUy
NzVmZTk2OWU2NDM5M2I3ZGIxMDJmYTI1ODFiZmNlLi43NjRlM2QzM2E5MWE3ZmFjOGFjYmFmMzI1
ZWRiYzFlYzRmOTlkMmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAg
LTEzMCw4ICsxMzAsMTAgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgaWYgKHJocy5tX2xhYmVs
cykgewogICAgICAgICAgICAgbV9sYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExhYmVsU3RhY2s+
KCk7CiAKLSAgICAgICAgICAgIGZvciAoYXV0byBsYWJlbCA6ICpyaHMubV9sYWJlbHMpCi0gICAg
ICAgICAgICAgICAgbV9sYWJlbHMtPmFwcGVuZChTY29wZUxhYmVsSW5mbyhsYWJlbC5tX2lkZW50
LCBsYWJlbC5tX2lzTG9vcCkpOworICAgICAgICAgICAgdHlwZWRlZiBMYWJlbFN0YWNrOjpjb25z
dF9pdGVyYXRvciBpdGVyYXRvcjsKKyAgICAgICAgICAgIGl0ZXJhdG9yIGVuZCA9IHJocy5tX2xh
YmVscy0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gcmhzLm1fbGFiZWxz
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICAgICAgbV9sYWJlbHMtPmFw
cGVuZChTY29wZUxhYmVsSW5mbyhpdC0+bV9pZGVudCwgaXQtPm1faXNMb29wKSk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5k
ZXggMGY5ZWFjY2ZkZGQxOTMzOTViYTQzNWJlODA5ZmRiN2EzM2YxNWYwYS4uNTE3NzIxZTk4NDQ5
ZTFlZDNlYTA1ZTUwOTZhNDNjMzE0ODI4ODg5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAKQEAgLTM1MSw3ICszNTEsNyBAQCBib29sIEpTQXJyYXk6OnNldExl
bmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBuZXdMZW5ndGgs
IGJvbwogICAgICAgICAgICAgLy8gcHJvcGVydGllcywgc28gd2UgaGF2ZSB0byBwZXJmb3JtIGRl
bGV0aW9uIHdpdGggY2F1dGlvbiwgaWYgbm90IHdlIGNhbgogICAgICAgICAgICAgLy8gZGVsZXRl
IHZhbHVlcyBpbiBhbnkgb3JkZXIuCiAgICAgICAgICAgICBpZiAobWFwLT5zcGFyc2VNb2RlKCkp
IHsKLSAgICAgICAgICAgICAgICBxc29ydChrZXlzLmRhdGEoKSwga2V5cy5zaXplKCksIHNpemVv
Zih1bnNpZ25lZCksIGNvbXBhcmVLZXlzRm9yUVNvcnQpOworICAgICAgICAgICAgICAgIHFzb3J0
KGtleXMuYmVnaW4oKSwga2V5cy5zaXplKCksIHNpemVvZih1bnNpZ25lZCksIGNvbXBhcmVLZXlz
Rm9yUVNvcnQpOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGkgPSBrZXlzLnNpemUoKTsKICAg
ICAgICAgICAgICAgICB3aGlsZSAoaSkgewogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bmRleCA9IGtleXNbLS1pXTsKQEAgLTExOTAsMTMgKzExOTAsMTMgQEAgdm9pZCBKU0FycmF5Ojpz
b3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgQ29udGlndW91c0RhdGE8U3RvcmFn
ZVR5cGU+IGQKICAgICAgICAgCiAjaWYgSEFWRShNRVJHRVNPUlQpCiAgICAgaWYgKGlzU29ydGlu
Z1ByaW1pdGl2ZVZhbHVlcykKLSAgICAgICAgcXNvcnQodmFsdWVzLmRhdGEoKSwgdmFsdWVzLnNp
emUoKSwgc2l6ZW9mKFZhbHVlU3RyaW5nUGFpciksIGNvbXBhcmVCeVN0cmluZ1BhaXJGb3JRU29y
dCk7CisgICAgICAgIHFzb3J0KHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuc2l6ZSgpLCBzaXplb2Yo
VmFsdWVTdHJpbmdQYWlyKSwgY29tcGFyZUJ5U3RyaW5nUGFpckZvclFTb3J0KTsKICAgICBlbHNl
Ci0gICAgICAgIG1lcmdlc29ydCh2YWx1ZXMuZGF0YSgpLCB2YWx1ZXMuc2l6ZSgpLCBzaXplb2Yo
VmFsdWVTdHJpbmdQYWlyKSwgY29tcGFyZUJ5U3RyaW5nUGFpckZvclFTb3J0KTsKKyAgICAgICAg
bWVyZ2Vzb3J0KHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMuc2l6ZSgpLCBzaXplb2YoVmFsdWVTdHJp
bmdQYWlyKSwgY29tcGFyZUJ5U3RyaW5nUGFpckZvclFTb3J0KTsKICNlbHNlCiAgICAgLy8gRklY
TUU6IFRoZSBxc29ydCBsaWJyYXJ5IGZ1bmN0aW9uIGlzIGxpa2VseSB0byBub3QgYmUgYSBzdGFi
bGUgc29ydC4KICAgICAvLyBFQ01BU2NyaXB0LTI2MiBkb2VzIG5vdCBzcGVjaWZ5IGEgc3RhYmxl
IHNvcnQsIGJ1dCBpbiBwcmFjdGljZSwgYnJvd3NlcnMgcGVyZm9ybSBhIHN0YWJsZSBzb3J0Lgot
ICAgIHFzb3J0KHZhbHVlcy5kYXRhKCksIHZhbHVlcy5zaXplKCksIHNpemVvZihWYWx1ZVN0cmlu
Z1BhaXIpLCBjb21wYXJlQnlTdHJpbmdQYWlyRm9yUVNvcnQpOworICAgIHFzb3J0KHZhbHVlcy5i
ZWdpbigpLCB2YWx1ZXMuc2l6ZSgpLCBzaXplb2YoVmFsdWVTdHJpbmdQYWlyKSwgY29tcGFyZUJ5
U3RyaW5nUGFpckZvclFTb3J0KTsKICNlbmRpZgogICAgIAogICAgIC8vIElmIHRoZSB0b1N0cmlu
ZyBmdW5jdGlvbiBjaGFuZ2VkIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IG9yIHZlY3RvciBzdG9y
YWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVl
Tm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oCmlu
ZGV4IGRkM2MxMjFkMGViYjE2ZThhNTI0NjFmYWFjZGJiYjRkOTg3ZDcyYjIuLjg4ZDU3ZjNkZDRl
Nzk3NjlkMWQwNmMzYTg1OTEwMWI1NTVjNmE4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvUHJvZmlsZVRyZWVOb2RlLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgVmVjdG9yPE1hcEVudHJ5Kj4gZW50cmllczsKICAgICAgICAgZm9yIChNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9jaGlsZHJlbi0+YmVnaW4oKTsgaXQgIT0gbV9jaGlsZHJlbi0+ZW5kKCk7ICsr
aXQpCiAgICAgICAgICAgICBlbnRyaWVzLmFwcGVuZCgmKml0KTsKLSAgICAgICAgcXNvcnQoZW50
cmllcy5kYXRhKCksIGVudHJpZXMuc2l6ZSgpLCBzaXplb2YoTWFwRW50cnkqKSwgY29tcGFyZUVu
dHJpZXMpOworICAgICAgICBxc29ydChlbnRyaWVzLmJlZ2luKCksIGVudHJpZXMuc2l6ZSgpLCBz
aXplb2YoTWFwRW50cnkqKSwgY29tcGFyZUVudHJpZXMpOwogCiAgICAgICAgIC8vIEl0ZXJhdGUg
b3ZlciB0aGUgY2hpbGRyZW4gaW4gc2FtcGxlLWZyZXF1ZW5jeSBvcmRlci4KICAgICAgICAgZm9y
IChzaXplX3QgZSA9IDA7IGUgPCBlbnRyaWVzLnNpemUoKTsgKytlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IGQyNjhlNTllMTJiYjRlODM2OGNlMzkyMDY4Nzhh
YzgxNjJlM2I0MmYuLmUzYTNhOTMyY2U3ZWQ3MzhmMTk4NmIyYmYyYjc0M2UwNDIzYTNiMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC0yMjMsNyArMjIzLDcgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBp
ZiAoY2hhckNsYXNzLT5tX3Jhbmdlcy5zaXplKCkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIG1h
dGNoSW5kZXggPSAwOwogICAgICAgICAgICAgSnVtcExpc3QgZmFpbHVyZXM7Ci0gICAgICAgICAg
ICBtYXRjaENoYXJhY3RlckNsYXNzUmFuZ2UoY2hhcmFjdGVyLCBmYWlsdXJlcywgbWF0Y2hEZXN0
LCBjaGFyQ2xhc3MtPm1fcmFuZ2VzLmRhdGEoKSwgY2hhckNsYXNzLT5tX3Jhbmdlcy5zaXplKCks
ICZtYXRjaEluZGV4LCBjaGFyQ2xhc3MtPm1fbWF0Y2hlcy5kYXRhKCksIGNoYXJDbGFzcy0+bV9t
YXRjaGVzLnNpemUoKSk7CisgICAgICAgICAgICBtYXRjaENoYXJhY3RlckNsYXNzUmFuZ2UoY2hh
cmFjdGVyLCBmYWlsdXJlcywgbWF0Y2hEZXN0LCBjaGFyQ2xhc3MtPm1fcmFuZ2VzLmJlZ2luKCks
IGNoYXJDbGFzcy0+bV9yYW5nZXMuc2l6ZSgpLCAmbWF0Y2hJbmRleCwgY2hhckNsYXNzLT5tX21h
dGNoZXMuYmVnaW4oKSwgY2hhckNsYXNzLT5tX21hdGNoZXMuc2l6ZSgpKTsKICAgICAgICAgICAg
IHdoaWxlIChtYXRjaEluZGV4IDwgY2hhckNsYXNzLT5tX21hdGNoZXMuc2l6ZSgpKQogICAgICAg
ICAgICAgICAgIG1hdGNoRGVzdC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIGNoYXJhY3RlciwgSW1t
MzIoKHVuc2lnbmVkIHNob3J0KWNoYXJDbGFzcy0+bV9tYXRjaGVzW21hdGNoSW5kZXgrK10pKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ogYi9Tb3Vy
Y2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCmluZGV4IGU3NTdhNWRiOTI1OWJlYTJmNmU4
YTBmY2JlYWUxMTgyMTcyOGU2NmUuLmVjNzMzMDg4ZTM5MWNiYTU0ZDZhMGY5NDEzODk2MjhhNmRh
NzQ4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKKysr
IGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagpAQCAtMjIxLDcgKzIyMSw2IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcSGFzaFRhYmxlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcSGFzaFRyYWl0cy5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cd3RmXEhleE51bWJlci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cd3RmXEluZGV4ZWRJdGVyYXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXEl0ZXJhdG9yQWRhcHRvcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0
ZlxJdGVyYXRvclJhbmdlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcTGlz
dEhhc2hTZXQuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZj
eHByb2ouZmlsdGVycyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVy
cwppbmRleCBiNGRiNTUwMTc5MGU5NWIyZGYxYmY4NjM5NmY4Yzg4ZDYwM2Q5NDU2Li5hMTRmM2Uw
OTc3ZTJiYzQ0NDExOGI4NDgzYjkxODA0OTg1NDQxNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dURi9XVEYudmN4
cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCkBAIC00NzAsOSArNDcwLDYgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHd0ZlxIZXhOdW1iZXIuaCI+CiAgICAgICA8RmlsdGVyPnd0ZjwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXElu
ZGV4ZWRJdGVyYXRvci5oIj4KLSAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+Ci0gICAgPC9DbElu
Y2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcSXRlcmF0b3JBZGFwdG9ycy5o
Ij4KICAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0YTQ1YjZmYjM1ODY5ZDk5ZjVh
ZjlhMTY5YThmYTM2N2ZlMGY0MWQ1Li5lYTdiMzIzM2ZiZGVjY2QzOWYwNjc1M2Q1OTYzYzAxNWQy
NjFiMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEw
MCw3ICsxMDAsNiBAQAogCQlBNzQ4NzQ1MjE3QTBCREFFMDBGQTA0Q0IgLyogU2l4Q2hhcmFjdGVy
SGFzaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzQ4NzQ0RjE3QTBCREFFMDBGQTA0Q0IgLyogU2l4Q2hhcmFjdGVySGFzaC5jcHAgKi87IH07CiAJ
CUE3NDg3NDUzMTdBMEJEQUUwMEZBMDRDQiAvKiBTaXhDaGFyYWN0ZXJIYXNoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzQ4NzQ1MDE3QTBCREFFMDBG
QTA0Q0IgLyogU2l4Q2hhcmFjdGVySGFzaC5oICovOyB9OwogCQlBNzQ4NzQ1NDE3QTBCREFFMDBG
QTA0Q0IgLyogU3RyaW5nSGFzaER1bXBDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzQ4NzQ1MTE3QTBCREFFMDBGQTA0Q0IgLyogU3RyaW5n
SGFzaER1bXBDb250ZXh0LmggKi87IH07Ci0JCUE3REMyRjA0MUEwOUEyMkQwMDcyRjRFMyAvKiBJ
bmRleGVkSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3REMyRjAzMUEwOTlERTMwMDcyRjRFMyAvKiBJbmRleGVkSXRlcmF0b3IuaCAqLzsg
fTsKIAkJQTdFNjQzQzYxN0M1NDIzQjAwM0JCMTZCIC8qIENvbXByZXNzaW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RTY0M0M0MTdDNTQyM0Iw
MDNCQjE2QiAvKiBDb21wcmVzc2lvbi5jcHAgKi87IH07CiAJCUE3RTY0M0M3MTdDNTQyM0IwMDNC
QjE2QiAvKiBDb21wcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdFNjQzQzUxN0M1NDIzQjAwM0JCMTZCIC8qIENvbXByZXNzaW9uLmggKi87
IH07CiAJCUE4NzZEQkQ4MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3NkRCRDcxNTE4MTZFNTAwREFE
Qjk1IC8qIFBsYXRmb3JtLmggKi87IH07CkBAIC0zOTQsNyArMzkzLDYgQEAKIAkJQTc0ODc0NEYx
N0EwQkRBRTAwRkEwNENCIC8qIFNpeENoYXJhY3Rlckhhc2guY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2l4Q2hhcmFjdGVySGFzaC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3NDg3NDUwMTdBMEJEQUUwMEZBMDRDQiAvKiBTaXhDaGFyYWN0ZXJI
YXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpeENoYXJhY3Rlckhhc2gu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc0ODc0NTExN0EwQkRBRTAwRkEwNENC
IC8qIFN0cmluZ0hhc2hEdW1wQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJpbmdIYXNoRHVtcENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQTdEQzJGMDMxQTA5OURFMzAwNzJGNEUzIC8qIEluZGV4ZWRJdGVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmRleGVkSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTdFNjQzQzQxN0M1NDIzQjAwM0JCMTZCIC8qIENvbXByZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXByZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTdFNjQzQzUxN0M1NDIzQjAwM0JCMTZCIC8qIENvbXByZXNzaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXByZXNzaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NzZEQkQ3MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9y
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTAwLDcgKzg5OCw2IEBACiAJCQkJOTc0Q0ZDOEQxNkE0
RjMyNzAwNkQ1NDA0IC8qIFdlYWtQdHIuaCAqLywKIAkJCQlBOEE0NzM3QTE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi8sCiAJCQkJQThBNDczN0IxNTFBODI1QjAwNDEyM0ZG
IC8qIFdURlRocmVhZERhdGEuaCAqLywKLQkJCQlBN0RDMkYwMzFBMDk5REUzMDA3MkY0RTMgLyog
SW5kZXhlZEl0ZXJhdG9yLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHd0ZjsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0xMDc0LDcgKzEwNzEsNiBAQAogCQkJCUE4QTQ3M0FEMTUxQTgy
NUIwMDQxMjNGRiAvKiBjYWNoZWQtcG93ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1
RTE1MUE4MjVCMDA0MTIzRkYgLyogQ2hhcmFjdGVyTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4QTQ3Mzk0MTUxQTgyNUIwMDQxMjNGRiAvKiBDaGVja2VkQXJpdGhtZXRpYy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQTdEQzJGMDQxQTA5QTIyRDAwNzJGNEUzIC8qIEluZGV4ZWRJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczOTUxNTFBODI1QjAwNDEyM0ZGIC8qIENoZWNrZWRC
b29sZWFuLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1RjE1MUE4MjVCMDA0MTIzRkYgLyog
Q29sbGF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzRFREU2MTY5NjE0OTYwMEY2NTA0MSAv
KiBDb21tYVByaW50ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvSW5kZXhlZEl0ZXJhdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVkSXRlcmF0b3IuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEyMjQ0YzhiODhlYzdmMTBmMGUxZTUzMDEw
NGNiN2RiMWRhZmQ3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVkSXRlcmF0b3IuaAorKysgL2Rldi9udWxsCkBAIC0x
LDM1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBXVEZfSW5kZXhlZEl0ZXJhdG9yX2gKLSNkZWZpbmUgV1RGX0luZGV4ZWRJdGVy
YXRvcl9oCi0KLW5hbWVzcGFjZSBXVEYgewotCi0jZGVmaW5lIElOREVYRURfSVRFUkFUT1JfT1ZF
UkZMT1coY2hlY2spIGRvIHtcCi0gICAgaWYgKCEoY2hlY2spKVwKLSAgICAgICAgT3ZlcmZsb3dI
YW5kbGVyOjpvdmVyZmxvd2VkKCk7XAotfSB3aGlsZSAoMCkKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFZlY3RvclR5cGUsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciA9IENyYXNo
T25PdmVyZmxvdz4gc3RydWN0IEluZGV4ZWRJdGVyYXRvciB7Ci0gICAgdHlwZWRlZiBzdHJ1Y3Qg
SW5kZXhlZEl0ZXJhdG9yPGNvbnN0IFZlY3RvclR5cGUsIGNvbnN0IFQsIE92ZXJmbG93SGFuZGxl
cj4gY29uc3RfaXRlcmF0b3I7Ci0KLSAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwotICAgIHR5cGVk
ZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIFZhbHVlVHlwZSB2YWx1
ZV90eXBlOwotICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBwb2ludGVyOwotICAgIHR5cGVkZWYgVmFs
dWVUeXBlJiByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0
b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotCi0gICAgSW5kZXhlZEl0ZXJhdG9yKCkKLSAgICAg
ICAgOiBtX3ZlY3RvcihudWxscHRyKQotICAgICAgICAsIG1fcG9zaXRpb24oMCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgSW5kZXhlZEl0ZXJhdG9yKFZlY3RvclR5cGUmIHZlY3RvciwgVmFsdWVUeXBl
KiBwb3NpdGlvbikKLSAgICAgICAgOiBtX3ZlY3RvcigmdmVjdG9yKQotICAgICAgICAsIG1fcG9z
aXRpb24ocG9zaXRpb24gLSB2ZWN0b3IuZGF0YSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBJbmRl
eGVkSXRlcmF0b3IoY29uc3QgSW5kZXhlZEl0ZXJhdG9yJiBvdGhlcikKLSAgICAgICAgOiBtX3Zl
Y3RvcihvdGhlci5tX3ZlY3RvcikKLSAgICAgICAgLCBtX3Bvc2l0aW9uKG90aGVyLm1fcG9zaXRp
b24pCi0gICAgewotICAgIH0KLQotICAgIFZhbHVlVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsg
cmV0dXJuICZtX3ZlY3Rvci0+YXQobV9wb3NpdGlvbik7IH0KLSAgICBWYWx1ZVR5cGUmIG9wZXJh
dG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLT5hdChtX3Bvc2l0aW9uKTsgfQotICAgIFZh
bHVlVHlwZSogZ2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV92ZWN0b3IpCi0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgSU5ERVhFRF9JVEVSQVRPUl9PVkVSRkxP
VyhtX3Bvc2l0aW9uIDw9IG1fdmVjdG9yLT5zaXplKCkpOwotICAgICAgICByZXR1cm4gbV92ZWN0
b3ItPmRhdGEoKSArIG1fcG9zaXRpb247Ci0gICAgfQotCi0gICAgSW5kZXhlZEl0ZXJhdG9yJiBv
cGVyYXRvcisrKCkKLSAgICB7Ci0gICAgICAgIG1fcG9zaXRpb24rKzsKLSAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgIH0KLQotICAgIEluZGV4ZWRJdGVyYXRvciBvcGVyYXRvcisrKGludCkKLSAg
ICB7Ci0gICAgICAgIEluZGV4ZWRJdGVyYXRvciByZXN1bHQoKnRoaXMpOwotICAgICAgICBtX3Bv
c2l0aW9uKys7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgSW5kZXhlZEl0
ZXJhdG9yJiBvcGVyYXRvci0tKCkKLSAgICB7Ci0gICAgICAgIG1fcG9zaXRpb24tLTsKLSAgICAg
ICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIEluZGV4ZWRJdGVyYXRvciBvcGVyYXRvci0t
KGludCkKLSAgICB7Ci0gICAgICAgIEluZGV4ZWRJdGVyYXRvciByZXN1bHQoKnRoaXMpOwotICAg
ICAgICBtX3Bvc2l0aW9uLS07Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAg
Ly8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRv
IGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgotICAgIHR5cGVkZWYgc2l6ZV90
IChJbmRleGVkSXRlcmF0b3I6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKLSAgICBvcGVyYXRvciBV
bnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IgPyAmSW5kZXhlZEl0
ZXJhdG9yOjptX3Bvc2l0aW9uIDogbnVsbHB0cjsgfQotCi0jaWYgX19TSVpFT0ZfU0laRV9UX18g
IT0gX19TSVpFT0ZfSU5UX18gfHwgUExBVEZPUk0oQ09DT0EpCi0jZGVmaW5lIF9VTlNJR05FRF9J
Zl9ESUZGRVJFTlQobWFjcm8pIG1hY3JvKHVuc2lnbmVkKQotI2Vsc2UKLSNkZWZpbmUgX1VOU0lH
TkVEX0lmX0RJRkZFUkVOVChtYWNybykKLSNlbmRpZgotCi0jZGVmaW5lIEZPUl9FQUNIX0lOVEVH
RVJfVFlQRShtYWNybykgXAotICAgIG1hY3JvKHNpemVfdCkgXAotICAgIG1hY3JvKGludDMyX3Qp
IFwKLSAgICBtYWNybyhsb25nKSBcCi0gICAgbWFjcm8obG9uZyBsb25nKSBcCi0gICAgbWFjcm8o
dW5zaWduZWQgbG9uZyBsb25nKSBcCi0gICAgX1VOU0lHTkVEX0lmX0RJRkZFUkVOVChtYWNybykK
LQotI2RlZmluZSBNT0RJRklFUl9PUFModHlwZSkgXAotICAgIEluZGV4ZWRJdGVyYXRvciYgb3Bl
cmF0b3IrPSh0eXBlIGluY3JlbWVudCkgXAotICAgIHsgXAotICAgICAgICBtX3Bvc2l0aW9uICs9
IGluY3JlbWVudDsgXAotICAgICAgICByZXR1cm4gKnRoaXM7IFwKLSAgICB9IFwKLVwKLSAgICBJ
bmRleGVkSXRlcmF0b3ImIG9wZXJhdG9yLT0odHlwZSBkZWNyZW1lbnQpIFwKLSAgICB7IFwKLSAg
ICAgICAgbV9wb3NpdGlvbiAtPSBkZWNyZW1lbnQ7IFwKLSAgICAgICAgcmV0dXJuICp0aGlzOyBc
Ci0gICAgfQotCi0gICAgRk9SX0VBQ0hfSU5URUdFUl9UWVBFKE1PRElGSUVSX09QUykKLQotI3Vu
ZGVmIE1PRElGSUVSX09QUwotCi0jZGVmaW5lIEFSSVRITUVUSUNfT1BTKHR5cGUpIFwKLSAgICBJ
bmRleGVkSXRlcmF0b3Igb3BlcmF0b3IrKHR5cGUgaW5jcmVtZW50KSBjb25zdCBcCi0gICAgeyBc
Ci0gICAgICAgIEluZGV4ZWRJdGVyYXRvciByZXN1bHQoKnRoaXMpOyBcCi0gICAgICAgIHJlc3Vs
dC5tX3Bvc2l0aW9uICs9IGluY3JlbWVudDsgXAotICAgICAgICByZXR1cm4gcmVzdWx0OyBcCi0g
ICAgfSBcCi1cCi0gICAgSW5kZXhlZEl0ZXJhdG9yIG9wZXJhdG9yLSh0eXBlIGRlY3JlbWVudCkg
Y29uc3QgXAotICAgIHsgXAotICAgICAgICBJbmRleGVkSXRlcmF0b3IgcmVzdWx0KCp0aGlzKTsg
XAotICAgICAgICByZXN1bHQubV9wb3NpdGlvbiAtPSBkZWNyZW1lbnQ7IFwKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsgXAotICAgIH0KLQotCi0gICAgRk9SX0VBQ0hfSU5URUdFUl9UWVBFKEFSSVRI
TUVUSUNfT1BTKQotCi0jdW5kZWYgQVJJVEhNRVRJQ19PUFMKLQotICAgIHB0cmRpZmZfdCBvcGVy
YXRvci0oY29uc3QgY29uc3RfaXRlcmF0b3ImIHJpZ2h0KSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fcG9zaXRpb24gLSByaWdodC5tX3Bvc2l0aW9uOwotICAgIH0KLQotICAgIHB0cmRp
ZmZfdCBvcGVyYXRvci0oY29uc3QgVmFsdWVUeXBlKiByaWdodCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBnZXQoKSAtIHJpZ2h0OwotICAgIH0KLQotICAgIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IEluZGV4ZWRJdGVyYXRvciYgb3RoZXIpCi0gICAgewotICAgICAgICBtX3ZlY3RvciA9IG90
aGVyLm1fdmVjdG9yOwotICAgICAgICBtX3Bvc2l0aW9uID0gb3RoZXIubV9wb3NpdGlvbjsKLSAg
ICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVuc2FmZUdldCgpID09IG90aGVyLnVuc2FmZUdl
dCgpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjb25zdF9pdGVyYXRvciYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgIT0gb3RoZXIu
dW5zYWZlR2V0KCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZhbHVlVHlw
ZSogb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPT0gb3Ro
ZXI7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZhbHVlVHlwZSogb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgIT0gb3RoZXI7Ci0gICAg
fQotCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVmFsdWVUeXBlKiBvdGhlcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB1bnNhZmVHZXQoKSA8IG90aGVyOwotICAgIH0KLQotICAgIGJv
b2wgb3BlcmF0b3I8PShjb25zdCBWYWx1ZVR5cGUqIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHVuc2FmZUdldCgpIDw9IG90aGVyOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB1bnNhZmVHZXQoKSA8IG90aGVyLnVuc2FmZUdldCgpOwotICAgIH0KLQotICAgIGJvb2wg
b3BlcmF0b3I8PShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPD0gb3RoZXIudW5zYWZlR2V0KCk7Ci0gICAgfQotCi0g
ICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgSW5kZXhlZEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB1bnNhZmVHZXQoKSA+IG90aGVyLnVuc2FmZUdldCgpOwotICAg
IH0KLQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPj0gb3RoZXIudW5zYWZlR2V0
KCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgVmFsdWVUeXBlKiBvdGhlcikg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bnNhZmVHZXQoKSA+IG90aGVyOwotICAgIH0K
LQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBWYWx1ZVR5cGUqIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIHVuc2FmZUdldCgpID49IG90aGVyOwotICAgIH0KLQotICAgIG9w
ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGNvbnN0X2l0ZXJh
dG9yIHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fdmVjdG9yID0gbV92ZWN0b3I7Ci0gICAgICAg
IHJlc3VsdC5tX3Bvc2l0aW9uID0gbV9wb3NpdGlvbjsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICB9Ci0KLSAgICBWZWN0b3JUeXBlKiBtX3ZlY3RvcjsKLSAgICBzaXplX3QgbV9wb3NpdGlv
bjsKLQotICAgIFZhbHVlVHlwZSogdW5zYWZlR2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlm
ICghbV92ZWN0b3IpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
IGdldCgpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWYWx1
ZVR5cGUsIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KLWlubGluZSB0eXBlbmFtZSBJbmRleGVk
SXRlcmF0b3I8VCwgVmFsdWVUeXBlLCBPdmVyZmxvd0hhbmRsZXI+OjpWYWx1ZVR5cGUqIGdldFB0
cihJbmRleGVkSXRlcmF0b3I8VCwgVmFsdWVUeXBlLCBPdmVyZmxvd0hhbmRsZXI+IHApCi17Ci0g
ICAgcmV0dXJuIHAuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBW
YWx1ZVR5cGUsIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KLWlubGluZSBwdHJkaWZmX3Qgb3Bl
cmF0b3ItKGNvbnN0IFZhbHVlVHlwZSogbGVmdCwgY29uc3QgSW5kZXhlZEl0ZXJhdG9yPFQsIFZh
bHVlVHlwZSwgT3ZlcmZsb3dIYW5kbGVyPiYgcmlnaHQpCi17Ci0gICAgcmV0dXJuIGxlZnQgLSBy
aWdodC5nZXQoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFZhbHVlVHlw
ZSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgotaW5saW5lIHB0cmRpZmZfdCBvcGVyYXRvci0o
VmFsdWVUeXBlKiBsZWZ0LCBjb25zdCBJbmRleGVkSXRlcmF0b3I8VCwgVmFsdWVUeXBlLCBPdmVy
Zmxvd0hhbmRsZXI+JiByaWdodCkKLXsKLSAgICByZXR1cm4gbGVmdCAtIHJpZ2h0LmdldCgpOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXI+Ci1pbmxpbmUgcHRyZGlmZl90IG9wZXJhdG9yLShjb25zdCBWYWx1ZVR5
cGUqIGxlZnQsIGNvbnN0IEluZGV4ZWRJdGVyYXRvcjxjb25zdCBULCBjb25zdCBWYWx1ZVR5cGUs
IE92ZXJmbG93SGFuZGxlcj4mIHJpZ2h0KQotewotICAgIHJldHVybiBsZWZ0IC0gcmlnaHQuZ2V0
KCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVu
YW1lIE92ZXJmbG93SGFuZGxlcj4KLWlubGluZSBib29sIG9wZXJhdG9yPT0oVmFsdWVUeXBlKiBs
ZWZ0LCBjb25zdCBJbmRleGVkSXRlcmF0b3I8VCwgVmFsdWVUeXBlLCBPdmVyZmxvd0hhbmRsZXI+
JiByaWdodCkKLXsKLSAgICByZXR1cm4gcmlnaHQgPT0gbGVmdDsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgot
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWYWx1ZVR5cGUqIGxlZnQsIGNvbnN0IEluZGV4
ZWRJdGVyYXRvcjxULCBWYWx1ZVR5cGUsIE92ZXJmbG93SGFuZGxlcj4mIHJpZ2h0KQotewotICAg
IHJldHVybiByaWdodCA9PSBsZWZ0OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+Ci1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KFZhbHVlVHlwZSogbGVmdCwgY29uc3QgSW5kZXhlZEl0ZXJhdG9yPFQsIFZhbHVlVHlw
ZSwgT3ZlcmZsb3dIYW5kbGVyPiYgcmlnaHQpCi17Ci0gICAgcmV0dXJuIHJpZ2h0ICE9IGxlZnQ7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlcj4KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVmFsdWVUeXBl
KiBsZWZ0LCBjb25zdCBJbmRleGVkSXRlcmF0b3I8VCwgVmFsdWVUeXBlLCBPdmVyZmxvd0hhbmRs
ZXI+JiByaWdodCkKLXsKLSAgICByZXR1cm4gcmlnaHQgIT0gbGVmdDsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
PgotaW5saW5lIGJvb2wgb3BlcmF0b3I8PShWYWx1ZVR5cGUqIGxlZnQsIGNvbnN0IEluZGV4ZWRJ
dGVyYXRvcjxULCBWYWx1ZVR5cGUsIE92ZXJmbG93SGFuZGxlcj4mIHJpZ2h0KQotewotICAgIHJl
dHVybiByaWdodCA+PSBsZWZ0OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VmFsdWVUeXBlLCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+Ci1pbmxpbmUgYm9vbCBvcGVyYXRv
cjw9KGNvbnN0IFZhbHVlVHlwZSogbGVmdCwgY29uc3QgSW5kZXhlZEl0ZXJhdG9yPFQsIFZhbHVl
VHlwZSwgT3ZlcmZsb3dIYW5kbGVyPiYgcmlnaHQpCi17Ci0gICAgcmV0dXJuIHJpZ2h0ID49IGxl
ZnQ7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVu
YW1lIE92ZXJmbG93SGFuZGxlcj4KLWlubGluZSBib29sIG9wZXJhdG9yPj0oVmFsdWVUeXBlKiBs
ZWZ0LCBjb25zdCBJbmRleGVkSXRlcmF0b3I8VCwgVmFsdWVUeXBlLCBPdmVyZmxvd0hhbmRsZXI+
JiByaWdodCkKLXsKLSAgICByZXR1cm4gcmlnaHQgPD0gbGVmdDsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgot
aW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBWYWx1ZVR5cGUqIGxlZnQsIGNvbnN0IEluZGV4
ZWRJdGVyYXRvcjxULCBWYWx1ZVR5cGUsIE92ZXJmbG93SGFuZGxlcj4mIHJpZ2h0KQotewotICAg
IHJldHVybiByaWdodCA8PSBsZWZ0OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+Ci1pbmxpbmUgYm9vbCBvcGVy
YXRvcjwoVmFsdWVUeXBlKiBsZWZ0LCBjb25zdCBJbmRleGVkSXRlcmF0b3I8VCwgVmFsdWVUeXBl
LCBPdmVyZmxvd0hhbmRsZXI+JiByaWdodCkKLXsKLSAgICByZXR1cm4gcmlnaHQgPiBsZWZ0Owot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXI+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgVmFsdWVUeXBlKiBs
ZWZ0LCBjb25zdCBJbmRleGVkSXRlcmF0b3I8VCwgVmFsdWVUeXBlLCBPdmVyZmxvd0hhbmRsZXI+
JiByaWdodCkKLXsKLSAgICByZXR1cm4gcmlnaHQgPiBsZWZ0OwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+Ci1p
bmxpbmUgYm9vbCBvcGVyYXRvcj4oVmFsdWVUeXBlKiBsZWZ0LCBjb25zdCBJbmRleGVkSXRlcmF0
b3I8VCwgVmFsdWVUeXBlLCBPdmVyZmxvd0hhbmRsZXI+JiByaWdodCkKLXsKLSAgICByZXR1cm4g
cmlnaHQgPCBsZWZ0OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVmFsdWVU
eXBlLCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29u
c3QgVmFsdWVUeXBlKiBsZWZ0LCBjb25zdCBJbmRleGVkSXRlcmF0b3I8VCwgVmFsdWVUeXBlLCBP
dmVyZmxvd0hhbmRsZXI+JiByaWdodCkKLXsKLSAgICByZXR1cm4gcmlnaHQgPCBsZWZ0OwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
PiBzdHJ1Y3QgSW5kZXhlZEl0ZXJhdG9yU2VsZWN0b3IgewotICAgIHR5cGVkZWYgdHlwZW5hbWUg
VmVjdG9yVHlwZTo6VmFsdWVUeXBlIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIEluZGV4ZWRJdGVy
YXRvcjxWZWN0b3JUeXBlLCBWYWx1ZVR5cGUsIE92ZXJmbG93SGFuZGxlcj4gaXRlcmF0b3I7Ci0g
ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0
b3I7Ci0gICAgc3RhdGljIGl0ZXJhdG9yIG1ha2VJdGVyYXRvcihWZWN0b3JUeXBlJiB2ZWN0b3Is
IFZhbHVlVHlwZSogcCkgeyByZXR1cm4gaXRlcmF0b3IodmVjdG9yLCBwKTsgfQotICAgIHN0YXRp
YyBjb25zdF9pdGVyYXRvciBtYWtlQ29uc3RJdGVyYXRvcihjb25zdCBWZWN0b3JUeXBlJiB2ZWN0
b3IsIGNvbnN0IFZhbHVlVHlwZSogcCkgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodmVjdG9yLCBw
KTsgfQotfTsKLQotI3VuZGVmIElOREVYRURfSVRFUkFUT1JfT1ZFUkZMT1cKLQotfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oIGIvU291cmNl
L1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKaW5kZXggODExZTlmZmNlYTMzN2E2YzdkOGIyOTE2
MzBlMmFmZGY4ZTU2NjM5MC4uYTU1ZDdhZWVhYjg0YjljNDk1MTk2ZThlMjMwYTFkYzE3ODUxOTNh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKKysrIGIvU291
cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgog
ICAgICAgICBIZWFkZXI6OmZyb21QYXlsb2FkKG1fZGF0YSktPnJlZkNvdW50ID0gMTsKICAgICAg
ICAgSGVhZGVyOjpmcm9tUGF5bG9hZChtX2RhdGEpLT5sZW5ndGggPSBvdGhlci5zaXplKCk7CiAg
ICAgICAgIEFTU0VSVChIZWFkZXI6OmZyb21QYXlsb2FkKG1fZGF0YSktPmxlbmd0aCA9PSBvdGhl
ci5zaXplKCkpOwotICAgICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6dW5pbml0aWFsaXpl
ZENvcHkoZ2V0UHRyKG90aGVyLmJlZ2luKCkpLCBnZXRQdHIob3RoZXIuZW5kKCkpLCBtX2RhdGEp
OworICAgICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6dW5pbml0aWFsaXplZENvcHkob3Ro
ZXIuYmVnaW4oKSwgb3RoZXIuZW5kKCksIG1fZGF0YSk7CiAgICAgfQogICAgIAogICAgIFJlZkNv
dW50ZWRBcnJheSYgb3BlcmF0b3I9KGNvbnN0IFJlZkNvdW50ZWRBcnJheSYgb3RoZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
CmluZGV4IDU5MDNmZTRkMzZiNDg3M2IwNjgxMmNjMmMwNDA4ZDhkZTgwZTViOGYuLmYzMTMyOWUz
NGIzN2IzODljYjg5NjA5MGYzNTAyOTlhNDFkYzliNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC0yOCw4ICsyOCw2
IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMu
aD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvSW5kZXhlZEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL01hbGxvY1B0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KQEAgLTU1NSwxNyArNTUzLDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSA9IDAsIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciA9IENyYXNoCiBj
bGFzcyBWZWN0b3IgOiBwcml2YXRlIFZlY3RvckJ1ZmZlcjxULCBpbmxpbmVDYXBhY2l0eT4gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHJpdmF0ZToKLQogICAgIHR5cGVkZWYgVmVj
dG9yQnVmZmVyPFQsIGlubGluZUNhcGFjaXR5PiBCYXNlOwogICAgIHR5cGVkZWYgVmVjdG9yVHlw
ZU9wZXJhdGlvbnM8VD4gVHlwZU9wZXJhdGlvbnM7Ci0gICAgdHlwZWRlZiBJbmRleGVkSXRlcmF0
b3JTZWxlY3RvcjxWZWN0b3IsIE92ZXJmbG93SGFuZGxlcj4gSXRlcmF0b3JTZWxlY3RvcjsKIAog
cHVibGljOgogICAgIHR5cGVkZWYgVCBWYWx1ZVR5cGU7CiAKLSAgICB0eXBlZGVmIHR5cGVuYW1l
IEl0ZXJhdG9yU2VsZWN0b3I6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5h
bWUgSXRlcmF0b3JTZWxlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7Ci0KKyAg
ICB0eXBlZGVmIFQqIGl0ZXJhdG9yOworICAgIHR5cGVkZWYgY29uc3QgVCogY29uc3RfaXRlcmF0
b3I7CiAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+IHJldmVyc2Vf
aXRlcmF0b3I7CiAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0
b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAKQEAgLTU3OCwxNCArNTczLDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgOiBCYXNlKHNpemUsIHNpemUpCiAgICAgewogICAgICAgICBpZiAoYmVnaW4o
KSkKLSAgICAgICAgICAgIFR5cGVPcGVyYXRpb25zOjppbml0aWFsaXplKGdldFB0cihiZWdpbigp
KSwgZ2V0UHRyKGVuZCgpKSk7CisgICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6aW5pdGlhbGl6
ZShiZWdpbigpLCBlbmQoKSk7CiAgICAgfQogCiAgICAgVmVjdG9yKHNpemVfdCBzaXplLCBjb25z
dCBUJiB2YWwpCiAgICAgICAgIDogQmFzZShzaXplLCBzaXplKQogICAgIHsKICAgICAgICAgaWYg
KGJlZ2luKCkpCi0gICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXplZEZpbGwo
Z2V0UHRyKGJlZ2luKCkpLCBnZXRQdHIoZW5kKCkpLCB2YWwpOworICAgICAgICAgICAgVHlwZU9w
ZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRGaWxsKGJlZ2luKCksIGVuZCgpLCB2YWwpOwogICAgIH0K
IAogICAgIFZlY3RvcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaW5pdGlhbGl6ZXJMaXN0KQpA
QCAtNjQ5LDEwICs2NDQsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBCYXNlOjpidWZmZXIoKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3QgZGF0YU1lbW9y
eU9mZnNldCgpIHsgcmV0dXJuIEJhc2U6OmJ1ZmZlck1lbW9yeU9mZnNldCgpOyB9CiAKLSAgICBp
dGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIEl0ZXJhdG9yU2VsZWN0b3I6Om1ha2VJdGVyYXRvcigq
dGhpcywgZGF0YSgpKTsgfQotICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIGJlZ2luKCkgKyBz
aXplKCk7IH0KLSAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIEl0ZXJh
dG9yU2VsZWN0b3I6Om1ha2VDb25zdEl0ZXJhdG9yKCp0aGlzLCBkYXRhKCkpOyB9Ci0gICAgY29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gYmVnaW4oKSArIHNpemUoKTsgfQorICAg
IGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gZGF0YSgpOyB9CisgICAgaXRlcmF0b3IgZW5kKCkg
eyByZXR1cm4gYmVnaW4oKSArIG1fc2l6ZTsgfQorICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkg
Y29uc3QgeyByZXR1cm4gZGF0YSgpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Qg
eyByZXR1cm4gYmVnaW4oKSArIG1fc2l6ZTsgfQogCiAgICAgcmV2ZXJzZV9pdGVyYXRvciByYmVn
aW4oKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQogICAgIHJldmVyc2VfaXRl
cmF0b3IgcmVuZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KQEAgLTY4
Nyw3ICs2ODIsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyKCkgeyBzaHJpbmtDYXBhY2l0
eSgwKTsgfQogCi0gICAgdm9pZCBhcHBlbmQoY29uc3RfaXRlcmF0b3IsIHNpemVfdCk7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoVSYmKTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiB2b2lkIHVuY2hlY2tlZEFwcGVuZChVJiYgdmFsKTsKQEAgLTc1MSw3ICs3NDUsNyBA
QCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj46OlZlY3Rvcihjb25z
dCBWZWN0b3ImIG90aGVyKQogICAgIDogQmFzZShvdGhlci5jYXBhY2l0eSgpLCBvdGhlci5zaXpl
KCkpCiB7CiAgICAgaWYgKGJlZ2luKCkpCi0gICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRp
YWxpemVkQ29weShnZXRQdHIob3RoZXIuYmVnaW4oKSksIGdldFB0cihvdGhlci5lbmQoKSksIGdl
dFB0cihiZWdpbigpKSk7CisgICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29w
eShvdGhlci5iZWdpbigpLCBvdGhlci5lbmQoKSwgYmVnaW4oKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
PgpAQCAtNzYwLDcgKzc1NCw3IEBAIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyPjo6VmVjdG9yKGNvbnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5CiAgICAgOiBCYXNl
KG90aGVyLmNhcGFjaXR5KCksIG90aGVyLnNpemUoKSkKIHsKICAgICBpZiAoYmVnaW4oKSkKLSAg
ICAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5KGdldFB0cihvdGhlci5iZWdp
bigpKSwgZ2V0UHRyKG90aGVyLmVuZCgpKSwgZ2V0UHRyKGJlZ2luKCkpKTsKKyAgICAgICAgVHlw
ZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmVuZCgp
LCBiZWdpbigpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CkBAIC03NzcsOCArNzcxLDggQEAgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGEKICAgICAgICAgQVNTRVJUKGJlZ2luKCkpOwogICAgIH0KICAgICAK
LSAgICBzdGQ6OmNvcHkoZ2V0UHRyKG90aGVyLmJlZ2luKCkpLCBnZXRQdHIob3RoZXIuYmVnaW4o
KSArIHNpemUoKSksIGdldFB0cihiZWdpbigpKSk7Ci0gICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5p
dGlhbGl6ZWRDb3B5KGdldFB0cihvdGhlci5iZWdpbigpICsgc2l6ZSgpKSwgZ2V0UHRyKG90aGVy
LmVuZCgpKSwgZ2V0UHRyKGVuZCgpKSk7CisgICAgc3RkOjpjb3B5KG90aGVyLmJlZ2luKCksIG90
aGVyLmJlZ2luKCkgKyBzaXplKCksIGJlZ2luKCkpOworICAgIFR5cGVPcGVyYXRpb25zOjp1bmlu
aXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpICsgc2l6ZSgpLCBvdGhlci5lbmQoKSwgZW5kKCkp
OwogICAgIG1fc2l6ZSA9IG90aGVyLnNpemUoKTsKIAogICAgIHJldHVybiAqdGhpczsKQEAgLTgw
Miw5ICs3OTYsOSBAQCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4m
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYQogICAgICAgICByZXNlcnZlQ2Fw
YWNpdHkob3RoZXIuc2l6ZSgpKTsKICAgICAgICAgQVNTRVJUKGJlZ2luKCkpOwogICAgIH0KLQot
ICAgIHN0ZDo6Y29weShnZXRQdHIob3RoZXIuYmVnaW4oKSksIGdldFB0cihvdGhlci5iZWdpbigp
ICsgc2l6ZSgpKSwgZ2V0UHRyKGJlZ2luKCkpKTsKLSAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0
aWFsaXplZENvcHkoZ2V0UHRyKG90aGVyLmJlZ2luKCkgKyBzaXplKCkpLCBnZXRQdHIob3RoZXIu
ZW5kKCkpLCBnZXRQdHIoZW5kKCkpKTsKKyAgICAKKyAgICBzdGQ6OmNvcHkob3RoZXIuYmVnaW4o
KSwgb3RoZXIuYmVnaW4oKSArIHNpemUoKSwgYmVnaW4oKSk7CisgICAgVHlwZU9wZXJhdGlvbnM6
OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2luKCkgKyBzaXplKCksIG90aGVyLmVuZCgpLCBl
bmQoKSk7CiAgICAgbV9zaXplID0gb3RoZXIuc2l6ZSgpOwogCiAgICAgcmV0dXJuICp0aGlzOwpA
QCAtODY0LDggKzg1OCw4IEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXI+OjpmaWxsKGNvbnN0IFQmIHZhbCwgc2l6ZV90IG5ld1NpCiAgICAgICAgIEFTU0VS
VChiZWdpbigpKTsKICAgICB9CiAgICAgCi0gICAgc3RkOjpmaWxsKGdldFB0cihiZWdpbigpKSwg
Z2V0UHRyKGVuZCgpKSwgdmFsKTsKLSAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXplZEZp
bGwoZ2V0UHRyKGVuZCgpKSwgZ2V0UHRyKGJlZ2luKCkpICsgbmV3U2l6ZSwgdmFsKTsKKyAgICBz
dGQ6OmZpbGwoYmVnaW4oKSwgZW5kKCksIHZhbCk7CisgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5p
dGlhbGl6ZWRGaWxsKGVuZCgpLCBiZWdpbigpICsgbmV3U2l6ZSwgdmFsKTsKICAgICBtX3NpemUg
PSBuZXdTaXplOwogfQogCkBAIC04ODYsMTMgKzg4MCwxMyBAQCB2b2lkIFZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6ZXhwYW5kQ2FwYWNpdHkoc2l6ZV90IG5ld01p
bkNhcAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBPdmVyZmxvd0hhbmRsZXI+CiBUKiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlcj46OmV4cGFuZENhcGFjaXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0eSwgVCogcHRyKQog
ewotICAgIGlmIChwdHIgPCBnZXRQdHIoYmVnaW4oKSkgfHwgcHRyID49IGdldFB0cihlbmQoKSkp
IHsKKyAgICBpZiAocHRyIDwgYmVnaW4oKSB8fCBwdHIgPj0gZW5kKCkpIHsKICAgICAgICAgZXhw
YW5kQ2FwYWNpdHkobmV3TWluQ2FwYWNpdHkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0K
ICAgICBzaXplX3QgaW5kZXggPSBwdHIgLSBiZWdpbigpOwogICAgIGV4cGFuZENhcGFjaXR5KG5l
d01pbkNhcGFjaXR5KTsKLSAgICByZXR1cm4gZ2V0UHRyKGJlZ2luKCkgKyBpbmRleCk7CisgICAg
cmV0dXJuIGJlZ2luKCkgKyBpbmRleDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CkBAIC05MDQsMTUgKzg5
OCwxNSBAQCBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6
dHJ5RXhwYW5kQ2FwYWNpdHkoc2l6ZV90IG5ld01pbgogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CiBjb25zdCBUKiBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj46OnRyeUV4cGFuZENhcGFj
aXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0eSwgY29uc3QgVCogcHRyKQogewotICAgIGlmIChwdHIg
PCBnZXRQdHIoYmVnaW4oKSkgfHwgcHRyID49IGdldFB0cihlbmQoKSkpIHsKKyAgICBpZiAocHRy
IDwgYmVnaW4oKSB8fCBwdHIgPj0gZW5kKCkpIHsKICAgICAgICAgaWYgKCF0cnlFeHBhbmRDYXBh
Y2l0eShuZXdNaW5DYXBhY2l0eSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0
dXJuIHB0cjsKICAgICB9Ci0gICAgc2l6ZV90IGluZGV4ID0gKHB0ciAtIGJlZ2luKCkpOworICAg
IHNpemVfdCBpbmRleCA9IHB0ciAtIGJlZ2luKCk7CiAgICAgaWYgKCF0cnlFeHBhbmRDYXBhY2l0
eShuZXdNaW5DYXBhY2l0eSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBnZXRQdHIo
YmVnaW4oKSkgKyBpbmRleDsKKyAgICByZXR1cm4gYmVnaW4oKSArIGluZGV4OwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93
SGFuZGxlcj4gdGVtcGxhdGU8dHlwZW5hbWUgVT4KQEAgLTkyNiwxMiArOTIwLDEyIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dI
YW5kbGVyPgogaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+OjpyZXNpemUoc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKHNpemUgPD0gbV9zaXplKQot
ICAgICAgICBUeXBlT3BlcmF0aW9uczo6ZGVzdHJ1Y3QoZ2V0UHRyKGJlZ2luKCkpICsgc2l6ZSwg
Z2V0UHRyKGVuZCgpKSk7CisgICAgICAgIFR5cGVPcGVyYXRpb25zOjpkZXN0cnVjdChiZWdpbigp
ICsgc2l6ZSwgZW5kKCkpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoc2l6ZSA+IGNhcGFjaXR5
KCkpCiAgICAgICAgICAgICBleHBhbmRDYXBhY2l0eShzaXplKTsKICAgICAgICAgaWYgKGJlZ2lu
KCkpCi0gICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6aW5pdGlhbGl6ZShnZXRQdHIoZW5kKCkp
LCBnZXRQdHIoYmVnaW4oKSkgKyBzaXplKTsKKyAgICAgICAgICAgIFR5cGVPcGVyYXRpb25zOjpp
bml0aWFsaXplKGVuZCgpLCBiZWdpbigpICsgc2l6ZSk7CiAgICAgfQogICAgIAogICAgIG1fc2l6
ZSA9IHNpemU7CkBAIC05NDgsNyArOTQyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CiB2b2lkIFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6c2hyaW5rKHNpemVfdCBzaXplKQog
ewogICAgIEFTU0VSVChzaXplIDw9IG1fc2l6ZSk7Ci0gICAgVHlwZU9wZXJhdGlvbnM6OmRlc3Ry
dWN0KGdldFB0cihiZWdpbigpKSArIHNpemUsIGdldFB0cihlbmQoKSkpOworICAgIFR5cGVPcGVy
YXRpb25zOjpkZXN0cnVjdChiZWdpbigpICsgc2l6ZSwgZW5kKCkpOwogICAgIG1fc2l6ZSA9IHNp
emU7CiB9CiAKQEAgLTk1OSw3ICs5NTMsNyBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyPjo6Z3JvdyhzaXplX3Qgc2l6ZSkKICAgICBpZiAoc2l6ZSA+IGNh
cGFjaXR5KCkpCiAgICAgICAgIGV4cGFuZENhcGFjaXR5KHNpemUpOwogICAgIGlmIChiZWdpbigp
KQotICAgICAgICBUeXBlT3BlcmF0aW9uczo6aW5pdGlhbGl6ZShnZXRQdHIoZW5kKCkpLCBnZXRQ
dHIoYmVnaW4oKSkgKyBzaXplKTsKKyAgICAgICAgVHlwZU9wZXJhdGlvbnM6OmluaXRpYWxpemUo
ZW5kKCksIGJlZ2luKCkgKyBzaXplKTsKICAgICBtX3NpemUgPSBzaXplOwogfQogCkBAIC05Njgs
MTEgKzk2MiwxMSBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyPjo6cmVzZXJ2ZUNhcGFjaXR5KHNpemVfdCBuZXdDYXBhYwogewogICAgIGlmIChuZXdDYXBh
Y2l0eSA8PSBjYXBhY2l0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgVCogb2xkQnVmZmVyID0g
Z2V0UHRyKGJlZ2luKCkpOwotICAgIFQqIG9sZEVuZCA9IGdldFB0cihlbmQoKSk7CisgICAgVCog
b2xkQnVmZmVyID0gYmVnaW4oKTsKKyAgICBUKiBvbGRFbmQgPSBlbmQoKTsKICAgICBCYXNlOjph
bGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSk7CiAgICAgQVNTRVJUKGJlZ2luKCkpOwotICAgIFR5
cGVPcGVyYXRpb25zOjptb3ZlKG9sZEJ1ZmZlciwgb2xkRW5kLCBnZXRQdHIoYmVnaW4oKSkpOwor
ICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlKG9sZEJ1ZmZlciwgb2xkRW5kLCBiZWdpbigpKTsKICAg
ICBCYXNlOjpkZWFsbG9jYXRlQnVmZmVyKG9sZEJ1ZmZlcik7CiB9CiAKQEAgLTk4MSwxMiArOTc1
LDEyIEBAIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+Ojp0
cnlSZXNlcnZlQ2FwYWNpdHkoc2l6ZV90IG5ld0NhCiB7CiAgICAgaWYgKG5ld0NhcGFjaXR5IDw9
IGNhcGFjaXR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIFQqIG9sZEJ1ZmZlciA9IGdl
dFB0cihiZWdpbigpKTsKLSAgICBUKiBvbGRFbmQgPSBnZXRQdHIoZW5kKCkpOworICAgIFQqIG9s
ZEJ1ZmZlciA9IGJlZ2luKCk7CisgICAgVCogb2xkRW5kID0gZW5kKCk7CiAgICAgaWYgKCFCYXNl
Ojp0cnlBbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBBU1NFUlQoYmVnaW4oKSk7Ci0gICAgVHlwZU9wZXJhdGlvbnM6Om1vdmUob2xkQnVmZmVy
LCBvbGRFbmQsIGdldFB0cihiZWdpbigpKSk7CisgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmUob2xk
QnVmZmVyLCBvbGRFbmQsIGJlZ2luKCkpOwogICAgIEJhc2U6OmRlYWxsb2NhdGVCdWZmZXIob2xk
QnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEwMDksMTcgKzEwMDMsMTcgQEAgdm9p
ZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj46OnNocmlua0NhcGFj
aXR5KHNpemVfdCBuZXdDYXBhY2kKICAgICBpZiAobmV3Q2FwYWNpdHkgPCBzaXplKCkpIAogICAg
ICAgICBzaHJpbmsobmV3Q2FwYWNpdHkpOwogCi0gICAgVCogb2xkQnVmZmVyID0gZ2V0UHRyKGJl
Z2luKCkpOworICAgIFQqIG9sZEJ1ZmZlciA9IGJlZ2luKCk7CiAgICAgaWYgKG5ld0NhcGFjaXR5
ID4gMCkgewogICAgICAgICBpZiAoQmFzZTo6c2hvdWxkUmVhbGxvY2F0ZUJ1ZmZlcihuZXdDYXBh
Y2l0eSkpIHsKICAgICAgICAgICAgIEJhc2U6OnJlYWxsb2NhdGVCdWZmZXIobmV3Q2FwYWNpdHkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVCogb2xkRW5kID0g
Z2V0UHRyKGVuZCgpKTsKKyAgICAgICAgVCogb2xkRW5kID0gZW5kKCk7CiAgICAgICAgIEJhc2U6
OmFsbG9jYXRlQnVmZmVyKG5ld0NhcGFjaXR5KTsKICAgICAgICAgaWYgKGJlZ2luKCkgIT0gb2xk
QnVmZmVyKQotICAgICAgICAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmUob2xkQnVmZmVyLCBvbGRF
bmQsIGdldFB0cihiZWdpbigpKSk7CisgICAgICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZShv
bGRCdWZmZXIsIG9sZEVuZCwgYmVnaW4oKSk7CiAgICAgfQogCiAgICAgQmFzZTo6ZGVhbGxvY2F0
ZUJ1ZmZlcihvbGRCdWZmZXIpOwpAQCAtMTAzOSwxNyArMTAzMywxMSBAQCB2b2lkIFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kKGNvbnN0IFUqIGRhdGEs
IHNpemVfdCBkYQogICAgIH0KICAgICBpZiAobmV3U2l6ZSA8IG1fc2l6ZSkKICAgICAgICAgQ1JB
U0goKTsKLSAgICBUKiBkZXN0ID0gZ2V0UHRyKGVuZCgpKTsKKyAgICBUKiBkZXN0ID0gZW5kKCk7
CiAgICAgVmVjdG9yQ29waWVyPHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRp
YWxpemVkQ29weShkYXRhLCAmZGF0YVtkYXRhU2l6ZV0sIGRlc3QpOwogICAgIG1fc2l6ZSA9IG5l
d1NpemU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgotdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlcj46OmFwcGVuZChjb25zdF9pdGVyYXRvciBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCi17Ci0gICAgYXBwZW5kKGdldFB0cihkYXRhKSwgZGF0YVNpemUpOwotfQotCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93
SGFuZGxlcj4gdGVtcGxhdGU8dHlwZW5hbWUgVT4KIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5LCBPdmVyZmxvd0hhbmRsZXI+Ojp0cnlBcHBlbmQoY29uc3QgVSogZGF0YSwgc2l6ZV90IGRh
dGFTaXplKQogewpAQCAtMTA2Miw3ICsxMDUwLDcgQEAgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlcj46OnRyeUFwcGVuZChjb25zdCBVKiBkYXRhLCBzaXplX3QK
ICAgICB9CiAgICAgaWYgKG5ld1NpemUgPCBtX3NpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBUKiBkZXN0ID0gZ2V0UHRyKGVuZCgpKTsKKyAgICBUKiBkZXN0ID0gZW5kKCk7CiAgICAg
VmVjdG9yQ29waWVyPHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVk
Q29weShkYXRhLCAmZGF0YVtkYXRhU2l6ZV0sIGRlc3QpOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7
CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDcyLDcgKzEwNjAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVt
cGxhdGU8dAogQUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyPjo6YXBwZW5kKFUmJiB2YWx1ZSkKIHsKICAgICBpZiAoc2l6ZSgpICE9IGNh
cGFjaXR5KCkpIHsKLSAgICAgICAgbmV3IChOb3ROdWxsLCBnZXRQdHIoZW5kKCkpKSBUKHN0ZDo6
Zm9yd2FyZDxVPih2YWx1ZSkpOworICAgICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6
Zm9yd2FyZDxVPih2YWx1ZSkpOwogICAgICAgICArK21fc2l6ZTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTEwODksNyArMTA3Nyw3IEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXI+OjphcHBlbmRTbG93Q2FzZShVJiYgdmFsdWUpCiAgICAgcHRyID0g
ZXhwYW5kQ2FwYWNpdHkoc2l6ZSgpICsgMSwgcHRyKTsKICAgICBBU1NFUlQoYmVnaW4oKSk7CiAK
LSAgICBuZXcgKE5vdE51bGwsIGdldFB0cihlbmQoKSkpIFQoc3RkOjpmb3J3YXJkPFU+KCpwdHIp
KTsKKyAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxVPigqcHRyKSk7CiAg
ICAgKyttX3NpemU7CiB9CiAKQEAgLTExMDIsMTQgKzEwOTAsMTQgQEAgaW5saW5lIHZvaWQgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+Ojp1bmNoZWNrZWRBcHBlbmQo
VSYmIHZhbHUKICAgICBBU1NFUlQoc2l6ZSgpIDwgY2FwYWNpdHkoKSk7CiAKICAgICBhdXRvIHB0
ciA9IHN0ZDo6YWRkcmVzc29mKHZhbHVlKTsKLSAgICBuZXcgKE5vdE51bGwsIGdldFB0cihlbmQo
KSkpIFQoc3RkOjpmb3J3YXJkPFU+KCpwdHIpKTsKKyAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBU
KHN0ZDo6Zm9yd2FyZDxVPigqcHRyKSk7CiAgICAgKyttX3NpemU7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4KIGlubGluZSB2b2lk
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kVmVjdG9y
KGNvbnN0IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5PiYgdmFsKQogewotICAgIGFwcGVuZChnZXRQ
dHIodmFsLmJlZ2luKCkpLCB2YWwuc2l6ZSgpKTsKKyAgICBhcHBlbmQodmFsLmJlZ2luKCksIHZh
bC5zaXplKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVtcGxhdGU8dHlwZW5hbWUgVT4KQEAgLTEx
MjMsOCArMTExMSw4IEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+OjppbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVCiAgICAgfQogICAgIGlmIChu
ZXdTaXplIDwgbV9zaXplKQogICAgICAgICBDUkFTSCgpOwotICAgIFQqIHNwb3QgPSBnZXRQdHIo
YmVnaW4oKSkgKyBwb3NpdGlvbjsKLSAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5n
KHNwb3QsIGdldFB0cihlbmQoKSksIHNwb3QgKyBkYXRhU2l6ZSk7CisgICAgVCogc3BvdCA9IGJl
Z2luKCkgKyBwb3NpdGlvbjsKKyAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKHNw
b3QsIGVuZCgpLCBzcG90ICsgZGF0YVNpemUpOwogICAgIFZlY3RvckNvcGllcjxzdGQ6OmlzX3Ry
aXZpYWw8VD46OnZhbHVlLCBVPjo6dW5pbml0aWFsaXplZENvcHkoZGF0YSwgJmRhdGFbZGF0YVNp
emVdLCBzcG90KTsKICAgICBtX3NpemUgPSBuZXdTaXplOwogfQpAQCAtMTE0MCw4ICsxMTI4LDgg
QEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+
OjppbnNlcnQoc2l6ZV90IHBvc2l0aW9uLAogICAgICAgICBBU1NFUlQoYmVnaW4oKSk7CiAgICAg
fQogCi0gICAgVCogc3BvdCA9IGdldFB0cihiZWdpbigpKSArIHBvc2l0aW9uOwotICAgIFR5cGVP
cGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoc3BvdCwgZ2V0UHRyKGVuZCgpKSwgc3BvdCArIDEp
OworICAgIFQqIHNwb3QgPSBiZWdpbigpICsgcG9zaXRpb247CisgICAgVHlwZU9wZXJhdGlvbnM6
Om1vdmVPdmVybGFwcGluZyhzcG90LCBlbmQoKSwgc3BvdCArIDEpOwogICAgIG5ldyAoTm90TnVs
bCwgc3BvdCkgVChzdGQ6OmZvcndhcmQ8VT4oKnB0cikpOwogICAgICsrbV9zaXplOwogfQpAQCAt
MTE0OSwxNiArMTEzNywxNiBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlcj46Omluc2VydChzaXplX3QgcG9zaXRpb24sCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4g
dGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGM+CiBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj46Omluc2VydFZlY3RvcihzaXplX3QgcG9zaXRp
b24sIGNvbnN0IFZlY3RvcjxVLCBjPiYgdmFsKQogewotICAgIGluc2VydChwb3NpdGlvbiwgZ2V0
UHRyKHZhbC5iZWdpbigpKSwgdmFsLnNpemUoKSk7CisgICAgaW5zZXJ0KHBvc2l0aW9uLCB2YWwu
YmVnaW4oKSwgdmFsLnNpemUoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgogaW5saW5lIHZvaWQgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjpyZW1vdmUoc2l6ZV90IHBv
c2l0aW9uKQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHBvc2l0aW9u
IDwgc2l6ZSgpKTsKLSAgICBUKiBzcG90ID0gZ2V0UHRyKGJlZ2luKCkpICsgcG9zaXRpb247Cisg
ICAgVCogc3BvdCA9IGJlZ2luKCkgKyBwb3NpdGlvbjsKICAgICBzcG90LT5+VCgpOwotICAgIFR5
cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoc3BvdCArIDEsIGdldFB0cihlbmQoKSksIHNw
b3QpOworICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoc3BvdCArIDEsIGVuZCgp
LCBzcG90KTsKICAgICAtLW1fc2l6ZTsKIH0KIApAQCAtMTE2NywxMCArMTE1NSwxMCBAQCBpbmxp
bmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj46OnJlbW92
ZShzaXplX3QgcG9zaXRpb24sCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04ocG9zaXRpb24gPD0gc2l6ZSgpKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihwb3NpdGlvbiArIGxlbmd0aCA8PSBzaXplKCkpOwotICAgIFQqIGJlZ2luU3BvdCA9IGdl
dFB0cihiZWdpbigpKSArIHBvc2l0aW9uOworICAgIFQqIGJlZ2luU3BvdCA9IGJlZ2luKCkgKyBw
b3NpdGlvbjsKICAgICBUKiBlbmRTcG90ID0gYmVnaW5TcG90ICsgbGVuZ3RoOwogICAgIFR5cGVP
cGVyYXRpb25zOjpkZXN0cnVjdChiZWdpblNwb3QsIGVuZFNwb3QpOyAKLSAgICBUeXBlT3BlcmF0
aW9uczo6bW92ZU92ZXJsYXBwaW5nKGVuZFNwb3QsIGdldFB0cihlbmQoKSksIGJlZ2luU3BvdCk7
CisgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVybGFwcGluZyhlbmRTcG90LCBlbmQoKSwgYmVn
aW5TcG90KTsKICAgICBtX3NpemUgLT0gbGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBmNzhjYjlj
OTMzNTZkZTY5NmNlZmJlYTdhZDM1Y2U4MDk3MzRmNzEyLi5lNmM4MzczZWMxOGNjMjM3MzcwNTc2
NWFmODVjYjc0YjVmNmQ5ZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE0NDIsOCArMTQ0Miw4IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgICAgICBjb25zdCB1aW50OF90KiBwdHIgPSBnZXRQdHIoYnVmZmVy
LmJlZ2luKCkpOwotICAgICAgICBjb25zdCB1aW50OF90KiBlbmQgPSBnZXRQdHIoYnVmZmVyLmVu
ZCgpKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogcHRyID0gYnVmZmVyLmJlZ2luKCk7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IGJ1ZmZlci5lbmQoKTsKICAgICAgICAgdWludDMyX3Qg
dmVyc2lvbjsKICAgICAgICAgaWYgKCFyZWFkTGl0dGxlRW5kaWFuKHB0ciwgZW5kLCB2ZXJzaW9u
KSB8fCB2ZXJzaW9uID4gQ3VycmVudFZlcnNpb24pCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggNDI3YjZkMjFi
NDk3ZTc2NjA3YmUwM2Q2MzIyYTFmYzI2OGM2OWJiYi4uODQ1MjViZWY4ZTIzYWIzMjg5MmE0ODBh
ZDEyZDYwZjA4NDY5MjJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNw
cApAQCAtMjA3MywxMSArMjA3MywxMSBAQCBpbmxpbmUgYm9vbCBTZWFyY2hCdWZmZXI6OmlzQmFk
TWF0Y2goY29uc3QgVUNoYXIqIG1hdGNoLCBzaXplX3QgbWF0Y2hMZW5ndGgpIGNvbgogICAgIC8v
IGNyZWF0aW5nIGEgbmV3IG9uZSBlYWNoIHRpbWUuCiAgICAgbm9ybWFsaXplQ2hhcmFjdGVycyht
YXRjaCwgbWF0Y2hMZW5ndGgsIG1fbm9ybWFsaXplZE1hdGNoKTsKIAotICAgIGNvbnN0IFVDaGFy
KiBhID0gZ2V0UHRyKG1fbm9ybWFsaXplZFRhcmdldC5iZWdpbigpKTsKLSAgICBjb25zdCBVQ2hh
ciogYUVuZCA9IGdldFB0cihtX25vcm1hbGl6ZWRUYXJnZXQuZW5kKCkpOworICAgIGNvbnN0IFVD
aGFyKiBhID0gbV9ub3JtYWxpemVkVGFyZ2V0LmJlZ2luKCk7CisgICAgY29uc3QgVUNoYXIqIGFF
bmQgPSBtX25vcm1hbGl6ZWRUYXJnZXQuZW5kKCk7CiAKLSAgICBjb25zdCBVQ2hhciogYiA9IGdl
dFB0cihtX25vcm1hbGl6ZWRNYXRjaC5iZWdpbigpKTsKLSAgICBjb25zdCBVQ2hhciogYkVuZCA9
IGdldFB0cihtX25vcm1hbGl6ZWRNYXRjaC5lbmQoKSk7CisgICAgY29uc3QgVUNoYXIqIGIgPSBt
X25vcm1hbGl6ZWRNYXRjaC5iZWdpbigpOworICAgIGNvbnN0IFVDaGFyKiBiRW5kID0gbV9ub3Jt
YWxpemVkTWF0Y2guZW5kKCk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAvLyBTa2lw
IHJ1bnMgb2Ygbm9uLWthbmEtbGV0dGVyIGNoYXJhY3RlcnMuIFRoaXMgaXMgbmVjZXNzYXJ5IHNv
IHdlIGNhbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVy
bGF5Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXIubW0KaW5kZXggNmNkMzRjZmY4OTI5Mzc0OTMzYTA3ZWRlZjRmZTkxODNlZjg5
NTlhNy4uZDUxY2E1OTlkOTUyMjMyOGYzMjI4MTk2NzdlOWNhYzVlOTQ3MGZiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1t
CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWls
ZFNlbGVjdGlvbkhpZ2hsaWdodCgpCiAKICAgICAgICAgaWYgKCFjZ1JlY3RzLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgQ0dSZWN0IHZpc2libGVSZWN0ID0gbWFpbkZyYW1lVmlldy0+dmlzaWJs
ZUNvbnRlbnRSZWN0KCk7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8RERIaWdobGlnaHRSZWY+IGRk
SGlnaGxpZ2h0ID0gYWRvcHRDRihEREhpZ2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJl
Y3RXaXRoU3R5bGVBbmREaXJlY3Rpb24obnVsbHB0ciwgY2dSZWN0cy5kYXRhKCksIGNnUmVjdHMu
c2l6ZSgpLCB2aXNpYmxlUmVjdCwgRERIaWdobGlnaHRTdHlsZUJ1YmJsZU5vbmUgfCBEREhpZ2hs
aWdodFN0eWxlU3RhbmRhcmRJY29uQXJyb3cgfCBEREhpZ2hsaWdodFN0eWxlQnV0dG9uU2hvd0Fs
d2F5cywgWUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFsLCBOTywgWUVTKSk7CisgICAgICAg
ICAgICBSZXRhaW5QdHI8RERIaWdobGlnaHRSZWY+IGRkSGlnaGxpZ2h0ID0gYWRvcHRDRihEREhp
Z2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVBbmREaXJlY3Rpb24o
bnVsbHB0ciwgY2dSZWN0cy5iZWdpbigpLCBjZ1JlY3RzLnNpemUoKSwgdmlzaWJsZVJlY3QsIERE
SGlnaGxpZ2h0U3R5bGVCdWJibGVOb25lIHwgRERIaWdobGlnaHRTdHlsZVN0YW5kYXJkSWNvbkFy
cm93IHwgRERIaWdobGlnaHRTdHlsZUJ1dHRvblNob3dBbHdheXMsIFlFUywgTlNXcml0aW5nRGly
ZWN0aW9uTmF0dXJhbCwgTk8sIFlFUykpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBuZXdQ
b3RlbnRpYWxIaWdobGlnaHRzLmFkZChIaWdobGlnaHQ6OmNyZWF0ZUZvclNlbGVjdGlvbigqdGhp
cywgZGRIaWdobGlnaHQsIHNlbGVjdGlvblJhbmdlKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcApp
bmRleCA1MDNiMGU4ZDliYmYyOTA2Y2U3M2JlYmViYTAxYmQ2MDNlYzc5OTkzLi5kMWI5MmI3YjYw
OWI0NTE5OWM4NGE0NmFlZTlmZGI2YzRmN2NmZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuY3BwCkBAIC0zOSw4ICsz
OSw4IEBAIFNlZ21lbnRlZEZvbnREYXRhOjp+U2VnbWVudGVkRm9udERhdGEoKQogCiBjb25zdCBT
aW1wbGVGb250RGF0YSogU2VnbWVudGVkRm9udERhdGE6OmZvbnREYXRhRm9yQ2hhcmFjdGVyKFVD
aGFyMzIgYykgY29uc3QKIHsKLSAgICBhdXRvIGVuZCA9IG1fcmFuZ2VzLmVuZCgpOwotICAgIGZv
ciAoYXV0byBpdCA9IG1fcmFuZ2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIFZl
Y3RvcjxGb250RGF0YVJhbmdlPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yYW5nZXMuZW5kKCk7
CisgICAgZm9yIChWZWN0b3I8Rm9udERhdGFSYW5nZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9y
YW5nZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC0+ZnJvbSgp
IDw9IGMgJiYgaXQtPnRvKCkgPj0gYykKICAgICAgICAgICAgIHJldHVybiBpdC0+Zm9udERhdGEo
KS5nZXQoKTsKICAgICB9CkBAIC00OSw4ICs0OSw4IEBAIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBT
ZWdtZW50ZWRGb250RGF0YTo6Zm9udERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjKSBjb25zdAog
CiBib29sIFNlZ21lbnRlZEZvbnREYXRhOjpjb250YWluc0NoYXJhY3RlcihVQ2hhcjMyIGMpIGNv
bnN0CiB7Ci0gICAgYXV0byBlbmQgPSBtX3Jhbmdlcy5lbmQoKTsKLSAgICBmb3IgKGF1dG8gaXQg
PSBtX3Jhbmdlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBWZWN0b3I8Rm9udERh
dGFSYW5nZT46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmFuZ2VzLmVuZCgpOworICAgIGZvciAo
VmVjdG9yPEZvbnREYXRhUmFuZ2U+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcmFuZ2VzLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoYyA+PSBpdC0+ZnJvbSgpICYmIGMg
PD0gaXQtPnRvKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC03Niw4ICs3
Niw4IEBAIGJvb2wgU2VnbWVudGVkRm9udERhdGE6OmlzQ3VzdG9tRm9udCgpIGNvbnN0CiAKIGJv
b2wgU2VnbWVudGVkRm9udERhdGE6OmlzTG9hZGluZygpIGNvbnN0CiB7Ci0gICAgYXV0byBlbmQg
PSBtX3Jhbmdlcy5lbmQoKTsKLSAgICBmb3IgKGF1dG8gaXQgPSBtX3Jhbmdlcy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICBWZWN0b3I8Rm9udERhdGFSYW5nZT46OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IG1fcmFuZ2VzLmVuZCgpOworICAgIGZvciAoVmVjdG9yPEZvbnREYXRhUmFuZ2U+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcmFuZ2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBpZiAoaXQtPmZvbnREYXRhKCktPmlzTG9hZGluZygpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGRkMDk2M2E3NTAxYWQyZWUwNjMxYTVlMTZk
Nzk1MTExMTIyMzlkNTUuLjA1MTg3MWFjNmM2MGZiNjQzOTI4MzBhYWM2YWQzODUyYTk0ZDQ0NzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJl
ZEJ1ZmZlciogd29mZiwgVmVjdG9yPGNoYXI+JiBzZm50KQogICAgICAgICAgICAgdUxvbmdmIGRl
c3RMZW4gPSB0YWJsZU9yaWdMZW5ndGg7CiAgICAgICAgICAgICBpZiAoIXNmbnQudHJ5UmVzZXJ2
ZUNhcGFjaXR5KHNmbnQuc2l6ZSgpICsgdGFibGVPcmlnTGVuZ3RoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBCeXRlZiogZGVzdCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Qnl0ZWYqPihnZXRQdHIoc2ZudC5lbmQoKSkpOworICAgICAgICAgICAgQnl0ZWYqIGRlc3Qg
PSByZWludGVycHJldF9jYXN0PEJ5dGVmKj4oc2ZudC5lbmQoKSk7CiAgICAgICAgICAgICBzZm50
Lmdyb3coc2ZudC5zaXplKCkgKyB0YWJsZU9yaWdMZW5ndGgpOwogICAgICAgICAgICAgaWYgKHVu
Y29tcHJlc3MoZGVzdCwgJmRlc3RMZW4sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQnl0ZWYqPih3
b2ZmLT5kYXRhKCkgKyB0YWJsZU9mZnNldCksIHRhYmxlQ29tcExlbmd0aCkgIT0gWl9PSykKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwCmluZGV4IDc1MTZiMGFj
ZDE1YWFmZDEyYTM1NmFmZjRkNTBhNmM0YWEwMjRmMjIuLjUwMjJjNTBjN2VlODI1ZTI0MGYwZTcx
MjI0N2M3ZWYxNjQ4ZjM4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwCkBAIC01OSw3ICs1OSw3IEBAIGNh
aXJvX3BhdHRlcm5fdCogR3JhZGllbnQ6OnBsYXRmb3JtR3JhZGllbnQoZmxvYXQgZ2xvYmFsQWxw
aGEpCiAgICAgZWxzZQogICAgICAgICBtX2dyYWRpZW50ID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVf
bGluZWFyKG1fcDAueCgpLCBtX3AwLnkoKSwgbV9wMS54KCksIG1fcDEueSgpKTsKIAotICAgIGF1
dG8gc3RvcEl0ZXJhdG9yID0gbV9zdG9wcy5iZWdpbigpOworICAgIFZlY3RvcjxDb2xvclN0b3A+
OjppdGVyYXRvciBzdG9wSXRlcmF0b3IgPSBtX3N0b3BzLmJlZ2luKCk7CiAgICAgd2hpbGUgKHN0
b3BJdGVyYXRvciAhPSBtX3N0b3BzLmVuZCgpKSB7CiAgICAgICAgIGNhaXJvX3BhdHRlcm5fYWRk
X2NvbG9yX3N0b3BfcmdiYShtX2dyYWRpZW50LCBzdG9wSXRlcmF0b3ItPnN0b3AsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wSXRlcmF0b3ItPnJlZCwgc3Rv
cEl0ZXJhdG9yLT5ncmVlbiwgc3RvcEl0ZXJhdG9yLT5ibHVlLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmNwcAppbmRleCAzYTkzMWRkYmFkNGZiYTVlZTlhZGU4YjZmYWI3MDRlYjVhZTAwM2EyLi5k
ZTQ1NTA5NGEwYmNmN2M5ZGQzYjM5ZTRmODhlMDJjNTA5ZGVlYzg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpj
bGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpCiAgICAgLy8gYWx3
YXlzIHVzZSBJbWFnZVNvdXJjZTo6Y2xlYXIodHJ1ZSwgLi4uKSB0byBjb21wbGV0ZWx5IGZyZWUg
dGhlIG1lbW9yeSBpbgogICAgIC8vIHRoaXMgY2FzZS4KICAgICBjbGVhckJlZm9yZUZyYW1lID0g
c3RkOjptaW4oY2xlYXJCZWZvcmVGcmFtZSwgbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSAtIDEp
OwotICAgIGNvbnN0IGF1dG8gZW5kID0gbV9mcmFtZUJ1ZmZlckNhY2hlLmJlZ2luKCkgKyBjbGVh
ckJlZm9yZUZyYW1lOworICAgIGNvbnN0IFZlY3RvcjxJbWFnZUZyYW1lPjo6aXRlcmF0b3IgZW5k
KG1fZnJhbWVCdWZmZXJDYWNoZS5iZWdpbigpICsgY2xlYXJCZWZvcmVGcmFtZSk7CiAKICAgICAv
LyBXZSBuZWVkIHRvIHByZXNlcnZlIGZyYW1lcyBzdWNoIHRoYXQ6CiAgICAgLy8gICAqIFdlIGRv
bid0IGNsZWFyIHxlbmR8CkBAIC0xNjUsMTQgKzE2NSwxNCBAQCB2b2lkIEdJRkltYWdlRGVjb2Rl
cjo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCBjbGVhckJlZm9yZUZyYW1lKQogICAgIC8v
ICAgKiBJZiB0aGUgZnJhbWUgaXMgcGFydGlhbCwgd2UncmUgZGVjb2RpbmcgaXQsIHNvIGRvbid0
IGNsZWFyIGl0OyBpZiBpdAogICAgIC8vICAgICBoYXMgYSBkaXNwb3NhbCBtZXRob2Qgb3RoZXIg
dGhhbiBEaXNwb3NlT3ZlcndyaXRlUHJldmlvdXMsIHN0b3AKICAgICAvLyAgICAgc2Nhbm5pbmcs
IGFzIHdlJ2xsIG9ubHkgbmVlZCB0aGlzIGZyYW1lIHdoZW4gZGVjb2RpbmcgdGhlIG5leHQgb25l
LgotICAgIGF1dG8gaSA9IGVuZDsKKyAgICBWZWN0b3I8SW1hZ2VGcmFtZT46Oml0ZXJhdG9yIGko
ZW5kKTsKICAgICBmb3IgKDsgKGkgIT0gbV9mcmFtZUJ1ZmZlckNhY2hlLmJlZ2luKCkpICYmICgo
aS0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgfHwgKGktPmRpc3Bvc2FsTWV0
aG9kKCkgPT0gSW1hZ2VGcmFtZTo6RGlzcG9zZU92ZXJ3cml0ZVByZXZpb3VzKSk7IC0taSkgewog
ICAgICAgICBpZiAoKGktPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpICYm
IChpICE9IGVuZCkpCiAgICAgICAgICAgICBpLT5jbGVhclBpeGVsRGF0YSgpOwogICAgIH0KIAog
ICAgIC8vIE5vdyB8aXwgaG9sZHMgdGhlIGxhc3QgZnJhbWUgd2UgbmVlZCB0byBwcmVzZXJ2ZTsg
Y2xlYXIgcHJpb3IgZnJhbWVzLgotICAgIGZvciAoYXV0byBqID0gbV9mcmFtZUJ1ZmZlckNhY2hl
LmJlZ2luKCk7IGogIT0gaTsgKytqKSB7CisgICAgZm9yIChWZWN0b3I8SW1hZ2VGcmFtZT46Oml0
ZXJhdG9yIGoobV9mcmFtZUJ1ZmZlckNhY2hlLmJlZ2luKCkpOyBqICE9IGk7ICsraikgewogICAg
ICAgICBBU1NFUlQoai0+c3RhdHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKTsKICAg
ICAgICAgaWYgKGotPnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCiAgICAgICAg
ICAgICBqLT5jbGVhclBpeGVsRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAppbmRleCBjZWVmMjNkOGNhZTAxYjg4ZDUxZTk5NWViYjJlMTg3ZWRiYzdjNGE4Li40MmNh
NzRmNGE0YzM1NjMzMGQwOWE4NzQ2YTJiMDBiYjdmM2I3OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTU3Nyw4ICsxNTc3LDggQEAgdm9pZCBSZW5kZXJCb3g6
OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3Im
IGMsIGNvbnMKICAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKICAg
ICB9CiAKLSAgICBhdXRvIHRvcExheWVyID0gbGF5ZXJzLnJlbmQoKTsKLSAgICBmb3IgKGF1dG8g
aXQgPSBsYXllcnMucmJlZ2luKCk7IGl0ICE9IHRvcExheWVyOyArK2l0KQorICAgIFZlY3Rvcjxj
b25zdCBGaWxsTGF5ZXIqPjo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciB0b3BMYXllciA9IGxheWVy
cy5yZW5kKCk7CisgICAgZm9yIChWZWN0b3I8Y29uc3QgRmlsbExheWVyKj46OmNvbnN0X3JldmVy
c2VfaXRlcmF0b3IgaXQgPSBsYXllcnMucmJlZ2luKCk7IGl0ICE9IHRvcExheWVyOyArK2l0KQog
ICAgICAgICBwYWludEZpbGxMYXllcihwYWludEluZm8sIGMsICppdCwgcmVjdCwgYmxlZWRBdm9p
ZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0LCBiYXNlQmdDb2xvclVzYWdlKTsKIAogICAgIGlm
IChzaG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFJlc29sdmVkUG9zaXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRSZXNvbHZlZFBvc2l0aW9uLmNwcAppbmRl
eCBkYzA5NTA5OWMwNGUzYTgyYzQzYzNlMDI2Y2RkZWFkZThkNWJlMzA3Li5jY2RjMmEzZGM2ZGEy
ZDY1MzRhN2ViNjM1MDllNmI0M2JhYTFmZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvR3JpZFJlc29sdmVkUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUmVzb2x2ZWRQb3NpdGlvbi5jcHAKQEAgLTI5NSw3ICsy
OTUsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGZpcnN0TmFtZWRHcmlkTGluZUJlZm9yZVBv
c2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uLCBjb25zdAogICAgIC8vIGFscmVhZHkgY29udmVydGVk
IHRvIGFuIGluZGV4IGluIG91ciBncmlkIHJlcHJlc2VudGF0aW9uIChpZSBvbmUgd2FzIHJlbW92
ZWQgZnJvbSB0aGUgZ3JpZCBsaW5lIHRvIGFjY291bnQgZm9yCiAgICAgLy8gdGhlIHNpZGUpLgog
ICAgIHVuc2lnbmVkIGZpcnN0TGluZUJlZm9yZVBvc2l0aW9uSW5kZXggPSAwOwotICAgIGF1dG8g
Zmlyc3RMaW5lQmVmb3JlUG9zaXRpb24gPSBzdGQ6Omxvd2VyX2JvdW5kKGdyaWRMaW5lcy5iZWdp
bigpLCBncmlkTGluZXMuZW5kKCksIHBvc2l0aW9uKTsKKyAgICBjb25zdCB1bnNpZ25lZCogZmly
c3RMaW5lQmVmb3JlUG9zaXRpb24gPSBzdGQ6Omxvd2VyX2JvdW5kKGdyaWRMaW5lcy5iZWdpbigp
LCBncmlkTGluZXMuZW5kKCksIHBvc2l0aW9uKTsKICAgICBpZiAoZmlyc3RMaW5lQmVmb3JlUG9z
aXRpb24gIT0gZ3JpZExpbmVzLmVuZCgpKSB7CiAgICAgICAgIGlmICgqZmlyc3RMaW5lQmVmb3Jl
UG9zaXRpb24gPiBwb3NpdGlvbiAmJiBmaXJzdExpbmVCZWZvcmVQb3NpdGlvbiAhPSBncmlkTGlu
ZXMuYmVnaW4oKSkKICAgICAgICAgICAgIC0tZmlyc3RMaW5lQmVmb3JlUG9zaXRpb247CkBAIC0z
MTYsOCArMzE2LDkgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRTcGFuPiBHcmlkUmVzb2x2ZWRQb3Np
dGlvbjo6cmVzb2x2ZVJvd1N0YXJ0Q29sdW1uU3RhcnROYW1lZEcKIAogc3RkOjp1bmlxdWVfcHRy
PEdyaWRTcGFuPiBHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6cmVzb2x2ZVJvd0VuZENvbHVtbkVuZE5h
bWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IEdyaWRSZXNv
bHZlZFBvc2l0aW9uJiByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlv
biYgcG9zaXRpb24sIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIGdyaWRMaW5lcykKIHsKKyAgICBB
U1NFUlQoZ3JpZExpbmVzLnNpemUoKSk7CiAgICAgdW5zaWduZWQgZmlyc3RMaW5lQWZ0ZXJPcHBv
c2l0ZVBvc2l0aW9uSW5kZXggPSBncmlkTGluZXMuc2l6ZSgpIC0gMTsKLSAgICBhdXRvIGZpcnN0
TGluZUFmdGVyT3Bwb3NpdGVQb3NpdGlvbiA9IHN0ZDo6dXBwZXJfYm91bmQoZ3JpZExpbmVzLmJl
Z2luKCksIGdyaWRMaW5lcy5lbmQoKSwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKKyAgICBj
b25zdCB1bnNpZ25lZCogZmlyc3RMaW5lQWZ0ZXJPcHBvc2l0ZVBvc2l0aW9uID0gc3RkOjp1cHBl
cl9ib3VuZChncmlkTGluZXMuYmVnaW4oKSwgZ3JpZExpbmVzLmVuZCgpLCByZXNvbHZlZE9wcG9z
aXRlUG9zaXRpb24pOwogICAgIGlmIChmaXJzdExpbmVBZnRlck9wcG9zaXRlUG9zaXRpb24gIT0g
Z3JpZExpbmVzLmVuZCgpKQogICAgICAgICBmaXJzdExpbmVBZnRlck9wcG9zaXRlUG9zaXRpb25J
bmRleCA9IGZpcnN0TGluZUFmdGVyT3Bwb3NpdGVQb3NpdGlvbiAtIGdyaWRMaW5lcy5iZWdpbigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcAppbmRleCBhMGJmNTAxOTFiNmFi
OTU4MTYxOGQ5NTNjMDg5MGQyMTJlYjdiMzYyLi5jMzNmZmI3N2I2ZDhmOTk1N2IxMjZmMWJmMzkx
N2E4NTdmZGZiNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAKQEAgLTI1
MiwzMSArMjUyLDMxIEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQga2VybmluZ0ZvclBhaXJPZlN0cmlu
Z3NBbmRHbHlwaHMoY29uc3QgU1ZHS2VybmluZ01hcCYga2VybmluCiB7CiAgICAgaWYgKCFnMS5p
c0VtcHR5KCkgJiYga2VybmluZ01hcC5nbHlwaE1hcC5jb250YWlucyhnMSkpIHsKICAgICAgICAg
U1ZHS2VybmluZ1ZlY3Rvcioga2VybmluZ1ZlY3RvciA9IGtlcm5pbmdNYXAuZ2x5cGhNYXAuZ2V0
KGcxKTsKLSAgICAgICAgc2l6ZV90IGl0ID0ga2VybmluZ1ZlY3Rvci0+c2l6ZSgpOwotICAgICAg
ICB3aGlsZSAoaXQtLSA+IDApIHsKLSAgICAgICAgICAgIGF1dG8mIHZhbHVlID0ga2VybmluZ1Zl
Y3Rvci0+YXQoaXQpOwotICAgICAgICAgICAgaWYgKG1hdGNoZXModTIsIGcyLCB2YWx1ZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmtlcm5pbmc7CisgICAgICAgIFNWR0tlcm5pbmdW
ZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0ga2VybmluZ1ZlY3Rvci0+ZW5kKCkgLSAxOworICAg
ICAgICBjb25zdCBTVkdLZXJuaW5nVmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbiA9IGtlcm5p
bmdWZWN0b3ItPmJlZ2luKCkgLSAxOworICAgICAgICBmb3IgKDsgaXQgIT0gYmVnaW47IC0taXQp
IHsKKyAgICAgICAgICAgIGlmIChtYXRjaGVzKHUyLCBnMiwgKml0KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gaXQtPmtlcm5pbmc7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXUxLmlz
RW1wdHkoKSkgewogICAgICAgICBpZiAoa2VybmluZ01hcC51bmljb2RlTWFwLmNvbnRhaW5zKHUx
KSkgewogICAgICAgICAgICAgU1ZHS2VybmluZ1ZlY3Rvcioga2VybmluZ1ZlY3RvciA9IGtlcm5p
bmdNYXAudW5pY29kZU1hcC5nZXQodTEpOwotICAgICAgICAgICAgc2l6ZV90IGl0ID0ga2Vybmlu
Z1ZlY3Rvci0+c2l6ZSgpOwotICAgICAgICAgICAgd2hpbGUgKGl0LS0gPiAwKSB7Ci0gICAgICAg
ICAgICAgICAgYXV0byYgdmFsdWUgPSBrZXJuaW5nVmVjdG9yLT5hdChpdCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1hdGNoZXModTIsIGcyLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiB2YWx1ZS5rZXJuaW5nOworICAgICAgICAgICAgU1ZHS2VybmluZ1ZlY3Rvcjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBrZXJuaW5nVmVjdG9yLT5lbmQoKSAtIDE7CisgICAgICAgICAgICBjb25z
dCBTVkdLZXJuaW5nVmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbiA9IGtlcm5pbmdWZWN0b3It
PmJlZ2luKCkgLSAxOworICAgICAgICAgICAgZm9yICg7IGl0ICE9IGJlZ2luOyAtLWl0KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG1hdGNoZXModTIsIGcyLCAqaXQpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gaXQtPmtlcm5pbmc7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIWtlcm5pbmdNYXAua2VybmluZ1VuaWNvZGVSYW5nZU1hcC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIHNpemVfdCBpdCA9IGtlcm5pbmdNYXAua2VybmluZ1VuaWNvZGVSYW5nZU1h
cC5zaXplKCk7Ci0gICAgICAgICAgICB3aGlsZSAoaXQtLSA+IDApIHsKLSAgICAgICAgICAgICAg
ICBhdXRvJiB2YWx1ZSA9IGtlcm5pbmdNYXAua2VybmluZ1VuaWNvZGVSYW5nZU1hcFtpdF07Ci0g
ICAgICAgICAgICAgICAgaWYgKG1hdGNoZXModTEsIHUyLCBnMiwgdmFsdWUpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdmFsdWUua2VybmluZzsKKyAgICAgICAgICAgIFZlY3RvcjxTVkdL
ZXJuaW5nUGFpcj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0ga2VybmluZ01hcC5rZXJuaW5nVW5pY29k
ZVJhbmdlTWFwLmVuZCgpIC0gMTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTVkdLZXJuaW5n
UGFpcj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2luID0ga2VybmluZ01hcC5rZXJuaW5nVW5pY29kZVJh
bmdlTWFwLmJlZ2luKCkgLSAxOworICAgICAgICAgICAgZm9yICg7IGl0ICE9IGJlZ2luOyAtLWl0
KSB7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoZXModTEsIHUyLCBnMiwgKml0KSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGl0LT5rZXJuaW5nOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAppbmRleCBiOTk5
NTU0OTQzOWFjOTY0YWIzZTY3YTMwZjBkODlkOGMzNThhY2EyLi45ZDlkMmEyYjIzYzYwMGZlYmI1
MzQwY2JjZGQxYjYxZGRjM2I5ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aEJ5dGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJl
YW0uaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQodW5zaWduZWQg
Y2hhciBieXRlKSB7IG1fZGF0YS5hcHBlbmQoYnl0ZSk7IH0KICAgICB2b2lkIGFwcGVuZChTVkdQ
YXRoQnl0ZVN0cmVhbSogb3RoZXIpCiAgICAgewotICAgICAgICBmb3IgKGF1dG8mIGJ5dGUgOiAq
b3RoZXIpCi0gICAgICAgICAgICBhcHBlbmQoYnl0ZSk7CisgICAgICAgIGZvciAoRGF0YUl0ZXJh
dG9yIGl0ID0gb3RoZXItPmJlZ2luKCk7IGl0ICE9IG90aGVyLT5lbmQoKTsgKytpdCkKKyAgICAg
ICAgICAgIGFwcGVuZCgqaXQpOwogICAgIH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuY2xl
YXIoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2RhdGEuc2l6ZSgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmgKaW5kZXggZGFmMmI5M2Q1MWI1YWY2YjczNGY1
ZjlhNzY1NDEzNjllMDQxNGEyYS4uM2Q4OWI4ZDUwODdhODZjZmVhZmZjMDE0MGI2OTQ3NjJjMDk1
ZGRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuaApAQCAtNjQsOCArNjQsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICB2b2lkIG1hcmtTdWJ0cmVlc0Rpc2pvaW50KGJv
b2wgZGlzam9pbnQpIHsgbV9zdWJ0cmVlc0FyZURpc2pvaW50ID0gZGlzam9pbnQ7IH0KICAgICAg
ICAgICAgIGJvb2wgc3VidHJlZXNBcmVEaXNqb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VidHJl
ZXNBcmVEaXNqb2ludCB8fCBtX25vZGVzLnNpemUoKSA8IDI7IH0KIAotICAgICAgICAgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxOb2RlPj46Oml0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9ub2Rlcy5iZWdpbigpOyB9Ci0gICAgICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPE5vZGU+
Pjo6aXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9ub2Rlcy5lbmQoKTsgfQorICAgICAg
ICAgICAgY29uc3QgUmVmUHRyPE5vZGU+KiBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXMu
YmVnaW4oKTsgfQorICAgICAgICAgICAgY29uc3QgUmVmUHRyPE5vZGU+KiBlbmQoKSBjb25zdCB7
IHJldHVybiBtX25vZGVzLmVuZCgpOyB9CiAKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAg
IHZvaWQgdHJhdmVyc2FsU29ydCgpIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>