<?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>180572</bug_id>
          
          <creation_ts>2017-12-07 22:21:53 -0800</creation_ts>
          <short_desc>Use StaticLock and Lock instead of Mutex in Windows WebKitLegacy</short_desc>
          <delta_ts>2017-12-08 04:32: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>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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1379486</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-07 22:21:53 -0800</bug_when>
    <thetext>Use StaticLock and Lock instead of Mutex in Windows WebKitLegacy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379487</commentid>
    <comment_count>1</comment_count>
      <attachid>328790</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-07 22:25:30 -0800</bug_when>
    <thetext>Created attachment 328790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379489</commentid>
    <comment_count>2</comment_count>
      <attachid>328790</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-07 22:37:19 -0800</bug_when>
    <thetext>Comment on attachment 328790
Patch

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

r=me

&gt; Source/WebKitLegacy/win/WebKitQuartzCoreAdditions/CAView.cpp:52
&gt; +        ASSERT_WITH_MESSAGE(!const_cast&lt;Lock&amp;&gt;(m_lock).tryLock(), &quot;CAView::Handle&apos;s mutex must be held when calling this function&quot;);

Consider changing &quot;mutex&quot; to &quot;lock&quot;.

&gt; Source/WebKitLegacy/win/WebKitQuartzCoreAdditions/CAView.cpp:58
&gt; +        ASSERT_WITH_MESSAGE(!m_lock.tryLock(), &quot;CAView::Handle&apos;s mutex must be held when calling this function&quot;);

Consider changing &quot;mutex&quot; to &quot;lock&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379496</commentid>
    <comment_count>3</comment_count>
      <attachid>328795</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-07 23:27:16 -0800</bug_when>
    <thetext>Created attachment 328795
Patch

Fix build failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379498</commentid>
    <comment_count>4</comment_count>
      <attachid>328790</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-08 00:25:19 -0800</bug_when>
    <thetext>Comment on attachment 328790
Patch

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

Thanks!

&gt;&gt; Source/WebKitLegacy/win/WebKitQuartzCoreAdditions/CAView.cpp:52
&gt;&gt; +        ASSERT_WITH_MESSAGE(!const_cast&lt;Lock&amp;&gt;(m_lock).tryLock(), &quot;CAView::Handle&apos;s mutex must be held when calling this function&quot;);
&gt; 
&gt; Consider changing &quot;mutex&quot; to &quot;lock&quot;.

Fixed.

&gt;&gt; Source/WebKitLegacy/win/WebKitQuartzCoreAdditions/CAView.cpp:58
&gt;&gt; +        ASSERT_WITH_MESSAGE(!m_lock.tryLock(), &quot;CAView::Handle&apos;s mutex must be held when calling this function&quot;);
&gt; 
&gt; Consider changing &quot;mutex&quot; to &quot;lock&quot;.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379505</commentid>
    <comment_count>5</comment_count>
      <attachid>328797</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-08 00:53:29 -0800</bug_when>
    <thetext>Created attachment 328797
Patch

Fix build failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379506</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-08 00:55:57 -0800</bug_when>
    <thetext>Attachment 328797 did not pass style-queue:


ERROR: Source/WebKitLegacy/win/WebKitQuartzCoreAdditions/CAView.cpp:120:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379514</commentid>
    <comment_count>7</comment_count>
      <attachid>328799</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-08 01:53:52 -0800</bug_when>
    <thetext>Created attachment 328799
Patch

Fix build failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379515</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-08 01:55:24 -0800</bug_when>
    <thetext>Attachment 328799 did not pass style-queue:


ERROR: Source/WebKitLegacy/win/WebKitQuartzCoreAdditions/CAView.cpp:120:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379522</commentid>
    <comment_count>9</comment_count>
      <attachid>328802</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-08 02:39:56 -0800</bug_when>
    <thetext>Created attachment 328802
Patch for landing

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379523</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-08 02:41:59 -0800</bug_when>
    <thetext>Attachment 328802 did not pass style-queue:


ERROR: Source/WebKitLegacy/win/WebKitQuartzCoreAdditions/CAView.cpp:120:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379525</commentid>
    <comment_count>11</comment_count>
      <attachid>328802</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-08 04:09:34 -0800</bug_when>
    <thetext>Comment on attachment 328802
Patch for landing

Clearing flags on attachment: 328802

Committed r225672: &lt;https://trac.webkit.org/changeset/225672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379526</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-08 04:32:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/35932629&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328790</attachid>
            <date>2017-12-07 22:25:30 -0800</date>
            <delta_ts>2017-12-07 22:37:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180572-20171208152529.patch</filename>
            <type>text/plain</type>
            <size>19243</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVjOWNiMDdjNzMxNmQ1OTJlNGFiNWM0
MDE3MzZkYWQ5ODBjMTA5ZDMuLjlkNTU2OWVjMTQyYTNjNmNiMDU3OWYxN2IzZjJlMGEyMWYwZTVj
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTYgQEAKIDIwMTctMTItMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXNlIFN0YXRpY0xvY2sgYW5kIExvY2sgaW5z
dGVhZCBvZiBNdXRleCBpbiBXaW5kb3dzIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTCBzaW5jZSBpdCdzIG5vIGxvbmdlciB1c2VkLgorCisgICAgICAgICogd3RmL1N0
ZExpYkV4dHJhcy5oOgorCisyMDE3LTEyLTA3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCiAgICAgICAgIFVzZSBXVEYgTG9ja2luZyBwcmltaXRpdmVzIGluIFdlYlRo
cmVhZCBhbmQgZHJvcCBwdGhyZWFkX3h4eCB1c2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ0NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
aW5kZXggMGY2NTdhZmVkMjY5YTUyODhlY2I5ZGQ4NDA1MmM2ZDllN2RlY2Q2NC4uMjc1YWYxZDNl
NmMyN2IxZWNkYzY3MWUxZTQ3N2M3Y2M2YzcxZWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDE3LTEyLTA3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIFVzZSBTdGF0aWNMb2NrIGFuZCBMb2NrIGluc3Rl
YWQgb2YgTXV0ZXggaW4gV2luZG93cyBXZWJLaXRMZWdhY3kKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDU3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBTdGF0aWNMb2NrIGFuZCBkcm9wIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTC4KKyAgICAgICAgQWxzbyB3ZSB1c2UgTG9jayBpbnN0
ZWFkIG9mIE11dGV4LgorCisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQz
RFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQUQzRFJlbmRlcmVyOjpzd2FwQ2hhaW4p
OgorICAgICAgICAoV0tRQ0E6OkNBRDNEUmVuZGVyZXI6OnJlbmRlckFuZFByZXNlbnQpOgorICAg
ICAgICAoV0tRQ0E6OkNBRDNEUmVuZGVyZXI6OnJlbmRlclRvSW1hZ2UpOgorICAgICAgICAoV0tR
Q0E6OkNBRDNEUmVuZGVyZXI6OnNldERldmljZUlzTG9zdCk6CisgICAgICAgIChXS1FDQTo6Q0FE
M0RSZW5kZXJlcjo6cmVuZGVySW50ZXJuYWwpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVB
ZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ0FWaWV3LmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OkhhbmRsZTo6Y3JlYXRl
KToKKyAgICAgICAgUmV0dXJuIFJlZjxIYW5kbGU+IGluc3RlYWQgb2YgUmVmUHRyPD4uCisKKyAg
ICAgICAgKFdLUUNBOjpDQVZpZXc6OkhhbmRsZTo6bG9jayk6CisgICAgICAgIChXS1FDQTo6Q0FW
aWV3OjpIYW5kbGU6OnZpZXcgY29uc3QpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6SGFuZGxl
OjpjbGVhcik6CisgICAgICAgIChXS1FDQTo6dmlld3MpOgorICAgICAgICAoV0tRQ0E6OnZpZXdz
TmVlZGluZ1VwZGF0ZSk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpyZWxlYXNlQWxsRDNEUmVz
b3VyY2VzKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OkNBVmlldyk6CisgICAgICAgIChXS1FD
QTo6Q0FWaWV3Ojp+Q0FWaWV3KToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnNldExheWVyKToK
KyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnVwZGF0ZSk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3
OjpkcmF3VG9XaW5kb3cpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6ZHJhd1RvV2luZG93SW50
ZXJuYWwpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6ZHJhd1RvSW1hZ2UpOgorICAgICAgICAo
V0tRQ0E6OkNBVmlldzo6d2lsbERyYXcpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6ZHJhd0lu
dG9EQyk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpzZXRTaG91bGRJbnZlcnRDb2xvcnMpOgor
ICAgICAgICAoV0tRQ0E6OkNBVmlldzo6c2NoZWR1bGVOZXh0RHJhdyk6CisgICAgICAgIChXS1FD
QTo6Q0FWaWV3OjpkaXNwbGF5TGlua1JlYWNoZWRDQU1lZGlhVGltZSk6CisgICAgICAgIChXS1FD
QTo6Q0FWaWV3Ojpjb250ZXh0RGlkQ2hhbmdlKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnVw
ZGF0ZVNvb24pOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6dXBkYXRlVmlld3NOb3cpOgorICAg
ICAgICAoV0tRQ0E6OkNBVmlldzo6ZDNkRGV2aWNlOSk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3
OjpIYW5kbGU6Om11dGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUUNBOjpnbG9iYWxTdGF0ZU11
dGV4KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaDoKKworMjAxNy0xMi0wNyAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBVc2UgU3RhdGljTG9jayBpbnN0ZWFk
IG9mIE5ldmVyRGVzdHJveWVkPExvY2s+CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODA1MDcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3Rk
TGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCA3ZmExZjE0
MGIyNDI2NzM4ODcxNjc3N2Y0OWY3NTdkZjQyOWFhYTc0Li5kNDM3ZjhjNzk2YWFjZjU2ZWJhZjAy
YTEwYWE3YWQ5YzNmZjdlNDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRy
YXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApAQCAtMzQsMTQgKzM0LDYg
QEAKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvQ29t
cGlsZXIuaD4KIAotLy8gVGhpcyB3YXMgdXNlZCB0byBkZWNsYXJlIGFuZCBkZWZpbmUgYSBzdGF0
aWMgbG9jYWwgdmFyaWFibGUgKHN0YXRpYyBUOykgc28gdGhhdAotLy8gIGl0IHdhcyBsZWFrZWQg
c28gdGhhdCBpdHMgZGVzdHJ1Y3RvcnMgd2VyZSBub3QgY2FsbGVkIGF0IGV4aXQuCi0vLyBOZXds
eSB3cml0dGVuIGNvZGUgc2hvdWxkIHVzZSBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VD4gaW5zdGVh
ZC4KLSNpZm5kZWYgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMCi0jZGVmaW5lIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTCh0eXBlLCBuYW1lLCBhcmd1bWVudHMpIFwKLSAgICBz
dGF0aWMgdHlwZSYgbmFtZSA9ICpuZXcgdHlwZSBhcmd1bWVudHMKLSNlbmRpZgotCiAvLyBVc2Ug
dGhpcyBtYWNybyB0byBkZWNsYXJlIGFuZCBkZWZpbmUgYSBkZWJ1Zy1vbmx5IGdsb2JhbCB2YXJp
YWJsZSB0aGF0IG1heSBoYXZlIGEKIC8vIG5vbi10cml2aWFsIGNvbnN0cnVjdG9yIGFuZCBkZXN0
cnVjdG9yLiBXaGVuIGJ1aWxkaW5nIHdpdGggY2xhbmcsIHRoaXMgd2lsbCBzdXBwcmVzcwogLy8g
d2FybmluZ3MgYWJvdXQgZ2xvYmFsIGNvbnN0cnVjdG9ycyBhbmQgZXhpdC10aW1lIGRlc3RydWN0
b3JzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKaW5kZXggZjkwNTJjM2Jk
NTBmMmY0NTA3YTZjMTZlNzcxMjk5OWE3YzdiNjQ4Mi4uZjE4NzIyMjk3MjU3ZmEyZTM2MmQyZjI1
NWI2YTU2OGRhZDYxMGU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3Bw
CkBAIC0xMTksNyArMTE5LDcgQEAgQ0FEM0RSZW5kZXJlcjo6Q0FEM0RSZW5kZXJlcigpCiAKIEND
b21QdHI8SURpcmVjdDNEU3dhcENoYWluOT4gQ0FEM0RSZW5kZXJlcjo6c3dhcENoYWluKENXaW5k
b3cgd2luZG93LCBjb25zdCBDR1NpemUmIHNpemUpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayht
X211dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAKICAgICBib29s
IHVzZURlZmF1bHRTd2FwQ2hhaW4gPSBmYWxzZTsKIApAQCAtMzg4LDcgKzM4OCw3IEBAIENBRDNE
UmVuZGVyZXI6OlJlbmRlclJlc3VsdCBDQUQzRFJlbmRlcmVyOjpyZW5kZXJBbmRQcmVzZW50KGNv
bnN0IENHUmVjdCYgYm91bmRzCiAgICAgQVNTRVJUX0FSRyhzd2FwQ2hhaW4sIHN3YXBDaGFpbik7
CiAgICAgQVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKIAotICAgIE11dGV4TG9ja2VyIGxv
Y2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogCiAgICAg
Q0dSZWN0IHVudXNlZERpcnR5UmVjdDsKICAgICBSZW5kZXJSZXN1bHQgcmVzdWx0ID0gcmVuZGVy
SW50ZXJuYWwoYm91bmRzLCBzd2FwQ2hhaW4sIHBvc3RQcm9jZXNzaW5nQ29udGV4dCwgY29udGV4
dCwgdW51c2VkRGlydHlSZWN0LCBuZXh0UmVuZGVyVGltZSk7CkBAIC00MjgsNyArNDI4LDcgQEAg
Q0FEM0RSZW5kZXJlcjo6UmVuZGVyUmVzdWx0IENBRDNEUmVuZGVyZXI6OnJlbmRlclRvSW1hZ2Uo
Y29uc3QgQ0dSZWN0JiBib3VuZHMsIEkKICAgICBBU1NFUlRfQVJHKHN3YXBDaGFpbiwgc3dhcENo
YWluKTsKICAgICBBU1NFUlRfQVJHKGNvbnRleHQsIGNvbnRleHQpOwogCi0gICAgTXV0ZXhMb2Nr
ZXIgbG9jayhtX211dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAK
ICAgICBDR1JlY3QgZGlydHlSZWN0OwogICAgIFJlbmRlclJlc3VsdCByZXN1bHQgPSByZW5kZXJJ
bnRlcm5hbChib3VuZHMsIHN3YXBDaGFpbiwgcG9zdFByb2Nlc3NpbmdDb250ZXh0LCBjb250ZXh0
LCBkaXJ0eVJlY3QsIG5leHRSZW5kZXJUaW1lKTsKQEAgLTQ3MSw3ICs0NzEsNyBAQCBDQUQzRFJl
bmRlcmVyOjpSZW5kZXJSZXN1bHQgQ0FEM0RSZW5kZXJlcjo6cmVuZGVyVG9JbWFnZShjb25zdCBD
R1JlY3QmIGJvdW5kcywgSQogCiB2b2lkIENBRDNEUmVuZGVyZXI6OnNldERldmljZUlzTG9zdChi
b29sIGxvc3QpCiB7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9tdXRleC50cnlMb2NrKCks
ICJtX211dGV4IG11c3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOworICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fbG9jay50cnlMb2NrKCksICJtX2xvY2sgbXVzdCBiZSBo
ZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7CiAKICAgICBpZiAobV9kZXZpY2VJc0xv
c3QgPT0gbG9zdCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDk0LDcgKzQ5NCw3IEBAIENBRDNEUmVu
ZGVyZXI6OlJlbmRlclJlc3VsdCBDQUQzRFJlbmRlcmVyOjpyZW5kZXJJbnRlcm5hbChjb25zdCBD
R1JlY3QmIGJvdW5kcywKICAgICBBU1NFUlRfQVJHKHN3YXBDaGFpbiwgc3dhcENoYWluKTsKICAg
ICBBU1NFUlRfQVJHKGNvbnRleHQsIGNvbnRleHQpOwogCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghbV9tdXRleC50cnlMb2NrKCksICJtX211dGV4IG11c3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcg
dGhpcyBmdW5jdGlvbiIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fbG9jay50cnlMb2Nr
KCksICJtX2xvY2sgbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7CiAg
ICAgQVNTRVJUKG1fZDNkRGV2aWNlKTsKICAgICBBU1NFUlQobV9yZW5kZXJPR0xDb250ZXh0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRR
dWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaAppbmRleCA3YzA0N2FlOWFjYmI0ZDE3
YzI4ZWE2NmRlMzkyYjM3ZDQ5MTdiZTE3Li5kNzYwODQ5MGQzMWRhMjJiYzgzOTYxNjU2M2Y2MTll
OGRhZTI4NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaApAQCAtOTksNyAr
OTksNyBAQCBjbGFzcyBDQUQzRFJlbmRlcmVyIHsKIAogICAgIHZvaWQgY3JlYXRlU2hhZGVySWZO
ZWVkZWQoKTsKIAotICAgIE11dGV4IG1fbXV0ZXg7CisgICAgTG9jayBtX2xvY2s7CiAgICAgQ0Nv
bVB0cjxJRGlyZWN0M0REZXZpY2U5PiBtX2QzZERldmljZTsKICAgICBDQVJlbmRlck9HTENvbnRl
eHQqIG1fcmVuZGVyT0dMQ29udGV4dCB7IG51bGxwdHIgfTsKICAgICBDQ29tUHRyPElEaXJlY3Qz
RFBpeGVsU2hhZGVyOT4gbV9waXhlbFNoYWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcAppbmRl
eCBhNzBkODc0YTgxZWEwZjg3Y2Y5M2Y0ZGI2Yjg1YjRiNTIxMjZmMzFiLi45YjY3ZTgxMWNhNTNj
NGJmZWEwYjEzM2M1MzNhYjNiODkyZDYxMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwCkBA
IC00Myw0MCArNDMsNDQgQEAgbmFtZXNwYWNlIFdLUUNBIHsKIAogY2xhc3MgQ0FWaWV3OjpIYW5k
bGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SGFuZGxlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxIYW5kbGU+IGNyZWF0ZShDQVZpZXcqIHZpZXcpIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIYW5kbGUodmlldykpOyB9CisgICAgc3RhdGljIFJlZjxIYW5kbGU+IGNyZWF0ZShD
QVZpZXcqIHZpZXcpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSGFuZGxlKHZpZXcpKTsgfQogICAg
IH5IYW5kbGUoKSB7IEFTU0VSVCghbV92aWV3KTsgfQogCi0gICAgTXV0ZXgmIG11dGV4KCkgeyBy
ZXR1cm4gbV9tdXRleDsgfQotICAgIENBVmlldyogdmlldygpIGNvbnN0IHsgQVNTRVJUX1dJVEhf
TUVTU0FHRSghY29uc3RfY2FzdDxNdXRleCY+KG1fbXV0ZXgpLnRyeUxvY2soKSwgIkNBVmlldzo6
SGFuZGxlJ3MgbXV0ZXggbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7
IHJldHVybiBtX3ZpZXc7IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBBU1NFUlRfV0lUSF9NRVNTQUdF
KCFtX211dGV4LnRyeUxvY2soKSwgIkNBVmlldzo6SGFuZGxlJ3MgbXV0ZXggbXVzdCBiZSBoZWxk
IHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7IG1fdmlldyA9IDA7IH0KKyAgICBMb2NrJiBs
b2NrKCkgeyByZXR1cm4gbV9sb2NrOyB9CisgICAgQ0FWaWV3KiB2aWV3KCkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWNvbnN0X2Nhc3Q8TG9jayY+KG1fbG9jayku
dHJ5TG9jaygpLCAiQ0FWaWV3OjpIYW5kbGUncyBtdXRleCBtdXN0IGJlIGhlbGQgd2hlbiBjYWxs
aW5nIHRoaXMgZnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIG1fdmlldzsKKyAgICB9CisKKyAg
ICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fbG9j
ay50cnlMb2NrKCksICJDQVZpZXc6OkhhbmRsZSdzIG11dGV4IG11c3QgYmUgaGVsZCB3aGVuIGNh
bGxpbmcgdGhpcyBmdW5jdGlvbiIpOworICAgICAgICBtX3ZpZXcgPSBudWxscHRyOworICAgIH0K
IAogcHJpdmF0ZToKICAgICBIYW5kbGUoQ0FWaWV3KiB2aWV3KQogICAgIDogbV92aWV3KHZpZXcp
IHsgfQogCi0gICAgTXV0ZXggbV9tdXRleDsKKyAgICBMb2NrIG1fbG9jazsKICAgICBDQVZpZXcq
IG1fdmlldzsKIH07CiAKLXN0YXRpYyBNdXRleCYgZ2xvYmFsU3RhdGVNdXRleCgpCi17Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBtdXRleCwgKCkpOwotICAgIHJl
dHVybiBtdXRleDsKLX0KLQorc3RhdGljIFN0YXRpY0xvY2sgZ2xvYmFsU3RhdGVMb2NrOwogc3Rh
dGljIEhXTkQgbWVzc2FnZVdpbmRvdzsKIHN0YXRpYyBjb25zdCB3Y2hhcl90IG1lc3NhZ2VXaW5k
b3dDbGFzc05hbWVbXSA9IEwiQ0FWaWV3TWVzc2FnZVdpbmRvdyI7CiAKLXN0YXRpYyBIYXNoU2V0
PFJlZlB0cjxDQVZpZXc6OkhhbmRsZT4gPiYgdmlld3MoKQorc3RhdGljIEhhc2hTZXQ8UmVmPENB
Vmlldzo6SGFuZGxlPj4mIHZpZXdzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoSGFzaFNldDxSZWZQdHI8Q0FWaWV3OjpIYW5kbGU+ID4sIHZpZXdzLCAoKSk7Ci0gICAg
cmV0dXJuIHZpZXdzOworICAgIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UmVmPENBVmlldzo6SGFu
ZGxlPj4+IHZpZXdzOworICAgIHJldHVybiB2aWV3cy5nZXQoKTsKIH0KIAotc3RhdGljIEhhc2hT
ZXQ8UmVmUHRyPENBVmlldzo6SGFuZGxlPiA+JiB2aWV3c05lZWRpbmdVcGRhdGUoKQorc3RhdGlj
IEhhc2hTZXQ8UmVmPENBVmlldzo6SGFuZGxlPj4mIHZpZXdzTmVlZGluZ1VwZGF0ZSgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8UmVmUHRyPENBVmlldzo6
SGFuZGxlPiA+LCB2aWV3cywgKCkpOwotICAgIHJldHVybiB2aWV3czsKKyAgICBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFJlZjxDQVZpZXc6OkhhbmRsZT4+IHZpZXdzOworICAgIHJldHVybiB2aWV3
cy5nZXQoKTsKIH0KIAogc3RhdGljIHZvaWQgcmVnaXN0ZXJNZXNzYWdlV2luZG93Q2xhc3MoKQpA
QCAtMTAxLDQzICsxMDUsNDAgQEAgc3RhdGljIEhXTkQgY3JlYXRlTWVzc2FnZVdpbmRvdygpCiAK
IHZvaWQgQ0FWaWV3OjpyZWxlYXNlQWxsRDNEUmVzb3VyY2VzKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIG11dGV4LCAoKSk7CisgICAgc3RhdGljIFN0YXRp
Y0xvY2sgbG9jazsKIAotICAgIGlmICghbXV0ZXgudHJ5TG9jaygpKSB7CisgICAgaWYgKCFsb2Nr
LnRyeUxvY2soKSkgewogICAgICAgICAvLyBBbm90aGVyIHRocmVhZCBpcyBjdXJyZW50bHkgcmVs
ZWFzaW5nIDNEIHJlc291cmNlcy4KICAgICAgICAgLy8gU2luY2UgaXQgd2lsbCBhbHNvIHJlbGVh
c2UgcmVzb3VyY2VzIGZvciB0aGUgdmlldyBjYWxsaW5nIHRoaXMgbWV0aG9kLCB3ZSBjYW4ganVz
dCByZXR1cm4gZWFybHkuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8UmVm
UHRyPEhhbmRsZT4+IHZpZXdzVG9SZWxlYXNlOwotCisgICAgVmVjdG9yPFJlZjxIYW5kbGU+PiB2
aWV3c1RvUmVsZWFzZTsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2soZ2xvYmFsU3Rh
dGVNdXRleCgpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9iYWxTdGF0ZUxv
Y2spOwogICAgICAgICB2aWV3c1RvUmVsZWFzZSA9IGNvcHlUb1ZlY3Rvcih2aWV3cygpKTsKICAg
ICB9CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZpZXdzVG9SZWxlYXNlLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGNvbnN0IFJlZlB0cjxIYW5kbGU+JiBoYW5kbGUgPSB2aWV3c1RvUmVs
ZWFzZVtpXTsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhoYW5kbGUtPm11dGV4KCkpOworICAg
IGZvciAoYXV0byYgaGFuZGxlIDogdmlld3NUb1JlbGVhc2UpIHsKKyAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhoYW5kbGUtPmxvY2soKSk7CiAgICAgICAgIENBVmlldyogdmlldyA9IGhh
bmRsZS0+dmlldygpOwogICAgICAgICBpZiAoIXZpZXcpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgTXV0ZXhMb2NrZXIgdmlld0xvY2sodmlldy0+bV9tdXRleCk7CisgICAgICAgIGF1
dG8gdmlld0xvY2tlciA9IGhvbGRMb2NrKHZpZXctPm1fbG9jayk7CiAgICAgICAgIHZpZXctPm1f
c3dhcENoYWluID0gbnVsbHB0cjsKICAgICAgICAgdmlldy0+bV9kM2RQb3N0UHJvY2Vzc2luZ0Nv
bnRleHQgPSBudWxscHRyOwogICAgIH0KIAotICAgIG11dGV4LnVubG9jaygpOworICAgIGxvY2su
dW5sb2NrKCk7CiB9CiAKIGlubGluZSBDQVZpZXc6OkNBVmlldyhEcmF3aW5nRGVzdGluYXRpb24g
ZGVzdGluYXRpb24pCiAgICAgOiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQogICAgICwgbV9o
YW5kbGUoSGFuZGxlOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2NvbnRleHQoYWRvcHRDRihDQUNG
Q29udGV4dENyZWF0ZSgwKSkpCi0gICAgLCBtX2JvdW5kcyhDR1JlY3RaZXJvKQogewogICAgIHsK
LSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhnbG9iYWxTdGF0ZU11dGV4KCkpOworICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKGdsb2JhbFN0YXRlTG9jayk7CiAgICAgICAgIHZpZXdzKCku
YWRkKG1faGFuZGxlKTsKICAgICB9CiAKQEAgLTE1MSwxNyArMTUyLDE3IEBAIENBVmlldzo6fkNB
VmlldygpCiAgICAgbV9sYXllciA9IG51bGxwdHI7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9j
a2VyIGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2Nr
KTsKICAgICAgICAgbV9jb250ZXh0ID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICAvLyBBdm9pZCBz
dG9wcGluZyB0aGUgZGlzcGxheSBsaW5rIHdoaWxlIHdlIGhvbGQgZWl0aGVyIG1fbXV0ZXggb3Ig
bV9kaXNwbGF5TGlua011dGV4LCBhcyBkb2luZworICAgIC8vIEF2b2lkIHN0b3BwaW5nIHRoZSBk
aXNwbGF5IGxpbmsgd2hpbGUgd2UgaG9sZCBlaXRoZXIgbV9sb2NrIG9yIG1fZGlzcGxheUxpbmtM
b2NrLCBhcyBkb2luZwogICAgIC8vIHNvIHdpbGwgd2FpdCBmb3IgZGlzcGxheUxpbmtSZWFjaGVk
Q0FNZWRpYVRpbWUgdG8gcmV0dXJuIGFuZCB0aGF0IGZ1bmN0aW9uIGNhbiB0YWtlIHRob3NlCiAg
ICAgLy8gc2FtZSBtdXRleGVzLgogICAgIFJlZlB0cjxDVkRpc3BsYXlMaW5rPiBsaW5rVG9TdG9w
OwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fZGlzcGxheUxpbmtNdXRleCk7
CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9kaXNwbGF5TGlua0xvY2spOwogICAg
ICAgICBsaW5rVG9TdG9wID0gV1RGTW92ZShtX2Rpc3BsYXlMaW5rKTsKICAgICB9CiAKQEAgLTE3
MSwxMSArMTcyLDExIEBAIENBVmlldzo6fkNBVmlldygpCiAgICAgdXBkYXRlKG51bGxwdHIsIENH
UmVjdFplcm8pOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1faGFuZGxlLT5t
dXRleCgpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2hhbmRsZS0+bG9jaygp
KTsKICAgICAgICAgbV9oYW5kbGUtPmNsZWFyKCk7CiAgICAgfQogCi0gICAgTXV0ZXhMb2NrZXIg
bG9jayhnbG9iYWxTdGF0ZU11dGV4KCkpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZ2xv
YmFsU3RhdGVMb2NrKTsKIAogICAgIHZpZXdzKCkucmVtb3ZlKG1faGFuZGxlKTsKICAgICBpZiAo
IXZpZXdzKCkuaXNFbXB0eSgpKQpAQCAtMjA1LDE0ICsyMDYsMTQgQEAgdm9pZCBDQVZpZXc6OnNl
dExheWVyKENBQ0ZMYXllclJlZiBsYXllcikKIAogICAgIENBQ0ZMYXllclNldEZyYW1lKG1fbGF5
ZXIuZ2V0KCksIG1fYm91bmRzKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Cisg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgIENBQ0ZDb250ZXh0U2V0TGF5
ZXIobV9jb250ZXh0LmdldCgpLCBtX2xheWVyLmdldCgpKTsKIH0KIAogdm9pZCBDQVZpZXc6OnVw
ZGF0ZShDV2luZG93IHdpbmRvdywgY29uc3QgQ0dSZWN0JiBib3VuZHMpCiB7CiAgICAgewotICAg
ICAgICBNdXRleExvY2tlciBsb2NrKGdsb2JhbFN0YXRlTXV0ZXgoKSk7CisgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soZ2xvYmFsU3RhdGVMb2NrKTsKIAogICAgICAgICAvLyBFbnN1cmUg
b3VyIG1lc3NhZ2Ugd2luZG93IGlzIGNyZWF0ZWQgb24gdGhlIHRocmVhZCB0aGF0IGNhbGxlZCBD
QVZpZXc6OnVwZGF0ZS4KICAgICAgICAgaWYgKCFtZXNzYWdlV2luZG93KQpAQCAtMjI5LDcgKzIz
MCw3IEBAIHZvaWQgQ0FWaWV3Ojp1cGRhdGUoQ1dpbmRvdyB3aW5kb3csIGNvbnN0IENHUmVjdCYg
Ym91bmRzKQogICAgIGJvb2wgYm91bmRzQ2hhbmdlZDsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhM
b2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xv
Y2spOwogCiAgICAgICAgIGJvdW5kc0NoYW5nZWQgPSAhQ0dSZWN0RXF1YWxUb1JlY3QobV9ib3Vu
ZHMsIGJvdW5kcyk7CiAKQEAgLTI5MiwxMyArMjkzLDEzIEBAIHZvaWQgQ0FWaWV3OjppbnZhbGlk
YXRlUmVjdHMoY29uc3QgQ0dSZWN0KiByZWN0cywgc2l6ZV90IGNvdW50KQogCiB2b2lkIENBVmll
dzo6ZHJhd1RvV2luZG93KCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICBkcmF3VG9XaW5kb3dJbnRlcm5h
bCgpOwogfQogCiB2b2lkIENBVmlldzo6ZHJhd1RvV2luZG93SW50ZXJuYWwoKQogewotICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIW1fbXV0ZXgudHJ5TG9jaygpLCAibV9tdXRleCBtdXN0IGJlIGhl
bGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KCFtX2xvY2sudHJ5TG9jaygpLCAibV9sb2NrIG11c3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcgdGhp
cyBmdW5jdGlvbiIpOwogICAgIENGVGltZUludGVydmFsIG5leHREcmF3VGltZTsKICAgICBib29s
IHVudXNlZFdpbGxVcGRhdGVTb29uOwogICAgIGlmICh3aWxsRHJhdyh1bnVzZWRXaWxsVXBkYXRl
U29vbikpCkBAIC0zMTUsNyArMzE2LDcgQEAgUmVmUHRyPEltYWdlPiBDQVZpZXc6OmRyYXdUb0lt
YWdlKENHUG9pbnQmIGltYWdlT3JpZ2luLCBDRlRpbWVJbnRlcnZhbCYgbmV4dERyYXcKICAgICBp
bWFnZU9yaWdpbiA9IENHUG9pbnRaZXJvOwogICAgIG5leHREcmF3VGltZSA9IG51bWVyaWNfbGlt
aXRzPENGVGltZUludGVydmFsPjo6aW5maW5pdHkoKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2so
bV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogCiAgICAgUmVm
UHRyPEltYWdlPiBpbWFnZTsKICAgICBib29sIHdpbGxVcGRhdGVTb29uOwpAQCAtMzM0LDcgKzMz
NSw3IEBAIFJlZlB0cjxJbWFnZT4gQ0FWaWV3OjpkcmF3VG9JbWFnZShDR1BvaW50JiBpbWFnZU9y
aWdpbiwgQ0ZUaW1lSW50ZXJ2YWwmIG5leHREcmF3CiAKIGJvb2wgQ0FWaWV3Ojp3aWxsRHJhdyhi
b29sJiB3aWxsVXBkYXRlU29vbikKIHsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX211dGV4
LnRyeUxvY2soKSwgIm1fbXV0ZXggbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0
aW9uIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9sb2NrLnRyeUxvY2soKSwgIm1fbG9j
ayBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsKIAogICAgIHdpbGxV
cGRhdGVTb29uID0gZmFsc2U7CiAKQEAgLTQzMSw3ICs0MzIsNyBAQCB2b2lkIENBVmlldzo6ZHJh
d0ludG9EQyhIREMgZGMpCiAgICAgfQogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2Nr
KG1fbXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAKICAg
ICAgICAgQ0FSZW5kZXJDb250ZXh0KiByZW5kZXJDb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q0FSZW5k
ZXJDb250ZXh0Kj4oQ0FDRkNvbnRleHRHZXRSZW5kZXJDb250ZXh0KG1fY29udGV4dC5nZXQoKSkp
OwogICAgICAgICBDQVJlbmRlckNvbnRleHRMb2NrKHJlbmRlckNvbnRleHQpOwpAQCAtNDU2LDEz
ICs0NTcsMTMgQEAgdm9pZCBDQVZpZXc6OmRyYXdJbnRvREMoSERDIGRjKQogCiB2b2lkIENBVmll
dzo6c2V0U2hvdWxkSW52ZXJ0Q29sb3JzKGJvb2wgc2hvdWxkSW52ZXJ0Q29sb3JzKQogewotICAg
IE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOwogICAgIG1fc2hvdWxkSW52ZXJ0Q29sb3JzID0gc2hvdWxkSW52ZXJ0Q29sb3JzOwog
fQogCiB2b2lkIENBVmlldzo6c2NoZWR1bGVOZXh0RHJhdyhDRlRpbWVJbnRlcnZhbCBtZWRpYVRp
bWUpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX2Rpc3BsYXlMaW5rTXV0ZXgpOworICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9kaXNwbGF5TGlua0xvY2spOwogCiAgICAgaWYgKCFtX2Nv
bnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5MSw3ICs0OTIsNyBAQCB2b2lkIENBVmlldzo6
ZGlzcGxheUxpbmtSZWFjaGVkQ0FNZWRpYVRpbWUoQ1ZEaXNwbGF5TGluayogZGlzcGxheUxpbmss
IENGVGltZUludAogICAgIEFTU0VSVChtX2Rlc3RpbmF0aW9uID09IERyYXdpbmdEZXN0aW5hdGlv
bldpbmRvdyk7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9kaXNwbGF5TGlu
a011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Rpc3BsYXlMaW5rTG9j
ayk7CiAgICAgICAgIGlmICghbV9kaXNwbGF5TGluaykKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChkaXNwbGF5TGluaywgZGlzcGxheUxpbmsgPT0gbV9kaXNwbGF5
TGluayk7CkBAIC01MDAsNyArNTAxLDcgQEAgdm9pZCBDQVZpZXc6OmRpc3BsYXlMaW5rUmVhY2hl
ZENBTWVkaWFUaW1lKENWRGlzcGxheUxpbmsqIGRpc3BsYXlMaW5rLCBDRlRpbWVJbnQKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICBkcmF3VG9XaW5kb3dJbnRl
cm5hbCgpOwogfQogCkBAIC01MTcsNyArNTE4LDcgQEAgdm9pZCBDQVZpZXc6OmNvbnRleHREaWRD
aGFuZ2VDYWxsYmFjayh2b2lkKiBvYmplY3QsIHZvaWQqIGluZm8sIHZvaWQqKQogdm9pZCBDQVZp
ZXc6OmNvbnRleHREaWRDaGFuZ2UoKQogewogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
ayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogCiAg
ICAgICAgIC8vIE91ciBsYXllcidzIHJlbmRlcmVkIGFwcGVhcmFuY2Ugb25jZSBhZ2FpbiBtYXRj
aGVzIG91ciBib3VuZHMsIHNvIGl0J3Mgc2FmZSB0byBkcmF3LgogICAgICAgICBtX2RyYXdpbmdQ
cm9oaWJpdGVkID0gZmFsc2U7CkBAIC01MzQsNyArNTM1LDcgQEAgdm9pZCBDQVZpZXc6OmNvbnRl
eHREaWRDaGFuZ2UoKQogdm9pZCBDQVZpZXc6OnVwZGF0ZVNvb24oKQogewogICAgIHsKLSAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9jayhnbG9iYWxTdGF0ZU11dGV4KCkpOworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGdsb2JhbFN0YXRlTG9jayk7CiAgICAgICAgIHZpZXdzTmVlZGluZ1Vw
ZGF0ZSgpLmFkZChtX2hhbmRsZSk7CiAgICAgfQogICAgIC8vIEl0IGRvZXNuJ3QgbWF0dGVyIHdo
YXQgdGltZXIgSUQgd2UgcGFzcyBoZXJlLCBhcyBsb25nIGFzIGl0J3Mgbm9uemVyby4KQEAgLTU0
NywyMSArNTQ4LDIwIEBAIHZvaWQgQ0FWaWV3Ojp1cGRhdGVWaWV3c05vdyhIV05EIHdpbmRvdywg
VUlOVCwgVUlOVF9QVFIgdGltZXJJRCwgRFdPUkQpCiAgICAgQVNTRVJUX0FSRyh3aW5kb3csIHdp
bmRvdyA9PSBtZXNzYWdlV2luZG93KTsKICAgICA6OktpbGxUaW1lcih3aW5kb3csIHRpbWVySUQp
OwogCi0gICAgVmVjdG9yPFJlZlB0cjxIYW5kbGU+PiB2aWV3c1RvVXBkYXRlOworICAgIFZlY3Rv
cjxSZWY8SGFuZGxlPj4gdmlld3NUb1VwZGF0ZTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9jayhnbG9iYWxTdGF0ZU11dGV4KCkpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGdsb2JhbFN0YXRlTG9jayk7CiAgICAgICAgIHZpZXdzVG9VcGRhdGUgPSBjb3B5VG9WZWN0
b3Iodmlld3NOZWVkaW5nVXBkYXRlKCkpOwogICAgICAgICB2aWV3c05lZWRpbmdVcGRhdGUoKS5j
bGVhcigpOwogICAgIH0KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmlld3NUb1VwZGF0
ZS5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBSZWZQdHI8SGFuZGxlPiYgaGFuZGxlID0g
dmlld3NUb1VwZGF0ZVtpXTsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhoYW5kbGUtPm11dGV4
KCkpOworICAgIGZvciAoYXV0byYgaGFuZGxlIDogdmlld3NUb1VwZGF0ZSkgeworICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKGhhbmRsZS0+bG9jaygpKTsKICAgICAgICAgQ0FWaWV3KiB2
aWV3ID0gaGFuZGxlLT52aWV3KCk7CiAgICAgICAgIGlmICghdmlldykKICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBNdXRleExvY2tlciB2aWV3TG9jayh2aWV3LT5tX211dGV4KTsKKyAg
ICAgICAgYXV0byB2aWV3TG9ja2VyID0gaG9sZExvY2sodmlldy0+bV9sb2NrKTsKICAgICAgICAg
dmlldy0+dXBkYXRlKHZpZXctPm1fd2luZG93LCB2aWV3LT5tX2JvdW5kcyk7CiAgICAgfQogfQpA
QCAtNTcwLDcgKzU3MCw3IEBAIElEaXJlY3QzRERldmljZTkqIENBVmlldzo6ZDNkRGV2aWNlOSgp
CiB7CiAgICAgLy8gSG9sZCB0aGUgbXV0ZXggd2hpbGUgd2UgcmV0dXJuIHRoZSBzaGFyZWQgZDNk
IGRldmljZS4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgcmV0YWluaW5nCiAgICAgLy8g
dGhlIGRldmljZSBiZWZvcmUgcmV0dXJuaW5nIHRvIGVuc3VyZSB0aGF0IGl0IGlzIG5vdCByZWxl
YXNlZC4KLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9sb2NrKTsKIAogICAgIHJldHVybiBDQUQzRFJlbmRlcmVyOjpzaGFyZWQoKS5k
M2REZXZpY2U5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaAppbmRleCBmMmQyZWViNTk2ZGNkZDBm
NTVjOTgxNTEyZTI1YTFhZTQyOTMxOGNkLi40NWI2NGVjMDE1MmU1MWQ0MjRmNDJlMzM5YzVlMDZm
YjU0NDgwNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKQEAgLTEwMywyMyArMTAzLDIzIEBAIGNs
YXNzIENBVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPENBVmlldz4sIHByaXZhdGUgQ1ZEaXNwbGF5
TGlua0NsaWVudCB7CiAgICAgRHJhd2luZ0Rlc3RpbmF0aW9uIG1fZGVzdGluYXRpb247CiAKICAg
ICAvLyBPbmx5IHNldCBpbiB0aGUgY29uc3RydWN0b3IsIHRoZW4gcHJvdGVjdGVkIGJ5IGl0cyBv
d24gTXV0ZXguCi0gICAgUmVmUHRyPEhhbmRsZT4gbV9oYW5kbGU7CisgICAgUmVmPEhhbmRsZT4g
bV9oYW5kbGU7CiAKICAgICAvLyBPbmx5IGFjY2Vzc2VkIGluIEFQSSBjYWxscywgdGhlIHN5bmNo
cm9uaXphdGlvbiBvZiB3aGljaCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlci4K
ICAgICBSZXRhaW5QdHI8Q0FDRkxheWVyUmVmPiBtX2xheWVyOwogICAgIENvbnRleHREaWRDaGFu
Z2VDYWxsYmFjayBtX2NvbnRleHREaWRDaGFuZ2VDYWxsYmFjazsKIAotICAgIE11dGV4IG1fbXV0
ZXg7Ci0gICAgLy8gQWNjZXNzZWQgYnkgdGhlIGRpc3BsYXkgbGluayB0aHJlYWQsIHByb3RlY3Rl
ZCBieSBtX211dGV4LiAobV9jb250ZXh0IGlzbid0IGRpcmVjdGx5CisgICAgTG9jayBtX2xvY2s7
CisgICAgLy8gQWNjZXNzZWQgYnkgdGhlIGRpc3BsYXkgbGluayB0aHJlYWQsIHByb3RlY3RlZCBi
eSBtX2xvY2suIChtX2NvbnRleHQgaXNuJ3QgZGlyZWN0bHkKICAgICAvLyBhY2Nlc3NlZCBmcm9t
IHRoZSBkaXNwbGF5IGxpbmsgdGhyZWFkLCBidXQgaXRzIENBUmVuZGVyQ29udGV4dCBpcy4pCiAg
ICAgUmV0YWluUHRyPENBQ0ZDb250ZXh0UmVmPiBtX2NvbnRleHQ7CiAgICAgQ1dpbmRvdyBtX3dp
bmRvdzsKLSAgICBDR1JlY3QgbV9ib3VuZHM7CisgICAgQ0dSZWN0IG1fYm91bmRzIHsgQ0dSZWN0
WmVybyB9OwogICAgIENDb21QdHI8SURpcmVjdDNEU3dhcENoYWluOT4gbV9zd2FwQ2hhaW47CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4gbV9kM2RQb3N0UHJv
Y2Vzc2luZ0NvbnRleHQ7CiAKLSAgICBNdXRleCBtX2Rpc3BsYXlMaW5rTXV0ZXg7Ci0gICAgLy8g
QWNjZXNzZWQgYnkgdGhlIGRpc3BsYXkgbGluayB0aHJlYWQsIHByb3RlY3RlZCBieSBtX2Rpc3Bs
YXlMaW5rTXV0ZXguCisgICAgTG9jayBtX2Rpc3BsYXlMaW5rTG9jazsKKyAgICAvLyBBY2Nlc3Nl
ZCBieSB0aGUgZGlzcGxheSBsaW5rIHRocmVhZCwgcHJvdGVjdGVkIGJ5IG1fZGlzcGxheUxpbmtM
b2NrLgogICAgIFJlZlB0cjxDVkRpc3BsYXlMaW5rPiBtX2Rpc3BsYXlMaW5rOwogICAgIENGVGlt
ZUludGVydmFsIG1fbmV4dERyYXdUaW1lIHsgMCB9OwogCg==
</data>
<flag name="review"
          id="347954"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328795</attachid>
            <date>2017-12-07 23:27:16 -0800</date>
            <delta_ts>2017-12-08 00:53:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180572-20171208162715.patch</filename>
            <type>text/plain</type>
            <size>19694</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVjOWNiMDdjNzMxNmQ1OTJlNGFiNWM0
MDE3MzZkYWQ5ODBjMTA5ZDMuLjlkNTU2OWVjMTQyYTNjNmNiMDU3OWYxN2IzZjJlMGEyMWYwZTVj
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTYgQEAKIDIwMTctMTItMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXNlIFN0YXRpY0xvY2sgYW5kIExvY2sgaW5z
dGVhZCBvZiBNdXRleCBpbiBXaW5kb3dzIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTCBzaW5jZSBpdCdzIG5vIGxvbmdlciB1c2VkLgorCisgICAgICAgICogd3RmL1N0
ZExpYkV4dHJhcy5oOgorCisyMDE3LTEyLTA3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCiAgICAgICAgIFVzZSBXVEYgTG9ja2luZyBwcmltaXRpdmVzIGluIFdlYlRo
cmVhZCBhbmQgZHJvcCBwdGhyZWFkX3h4eCB1c2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ0NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
aW5kZXggMGY2NTdhZmVkMjY5YTUyODhlY2I5ZGQ4NDA1MmM2ZDllN2RlY2Q2NC4uMjc1YWYxZDNl
NmMyN2IxZWNkYzY3MWUxZTQ3N2M3Y2M2YzcxZWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDE3LTEyLTA3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIFVzZSBTdGF0aWNMb2NrIGFuZCBMb2NrIGluc3Rl
YWQgb2YgTXV0ZXggaW4gV2luZG93cyBXZWJLaXRMZWdhY3kKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDU3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBTdGF0aWNMb2NrIGFuZCBkcm9wIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTC4KKyAgICAgICAgQWxzbyB3ZSB1c2UgTG9jayBpbnN0
ZWFkIG9mIE11dGV4LgorCisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQz
RFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQUQzRFJlbmRlcmVyOjpzd2FwQ2hhaW4p
OgorICAgICAgICAoV0tRQ0E6OkNBRDNEUmVuZGVyZXI6OnJlbmRlckFuZFByZXNlbnQpOgorICAg
ICAgICAoV0tRQ0E6OkNBRDNEUmVuZGVyZXI6OnJlbmRlclRvSW1hZ2UpOgorICAgICAgICAoV0tR
Q0E6OkNBRDNEUmVuZGVyZXI6OnNldERldmljZUlzTG9zdCk6CisgICAgICAgIChXS1FDQTo6Q0FE
M0RSZW5kZXJlcjo6cmVuZGVySW50ZXJuYWwpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVB
ZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ0FWaWV3LmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OkhhbmRsZTo6Y3JlYXRl
KToKKyAgICAgICAgUmV0dXJuIFJlZjxIYW5kbGU+IGluc3RlYWQgb2YgUmVmUHRyPD4uCisKKyAg
ICAgICAgKFdLUUNBOjpDQVZpZXc6OkhhbmRsZTo6bG9jayk6CisgICAgICAgIChXS1FDQTo6Q0FW
aWV3OjpIYW5kbGU6OnZpZXcgY29uc3QpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6SGFuZGxl
OjpjbGVhcik6CisgICAgICAgIChXS1FDQTo6dmlld3MpOgorICAgICAgICAoV0tRQ0E6OnZpZXdz
TmVlZGluZ1VwZGF0ZSk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpyZWxlYXNlQWxsRDNEUmVz
b3VyY2VzKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OkNBVmlldyk6CisgICAgICAgIChXS1FD
QTo6Q0FWaWV3Ojp+Q0FWaWV3KToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnNldExheWVyKToK
KyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnVwZGF0ZSk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3
OjpkcmF3VG9XaW5kb3cpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6ZHJhd1RvV2luZG93SW50
ZXJuYWwpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6ZHJhd1RvSW1hZ2UpOgorICAgICAgICAo
V0tRQ0E6OkNBVmlldzo6d2lsbERyYXcpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6ZHJhd0lu
dG9EQyk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpzZXRTaG91bGRJbnZlcnRDb2xvcnMpOgor
ICAgICAgICAoV0tRQ0E6OkNBVmlldzo6c2NoZWR1bGVOZXh0RHJhdyk6CisgICAgICAgIChXS1FD
QTo6Q0FWaWV3OjpkaXNwbGF5TGlua1JlYWNoZWRDQU1lZGlhVGltZSk6CisgICAgICAgIChXS1FD
QTo6Q0FWaWV3Ojpjb250ZXh0RGlkQ2hhbmdlKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnVw
ZGF0ZVNvb24pOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6dXBkYXRlVmlld3NOb3cpOgorICAg
ICAgICAoV0tRQ0E6OkNBVmlldzo6ZDNkRGV2aWNlOSk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3
OjpIYW5kbGU6Om11dGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUUNBOjpnbG9iYWxTdGF0ZU11
dGV4KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaDoKKworMjAxNy0xMi0wNyAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBVc2UgU3RhdGljTG9jayBpbnN0ZWFk
IG9mIE5ldmVyRGVzdHJveWVkPExvY2s+CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODA1MDcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3Rk
TGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCA3ZmExZjE0
MGIyNDI2NzM4ODcxNjc3N2Y0OWY3NTdkZjQyOWFhYTc0Li5kNDM3ZjhjNzk2YWFjZjU2ZWJhZjAy
YTEwYWE3YWQ5YzNmZjdlNDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRy
YXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApAQCAtMzQsMTQgKzM0LDYg
QEAKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvQ29t
cGlsZXIuaD4KIAotLy8gVGhpcyB3YXMgdXNlZCB0byBkZWNsYXJlIGFuZCBkZWZpbmUgYSBzdGF0
aWMgbG9jYWwgdmFyaWFibGUgKHN0YXRpYyBUOykgc28gdGhhdAotLy8gIGl0IHdhcyBsZWFrZWQg
c28gdGhhdCBpdHMgZGVzdHJ1Y3RvcnMgd2VyZSBub3QgY2FsbGVkIGF0IGV4aXQuCi0vLyBOZXds
eSB3cml0dGVuIGNvZGUgc2hvdWxkIHVzZSBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VD4gaW5zdGVh
ZC4KLSNpZm5kZWYgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMCi0jZGVmaW5lIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTCh0eXBlLCBuYW1lLCBhcmd1bWVudHMpIFwKLSAgICBz
dGF0aWMgdHlwZSYgbmFtZSA9ICpuZXcgdHlwZSBhcmd1bWVudHMKLSNlbmRpZgotCiAvLyBVc2Ug
dGhpcyBtYWNybyB0byBkZWNsYXJlIGFuZCBkZWZpbmUgYSBkZWJ1Zy1vbmx5IGdsb2JhbCB2YXJp
YWJsZSB0aGF0IG1heSBoYXZlIGEKIC8vIG5vbi10cml2aWFsIGNvbnN0cnVjdG9yIGFuZCBkZXN0
cnVjdG9yLiBXaGVuIGJ1aWxkaW5nIHdpdGggY2xhbmcsIHRoaXMgd2lsbCBzdXBwcmVzcwogLy8g
d2FybmluZ3MgYWJvdXQgZ2xvYmFsIGNvbnN0cnVjdG9ycyBhbmQgZXhpdC10aW1lIGRlc3RydWN0
b3JzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKaW5kZXggZjkwNTJjM2Jk
NTBmMmY0NTA3YTZjMTZlNzcxMjk5OWE3YzdiNjQ4Mi4uZjE4NzIyMjk3MjU3ZmEyZTM2MmQyZjI1
NWI2YTU2OGRhZDYxMGU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3Bw
CkBAIC0xMTksNyArMTE5LDcgQEAgQ0FEM0RSZW5kZXJlcjo6Q0FEM0RSZW5kZXJlcigpCiAKIEND
b21QdHI8SURpcmVjdDNEU3dhcENoYWluOT4gQ0FEM0RSZW5kZXJlcjo6c3dhcENoYWluKENXaW5k
b3cgd2luZG93LCBjb25zdCBDR1NpemUmIHNpemUpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayht
X211dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAKICAgICBib29s
IHVzZURlZmF1bHRTd2FwQ2hhaW4gPSBmYWxzZTsKIApAQCAtMzg4LDcgKzM4OCw3IEBAIENBRDNE
UmVuZGVyZXI6OlJlbmRlclJlc3VsdCBDQUQzRFJlbmRlcmVyOjpyZW5kZXJBbmRQcmVzZW50KGNv
bnN0IENHUmVjdCYgYm91bmRzCiAgICAgQVNTRVJUX0FSRyhzd2FwQ2hhaW4sIHN3YXBDaGFpbik7
CiAgICAgQVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKIAotICAgIE11dGV4TG9ja2VyIGxv
Y2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogCiAgICAg
Q0dSZWN0IHVudXNlZERpcnR5UmVjdDsKICAgICBSZW5kZXJSZXN1bHQgcmVzdWx0ID0gcmVuZGVy
SW50ZXJuYWwoYm91bmRzLCBzd2FwQ2hhaW4sIHBvc3RQcm9jZXNzaW5nQ29udGV4dCwgY29udGV4
dCwgdW51c2VkRGlydHlSZWN0LCBuZXh0UmVuZGVyVGltZSk7CkBAIC00MjgsNyArNDI4LDcgQEAg
Q0FEM0RSZW5kZXJlcjo6UmVuZGVyUmVzdWx0IENBRDNEUmVuZGVyZXI6OnJlbmRlclRvSW1hZ2Uo
Y29uc3QgQ0dSZWN0JiBib3VuZHMsIEkKICAgICBBU1NFUlRfQVJHKHN3YXBDaGFpbiwgc3dhcENo
YWluKTsKICAgICBBU1NFUlRfQVJHKGNvbnRleHQsIGNvbnRleHQpOwogCi0gICAgTXV0ZXhMb2Nr
ZXIgbG9jayhtX211dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAK
ICAgICBDR1JlY3QgZGlydHlSZWN0OwogICAgIFJlbmRlclJlc3VsdCByZXN1bHQgPSByZW5kZXJJ
bnRlcm5hbChib3VuZHMsIHN3YXBDaGFpbiwgcG9zdFByb2Nlc3NpbmdDb250ZXh0LCBjb250ZXh0
LCBkaXJ0eVJlY3QsIG5leHRSZW5kZXJUaW1lKTsKQEAgLTQ3MSw3ICs0NzEsNyBAQCBDQUQzRFJl
bmRlcmVyOjpSZW5kZXJSZXN1bHQgQ0FEM0RSZW5kZXJlcjo6cmVuZGVyVG9JbWFnZShjb25zdCBD
R1JlY3QmIGJvdW5kcywgSQogCiB2b2lkIENBRDNEUmVuZGVyZXI6OnNldERldmljZUlzTG9zdChi
b29sIGxvc3QpCiB7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9tdXRleC50cnlMb2NrKCks
ICJtX211dGV4IG11c3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOworICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fbG9jay50cnlMb2NrKCksICJtX2xvY2sgbXVzdCBiZSBo
ZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7CiAKICAgICBpZiAobV9kZXZpY2VJc0xv
c3QgPT0gbG9zdCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDk0LDcgKzQ5NCw3IEBAIENBRDNEUmVu
ZGVyZXI6OlJlbmRlclJlc3VsdCBDQUQzRFJlbmRlcmVyOjpyZW5kZXJJbnRlcm5hbChjb25zdCBD
R1JlY3QmIGJvdW5kcywKICAgICBBU1NFUlRfQVJHKHN3YXBDaGFpbiwgc3dhcENoYWluKTsKICAg
ICBBU1NFUlRfQVJHKGNvbnRleHQsIGNvbnRleHQpOwogCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghbV9tdXRleC50cnlMb2NrKCksICJtX211dGV4IG11c3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcg
dGhpcyBmdW5jdGlvbiIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fbG9jay50cnlMb2Nr
KCksICJtX2xvY2sgbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7CiAg
ICAgQVNTRVJUKG1fZDNkRGV2aWNlKTsKICAgICBBU1NFUlQobV9yZW5kZXJPR0xDb250ZXh0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRR
dWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaAppbmRleCA3YzA0N2FlOWFjYmI0ZDE3
YzI4ZWE2NmRlMzkyYjM3ZDQ5MTdiZTE3Li42N2Q0ODM1M2IwM2Q3MmVhOGE5YzI4YWI4NzBkNzVk
YTExZDgwOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSA8ZDNkOS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogc3Ry
dWN0IElEaXJlY3QzRERldmljZTk7CkBAIC05OSw3ICsxMDAsNyBAQCBjbGFzcyBDQUQzRFJlbmRl
cmVyIHsKIAogICAgIHZvaWQgY3JlYXRlU2hhZGVySWZOZWVkZWQoKTsKIAotICAgIE11dGV4IG1f
bXV0ZXg7CisgICAgTG9jayBtX2xvY2s7CiAgICAgQ0NvbVB0cjxJRGlyZWN0M0REZXZpY2U5PiBt
X2QzZERldmljZTsKICAgICBDQVJlbmRlck9HTENvbnRleHQqIG1fcmVuZGVyT0dMQ29udGV4dCB7
IG51bGxwdHIgfTsKICAgICBDQ29tUHRyPElEaXJlY3QzRFBpeGVsU2hhZGVyOT4gbV9waXhlbFNo
YWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvQ0FWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcAppbmRleCBhNzBkODc0YTgxZWEwZjg3Y2Y5M2Y0
ZGI2Yjg1YjRiNTIxMjZmMzFiLi5mNzE1ZmY0ZDRjNGI3NzI0MzVkNzVkYjcyM2YxZjc3MDE2M2Jl
NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSA8UXVhcnR6Q29yZS9DQVJlbmRlck9HTC5oPgogI2luY2x1ZGUgPGQzZDkuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KQEAgLTQzLDQwICs0NCw0NCBAQCBuYW1lc3BhY2UgV0tR
Q0EgewogCiBjbGFzcyBDQVZpZXc6OkhhbmRsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxIYW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEhhbmRsZT4gY3JlYXRlKENB
VmlldyogdmlldykgeyByZXR1cm4gYWRvcHRSZWYobmV3IEhhbmRsZSh2aWV3KSk7IH0KKyAgICBz
dGF0aWMgUmVmPEhhbmRsZT4gY3JlYXRlKENBVmlldyogdmlldykgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBIYW5kbGUodmlldykpOyB9CiAgICAgfkhhbmRsZSgpIHsgQVNTRVJUKCFtX3ZpZXcpOyB9
CiAKLSAgICBNdXRleCYgbXV0ZXgoKSB7IHJldHVybiBtX211dGV4OyB9Ci0gICAgQ0FWaWV3KiB2
aWV3KCkgY29uc3QgeyBBU1NFUlRfV0lUSF9NRVNTQUdFKCFjb25zdF9jYXN0PE11dGV4Jj4obV9t
dXRleCkudHJ5TG9jaygpLCAiQ0FWaWV3OjpIYW5kbGUncyBtdXRleCBtdXN0IGJlIGhlbGQgd2hl
biBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsgcmV0dXJuIG1fdmlldzsgfQotICAgIHZvaWQgY2xl
YXIoKSB7IEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fbXV0ZXgudHJ5TG9jaygpLCAiQ0FWaWV3OjpI
YW5kbGUncyBtdXRleCBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsg
bV92aWV3ID0gMDsgfQorICAgIExvY2smIGxvY2soKSB7IHJldHVybiBtX2xvY2s7IH0KKyAgICBD
QVZpZXcqIHZpZXcoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
Y29uc3RfY2FzdDxMb2NrJj4obV9sb2NrKS50cnlMb2NrKCksICJDQVZpZXc6OkhhbmRsZSdzIGxv
Y2sgbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7CisgICAgICAgIHJl
dHVybiBtX3ZpZXc7CisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFtX2xvY2sudHJ5TG9jaygpLCAiQ0FWaWV3OjpIYW5kbGUncyBs
b2NrIG11c3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOworICAgICAgICBt
X3ZpZXcgPSBudWxscHRyOworICAgIH0KIAogcHJpdmF0ZToKICAgICBIYW5kbGUoQ0FWaWV3KiB2
aWV3KQogICAgIDogbV92aWV3KHZpZXcpIHsgfQogCi0gICAgTXV0ZXggbV9tdXRleDsKKyAgICBM
b2NrIG1fbG9jazsKICAgICBDQVZpZXcqIG1fdmlldzsKIH07CiAKLXN0YXRpYyBNdXRleCYgZ2xv
YmFsU3RhdGVNdXRleCgpCi17Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11
dGV4LCBtdXRleCwgKCkpOwotICAgIHJldHVybiBtdXRleDsKLX0KLQorc3RhdGljIFN0YXRpY0xv
Y2sgZ2xvYmFsU3RhdGVMb2NrOwogc3RhdGljIEhXTkQgbWVzc2FnZVdpbmRvdzsKIHN0YXRpYyBj
b25zdCB3Y2hhcl90IG1lc3NhZ2VXaW5kb3dDbGFzc05hbWVbXSA9IEwiQ0FWaWV3TWVzc2FnZVdp
bmRvdyI7CiAKLXN0YXRpYyBIYXNoU2V0PFJlZlB0cjxDQVZpZXc6OkhhbmRsZT4gPiYgdmlld3Mo
KQorc3RhdGljIEhhc2hTZXQ8UmVmPENBVmlldzo6SGFuZGxlPj4mIHZpZXdzKCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxSZWZQdHI8Q0FWaWV3OjpIYW5k
bGU+ID4sIHZpZXdzLCAoKSk7Ci0gICAgcmV0dXJuIHZpZXdzOworICAgIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8UmVmPENBVmlldzo6SGFuZGxlPj4+IHZpZXdzOworICAgIHJldHVybiB2aWV3cy5n
ZXQoKTsKIH0KIAotc3RhdGljIEhhc2hTZXQ8UmVmUHRyPENBVmlldzo6SGFuZGxlPiA+JiB2aWV3
c05lZWRpbmdVcGRhdGUoKQorc3RhdGljIEhhc2hTZXQ8UmVmPENBVmlldzo6SGFuZGxlPj4mIHZp
ZXdzTmVlZGluZ1VwZGF0ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KEhhc2hTZXQ8UmVmUHRyPENBVmlldzo6SGFuZGxlPiA+LCB2aWV3cywgKCkpOwotICAgIHJldHVy
biB2aWV3czsKKyAgICBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFJlZjxDQVZpZXc6OkhhbmRsZT4+
PiB2aWV3czsKKyAgICByZXR1cm4gdmlld3MuZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyTWVzc2FnZVdpbmRvd0NsYXNzKCkKQEAgLTEwMSw0MyArMTA2LDQwIEBAIHN0YXRpYyBIV05E
IGNyZWF0ZU1lc3NhZ2VXaW5kb3coKQogCiB2b2lkIENBVmlldzo6cmVsZWFzZUFsbEQzRFJlc291
cmNlcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBtdXRl
eCwgKCkpOworICAgIHN0YXRpYyBTdGF0aWNMb2NrIGxvY2s7CiAKLSAgICBpZiAoIW11dGV4LnRy
eUxvY2soKSkgeworICAgIGlmICghbG9jay50cnlMb2NrKCkpIHsKICAgICAgICAgLy8gQW5vdGhl
ciB0aHJlYWQgaXMgY3VycmVudGx5IHJlbGVhc2luZyAzRCByZXNvdXJjZXMuCiAgICAgICAgIC8v
IFNpbmNlIGl0IHdpbGwgYWxzbyByZWxlYXNlIHJlc291cmNlcyBmb3IgdGhlIHZpZXcgY2FsbGlu
ZyB0aGlzIG1ldGhvZCwgd2UgY2FuIGp1c3QgcmV0dXJuIGVhcmx5LgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgVmVjdG9yPFJlZlB0cjxIYW5kbGU+PiB2aWV3c1RvUmVsZWFzZTsKLQor
ICAgIFZlY3RvcjxSZWY8SGFuZGxlPj4gdmlld3NUb1JlbGVhc2U7CiAgICAgewotICAgICAgICBN
dXRleExvY2tlciBsb2NrKGdsb2JhbFN0YXRlTXV0ZXgoKSk7CisgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2soZ2xvYmFsU3RhdGVMb2NrKTsKICAgICAgICAgdmlld3NUb1JlbGVhc2UgPSBj
b3B5VG9WZWN0b3Iodmlld3MoKSk7CiAgICAgfQogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2aWV3c1RvUmVsZWFzZS5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBSZWZQdHI8SGFu
ZGxlPiYgaGFuZGxlID0gdmlld3NUb1JlbGVhc2VbaV07Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2soaGFuZGxlLT5tdXRleCgpKTsKKyAgICBmb3IgKGF1dG8mIGhhbmRsZSA6IHZpZXdzVG9SZWxl
YXNlKSB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soaGFuZGxlLT5sb2NrKCkpOwog
ICAgICAgICBDQVZpZXcqIHZpZXcgPSBoYW5kbGUtPnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3
KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIE11dGV4TG9ja2VyIHZpZXdMb2NrKHZp
ZXctPm1fbXV0ZXgpOworICAgICAgICBhdXRvIHZpZXdMb2NrZXIgPSBob2xkTG9jayh2aWV3LT5t
X2xvY2spOwogICAgICAgICB2aWV3LT5tX3N3YXBDaGFpbiA9IG51bGxwdHI7CiAgICAgICAgIHZp
ZXctPm1fZDNkUG9zdFByb2Nlc3NpbmdDb250ZXh0ID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBt
dXRleC51bmxvY2soKTsKKyAgICBsb2NrLnVubG9jaygpOwogfQogCiBpbmxpbmUgQ0FWaWV3OjpD
QVZpZXcoRHJhd2luZ0Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQogICAgIDogbV9kZXN0aW5hdGlv
bihkZXN0aW5hdGlvbikKICAgICAsIG1faGFuZGxlKEhhbmRsZTo6Y3JlYXRlKHRoaXMpKQogICAg
ICwgbV9jb250ZXh0KGFkb3B0Q0YoQ0FDRkNvbnRleHRDcmVhdGUoMCkpKQotICAgICwgbV9ib3Vu
ZHMoQ0dSZWN0WmVybykKIHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2soZ2xvYmFs
U3RhdGVNdXRleCgpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9iYWxTdGF0
ZUxvY2spOwogICAgICAgICB2aWV3cygpLmFkZChtX2hhbmRsZSk7CiAgICAgfQogCkBAIC0xNTEs
MTcgKzE1MywxNyBAQCBDQVZpZXc6On5DQVZpZXcoKQogICAgIG1fbGF5ZXIgPSBudWxscHRyOwog
CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgICAgIG1fY29udGV4dCA9IG51bGxwdHI7
CiAgICAgfQogCi0gICAgLy8gQXZvaWQgc3RvcHBpbmcgdGhlIGRpc3BsYXkgbGluayB3aGlsZSB3
ZSBob2xkIGVpdGhlciBtX211dGV4IG9yIG1fZGlzcGxheUxpbmtNdXRleCwgYXMgZG9pbmcKKyAg
ICAvLyBBdm9pZCBzdG9wcGluZyB0aGUgZGlzcGxheSBsaW5rIHdoaWxlIHdlIGhvbGQgZWl0aGVy
IG1fbG9jayBvciBtX2Rpc3BsYXlMaW5rTG9jaywgYXMgZG9pbmcKICAgICAvLyBzbyB3aWxsIHdh
aXQgZm9yIGRpc3BsYXlMaW5rUmVhY2hlZENBTWVkaWFUaW1lIHRvIHJldHVybiBhbmQgdGhhdCBm
dW5jdGlvbiBjYW4gdGFrZSB0aG9zZQogICAgIC8vIHNhbWUgbXV0ZXhlcy4KICAgICBSZWZQdHI8
Q1ZEaXNwbGF5TGluaz4gbGlua1RvU3RvcDsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9jayhtX2Rpc3BsYXlMaW5rTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fZGlzcGxheUxpbmtMb2NrKTsKICAgICAgICAgbGlua1RvU3RvcCA9IFdURk1vdmUobV9kaXNw
bGF5TGluayk7CiAgICAgfQogCkBAIC0xNzEsMTEgKzE3MywxMSBAQCBDQVZpZXc6On5DQVZpZXco
KQogICAgIHVwZGF0ZShudWxscHRyLCBDR1JlY3RaZXJvKTsKIAogICAgIHsKLSAgICAgICAgTXV0
ZXhMb2NrZXIgbG9jayhtX2hhbmRsZS0+bXV0ZXgoKSk7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9oYW5kbGUtPmxvY2soKSk7CiAgICAgICAgIG1faGFuZGxlLT5jbGVhcigpOwog
ICAgIH0KIAotICAgIE11dGV4TG9ja2VyIGxvY2soZ2xvYmFsU3RhdGVNdXRleCgpKTsKKyAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKGdsb2JhbFN0YXRlTG9jayk7CiAKICAgICB2aWV3cygpLnJl
bW92ZShtX2hhbmRsZSk7CiAgICAgaWYgKCF2aWV3cygpLmlzRW1wdHkoKSkKQEAgLTIwNSwxNCAr
MjA3LDE0IEBAIHZvaWQgQ0FWaWV3OjpzZXRMYXllcihDQUNGTGF5ZXJSZWYgbGF5ZXIpCiAKICAg
ICBDQUNGTGF5ZXJTZXRGcmFtZShtX2xheWVyLmdldCgpLCBtX2JvdW5kcyk7CiAKLSAgICBNdXRl
eExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2Nr
KTsKICAgICBDQUNGQ29udGV4dFNldExheWVyKG1fY29udGV4dC5nZXQoKSwgbV9sYXllci5nZXQo
KSk7CiB9CiAKIHZvaWQgQ0FWaWV3Ojp1cGRhdGUoQ1dpbmRvdyB3aW5kb3csIGNvbnN0IENHUmVj
dCYgYm91bmRzKQogewogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhnbG9iYWxTdGF0
ZU11dGV4KCkpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGdsb2JhbFN0YXRlTG9j
ayk7CiAKICAgICAgICAgLy8gRW5zdXJlIG91ciBtZXNzYWdlIHdpbmRvdyBpcyBjcmVhdGVkIG9u
IHRoZSB0aHJlYWQgdGhhdCBjYWxsZWQgQ0FWaWV3Ojp1cGRhdGUuCiAgICAgICAgIGlmICghbWVz
c2FnZVdpbmRvdykKQEAgLTIyOSw3ICsyMzEsNyBAQCB2b2lkIENBVmlldzo6dXBkYXRlKENXaW5k
b3cgd2luZG93LCBjb25zdCBDR1JlY3QmIGJvdW5kcykKICAgICBib29sIGJvdW5kc0NoYW5nZWQ7
CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKIAogICAgICAgICBib3VuZHNDaGFuZ2VkID0g
IUNHUmVjdEVxdWFsVG9SZWN0KG1fYm91bmRzLCBib3VuZHMpOwogCkBAIC0yOTIsMTMgKzI5NCwx
MyBAQCB2b2lkIENBVmlldzo6aW52YWxpZGF0ZVJlY3RzKGNvbnN0IENHUmVjdCogcmVjdHMsIHNp
emVfdCBjb3VudCkKIAogdm9pZCBDQVZpZXc6OmRyYXdUb1dpbmRvdygpCiB7Ci0gICAgTXV0ZXhM
b2NrZXIgbG9jayhtX211dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7
CiAgICAgZHJhd1RvV2luZG93SW50ZXJuYWwoKTsKIH0KIAogdm9pZCBDQVZpZXc6OmRyYXdUb1dp
bmRvd0ludGVybmFsKCkKIHsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX211dGV4LnRyeUxv
Y2soKSwgIm1fbXV0ZXggbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9sb2NrLnRyeUxvY2soKSwgIm1fbG9jayBtdXN0
IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsKICAgICBDRlRpbWVJbnRlcnZh
bCBuZXh0RHJhd1RpbWU7CiAgICAgYm9vbCB1bnVzZWRXaWxsVXBkYXRlU29vbjsKICAgICBpZiAo
d2lsbERyYXcodW51c2VkV2lsbFVwZGF0ZVNvb24pKQpAQCAtMzE1LDcgKzMxNyw3IEBAIFJlZlB0
cjxJbWFnZT4gQ0FWaWV3OjpkcmF3VG9JbWFnZShDR1BvaW50JiBpbWFnZU9yaWdpbiwgQ0ZUaW1l
SW50ZXJ2YWwmIG5leHREcmF3CiAgICAgaW1hZ2VPcmlnaW4gPSBDR1BvaW50WmVybzsKICAgICBu
ZXh0RHJhd1RpbWUgPSBudW1lcmljX2xpbWl0czxDRlRpbWVJbnRlcnZhbD46OmluZmluaXR5KCk7
CiAKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9sb2NrKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAgICAgYm9vbCB3aWxs
VXBkYXRlU29vbjsKQEAgLTMzNCw3ICszMzYsNyBAQCBSZWZQdHI8SW1hZ2U+IENBVmlldzo6ZHJh
d1RvSW1hZ2UoQ0dQb2ludCYgaW1hZ2VPcmlnaW4sIENGVGltZUludGVydmFsJiBuZXh0RHJhdwog
CiBib29sIENBVmlldzo6d2lsbERyYXcoYm9vbCYgd2lsbFVwZGF0ZVNvb24pCiB7Ci0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghbV9tdXRleC50cnlMb2NrKCksICJtX211dGV4IG11c3QgYmUgaGVs
ZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IW1fbG9jay50cnlMb2NrKCksICJtX2xvY2sgbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlz
IGZ1bmN0aW9uIik7CiAKICAgICB3aWxsVXBkYXRlU29vbiA9IGZhbHNlOwogCkBAIC00MzEsNyAr
NDMzLDcgQEAgdm9pZCBDQVZpZXc6OmRyYXdJbnRvREMoSERDIGRjKQogICAgIH0KIAogICAgIHsK
LSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2xvY2spOwogCiAgICAgICAgIENBUmVuZGVyQ29udGV4dCogcmVuZGVyQ29u
dGV4dCA9IHN0YXRpY19jYXN0PENBUmVuZGVyQ29udGV4dCo+KENBQ0ZDb250ZXh0R2V0UmVuZGVy
Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKICAgICAgICAgQ0FSZW5kZXJDb250ZXh0TG9jayhy
ZW5kZXJDb250ZXh0KTsKQEAgLTQ1NiwxMyArNDU4LDEzIEBAIHZvaWQgQ0FWaWV3OjpkcmF3SW50
b0RDKEhEQyBkYykKIAogdm9pZCBDQVZpZXc6OnNldFNob3VsZEludmVydENvbG9ycyhib29sIHNo
b3VsZEludmVydENvbG9ycykKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICBtX3Nob3VsZEludmVydENvbG9y
cyA9IHNob3VsZEludmVydENvbG9yczsKIH0KIAogdm9pZCBDQVZpZXc6OnNjaGVkdWxlTmV4dERy
YXcoQ0ZUaW1lSW50ZXJ2YWwgbWVkaWFUaW1lKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9k
aXNwbGF5TGlua011dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZGlzcGxheUxp
bmtMb2NrKTsKIAogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CkBAIC00OTEs
NyArNDkzLDcgQEAgdm9pZCBDQVZpZXc6OmRpc3BsYXlMaW5rUmVhY2hlZENBTWVkaWFUaW1lKENW
RGlzcGxheUxpbmsqIGRpc3BsYXlMaW5rLCBDRlRpbWVJbnQKICAgICBBU1NFUlQobV9kZXN0aW5h
dGlvbiA9PSBEcmF3aW5nRGVzdGluYXRpb25XaW5kb3cpOwogCiAgICAgewotICAgICAgICBNdXRl
eExvY2tlciBsb2NrKG1fZGlzcGxheUxpbmtNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9kaXNwbGF5TGlua0xvY2spOwogICAgICAgICBpZiAoIW1fZGlzcGxheUxpbmsp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoZGlzcGxheUxpbmss
IGRpc3BsYXlMaW5rID09IG1fZGlzcGxheUxpbmspOwpAQCAtNTAwLDcgKzUwMiw3IEBAIHZvaWQg
Q0FWaWV3OjpkaXNwbGF5TGlua1JlYWNoZWRDQU1lZGlhVGltZShDVkRpc3BsYXlMaW5rKiBkaXNw
bGF5TGluaywgQ0ZUaW1lSW50CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTXV0
ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayk7CiAgICAgZHJhd1RvV2luZG93SW50ZXJuYWwoKTsKIH0KIApAQCAtNTE3LDcgKzUxOSw3IEBA
IHZvaWQgQ0FWaWV3Ojpjb250ZXh0RGlkQ2hhbmdlQ2FsbGJhY2sodm9pZCogb2JqZWN0LCB2b2lk
KiBpbmZvLCB2b2lkKikKIHZvaWQgQ0FWaWV3Ojpjb250ZXh0RGlkQ2hhbmdlKCkKIHsKICAgICB7
Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9sb2NrKTsKIAogICAgICAgICAvLyBPdXIgbGF5ZXIncyByZW5kZXJlZCBh
cHBlYXJhbmNlIG9uY2UgYWdhaW4gbWF0Y2hlcyBvdXIgYm91bmRzLCBzbyBpdCdzIHNhZmUgdG8g
ZHJhdy4KICAgICAgICAgbV9kcmF3aW5nUHJvaGliaXRlZCA9IGZhbHNlOwpAQCAtNTM0LDcgKzUz
Niw3IEBAIHZvaWQgQ0FWaWV3Ojpjb250ZXh0RGlkQ2hhbmdlKCkKIHZvaWQgQ0FWaWV3Ojp1cGRh
dGVTb29uKCkKIHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2soZ2xvYmFsU3RhdGVN
dXRleCgpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9iYWxTdGF0ZUxvY2sp
OwogICAgICAgICB2aWV3c05lZWRpbmdVcGRhdGUoKS5hZGQobV9oYW5kbGUpOwogICAgIH0KICAg
ICAvLyBJdCBkb2Vzbid0IG1hdHRlciB3aGF0IHRpbWVyIElEIHdlIHBhc3MgaGVyZSwgYXMgbG9u
ZyBhcyBpdCdzIG5vbnplcm8uCkBAIC01NDcsMzAgKzU0OSwyOSBAQCB2b2lkIENBVmlldzo6dXBk
YXRlVmlld3NOb3coSFdORCB3aW5kb3csIFVJTlQsIFVJTlRfUFRSIHRpbWVySUQsIERXT1JEKQog
ICAgIEFTU0VSVF9BUkcod2luZG93LCB3aW5kb3cgPT0gbWVzc2FnZVdpbmRvdyk7CiAgICAgOjpL
aWxsVGltZXIod2luZG93LCB0aW1lcklEKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8SGFuZGxlPj4g
dmlld3NUb1VwZGF0ZTsKKyAgICBWZWN0b3I8UmVmPEhhbmRsZT4+IHZpZXdzVG9VcGRhdGU7CiAK
ICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2soZ2xvYmFsU3RhdGVNdXRleCgpKTsKKyAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9iYWxTdGF0ZUxvY2spOwogICAgICAgICB2
aWV3c1RvVXBkYXRlID0gY29weVRvVmVjdG9yKHZpZXdzTmVlZGluZ1VwZGF0ZSgpKTsKICAgICAg
ICAgdmlld3NOZWVkaW5nVXBkYXRlKCkuY2xlYXIoKTsKICAgICB9CiAKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHZpZXdzVG9VcGRhdGUuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3Qg
UmVmUHRyPEhhbmRsZT4mIGhhbmRsZSA9IHZpZXdzVG9VcGRhdGVbaV07Ci0gICAgICAgIE11dGV4
TG9ja2VyIGxvY2soaGFuZGxlLT5tdXRleCgpKTsKKyAgICBmb3IgKGF1dG8mIGhhbmRsZSA6IHZp
ZXdzVG9VcGRhdGUpIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhoYW5kbGUtPmxv
Y2soKSk7CiAgICAgICAgIENBVmlldyogdmlldyA9IGhhbmRsZS0+dmlldygpOwogICAgICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgTXV0ZXhMb2NrZXIgdmll
d0xvY2sodmlldy0+bV9tdXRleCk7CisgICAgICAgIGF1dG8gdmlld0xvY2tlciA9IGhvbGRMb2Nr
KHZpZXctPm1fbG9jayk7CiAgICAgICAgIHZpZXctPnVwZGF0ZSh2aWV3LT5tX3dpbmRvdywgdmll
dy0+bV9ib3VuZHMpOwogICAgIH0KIH0KIAogSURpcmVjdDNERGV2aWNlOSogQ0FWaWV3OjpkM2RE
ZXZpY2U5KCkKIHsKLSAgICAvLyBIb2xkIHRoZSBtdXRleCB3aGlsZSB3ZSByZXR1cm4gdGhlIHNo
YXJlZCBkM2QgZGV2aWNlLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciByZXRhaW5pbmcK
KyAgICAvLyBIb2xkIHRoZSBsb2NrIHdoaWxlIHdlIHJldHVybiB0aGUgc2hhcmVkIGQzZCBkZXZp
Y2UuIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHJldGFpbmluZwogICAgIC8vIHRoZSBk
ZXZpY2UgYmVmb3JlIHJldHVybmluZyB0byBlbnN1cmUgdGhhdCBpdCBpcyBub3QgcmVsZWFzZWQu
Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fbG9jayk7CiAKICAgICByZXR1cm4gQ0FEM0RSZW5kZXJlcjo6c2hhcmVkKCkuZDNkRGV2
aWNlOSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKaW5kZXggZjJkMmVlYjU5NmRjZGQwZjU1Yzk4
MTUxMmUyNWExYWU0MjkzMThjZC4uNDViNjRlYzAxNTJlNTFkNDI0ZjQyZTMzOWM1ZTA2ZmI1NDQ4
MDQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9DQVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRR
dWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCkBAIC0xMDMsMjMgKzEwMywyMyBAQCBjbGFzcyBD
QVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxDQVZpZXc+LCBwcml2YXRlIENWRGlzcGxheUxpbmtD
bGllbnQgewogICAgIERyYXdpbmdEZXN0aW5hdGlvbiBtX2Rlc3RpbmF0aW9uOwogCiAgICAgLy8g
T25seSBzZXQgaW4gdGhlIGNvbnN0cnVjdG9yLCB0aGVuIHByb3RlY3RlZCBieSBpdHMgb3duIE11
dGV4LgotICAgIFJlZlB0cjxIYW5kbGU+IG1faGFuZGxlOworICAgIFJlZjxIYW5kbGU+IG1faGFu
ZGxlOwogCiAgICAgLy8gT25seSBhY2Nlc3NlZCBpbiBBUEkgY2FsbHMsIHRoZSBzeW5jaHJvbml6
YXRpb24gb2Ygd2hpY2ggaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIuCiAgICAg
UmV0YWluUHRyPENBQ0ZMYXllclJlZj4gbV9sYXllcjsKICAgICBDb250ZXh0RGlkQ2hhbmdlQ2Fs
bGJhY2sgbV9jb250ZXh0RGlkQ2hhbmdlQ2FsbGJhY2s7CiAKLSAgICBNdXRleCBtX211dGV4Owot
ICAgIC8vIEFjY2Vzc2VkIGJ5IHRoZSBkaXNwbGF5IGxpbmsgdGhyZWFkLCBwcm90ZWN0ZWQgYnkg
bV9tdXRleC4gKG1fY29udGV4dCBpc24ndCBkaXJlY3RseQorICAgIExvY2sgbV9sb2NrOworICAg
IC8vIEFjY2Vzc2VkIGJ5IHRoZSBkaXNwbGF5IGxpbmsgdGhyZWFkLCBwcm90ZWN0ZWQgYnkgbV9s
b2NrLiAobV9jb250ZXh0IGlzbid0IGRpcmVjdGx5CiAgICAgLy8gYWNjZXNzZWQgZnJvbSB0aGUg
ZGlzcGxheSBsaW5rIHRocmVhZCwgYnV0IGl0cyBDQVJlbmRlckNvbnRleHQgaXMuKQogICAgIFJl
dGFpblB0cjxDQUNGQ29udGV4dFJlZj4gbV9jb250ZXh0OwogICAgIENXaW5kb3cgbV93aW5kb3c7
Ci0gICAgQ0dSZWN0IG1fYm91bmRzOworICAgIENHUmVjdCBtX2JvdW5kcyB7IENHUmVjdFplcm8g
fTsKICAgICBDQ29tUHRyPElEaXJlY3QzRFN3YXBDaGFpbjk+IG1fc3dhcENoYWluOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+IG1fZDNkUG9zdFByb2Nlc3Np
bmdDb250ZXh0OwogCi0gICAgTXV0ZXggbV9kaXNwbGF5TGlua011dGV4OwotICAgIC8vIEFjY2Vz
c2VkIGJ5IHRoZSBkaXNwbGF5IGxpbmsgdGhyZWFkLCBwcm90ZWN0ZWQgYnkgbV9kaXNwbGF5TGlu
a011dGV4LgorICAgIExvY2sgbV9kaXNwbGF5TGlua0xvY2s7CisgICAgLy8gQWNjZXNzZWQgYnkg
dGhlIGRpc3BsYXkgbGluayB0aHJlYWQsIHByb3RlY3RlZCBieSBtX2Rpc3BsYXlMaW5rTG9jay4K
ICAgICBSZWZQdHI8Q1ZEaXNwbGF5TGluaz4gbV9kaXNwbGF5TGluazsKICAgICBDRlRpbWVJbnRl
cnZhbCBtX25leHREcmF3VGltZSB7IDAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328797</attachid>
            <date>2017-12-08 00:53:29 -0800</date>
            <delta_ts>2017-12-08 02:40:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180572-20171208175328.patch</filename>
            <type>text/plain</type>
            <size>20340</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVjOWNiMDdjNzMxNmQ1OTJlNGFiNWM0
MDE3MzZkYWQ5ODBjMTA5ZDMuLjAzNTJhMTBhNWU4YTk1ZjY3ZGM3YmVhNGVmOGQ3YTM3NDBkYWMx
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTItMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIFN0YXRpY0xvY2sgYW5kIExvY2sgaW5z
dGVhZCBvZiBNdXRleCBpbiBXaW5kb3dzIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTCBzaW5jZSBpdCdzIG5vIGxvbmdlciB1c2VkLgorCisgICAgICAgICogd3RmL1N0
ZExpYkV4dHJhcy5oOgorCiAyMDE3LTEyLTA3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFVzZSBXVEYgTG9ja2luZyBwcmltaXRpdmVzIGluIFdlYlRo
cmVhZCBhbmQgZHJvcCBwdGhyZWFkX3h4eCB1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpp
bmRleCAwZjY1N2FmZWQyNjlhNTI4OGVjYjlkZDg0MDUyYzZkOWU3ZGVjZDY0Li5lZTY5MTczMmM3
OTI3MDE1ODZjMjA0NDE0ZTgyODA0MjlmZGJiNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTctMTItMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIFN0YXRpY0xvY2sgYW5kIExvY2sgaW5zdGVh
ZCBvZiBNdXRleCBpbiBXaW5kb3dzIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFN0YXRpY0xvY2sgYW5kIGRyb3AgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMLgorICAgICAgICBBbHNvIHdlIHVzZSBMb2NrIGluc3Rl
YWQgb2YgTXV0ZXguCisKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNE
UmVuZGVyZXIuY3BwOgorICAgICAgICAoV0tRQ0E6OkNBRDNEUmVuZGVyZXI6OnN3YXBDaGFpbik6
CisgICAgICAgIChXS1FDQTo6Q0FEM0RSZW5kZXJlcjo6cmVuZGVyQW5kUHJlc2VudCk6CisgICAg
ICAgIChXS1FDQTo6Q0FEM0RSZW5kZXJlcjo6cmVuZGVyVG9JbWFnZSk6CisgICAgICAgIChXS1FD
QTo6Q0FEM0RSZW5kZXJlcjo6c2V0RGV2aWNlSXNMb3N0KToKKyAgICAgICAgKFdLUUNBOjpDQUQz
RFJlbmRlcmVyOjpyZW5kZXJJbnRlcm5hbCk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9DQVZpZXcuY3BwOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6SGFuZGxlOjpjcmVhdGUp
OgorICAgICAgICBSZXR1cm4gUmVmPEhhbmRsZT4gaW5zdGVhZCBvZiBSZWZQdHI8Pi4KKworICAg
ICAgICAoV0tRQ0E6OkNBVmlldzo6SGFuZGxlOjpsb2NrKToKKyAgICAgICAgKFdLUUNBOjpDQVZp
ZXc6OkhhbmRsZTo6dmlldyBjb25zdCk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpIYW5kbGU6
OmNsZWFyKToKKyAgICAgICAgKFdLUUNBOjp2aWV3cyk6CisgICAgICAgIChXS1FDQTo6dmlld3NO
ZWVkaW5nVXBkYXRlKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnJlbGVhc2VBbGxEM0RSZXNv
dXJjZXMpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6Q0FWaWV3KToKKyAgICAgICAgKFdLUUNB
OjpDQVZpZXc6On5DQVZpZXcpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6c2V0TGF5ZXIpOgor
ICAgICAgICAoV0tRQ0E6OkNBVmlldzo6dXBkYXRlKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6
OmRyYXdUb1dpbmRvdyk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpkcmF3VG9XaW5kb3dJbnRl
cm5hbCk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpkcmF3VG9JbWFnZSk6CisgICAgICAgIChX
S1FDQTo6Q0FWaWV3Ojp3aWxsRHJhdyk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpkcmF3SW50
b0RDKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnNldFNob3VsZEludmVydENvbG9ycyk6Cisg
ICAgICAgIChXS1FDQTo6Q0FWaWV3OjpzY2hlZHVsZU5leHREcmF3KToKKyAgICAgICAgKFdLUUNB
OjpDQVZpZXc6OmRpc3BsYXlMaW5rUmVhY2hlZENBTWVkaWFUaW1lKToKKyAgICAgICAgKFdLUUNB
OjpDQVZpZXc6OmNvbnRleHREaWRDaGFuZ2UpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6dXBk
YXRlU29vbik6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3Ojp1cGRhdGVWaWV3c05vdyk6CisgICAg
ICAgIChXS1FDQTo6Q0FWaWV3OjpkM2REZXZpY2U5KToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6
OkhhbmRsZTo6bXV0ZXgpOiBEZWxldGVkLgorICAgICAgICAoV0tRQ0E6Omdsb2JhbFN0YXRlTXV0
ZXgpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBVmlldy5oOgorCiAyMDE3LTEyLTA3ICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVzZSBTdGF0aWNMb2NrIGluc3RlYWQg
b2YgTmV2ZXJEZXN0cm95ZWQ8TG9jaz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0ZExp
YkV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKaW5kZXggN2ZhMWYxNDBi
MjQyNjczODg3MTY3NzdmNDlmNzU3ZGY0MjlhYWE3NC4uZDQzN2Y4Yzc5NmFhY2Y1NmViYWYwMmEx
MGFhN2FkOWMzZmY3ZTQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFz
LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKQEAgLTM0LDE0ICszNCw2IEBA
CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBp
bGVyLmg+CiAKLS8vIFRoaXMgd2FzIHVzZWQgdG8gZGVjbGFyZSBhbmQgZGVmaW5lIGEgc3RhdGlj
IGxvY2FsIHZhcmlhYmxlIChzdGF0aWMgVDspIHNvIHRoYXQKLS8vICBpdCB3YXMgbGVha2VkIHNv
IHRoYXQgaXRzIGRlc3RydWN0b3JzIHdlcmUgbm90IGNhbGxlZCBhdCBleGl0LgotLy8gTmV3bHkg
d3JpdHRlbiBjb2RlIHNob3VsZCB1c2Ugc3RhdGljIE5ldmVyRGVzdHJveWVkPFQ+IGluc3RlYWQu
Ci0jaWZuZGVmIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTAotI2RlZmluZSBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwodHlwZSwgbmFtZSwgYXJndW1lbnRzKSBcCi0gICAgc3Rh
dGljIHR5cGUmIG5hbWUgPSAqbmV3IHR5cGUgYXJndW1lbnRzCi0jZW5kaWYKLQogLy8gVXNlIHRo
aXMgbWFjcm8gdG8gZGVjbGFyZSBhbmQgZGVmaW5lIGEgZGVidWctb25seSBnbG9iYWwgdmFyaWFi
bGUgdGhhdCBtYXkgaGF2ZSBhCiAvLyBub24tdHJpdmlhbCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1
Y3Rvci4gV2hlbiBidWlsZGluZyB3aXRoIGNsYW5nLCB0aGlzIHdpbGwgc3VwcHJlc3MKIC8vIHdh
cm5pbmdzIGFib3V0IGdsb2JhbCBjb25zdHJ1Y3RvcnMgYW5kIGV4aXQtdGltZSBkZXN0cnVjdG9y
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVB
ZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCmluZGV4IGY5MDUyYzNiZDUw
ZjJmNDUwN2E2YzE2ZTc3MTI5OTlhN2M3YjY0ODIuLmYxODcyMjI5NzI1N2ZhMmUzNjJkMmYyNTVi
NmE1NjhkYWQ2MTBlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcApA
QCAtMTE5LDcgKzExOSw3IEBAIENBRDNEUmVuZGVyZXI6OkNBRDNEUmVuZGVyZXIoKQogCiBDQ29t
UHRyPElEaXJlY3QzRFN3YXBDaGFpbjk+IENBRDNEUmVuZGVyZXI6OnN3YXBDaGFpbihDV2luZG93
IHdpbmRvdywgY29uc3QgQ0dTaXplJiBzaXplKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9t
dXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogCiAgICAgYm9vbCB1
c2VEZWZhdWx0U3dhcENoYWluID0gZmFsc2U7CiAKQEAgLTM4OCw3ICszODgsNyBAQCBDQUQzRFJl
bmRlcmVyOjpSZW5kZXJSZXN1bHQgQ0FEM0RSZW5kZXJlcjo6cmVuZGVyQW5kUHJlc2VudChjb25z
dCBDR1JlY3QmIGJvdW5kcwogICAgIEFTU0VSVF9BUkcoc3dhcENoYWluLCBzd2FwQ2hhaW4pOwog
ICAgIEFTU0VSVF9BUkcoY29udGV4dCwgY29udGV4dCk7CiAKLSAgICBNdXRleExvY2tlciBsb2Nr
KG1fbXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKIAogICAgIENH
UmVjdCB1bnVzZWREaXJ0eVJlY3Q7CiAgICAgUmVuZGVyUmVzdWx0IHJlc3VsdCA9IHJlbmRlcklu
dGVybmFsKGJvdW5kcywgc3dhcENoYWluLCBwb3N0UHJvY2Vzc2luZ0NvbnRleHQsIGNvbnRleHQs
IHVudXNlZERpcnR5UmVjdCwgbmV4dFJlbmRlclRpbWUpOwpAQCAtNDI4LDcgKzQyOCw3IEBAIENB
RDNEUmVuZGVyZXI6OlJlbmRlclJlc3VsdCBDQUQzRFJlbmRlcmVyOjpyZW5kZXJUb0ltYWdlKGNv
bnN0IENHUmVjdCYgYm91bmRzLCBJCiAgICAgQVNTRVJUX0FSRyhzd2FwQ2hhaW4sIHN3YXBDaGFp
bik7CiAgICAgQVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKIAotICAgIE11dGV4TG9ja2Vy
IGxvY2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogCiAg
ICAgQ0dSZWN0IGRpcnR5UmVjdDsKICAgICBSZW5kZXJSZXN1bHQgcmVzdWx0ID0gcmVuZGVySW50
ZXJuYWwoYm91bmRzLCBzd2FwQ2hhaW4sIHBvc3RQcm9jZXNzaW5nQ29udGV4dCwgY29udGV4dCwg
ZGlydHlSZWN0LCBuZXh0UmVuZGVyVGltZSk7CkBAIC00NzEsNyArNDcxLDcgQEAgQ0FEM0RSZW5k
ZXJlcjo6UmVuZGVyUmVzdWx0IENBRDNEUmVuZGVyZXI6OnJlbmRlclRvSW1hZ2UoY29uc3QgQ0dS
ZWN0JiBib3VuZHMsIEkKIAogdm9pZCBDQUQzRFJlbmRlcmVyOjpzZXREZXZpY2VJc0xvc3QoYm9v
bCBsb3N0KQogewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fbXV0ZXgudHJ5TG9jaygpLCAi
bV9tdXRleCBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFtX2xvY2sudHJ5TG9jaygpLCAibV9sb2NrIG11c3QgYmUgaGVs
ZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOwogCiAgICAgaWYgKG1fZGV2aWNlSXNMb3N0
ID09IGxvc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5NCw3ICs0OTQsNyBAQCBDQUQzRFJlbmRl
cmVyOjpSZW5kZXJSZXN1bHQgQ0FEM0RSZW5kZXJlcjo6cmVuZGVySW50ZXJuYWwoY29uc3QgQ0dS
ZWN0JiBib3VuZHMsCiAgICAgQVNTRVJUX0FSRyhzd2FwQ2hhaW4sIHN3YXBDaGFpbik7CiAgICAg
QVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IW1fbXV0ZXgudHJ5TG9jaygpLCAibV9tdXRleCBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRo
aXMgZnVuY3Rpb24iKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2xvY2sudHJ5TG9jaygp
LCAibV9sb2NrIG11c3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOwogICAg
IEFTU0VSVChtX2QzZERldmljZSk7CiAgICAgQVNTRVJUKG1fcmVuZGVyT0dMQ29udGV4dCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ0FEM0RSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgKaW5kZXggN2MwNDdhZTlhY2JiNGQxN2My
OGVhNjZkZTM5MmIzN2Q0OTE3YmUxNy4uNjdkNDgzNTNiMDNkNzJlYThhOWMyOGFiODcwZDc1ZGEx
MWQ4MDhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgPGQzZDkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIHN0cnVj
dCBJRGlyZWN0M0REZXZpY2U5OwpAQCAtOTksNyArMTAwLDcgQEAgY2xhc3MgQ0FEM0RSZW5kZXJl
ciB7CiAKICAgICB2b2lkIGNyZWF0ZVNoYWRlcklmTmVlZGVkKCk7CiAKLSAgICBNdXRleCBtX211
dGV4OworICAgIExvY2sgbV9sb2NrOwogICAgIENDb21QdHI8SURpcmVjdDNERGV2aWNlOT4gbV9k
M2REZXZpY2U7CiAgICAgQ0FSZW5kZXJPR0xDb250ZXh0KiBtX3JlbmRlck9HTENvbnRleHQgeyBu
dWxscHRyIH07CiAgICAgQ0NvbVB0cjxJRGlyZWN0M0RQaXhlbFNoYWRlcjk+IG1fcGl4ZWxTaGFk
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKaW5kZXggYTcwZDg3NGE4MWVhMGY4N2NmOTNmNGRi
NmI4NWI0YjUyMTI2ZjMxYi4uMzVmNWYxNDc2NTAyNGYxNWM3YmU1NzA0M2UyMDhmZjFjZDlhYWMx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy9DQVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
PFF1YXJ0ekNvcmUvQ0FSZW5kZXJPR0wuaD4KICNpbmNsdWRlIDxkM2Q5Lmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi93aW4vR0RJT2JqZWN0Lmg+CkBAIC00Myw0MCArNDQsNDQgQEAgbmFtZXNwYWNlIFdLUUNB
IHsKIAogY2xhc3MgQ0FWaWV3OjpIYW5kbGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
SGFuZGxlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxIYW5kbGU+IGNyZWF0ZShDQVZp
ZXcqIHZpZXcpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBIYW5kbGUodmlldykpOyB9CisgICAgc3Rh
dGljIFJlZjxIYW5kbGU+IGNyZWF0ZShDQVZpZXcqIHZpZXcpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSGFuZGxlKHZpZXcpKTsgfQogICAgIH5IYW5kbGUoKSB7IEFTU0VSVCghbV92aWV3KTsgfQog
Ci0gICAgTXV0ZXgmIG11dGV4KCkgeyByZXR1cm4gbV9tdXRleDsgfQotICAgIENBVmlldyogdmll
dygpIGNvbnN0IHsgQVNTRVJUX1dJVEhfTUVTU0FHRSghY29uc3RfY2FzdDxNdXRleCY+KG1fbXV0
ZXgpLnRyeUxvY2soKSwgIkNBVmlldzo6SGFuZGxlJ3MgbXV0ZXggbXVzdCBiZSBoZWxkIHdoZW4g
Y2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7IHJldHVybiBtX3ZpZXc7IH0KLSAgICB2b2lkIGNsZWFy
KCkgeyBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX211dGV4LnRyeUxvY2soKSwgIkNBVmlldzo6SGFu
ZGxlJ3MgbXV0ZXggbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7IG1f
dmlldyA9IDA7IH0KKyAgICBMb2NrJiBsb2NrKCkgeyByZXR1cm4gbV9sb2NrOyB9CisgICAgQ0FW
aWV3KiB2aWV3KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWNv
bnN0X2Nhc3Q8TG9jayY+KG1fbG9jaykudHJ5TG9jaygpLCAiQ0FWaWV3OjpIYW5kbGUncyBsb2Nr
IG11c3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOworICAgICAgICByZXR1
cm4gbV92aWV3OworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghbV9sb2NrLnRyeUxvY2soKSwgIkNBVmlldzo6SGFuZGxlJ3MgbG9j
ayBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsKKyAgICAgICAgbV92
aWV3ID0gbnVsbHB0cjsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgSGFuZGxlKENBVmlldyogdmll
dykKICAgICA6IG1fdmlldyh2aWV3KSB7IH0KIAotICAgIE11dGV4IG1fbXV0ZXg7CisgICAgTG9j
ayBtX2xvY2s7CiAgICAgQ0FWaWV3KiBtX3ZpZXc7CiB9OwogCi1zdGF0aWMgTXV0ZXgmIGdsb2Jh
bFN0YXRlTXV0ZXgoKQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRl
eCwgbXV0ZXgsICgpKTsKLSAgICByZXR1cm4gbXV0ZXg7Ci19Ci0KK3N0YXRpYyBTdGF0aWNMb2Nr
IGdsb2JhbFN0YXRlTG9jazsKIHN0YXRpYyBIV05EIG1lc3NhZ2VXaW5kb3c7CiBzdGF0aWMgY29u
c3Qgd2NoYXJfdCBtZXNzYWdlV2luZG93Q2xhc3NOYW1lW10gPSBMIkNBVmlld01lc3NhZ2VXaW5k
b3ciOwogCi1zdGF0aWMgSGFzaFNldDxSZWZQdHI8Q0FWaWV3OjpIYW5kbGU+ID4mIHZpZXdzKCkK
K3N0YXRpYyBIYXNoU2V0PFJlZjxDQVZpZXc6OkhhbmRsZT4+JiB2aWV3cygpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8UmVmUHRyPENBVmlldzo6SGFuZGxl
PiA+LCB2aWV3cywgKCkpOwotICAgIHJldHVybiB2aWV3czsKKyAgICBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PFJlZjxDQVZpZXc6OkhhbmRsZT4+PiB2aWV3czsKKyAgICByZXR1cm4gdmlld3MuZ2V0
KCk7CiB9CiAKLXN0YXRpYyBIYXNoU2V0PFJlZlB0cjxDQVZpZXc6OkhhbmRsZT4gPiYgdmlld3NO
ZWVkaW5nVXBkYXRlKCkKK3N0YXRpYyBIYXNoU2V0PFJlZjxDQVZpZXc6OkhhbmRsZT4+JiB2aWV3
c05lZWRpbmdVcGRhdGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChI
YXNoU2V0PFJlZlB0cjxDQVZpZXc6OkhhbmRsZT4gPiwgdmlld3MsICgpKTsKLSAgICByZXR1cm4g
dmlld3M7CisgICAgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxSZWY8Q0FWaWV3OjpIYW5kbGU+Pj4g
dmlld3M7CisgICAgcmV0dXJuIHZpZXdzLmdldCgpOwogfQogCiBzdGF0aWMgdm9pZCByZWdpc3Rl
ck1lc3NhZ2VXaW5kb3dDbGFzcygpCkBAIC0xMDEsNDQgKzEwNiw0MSBAQCBzdGF0aWMgSFdORCBj
cmVhdGVNZXNzYWdlV2luZG93KCkKIAogdm9pZCBDQVZpZXc6OnJlbGVhc2VBbGxEM0RSZXNvdXJj
ZXMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0ZXgs
ICgpKTsKKyAgICBzdGF0aWMgU3RhdGljTG9jayBsb2NrOwogCi0gICAgaWYgKCFtdXRleC50cnlM
b2NrKCkpIHsKKyAgICBpZiAoIWxvY2sudHJ5TG9jaygpKSB7CiAgICAgICAgIC8vIEFub3RoZXIg
dGhyZWFkIGlzIGN1cnJlbnRseSByZWxlYXNpbmcgM0QgcmVzb3VyY2VzLgogICAgICAgICAvLyBT
aW5jZSBpdCB3aWxsIGFsc28gcmVsZWFzZSByZXNvdXJjZXMgZm9yIHRoZSB2aWV3IGNhbGxpbmcg
dGhpcyBtZXRob2QsIHdlIGNhbiBqdXN0IHJldHVybiBlYXJseS4KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFZlY3RvcjxSZWZQdHI8SGFuZGxlPj4gdmlld3NUb1JlbGVhc2U7Ci0KKyAg
ICBWZWN0b3I8UmVmPEhhbmRsZT4+IHZpZXdzVG9SZWxlYXNlOwogICAgIHsKLSAgICAgICAgTXV0
ZXhMb2NrZXIgbG9jayhnbG9iYWxTdGF0ZU11dGV4KCkpOwotICAgICAgICB2aWV3c1RvUmVsZWFz
ZSA9IGNvcHlUb1ZlY3Rvcih2aWV3cygpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhnbG9iYWxTdGF0ZUxvY2spOworICAgICAgICB2aWV3c1RvUmVsZWFzZSA9IFdURjo6bWFwKHZp
ZXdzKCksIFtdIChhdXRvJiBoYW5kbGUpIHsgaGFuZGxlLmNvcHlSZWYoKTsgfSk7CiAgICAgfQog
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWV3c1RvUmVsZWFzZS5zaXplKCk7ICsraSkg
ewotICAgICAgICBjb25zdCBSZWZQdHI8SGFuZGxlPiYgaGFuZGxlID0gdmlld3NUb1JlbGVhc2Vb
aV07Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2soaGFuZGxlLT5tdXRleCgpKTsKKyAgICBmb3Ig
KGF1dG8mIGhhbmRsZSA6IHZpZXdzVG9SZWxlYXNlKSB7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2soaGFuZGxlLT5sb2NrKCkpOwogICAgICAgICBDQVZpZXcqIHZpZXcgPSBoYW5kbGUt
PnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIHZpZXdMb2NrKHZpZXctPm1fbXV0ZXgpOworICAgICAgICBhdXRvIHZp
ZXdMb2NrZXIgPSBob2xkTG9jayh2aWV3LT5tX2xvY2spOwogICAgICAgICB2aWV3LT5tX3N3YXBD
aGFpbiA9IG51bGxwdHI7CiAgICAgICAgIHZpZXctPm1fZDNkUG9zdFByb2Nlc3NpbmdDb250ZXh0
ID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBtdXRleC51bmxvY2soKTsKKyAgICBsb2NrLnVubG9j
aygpOwogfQogCiBpbmxpbmUgQ0FWaWV3OjpDQVZpZXcoRHJhd2luZ0Rlc3RpbmF0aW9uIGRlc3Rp
bmF0aW9uKQogICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKICAgICAsIG1faGFuZGxl
KEhhbmRsZTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9jb250ZXh0KGFkb3B0Q0YoQ0FDRkNvbnRl
eHRDcmVhdGUoMCkpKQotICAgICwgbV9ib3VuZHMoQ0dSZWN0WmVybykKIHsKICAgICB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2soZ2xvYmFsU3RhdGVNdXRleCgpKTsKLSAgICAgICAgdmlld3Mo
KS5hZGQobV9oYW5kbGUpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGdsb2JhbFN0
YXRlTG9jayk7CisgICAgICAgIHZpZXdzKCkuYWRkKG1faGFuZGxlLmNvcHlSZWYoKSk7CiAgICAg
fQogCiAgICAgQ0FSZW5kZXJOb3RpZmljYXRpb25BZGRPYnNlcnZlcihrQ0FSZW5kZXJDb250ZXh0
RGlkQ2hhbmdlLCBDQUNGQ29udGV4dEdldFJlbmRlckNvbnRleHQobV9jb250ZXh0LmdldCgpKSwg
Y29udGV4dERpZENoYW5nZUNhbGxiYWNrLCB0aGlzKTsKQEAgLTE1MSwxNyArMTUzLDE3IEBAIENB
Vmlldzo6fkNBVmlldygpCiAgICAgbV9sYXllciA9IG51bGxwdHI7CiAKICAgICB7Ci0gICAgICAg
IE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9sb2NrKTsKICAgICAgICAgbV9jb250ZXh0ID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICAv
LyBBdm9pZCBzdG9wcGluZyB0aGUgZGlzcGxheSBsaW5rIHdoaWxlIHdlIGhvbGQgZWl0aGVyIG1f
bXV0ZXggb3IgbV9kaXNwbGF5TGlua011dGV4LCBhcyBkb2luZworICAgIC8vIEF2b2lkIHN0b3Bw
aW5nIHRoZSBkaXNwbGF5IGxpbmsgd2hpbGUgd2UgaG9sZCBlaXRoZXIgbV9sb2NrIG9yIG1fZGlz
cGxheUxpbmtMb2NrLCBhcyBkb2luZwogICAgIC8vIHNvIHdpbGwgd2FpdCBmb3IgZGlzcGxheUxp
bmtSZWFjaGVkQ0FNZWRpYVRpbWUgdG8gcmV0dXJuIGFuZCB0aGF0IGZ1bmN0aW9uIGNhbiB0YWtl
IHRob3NlCiAgICAgLy8gc2FtZSBtdXRleGVzLgogICAgIFJlZlB0cjxDVkRpc3BsYXlMaW5rPiBs
aW5rVG9TdG9wOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fZGlzcGxheUxp
bmtNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9kaXNwbGF5TGlua0xv
Y2spOwogICAgICAgICBsaW5rVG9TdG9wID0gV1RGTW92ZShtX2Rpc3BsYXlMaW5rKTsKICAgICB9
CiAKQEAgLTE3MSwxMyArMTczLDEzIEBAIENBVmlldzo6fkNBVmlldygpCiAgICAgdXBkYXRlKG51
bGxwdHIsIENHUmVjdFplcm8pOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1f
aGFuZGxlLT5tdXRleCgpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2hhbmRs
ZS0+bG9jaygpKTsKICAgICAgICAgbV9oYW5kbGUtPmNsZWFyKCk7CiAgICAgfQogCi0gICAgTXV0
ZXhMb2NrZXIgbG9jayhnbG9iYWxTdGF0ZU11dGV4KCkpOworICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2soZ2xvYmFsU3RhdGVMb2NrKTsKIAotICAgIHZpZXdzKCkucmVtb3ZlKG1faGFuZGxlKTsK
KyAgICB2aWV3cygpLnJlbW92ZShtX2hhbmRsZS5jb3B5UmVmKCkpOwogICAgIGlmICghdmlld3Mo
KS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjA1LDE0ICsyMDcsMTQgQEAgdm9p
ZCBDQVZpZXc6OnNldExheWVyKENBQ0ZMYXllclJlZiBsYXllcikKIAogICAgIENBQ0ZMYXllclNl
dEZyYW1lKG1fbGF5ZXIuZ2V0KCksIG1fYm91bmRzKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2so
bV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgIENBQ0ZD
b250ZXh0U2V0TGF5ZXIobV9jb250ZXh0LmdldCgpLCBtX2xheWVyLmdldCgpKTsKIH0KIAogdm9p
ZCBDQVZpZXc6OnVwZGF0ZShDV2luZG93IHdpbmRvdywgY29uc3QgQ0dSZWN0JiBib3VuZHMpCiB7
CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKGdsb2JhbFN0YXRlTXV0ZXgoKSk7Cisg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZ2xvYmFsU3RhdGVMb2NrKTsKIAogICAgICAg
ICAvLyBFbnN1cmUgb3VyIG1lc3NhZ2Ugd2luZG93IGlzIGNyZWF0ZWQgb24gdGhlIHRocmVhZCB0
aGF0IGNhbGxlZCBDQVZpZXc6OnVwZGF0ZS4KICAgICAgICAgaWYgKCFtZXNzYWdlV2luZG93KQpA
QCAtMjIzLDEzICsyMjUsMTMgQEAgdm9pZCBDQVZpZXc6OnVwZGF0ZShDV2luZG93IHdpbmRvdywg
Y29uc3QgQ0dSZWN0JiBib3VuZHMpCiAgICAgICAgIEFTU0VSVCg6OkdldEN1cnJlbnRUaHJlYWRJ
ZCgpID09IENXaW5kb3cobWVzc2FnZVdpbmRvdykuR2V0V2luZG93VGhyZWFkSUQoKSk7CiAgICAg
ICAgIEFTU0VSVCghd2luZG93IHx8IDo6R2V0Q3VycmVudFRocmVhZElkKCkgPT0gd2luZG93Lkdl
dFdpbmRvd1RocmVhZElEKCkpOwogCi0gICAgICAgIHZpZXdzTmVlZGluZ1VwZGF0ZSgpLnJlbW92
ZShtX2hhbmRsZSk7CisgICAgICAgIHZpZXdzTmVlZGluZ1VwZGF0ZSgpLnJlbW92ZShtX2hhbmRs
ZS5jb3B5UmVmKCkpOwogICAgIH0KIAogICAgIGJvb2wgYm91bmRzQ2hhbmdlZDsKIAogICAgIHsK
LSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2xvY2spOwogCiAgICAgICAgIGJvdW5kc0NoYW5nZWQgPSAhQ0dSZWN0RXF1
YWxUb1JlY3QobV9ib3VuZHMsIGJvdW5kcyk7CiAKQEAgLTI5MiwxMyArMjk0LDEzIEBAIHZvaWQg
Q0FWaWV3OjppbnZhbGlkYXRlUmVjdHMoY29uc3QgQ0dSZWN0KiByZWN0cywgc2l6ZV90IGNvdW50
KQogCiB2b2lkIENBVmlldzo6ZHJhd1RvV2luZG93KCkKIHsKLSAgICBNdXRleExvY2tlciBsb2Nr
KG1fbXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICBkcmF3
VG9XaW5kb3dJbnRlcm5hbCgpOwogfQogCiB2b2lkIENBVmlldzo6ZHJhd1RvV2luZG93SW50ZXJu
YWwoKQogewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fbXV0ZXgudHJ5TG9jaygpLCAibV9t
dXRleCBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsKKyAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFtX2xvY2sudHJ5TG9jaygpLCAibV9sb2NrIG11c3QgYmUgaGVsZCB3
aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOwogICAgIENGVGltZUludGVydmFsIG5leHREcmF3
VGltZTsKICAgICBib29sIHVudXNlZFdpbGxVcGRhdGVTb29uOwogICAgIGlmICh3aWxsRHJhdyh1
bnVzZWRXaWxsVXBkYXRlU29vbikpCkBAIC0zMTUsNyArMzE3LDcgQEAgUmVmUHRyPEltYWdlPiBD
QVZpZXc6OmRyYXdUb0ltYWdlKENHUG9pbnQmIGltYWdlT3JpZ2luLCBDRlRpbWVJbnRlcnZhbCYg
bmV4dERyYXcKICAgICBpbWFnZU9yaWdpbiA9IENHUG9pbnRaZXJvOwogICAgIG5leHREcmF3VGlt
ZSA9IG51bWVyaWNfbGltaXRzPENGVGltZUludGVydmFsPjo6aW5maW5pdHkoKTsKIAotICAgIE11
dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xv
Y2spOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICAgICBib29sIHdpbGxVcGRhdGVTb29u
OwpAQCAtMzM0LDcgKzMzNiw3IEBAIFJlZlB0cjxJbWFnZT4gQ0FWaWV3OjpkcmF3VG9JbWFnZShD
R1BvaW50JiBpbWFnZU9yaWdpbiwgQ0ZUaW1lSW50ZXJ2YWwmIG5leHREcmF3CiAKIGJvb2wgQ0FW
aWV3Ojp3aWxsRHJhdyhib29sJiB3aWxsVXBkYXRlU29vbikKIHsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFtX211dGV4LnRyeUxvY2soKSwgIm1fbXV0ZXggbXVzdCBiZSBoZWxkIHdoZW4gY2Fs
bGluZyB0aGlzIGZ1bmN0aW9uIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9sb2NrLnRy
eUxvY2soKSwgIm1fbG9jayBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24i
KTsKIAogICAgIHdpbGxVcGRhdGVTb29uID0gZmFsc2U7CiAKQEAgLTQzMSw3ICs0MzMsNyBAQCB2
b2lkIENBVmlldzo6ZHJhd0ludG9EQyhIREMgZGMpCiAgICAgfQogCiAgICAgewotICAgICAgICBN
dXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fbG9jayk7CiAKICAgICAgICAgQ0FSZW5kZXJDb250ZXh0KiByZW5kZXJDb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Q0FSZW5kZXJDb250ZXh0Kj4oQ0FDRkNvbnRleHRHZXRSZW5kZXJDb250ZXh0KG1f
Y29udGV4dC5nZXQoKSkpOwogICAgICAgICBDQVJlbmRlckNvbnRleHRMb2NrKHJlbmRlckNvbnRl
eHQpOwpAQCAtNDU2LDEzICs0NTgsMTMgQEAgdm9pZCBDQVZpZXc6OmRyYXdJbnRvREMoSERDIGRj
KQogCiB2b2lkIENBVmlldzo6c2V0U2hvdWxkSW52ZXJ0Q29sb3JzKGJvb2wgc2hvdWxkSW52ZXJ0
Q29sb3JzKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgIG1fc2hvdWxkSW52ZXJ0Q29sb3JzID0gc2hvdWxk
SW52ZXJ0Q29sb3JzOwogfQogCiB2b2lkIENBVmlldzo6c2NoZWR1bGVOZXh0RHJhdyhDRlRpbWVJ
bnRlcnZhbCBtZWRpYVRpbWUpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX2Rpc3BsYXlMaW5r
TXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9kaXNwbGF5TGlua0xvY2spOwog
CiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5MSw3ICs0OTMsNyBA
QCB2b2lkIENBVmlldzo6ZGlzcGxheUxpbmtSZWFjaGVkQ0FNZWRpYVRpbWUoQ1ZEaXNwbGF5TGlu
ayogZGlzcGxheUxpbmssIENGVGltZUludAogICAgIEFTU0VSVChtX2Rlc3RpbmF0aW9uID09IERy
YXdpbmdEZXN0aW5hdGlvbldpbmRvdyk7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2sobV9kaXNwbGF5TGlua011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2Rpc3BsYXlMaW5rTG9jayk7CiAgICAgICAgIGlmICghbV9kaXNwbGF5TGluaykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgQVNTRVJUX1VOVVNFRChkaXNwbGF5TGluaywgZGlzcGxheUxp
bmsgPT0gbV9kaXNwbGF5TGluayk7CkBAIC01MDAsNyArNTAyLDcgQEAgdm9pZCBDQVZpZXc6OmRp
c3BsYXlMaW5rUmVhY2hlZENBTWVkaWFUaW1lKENWRGlzcGxheUxpbmsqIGRpc3BsYXlMaW5rLCBD
RlRpbWVJbnQKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBNdXRleExvY2tlciBs
b2NrKG1fbXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICBk
cmF3VG9XaW5kb3dJbnRlcm5hbCgpOwogfQogCkBAIC01MTcsNyArNTE5LDcgQEAgdm9pZCBDQVZp
ZXc6OmNvbnRleHREaWRDaGFuZ2VDYWxsYmFjayh2b2lkKiBvYmplY3QsIHZvaWQqIGluZm8sIHZv
aWQqKQogdm9pZCBDQVZpZXc6OmNvbnRleHREaWRDaGFuZ2UoKQogewogICAgIHsKLSAgICAgICAg
TXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2xvY2spOwogCiAgICAgICAgIC8vIE91ciBsYXllcidzIHJlbmRlcmVkIGFwcGVhcmFuY2Ug
b25jZSBhZ2FpbiBtYXRjaGVzIG91ciBib3VuZHMsIHNvIGl0J3Mgc2FmZSB0byBkcmF3LgogICAg
ICAgICBtX2RyYXdpbmdQcm9oaWJpdGVkID0gZmFsc2U7CkBAIC01MzQsOCArNTM2LDggQEAgdm9p
ZCBDQVZpZXc6OmNvbnRleHREaWRDaGFuZ2UoKQogdm9pZCBDQVZpZXc6OnVwZGF0ZVNvb24oKQog
ewogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhnbG9iYWxTdGF0ZU11dGV4KCkpOwot
ICAgICAgICB2aWV3c05lZWRpbmdVcGRhdGUoKS5hZGQobV9oYW5kbGUpOworICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGdsb2JhbFN0YXRlTG9jayk7CisgICAgICAgIHZpZXdzTmVlZGlu
Z1VwZGF0ZSgpLmFkZChtX2hhbmRsZS5jb3B5UmVmKCkpOwogICAgIH0KICAgICAvLyBJdCBkb2Vz
bid0IG1hdHRlciB3aGF0IHRpbWVyIElEIHdlIHBhc3MgaGVyZSwgYXMgbG9uZyBhcyBpdCdzIG5v
bnplcm8uCiAgICAgQVNTRVJUKG1lc3NhZ2VXaW5kb3cpOwpAQCAtNTQ3LDMwICs1NDksMjcgQEAg
dm9pZCBDQVZpZXc6OnVwZGF0ZVZpZXdzTm93KEhXTkQgd2luZG93LCBVSU5ULCBVSU5UX1BUUiB0
aW1lcklELCBEV09SRCkKICAgICBBU1NFUlRfQVJHKHdpbmRvdywgd2luZG93ID09IG1lc3NhZ2VX
aW5kb3cpOwogICAgIDo6S2lsbFRpbWVyKHdpbmRvdywgdGltZXJJRCk7CiAKLSAgICBWZWN0b3I8
UmVmUHRyPEhhbmRsZT4+IHZpZXdzVG9VcGRhdGU7Ci0KKyAgICBIYXNoU2V0PFJlZjxDQVZpZXc6
OkhhbmRsZT4+IHZpZXdzVG9VcGRhdGU7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2Nr
KGdsb2JhbFN0YXRlTXV0ZXgoKSk7Ci0gICAgICAgIHZpZXdzVG9VcGRhdGUgPSBjb3B5VG9WZWN0
b3Iodmlld3NOZWVkaW5nVXBkYXRlKCkpOwotICAgICAgICB2aWV3c05lZWRpbmdVcGRhdGUoKS5j
bGVhcigpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGdsb2JhbFN0YXRlTG9jayk7
CisgICAgICAgIHZpZXdzTmVlZGluZ1VwZGF0ZSgpLnN3YXAodmlld3NUb1VwZGF0ZSk7CiAgICAg
fQogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWV3c1RvVXBkYXRlLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGNvbnN0IFJlZlB0cjxIYW5kbGU+JiBoYW5kbGUgPSB2aWV3c1RvVXBkYXRl
W2ldOwotICAgICAgICBNdXRleExvY2tlciBsb2NrKGhhbmRsZS0+bXV0ZXgoKSk7CisgICAgZm9y
IChhdXRvJiBoYW5kbGUgOiB2aWV3c1RvVXBkYXRlKSB7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2soaGFuZGxlLT5sb2NrKCkpOwogICAgICAgICBDQVZpZXcqIHZpZXcgPSBoYW5kbGUt
PnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIHZpZXdMb2NrKHZpZXctPm1fbXV0ZXgpOworICAgICAgICBhdXRvIHZp
ZXdMb2NrZXIgPSBob2xkTG9jayh2aWV3LT5tX2xvY2spOwogICAgICAgICB2aWV3LT51cGRhdGUo
dmlldy0+bV93aW5kb3csIHZpZXctPm1fYm91bmRzKTsKICAgICB9CiB9CiAKIElEaXJlY3QzRERl
dmljZTkqIENBVmlldzo6ZDNkRGV2aWNlOSgpCiB7Ci0gICAgLy8gSG9sZCB0aGUgbXV0ZXggd2hp
bGUgd2UgcmV0dXJuIHRoZSBzaGFyZWQgZDNkIGRldmljZS4gVGhlIGNhbGxlciBpcyByZXNwb25z
aWJsZSBmb3IgcmV0YWluaW5nCisgICAgLy8gSG9sZCB0aGUgbG9jayB3aGlsZSB3ZSByZXR1cm4g
dGhlIHNoYXJlZCBkM2QgZGV2aWNlLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciByZXRh
aW5pbmcKICAgICAvLyB0aGUgZGV2aWNlIGJlZm9yZSByZXR1cm5pbmcgdG8gZW5zdXJlIHRoYXQg
aXQgaXMgbm90IHJlbGVhc2VkLgotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogCiAgICAgcmV0dXJuIENBRDNEUmVuZGVy
ZXI6OnNoYXJlZCgpLmQzZERldmljZTkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCmluZGV4IGYy
ZDJlZWI1OTZkY2RkMGY1NWM5ODE1MTJlMjVhMWFlNDI5MzE4Y2QuLjQ1YjY0ZWMwMTUyZTUxZDQy
NGY0MmUzMzljNWUwNmZiNTQ0ODA0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaApAQCAtMTAzLDIz
ICsxMDMsMjMgQEAgY2xhc3MgQ0FWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8Q0FWaWV3PiwgcHJp
dmF0ZSBDVkRpc3BsYXlMaW5rQ2xpZW50IHsKICAgICBEcmF3aW5nRGVzdGluYXRpb24gbV9kZXN0
aW5hdGlvbjsKIAogICAgIC8vIE9ubHkgc2V0IGluIHRoZSBjb25zdHJ1Y3RvciwgdGhlbiBwcm90
ZWN0ZWQgYnkgaXRzIG93biBNdXRleC4KLSAgICBSZWZQdHI8SGFuZGxlPiBtX2hhbmRsZTsKKyAg
ICBSZWY8SGFuZGxlPiBtX2hhbmRsZTsKIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gQVBJIGNh
bGxzLCB0aGUgc3luY2hyb25pemF0aW9uIG9mIHdoaWNoIGlzIHRoZSByZXNwb25zaWJpbGl0eSBv
ZiB0aGUgY2FsbGVyLgogICAgIFJldGFpblB0cjxDQUNGTGF5ZXJSZWY+IG1fbGF5ZXI7CiAgICAg
Q29udGV4dERpZENoYW5nZUNhbGxiYWNrIG1fY29udGV4dERpZENoYW5nZUNhbGxiYWNrOwogCi0g
ICAgTXV0ZXggbV9tdXRleDsKLSAgICAvLyBBY2Nlc3NlZCBieSB0aGUgZGlzcGxheSBsaW5rIHRo
cmVhZCwgcHJvdGVjdGVkIGJ5IG1fbXV0ZXguIChtX2NvbnRleHQgaXNuJ3QgZGlyZWN0bHkKKyAg
ICBMb2NrIG1fbG9jazsKKyAgICAvLyBBY2Nlc3NlZCBieSB0aGUgZGlzcGxheSBsaW5rIHRocmVh
ZCwgcHJvdGVjdGVkIGJ5IG1fbG9jay4gKG1fY29udGV4dCBpc24ndCBkaXJlY3RseQogICAgIC8v
IGFjY2Vzc2VkIGZyb20gdGhlIGRpc3BsYXkgbGluayB0aHJlYWQsIGJ1dCBpdHMgQ0FSZW5kZXJD
b250ZXh0IGlzLikKICAgICBSZXRhaW5QdHI8Q0FDRkNvbnRleHRSZWY+IG1fY29udGV4dDsKICAg
ICBDV2luZG93IG1fd2luZG93OwotICAgIENHUmVjdCBtX2JvdW5kczsKKyAgICBDR1JlY3QgbV9i
b3VuZHMgeyBDR1JlY3RaZXJvIH07CiAgICAgQ0NvbVB0cjxJRGlyZWN0M0RTd2FwQ2hhaW45PiBt
X3N3YXBDaGFpbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0
PiBtX2QzZFBvc3RQcm9jZXNzaW5nQ29udGV4dDsKIAotICAgIE11dGV4IG1fZGlzcGxheUxpbmtN
dXRleDsKLSAgICAvLyBBY2Nlc3NlZCBieSB0aGUgZGlzcGxheSBsaW5rIHRocmVhZCwgcHJvdGVj
dGVkIGJ5IG1fZGlzcGxheUxpbmtNdXRleC4KKyAgICBMb2NrIG1fZGlzcGxheUxpbmtMb2NrOwor
ICAgIC8vIEFjY2Vzc2VkIGJ5IHRoZSBkaXNwbGF5IGxpbmsgdGhyZWFkLCBwcm90ZWN0ZWQgYnkg
bV9kaXNwbGF5TGlua0xvY2suCiAgICAgUmVmUHRyPENWRGlzcGxheUxpbms+IG1fZGlzcGxheUxp
bms7CiAgICAgQ0ZUaW1lSW50ZXJ2YWwgbV9uZXh0RHJhd1RpbWUgeyAwIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328799</attachid>
            <date>2017-12-08 01:53:52 -0800</date>
            <delta_ts>2017-12-08 02:40:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180572-20171208185351.patch</filename>
            <type>text/plain</type>
            <size>20347</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVjOWNiMDdjNzMxNmQ1OTJlNGFiNWM0
MDE3MzZkYWQ5ODBjMTA5ZDMuLjAzNTJhMTBhNWU4YTk1ZjY3ZGM3YmVhNGVmOGQ3YTM3NDBkYWMx
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTItMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIFN0YXRpY0xvY2sgYW5kIExvY2sgaW5z
dGVhZCBvZiBNdXRleCBpbiBXaW5kb3dzIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTCBzaW5jZSBpdCdzIG5vIGxvbmdlciB1c2VkLgorCisgICAgICAgICogd3RmL1N0
ZExpYkV4dHJhcy5oOgorCiAyMDE3LTEyLTA3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFVzZSBXVEYgTG9ja2luZyBwcmltaXRpdmVzIGluIFdlYlRo
cmVhZCBhbmQgZHJvcCBwdGhyZWFkX3h4eCB1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpp
bmRleCAwZjY1N2FmZWQyNjlhNTI4OGVjYjlkZDg0MDUyYzZkOWU3ZGVjZDY0Li5lZTY5MTczMmM3
OTI3MDE1ODZjMjA0NDE0ZTgyODA0MjlmZGJiNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTctMTItMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIFN0YXRpY0xvY2sgYW5kIExvY2sgaW5zdGVh
ZCBvZiBNdXRleCBpbiBXaW5kb3dzIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFN0YXRpY0xvY2sgYW5kIGRyb3AgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMLgorICAgICAgICBBbHNvIHdlIHVzZSBMb2NrIGluc3Rl
YWQgb2YgTXV0ZXguCisKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNE
UmVuZGVyZXIuY3BwOgorICAgICAgICAoV0tRQ0E6OkNBRDNEUmVuZGVyZXI6OnN3YXBDaGFpbik6
CisgICAgICAgIChXS1FDQTo6Q0FEM0RSZW5kZXJlcjo6cmVuZGVyQW5kUHJlc2VudCk6CisgICAg
ICAgIChXS1FDQTo6Q0FEM0RSZW5kZXJlcjo6cmVuZGVyVG9JbWFnZSk6CisgICAgICAgIChXS1FD
QTo6Q0FEM0RSZW5kZXJlcjo6c2V0RGV2aWNlSXNMb3N0KToKKyAgICAgICAgKFdLUUNBOjpDQUQz
RFJlbmRlcmVyOjpyZW5kZXJJbnRlcm5hbCk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9DQVZpZXcuY3BwOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6SGFuZGxlOjpjcmVhdGUp
OgorICAgICAgICBSZXR1cm4gUmVmPEhhbmRsZT4gaW5zdGVhZCBvZiBSZWZQdHI8Pi4KKworICAg
ICAgICAoV0tRQ0E6OkNBVmlldzo6SGFuZGxlOjpsb2NrKToKKyAgICAgICAgKFdLUUNBOjpDQVZp
ZXc6OkhhbmRsZTo6dmlldyBjb25zdCk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpIYW5kbGU6
OmNsZWFyKToKKyAgICAgICAgKFdLUUNBOjp2aWV3cyk6CisgICAgICAgIChXS1FDQTo6dmlld3NO
ZWVkaW5nVXBkYXRlKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnJlbGVhc2VBbGxEM0RSZXNv
dXJjZXMpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6Q0FWaWV3KToKKyAgICAgICAgKFdLUUNB
OjpDQVZpZXc6On5DQVZpZXcpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6c2V0TGF5ZXIpOgor
ICAgICAgICAoV0tRQ0E6OkNBVmlldzo6dXBkYXRlKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6
OmRyYXdUb1dpbmRvdyk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpkcmF3VG9XaW5kb3dJbnRl
cm5hbCk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpkcmF3VG9JbWFnZSk6CisgICAgICAgIChX
S1FDQTo6Q0FWaWV3Ojp3aWxsRHJhdyk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpkcmF3SW50
b0RDKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnNldFNob3VsZEludmVydENvbG9ycyk6Cisg
ICAgICAgIChXS1FDQTo6Q0FWaWV3OjpzY2hlZHVsZU5leHREcmF3KToKKyAgICAgICAgKFdLUUNB
OjpDQVZpZXc6OmRpc3BsYXlMaW5rUmVhY2hlZENBTWVkaWFUaW1lKToKKyAgICAgICAgKFdLUUNB
OjpDQVZpZXc6OmNvbnRleHREaWRDaGFuZ2UpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6dXBk
YXRlU29vbik6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3Ojp1cGRhdGVWaWV3c05vdyk6CisgICAg
ICAgIChXS1FDQTo6Q0FWaWV3OjpkM2REZXZpY2U5KToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6
OkhhbmRsZTo6bXV0ZXgpOiBEZWxldGVkLgorICAgICAgICAoV0tRQ0E6Omdsb2JhbFN0YXRlTXV0
ZXgpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBVmlldy5oOgorCiAyMDE3LTEyLTA3ICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVzZSBTdGF0aWNMb2NrIGluc3RlYWQg
b2YgTmV2ZXJEZXN0cm95ZWQ8TG9jaz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0ZExp
YkV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKaW5kZXggN2ZhMWYxNDBi
MjQyNjczODg3MTY3NzdmNDlmNzU3ZGY0MjlhYWE3NC4uZDQzN2Y4Yzc5NmFhY2Y1NmViYWYwMmEx
MGFhN2FkOWMzZmY3ZTQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFz
LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKQEAgLTM0LDE0ICszNCw2IEBA
CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBp
bGVyLmg+CiAKLS8vIFRoaXMgd2FzIHVzZWQgdG8gZGVjbGFyZSBhbmQgZGVmaW5lIGEgc3RhdGlj
IGxvY2FsIHZhcmlhYmxlIChzdGF0aWMgVDspIHNvIHRoYXQKLS8vICBpdCB3YXMgbGVha2VkIHNv
IHRoYXQgaXRzIGRlc3RydWN0b3JzIHdlcmUgbm90IGNhbGxlZCBhdCBleGl0LgotLy8gTmV3bHkg
d3JpdHRlbiBjb2RlIHNob3VsZCB1c2Ugc3RhdGljIE5ldmVyRGVzdHJveWVkPFQ+IGluc3RlYWQu
Ci0jaWZuZGVmIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTAotI2RlZmluZSBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwodHlwZSwgbmFtZSwgYXJndW1lbnRzKSBcCi0gICAgc3Rh
dGljIHR5cGUmIG5hbWUgPSAqbmV3IHR5cGUgYXJndW1lbnRzCi0jZW5kaWYKLQogLy8gVXNlIHRo
aXMgbWFjcm8gdG8gZGVjbGFyZSBhbmQgZGVmaW5lIGEgZGVidWctb25seSBnbG9iYWwgdmFyaWFi
bGUgdGhhdCBtYXkgaGF2ZSBhCiAvLyBub24tdHJpdmlhbCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1
Y3Rvci4gV2hlbiBidWlsZGluZyB3aXRoIGNsYW5nLCB0aGlzIHdpbGwgc3VwcHJlc3MKIC8vIHdh
cm5pbmdzIGFib3V0IGdsb2JhbCBjb25zdHJ1Y3RvcnMgYW5kIGV4aXQtdGltZSBkZXN0cnVjdG9y
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVB
ZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCmluZGV4IGY5MDUyYzNiZDUw
ZjJmNDUwN2E2YzE2ZTc3MTI5OTlhN2M3YjY0ODIuLmYxODcyMjI5NzI1N2ZhMmUzNjJkMmYyNTVi
NmE1NjhkYWQ2MTBlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcApA
QCAtMTE5LDcgKzExOSw3IEBAIENBRDNEUmVuZGVyZXI6OkNBRDNEUmVuZGVyZXIoKQogCiBDQ29t
UHRyPElEaXJlY3QzRFN3YXBDaGFpbjk+IENBRDNEUmVuZGVyZXI6OnN3YXBDaGFpbihDV2luZG93
IHdpbmRvdywgY29uc3QgQ0dTaXplJiBzaXplKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9t
dXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogCiAgICAgYm9vbCB1
c2VEZWZhdWx0U3dhcENoYWluID0gZmFsc2U7CiAKQEAgLTM4OCw3ICszODgsNyBAQCBDQUQzRFJl
bmRlcmVyOjpSZW5kZXJSZXN1bHQgQ0FEM0RSZW5kZXJlcjo6cmVuZGVyQW5kUHJlc2VudChjb25z
dCBDR1JlY3QmIGJvdW5kcwogICAgIEFTU0VSVF9BUkcoc3dhcENoYWluLCBzd2FwQ2hhaW4pOwog
ICAgIEFTU0VSVF9BUkcoY29udGV4dCwgY29udGV4dCk7CiAKLSAgICBNdXRleExvY2tlciBsb2Nr
KG1fbXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKIAogICAgIENH
UmVjdCB1bnVzZWREaXJ0eVJlY3Q7CiAgICAgUmVuZGVyUmVzdWx0IHJlc3VsdCA9IHJlbmRlcklu
dGVybmFsKGJvdW5kcywgc3dhcENoYWluLCBwb3N0UHJvY2Vzc2luZ0NvbnRleHQsIGNvbnRleHQs
IHVudXNlZERpcnR5UmVjdCwgbmV4dFJlbmRlclRpbWUpOwpAQCAtNDI4LDcgKzQyOCw3IEBAIENB
RDNEUmVuZGVyZXI6OlJlbmRlclJlc3VsdCBDQUQzRFJlbmRlcmVyOjpyZW5kZXJUb0ltYWdlKGNv
bnN0IENHUmVjdCYgYm91bmRzLCBJCiAgICAgQVNTRVJUX0FSRyhzd2FwQ2hhaW4sIHN3YXBDaGFp
bik7CiAgICAgQVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKIAotICAgIE11dGV4TG9ja2Vy
IGxvY2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogCiAg
ICAgQ0dSZWN0IGRpcnR5UmVjdDsKICAgICBSZW5kZXJSZXN1bHQgcmVzdWx0ID0gcmVuZGVySW50
ZXJuYWwoYm91bmRzLCBzd2FwQ2hhaW4sIHBvc3RQcm9jZXNzaW5nQ29udGV4dCwgY29udGV4dCwg
ZGlydHlSZWN0LCBuZXh0UmVuZGVyVGltZSk7CkBAIC00NzEsNyArNDcxLDcgQEAgQ0FEM0RSZW5k
ZXJlcjo6UmVuZGVyUmVzdWx0IENBRDNEUmVuZGVyZXI6OnJlbmRlclRvSW1hZ2UoY29uc3QgQ0dS
ZWN0JiBib3VuZHMsIEkKIAogdm9pZCBDQUQzRFJlbmRlcmVyOjpzZXREZXZpY2VJc0xvc3QoYm9v
bCBsb3N0KQogewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fbXV0ZXgudHJ5TG9jaygpLCAi
bV9tdXRleCBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFtX2xvY2sudHJ5TG9jaygpLCAibV9sb2NrIG11c3QgYmUgaGVs
ZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOwogCiAgICAgaWYgKG1fZGV2aWNlSXNMb3N0
ID09IGxvc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5NCw3ICs0OTQsNyBAQCBDQUQzRFJlbmRl
cmVyOjpSZW5kZXJSZXN1bHQgQ0FEM0RSZW5kZXJlcjo6cmVuZGVySW50ZXJuYWwoY29uc3QgQ0dS
ZWN0JiBib3VuZHMsCiAgICAgQVNTRVJUX0FSRyhzd2FwQ2hhaW4sIHN3YXBDaGFpbik7CiAgICAg
QVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IW1fbXV0ZXgudHJ5TG9jaygpLCAibV9tdXRleCBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRo
aXMgZnVuY3Rpb24iKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2xvY2sudHJ5TG9jaygp
LCAibV9sb2NrIG11c3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOwogICAg
IEFTU0VSVChtX2QzZERldmljZSk7CiAgICAgQVNTRVJUKG1fcmVuZGVyT0dMQ29udGV4dCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ0FEM0RSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgKaW5kZXggN2MwNDdhZTlhY2JiNGQxN2My
OGVhNjZkZTM5MmIzN2Q0OTE3YmUxNy4uNjdkNDgzNTNiMDNkNzJlYThhOWMyOGFiODcwZDc1ZGEx
MWQ4MDhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgPGQzZDkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIHN0cnVj
dCBJRGlyZWN0M0REZXZpY2U5OwpAQCAtOTksNyArMTAwLDcgQEAgY2xhc3MgQ0FEM0RSZW5kZXJl
ciB7CiAKICAgICB2b2lkIGNyZWF0ZVNoYWRlcklmTmVlZGVkKCk7CiAKLSAgICBNdXRleCBtX211
dGV4OworICAgIExvY2sgbV9sb2NrOwogICAgIENDb21QdHI8SURpcmVjdDNERGV2aWNlOT4gbV9k
M2REZXZpY2U7CiAgICAgQ0FSZW5kZXJPR0xDb250ZXh0KiBtX3JlbmRlck9HTENvbnRleHQgeyBu
dWxscHRyIH07CiAgICAgQ0NvbVB0cjxJRGlyZWN0M0RQaXhlbFNoYWRlcjk+IG1fcGl4ZWxTaGFk
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKaW5kZXggYTcwZDg3NGE4MWVhMGY4N2NmOTNmNGRi
NmI4NWI0YjUyMTI2ZjMxYi4uNjA5YzNkZTYxMmI5NTUzNmM1NDI2ZGVkMzQ1MGE5ZGFhMzZiMDk1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFk
ZGl0aW9ucy9DQVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
PFF1YXJ0ekNvcmUvQ0FSZW5kZXJPR0wuaD4KICNpbmNsdWRlIDxkM2Q5Lmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi93aW4vR0RJT2JqZWN0Lmg+CkBAIC00Myw0MCArNDQsNDQgQEAgbmFtZXNwYWNlIFdLUUNB
IHsKIAogY2xhc3MgQ0FWaWV3OjpIYW5kbGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
SGFuZGxlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxIYW5kbGU+IGNyZWF0ZShDQVZp
ZXcqIHZpZXcpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBIYW5kbGUodmlldykpOyB9CisgICAgc3Rh
dGljIFJlZjxIYW5kbGU+IGNyZWF0ZShDQVZpZXcqIHZpZXcpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSGFuZGxlKHZpZXcpKTsgfQogICAgIH5IYW5kbGUoKSB7IEFTU0VSVCghbV92aWV3KTsgfQog
Ci0gICAgTXV0ZXgmIG11dGV4KCkgeyByZXR1cm4gbV9tdXRleDsgfQotICAgIENBVmlldyogdmll
dygpIGNvbnN0IHsgQVNTRVJUX1dJVEhfTUVTU0FHRSghY29uc3RfY2FzdDxNdXRleCY+KG1fbXV0
ZXgpLnRyeUxvY2soKSwgIkNBVmlldzo6SGFuZGxlJ3MgbXV0ZXggbXVzdCBiZSBoZWxkIHdoZW4g
Y2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7IHJldHVybiBtX3ZpZXc7IH0KLSAgICB2b2lkIGNsZWFy
KCkgeyBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX211dGV4LnRyeUxvY2soKSwgIkNBVmlldzo6SGFu
ZGxlJ3MgbXV0ZXggbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7IG1f
dmlldyA9IDA7IH0KKyAgICBMb2NrJiBsb2NrKCkgeyByZXR1cm4gbV9sb2NrOyB9CisgICAgQ0FW
aWV3KiB2aWV3KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWNv
bnN0X2Nhc3Q8TG9jayY+KG1fbG9jaykudHJ5TG9jaygpLCAiQ0FWaWV3OjpIYW5kbGUncyBsb2Nr
IG11c3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOworICAgICAgICByZXR1
cm4gbV92aWV3OworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghbV9sb2NrLnRyeUxvY2soKSwgIkNBVmlldzo6SGFuZGxlJ3MgbG9j
ayBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsKKyAgICAgICAgbV92
aWV3ID0gbnVsbHB0cjsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgSGFuZGxlKENBVmlldyogdmll
dykKICAgICA6IG1fdmlldyh2aWV3KSB7IH0KIAotICAgIE11dGV4IG1fbXV0ZXg7CisgICAgTG9j
ayBtX2xvY2s7CiAgICAgQ0FWaWV3KiBtX3ZpZXc7CiB9OwogCi1zdGF0aWMgTXV0ZXgmIGdsb2Jh
bFN0YXRlTXV0ZXgoKQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRl
eCwgbXV0ZXgsICgpKTsKLSAgICByZXR1cm4gbXV0ZXg7Ci19Ci0KK3N0YXRpYyBTdGF0aWNMb2Nr
IGdsb2JhbFN0YXRlTG9jazsKIHN0YXRpYyBIV05EIG1lc3NhZ2VXaW5kb3c7CiBzdGF0aWMgY29u
c3Qgd2NoYXJfdCBtZXNzYWdlV2luZG93Q2xhc3NOYW1lW10gPSBMIkNBVmlld01lc3NhZ2VXaW5k
b3ciOwogCi1zdGF0aWMgSGFzaFNldDxSZWZQdHI8Q0FWaWV3OjpIYW5kbGU+ID4mIHZpZXdzKCkK
K3N0YXRpYyBIYXNoU2V0PFJlZjxDQVZpZXc6OkhhbmRsZT4+JiB2aWV3cygpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8UmVmUHRyPENBVmlldzo6SGFuZGxl
PiA+LCB2aWV3cywgKCkpOwotICAgIHJldHVybiB2aWV3czsKKyAgICBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PFJlZjxDQVZpZXc6OkhhbmRsZT4+PiB2aWV3czsKKyAgICByZXR1cm4gdmlld3MuZ2V0
KCk7CiB9CiAKLXN0YXRpYyBIYXNoU2V0PFJlZlB0cjxDQVZpZXc6OkhhbmRsZT4gPiYgdmlld3NO
ZWVkaW5nVXBkYXRlKCkKK3N0YXRpYyBIYXNoU2V0PFJlZjxDQVZpZXc6OkhhbmRsZT4+JiB2aWV3
c05lZWRpbmdVcGRhdGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChI
YXNoU2V0PFJlZlB0cjxDQVZpZXc6OkhhbmRsZT4gPiwgdmlld3MsICgpKTsKLSAgICByZXR1cm4g
dmlld3M7CisgICAgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxSZWY8Q0FWaWV3OjpIYW5kbGU+Pj4g
dmlld3M7CisgICAgcmV0dXJuIHZpZXdzLmdldCgpOwogfQogCiBzdGF0aWMgdm9pZCByZWdpc3Rl
ck1lc3NhZ2VXaW5kb3dDbGFzcygpCkBAIC0xMDEsNDQgKzEwNiw0MSBAQCBzdGF0aWMgSFdORCBj
cmVhdGVNZXNzYWdlV2luZG93KCkKIAogdm9pZCBDQVZpZXc6OnJlbGVhc2VBbGxEM0RSZXNvdXJj
ZXMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0ZXgs
ICgpKTsKKyAgICBzdGF0aWMgU3RhdGljTG9jayBsb2NrOwogCi0gICAgaWYgKCFtdXRleC50cnlM
b2NrKCkpIHsKKyAgICBpZiAoIWxvY2sudHJ5TG9jaygpKSB7CiAgICAgICAgIC8vIEFub3RoZXIg
dGhyZWFkIGlzIGN1cnJlbnRseSByZWxlYXNpbmcgM0QgcmVzb3VyY2VzLgogICAgICAgICAvLyBT
aW5jZSBpdCB3aWxsIGFsc28gcmVsZWFzZSByZXNvdXJjZXMgZm9yIHRoZSB2aWV3IGNhbGxpbmcg
dGhpcyBtZXRob2QsIHdlIGNhbiBqdXN0IHJldHVybiBlYXJseS4KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFZlY3RvcjxSZWZQdHI8SGFuZGxlPj4gdmlld3NUb1JlbGVhc2U7Ci0KKyAg
ICBWZWN0b3I8UmVmPEhhbmRsZT4+IHZpZXdzVG9SZWxlYXNlOwogICAgIHsKLSAgICAgICAgTXV0
ZXhMb2NrZXIgbG9jayhnbG9iYWxTdGF0ZU11dGV4KCkpOwotICAgICAgICB2aWV3c1RvUmVsZWFz
ZSA9IGNvcHlUb1ZlY3Rvcih2aWV3cygpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhnbG9iYWxTdGF0ZUxvY2spOworICAgICAgICB2aWV3c1RvUmVsZWFzZSA9IFdURjo6bWFwKHZp
ZXdzKCksIFtdIChhdXRvJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZS5jb3B5UmVmKCk7IH0pOwog
ICAgIH0KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmlld3NUb1JlbGVhc2Uuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgY29uc3QgUmVmUHRyPEhhbmRsZT4mIGhhbmRsZSA9IHZpZXdzVG9S
ZWxlYXNlW2ldOwotICAgICAgICBNdXRleExvY2tlciBsb2NrKGhhbmRsZS0+bXV0ZXgoKSk7Cisg
ICAgZm9yIChhdXRvJiBoYW5kbGUgOiB2aWV3c1RvUmVsZWFzZSkgeworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGhhbmRsZS0+bG9jaygpKTsKICAgICAgICAgQ0FWaWV3KiB2aWV3ID0g
aGFuZGxlLT52aWV3KCk7CiAgICAgICAgIGlmICghdmlldykKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBNdXRleExvY2tlciB2aWV3TG9jayh2aWV3LT5tX211dGV4KTsKKyAgICAgICAg
YXV0byB2aWV3TG9ja2VyID0gaG9sZExvY2sodmlldy0+bV9sb2NrKTsKICAgICAgICAgdmlldy0+
bV9zd2FwQ2hhaW4gPSBudWxscHRyOwogICAgICAgICB2aWV3LT5tX2QzZFBvc3RQcm9jZXNzaW5n
Q29udGV4dCA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgbXV0ZXgudW5sb2NrKCk7CisgICAgbG9j
ay51bmxvY2soKTsKIH0KIAogaW5saW5lIENBVmlldzo6Q0FWaWV3KERyYXdpbmdEZXN0aW5hdGlv
biBkZXN0aW5hdGlvbikKICAgICA6IG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCiAgICAgLCBt
X2hhbmRsZShIYW5kbGU6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fY29udGV4dChhZG9wdENGKENB
Q0ZDb250ZXh0Q3JlYXRlKDApKSkKLSAgICAsIG1fYm91bmRzKENHUmVjdFplcm8pCiB7CiAgICAg
ewotICAgICAgICBNdXRleExvY2tlciBsb2NrKGdsb2JhbFN0YXRlTXV0ZXgoKSk7Ci0gICAgICAg
IHZpZXdzKCkuYWRkKG1faGFuZGxlKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhn
bG9iYWxTdGF0ZUxvY2spOworICAgICAgICB2aWV3cygpLmFkZChtX2hhbmRsZS5jb3B5UmVmKCkp
OwogICAgIH0KIAogICAgIENBUmVuZGVyTm90aWZpY2F0aW9uQWRkT2JzZXJ2ZXIoa0NBUmVuZGVy
Q29udGV4dERpZENoYW5nZSwgQ0FDRkNvbnRleHRHZXRSZW5kZXJDb250ZXh0KG1fY29udGV4dC5n
ZXQoKSksIGNvbnRleHREaWRDaGFuZ2VDYWxsYmFjaywgdGhpcyk7CkBAIC0xNTEsMTcgKzE1Mywx
NyBAQCBDQVZpZXc6On5DQVZpZXcoKQogICAgIG1fbGF5ZXIgPSBudWxscHRyOwogCiAgICAgewot
ICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgICAgIG1fY29udGV4dCA9IG51bGxwdHI7CiAgICAgfQog
Ci0gICAgLy8gQXZvaWQgc3RvcHBpbmcgdGhlIGRpc3BsYXkgbGluayB3aGlsZSB3ZSBob2xkIGVp
dGhlciBtX211dGV4IG9yIG1fZGlzcGxheUxpbmtNdXRleCwgYXMgZG9pbmcKKyAgICAvLyBBdm9p
ZCBzdG9wcGluZyB0aGUgZGlzcGxheSBsaW5rIHdoaWxlIHdlIGhvbGQgZWl0aGVyIG1fbG9jayBv
ciBtX2Rpc3BsYXlMaW5rTG9jaywgYXMgZG9pbmcKICAgICAvLyBzbyB3aWxsIHdhaXQgZm9yIGRp
c3BsYXlMaW5rUmVhY2hlZENBTWVkaWFUaW1lIHRvIHJldHVybiBhbmQgdGhhdCBmdW5jdGlvbiBj
YW4gdGFrZSB0aG9zZQogICAgIC8vIHNhbWUgbXV0ZXhlcy4KICAgICBSZWZQdHI8Q1ZEaXNwbGF5
TGluaz4gbGlua1RvU3RvcDsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX2Rp
c3BsYXlMaW5rTXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZGlzcGxh
eUxpbmtMb2NrKTsKICAgICAgICAgbGlua1RvU3RvcCA9IFdURk1vdmUobV9kaXNwbGF5TGluayk7
CiAgICAgfQogCkBAIC0xNzEsMTMgKzE3MywxMyBAQCBDQVZpZXc6On5DQVZpZXcoKQogICAgIHVw
ZGF0ZShudWxscHRyLCBDR1JlY3RaZXJvKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9jayhtX2hhbmRsZS0+bXV0ZXgoKSk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9oYW5kbGUtPmxvY2soKSk7CiAgICAgICAgIG1faGFuZGxlLT5jbGVhcigpOwogICAgIH0KIAot
ICAgIE11dGV4TG9ja2VyIGxvY2soZ2xvYmFsU3RhdGVNdXRleCgpKTsKKyAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGdsb2JhbFN0YXRlTG9jayk7CiAKLSAgICB2aWV3cygpLnJlbW92ZShtX2hh
bmRsZSk7CisgICAgdmlld3MoKS5yZW1vdmUobV9oYW5kbGUuY29weVJlZigpKTsKICAgICBpZiAo
IXZpZXdzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTIwNSwxNCArMjA3LDE0
IEBAIHZvaWQgQ0FWaWV3OjpzZXRMYXllcihDQUNGTGF5ZXJSZWYgbGF5ZXIpCiAKICAgICBDQUNG
TGF5ZXJTZXRGcmFtZShtX2xheWVyLmdldCgpLCBtX2JvdW5kcyk7CiAKLSAgICBNdXRleExvY2tl
ciBsb2NrKG1fbXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAg
ICBDQUNGQ29udGV4dFNldExheWVyKG1fY29udGV4dC5nZXQoKSwgbV9sYXllci5nZXQoKSk7CiB9
CiAKIHZvaWQgQ0FWaWV3Ojp1cGRhdGUoQ1dpbmRvdyB3aW5kb3csIGNvbnN0IENHUmVjdCYgYm91
bmRzKQogewogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhnbG9iYWxTdGF0ZU11dGV4
KCkpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGdsb2JhbFN0YXRlTG9jayk7CiAK
ICAgICAgICAgLy8gRW5zdXJlIG91ciBtZXNzYWdlIHdpbmRvdyBpcyBjcmVhdGVkIG9uIHRoZSB0
aHJlYWQgdGhhdCBjYWxsZWQgQ0FWaWV3Ojp1cGRhdGUuCiAgICAgICAgIGlmICghbWVzc2FnZVdp
bmRvdykKQEAgLTIyMywxMyArMjI1LDEzIEBAIHZvaWQgQ0FWaWV3Ojp1cGRhdGUoQ1dpbmRvdyB3
aW5kb3csIGNvbnN0IENHUmVjdCYgYm91bmRzKQogICAgICAgICBBU1NFUlQoOjpHZXRDdXJyZW50
VGhyZWFkSWQoKSA9PSBDV2luZG93KG1lc3NhZ2VXaW5kb3cpLkdldFdpbmRvd1RocmVhZElEKCkp
OwogICAgICAgICBBU1NFUlQoIXdpbmRvdyB8fCA6OkdldEN1cnJlbnRUaHJlYWRJZCgpID09IHdp
bmRvdy5HZXRXaW5kb3dUaHJlYWRJRCgpKTsKIAotICAgICAgICB2aWV3c05lZWRpbmdVcGRhdGUo
KS5yZW1vdmUobV9oYW5kbGUpOworICAgICAgICB2aWV3c05lZWRpbmdVcGRhdGUoKS5yZW1vdmUo
bV9oYW5kbGUuY29weVJlZigpKTsKICAgICB9CiAKICAgICBib29sIGJvdW5kc0NoYW5nZWQ7CiAK
ICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKIAogICAgICAgICBib3VuZHNDaGFuZ2VkID0gIUNH
UmVjdEVxdWFsVG9SZWN0KG1fYm91bmRzLCBib3VuZHMpOwogCkBAIC0yOTIsMTMgKzI5NCwxMyBA
QCB2b2lkIENBVmlldzo6aW52YWxpZGF0ZVJlY3RzKGNvbnN0IENHUmVjdCogcmVjdHMsIHNpemVf
dCBjb3VudCkKIAogdm9pZCBDQVZpZXc6OmRyYXdUb1dpbmRvdygpCiB7Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9jayhtX211dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAg
ICAgZHJhd1RvV2luZG93SW50ZXJuYWwoKTsKIH0KIAogdm9pZCBDQVZpZXc6OmRyYXdUb1dpbmRv
d0ludGVybmFsKCkKIHsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX211dGV4LnRyeUxvY2so
KSwgIm1fbXV0ZXggbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9sb2NrLnRyeUxvY2soKSwgIm1fbG9jayBtdXN0IGJl
IGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsKICAgICBDRlRpbWVJbnRlcnZhbCBu
ZXh0RHJhd1RpbWU7CiAgICAgYm9vbCB1bnVzZWRXaWxsVXBkYXRlU29vbjsKICAgICBpZiAod2ls
bERyYXcodW51c2VkV2lsbFVwZGF0ZVNvb24pKQpAQCAtMzE1LDcgKzMxNyw3IEBAIFJlZlB0cjxJ
bWFnZT4gQ0FWaWV3OjpkcmF3VG9JbWFnZShDR1BvaW50JiBpbWFnZU9yaWdpbiwgQ0ZUaW1lSW50
ZXJ2YWwmIG5leHREcmF3CiAgICAgaW1hZ2VPcmlnaW4gPSBDR1BvaW50WmVybzsKICAgICBuZXh0
RHJhd1RpbWUgPSBudW1lcmljX2xpbWl0czxDRlRpbWVJbnRlcnZhbD46OmluZmluaXR5KCk7CiAK
LSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9sb2NrKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAgICAgYm9vbCB3aWxsVXBk
YXRlU29vbjsKQEAgLTMzNCw3ICszMzYsNyBAQCBSZWZQdHI8SW1hZ2U+IENBVmlldzo6ZHJhd1Rv
SW1hZ2UoQ0dQb2ludCYgaW1hZ2VPcmlnaW4sIENGVGltZUludGVydmFsJiBuZXh0RHJhdwogCiBi
b29sIENBVmlldzo6d2lsbERyYXcoYm9vbCYgd2lsbFVwZGF0ZVNvb24pCiB7Ci0gICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghbV9tdXRleC50cnlMb2NrKCksICJtX211dGV4IG11c3QgYmUgaGVsZCB3
aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1f
bG9jay50cnlMb2NrKCksICJtX2xvY2sgbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1
bmN0aW9uIik7CiAKICAgICB3aWxsVXBkYXRlU29vbiA9IGZhbHNlOwogCkBAIC00MzEsNyArNDMz
LDcgQEAgdm9pZCBDQVZpZXc6OmRyYXdJbnRvREMoSERDIGRjKQogICAgIH0KIAogICAgIHsKLSAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2xvY2spOwogCiAgICAgICAgIENBUmVuZGVyQ29udGV4dCogcmVuZGVyQ29udGV4
dCA9IHN0YXRpY19jYXN0PENBUmVuZGVyQ29udGV4dCo+KENBQ0ZDb250ZXh0R2V0UmVuZGVyQ29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKICAgICAgICAgQ0FSZW5kZXJDb250ZXh0TG9jayhyZW5k
ZXJDb250ZXh0KTsKQEAgLTQ1NiwxMyArNDU4LDEzIEBAIHZvaWQgQ0FWaWV3OjpkcmF3SW50b0RD
KEhEQyBkYykKIAogdm9pZCBDQVZpZXc6OnNldFNob3VsZEludmVydENvbG9ycyhib29sIHNob3Vs
ZEludmVydENvbG9ycykKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKICAgICBtX3Nob3VsZEludmVydENvbG9ycyA9
IHNob3VsZEludmVydENvbG9yczsKIH0KIAogdm9pZCBDQVZpZXc6OnNjaGVkdWxlTmV4dERyYXco
Q0ZUaW1lSW50ZXJ2YWwgbWVkaWFUaW1lKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9kaXNw
bGF5TGlua011dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZGlzcGxheUxpbmtM
b2NrKTsKIAogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CkBAIC00OTEsNyAr
NDkzLDcgQEAgdm9pZCBDQVZpZXc6OmRpc3BsYXlMaW5rUmVhY2hlZENBTWVkaWFUaW1lKENWRGlz
cGxheUxpbmsqIGRpc3BsYXlMaW5rLCBDRlRpbWVJbnQKICAgICBBU1NFUlQobV9kZXN0aW5hdGlv
biA9PSBEcmF3aW5nRGVzdGluYXRpb25XaW5kb3cpOwogCiAgICAgewotICAgICAgICBNdXRleExv
Y2tlciBsb2NrKG1fZGlzcGxheUxpbmtNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9kaXNwbGF5TGlua0xvY2spOwogICAgICAgICBpZiAoIW1fZGlzcGxheUxpbmspCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoZGlzcGxheUxpbmssIGRp
c3BsYXlMaW5rID09IG1fZGlzcGxheUxpbmspOwpAQCAtNTAwLDcgKzUwMiw3IEBAIHZvaWQgQ0FW
aWV3OjpkaXNwbGF5TGlua1JlYWNoZWRDQU1lZGlhVGltZShDVkRpc3BsYXlMaW5rKiBkaXNwbGF5
TGluaywgQ0ZUaW1lSW50CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTXV0ZXhM
b2NrZXIgbG9jayhtX211dGV4KTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7
CiAgICAgZHJhd1RvV2luZG93SW50ZXJuYWwoKTsKIH0KIApAQCAtNTE3LDcgKzUxOSw3IEBAIHZv
aWQgQ0FWaWV3Ojpjb250ZXh0RGlkQ2hhbmdlQ2FsbGJhY2sodm9pZCogb2JqZWN0LCB2b2lkKiBp
bmZvLCB2b2lkKikKIHZvaWQgQ0FWaWV3Ojpjb250ZXh0RGlkQ2hhbmdlKCkKIHsKICAgICB7Ci0g
ICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9sb2NrKTsKIAogICAgICAgICAvLyBPdXIgbGF5ZXIncyByZW5kZXJlZCBhcHBl
YXJhbmNlIG9uY2UgYWdhaW4gbWF0Y2hlcyBvdXIgYm91bmRzLCBzbyBpdCdzIHNhZmUgdG8gZHJh
dy4KICAgICAgICAgbV9kcmF3aW5nUHJvaGliaXRlZCA9IGZhbHNlOwpAQCAtNTM0LDggKzUzNiw4
IEBAIHZvaWQgQ0FWaWV3Ojpjb250ZXh0RGlkQ2hhbmdlKCkKIHZvaWQgQ0FWaWV3Ojp1cGRhdGVT
b29uKCkKIHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2soZ2xvYmFsU3RhdGVNdXRl
eCgpKTsKLSAgICAgICAgdmlld3NOZWVkaW5nVXBkYXRlKCkuYWRkKG1faGFuZGxlKTsKKyAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9iYWxTdGF0ZUxvY2spOworICAgICAgICB2aWV3
c05lZWRpbmdVcGRhdGUoKS5hZGQobV9oYW5kbGUuY29weVJlZigpKTsKICAgICB9CiAgICAgLy8g
SXQgZG9lc24ndCBtYXR0ZXIgd2hhdCB0aW1lciBJRCB3ZSBwYXNzIGhlcmUsIGFzIGxvbmcgYXMg
aXQncyBub256ZXJvLgogICAgIEFTU0VSVChtZXNzYWdlV2luZG93KTsKQEAgLTU0NywzMCArNTQ5
LDI3IEBAIHZvaWQgQ0FWaWV3Ojp1cGRhdGVWaWV3c05vdyhIV05EIHdpbmRvdywgVUlOVCwgVUlO
VF9QVFIgdGltZXJJRCwgRFdPUkQpCiAgICAgQVNTRVJUX0FSRyh3aW5kb3csIHdpbmRvdyA9PSBt
ZXNzYWdlV2luZG93KTsKICAgICA6OktpbGxUaW1lcih3aW5kb3csIHRpbWVySUQpOwogCi0gICAg
VmVjdG9yPFJlZlB0cjxIYW5kbGU+PiB2aWV3c1RvVXBkYXRlOwotCisgICAgSGFzaFNldDxSZWY8
Q0FWaWV3OjpIYW5kbGU+PiB2aWV3c1RvVXBkYXRlOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9jayhnbG9iYWxTdGF0ZU11dGV4KCkpOwotICAgICAgICB2aWV3c1RvVXBkYXRlID0gY29w
eVRvVmVjdG9yKHZpZXdzTmVlZGluZ1VwZGF0ZSgpKTsKLSAgICAgICAgdmlld3NOZWVkaW5nVXBk
YXRlKCkuY2xlYXIoKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9iYWxTdGF0
ZUxvY2spOworICAgICAgICB2aWV3c05lZWRpbmdVcGRhdGUoKS5zd2FwKHZpZXdzVG9VcGRhdGUp
OwogICAgIH0KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmlld3NUb1VwZGF0ZS5zaXpl
KCk7ICsraSkgewotICAgICAgICBjb25zdCBSZWZQdHI8SGFuZGxlPiYgaGFuZGxlID0gdmlld3NU
b1VwZGF0ZVtpXTsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhoYW5kbGUtPm11dGV4KCkpOwor
ICAgIGZvciAoYXV0byYgaGFuZGxlIDogdmlld3NUb1VwZGF0ZSkgeworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGhhbmRsZS0+bG9jaygpKTsKICAgICAgICAgQ0FWaWV3KiB2aWV3ID0g
aGFuZGxlLT52aWV3KCk7CiAgICAgICAgIGlmICghdmlldykKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBNdXRleExvY2tlciB2aWV3TG9jayh2aWV3LT5tX211dGV4KTsKKyAgICAgICAg
YXV0byB2aWV3TG9ja2VyID0gaG9sZExvY2sodmlldy0+bV9sb2NrKTsKICAgICAgICAgdmlldy0+
dXBkYXRlKHZpZXctPm1fd2luZG93LCB2aWV3LT5tX2JvdW5kcyk7CiAgICAgfQogfQogCiBJRGly
ZWN0M0REZXZpY2U5KiBDQVZpZXc6OmQzZERldmljZTkoKQogewotICAgIC8vIEhvbGQgdGhlIG11
dGV4IHdoaWxlIHdlIHJldHVybiB0aGUgc2hhcmVkIGQzZCBkZXZpY2UuIFRoZSBjYWxsZXIgaXMg
cmVzcG9uc2libGUgZm9yIHJldGFpbmluZworICAgIC8vIEhvbGQgdGhlIGxvY2sgd2hpbGUgd2Ug
cmV0dXJuIHRoZSBzaGFyZWQgZDNkIGRldmljZS4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBm
b3IgcmV0YWluaW5nCiAgICAgLy8gdGhlIGRldmljZSBiZWZvcmUgcmV0dXJuaW5nIHRvIGVuc3Vy
ZSB0aGF0IGl0IGlzIG5vdCByZWxlYXNlZC4KLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgp
OworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKIAogICAgIHJldHVybiBDQUQz
RFJlbmRlcmVyOjpzaGFyZWQoKS5kM2REZXZpY2U5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaApp
bmRleCBmMmQyZWViNTk2ZGNkZDBmNTVjOTgxNTEyZTI1YTFhZTQyOTMxOGNkLi40NWI2NGVjMDE1
MmU1MWQ0MjRmNDJlMzM5YzVlMDZmYjU0NDgwNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKQEAg
LTEwMywyMyArMTAzLDIzIEBAIGNsYXNzIENBVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPENBVmll
dz4sIHByaXZhdGUgQ1ZEaXNwbGF5TGlua0NsaWVudCB7CiAgICAgRHJhd2luZ0Rlc3RpbmF0aW9u
IG1fZGVzdGluYXRpb247CiAKICAgICAvLyBPbmx5IHNldCBpbiB0aGUgY29uc3RydWN0b3IsIHRo
ZW4gcHJvdGVjdGVkIGJ5IGl0cyBvd24gTXV0ZXguCi0gICAgUmVmUHRyPEhhbmRsZT4gbV9oYW5k
bGU7CisgICAgUmVmPEhhbmRsZT4gbV9oYW5kbGU7CiAKICAgICAvLyBPbmx5IGFjY2Vzc2VkIGlu
IEFQSSBjYWxscywgdGhlIHN5bmNocm9uaXphdGlvbiBvZiB3aGljaCBpcyB0aGUgcmVzcG9uc2li
aWxpdHkgb2YgdGhlIGNhbGxlci4KICAgICBSZXRhaW5QdHI8Q0FDRkxheWVyUmVmPiBtX2xheWVy
OwogICAgIENvbnRleHREaWRDaGFuZ2VDYWxsYmFjayBtX2NvbnRleHREaWRDaGFuZ2VDYWxsYmFj
azsKIAotICAgIE11dGV4IG1fbXV0ZXg7Ci0gICAgLy8gQWNjZXNzZWQgYnkgdGhlIGRpc3BsYXkg
bGluayB0aHJlYWQsIHByb3RlY3RlZCBieSBtX211dGV4LiAobV9jb250ZXh0IGlzbid0IGRpcmVj
dGx5CisgICAgTG9jayBtX2xvY2s7CisgICAgLy8gQWNjZXNzZWQgYnkgdGhlIGRpc3BsYXkgbGlu
ayB0aHJlYWQsIHByb3RlY3RlZCBieSBtX2xvY2suIChtX2NvbnRleHQgaXNuJ3QgZGlyZWN0bHkK
ICAgICAvLyBhY2Nlc3NlZCBmcm9tIHRoZSBkaXNwbGF5IGxpbmsgdGhyZWFkLCBidXQgaXRzIENB
UmVuZGVyQ29udGV4dCBpcy4pCiAgICAgUmV0YWluUHRyPENBQ0ZDb250ZXh0UmVmPiBtX2NvbnRl
eHQ7CiAgICAgQ1dpbmRvdyBtX3dpbmRvdzsKLSAgICBDR1JlY3QgbV9ib3VuZHM7CisgICAgQ0dS
ZWN0IG1fYm91bmRzIHsgQ0dSZWN0WmVybyB9OwogICAgIENDb21QdHI8SURpcmVjdDNEU3dhcENo
YWluOT4gbV9zd2FwQ2hhaW47CiAgICAgc3RkOjp1bmlxdWVfcHRyPEQzRFBvc3RQcm9jZXNzaW5n
Q29udGV4dD4gbV9kM2RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ7CiAKLSAgICBNdXRleCBtX2Rpc3Bs
YXlMaW5rTXV0ZXg7Ci0gICAgLy8gQWNjZXNzZWQgYnkgdGhlIGRpc3BsYXkgbGluayB0aHJlYWQs
IHByb3RlY3RlZCBieSBtX2Rpc3BsYXlMaW5rTXV0ZXguCisgICAgTG9jayBtX2Rpc3BsYXlMaW5r
TG9jazsKKyAgICAvLyBBY2Nlc3NlZCBieSB0aGUgZGlzcGxheSBsaW5rIHRocmVhZCwgcHJvdGVj
dGVkIGJ5IG1fZGlzcGxheUxpbmtMb2NrLgogICAgIFJlZlB0cjxDVkRpc3BsYXlMaW5rPiBtX2Rp
c3BsYXlMaW5rOwogICAgIENGVGltZUludGVydmFsIG1fbmV4dERyYXdUaW1lIHsgMCB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328802</attachid>
            <date>2017-12-08 02:39:56 -0800</date>
            <delta_ts>2017-12-08 04:09:34 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-180572-20171208193955.patch</filename>
            <type>text/plain</type>
            <size>20349</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVjOWNiMDdjNzMxNmQ1OTJlNGFiNWM0
MDE3MzZkYWQ5ODBjMTA5ZDMuLjYwM2JmNTY5NjI1MDdhOTEzNTg2ZTliNjcyMzEwYzE4MjYzYTc5
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTItMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIFN0YXRpY0xvY2sgYW5kIExvY2sgaW5z
dGVhZCBvZiBNdXRleCBpbiBXaW5kb3dzIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTWFyayBMYW0uCisKKyAgICAgICAgUmVtb3ZlIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTCBzaW5jZSBpdCdzIG5vIGxvbmdlciB1c2VkLgorCisgICAgICAgICogd3RmL1N0ZExpYkV4
dHJhcy5oOgorCiAyMDE3LTEyLTA3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgogCiAgICAgICAgIFVzZSBXVEYgTG9ja2luZyBwcmltaXRpdmVzIGluIFdlYlRocmVhZCBh
bmQgZHJvcCBwdGhyZWFkX3h4eCB1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAw
ZjY1N2FmZWQyNjlhNTI4OGVjYjlkZDg0MDUyYzZkOWU3ZGVjZDY0Li5kYjI4ZWMxMDUzZGQ2MTQ4
NThkNDg4OWVhN2RkMWVhZDA1YmJlYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTEgQEAKKzIwMTctMTItMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgVXNlIFN0YXRpY0xvY2sgYW5kIExvY2sgaW5zdGVhZCBvZiBN
dXRleCBpbiBXaW5kb3dzIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBM
YW0uCisKKyAgICAgICAgVXNlIFN0YXRpY0xvY2sgYW5kIGRyb3AgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMLgorICAgICAgICBBbHNvIHdlIHVzZSBMb2NrIGluc3RlYWQgb2YgTXV0ZXgu
CisKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV0tRQ0E6OkNBRDNEUmVuZGVyZXI6OnN3YXBDaGFpbik6CisgICAgICAgIChX
S1FDQTo6Q0FEM0RSZW5kZXJlcjo6cmVuZGVyQW5kUHJlc2VudCk6CisgICAgICAgIChXS1FDQTo6
Q0FEM0RSZW5kZXJlcjo6cmVuZGVyVG9JbWFnZSk6CisgICAgICAgIChXS1FDQTo6Q0FEM0RSZW5k
ZXJlcjo6c2V0RGV2aWNlSXNMb3N0KToKKyAgICAgICAgKFdLUUNBOjpDQUQzRFJlbmRlcmVyOjpy
ZW5kZXJJbnRlcm5hbCk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQz
RFJlbmRlcmVyLmg6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcu
Y3BwOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6SGFuZGxlOjpjcmVhdGUpOgorICAgICAgICBS
ZXR1cm4gUmVmPEhhbmRsZT4gaW5zdGVhZCBvZiBSZWZQdHI8Pi4KKworICAgICAgICAoV0tRQ0E6
OkNBVmlldzo6SGFuZGxlOjpsb2NrKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OkhhbmRsZTo6
dmlldyBjb25zdCk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpIYW5kbGU6OmNsZWFyKToKKyAg
ICAgICAgKFdLUUNBOjp2aWV3cyk6CisgICAgICAgIChXS1FDQTo6dmlld3NOZWVkaW5nVXBkYXRl
KToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnJlbGVhc2VBbGxEM0RSZXNvdXJjZXMpOgorICAg
ICAgICAoV0tRQ0E6OkNBVmlldzo6Q0FWaWV3KToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6On5D
QVZpZXcpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6c2V0TGF5ZXIpOgorICAgICAgICAoV0tR
Q0E6OkNBVmlldzo6dXBkYXRlKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OmRyYXdUb1dpbmRv
dyk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpkcmF3VG9XaW5kb3dJbnRlcm5hbCk6CisgICAg
ICAgIChXS1FDQTo6Q0FWaWV3OjpkcmF3VG9JbWFnZSk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3
Ojp3aWxsRHJhdyk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpkcmF3SW50b0RDKToKKyAgICAg
ICAgKFdLUUNBOjpDQVZpZXc6OnNldFNob3VsZEludmVydENvbG9ycyk6CisgICAgICAgIChXS1FD
QTo6Q0FWaWV3OjpzY2hlZHVsZU5leHREcmF3KToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OmRp
c3BsYXlMaW5rUmVhY2hlZENBTWVkaWFUaW1lKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OmNv
bnRleHREaWRDaGFuZ2UpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6dXBkYXRlU29vbik6Cisg
ICAgICAgIChXS1FDQTo6Q0FWaWV3Ojp1cGRhdGVWaWV3c05vdyk6CisgICAgICAgIChXS1FDQTo6
Q0FWaWV3OjpkM2REZXZpY2U5KToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OkhhbmRsZTo6bXV0
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV0tRQ0E6Omdsb2JhbFN0YXRlTXV0ZXgpOiBEZWxldGVk
LgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL0NBVmlldy5oOgorCiAyMDE3LTEyLTA3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFVzZSBTdGF0aWNMb2NrIGluc3RlYWQgb2YgTmV2ZXJEZXN0
cm95ZWQ8TG9jaz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oIGIv
U291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKaW5kZXggN2ZhMWYxNDBiMjQyNjczODg3MTY3
NzdmNDlmNzU3ZGY0MjlhYWE3NC4uZDQzN2Y4Yzc5NmFhY2Y1NmViYWYwMmExMGFhN2FkOWMzZmY3
ZTQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKKysrIGIvU291
cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKQEAgLTM0LDE0ICszNCw2IEBACiAjaW5jbHVkZSA8
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CiAKLS8v
IFRoaXMgd2FzIHVzZWQgdG8gZGVjbGFyZSBhbmQgZGVmaW5lIGEgc3RhdGljIGxvY2FsIHZhcmlh
YmxlIChzdGF0aWMgVDspIHNvIHRoYXQKLS8vICBpdCB3YXMgbGVha2VkIHNvIHRoYXQgaXRzIGRl
c3RydWN0b3JzIHdlcmUgbm90IGNhbGxlZCBhdCBleGl0LgotLy8gTmV3bHkgd3JpdHRlbiBjb2Rl
IHNob3VsZCB1c2Ugc3RhdGljIE5ldmVyRGVzdHJveWVkPFQ+IGluc3RlYWQuCi0jaWZuZGVmIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTAotI2RlZmluZSBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwodHlwZSwgbmFtZSwgYXJndW1lbnRzKSBcCi0gICAgc3RhdGljIHR5cGUmIG5h
bWUgPSAqbmV3IHR5cGUgYXJndW1lbnRzCi0jZW5kaWYKLQogLy8gVXNlIHRoaXMgbWFjcm8gdG8g
ZGVjbGFyZSBhbmQgZGVmaW5lIGEgZGVidWctb25seSBnbG9iYWwgdmFyaWFibGUgdGhhdCBtYXkg
aGF2ZSBhCiAvLyBub24tdHJpdmlhbCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3Rvci4gV2hlbiBi
dWlsZGluZyB3aXRoIGNsYW5nLCB0aGlzIHdpbGwgc3VwcHJlc3MKIC8vIHdhcm5pbmdzIGFib3V0
IGdsb2JhbCBjb25zdHJ1Y3RvcnMgYW5kIGV4aXQtdGltZSBkZXN0cnVjdG9ycy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCmluZGV4IGY5MDUyYzNiZDUwZjJmNDUwN2E2YzE2
ZTc3MTI5OTlhN2M3YjY0ODIuLmYxODcyMjI5NzI1N2ZhMmUzNjJkMmYyNTViNmE1NjhkYWQ2MTBl
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVB
ZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcApAQCAtMTE5LDcgKzEx
OSw3IEBAIENBRDNEUmVuZGVyZXI6OkNBRDNEUmVuZGVyZXIoKQogCiBDQ29tUHRyPElEaXJlY3Qz
RFN3YXBDaGFpbjk+IENBRDNEUmVuZGVyZXI6OnN3YXBDaGFpbihDV2luZG93IHdpbmRvdywgY29u
c3QgQ0dTaXplJiBzaXplKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogCiAgICAgYm9vbCB1c2VEZWZhdWx0U3dh
cENoYWluID0gZmFsc2U7CiAKQEAgLTM4OCw3ICszODgsNyBAQCBDQUQzRFJlbmRlcmVyOjpSZW5k
ZXJSZXN1bHQgQ0FEM0RSZW5kZXJlcjo6cmVuZGVyQW5kUHJlc2VudChjb25zdCBDR1JlY3QmIGJv
dW5kcwogICAgIEFTU0VSVF9BUkcoc3dhcENoYWluLCBzd2FwQ2hhaW4pOwogICAgIEFTU0VSVF9B
UkcoY29udGV4dCwgY29udGV4dCk7CiAKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKIAogICAgIENHUmVjdCB1bnVzZWRE
aXJ0eVJlY3Q7CiAgICAgUmVuZGVyUmVzdWx0IHJlc3VsdCA9IHJlbmRlckludGVybmFsKGJvdW5k
cywgc3dhcENoYWluLCBwb3N0UHJvY2Vzc2luZ0NvbnRleHQsIGNvbnRleHQsIHVudXNlZERpcnR5
UmVjdCwgbmV4dFJlbmRlclRpbWUpOwpAQCAtNDI4LDcgKzQyOCw3IEBAIENBRDNEUmVuZGVyZXI6
OlJlbmRlclJlc3VsdCBDQUQzRFJlbmRlcmVyOjpyZW5kZXJUb0ltYWdlKGNvbnN0IENHUmVjdCYg
Ym91bmRzLCBJCiAgICAgQVNTRVJUX0FSRyhzd2FwQ2hhaW4sIHN3YXBDaGFpbik7CiAgICAgQVNT
RVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRl
eCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogCiAgICAgQ0dSZWN0IGRp
cnR5UmVjdDsKICAgICBSZW5kZXJSZXN1bHQgcmVzdWx0ID0gcmVuZGVySW50ZXJuYWwoYm91bmRz
LCBzd2FwQ2hhaW4sIHBvc3RQcm9jZXNzaW5nQ29udGV4dCwgY29udGV4dCwgZGlydHlSZWN0LCBu
ZXh0UmVuZGVyVGltZSk7CkBAIC00NzEsNyArNDcxLDcgQEAgQ0FEM0RSZW5kZXJlcjo6UmVuZGVy
UmVzdWx0IENBRDNEUmVuZGVyZXI6OnJlbmRlclRvSW1hZ2UoY29uc3QgQ0dSZWN0JiBib3VuZHMs
IEkKIAogdm9pZCBDQUQzRFJlbmRlcmVyOjpzZXREZXZpY2VJc0xvc3QoYm9vbCBsb3N0KQogewot
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fbXV0ZXgudHJ5TG9jaygpLCAibV9tdXRleCBtdXN0
IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsKKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFtX2xvY2sudHJ5TG9jaygpLCAibV9sb2NrIG11c3QgYmUgaGVsZCB3aGVuIGNhbGxp
bmcgdGhpcyBmdW5jdGlvbiIpOwogCiAgICAgaWYgKG1fZGV2aWNlSXNMb3N0ID09IGxvc3QpCiAg
ICAgICAgIHJldHVybjsKQEAgLTQ5NCw3ICs0OTQsNyBAQCBDQUQzRFJlbmRlcmVyOjpSZW5kZXJS
ZXN1bHQgQ0FEM0RSZW5kZXJlcjo6cmVuZGVySW50ZXJuYWwoY29uc3QgQ0dSZWN0JiBib3VuZHMs
CiAgICAgQVNTRVJUX0FSRyhzd2FwQ2hhaW4sIHN3YXBDaGFpbik7CiAgICAgQVNTRVJUX0FSRyhj
b250ZXh0LCBjb250ZXh0KTsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fbXV0ZXgudHJ5
TG9jaygpLCAibV9tdXRleCBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24i
KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2xvY2sudHJ5TG9jaygpLCAibV9sb2NrIG11
c3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOwogICAgIEFTU0VSVChtX2Qz
ZERldmljZSk7CiAgICAgQVNTRVJUKG1fcmVuZGVyT0dMQ29udGV4dCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RS
ZW5kZXJlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9DQUQzRFJlbmRlcmVyLmgKaW5kZXggN2MwNDdhZTlhY2JiNGQxN2MyOGVhNjZkZTM5MmIz
N2Q0OTE3YmUxNy4uNjdkNDgzNTNiMDNkNzJlYThhOWMyOGFiODcwZDc1ZGExMWQ4MDhlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9u
cy9DQUQzRFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lu
Y2x1ZGUgPGQzZDkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIHN0cnVjdCBJRGlyZWN0M0RE
ZXZpY2U5OwpAQCAtOTksNyArMTAwLDcgQEAgY2xhc3MgQ0FEM0RSZW5kZXJlciB7CiAKICAgICB2
b2lkIGNyZWF0ZVNoYWRlcklmTmVlZGVkKCk7CiAKLSAgICBNdXRleCBtX211dGV4OworICAgIExv
Y2sgbV9sb2NrOwogICAgIENDb21QdHI8SURpcmVjdDNERGV2aWNlOT4gbV9kM2REZXZpY2U7CiAg
ICAgQ0FSZW5kZXJPR0xDb250ZXh0KiBtX3JlbmRlck9HTENvbnRleHQgeyBudWxscHRyIH07CiAg
ICAgQ0NvbVB0cjxJRGlyZWN0M0RQaXhlbFNoYWRlcjk+IG1fcGl4ZWxTaGFkZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NB
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL0NBVmlldy5jcHAKaW5kZXggYTcwZDg3NGE4MWVhMGY4N2NmOTNmNGRiNmI4NWI0YjUyMTI2
ZjMxYi4uNWUzNTcwMjg1MjVhMWRjZmNjMDlkOWIyYzQyZjQ2ODY1ZTc2NjQwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ0FWaWV3LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFF1YXJ0ekNvcmUv
Q0FSZW5kZXJPR0wuaD4KICNpbmNsdWRlIDxkM2Q5Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJ
T2JqZWN0Lmg+CkBAIC00Myw0MCArNDQsNDQgQEAgbmFtZXNwYWNlIFdLUUNBIHsKIAogY2xhc3Mg
Q0FWaWV3OjpIYW5kbGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SGFuZGxlPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxIYW5kbGU+IGNyZWF0ZShDQVZpZXcqIHZpZXcpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIYW5kbGUodmlldykpOyB9CisgICAgc3RhdGljIFJlZjxIYW5k
bGU+IGNyZWF0ZShDQVZpZXcqIHZpZXcpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSGFuZGxlKHZp
ZXcpKTsgfQogICAgIH5IYW5kbGUoKSB7IEFTU0VSVCghbV92aWV3KTsgfQogCi0gICAgTXV0ZXgm
IG11dGV4KCkgeyByZXR1cm4gbV9tdXRleDsgfQotICAgIENBVmlldyogdmlldygpIGNvbnN0IHsg
QVNTRVJUX1dJVEhfTUVTU0FHRSghY29uc3RfY2FzdDxNdXRleCY+KG1fbXV0ZXgpLnRyeUxvY2so
KSwgIkNBVmlldzo6SGFuZGxlJ3MgbXV0ZXggbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlz
IGZ1bmN0aW9uIik7IHJldHVybiBtX3ZpZXc7IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFtX211dGV4LnRyeUxvY2soKSwgIkNBVmlldzo6SGFuZGxlJ3MgbXV0ZXgg
bXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7IG1fdmlldyA9IDA7IH0K
KyAgICBMb2NrJiBsb2NrKCkgeyByZXR1cm4gbV9sb2NrOyB9CisgICAgQ0FWaWV3KiB2aWV3KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWNvbnN0X2Nhc3Q8TG9j
ayY+KG1fbG9jaykudHJ5TG9jaygpLCAiQ0FWaWV3OjpIYW5kbGUncyBsb2NrIG11c3QgYmUgaGVs
ZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOworICAgICAgICByZXR1cm4gbV92aWV3Owor
ICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghbV9sb2NrLnRyeUxvY2soKSwgIkNBVmlldzo6SGFuZGxlJ3MgbG9jayBtdXN0IGJlIGhl
bGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsKKyAgICAgICAgbV92aWV3ID0gbnVsbHB0
cjsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgSGFuZGxlKENBVmlldyogdmlldykKICAgICA6IG1f
dmlldyh2aWV3KSB7IH0KIAotICAgIE11dGV4IG1fbXV0ZXg7CisgICAgTG9jayBtX2xvY2s7CiAg
ICAgQ0FWaWV3KiBtX3ZpZXc7CiB9OwogCi1zdGF0aWMgTXV0ZXgmIGdsb2JhbFN0YXRlTXV0ZXgo
KQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0ZXgsICgp
KTsKLSAgICByZXR1cm4gbXV0ZXg7Ci19Ci0KK3N0YXRpYyBTdGF0aWNMb2NrIGdsb2JhbFN0YXRl
TG9jazsKIHN0YXRpYyBIV05EIG1lc3NhZ2VXaW5kb3c7CiBzdGF0aWMgY29uc3Qgd2NoYXJfdCBt
ZXNzYWdlV2luZG93Q2xhc3NOYW1lW10gPSBMIkNBVmlld01lc3NhZ2VXaW5kb3ciOwogCi1zdGF0
aWMgSGFzaFNldDxSZWZQdHI8Q0FWaWV3OjpIYW5kbGU+ID4mIHZpZXdzKCkKK3N0YXRpYyBIYXNo
U2V0PFJlZjxDQVZpZXc6OkhhbmRsZT4+JiB2aWV3cygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8UmVmUHRyPENBVmlldzo6SGFuZGxlPiA+LCB2aWV3cywg
KCkpOwotICAgIHJldHVybiB2aWV3czsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxSZWY8Q0FWaWV3OjpIYW5kbGU+Pj4gdmlld3M7CisgICAgcmV0dXJuIHZpZXdzLmdldCgpOwog
fQogCi1zdGF0aWMgSGFzaFNldDxSZWZQdHI8Q0FWaWV3OjpIYW5kbGU+ID4mIHZpZXdzTmVlZGlu
Z1VwZGF0ZSgpCitzdGF0aWMgSGFzaFNldDxSZWY8Q0FWaWV3OjpIYW5kbGU+PiYgdmlld3NOZWVk
aW5nVXBkYXRlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNl
dDxSZWZQdHI8Q0FWaWV3OjpIYW5kbGU+ID4sIHZpZXdzLCAoKSk7Ci0gICAgcmV0dXJuIHZpZXdz
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFJlZjxDQVZpZXc6OkhhbmRsZT4+
PiB2aWV3czsKKyAgICByZXR1cm4gdmlld3MuZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyTWVzc2FnZVdpbmRvd0NsYXNzKCkKQEAgLTEwMSw0NCArMTA2LDQxIEBAIHN0YXRpYyBIV05E
IGNyZWF0ZU1lc3NhZ2VXaW5kb3coKQogCiB2b2lkIENBVmlldzo6cmVsZWFzZUFsbEQzRFJlc291
cmNlcygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBtdXRl
eCwgKCkpOworICAgIHN0YXRpYyBTdGF0aWNMb2NrIGxvY2s7CiAKLSAgICBpZiAoIW11dGV4LnRy
eUxvY2soKSkgeworICAgIGlmICghbG9jay50cnlMb2NrKCkpIHsKICAgICAgICAgLy8gQW5vdGhl
ciB0aHJlYWQgaXMgY3VycmVudGx5IHJlbGVhc2luZyAzRCByZXNvdXJjZXMuCiAgICAgICAgIC8v
IFNpbmNlIGl0IHdpbGwgYWxzbyByZWxlYXNlIHJlc291cmNlcyBmb3IgdGhlIHZpZXcgY2FsbGlu
ZyB0aGlzIG1ldGhvZCwgd2UgY2FuIGp1c3QgcmV0dXJuIGVhcmx5LgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgVmVjdG9yPFJlZlB0cjxIYW5kbGU+PiB2aWV3c1RvUmVsZWFzZTsKLQor
ICAgIFZlY3RvcjxSZWY8SGFuZGxlPj4gdmlld3NUb1JlbGVhc2U7CiAgICAgewotICAgICAgICBN
dXRleExvY2tlciBsb2NrKGdsb2JhbFN0YXRlTXV0ZXgoKSk7Ci0gICAgICAgIHZpZXdzVG9SZWxl
YXNlID0gY29weVRvVmVjdG9yKHZpZXdzKCkpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGdsb2JhbFN0YXRlTG9jayk7CisgICAgICAgIHZpZXdzVG9SZWxlYXNlID0gV1RGOjptYXAo
dmlld3MoKSwgW10gKGF1dG8mIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlLmNvcHlSZWYoKTsgfSk7
CiAgICAgfQogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWV3c1RvUmVsZWFzZS5zaXpl
KCk7ICsraSkgewotICAgICAgICBjb25zdCBSZWZQdHI8SGFuZGxlPiYgaGFuZGxlID0gdmlld3NU
b1JlbGVhc2VbaV07Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2soaGFuZGxlLT5tdXRleCgpKTsK
KyAgICBmb3IgKGF1dG8mIGhhbmRsZSA6IHZpZXdzVG9SZWxlYXNlKSB7CisgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soaGFuZGxlLT5sb2NrKCkpOwogICAgICAgICBDQVZpZXcqIHZpZXcg
PSBoYW5kbGUtPnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3KQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIE11dGV4TG9ja2VyIHZpZXdMb2NrKHZpZXctPm1fbXV0ZXgpOworICAgICAg
ICBhdXRvIHZpZXdMb2NrZXIgPSBob2xkTG9jayh2aWV3LT5tX2xvY2spOwogICAgICAgICB2aWV3
LT5tX3N3YXBDaGFpbiA9IG51bGxwdHI7CiAgICAgICAgIHZpZXctPm1fZDNkUG9zdFByb2Nlc3Np
bmdDb250ZXh0ID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBtdXRleC51bmxvY2soKTsKKyAgICBs
b2NrLnVubG9jaygpOwogfQogCiBpbmxpbmUgQ0FWaWV3OjpDQVZpZXcoRHJhd2luZ0Rlc3RpbmF0
aW9uIGRlc3RpbmF0aW9uKQogICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKICAgICAs
IG1faGFuZGxlKEhhbmRsZTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9jb250ZXh0KGFkb3B0Q0Yo
Q0FDRkNvbnRleHRDcmVhdGUoMCkpKQotICAgICwgbV9ib3VuZHMoQ0dSZWN0WmVybykKIHsKICAg
ICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2soZ2xvYmFsU3RhdGVNdXRleCgpKTsKLSAgICAg
ICAgdmlld3MoKS5hZGQobV9oYW5kbGUpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KGdsb2JhbFN0YXRlTG9jayk7CisgICAgICAgIHZpZXdzKCkuYWRkKG1faGFuZGxlLmNvcHlSZWYo
KSk7CiAgICAgfQogCiAgICAgQ0FSZW5kZXJOb3RpZmljYXRpb25BZGRPYnNlcnZlcihrQ0FSZW5k
ZXJDb250ZXh0RGlkQ2hhbmdlLCBDQUNGQ29udGV4dEdldFJlbmRlckNvbnRleHQobV9jb250ZXh0
LmdldCgpKSwgY29udGV4dERpZENoYW5nZUNhbGxiYWNrLCB0aGlzKTsKQEAgLTE1MSwxNyArMTUz
LDE3IEBAIENBVmlldzo6fkNBVmlldygpCiAgICAgbV9sYXllciA9IG51bGxwdHI7CiAKICAgICB7
Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9sb2NrKTsKICAgICAgICAgbV9jb250ZXh0ID0gbnVsbHB0cjsKICAgICB9
CiAKLSAgICAvLyBBdm9pZCBzdG9wcGluZyB0aGUgZGlzcGxheSBsaW5rIHdoaWxlIHdlIGhvbGQg
ZWl0aGVyIG1fbXV0ZXggb3IgbV9kaXNwbGF5TGlua011dGV4LCBhcyBkb2luZworICAgIC8vIEF2
b2lkIHN0b3BwaW5nIHRoZSBkaXNwbGF5IGxpbmsgd2hpbGUgd2UgaG9sZCBlaXRoZXIgbV9sb2Nr
IG9yIG1fZGlzcGxheUxpbmtMb2NrLCBhcyBkb2luZwogICAgIC8vIHNvIHdpbGwgd2FpdCBmb3Ig
ZGlzcGxheUxpbmtSZWFjaGVkQ0FNZWRpYVRpbWUgdG8gcmV0dXJuIGFuZCB0aGF0IGZ1bmN0aW9u
IGNhbiB0YWtlIHRob3NlCiAgICAgLy8gc2FtZSBtdXRleGVzLgogICAgIFJlZlB0cjxDVkRpc3Bs
YXlMaW5rPiBsaW5rVG9TdG9wOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1f
ZGlzcGxheUxpbmtNdXRleCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9kaXNw
bGF5TGlua0xvY2spOwogICAgICAgICBsaW5rVG9TdG9wID0gV1RGTW92ZShtX2Rpc3BsYXlMaW5r
KTsKICAgICB9CiAKQEAgLTE3MSwxMyArMTczLDEzIEBAIENBVmlldzo6fkNBVmlldygpCiAgICAg
dXBkYXRlKG51bGxwdHIsIENHUmVjdFplcm8pOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tl
ciBsb2NrKG1faGFuZGxlLT5tdXRleCgpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2hhbmRsZS0+bG9jaygpKTsKICAgICAgICAgbV9oYW5kbGUtPmNsZWFyKCk7CiAgICAgfQog
Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhnbG9iYWxTdGF0ZU11dGV4KCkpOworICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soZ2xvYmFsU3RhdGVMb2NrKTsKIAotICAgIHZpZXdzKCkucmVtb3ZlKG1f
aGFuZGxlKTsKKyAgICB2aWV3cygpLnJlbW92ZShtX2hhbmRsZS5jb3B5UmVmKCkpOwogICAgIGlm
ICghdmlld3MoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjA1LDE0ICsyMDcs
MTQgQEAgdm9pZCBDQVZpZXc6OnNldExheWVyKENBQ0ZMYXllclJlZiBsYXllcikKIAogICAgIENB
Q0ZMYXllclNldEZyYW1lKG1fbGF5ZXIuZ2V0KCksIG1fYm91bmRzKTsKIAotICAgIE11dGV4TG9j
a2VyIGxvY2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwog
ICAgIENBQ0ZDb250ZXh0U2V0TGF5ZXIobV9jb250ZXh0LmdldCgpLCBtX2xheWVyLmdldCgpKTsK
IH0KIAogdm9pZCBDQVZpZXc6OnVwZGF0ZShDV2luZG93IHdpbmRvdywgY29uc3QgQ0dSZWN0JiBi
b3VuZHMpCiB7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKGdsb2JhbFN0YXRlTXV0
ZXgoKSk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZ2xvYmFsU3RhdGVMb2NrKTsK
IAogICAgICAgICAvLyBFbnN1cmUgb3VyIG1lc3NhZ2Ugd2luZG93IGlzIGNyZWF0ZWQgb24gdGhl
IHRocmVhZCB0aGF0IGNhbGxlZCBDQVZpZXc6OnVwZGF0ZS4KICAgICAgICAgaWYgKCFtZXNzYWdl
V2luZG93KQpAQCAtMjIzLDEzICsyMjUsMTMgQEAgdm9pZCBDQVZpZXc6OnVwZGF0ZShDV2luZG93
IHdpbmRvdywgY29uc3QgQ0dSZWN0JiBib3VuZHMpCiAgICAgICAgIEFTU0VSVCg6OkdldEN1cnJl
bnRUaHJlYWRJZCgpID09IENXaW5kb3cobWVzc2FnZVdpbmRvdykuR2V0V2luZG93VGhyZWFkSUQo
KSk7CiAgICAgICAgIEFTU0VSVCghd2luZG93IHx8IDo6R2V0Q3VycmVudFRocmVhZElkKCkgPT0g
d2luZG93LkdldFdpbmRvd1RocmVhZElEKCkpOwogCi0gICAgICAgIHZpZXdzTmVlZGluZ1VwZGF0
ZSgpLnJlbW92ZShtX2hhbmRsZSk7CisgICAgICAgIHZpZXdzTmVlZGluZ1VwZGF0ZSgpLnJlbW92
ZShtX2hhbmRsZS5jb3B5UmVmKCkpOwogICAgIH0KIAogICAgIGJvb2wgYm91bmRzQ2hhbmdlZDsK
IAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogCiAgICAgICAgIGJvdW5kc0NoYW5nZWQgPSAh
Q0dSZWN0RXF1YWxUb1JlY3QobV9ib3VuZHMsIGJvdW5kcyk7CiAKQEAgLTI5MiwxMyArMjk0LDEz
IEBAIHZvaWQgQ0FWaWV3OjppbnZhbGlkYXRlUmVjdHMoY29uc3QgQ0dSZWN0KiByZWN0cywgc2l6
ZV90IGNvdW50KQogCiB2b2lkIENBVmlldzo6ZHJhd1RvV2luZG93KCkKIHsKLSAgICBNdXRleExv
Y2tlciBsb2NrKG1fbXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsK
ICAgICBkcmF3VG9XaW5kb3dJbnRlcm5hbCgpOwogfQogCiB2b2lkIENBVmlldzo6ZHJhd1RvV2lu
ZG93SW50ZXJuYWwoKQogewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1fbXV0ZXgudHJ5TG9j
aygpLCAibV9tdXRleCBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24iKTsK
KyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2xvY2sudHJ5TG9jaygpLCAibV9sb2NrIG11c3Qg
YmUgaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiIpOwogICAgIENGVGltZUludGVydmFs
IG5leHREcmF3VGltZTsKICAgICBib29sIHVudXNlZFdpbGxVcGRhdGVTb29uOwogICAgIGlmICh3
aWxsRHJhdyh1bnVzZWRXaWxsVXBkYXRlU29vbikpCkBAIC0zMTUsNyArMzE3LDcgQEAgUmVmUHRy
PEltYWdlPiBDQVZpZXc6OmRyYXdUb0ltYWdlKENHUG9pbnQmIGltYWdlT3JpZ2luLCBDRlRpbWVJ
bnRlcnZhbCYgbmV4dERyYXcKICAgICBpbWFnZU9yaWdpbiA9IENHUG9pbnRaZXJvOwogICAgIG5l
eHREcmF3VGltZSA9IG51bWVyaWNfbGltaXRzPENGVGltZUludGVydmFsPjo6aW5maW5pdHkoKTsK
IAotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICAgICBib29sIHdpbGxV
cGRhdGVTb29uOwpAQCAtMzM0LDcgKzMzNiw3IEBAIFJlZlB0cjxJbWFnZT4gQ0FWaWV3OjpkcmF3
VG9JbWFnZShDR1BvaW50JiBpbWFnZU9yaWdpbiwgQ0ZUaW1lSW50ZXJ2YWwmIG5leHREcmF3CiAK
IGJvb2wgQ0FWaWV3Ojp3aWxsRHJhdyhib29sJiB3aWxsVXBkYXRlU29vbikKIHsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFtX211dGV4LnRyeUxvY2soKSwgIm1fbXV0ZXggbXVzdCBiZSBoZWxk
IHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
bV9sb2NrLnRyeUxvY2soKSwgIm1fbG9jayBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMg
ZnVuY3Rpb24iKTsKIAogICAgIHdpbGxVcGRhdGVTb29uID0gZmFsc2U7CiAKQEAgLTQzMSw3ICs0
MzMsNyBAQCB2b2lkIENBVmlldzo6ZHJhd0ludG9EQyhIREMgZGMpCiAgICAgfQogCiAgICAgewot
ICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fbG9jayk7CiAKICAgICAgICAgQ0FSZW5kZXJDb250ZXh0KiByZW5kZXJDb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Q0FSZW5kZXJDb250ZXh0Kj4oQ0FDRkNvbnRleHRHZXRSZW5kZXJD
b250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwogICAgICAgICBDQVJlbmRlckNvbnRleHRMb2NrKHJl
bmRlckNvbnRleHQpOwpAQCAtNDU2LDEzICs0NTgsMTMgQEAgdm9pZCBDQVZpZXc6OmRyYXdJbnRv
REMoSERDIGRjKQogCiB2b2lkIENBVmlldzo6c2V0U2hvdWxkSW52ZXJ0Q29sb3JzKGJvb2wgc2hv
dWxkSW52ZXJ0Q29sb3JzKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgIG1fc2hvdWxkSW52ZXJ0Q29sb3Jz
ID0gc2hvdWxkSW52ZXJ0Q29sb3JzOwogfQogCiB2b2lkIENBVmlldzo6c2NoZWR1bGVOZXh0RHJh
dyhDRlRpbWVJbnRlcnZhbCBtZWRpYVRpbWUpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX2Rp
c3BsYXlMaW5rTXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9kaXNwbGF5TGlu
a0xvY2spOwogCiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5MSw3
ICs0OTMsNyBAQCB2b2lkIENBVmlldzo6ZGlzcGxheUxpbmtSZWFjaGVkQ0FNZWRpYVRpbWUoQ1ZE
aXNwbGF5TGluayogZGlzcGxheUxpbmssIENGVGltZUludAogICAgIEFTU0VSVChtX2Rlc3RpbmF0
aW9uID09IERyYXdpbmdEZXN0aW5hdGlvbldpbmRvdyk7CiAKICAgICB7Ci0gICAgICAgIE11dGV4
TG9ja2VyIGxvY2sobV9kaXNwbGF5TGlua011dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2Rpc3BsYXlMaW5rTG9jayk7CiAgICAgICAgIGlmICghbV9kaXNwbGF5TGluaykK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgQVNTRVJUX1VOVVNFRChkaXNwbGF5TGluaywg
ZGlzcGxheUxpbmsgPT0gbV9kaXNwbGF5TGluayk7CkBAIC01MDAsNyArNTAyLDcgQEAgdm9pZCBD
QVZpZXc6OmRpc3BsYXlMaW5rUmVhY2hlZENBTWVkaWFUaW1lKENWRGlzcGxheUxpbmsqIGRpc3Bs
YXlMaW5rLCBDRlRpbWVJbnQKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBNdXRl
eExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2Nr
KTsKICAgICBkcmF3VG9XaW5kb3dJbnRlcm5hbCgpOwogfQogCkBAIC01MTcsNyArNTE5LDcgQEAg
dm9pZCBDQVZpZXc6OmNvbnRleHREaWRDaGFuZ2VDYWxsYmFjayh2b2lkKiBvYmplY3QsIHZvaWQq
IGluZm8sIHZvaWQqKQogdm9pZCBDQVZpZXc6OmNvbnRleHREaWRDaGFuZ2UoKQogewogICAgIHsK
LSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2xvY2spOwogCiAgICAgICAgIC8vIE91ciBsYXllcidzIHJlbmRlcmVkIGFw
cGVhcmFuY2Ugb25jZSBhZ2FpbiBtYXRjaGVzIG91ciBib3VuZHMsIHNvIGl0J3Mgc2FmZSB0byBk
cmF3LgogICAgICAgICBtX2RyYXdpbmdQcm9oaWJpdGVkID0gZmFsc2U7CkBAIC01MzQsOCArNTM2
LDggQEAgdm9pZCBDQVZpZXc6OmNvbnRleHREaWRDaGFuZ2UoKQogdm9pZCBDQVZpZXc6OnVwZGF0
ZVNvb24oKQogewogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhnbG9iYWxTdGF0ZU11
dGV4KCkpOwotICAgICAgICB2aWV3c05lZWRpbmdVcGRhdGUoKS5hZGQobV9oYW5kbGUpOworICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGdsb2JhbFN0YXRlTG9jayk7CisgICAgICAgIHZp
ZXdzTmVlZGluZ1VwZGF0ZSgpLmFkZChtX2hhbmRsZS5jb3B5UmVmKCkpOwogICAgIH0KICAgICAv
LyBJdCBkb2Vzbid0IG1hdHRlciB3aGF0IHRpbWVyIElEIHdlIHBhc3MgaGVyZSwgYXMgbG9uZyBh
cyBpdCdzIG5vbnplcm8uCiAgICAgQVNTRVJUKG1lc3NhZ2VXaW5kb3cpOwpAQCAtNTQ3LDMwICs1
NDksMjcgQEAgdm9pZCBDQVZpZXc6OnVwZGF0ZVZpZXdzTm93KEhXTkQgd2luZG93LCBVSU5ULCBV
SU5UX1BUUiB0aW1lcklELCBEV09SRCkKICAgICBBU1NFUlRfQVJHKHdpbmRvdywgd2luZG93ID09
IG1lc3NhZ2VXaW5kb3cpOwogICAgIDo6S2lsbFRpbWVyKHdpbmRvdywgdGltZXJJRCk7CiAKLSAg
ICBWZWN0b3I8UmVmUHRyPEhhbmRsZT4+IHZpZXdzVG9VcGRhdGU7Ci0KKyAgICBIYXNoU2V0PFJl
ZjxDQVZpZXc6OkhhbmRsZT4+IHZpZXdzVG9VcGRhdGU7CiAgICAgewotICAgICAgICBNdXRleExv
Y2tlciBsb2NrKGdsb2JhbFN0YXRlTXV0ZXgoKSk7Ci0gICAgICAgIHZpZXdzVG9VcGRhdGUgPSBj
b3B5VG9WZWN0b3Iodmlld3NOZWVkaW5nVXBkYXRlKCkpOwotICAgICAgICB2aWV3c05lZWRpbmdV
cGRhdGUoKS5jbGVhcigpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGdsb2JhbFN0
YXRlTG9jayk7CisgICAgICAgIHZpZXdzTmVlZGluZ1VwZGF0ZSgpLnN3YXAodmlld3NUb1VwZGF0
ZSk7CiAgICAgfQogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWV3c1RvVXBkYXRlLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFJlZlB0cjxIYW5kbGU+JiBoYW5kbGUgPSB2aWV3
c1RvVXBkYXRlW2ldOwotICAgICAgICBNdXRleExvY2tlciBsb2NrKGhhbmRsZS0+bXV0ZXgoKSk7
CisgICAgZm9yIChhdXRvJiBoYW5kbGUgOiB2aWV3c1RvVXBkYXRlKSB7CisgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soaGFuZGxlLT5sb2NrKCkpOwogICAgICAgICBDQVZpZXcqIHZpZXcg
PSBoYW5kbGUtPnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3KQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIE11dGV4TG9ja2VyIHZpZXdMb2NrKHZpZXctPm1fbXV0ZXgpOworICAgICAg
ICBhdXRvIHZpZXdMb2NrZXIgPSBob2xkTG9jayh2aWV3LT5tX2xvY2spOwogICAgICAgICB2aWV3
LT51cGRhdGUodmlldy0+bV93aW5kb3csIHZpZXctPm1fYm91bmRzKTsKICAgICB9CiB9CiAKIElE
aXJlY3QzRERldmljZTkqIENBVmlldzo6ZDNkRGV2aWNlOSgpCiB7Ci0gICAgLy8gSG9sZCB0aGUg
bXV0ZXggd2hpbGUgd2UgcmV0dXJuIHRoZSBzaGFyZWQgZDNkIGRldmljZS4gVGhlIGNhbGxlciBp
cyByZXNwb25zaWJsZSBmb3IgcmV0YWluaW5nCisgICAgLy8gSG9sZCB0aGUgbG9jayB3aGlsZSB3
ZSByZXR1cm4gdGhlIHNoYXJlZCBkM2QgZGV2aWNlLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxl
IGZvciByZXRhaW5pbmcKICAgICAvLyB0aGUgZGV2aWNlIGJlZm9yZSByZXR1cm5pbmcgdG8gZW5z
dXJlIHRoYXQgaXQgaXMgbm90IHJlbGVhc2VkLgotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRl
eCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogCiAgICAgcmV0dXJuIENB
RDNEUmVuZGVyZXI6OnNoYXJlZCgpLmQzZERldmljZTkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5o
CmluZGV4IGYyZDJlZWI1OTZkY2RkMGY1NWM5ODE1MTJlMjVhMWFlNDI5MzE4Y2QuLjQ1YjY0ZWMw
MTUyZTUxZDQyNGY0MmUzMzljNWUwNmZiNTQ0ODA0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcuaApA
QCAtMTAzLDIzICsxMDMsMjMgQEAgY2xhc3MgQ0FWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8Q0FW
aWV3PiwgcHJpdmF0ZSBDVkRpc3BsYXlMaW5rQ2xpZW50IHsKICAgICBEcmF3aW5nRGVzdGluYXRp
b24gbV9kZXN0aW5hdGlvbjsKIAogICAgIC8vIE9ubHkgc2V0IGluIHRoZSBjb25zdHJ1Y3Rvciwg
dGhlbiBwcm90ZWN0ZWQgYnkgaXRzIG93biBNdXRleC4KLSAgICBSZWZQdHI8SGFuZGxlPiBtX2hh
bmRsZTsKKyAgICBSZWY8SGFuZGxlPiBtX2hhbmRsZTsKIAogICAgIC8vIE9ubHkgYWNjZXNzZWQg
aW4gQVBJIGNhbGxzLCB0aGUgc3luY2hyb25pemF0aW9uIG9mIHdoaWNoIGlzIHRoZSByZXNwb25z
aWJpbGl0eSBvZiB0aGUgY2FsbGVyLgogICAgIFJldGFpblB0cjxDQUNGTGF5ZXJSZWY+IG1fbGF5
ZXI7CiAgICAgQ29udGV4dERpZENoYW5nZUNhbGxiYWNrIG1fY29udGV4dERpZENoYW5nZUNhbGxi
YWNrOwogCi0gICAgTXV0ZXggbV9tdXRleDsKLSAgICAvLyBBY2Nlc3NlZCBieSB0aGUgZGlzcGxh
eSBsaW5rIHRocmVhZCwgcHJvdGVjdGVkIGJ5IG1fbXV0ZXguIChtX2NvbnRleHQgaXNuJ3QgZGly
ZWN0bHkKKyAgICBMb2NrIG1fbG9jazsKKyAgICAvLyBBY2Nlc3NlZCBieSB0aGUgZGlzcGxheSBs
aW5rIHRocmVhZCwgcHJvdGVjdGVkIGJ5IG1fbG9jay4gKG1fY29udGV4dCBpc24ndCBkaXJlY3Rs
eQogICAgIC8vIGFjY2Vzc2VkIGZyb20gdGhlIGRpc3BsYXkgbGluayB0aHJlYWQsIGJ1dCBpdHMg
Q0FSZW5kZXJDb250ZXh0IGlzLikKICAgICBSZXRhaW5QdHI8Q0FDRkNvbnRleHRSZWY+IG1fY29u
dGV4dDsKICAgICBDV2luZG93IG1fd2luZG93OwotICAgIENHUmVjdCBtX2JvdW5kczsKKyAgICBD
R1JlY3QgbV9ib3VuZHMgeyBDR1JlY3RaZXJvIH07CiAgICAgQ0NvbVB0cjxJRGlyZWN0M0RTd2Fw
Q2hhaW45PiBtX3N3YXBDaGFpbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RDNEUG9zdFByb2Nlc3Np
bmdDb250ZXh0PiBtX2QzZFBvc3RQcm9jZXNzaW5nQ29udGV4dDsKIAotICAgIE11dGV4IG1fZGlz
cGxheUxpbmtNdXRleDsKLSAgICAvLyBBY2Nlc3NlZCBieSB0aGUgZGlzcGxheSBsaW5rIHRocmVh
ZCwgcHJvdGVjdGVkIGJ5IG1fZGlzcGxheUxpbmtNdXRleC4KKyAgICBMb2NrIG1fZGlzcGxheUxp
bmtMb2NrOworICAgIC8vIEFjY2Vzc2VkIGJ5IHRoZSBkaXNwbGF5IGxpbmsgdGhyZWFkLCBwcm90
ZWN0ZWQgYnkgbV9kaXNwbGF5TGlua0xvY2suCiAgICAgUmVmUHRyPENWRGlzcGxheUxpbms+IG1f
ZGlzcGxheUxpbms7CiAgICAgQ0ZUaW1lSW50ZXJ2YWwgbV9uZXh0RHJhd1RpbWUgeyAwIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>