<?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>167163</bug_id>
          
          <creation_ts>2017-01-18 09:59:05 -0800</creation_ts>
          <short_desc>Implement per activity state CPU usage reporting using diagnostic logging</short_desc>
          <delta_ts>2017-01-19 13:34:54 -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>WebCore Misc.</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1267767</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-18 09:59:05 -0800</bug_when>
    <thetext>Implement per activity state CPU usage reporting using diagnostic logging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267768</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-18 09:59:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/30058349&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268035</commentid>
    <comment_count>2</comment_count>
      <attachid>299232</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-18 21:55:35 -0800</bug_when>
    <thetext>Created attachment 299232
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268118</commentid>
    <comment_count>3</comment_count>
      <attachid>299249</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-19 10:26:26 -0800</bug_when>
    <thetext>Created attachment 299249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268133</commentid>
    <comment_count>4</comment_count>
      <attachid>299252</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-19 11:09:15 -0800</bug_when>
    <thetext>Created attachment 299252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268143</commentid>
    <comment_count>5</comment_count>
      <attachid>299255</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-19 11:41:53 -0800</bug_when>
    <thetext>Created attachment 299255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268146</commentid>
    <comment_count>6</comment_count>
      <attachid>299256</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-19 11:59:18 -0800</bug_when>
    <thetext>Created attachment 299256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268154</commentid>
    <comment_count>7</comment_count>
      <attachid>299259</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-01-19 12:18:06 -0800</bug_when>
    <thetext>Created attachment 299259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268173</commentid>
    <comment_count>8</comment_count>
      <attachid>299259</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-19 13:34:48 -0800</bug_when>
    <thetext>Comment on attachment 299259
Patch

Clearing flags on attachment: 299259

Committed r210936: &lt;http://trac.webkit.org/changeset/210936&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268174</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-19 13:34:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299232</attachid>
            <date>2017-01-18 21:55:35 -0800</date>
            <delta_ts>2017-01-19 10:26:23 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>167163_cpuUsageSampling_wip.patch</filename>
            <type>text/plain</type>
            <size>49592</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA0MTI0NzAzLi4zYTIxODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMDYzLDYgKzMwNjMsOCBAQAogCQk4M0YxMjA2
QjFCOEMxMDQ3MDBENzVGNjMgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRjEyMDZBMUI4QzEwMzYwMEQ3NUY2
MyAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICovOyB9OwogCQk4M0ZFN0NBNzFEQTlGMUE3MDAz
NzIzN0MgLyogVUlFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzRkU3Q0E0MURBOUYxNjYwMDM3MjM3QyAvKiBVSUV2ZW50SW5pdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzRkU3Q0E4
MURBOUYxQjYwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGRTdDQTMxREE5RjE2NTAwMzcyMzdDIC8q
IEV2ZW50TW9kaWZpZXJJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJODNGRTkwMjcxRTMwN0MzMDAwM0U5MTk5IC8qIFBlcmZvcm1hbmNlTW9u
aXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNG
RTkwMjYxRTMwN0MxQzAwM0U5MTk5IC8qIFBlcmZvcm1hbmNlTW9uaXRvci5oICovOyB9OworCQk4
M0ZFOTAyODFFMzA3QzMzMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkU5MDI1MUUzMDdDMUMw
MDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0b3IuY3BwICovOyB9OwogCQk4NDE5RDJBNzEyMEQ5
MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MTlEMkE0MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQ
YXRoQnl0ZVN0cmVhbS5oICovOyB9OwogCQk4NDE5RDJBODEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZH
UGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg0MTlEMkE1MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0
cmVhbUJ1aWxkZXIuY3BwICovOyB9OwogCQk4NDE5RDJBOTEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZH
UGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NDE5RDJBNjEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJl
YW1CdWlsZGVyLmggKi87IH07CkBAIC0xMDU5MCw2ICsxMDU5Miw4IEBACiAJCTgzRkU3Q0E0MURB
OUYxNjYwMDM3MjM3QyAvKiBVSUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVSUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0ZF
N0NBNTFEQTlGMTY2MDAzNzIzN0MgLyogVUlFdmVudEluaXQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFVJRXZlbnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNG
RTdDQTYxREE5RjE2NjAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBFdmVudE1vZGlmaWVySW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTgzRkU5MDI1MUUzMDdDMUMwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyZm9ybWFuY2VNb25p
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNGRTkwMjYxRTMwN0MxQzAw
M0U5MTk5IC8qIFBlcmZvcm1hbmNlTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQZXJmb3JtYW5jZU1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODQxOUQyQTQxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhCeXRlU3RyZWFtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MTlEMkE1MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRo
Qnl0ZVN0cmVhbUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODQxOUQyQTYxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoQnl0ZVN0cmVhbUJ1
aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDA2LDYgKzE4MDEwLDgg
QEAKIAkJCQk4NkJFMzNGQzE1MDU4Q0IyMDBDRTBGRDggLyogUGVyZm9ybWFuY2VFbnRyeS5pZGwg
Ki8sCiAJCQkJQUQ1QTBDMjExREVDQTEwMTAwNzA3MDU0IC8qIFBlcmZvcm1hbmNlTG9nZ2luZy5j
cHAgKi8sCiAJCQkJQUQ1QTBDMjAxREVDQTBCNTAwNzA3MDU0IC8qIFBlcmZvcm1hbmNlTG9nZ2lu
Zy5oICovLAorCQkJCTgzRkU5MDI1MUUzMDdDMUMwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0
b3IuY3BwICovLAorCQkJCTgzRkU5MDI2MUUzMDdDMUMwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1v
bml0b3IuaCAqLywKIAkJCQk4QUY0RTU1MjExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VO
YXZpZ2F0aW9uLmNwcCAqLywKIAkJCQk4QUY0RTU1MzExREM1QTM2MDAwRUQzREUgLyogUGVyZm9y
bWFuY2VOYXZpZ2F0aW9uLmggKi8sCiAJCQkJOEFGNEU1NTQxMURDNUEzNjAwMEVEM0RFIC8qIFBl
cmZvcm1hbmNlTmF2aWdhdGlvbi5pZGwgKi8sCkBAIC0yNjcwMyw2ICsyNjcwOSw3IEBACiAJCQkJ
ODUwMzFCNDQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBRTAwRDU5MTgyREFDOEQwMDA4N0RENyAvKiBLZXllZENvZGluZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE3QTYzQzUxQjc0MzE4RjAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4M0ZFOTAyNzFFMzA3QzMwMDAzRTkxOTkgLyogUGVyZm9ybWFu
Y2VNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMg
LyogS2V5ZWRFbmNvZGVyQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNCM0Q3MTE0QjE2NjYw
MDFDNDI5QiAvKiBLZXlFdmVudENvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjU1NDEzOTE0
ODk4MTFDMDAwREZDNUQgLyogS2V5RXZlbnRDb2Rlc0lPUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MTEwNSw2ICszMTExMiw3IEBACiAJCQkJMDczQkUzNEUxN0QxODBCMjAwMkJENDMxIC8qIFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5
MEUxN0QxNENFRTAwNDIwQUExIC8qIFJUQ1N0YXRzUmVwb3J0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA3OEUwOTEwMTdEMTRDRUUwMDQyMEFBMSAvKiBSVENTdGF0c1Jlc3BvbnNlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTgzRkU5MDI4MUUzMDdDMzMwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1v
bml0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUUyQzQzNjcxQkNFRTM3NzAwMDFFMkJDIC8q
IFJUQ1RyYWNrRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTgyNEFCQTIxQUU4MTExNjAw
OTA3NEI3IC8qIFJ1YnlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU4MjRBQkE2MUFF
ODEzODQwMDkwNzRCNyAvKiBSdWJ5VGV4dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZS5oCmluZGV4IGI2ZWQ3ODIuLjBlNTM0Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZS5oCkBAIC00NSw0ICs0NSwxMCBAQCBzdHJ1Y3QgQWN0aXZp
dHlTdGF0ZSB7CiAgICAgc3RhdGljIGNvbnN0IEZsYWdzIEFsbEZsYWdzID0gV2luZG93SXNBY3Rp
dmUgfCBJc0ZvY3VzZWQgfCBJc1Zpc2libGUgfCBJc1Zpc2libGVPck9jY2x1ZGVkIHwgSXNJbldp
bmRvdyB8IElzVmlzdWFsbHlJZGxlIHwgSXNBdWRpYmxlIHwgSXNMb2FkaW5nOwogfTsKIAorZW51
bSBjbGFzcyBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgeworICAgIE5vblZpc2libGUsCisg
ICAgVmlzaWJsZU5vbkFjdGl2ZSwKKyAgICBWaXNpYmxlQW5kQWN0aXZlCit9OworCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAwMmJhM2Mw
Li5hZDM2NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTQ1NSw2ICs0NTUs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFy
a2VyUmVjdHMoKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQcm9jZXNzQ1BVVGltZShp
bnQ2NF90LCBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpIHsgfQorCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwCmluZGV4IGUxNmY1OWQuLjg3Y2Q5ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAKQEAgLTE2Myw2
ICsxNjMsMTEgQEAgU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6bm9TdG9yZUtleSgpCiAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibm9TdG9yZSIpOwogfQogCitTdHJpbmcgRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpub25WaXNpYmxlU3RhdGVLZXkoKQoreworICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoIm5vblZpc2libGVTdGF0ZSIpOworfQorCiBTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzOjpub3RJbk1lbW9yeUNhY2hlS2V5KCkKIHsKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJu
b3RJbk1lbW9yeUNhY2hlIik7CkBAIC01OTgsNiArNjAzLDE2IEBAIFN0cmluZyBEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6OnZpZGVvS2V5KCkKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ2aWRlbyIp
OwogfQogCitTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlTm9uQWN0aXZlU3Rh
dGVLZXkoKQoreworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInZpc2libGVOb25BY3RpdmVTdGF0
ZSIpOworfQorCitTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlQW5kQWN0aXZl
U3RhdGVLZXkoKQoreworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInZpc2libGVBbmRBY3RpdmVT
dGF0ZSIpOworfQorCiBTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp3YXN0ZWRTcGVjdWxh
dGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb25LZXkoKQogewogICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIndhc3RlZFNwZWN1bGF0aXZlV2FybXVwV2l0aFJldmFsaWRhdGlvbiIpOwpAQCAtNjU4LDUg
KzY3MywzNyBAQCBTdHJpbmcgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp3ZWJHTEtl
eSgpCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgid2ViR0wiKTsKIH0KIAorU3RyaW5nIERpYWdu
b3N0aWNMb2dnaW5nS2V5czo6Zm9yZWdyb3VuZENQVVVzYWdlVG9EaWFnbm9zdGljTG9nZ2luS2V5
KGRvdWJsZSBjcHVVc2FnZSkKK3sKKyAgICBpZiAoY3B1VXNhZ2UgPCAxMCkKKyAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiQmVsb3cxMCIpOworICAgIGlmIChjcHVVc2FnZSA8IDIwKQorICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIxMHRvMjAiKTsKKyAgICBpZiAoY3B1VXNhZ2UgPCA0
MCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMjB0bzQwIik7CisgICAgaWYgKGNwdVVz
YWdlIDwgNjApCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjQwdG82MCIpOworICAgIGlm
IChjcHVVc2FnZSA8IDgwKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI2MHRvODAiKTsK
KyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvdmVyODAiKTsKK30KKworU3RyaW5nIERpYWdub3N0
aWNMb2dnaW5nS2V5czo6YmFja2dyb3VuZENQVVVzYWdlVG9EaWFnbm9zdGljTG9nZ2luS2V5KGRv
dWJsZSBjcHVVc2FnZSkKK3sKKyAgICBpZiAoY3B1VXNhZ2UgPCAxKQorICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJCZWxvdzEiKTsKKyAgICBpZiAoY3B1VXNhZ2UgPCA1KQorICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCIxdG81Iik7CisgICAgaWYgKGNwdVVzYWdlIDwgMTApCisgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjV0bzEwIik7CisgICAgaWYgKGNwdVVzYWdlIDwgMzAp
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjEwdG8zMCIpOworICAgIGlmIChjcHVVc2Fn
ZSA8IDUwKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIzMHRvNTAiKTsKKyAgICBpZiAo
Y3B1VXNhZ2UgPCA3MCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiNTB0bzcwIik7Cisg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib3ZlcjcwIik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2lu
Z0tleXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmgKaW5k
ZXggNmI2YTJmMC4uYjgyZDdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFn
bm9zdGljTG9nZ2luZ0tleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNM
b2dnaW5nS2V5cy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5n
IGNhY2hlZFJlc291cmNlUmV2YWxpZGF0aW9uS2V5KCk7CiAgICAgc3RhdGljIFN0cmluZyBjYW5D
YWNoZUtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgY2Fubm90U3VzcGVuZEFjdGl2ZURPTU9iamVj
dHNLZXkoKTsKLSAgICBzdGF0aWMgU3RyaW5nIGNwdVVzYWdlS2V5KCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFN0cmluZyBjcHVVc2FnZUtleSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTdHJpbmcgY3JlYXRlU2hhcmVkQnVmZmVyRmFpbGVkS2V5KCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFN0cmluZyBkZWx0YUtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgZGVuaWVk
QnlDbGllbnRLZXkoKTsKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJp
bmcgbm9Eb2N1bWVudExvYWRlcktleSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJp
bmcgbm9Mb25nZXJJbkNhY2hlS2V5KCk7CiAgICAgc3RhdGljIFN0cmluZyBub1N0b3JlS2V5KCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBub25WaXNpYmxlU3RhdGVLZXkoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIG5vdEhUVFBGYW1pbHlLZXkoKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIG5vdEluQ2FjaGVLZXkoKTsKICAgICBzdGF0
aWMgU3RyaW5nIG5vdEluTWVtb3J5Q2FjaGVLZXkoKTsKQEAgLTE1MCwxMiArMTUxLDE3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHVzZXJLZXkoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHZhcnlpbmdIZWFkZXJNaXNtYXRjaEtleSgpOwog
ICAgIHN0YXRpYyBTdHJpbmcgdmlkZW9LZXkoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U3RyaW5nIHZpc2libGVOb25BY3RpdmVTdGF0ZUtleSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTdHJpbmcgdmlzaWJsZUFuZEFjdGl2ZVN0YXRlS2V5KCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFN0cmluZyB3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb25L
ZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHdhc3RlZFNwZWN1bGF0aXZl
V2FybXVwV2l0aG91dFJldmFsaWRhdGlvbktleSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBTdHJpbmcgd2ViR0xLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHdl
YlZpZXdLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHpvb21lZEtleSgp
OwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBmb3JlZ3JvdW5kQ1BVVXNhZ2VU
b0RpYWdub3N0aWNMb2dnaW5LZXkoZG91YmxlIGNwdVVzYWdlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3RyaW5nIGJhY2tncm91bmRDUFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dpbktleShk
b3VibGUgY3B1VXNhZ2UpOworCiAgICAgLy8gU3VjY2VzcyAvIEZhaWx1cmUga2V5cy4KICAgICBz
dGF0aWMgU3RyaW5nIHN1Y2Nlc3NLZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIGZhaWx1cmVLZXko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDg2YzA0NjcuLjQzZTYyMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dhYmxlLmgiCiAjaW5j
bHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZU92ZXJsYXlDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiUGVyZm9ybWFuY2VNb25pdG9yLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGx1Z0luQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1
Z2luRGF0YS5oIgpAQCAtMTI3LDEzICsxMjgsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBQYWdl
OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKLQogc3RhdGljIEhhc2hTZXQ8UGFnZSo+KiBh
bGxQYWdlczsKK3N0YXRpYyB1bnNpZ25lZCB0YWJQYWdlQ291bnQgeyAwIH07CiAKLXN0YXRpYyBj
b25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBjcHVVc2FnZU1lYXN1cmVtZW50RGVsYXkgeyA1IH07
Ci1zdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgcG9zdExvYWRDUFVVc2FnZU1lYXN1
cmVtZW50RHVyYXRpb24geyAxMCB9Owotc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjptaW51dGVz
IGJhY2tncm91bmRDUFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24geyA1IH07CitzdGF0aWMgaW5s
aW5lIGJvb2wgaXNUYWJQYWdlQ2hyb21lQ2xpZW50KENocm9tZUNsaWVudCYgY2hyb21lQ2xpZW50
KQoreworICAgIHJldHVybiAhY2hyb21lQ2xpZW50LmlzRW1wdHlDaHJvbWVDbGllbnQoKSAmJiAh
Y2hyb21lQ2xpZW50LmlzU1ZHSW1hZ2VDaHJvbWVDbGllbnQoKTsKK30KIAogREVGSU5FX0RFQlVH
X09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCBwYWdlQ291bnRlciwgKCJQ
YWdlIikpOwogCkBAIC0yNTMsOCArMjU0LDggQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlv
biYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgICwgbV92aXNpdGVkTGlua1N0b3JlKCpXVEZNb3Zl
KHBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rU3RvcmUpKQogICAgICwgbV9zZXNzaW9uSUQo
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAgLCBtX2lzQ2xvc2luZyhmYWxzZSkK
LSAgICAsIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1lcigqdGhpcywgJlBhZ2U6Om1lYXN1cmVQ
b3N0TG9hZENQVVVzYWdlKQotICAgICwgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIo
KnRoaXMsICZQYWdlOjptZWFzdXJlUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZSkKKyAgICAsIG1f
aXNUYWJQYWdlKGlzVGFiUGFnZUNocm9tZUNsaWVudChjaHJvbWUoKS5jbGllbnQoKSkpCisgICAg
LCBtX3BlcmZvcm1hbmNlTW9uaXRvcihpc1RhYlBhZ2UoKSA/IHN0ZDo6bWFrZV91bmlxdWU8UGVy
Zm9ybWFuY2VNb25pdG9yPigqdGhpcykgOiBudWxscHRyKQogewogICAgIHVwZGF0ZVRpbWVyVGhy
b3R0bGluZ1N0YXRlKCk7CiAKQEAgLTI3MSw2ICsyNzIsOCBAQCBQYWdlOjpQYWdlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAKICAgICBBU1NFUlQoIWFsbFBhZ2VzLT5j
b250YWlucyh0aGlzKSk7CiAgICAgYWxsUGFnZXMtPmFkZCh0aGlzKTsKKyAgICBpZiAoaXNUYWJQ
YWdlKCkpCisgICAgICAgICsrdGFiUGFnZUNvdW50OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIHBh
Z2VDb3VudGVyLmluY3JlbWVudCgpOwpAQCAtMjk1LDYgKzI5OCw4IEBAIFBhZ2U6On5QYWdlKCkK
ICAgICBtX21haW5GcmFtZS0+c2V0VmlldyhudWxscHRyKTsKICAgICBzZXRHcm91cE5hbWUoU3Ry
aW5nKCkpOwogICAgIGFsbFBhZ2VzLT5yZW1vdmUodGhpcyk7CisgICAgaWYgKGlzVGFiUGFnZSgp
KQorICAgICAgICAtLXRhYlBhZ2VDb3VudDsKICAgICAKICAgICBtX3NldHRpbmdzLT5wYWdlRGVz
dHJveWVkKCk7CiAKQEAgLTkzNiw5MSArOTQxLDIxIEBAIHZvaWQgUGFnZTo6c2V0VXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbihVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHVzZXJJbnRl
CiAKIHZvaWQgUGFnZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogewotICAgIG1fcG9zdExv
YWRDUFVUaW1lID0gc3RkOjpudWxsb3B0OwotICAgIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1l
ci5zdG9wKCk7CisgICAgaWYgKG1fcGVyZm9ybWFuY2VNb25pdG9yKQorICAgICAgICBtX3BlcmZv
cm1hbmNlTW9uaXRvci0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKIH0KIAogdm9pZCBQYWdl
OjpkaWRGaW5pc2hMb2FkKCkKIHsKICAgICByZXNldFJlbGV2YW50UGFpbnRlZE9iamVjdENvdW50
ZXIoKTsKIAotICAgIC8vIE9ubHkgZG8gcG9zdC1sb2FkIENQVSB1c2FnZSBtZWFzdXJlbWVudCBp
ZiB0aGVyZSBpcyBhIHNpbmdsZSBQYWdlIGluIHRoZSBwcm9jZXNzIGluIG9yZGVyIHRvIHJlZHVj
ZSBub2lzZS4KLSAgICBpZiAoU2V0dGluZ3M6OmlzUG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50
RW5hYmxlZCgpICYmIGFsbFBhZ2VzLT5zaXplKCkgPT0gMSkgewotICAgICAgICBtX3Bvc3RMb2Fk
Q1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRp
bWVyLnN0YXJ0T25lU2hvdChjcHVVc2FnZU1lYXN1cmVtZW50RGVsYXkpOwotICAgIH0KKyAgICBp
ZiAobV9wZXJmb3JtYW5jZU1vbml0b3IpCisgICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5k
aWRGaW5pc2hMb2FkKCk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZm9yZWdyb3VuZENQVVVzYWdlVG9E
aWFnbm9zdGljTG9nZ2luS2V5KGRvdWJsZSBjcHVVc2FnZSkKK2Jvb2wgUGFnZTo6aXNPbmx5VGFi
UGFnZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGNwdVVzYWdlIDwgMTApCi0gICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoIkJlbG93MTAiKTsKLSAgICBpZiAoY3B1VXNhZ2UgPCAyMCkKLSAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMTB0bzIwIik7Ci0gICAgaWYgKGNwdVVzYWdlIDwgNDApCi0g
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjIwdG80MCIpOwotICAgIGlmIChjcHVVc2FnZSA8
IDYwKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI0MHRvNjAiKTsKLSAgICBpZiAoY3B1
VXNhZ2UgPCA4MCkKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiNjB0bzgwIik7Ci0gICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgib3ZlcjgwIik7Ci19Ci0KLXZvaWQgUGFnZTo6bWVhc3VyZVBv
c3RMb2FkQ1BVVXNhZ2UoKQotewotICAgIGlmIChhbGxQYWdlcy0+c2l6ZSgpICE9IDEpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmICghbV9wb3N0TG9hZENQVVRpbWUpIHsKLSAgICAgICAgbV9w
b3N0TG9hZENQVVRpbWUgPSBnZXRDUFVUaW1lKCk7Ci0gICAgICAgIGlmIChtX3Bvc3RMb2FkQ1BV
VGltZSkKLSAgICAgICAgICAgIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1lci5zdGFydE9uZVNo
b3QocG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IGdldENQVVRpbWUo
KTsKLSAgICBpZiAoIWNwdVRpbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRvdWJsZSBjcHVV
c2FnZSA9IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50YWdlQ1BVVXNhZ2VTaW5jZSgqbV9wb3N0TG9h
ZENQVVRpbWUpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUGVyZm9ybWFuY2VMb2dnaW5n
LCAibWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2U6IFByb2Nlc3Mgd2FzIHVzaW5nICUuMWYlJSBwZXJj
ZW50IENQVSBhZnRlciB0aGUgcGFnZSBsb2FkLiIsIGNwdVVzYWdlKTsKLSAgICBkaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNM
b2dnaW5nS2V5czo6cG9zdFBhZ2VMb2FkS2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3B1
VXNhZ2VLZXkoKSwgZm9yZWdyb3VuZENQVVVzYWdlVG9EaWFnbm9zdGljTG9nZ2luS2V5KGNwdVVz
YWdlKSwgU2hvdWxkU2FtcGxlOjpObyk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgYmFja2dyb3VuZENQ
VVVzYWdlVG9EaWFnbm9zdGljTG9nZ2luS2V5KGRvdWJsZSBjcHVVc2FnZSkKLXsKLSAgICBpZiAo
Y3B1VXNhZ2UgPCAxKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJCZWxvdzEiKTsKLSAg
ICBpZiAoY3B1VXNhZ2UgPCA1KQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIxdG81Iik7
Ci0gICAgaWYgKGNwdVVzYWdlIDwgMTApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjV0
bzEwIik7Ci0gICAgaWYgKGNwdVVzYWdlIDwgMzApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIjEwdG8zMCIpOwotICAgIGlmIChjcHVVc2FnZSA8IDUwKQotICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCIzMHRvNTAiKTsKLSAgICBpZiAoY3B1VXNhZ2UgPCA3MCkKLSAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiNTB0bzcwIik7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib3Zl
cjcwIik7Ci19Ci0KLXZvaWQgUGFnZTo6bWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2Uo
KQotewotICAgIGlmIChhbGxQYWdlcy0+c2l6ZSgpICE9IDEpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmICghbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWUpIHsKLSAgICAgICAgbV9wb3N0QmFj
a2dyb3VuZGluZ0NQVVRpbWUgPSBnZXRDUFVUaW1lKCk7Ci0gICAgICAgIGlmIChtX3Bvc3RCYWNr
Z3JvdW5kaW5nQ1BVVGltZSkKLSAgICAgICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2Fn
ZVRpbWVyLnN0YXJ0T25lU2hvdChiYWNrZ3JvdW5kQ1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0aW9u
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IGNw
dVRpbWUgPSBnZXRDUFVUaW1lKCk7Ci0gICAgaWYgKCFjcHVUaW1lKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBkb3VibGUgY3B1VXNhZ2UgPSBjcHVUaW1lLnZhbHVlKCkucGVyY2VudGFnZUNQVVVz
YWdlU2luY2UoKm1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lKTsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFBlcmZvcm1hbmNlTG9nZ2luZywgIm1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQ
VVVzYWdlOiBQcm9jZXNzIHdhcyB1c2luZyAlLjFmJSUgcGVyY2VudCBDUFUgYWZ0ZXIgYmVjb21p
bmcgbm9uIHZpc2libGUuIiwgY3B1VXNhZ2UpOwotICAgIGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50
KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpw
b3N0UGFnZUJhY2tncm91bmRpbmdLZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjcHVVc2Fn
ZUtleSgpLCBiYWNrZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5LZXkoY3B1VXNhZ2Up
LCBTaG91bGRTYW1wbGU6Ok5vKTsKKyAgICByZXR1cm4gaXNUYWJQYWdlKCkgJiYgdGFiUGFnZUNv
dW50ID09IDE7CiB9CiAKIHZvaWQgUGFnZTo6c2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNvbnRl
bnRJbnNldCkKQEAgLTE1NzIsNiArMTUwNyw5IEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0
ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlKQogCiAgICAgaWYgKHdhc1Zpc2li
bGVBbmRBY3RpdmUgIT0gaXNWaXNpYmxlQW5kQWN0aXZlKCkpCiAgICAgICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlTm93UGxheWluZ0luZm9JZk5lY2Vzc2FyeSgpOworCisg
ICAgaWYgKG1fcGVyZm9ybWFuY2VNb25pdG9yKQorICAgICAgICBtX3BlcmZvcm1hbmNlTW9uaXRv
ci0+YWN0aXZpdHlTdGF0ZUNoYW5nZWQob2xkQWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZSk7
CiB9CiAKIGJvb2wgUGFnZTo6aXNWaXNpYmxlQW5kQWN0aXZlKCkgY29uc3QKQEAgLTE1OTEsNyAr
MTUyOSw2IEBAIHZvaWQgUGFnZTo6c2V0SXNWaXNpYmxlSW50ZXJuYWwoYm9vbCBpc1Zpc2libGUp
CiB7CiAgICAgLy8gRklYTUU6IFRoZSB2aXNpYmlsaXR5IHN0YXRlIHNob3VsZCBiZSBzdG9yZWQg
b24gdGhlIHRvcC1sZXZlbCBkb2N1bWVudC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NzY5Ci0KICAgICBpZiAoaXNWaXNpYmxlKSB7CiAgICAgICAg
IG1faXNQcmVyZW5kZXIgPSBmYWxzZTsKIApAQCAtMTYyOCwxMyArMTU2NSw2IEBAIHZvaWQgUGFn
ZTo6c2V0SXNWaXNpYmxlSW50ZXJuYWwoYm9vbCBpc1Zpc2libGUpCiAgICAgICAgIGlmIChGcmFt
ZVZpZXcqIHZpZXcgPSBtYWluRnJhbWUoKS52aWV3KCkpCiAgICAgICAgICAgICB2aWV3LT5oaWRl
KCk7CiAgICAgfQotCi0gICAgLy8gTWVhc3VyZSBDUFUgdXNhZ2Ugb2YgcGFnZXMgd2hlbiB0aGV5
IGFyZSBubyBsb25nZXIgdmlzaWJsZS4KLSAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSA9
IHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoaXNWaXNpYmxlKQotICAgICAgICBtX3Bvc3RCYWNrZ3Jv
dW5kaW5nQ1BVVXNhZ2VUaW1lci5zdG9wKCk7Ci0gICAgZWxzZSBpZiAoU2V0dGluZ3M6OmlzUG9z
dEJhY2tncm91bmRpbmdDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpICYmIGFsbFBhZ2VzLT5z
aXplKCkgPT0gMSkKLSAgICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIuc3Rh
cnRPbmVTaG90KGNwdVVzYWdlTWVhc3VyZW1lbnREZWxheSk7CiB9CiAKIHZvaWQgUGFnZTo6c2V0
SXNQcmVyZW5kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAwMmI1MDQ0Li42YThlZGNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaApAQCAtMjEsNyArMjEsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBY3Rp
dml0eVN0YXRlLmgiCi0jaW5jbHVkZSAiQ1BVVGltZS5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25z
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkxheW91dE1pbGVz
dG9uZXMuaCIKQEAgLTEwNSw2ICsxMDQsNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNs
YXNzIFBhZ2VDb25zb2xlQ2xpZW50OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7CiBjbGFzcyBQYWdl
R3JvdXA7CitjbGFzcyBQZXJmb3JtYW5jZU1vbml0b3I7CiBjbGFzcyBQbHVnSW5DbGllbnQ7CiBj
bGFzcyBQbHVnaW5EYXRhOwogY2xhc3MgUGx1Z2luSW5mb1Byb3ZpZGVyOwpAQCAtMzU3LDYgKzM1
Nyw4IEBAIHB1YmxpYzoKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMgd2hlbiB0aGUgUGFnZSBzdGFy
dHMgYW5kIHN0b3BzIGJlaW5nIHByZXNlbnRlZCB2aWEgYSBuYXRpdmUgd2luZG93LgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyk7
CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWN0aXZpdHlTdGF0ZTsgfQorCiAgICAgYm9vbCBpc1Zpc2libGVBbmRBY3RpdmUoKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzVmlzaWJsZShib29sKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldElzUHJlcmVuZGVyKCk7CkBAIC01NTksNiArNTYxLDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoc3RkOjpv
cHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gdGhyb3R0bGluZykgeyBtX2V2ZW50VGhy
b3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUgPSB0aHJvdHRsaW5nOyB9CiAKICAgICBXZWJHTFN0YXRl
VHJhY2tlciogd2ViR0xTdGF0ZVRyYWNrZXIoKSBjb25zdCB7IHJldHVybiBtX3dlYkdMU3RhdGVU
cmFja2VyLmdldCgpOyB9CisKKyAgICBib29sIGlzT25seVRhYlBhZ2UoKSBjb25zdDsKKyAgICBi
b29sIGlzVGFiUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUYWJQYWdlOyB9CisKIHByaXZhdGU6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAtNTcyLDkgKzU3OCw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGVja1N1YmZyYW1lQ291bnRDb25zaXN0ZW5jeSgpIGNv
bnN0OwogI2VuZGlmCiAKLSAgICB2b2lkIG1lYXN1cmVQb3N0TG9hZENQVVVzYWdlKCk7Ci0gICAg
dm9pZCBtZWFzdXJlUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZSgpOwotCiAgICAgZW51bSBTaG91
bGRIaWdobGlnaHRNYXRjaGVzIHsgRG9Ob3RIaWdobGlnaHRNYXRjaGVzLCBIaWdobGlnaHRNYXRj
aGVzIH07CiAgICAgZW51bSBTaG91bGRNYXJrTWF0Y2hlcyB7IERvTm90TWFya01hdGNoZXMsIE1h
cmtNYXRjaGVzIH07CiAKQEAgLTc1NiwxNSArNzU5LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X3Nob3dBbGxQbHVnaW5zIHsgZmFsc2UgfTsKICAgICBib29sIG1fY29udHJvbGxlZEJ5QXV0b21h
dGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Jlc291cmNlQ2FjaGluZ0Rpc2FibGVkIHsgZmFs
c2UgfTsKKyAgICBib29sIG1faXNUYWJQYWdlOwogICAgIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHsgVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbjo6TFRSIH07CiAgICAgCiAgICAgLy8gRm9yIHRlc3RpbmcuCiAgICAgc3RkOjpv
cHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gbV9ldmVudFRocm90dGxpbmdCZWhhdmlv
ck92ZXJyaWRlOwogCi0gICAgVGltZXIgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyOwotICAg
IHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gbV9wb3N0TG9hZENQVVRpbWU7Ci0gICAgVGltZXIgbV9w
b3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXI7Ci0gICAgc3RkOjpvcHRpb25hbDxDUFVUaW1l
PiBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGVyZm9y
bWFuY2VNb25pdG9yPiBtX3BlcmZvcm1hbmNlTW9uaXRvcjsKIH07CiAKIGlubGluZSBQYWdlR3Jv
dXAmIFBhZ2U6Omdyb3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmU1NmQ3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCkBA
IC0wLDAgKzEsMTkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlBlcmZvcm1hbmNlTW9uaXRvci5oIgorCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVk
ZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCIK
KyNpbmNsdWRlICJEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwg
Li4uKSBSRUxFQVNFX0xPR19JRihtX3BhZ2UuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNo
YW5uZWwsICIlcCAtIFBlcmZvcm1hbmNlTW9uaXRvcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdT
X18pCisKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBjcHVVc2FnZU1lYXN1cmVt
ZW50RGVsYXkgeyA1IH07CitzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgcG9zdExv
YWRDUFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24geyAxMCB9Oworc3RhdGljIGNvbnN0IHN0ZDo6
Y2hyb25vOjptaW51dGVzIGJhY2tncm91bmRDUFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24geyA1
IH07CitzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86Om1pbnV0ZXMgY3B1VXNhZ2VTYW1wbGluZ0lu
dGVydmFsIHsgMTAgfTsKKworc3RhdGljIGlubGluZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxp
bmcgYWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKEFjdGl2aXR5U3RhdGU6OkZsYWdzIHN0YXRl
KQoreworICAgIGlmICghKHN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSkKKyAgICAg
ICAgcmV0dXJuIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6Tm9uVmlzaWJsZTsKKyAgICBp
ZiAoc3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJu
IEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6VmlzaWJsZUFuZEFjdGl2ZTsKKyAgICByZXR1
cm4gQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpWaXNpYmxlTm9uQWN0aXZlOworfQorCitQ
ZXJmb3JtYW5jZU1vbml0b3I6OlBlcmZvcm1hbmNlTW9uaXRvcihQYWdlJiBwYWdlKQorICAgIDog
bV9wYWdlKHBhZ2UpCisgICAgLCBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIoKnRoaXMsICZQ
ZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0TG9hZENQVVVzYWdlKQorICAgICwgbV9wb3N0
QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIoKnRoaXMsICZQZXJmb3JtYW5jZU1vbml0b3I6Om1l
YXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlKQorICAgICwgbV9wZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VUaW1lcigqdGhpcywgJlBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBlckFjdGl2
aXR5U3RhdGVDUFVVc2FnZSkKK3sKKyAgICBBU1NFUlQocGFnZS5pc1RhYlBhZ2UoKSk7CisKKyAg
ICBpZiAoU2V0dGluZ3M6OmlzUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlTWVhc3VyZW1lbnRFbmFi
bGVkKCkpIHsKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSA9IGdldENQVVRpbWUo
KTsKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VUaW1lci5zdGFydFJlcGVhdGlu
ZyhjcHVVc2FnZVNhbXBsaW5nSW50ZXJ2YWwpOworICAgIH0KK30KKwordm9pZCBQZXJmb3JtYW5j
ZU1vbml0b3I6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKK3sKKyAgICBtX3Bvc3RMb2FkQ1BV
VGltZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIuc3Rv
cCgpOworfQorCit2b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6ZGlkRmluaXNoTG9hZCgpCit7Cisg
ICAgLy8gT25seSBkbyBwb3N0LWxvYWQgQ1BVIHVzYWdlIG1lYXN1cmVtZW50IGlmIHRoZXJlIGlz
IGEgc2luZ2xlIFBhZ2UgaW4gdGhlIHByb2Nlc3MgaW4gb3JkZXIgdG8gcmVkdWNlIG5vaXNlLgor
ICAgIGlmIChTZXR0aW5nczo6aXNQb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkg
JiYgbV9wYWdlLmlzT25seVRhYlBhZ2UoKSkgeworICAgICAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyLnN0YXJ0
T25lU2hvdChjcHVVc2FnZU1lYXN1cmVtZW50RGVsYXkpOworICAgIH0KK30KKwordm9pZCBQZXJm
b3JtYW5jZU1vbml0b3I6OmFjdGl2aXR5U3RhdGVDaGFuZ2VkKEFjdGl2aXR5U3RhdGU6OkZsYWdz
IG9sZFN0YXRlLCBBY3Rpdml0eVN0YXRlOjpGbGFncyBuZXdTdGF0ZSkKK3sKKyAgICBBY3Rpdml0
eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0gb2xkU3RhdGUgXiBuZXdTdGF0ZTsKKyAgICBib29sIHZp
c2liaWxpdHlDaGFuZ2VkID0gY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZTsKKwor
ICAgIC8vIE1lYXN1cmUgQ1BVIHVzYWdlIG9mIHBhZ2VzIHdoZW4gdGhleSBhcmUgbm8gbG9uZ2Vy
IHZpc2libGUuCisgICAgaWYgKFNldHRpbmdzOjppc1Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VN
ZWFzdXJlbWVudEVuYWJsZWQoKSAmJiB2aXNpYmlsaXR5Q2hhbmdlZCAmJiBtX3BhZ2UuaXNPbmx5
VGFiUGFnZSgpKSB7CisgICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lID0gc3RkOjpu
dWxsb3B0OworICAgICAgICBpZiAobmV3U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUp
CisgICAgICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VUaW1lci5zdG9wKCk7Cisg
ICAgICAgIGVsc2UgaWYgKG1fcGFnZS5pc09ubHlUYWJQYWdlKCkpCisgICAgICAgICAgICBtX3Bv
c3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VUaW1lci5zdGFydE9uZVNob3QoY3B1VXNhZ2VNZWFzdXJl
bWVudERlbGF5KTsKKyAgICB9CisKKyAgICBpZiAoU2V0dGluZ3M6OmlzUGVyQWN0aXZpdHlTdGF0
ZUNQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkpIHsKKyAgICAgICAgLy8gSWYgdmlzaWJpbGl0
eSBjaGFuZ2VkIHRoZW4gcmVwb3J0IENQVSB1c2FnZSByaWdodCBhd2F5IGJlY2F1c2UgQ1BVIHVz
YWdlIGlzIGNvbm5lY3RlZCB0byB2aXNpYmlsaXR5IHN0YXRlLgorICAgICAgICBhdXRvIG9sZEFj
dGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyA9IGFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyhv
bGRTdGF0ZSk7CisgICAgICAgIGlmIChvbGRBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgIT0g
YWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKG5ld1N0YXRlKSkgeworICAgICAgICAgICAgbWVh
c3VyZUNQVVVzYWdlSW5BY3Rpdml0eVN0YXRlKG9sZEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGlu
Zyk7CisgICAgICAgICAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVRpbWVyLnN0YXJ0UmVw
ZWF0aW5nKGNwdVVzYWdlU2FtcGxpbmdJbnRlcnZhbCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlUG9zdExvYWRDUFVVc2FnZSgpCit7Cisg
ICAgaWYgKCFtX3BhZ2UuaXNPbmx5VGFiUGFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIW1fcG9zdExvYWRDUFVUaW1lKSB7CisgICAgICAgIG1fcG9zdExvYWRDUFVUaW1lID0gZ2V0
Q1BVVGltZSgpOworICAgICAgICBpZiAobV9wb3N0TG9hZENQVVRpbWUpCisgICAgICAgICAgICBt
X3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIuc3RhcnRPbmVTaG90KHBvc3RMb2FkQ1BVVXNhZ2VN
ZWFzdXJlbWVudER1cmF0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzdGQ6Om9w
dGlvbmFsPENQVVRpbWU+IGNwdVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgaWYgKCFjcHVUaW1l
KQorICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgY3B1VXNhZ2UgPSBjcHVUaW1lLnZhbHVl
KCkucGVyY2VudGFnZUNQVVVzYWdlU2luY2UoKm1fcG9zdExvYWRDUFVUaW1lKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFBlcmZvcm1hbmNlTG9nZ2luZywgIm1lYXN1cmVQb3N0TG9hZENQ
VVVzYWdlOiBQcm9jZXNzIHdhcyB1c2luZyAlLjFmJSUgQ1BVIGFmdGVyIHRoZSBwYWdlIGxvYWQu
IiwgY3B1VXNhZ2UpOworICAgIG1fcGFnZS5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0Rp
YWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cG9zdFBhZ2VM
b2FkS2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3B1VXNhZ2VLZXkoKSwgRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpmb3JlZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5LZXkoY3B1
VXNhZ2UpLCBTaG91bGRTYW1wbGU6Ok5vKTsKK30KKwordm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6
Om1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlKCkKK3sKKyAgICBpZiAoIW1fcGFnZS5p
c09ubHlUYWJQYWdlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9wb3N0QmFja2dy
b3VuZGluZ0NQVVRpbWUpIHsKKyAgICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWUgPSBn
ZXRDUFVUaW1lKCk7CisgICAgICAgIGlmIChtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSkKKyAg
ICAgICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRpbWVyLnN0YXJ0T25lU2hvdChi
YWNrZ3JvdW5kQ1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0aW9uKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IGNwdVRpbWUgPSBnZXRDUFVUaW1lKCk7
CisgICAgaWYgKCFjcHVUaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgY3B1VXNh
Z2UgPSBjcHVUaW1lLnZhbHVlKCkucGVyY2VudGFnZUNQVVVzYWdlU2luY2UoKm1fcG9zdEJhY2tn
cm91bmRpbmdDUFVUaW1lKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBlcmZvcm1hbmNl
TG9nZ2luZywgIm1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlOiBQcm9jZXNzIHdhcyB1
c2luZyAlLjFmJSUgQ1BVIGFmdGVyIGJlY29taW5nIG5vbiB2aXNpYmxlLiIsIGNwdVVzYWdlKTsK
KyAgICBtX3BhZ2UuZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2Fn
ZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnBvc3RQYWdlQmFja2dyb3VuZGluZ0tl
eSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNwdVVzYWdlS2V5KCksIERpYWdub3N0aWNMb2dn
aW5nS2V5czo6YmFja2dyb3VuZENQVVVzYWdlVG9EaWFnbm9zdGljTG9nZ2luS2V5KGNwdVVzYWdl
KSwgU2hvdWxkU2FtcGxlOjpObyk7Cit9CisKK3ZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjptZWFz
dXJlUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlKCkKK3sKKyAgICBtZWFzdXJlQ1BVVXNhZ2VJbkFj
dGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKG1fcGFnZS5hY3Rpdml0eVN0
YXRlKCkpKTsKK30KKworc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBzdHJpbmdGb3JDUFVTYW1w
bGluZ0FjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nIGFjdGl2aXR5U3Rh
dGUpCit7CisgICAgc3dpdGNoIChhY3Rpdml0eVN0YXRlKSB7CisgICAgY2FzZSBBY3Rpdml0eVN0
YXRlRm9yQ1BVU2FtcGxpbmc6Ok5vblZpc2libGU6CisgICAgICAgIHJldHVybiAiTm9uVmlzaWJs
ZSI7CisgICAgY2FzZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc6OlZpc2libGVOb25BY3Rp
dmU6CisgICAgICAgIHJldHVybiAiVmlzaWJsZU5vbkFjdGl2ZSI7CisgICAgY2FzZSBBY3Rpdml0
eVN0YXRlRm9yQ1BVU2FtcGxpbmc6OlZpc2libGVBbmRBY3RpdmU6CisgICAgICAgIHJldHVybiAi
VmlzaWJsZUFuZEFjdGl2ZSI7CisgICAgfQorfQorCit2b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6
bWVhc3VyZUNQVVVzYWdlSW5BY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGlu
ZyBhY3Rpdml0eVN0YXRlKQoreworICAgIGlmICghbV9wYWdlLmlzT25seVRhYlBhZ2UoKSkgewor
ICAgICAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lID0gc3RkOjpudWxsb3B0OworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lKSB7
CisgICAgICAgIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IGNwdVRpbWUg
PSBnZXRDUFVUaW1lKCk7CisgICAgaWYgKCFjcHVUaW1lKSB7CisgICAgICAgIG1fcGVyQWN0aXZp
dHlTdGF0ZUNQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBkb3VibGUgY3B1VXNhZ2UgPSBjcHVUaW1lLnZhbHVlKCkucGVyY2VudGFnZUNQVVVzYWdl
U2luY2UoKm1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWUpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUGVyZm9ybWFuY2VMb2dnaW5nLCAibWVhc3VyZUNQVVVzYWdlSW5BY3Rpdml0eVN0YXRl
OiBQcm9jZXNzIGlzIHVzaW5nICUuMWYlJSBDUFUgaW4gc3RhdGU6ICVzIiwgY3B1VXNhZ2UsIHN0
cmluZ0ZvckNQVVNhbXBsaW5nQWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKSk7CisgICAgbV9w
YWdlLmNocm9tZSgpLmNsaWVudCgpLnJlcG9ydFByb2Nlc3NDUFVUaW1lKChjcHVUaW1lLnZhbHVl
KCkuc3lzdGVtVGltZSArIGNwdVRpbWUudmFsdWUoKS51c2VyVGltZSkgLSAobV9wZXJBY3Rpdml0
eVN0YXRlQ1BVVGltZS52YWx1ZSgpLnN5c3RlbVRpbWUgKyBtX3BlckFjdGl2aXR5U3RhdGVDUFVU
aW1lLnZhbHVlKCkudXNlclRpbWUpLCBhY3Rpdml0eVN0YXRlKTsKKworICAgIG1fcGVyQWN0aXZp
dHlTdGF0ZUNQVVRpbWUgPSBXVEZNb3ZlKGNwdVRpbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGNhYzAwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuaApAQCAtMCwwICsxLDYxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY3Rpdml0eVN0YXRlLmgiCisj
aW5jbHVkZSAiQ1BVVGltZS5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZTsKKworY2xhc3Mg
UGVyZm9ybWFuY2VNb25pdG9yIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQZXJmb3JtYW5jZU1v
bml0b3IoUGFnZSYpOworCisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOworICAg
IHZvaWQgZGlkRmluaXNoTG9hZCgpOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZUNoYW5nZWQoQWN0
aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xkU3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld1N0YXRl
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIG1lYXN1cmVQb3N0TG9hZENQVVVzYWdlKCk7CisgICAg
dm9pZCBtZWFzdXJlUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZSgpOworICAgIHZvaWQgbWVhc3Vy
ZVBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZSgpOworICAgIHZvaWQgbWVhc3VyZUNQVVVzYWdlSW5B
Y3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyk7CisKKyAgICBQYWdlJiBt
X3BhZ2U7CisKKyAgICBUaW1lciBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXI7CisgICAgc3Rk
OjpvcHRpb25hbDxDUFVUaW1lPiBtX3Bvc3RMb2FkQ1BVVGltZTsKKyAgICBUaW1lciBtX3Bvc3RC
YWNrZ3JvdW5kaW5nQ1BVVXNhZ2VUaW1lcjsKKyAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IG1f
cG9zdEJhY2tncm91bmRpbmdDUFVUaW1lOworICAgIFRpbWVyIG1fcGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlVGltZXI7CisgICAgc3RkOjpvcHRpb25hbDxDUFVUaW1lPiBtX3BlckFjdGl2aXR5U3Rh
dGVDUFVUaW1lOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCA3NTk3OTZh
Li42YmI5ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtNzc4LDI0ICs3NzgsNiBA
QCBib29sIFNldHRpbmdzOjpnbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpCiAj
ZW5kaWYKIH0KIAotYm9vbCBTZXR0aW5nczo6aXNQb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnRF
bmFibGVkKCkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNl
Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLWJvb2wgU2V0dGluZ3M6OmlzUG9zdEJh
Y2tncm91bmRpbmdDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpCi17Ci0jaWYgUExBVEZPUk0o
TUFDKQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYK
LX0KLQogdm9pZCBTZXR0aW5nczo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoYm9vbCBhbGxv
d0FueVNTTENlcnRpZmljYXRlKQogewogICAgIGdBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSA9IGFs
bG93QW55U1NMQ2VydGlmaWNhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggYTk3NDAyMS4u
MmQzYzgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMjAxLDYgKzIwMSw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBib29sIGlzUG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxl
ZCgpOwogICAgIHN0YXRpYyBib29sIGlzUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZU1lYXN1cmVt
ZW50RW5hYmxlZCgpOworICAgIHN0YXRpYyBib29sIGlzUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
TWVhc3VyZW1lbnRFbmFibGVkKCk7CiAKICAgICBzdGF0aWMgYm9vbCBnbG9iYWxDb25zdFJlZGVj
bGFyYXRpb25TaG91bGRUaHJvdygpOwogCkBAIC00MjMsNCArNDI0LDMxIEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIGJvb2wgZ0FsbG93c0FueVNTTENlcnRpZmljYXRlOwogfTsKIAoraW5saW5lIGJv
b2wgU2V0dGluZ3M6OmlzUG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpCit7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorfQorCitpbmxpbmUgYm9vbCBTZXR0aW5nczo6aXNQb3N0QmFja2dyb3Vu
ZGluZ0NQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitp
bmxpbmUgYm9vbCBTZXR0aW5nczo6aXNQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VNZWFzdXJlbWVu
dEVuYWJsZWQoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNl
CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA4NzIwMjcyLi5lM2U4OGFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC01Nyw2ICs1Nyw3IEBAIGV4dGVybiAiQyIgewogICAg
IE0oTmV0d29ya0NhY2hlU3RvcmFnZSkgXAogICAgIE0oTmV0d29ya1NjaGVkdWxpbmcpIFwKICAg
ICBNKE5ldHdvcmtTZXNzaW9uKSBcCisgICAgTShQZXJmb3JtYW5jZUxvZ2dpbmcpIFwKICAgICBN
KFBsdWdpbnMpIFwKICAgICBNKFByaW50aW5nKSBcCiAgICAgTShQcm9jZXNzU3VzcGVuc2lvbikg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjI3OTkyYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VTYW1wbGVyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
c3RhdGljIGNvbnN0IGludDY0X3QgbWljcm9zZWNvbmRzUGVyU2Vjb25kID0gMTAwMDAwMDsKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6bWlu
dXRlcyBsb2dnaW5nSW50ZXJ2YWwgeyA2MCB9OworCitQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyOjpQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCkKKyAgICA6IG1fcHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2wpCisgICAgLCBtX2xv
Z2dpbmdUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyOjpsb2dnaW5nVGltZXJGaXJlZCkKK3sKKyAgICBtX2xhc3RDUFVUaW1lID0gbW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgbV9sb2dnaW5nVGltZXIuc3RhcnRSZXBl
YXRpbmcobG9nZ2luZ0ludGVydmFsKTsKK30KKworUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlcjo6flBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoKQoreworfQorCit2b2lkIFBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKGlu
dDY0X3QgY3B1VGltZSwgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nIGFjdGl2aXR5U3RhdGUp
Cit7CisgICAgYXV0byByZXN1bHQgPSBtX2NwdVRpbWVJbkFjdGl2aXR5U3RhdGUuYWRkKGFjdGl2
aXR5U3RhdGUsIGNwdVRpbWUpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gY3B1VGltZTsKK30KKwordm9pZCBQZXJBY3Rpdml0
eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOjpsb2dnaW5nVGltZXJGaXJlZCgpCit7CisgICAgYXV0byog
cGFnZSA9IHBhZ2VGb3JMb2dnaW5nKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIG1fY3B1
VGltZUluQWN0aXZpdHlTdGF0ZS5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZG91YmxlIGN1cnJlbnRDUFVUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7
CisgICAgaW50NjRfdCBjcHVUaW1lRGVsdGEgPSAoY3VycmVudENQVVRpbWUgLSBtX2xhc3RDUFVU
aW1lKSAqIG1pY3Jvc2Vjb25kc1BlclNlY29uZDsKKworICAgIGRvdWJsZSBub25WaXNpYmxlQ1BV
VXNhZ2UgPSBzdGF0aWNfY2FzdDxkb3VibGU+KG1fY3B1VGltZUluQWN0aXZpdHlTdGF0ZS5nZXQo
QWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpOb25WaXNpYmxlKSAqIDEwMC4pIC8gY3B1VGlt
ZURlbHRhOworICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0
aWNMb2dnaW5nS2V5czo6Y3B1VXNhZ2VLZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpub25W
aXNpYmxlU3RhdGVLZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpiYWNrZ3JvdW5kQ1BVVXNh
Z2VUb0RpYWdub3N0aWNMb2dnaW5LZXkobm9uVmlzaWJsZUNQVVVzYWdlKSwgZmFsc2UpOworICAg
IGRvdWJsZSB2aXNpYmxlTm9uQWN0aXZlQ1BVVXNhZ2UgPSBzdGF0aWNfY2FzdDxkb3VibGU+KG1f
Y3B1VGltZUluQWN0aXZpdHlTdGF0ZS5nZXQoQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpW
aXNpYmxlTm9uQWN0aXZlKSAqIDEwMC4pIC8gY3B1VGltZURlbHRhOworICAgIHBhZ2UtPmxvZ0Rp
YWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3B1VXNhZ2VL
ZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlTm9uQWN0aXZlU3RhdGVLZXkoKSwg
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpmb3JlZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dn
aW5LZXkodmlzaWJsZU5vbkFjdGl2ZUNQVVVzYWdlKSwgZmFsc2UpOworICAgIGRvdWJsZSB2aXNp
YmxlQW5kQWN0aXZlQ1BVVXNhZ2UgPSBzdGF0aWNfY2FzdDxkb3VibGU+KG1fY3B1VGltZUluQWN0
aXZpdHlTdGF0ZS5nZXQoQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpWaXNpYmxlQW5kQWN0
aXZlKSAqIDEwMC4pIC8gY3B1VGltZURlbHRhOworICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3B1VXNhZ2VLZXkoKSwgRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlQW5kQWN0aXZlU3RhdGVLZXkoKSwgRGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjpmb3JlZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5LZXkodmlzaWJs
ZUFuZEFjdGl2ZUNQVVVzYWdlKSwgZmFsc2UpOworCisgICAgUkVMRUFTRV9MT0coUGVyZm9ybWFu
Y2VMb2dnaW5nLCAiUGVyIHN0YXRlIFdlYkNvbnRlbnQgcHJvY2Vzc2VzIENQVSB1c2FnZTogW05v
blZpc2libGU6ICUuMWYlJSwgVmlzaWJsZU5vbkFjdGl2ZTogJS4xZiUlLCBWaXNpYmxlQW5kQWN0
aXZlOiAlLjFnJSVdIiwgbm9uVmlzaWJsZUNQVVVzYWdlLCB2aXNpYmxlTm9uQWN0aXZlQ1BVVXNh
Z2UsIHZpc2libGVBbmRBY3RpdmVDUFVVc2FnZSk7CisKKyAgICBtX2NwdVRpbWVJbkFjdGl2aXR5
U3RhdGUuY2xlYXIoKTsKKyAgICBtX2xhc3RDUFVUaW1lID0gY3VycmVudENQVVRpbWU7Cit9CisK
K1dlYlBhZ2VQcm94eSogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6cGFnZUZvckxv
Z2dpbmcoKSBjb25zdAoreworICAgIGZvciAoYXV0byYgd2ViUHJvY2VzcyA6IG1fcHJvY2Vzc1Bv
b2wucHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgaWYgKCF3ZWJQcm9jZXNzLT5wYWdlQ291bnQoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICByZXR1cm4gKndlYlByb2Nlc3MtPnBhZ2Vz
KCkuYmVnaW4oKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BlckFjdGl2
aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZGFiNmY0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJvY2Vzc1Bv
b2w7CisKK2NsYXNzIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIgeworcHVibGljOgor
ICAgIGV4cGxpY2l0IFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoV2ViUHJvY2Vzc1Bv
b2wmKTsKKyAgICB+UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcigpOworCisgICAgdm9p
ZCByZXBvcnRXZWJDb250ZW50Q1BVVGltZShpbnQ2NF90IGNwdVRpbWUsIFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGVGb3JDUFVTYW1wbGluZyk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBsb2dnaW5nVGlt
ZXJGaXJlZCgpOworICAgIFdlYlBhZ2VQcm94eSogcGFnZUZvckxvZ2dpbmcoKSBjb25zdDsKKwor
ICAgIFdlYlByb2Nlc3NQb29sJiBtX3Byb2Nlc3NQb29sOworICAgIFJ1bkxvb3A6OlRpbWVyPFBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+IG1fbG9nZ2luZ1RpbWVyOworICAgIHR5cGVk
ZWYgSGFzaE1hcDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcsIGludDY0X3Qs
IFdURjo6SW50SGFzaDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc+LCBXVEY6
OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFdlYkNvcmU6OkFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGlu
Zz4+IENQVVRpbWVJbkFjdGl2aXR5U3RhdGVNYXA7CisgICAgQ1BVVGltZUluQWN0aXZpdHlTdGF0
ZU1hcCBtX2NwdVRpbWVJbkFjdGl2aXR5U3RhdGU7CisgICAgZG91YmxlIG1fbGFzdENQVVRpbWU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDA2NDFjNzcuLjRmOTY0NDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIK
KyNpbmNsdWRlICJQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgiCiAjaW5jbHVkZSAi
U2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVk
ZSAiVGV4dENoZWNrZXIuaCIKQEAgLTE2OCw2ICsxNjksNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2Vi
UHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
CiAgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUobV9jb25maWd1cmF0aW9uLT5zaG91bGRIYXZlTGVn
YWN5RGF0YVN0b3JlKCkgPyBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShsZWdhY3lXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKS5wdHIoKSA6IG51bGxw
dHIpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9oaWdoUGVyZm9ybWFuY2VHcmFwaGljc1Vz
YWdlU2FtcGxlcihzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VT
YW1wbGVyPigqdGhpcykpCisgICAgLCBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIo
c3RkOjptYWtlX3VuaXF1ZTxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPigqdGhpcykp
CiAjZW5kaWYKICAgICAsIG1fc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKGZhbHNlKQog
ICAgICwgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkKHRydWUpCkBAIC0xNDM1LDQgKzE0Mzcs
MTAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlSGlkZGVuUGFnZVRocm90dGxpbmdBdXRv
SW5jcmVhc2VMaW1pdCgpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTZXRIaWRkZW5QYWdlVGltZXJUaHJvdHRsaW5nSW5jcmVhc2VMaW1pdChsaW1pdEluTWls
bGlzZWNvbmRzKSk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRD
UFVUaW1lKGludDY0X3QgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTdGF0ZSkKK3sKKyAgICBp
ZiAobV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKQorICAgICAgICBtX3BlckFjdGl2
aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXItPnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKGNwdVRpbWUs
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZz4oYWN0aXZp
dHlTdGF0ZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNGVkMGM1OS4uMjk2NjZiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTgxLDYgKzgxLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgSGlnaFBlcmZvcm1h
bmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI7CiBjbGFzcyBVSUdhbWVwYWQ7CitjbGFzcyBQZXJBY3Rp
dml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb247CiBj
bGFzcyBXZWJDb250ZXh0U3VwcGxlbWVudDsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKQEAgLTI1
NCw2ICsyNTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckNhY2hlZENyZWRlbnRpYWxzKCk7
CiAgICAgdm9pZCB0ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3MoKTsKIAorICAgIHZvaWQgcmVwb3J0
V2ViQ29udGVudENQVVRpbWUoaW50NjRfdCBjcHVUaW1lLCB1aW50NjRfdCBhY3Rpdml0eVN0YXRl
KTsKKwogICAgIHZvaWQgYWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0
IFdlYkNlcnRpZmljYXRlSW5mbyosIGNvbnN0IFN0cmluZyYgaG9zdCk7CiAKICAgICBXZWJQcm9j
ZXNzUHJveHkmIGNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQo
KTsgLy8gV2lsbCByZXR1cm4gYW4gZXhpc3Rpbmcgb25lIGlmIGxpbWl0IGlzIG1ldC4KQEAgLTUy
Niw2ICs1MjksNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9hdXRvbWF0
aWNEYXNoU3Vic3RpdHV0aW9uTm90aWZpY2F0aW9uT2JzZXJ2ZXI7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+IG1faGlnaFBlcmZvcm1h
bmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXI+IG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjsK
ICNlbmRpZgogCiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluCmlu
ZGV4IDhlYmE4ZTUuLjg5OTBjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KQEAgLTM0LDQgKzM0LDYgQEAgbWVzc2FnZXMg
LT4gV2ViUHJvY2Vzc1Bvb2wgewogICAgICMgUGx1Zy1pbiBtZXNzYWdlcy4KICAgICB2b2lkIEFk
ZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goU3RyaW5nIHBhZ2VPcmlnaW4sIHVpbnQzMl90IGhh
c2gsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgdm9pZCBQbHVnSW5EaWRSZWNl
aXZlVXNlckludGVyYWN0aW9uKHVpbnQzMl90IGhhc2gsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCisKKyAgICBSZXBvcnRXZWJDb250ZW50Q1BVVGltZShpbnQ2NF90IGNwdVRpbWUsIHVp
bnQ2NF90IGFjdGl2aXR5U3RhdGUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmJjZDc5Ni4uYzM4NjFlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIz
Nyw2ICsxMjM3LDggQEAKIAkJODMxRUVCQkUxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzFFRUJCQzFCRDg1QzQzMDBCQjY0QzMgLyogTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmNwcCAqLzsgfTsKIAkJODMyQUUyNTIxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkFFMjUwMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggKi87IH07CiAJCTgzMkFFMjUzMUJFMkU4Q0Qw
MEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkFFMjUxMUJFMkU4Q0Qw
MEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCAqLzsgfTsK
KwkJODMyRUQxOEIxRTJGRTE1NzAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNh
bXBsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODMyRUQxODkxRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXIuY3BwICovOyB9OworCQk4MzJFRDE4QzFFMkZFMTU3MDA2QkE2NEEgLyogUGVyQWN0aXZpdHlT
dGF0ZUNQVVVzYWdlU2FtcGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMyRUQxOEExRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXIuaCAqLzsgfTsKIAkJODM0QjI1MEYxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzNEIyNTBFMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmggKi87IH07CiAJCTgzNEIyNTEyMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2Fj
aGVTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5o
ICovOyB9OwogCQk4MzYwMzQ5RjFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VU
cmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3Bw
ICovOyB9OwpAQCAtMzM4Nyw2ICszMzg5LDggQEAKIAkJODMxRUVCQkMxQkQ4NUM0MzAwQkI2NEMz
IC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzJBRTI1MDFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMkFFMjUxMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4MzJFRDE4OTFFMkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMyRUQxOEExRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2
aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzRCMjUwRTFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5
c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNEIyNTEwMUE4NDJDODcw
MENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODM2MDM0OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNl
VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI2
Nyw2ICs2MjcxLDggQEAKIAkJCQlCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVu
dC5oICovLAogCQkJCTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNw
cCAqLywKIAkJCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5oICov
LAorCQkJCTgzMkVEMTg5MUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyLmNwcCAqLywKKwkJCQk4MzJFRDE4QTFFMkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oICovLAogCQkJCTM3NzE2QTU5MTk1QjkxMDUwMEVF
OEIxQiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmNwcCAqLywKIAkJCQk4NkY5NTM2MDE4RkY0RkQ0MDAx
REIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbi5oICovLAogCQkJCTg2RTY3QTIyMTkwRjQxMTgwMDAw
NEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmNwcCAqLywKQEAgLTgwNTUsNiArODA2MSw3IEBACiAJ
CQkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBRjI2MzkxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEg
LyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJODMyRUQxOEMxRTJGRTE1NzAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNh
bXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkU0MzY2MThCNkMwODEwMDlDN0E0OCAvKiBV
SURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTFCNTFENTkxN0ZGMDBERDdDNjgg
LyogVUlHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTFBOTFENTUyOTM0MDBERDdD
NjggLyogVUlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTIxOCw2ICs5MjI1
LDcgQEAKIAkJCQk5M0E4OEI0NzFCQzg4Mjk3MDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0QzQTQ4MjFBNUQwMkZBMDA5NjIzQjggLyogQVBJTmF2
aWdhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Y2OUZBMzExNzZEMDE0MDA0NzFBNTIg
LyogQVBJTmF2aWdhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODMyRUQxOEIxRTJG
RTE1NzAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjYzNDAzRjkxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzNzhFMUEzRDE4MUVENkZGMDAzMTAwN0EgLyogQVBJT2JqZWN0
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4NTdGQjYxMkI4MzBFNjAwRURFQjJFIC8qIEFQSU9w
ZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggY2NmMzExMy4uNmY2NGMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAt
NDksNiArNDksNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlNlYXJjaFBvcHVwTWVudS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KQEAgLTI2NSw2ICsyNjYsMTEgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnJ1bk1vZGFsKCkKICAgICBtX3BhZ2UtPnJ1bk1vZGFsKCk7CiB9CiAKK3Zv
aWQgV2ViQ2hyb21lQ2xpZW50OjpyZXBvcnRQcm9jZXNzQ1BVVGltZShpbnQ2NF90IGNwdVRpbWUs
IEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyBhY3Rpdml0eVN0YXRlKQoreworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpSZXBvcnRX
ZWJDb250ZW50Q1BVVGltZShjcHVUaW1lLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYWN0aXZpdHlT
dGF0ZSkpLCAwKTsKK30KKwogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldFRvb2xiYXJzVmlzaWJs
ZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2V0VG9vbGJhcnNBcmVWaXNpYmxlKHRvb2xiYXJzQXJlVmlzaWJsZSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggYzg3MWZkNS4uZmM4Y2Q0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCkBAIC03NCw2ICs3NCw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBjYW5S
dW5Nb2RhbCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcnVuTW9kYWwoKSBvdmVycmlkZTsKKworICAg
IHZvaWQgcmVwb3J0UHJvY2Vzc0NQVVRpbWUoaW50NjRfdCwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZUZvckNQVVNhbXBsaW5nKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIHNldFRvb2xiYXJzVmlz
aWJsZShib29sKSBvdmVycmlkZTsKICAgICBib29sIHRvb2xiYXJzVmlzaWJsZSgpIG92ZXJyaWRl
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299249</attachid>
            <date>2017-01-19 10:26:26 -0800</date>
            <delta_ts>2017-01-19 11:09:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167163-20170119102438.patch</filename>
            <type>text/plain</type>
            <size>55431</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFkMzIxNWJhNmZiNDQ4
OTc3MzI0YmQxZWE2NTI5NTk5NTZlYmM4ZC4uNGJiZDYzZTQ3ZjE3OTBjYzUzNWM5YWM1ZTRkMGU3
YmM3MGZlMzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE3LTAxLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHBlciBhY3Rp
dml0eSBzdGF0ZSBDUFUgdXNhZ2UgcmVwb3J0aW5nIHVzaW5nIGRpYWdub3N0aWMgbG9nZ2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3MTYzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDA1ODM0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGVyIGFjdGl2aXR5IHN0YXRlIENQ
VSB1c2FnZSByZXBvcnRpbmcgdXNpbmcgZGlhZ25vc3RpYyBsb2dnaW5nLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQWN0aXZp
dHlTdGF0ZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFn
ZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpub25WaXNpYmxlU3RhdGVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlTm9uQWN0aXZlU3RhdGVLZXkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlQW5kQWN0aXZlU3RhdGVLZXkp
OgorICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpmb3JlZ3JvdW5kQ1BV
VXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5LZXkpOgorICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpiYWNrZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5LZXkpOgor
ICAgICAgICAqIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg6CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVGFiUGFnZUNocm9tZUNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6On5QYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6aXNPbmx5VGFiUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRBY3Rpdml0
eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldElzVmlzaWJsZUludGVybmFsKToK
KyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFjdGl2aXR5
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNUYWJQYWdlKToKKyAgICAgICAgKiBw
YWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6YWN0
aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNl
TW9uaXRvcjo6UGVyZm9ybWFuY2VNb25pdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1h
bmNlTW9uaXRvcjo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
UGVyZm9ybWFuY2VNb25pdG9yOjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
cmZvcm1hbmNlTW9uaXRvcjo6YWN0aXZpdHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlUG9zdExvYWRDUFVVc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQ
VVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGb3JDUFVT
YW1wbGluZ0FjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VNb25p
dG9yOjptZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2aXR5U3RhdGUpOgorICAgICAgICAqIHBhZ2UvUGVy
Zm9ybWFuY2VNb25pdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZp
dHlTdGF0ZS5oLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjppc1Bvc3RMb2FkQ1BVVXNh
Z2VNZWFzdXJlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmlzUG9z
dEJhY2tncm91bmRpbmdDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXR0aW5nczo6aXNQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJs
ZWQpOgorCiAyMDE3LTAxLTE5ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp0b3BPcmlnaW4oKSBzaG91bGQgcmV0dXJu
IGEgcmVmZXJlbmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDlhY2NmNThmMjg1NmNkYWU5MzY3NDU0OGU2YjRl
YTA0ZTRhNTgxNzguLjM3ZDE3MDZiMmQyN2IyNDBjMGQzMjg4MGMwYTg4ZDgzMWEzMDkyODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNy0wMS0xOSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBwZXIgYWN0aXZpdHkgc3RhdGUgQ1BV
IHVzYWdlIHJlcG9ydGluZyB1c2luZyBkaWFnbm9zdGljIGxvZ2dpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzE2MworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzAwNTgzNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IHBlciBhY3Rpdml0eSBzdGF0ZSBDUFUgdXNhZ2UgcmVwb3J0
aW5nIHVzaW5nIGRpYWdub3N0aWMgbG9nZ2luZy4KKworICAgICAgICAqIFBsYXRmb3JtL0xvZ2dp
bmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyOjpQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKToKKyAgICAgICAgKFdlYktp
dDo6UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6flBlckFjdGl2aXR5U3RhdGVDUFVV
c2FnZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyOjpyZXBvcnRXZWJDb250ZW50Q1BVVGltZSk6CisgICAgICAgIChXZWJLaXQ6OmxvZ2dp
bmdLZXlGb3JBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6bG9nZ2luZ0tleUZvckNQ
VVVzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxl
cjo6bG9nZ2luZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpQZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VTYW1wbGVyOjpwYWdlRm9yTG9nZ2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL1Bl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGFnZS9BY3Rpdml0eVN0YXRlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29s
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVU
aW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpyZXBvcnRQcm9jZXNzQ1BVVGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKwogMjAxNy0wMS0xOSAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUHJvdmlkZSBBUEkg
dG8gc2V0IHByb3h5IHNldHRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjI0YjY3YzMwODJlNjc1YzQ3ZTgwZDEyMTgwMmE0
MDAxNmI3NGMxMy4uOWE0MGRiODIzOTlmYjBiZjcwZDUyYjRhYzYzZjkwYTg4Zjk3YmRhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMzA2NCw2ICszMDY0LDggQEAKIAkJODNGMTIwNkIxQjhDMTA0NzAwRDc1RjYzIC8qIEpTTm9k
ZUZpbHRlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4M0YxMjA2QTFCOEMxMDM2MDBENzVGNjMgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNw
cCAqLzsgfTsKIAkJODNGRTdDQTcxREE5RjFBNzAwMzcyMzdDIC8qIFVJRXZlbnRJbml0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZFN0NBNDFEQTlG
MTY2MDAzNzIzN0MgLyogVUlFdmVudEluaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0ZFN0NBODFEQTlGMUI2MDAzNzIzN0MgLyogRXZlbnRN
b2RpZmllckluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzRkU3Q0EzMURBOUYxNjUwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTgzRkU5MDI3MUUz
MDdDMzAwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkU5MDI2MUUzMDdDMUMwMDNFOTE5OSAvKiBQ
ZXJmb3JtYW5jZU1vbml0b3IuaCAqLzsgfTsKKwkJODNGRTkwMjgxRTMwN0MzMzAwM0U5MTk5IC8q
IFBlcmZvcm1hbmNlTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0ZFOTAyNTFFMzA3QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25p
dG9yLmNwcCAqLzsgfTsKIAkJODQxOUQyQTcxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRl
U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NDE5RDJBNDEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW0uaCAqLzsgfTsKIAkJ
ODQxOUQyQTgxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDE5RDJBNTEy
MEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcCAqLzsgfTsKIAkJ
ODQxOUQyQTkxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQxOUQyQTYxMjBE
OTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oICovOyB9OwpAQCAtMTA1
OTYsNiArMTA1OTgsOCBAQAogCQk4M0ZFN0NBNDFEQTlGMTY2MDAzNzIzN0MgLyogVUlFdmVudElu
aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVUlFdmVudEluaXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNGRTdDQTUxREE5RjE2NjAwMzcyMzdDIC8qIFVJ
RXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVSUV2ZW50SW5pdC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRkU3Q0E2MURBOUYxNjYwMDM3MjM3QyAvKiBF
dmVudE1vZGlmaWVySW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnRNb2RpZmll
ckluaXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0ZFOTAyNTFFMzA3QzFD
MDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBlcmZvcm1hbmNlTW9uaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzRkU5MDI2MUUzMDdDMUMwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VNb25pdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MTlEMkE0MTIwRDkyRDAwMDE0MUY4
RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdQYXRoQnl0ZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDE5
RDJBNTEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MTlEMkE2MTIwRDkyRDAwMDE0
MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODAxOCw2ICsxODAyMiw4IEBACiAJCQkJODZCRTMzRkMxNTA1OENCMjAw
Q0UwRkQ4IC8qIFBlcmZvcm1hbmNlRW50cnkuaWRsICovLAogCQkJCUFENUEwQzIxMURFQ0ExMDEw
MDcwNzA1NCAvKiBQZXJmb3JtYW5jZUxvZ2dpbmcuY3BwICovLAogCQkJCUFENUEwQzIwMURFQ0Ew
QjUwMDcwNzA1NCAvKiBQZXJmb3JtYW5jZUxvZ2dpbmcuaCAqLywKKwkJCQk4M0ZFOTAyNTFFMzA3
QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCAqLywKKwkJCQk4M0ZFOTAyNjFF
MzA3QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmggKi8sCiAJCQkJOEFGNEU1NTIx
MURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgKi8sCiAJCQkJOEFG
NEU1NTMxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oICovLAogCQkJ
CThBRjRFNTU0MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaWRsICov
LApAQCAtMjY3MjAsNiArMjY3MjYsNyBAQAogCQkJCTg1MDMxQjQ0MEE0NEVGQzcwMEY5OTJFMCAv
KiBLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUwMEQ1OTE4MkRBQzhEMDAw
ODdERDcgLyogS2V5ZWRDb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E2M0M1MUI3NDMx
OEYwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNGRTkw
MjcxRTMwN0MzMDAwM0U5MTk5IC8qIFBlcmZvcm1hbmNlTW9uaXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE3QTYzQzYxQjc0MzE5MjAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTEzQjNENzExNEIxNjY2MDAxQzQyOUIgLyogS2V5RXZlbnRDb2NvYS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjY1NTQxMzkxNDg5ODExQzAwMERGQzVEIC8qIEtleUV2ZW50
Q29kZXNJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMzExMjUsNiArMzExMzIsNyBAQAogCQkJCTA3
M0JFMzRFMTdEMTgwQjIwMDJCRDQzMSAvKiBSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTBFMTdEMTRDRUUwMDQyMEFBMSAvKiBSVENT
dGF0c1JlcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDkxMDE3RDE0Q0VFMDA0MjBB
QTEgLyogUlRDU3RhdHNSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4M0ZFOTAyODFF
MzA3QzMzMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVFMkM0MzY3MUJDRUUzNzcwMDAxRTJCQyAvKiBSVENUcmFja0V2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTU4MjRBQkEyMUFFODExMTYwMDkwNzRCNyAvKiBSdWJ5RWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1ODI0QUJBNjFBRTgxMzg0MDA5MDc0QjcgLyogUnVieVRleHRF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9BY3Rpdml0eVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaApp
bmRleCBiNmVkNzgyYzk4NWFkYTVmN2U2M2JmMmRlMDJkZTllY2Q4NjUyYWI2Li4wZTUzNGNjNjZj
MGNhMzU5MGIzMDdiODk5NTUwYTNiZjQyYmI3MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0FjdGl2aXR5U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5
U3RhdGUuaApAQCAtNDUsNCArNDUsMTAgQEAgc3RydWN0IEFjdGl2aXR5U3RhdGUgewogICAgIHN0
YXRpYyBjb25zdCBGbGFncyBBbGxGbGFncyA9IFdpbmRvd0lzQWN0aXZlIHwgSXNGb2N1c2VkIHwg
SXNWaXNpYmxlIHwgSXNWaXNpYmxlT3JPY2NsdWRlZCB8IElzSW5XaW5kb3cgfCBJc1Zpc3VhbGx5
SWRsZSB8IElzQXVkaWJsZSB8IElzTG9hZGluZzsKIH07CiAKK2VudW0gY2xhc3MgQWN0aXZpdHlT
dGF0ZUZvckNQVVNhbXBsaW5nIHsKKyAgICBOb25WaXNpYmxlLAorICAgIFZpc2libGVOb25BY3Rp
dmUsCisgICAgVmlzaWJsZUFuZEFjdGl2ZQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggMzMxZGY0YWM3ZjBmN2Y4MWFmZmZjNzg4
YmVjMThhN2E1ZTgxYzhmZi4uMmM4OWI2Y2JhNTA2ODBiOTcyZGM1NWZjNGIyNGM0ODkwZmFlYjgy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC00NTUsNiArNDU1LDggQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3Rz
KCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UHJvY2Vzc0NQVVRpbWUoaW50NjRfdCwg
QWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNocm9tZUNsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmNwcAppbmRleCBlMTZmNTlkZTBmYmQ3MWE0MThiMjY5NjkzNDk1YjRm
NDIzNGU4NTg5Li44N2NkOTgzZTEyMDRhNzRhMDA3ZTJjNzJjYzc5ODU1MDNlNTJkMjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwCkBAIC0xNjMs
NiArMTYzLDExIEBAIFN0cmluZyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5vU3RvcmVLZXkoKQog
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vU3RvcmUiKTsKIH0KIAorU3RyaW5nIERpYWdub3N0
aWNMb2dnaW5nS2V5czo6bm9uVmlzaWJsZVN0YXRlS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJub25WaXNpYmxlU3RhdGUiKTsKK30KKwogU3RyaW5nIERpYWdub3N0aWNMb2dnaW5n
S2V5czo6bm90SW5NZW1vcnlDYWNoZUtleSgpCiB7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
bm90SW5NZW1vcnlDYWNoZSIpOwpAQCAtNTk4LDYgKzYwMywxNiBAQCBTdHJpbmcgRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjp2aWRlb0tleSgpCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidmlkZW8i
KTsKIH0KIAorU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6dmlzaWJsZU5vbkFjdGl2ZVN0
YXRlS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ2aXNpYmxlTm9uQWN0aXZlU3Rh
dGUiKTsKK30KKworU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6dmlzaWJsZUFuZEFjdGl2
ZVN0YXRlS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ2aXNpYmxlQW5kQWN0aXZl
U3RhdGUiKTsKK30KKwogU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6d2FzdGVkU3BlY3Vs
YXRpdmVXYXJtdXBXaXRoUmV2YWxpZGF0aW9uS2V5KCkKIHsKICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJ3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb24iKTsKQEAgLTY1OCw1
ICs2NzMsMzcgQEAgU3RyaW5nIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6d2ViR0xL
ZXkoKQogICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIndlYkdMIik7CiB9CiAKK1N0cmluZyBEaWFn
bm9zdGljTG9nZ2luZ0tleXM6OmZvcmVncm91bmRDUFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dpbktl
eShkb3VibGUgY3B1VXNhZ2UpCit7CisgICAgaWYgKGNwdVVzYWdlIDwgMTApCisgICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoIkJlbG93MTAiKTsKKyAgICBpZiAoY3B1VXNhZ2UgPCAyMCkKKyAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMTB0bzIwIik7CisgICAgaWYgKGNwdVVzYWdlIDwg
NDApCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjIwdG80MCIpOworICAgIGlmIChjcHVV
c2FnZSA8IDYwKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI0MHRvNjAiKTsKKyAgICBp
ZiAoY3B1VXNhZ2UgPCA4MCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiNjB0bzgwIik7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib3ZlcjgwIik7Cit9CisKK1N0cmluZyBEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OmJhY2tncm91bmRDUFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dpbktleShk
b3VibGUgY3B1VXNhZ2UpCit7CisgICAgaWYgKGNwdVVzYWdlIDwgMSkKKyAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiQmVsb3cxIik7CisgICAgaWYgKGNwdVVzYWdlIDwgNSkKKyAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMXRvNSIpOworICAgIGlmIChjcHVVc2FnZSA8IDEwKQorICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI1dG8xMCIpOworICAgIGlmIChjcHVVc2FnZSA8IDMw
KQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIxMHRvMzAiKTsKKyAgICBpZiAoY3B1VXNh
Z2UgPCA1MCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMzB0bzUwIik7CisgICAgaWYg
KGNwdVVzYWdlIDwgNzApCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjUwdG83MCIpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm92ZXI3MCIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dp
bmdLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCmlu
ZGV4IDZiNmEyZjAxYWM4MzcxNmM2ZTFhNGZhNjllOWViMWI0YTliMmRkODEuLmI4MmQ3YTdjMzNi
MDA3YWM4NWJhOTYyYmFjNGEwZDYxNTc5YWYxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
aWFnbm9zdGljTG9nZ2luZ0tleXMuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFN0cmluZyBjYWNoZWRSZXNvdXJjZVJldmFsaWRhdGlvbktleSgpOwogICAgIHN0YXRpYyBT
dHJpbmcgY2FuQ2FjaGVLZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIGNhbm5vdFN1c3BlbmRBY3Rp
dmVET01PYmplY3RzS2V5KCk7Ci0gICAgc3RhdGljIFN0cmluZyBjcHVVc2FnZUtleSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgY3B1VXNhZ2VLZXkoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZGVsdGFLZXkoKTsKICAgICBzdGF0aWMgU3Ry
aW5nIGRlbmllZEJ5Q2xpZW50S2V5KCk7CkBAIC04OCw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgU3RyaW5nIG5vRG9jdW1lbnRMb2FkZXJLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU3RyaW5nIG5vTG9uZ2VySW5DYWNoZUtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgbm9T
dG9yZUtleSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgbm9uVmlzaWJsZVN0
YXRlS2V5KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBub3RIVFRQRmFtaWx5
S2V5KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBub3RJbkNhY2hlS2V5KCk7
CiAgICAgc3RhdGljIFN0cmluZyBub3RJbk1lbW9yeUNhY2hlS2V5KCk7CkBAIC0xNTAsMTIgKzE1
MSwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB1c2VyS2V5
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB2YXJ5aW5nSGVhZGVyTWlzbWF0
Y2hLZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIHZpZGVvS2V5KCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFN0cmluZyB2aXNpYmxlTm9uQWN0aXZlU3RhdGVLZXkoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgU3RyaW5nIHZpc2libGVBbmRBY3RpdmVTdGF0ZUtleSgpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgd2FzdGVkU3BlY3VsYXRpdmVXYXJtdXBXaXRoUmV2
YWxpZGF0aW9uS2V5KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB3YXN0ZWRT
cGVjdWxhdGl2ZVdhcm11cFdpdGhvdXRSZXZhbGlkYXRpb25LZXkoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgU3RyaW5nIHdlYkdMS2V5KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFN0cmluZyB3ZWJWaWV3S2V5KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB6
b29tZWRLZXkoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZm9yZWdyb3Vu
ZENQVVVzYWdlVG9EaWFnbm9zdGljTG9nZ2luS2V5KGRvdWJsZSBjcHVVc2FnZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBiYWNrZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNM
b2dnaW5LZXkoZG91YmxlIGNwdVVzYWdlKTsKKwogICAgIC8vIFN1Y2Nlc3MgLyBGYWlsdXJlIGtl
eXMuCiAgICAgc3RhdGljIFN0cmluZyBzdWNjZXNzS2V5KCk7CiAgICAgc3RhdGljIFN0cmluZyBm
YWlsdXJlS2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA5NTFlMjc0YjdmMGEwZDBiZDAyODky
ZjNiNjllYjE0NWE2MTdiZDkxLi4xMzlhNjhiNTYyNWM1MGY3ZjBjYjQyYzE1YzI1Mzk5MzRiNzFh
MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJQYWdl
RGVidWdnYWJsZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBhZ2VPdmVy
bGF5Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBlcmZvcm1hbmNlTW9uaXRvci5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlBsdWdJbkNsaWVu
dC5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKQEAgLTEyNywxMyArMTI4LDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5u
ZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwg
Y2hhbm5lbCwgIiVwIC0gUGFnZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCi0KIHN0YXRp
YyBIYXNoU2V0PFBhZ2UqPiogYWxsUGFnZXM7CitzdGF0aWMgdW5zaWduZWQgdGFiUGFnZUNvdW50
IHsgMCB9OwogCi1zdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgY3B1VXNhZ2VNZWFz
dXJlbWVudERlbGF5IHsgNSB9Owotc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIHBv
c3RMb2FkQ1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0aW9uIHsgMTAgfTsKLXN0YXRpYyBjb25zdCBz
dGQ6OmNocm9ubzo6bWludXRlcyBiYWNrZ3JvdW5kQ1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0aW9u
IHsgNSB9Oworc3RhdGljIGlubGluZSBib29sIGlzVGFiUGFnZUNocm9tZUNsaWVudChDaHJvbWVD
bGllbnQmIGNocm9tZUNsaWVudCkKK3sKKyAgICByZXR1cm4gIWNocm9tZUNsaWVudC5pc0VtcHR5
Q2hyb21lQ2xpZW50KCkgJiYgIWNocm9tZUNsaWVudC5pc1NWR0ltYWdlQ2hyb21lQ2xpZW50KCk7
Cit9CiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRl
ciwgcGFnZUNvdW50ZXIsICgiUGFnZSIpKTsKIApAQCAtMjUzLDggKzI1NCw4IEBAIFBhZ2U6OlBh
Z2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fdmlzaXRl
ZExpbmtTdG9yZSgqV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi52aXNpdGVkTGlua1N0b3JlKSkK
ICAgICAsIG1fc2Vzc2lvbklEKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogICAgICwg
bV9pc0Nsb3NpbmcoZmFsc2UpCi0gICAgLCBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIoKnRo
aXMsICZQYWdlOjptZWFzdXJlUG9zdExvYWRDUFVVc2FnZSkKLSAgICAsIG1fcG9zdEJhY2tncm91
bmRpbmdDUFVVc2FnZVRpbWVyKCp0aGlzLCAmUGFnZTo6bWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5n
Q1BVVXNhZ2UpCisgICAgLCBtX2lzVGFiUGFnZShpc1RhYlBhZ2VDaHJvbWVDbGllbnQoY2hyb21l
KCkuY2xpZW50KCkpKQorICAgICwgbV9wZXJmb3JtYW5jZU1vbml0b3IoaXNUYWJQYWdlKCkgPyBz
dGQ6Om1ha2VfdW5pcXVlPFBlcmZvcm1hbmNlTW9uaXRvcj4oKnRoaXMpIDogbnVsbHB0cikKIHsK
ICAgICB1cGRhdGVUaW1lclRocm90dGxpbmdTdGF0ZSgpOwogCkBAIC0yNzEsNiArMjcyLDggQEAg
UGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogCiAgICAg
QVNTRVJUKCFhbGxQYWdlcy0+Y29udGFpbnModGhpcykpOwogICAgIGFsbFBhZ2VzLT5hZGQodGhp
cyk7CisgICAgaWYgKGlzVGFiUGFnZSgpKQorICAgICAgICArK3RhYlBhZ2VDb3VudDsKIAogI2lm
bmRlZiBOREVCVUcKICAgICBwYWdlQ291bnRlci5pbmNyZW1lbnQoKTsKQEAgLTI5NSw2ICsyOTgs
OCBAQCBQYWdlOjp+UGFnZSgpCiAgICAgbV9tYWluRnJhbWUtPnNldFZpZXcobnVsbHB0cik7CiAg
ICAgc2V0R3JvdXBOYW1lKFN0cmluZygpKTsKICAgICBhbGxQYWdlcy0+cmVtb3ZlKHRoaXMpOwor
ICAgIGlmIChpc1RhYlBhZ2UoKSkKKyAgICAgICAgLS10YWJQYWdlQ291bnQ7CiAgICAgCiAgICAg
bV9zZXR0aW5ncy0+cGFnZURlc3Ryb3llZCgpOwogCkBAIC05MzQsOTEgKzkzOSwyMSBAQCB2b2lk
IFBhZ2U6OnNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbiB1c2VySW50ZQogCiB2b2lkIFBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkKIHsKLSAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICBtX3Bvc3RQ
YWdlTG9hZENQVVVzYWdlVGltZXIuc3RvcCgpOworICAgIGlmIChtX3BlcmZvcm1hbmNlTW9uaXRv
cikKKyAgICAgICAgbV9wZXJmb3JtYW5jZU1vbml0b3ItPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCk7CiB9CiAKIHZvaWQgUGFnZTo6ZGlkRmluaXNoTG9hZCgpCiB7CiAgICAgcmVzZXRSZWxldmFu
dFBhaW50ZWRPYmplY3RDb3VudGVyKCk7CiAKLSAgICAvLyBPbmx5IGRvIHBvc3QtbG9hZCBDUFUg
dXNhZ2UgbWVhc3VyZW1lbnQgaWYgdGhlcmUgaXMgYSBzaW5nbGUgUGFnZSBpbiB0aGUgcHJvY2Vz
cyBpbiBvcmRlciB0byByZWR1Y2Ugbm9pc2UuCi0gICAgaWYgKFNldHRpbmdzOjppc1Bvc3RMb2Fk
Q1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKSAmJiBhbGxQYWdlcy0+c2l6ZSgpID09IDEpIHsK
LSAgICAgICAgbV9wb3N0TG9hZENQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIG1fcG9z
dFBhZ2VMb2FkQ1BVVXNhZ2VUaW1lci5zdGFydE9uZVNob3QoY3B1VXNhZ2VNZWFzdXJlbWVudERl
bGF5KTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZm9yZWdyb3VuZENQVVVzYWdlVG9EaWFn
bm9zdGljTG9nZ2luS2V5KGRvdWJsZSBjcHVVc2FnZSkKLXsKLSAgICBpZiAoY3B1VXNhZ2UgPCAx
MCkKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQmVsb3cxMCIpOwotICAgIGlmIChjcHVV
c2FnZSA8IDIwKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIxMHRvMjAiKTsKLSAgICBp
ZiAoY3B1VXNhZ2UgPCA0MCkKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMjB0bzQwIik7
Ci0gICAgaWYgKGNwdVVzYWdlIDwgNjApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjQw
dG82MCIpOwotICAgIGlmIChjcHVVc2FnZSA8IDgwKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCI2MHRvODAiKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvdmVyODAiKTsKLX0KLQot
dm9pZCBQYWdlOjptZWFzdXJlUG9zdExvYWRDUFVVc2FnZSgpCi17Ci0gICAgaWYgKGFsbFBhZ2Vz
LT5zaXplKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3Bvc3RMb2FkQ1BV
VGltZSkgewotICAgICAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IGdldENQVVRpbWUoKTsKLSAgICAg
ICAgaWYgKG1fcG9zdExvYWRDUFVUaW1lKQotICAgICAgICAgICAgbV9wb3N0UGFnZUxvYWRDUFVV
c2FnZVRpbWVyLnN0YXJ0T25lU2hvdChwb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnREdXJhdGlv
bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3RkOjpvcHRpb25hbDxDUFVUaW1lPiBj
cHVUaW1lID0gZ2V0Q1BVVGltZSgpOwotICAgIGlmICghY3B1VGltZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZG91YmxlIGNwdVVzYWdlID0gY3B1VGltZS52YWx1ZSgpLnBlcmNlbnRhZ2VDUFVV
c2FnZVNpbmNlKCptX3Bvc3RMb2FkQ1BVVGltZSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQZXJmb3JtYW5jZUxvZ2dpbmcsICJtZWFzdXJlUG9zdExvYWRDUFVVc2FnZTogUHJvY2VzcyB3
YXMgdXNpbmcgJS4xZiUlIHBlcmNlbnQgQ1BVIGFmdGVyIHRoZSBwYWdlIGxvYWQuIiwgY3B1VXNh
Z2UpOwotICAgIGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpwb3N0UGFnZUxvYWRLZXkoKSwgRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjpjcHVVc2FnZUtleSgpLCBmb3JlZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdu
b3N0aWNMb2dnaW5LZXkoY3B1VXNhZ2UpLCBTaG91bGRTYW1wbGU6Ok5vKTsKKyAgICBpZiAobV9w
ZXJmb3JtYW5jZU1vbml0b3IpCisgICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5kaWRGaW5p
c2hMb2FkKCk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgYmFja2dyb3VuZENQVVVzYWdlVG9EaWFnbm9z
dGljTG9nZ2luS2V5KGRvdWJsZSBjcHVVc2FnZSkKK2Jvb2wgUGFnZTo6aXNPbmx5VGFiUGFnZSgp
IGNvbnN0CiB7Ci0gICAgaWYgKGNwdVVzYWdlIDwgMSkKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiQmVsb3cxIik7Ci0gICAgaWYgKGNwdVVzYWdlIDwgNSkKLSAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiMXRvNSIpOwotICAgIGlmIChjcHVVc2FnZSA8IDEwKQotICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCI1dG8xMCIpOwotICAgIGlmIChjcHVVc2FnZSA8IDMwKQotICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCIxMHRvMzAiKTsKLSAgICBpZiAoY3B1VXNhZ2UgPCA1MCkK
LSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMzB0bzUwIik7Ci0gICAgaWYgKGNwdVVzYWdl
IDwgNzApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjUwdG83MCIpOwotICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIm92ZXI3MCIpOwotfQotCi12b2lkIFBhZ2U6Om1lYXN1cmVQb3N0QmFj
a2dyb3VuZGluZ0NQVVVzYWdlKCkKLXsKLSAgICBpZiAoYWxsUGFnZXMtPnNpemUoKSAhPSAxKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lKSB7
Ci0gICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lID0gZ2V0Q1BVVGltZSgpOwotICAg
ICAgICBpZiAobV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWUpCi0gICAgICAgICAgICBtX3Bvc3RC
YWNrZ3JvdW5kaW5nQ1BVVXNhZ2VUaW1lci5zdGFydE9uZVNob3QoYmFja2dyb3VuZENQVVVzYWdl
TWVhc3VyZW1lbnREdXJhdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3RkOjpv
cHRpb25hbDxDUFVUaW1lPiBjcHVUaW1lID0gZ2V0Q1BVVGltZSgpOwotICAgIGlmICghY3B1VGlt
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG91YmxlIGNwdVVzYWdlID0gY3B1VGltZS52YWx1
ZSgpLnBlcmNlbnRhZ2VDUFVVc2FnZVNpbmNlKCptX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSk7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQZXJmb3JtYW5jZUxvZ2dpbmcsICJtZWFzdXJl
UG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZTogUHJvY2VzcyB3YXMgdXNpbmcgJS4xZiUlIHBlcmNl
bnQgQ1BVIGFmdGVyIGJlY29taW5nIG5vbiB2aXNpYmxlLiIsIGNwdVVzYWdlKTsKLSAgICBkaWFn
bm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdu
b3N0aWNMb2dnaW5nS2V5czo6cG9zdFBhZ2VCYWNrZ3JvdW5kaW5nS2V5KCksIERpYWdub3N0aWNM
b2dnaW5nS2V5czo6Y3B1VXNhZ2VLZXkoKSwgYmFja2dyb3VuZENQVVVzYWdlVG9EaWFnbm9zdGlj
TG9nZ2luS2V5KGNwdVVzYWdlKSwgU2hvdWxkU2FtcGxlOjpObyk7CisgICAgcmV0dXJuIGlzVGFi
UGFnZSgpICYmIHRhYlBhZ2VDb3VudCA9PSAxOwogfQogCiB2b2lkIFBhZ2U6OnNldFRvcENvbnRl
bnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCkBAIC0xNTcwLDYgKzE1MDUsOSBAQCB2b2lkIFBh
Z2U6OnNldEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSkK
IAogICAgIGlmICh3YXNWaXNpYmxlQW5kQWN0aXZlICE9IGlzVmlzaWJsZUFuZEFjdGl2ZSgpKQog
ICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZU5vd1BsYXlpbmdJbmZv
SWZOZWNlc3NhcnkoKTsKKworICAgIGlmIChtX3BlcmZvcm1hbmNlTW9uaXRvcikKKyAgICAgICAg
bV9wZXJmb3JtYW5jZU1vbml0b3ItPmFjdGl2aXR5U3RhdGVDaGFuZ2VkKG9sZEFjdGl2aXR5U3Rh
dGUsIGFjdGl2aXR5U3RhdGUpOwogfQogCiBib29sIFBhZ2U6OmlzVmlzaWJsZUFuZEFjdGl2ZSgp
IGNvbnN0CkBAIC0xNjI2LDEzICsxNTY0LDYgQEAgdm9pZCBQYWdlOjpzZXRJc1Zpc2libGVJbnRl
cm5hbChib29sIGlzVmlzaWJsZSkKICAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1haW5G
cmFtZSgpLnZpZXcoKSkKICAgICAgICAgICAgIHZpZXctPmhpZGUoKTsKICAgICB9Ci0KLSAgICAv
LyBNZWFzdXJlIENQVSB1c2FnZSBvZiBwYWdlcyB3aGVuIHRoZXkgYXJlIG5vIGxvbmdlciB2aXNp
YmxlLgotICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lID0gc3RkOjpudWxsb3B0OwotICAg
IGlmIChpc1Zpc2libGUpCi0gICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRpbWVy
LnN0b3AoKTsKLSAgICBlbHNlIGlmIChTZXR0aW5nczo6aXNQb3N0QmFja2dyb3VuZGluZ0NQVVVz
YWdlTWVhc3VyZW1lbnRFbmFibGVkKCkgJiYgYWxsUGFnZXMtPnNpemUoKSA9PSAxKQotICAgICAg
ICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VUaW1lci5zdGFydE9uZVNob3QoY3B1VXNhZ2VN
ZWFzdXJlbWVudERlbGF5KTsKIH0KIAogdm9pZCBQYWdlOjpzZXRJc1ByZXJlbmRlcigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCmluZGV4IDAyYjUwNDRmMzE1ODEzOTNkNGFhZTE0ZWY5YzA1ZGYwZmY3N2FkMmMuLjZh
OGVkY2EzMGNjNTUzZmI4NmQ3OWU2MDdmMDIwZDQ5YjZlYzc3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBA
IC0yMSw3ICsyMSw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUu
aCIKLSNpbmNsdWRlICJDUFVUaW1lLmgiCiAjaW5jbHVkZSAiRmluZE9wdGlvbnMuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWlsZXN0b25lcy5oIgpA
QCAtMTA1LDYgKzEwNCw3IEBAIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogY2xhc3MgUGFnZUNv
bnNvbGVDbGllbnQ7CiBjbGFzcyBQYWdlRGVidWdnYWJsZTsKIGNsYXNzIFBhZ2VHcm91cDsKK2Ns
YXNzIFBlcmZvcm1hbmNlTW9uaXRvcjsKIGNsYXNzIFBsdWdJbkNsaWVudDsKIGNsYXNzIFBsdWdp
bkRhdGE7CiBjbGFzcyBQbHVnaW5JbmZvUHJvdmlkZXI7CkBAIC0zNTcsNiArMzU3LDggQEAgcHVi
bGljOgogCiAgICAgLy8gTm90aWZpY2F0aW9ucyB3aGVuIHRoZSBQYWdlIHN0YXJ0cyBhbmQgc3Rv
cHMgYmVpbmcgcHJlc2VudGVkIHZpYSBhIG5hdGl2ZSB3aW5kb3cuCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzKTsKKyAgICBBY3Rp
dml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0
eVN0YXRlOyB9CisKICAgICBib29sIGlzVmlzaWJsZUFuZEFjdGl2ZSgpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNWaXNpYmxlKGJvb2wpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0SXNQcmVyZW5kZXIoKTsKQEAgLTU1OSw2ICs1NjEsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShzdGQ6Om9wdGlvbmFsPEV2
ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiB0aHJvdHRsaW5nKSB7IG1fZXZlbnRUaHJvdHRsaW5nQmVo
YXZpb3JPdmVycmlkZSA9IHRocm90dGxpbmc7IH0KIAogICAgIFdlYkdMU3RhdGVUcmFja2VyKiB3
ZWJHTFN0YXRlVHJhY2tlcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViR0xTdGF0ZVRyYWNrZXIuZ2V0
KCk7IH0KKworICAgIGJvb2wgaXNPbmx5VGFiUGFnZSgpIGNvbnN0OworICAgIGJvb2wgaXNUYWJQ
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1RhYlBhZ2U7IH0KKwogcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGluaXRHcm91cCgpOwogCkBAIC01NzIsOSArNTc4LDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNoZWNrU3ViZnJhbWVDb3VudENvbnNpc3RlbmN5KCkgY29uc3Q7CiAjZW5k
aWYKIAotICAgIHZvaWQgbWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UoKTsKLSAgICB2b2lkIG1lYXN1
cmVQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlKCk7Ci0KICAgICBlbnVtIFNob3VsZEhpZ2hsaWdo
dE1hdGNoZXMgeyBEb05vdEhpZ2hsaWdodE1hdGNoZXMsIEhpZ2hsaWdodE1hdGNoZXMgfTsKICAg
ICBlbnVtIFNob3VsZE1hcmtNYXRjaGVzIHsgRG9Ob3RNYXJrTWF0Y2hlcywgTWFya01hdGNoZXMg
fTsKIApAQCAtNzU2LDE1ICs3NTksMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvd0FsbFBs
dWdpbnMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9jb250cm9sbGVkQnlBdXRvbWF0aW9uIHsgZmFs
c2UgfTsKICAgICBib29sIG1fcmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9pc1RhYlBhZ2U7CiAgICAgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBtX3Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24geyBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
OjpMVFIgfTsKICAgICAKICAgICAvLyBGb3IgdGVzdGluZy4KICAgICBzdGQ6Om9wdGlvbmFsPEV2
ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBtX2V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGU7
CiAKLSAgICBUaW1lciBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXI7Ci0gICAgc3RkOjpvcHRp
b25hbDxDUFVUaW1lPiBtX3Bvc3RMb2FkQ1BVVGltZTsKLSAgICBUaW1lciBtX3Bvc3RCYWNrZ3Jv
dW5kaW5nQ1BVVXNhZ2VUaW1lcjsKLSAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IG1fcG9zdEJh
Y2tncm91bmRpbmdDUFVUaW1lOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQZXJmb3JtYW5jZU1vbml0
b3I+IG1fcGVyZm9ybWFuY2VNb25pdG9yOwogfTsKIAogaW5saW5lIFBhZ2VHcm91cCYgUGFnZTo6
Z3JvdXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4NmIyM2U3OWUzMzdjZDViOTQ4YzI5YmY2ZjgxYWU5NTJkZTAzMTkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHAKQEAg
LTAsMCArMSwxOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUGVyZm9ybWFuY2VNb25pdG9yLmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIgor
I2luY2x1ZGUgIkRpYWdub3N0aWNMb2dnaW5nS2V5cy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAu
Li4pIFJFTEVBU0VfTE9HX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hh
bm5lbCwgIiVwIC0gUGVyZm9ybWFuY2VNb25pdG9yOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1Nf
XykKKworc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIGNwdVVzYWdlTWVhc3VyZW1l
bnREZWxheSB7IDUgfTsKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBwb3N0TG9h
ZENQVVVzYWdlTWVhc3VyZW1lbnREdXJhdGlvbiB7IDEwIH07CitzdGF0aWMgY29uc3Qgc3RkOjpj
aHJvbm86Om1pbnV0ZXMgYmFja2dyb3VuZENQVVVzYWdlTWVhc3VyZW1lbnREdXJhdGlvbiB7IDUg
fTsKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6bWludXRlcyBjcHVVc2FnZVNhbXBsaW5nSW50
ZXJ2YWwgeyAxMCB9OworCitzdGF0aWMgaW5saW5lIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGlu
ZyBhY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgc3RhdGUp
Cit7CisgICAgaWYgKCEoc3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpKQorICAgICAg
ICByZXR1cm4gQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpOb25WaXNpYmxlOworICAgIGlm
IChzdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKQorICAgICAgICByZXR1cm4g
QWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpWaXNpYmxlQW5kQWN0aXZlOworICAgIHJldHVy
biBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc6OlZpc2libGVOb25BY3RpdmU7Cit9CisKK1Bl
cmZvcm1hbmNlTW9uaXRvcjo6UGVyZm9ybWFuY2VNb25pdG9yKFBhZ2UmIHBhZ2UpCisgICAgOiBt
X3BhZ2UocGFnZSkKKyAgICAsIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1lcigqdGhpcywgJlBl
cmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UpCisgICAgLCBtX3Bvc3RC
YWNrZ3JvdW5kaW5nQ1BVVXNhZ2VUaW1lcigqdGhpcywgJlBlcmZvcm1hbmNlTW9uaXRvcjo6bWVh
c3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2UpCisgICAgLCBtX3BlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVRpbWVyKCp0aGlzLCAmUGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlUGVyQWN0aXZp
dHlTdGF0ZUNQVVVzYWdlKQoreworICAgIEFTU0VSVChwYWdlLmlzVGFiUGFnZSgpKTsKKworICAg
IGlmIChTZXR0aW5nczo6aXNQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJs
ZWQoKSkgeworICAgICAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lID0gZ2V0Q1BVVGltZSgp
OworICAgICAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVRpbWVyLnN0YXJ0UmVwZWF0aW5n
KGNwdVVzYWdlU2FtcGxpbmdJbnRlcnZhbCk7CisgICAgfQorfQorCit2b2lkIFBlcmZvcm1hbmNl
TW9uaXRvcjo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQoreworICAgIG1fcG9zdExvYWRDUFVU
aW1lID0gc3RkOjpudWxsb3B0OworICAgIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1lci5zdG9w
KCk7Cit9CisKK3ZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjpkaWRGaW5pc2hMb2FkKCkKK3sKKyAg
ICAvLyBPbmx5IGRvIHBvc3QtbG9hZCBDUFUgdXNhZ2UgbWVhc3VyZW1lbnQgaWYgdGhlcmUgaXMg
YSBzaW5nbGUgUGFnZSBpbiB0aGUgcHJvY2VzcyBpbiBvcmRlciB0byByZWR1Y2Ugbm9pc2UuCisg
ICAgaWYgKFNldHRpbmdzOjppc1Bvc3RMb2FkQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKSAm
JiBtX3BhZ2UuaXNPbmx5VGFiUGFnZSgpKSB7CisgICAgICAgIG1fcG9zdExvYWRDUFVUaW1lID0g
c3RkOjpudWxsb3B0OworICAgICAgICBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIuc3RhcnRP
bmVTaG90KGNwdVVzYWdlTWVhc3VyZW1lbnREZWxheSk7CisgICAgfQorfQorCit2b2lkIFBlcmZv
cm1hbmNlTW9uaXRvcjo6YWN0aXZpdHlTdGF0ZUNoYW5nZWQoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mg
b2xkU3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld1N0YXRlKQoreworICAgIEFjdGl2aXR5
U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBvbGRTdGF0ZSBeIG5ld1N0YXRlOworICAgIGJvb2wgdmlz
aWJpbGl0eUNoYW5nZWQgPSBjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworCisg
ICAgLy8gTWVhc3VyZSBDUFUgdXNhZ2Ugb2YgcGFnZXMgd2hlbiB0aGV5IGFyZSBubyBsb25nZXIg
dmlzaWJsZS4KKyAgICBpZiAoU2V0dGluZ3M6OmlzUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZU1l
YXN1cmVtZW50RW5hYmxlZCgpICYmIHZpc2liaWxpdHlDaGFuZ2VkKSB7CisgICAgICAgIG1fcG9z
dEJhY2tncm91bmRpbmdDUFVUaW1lID0gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAobmV3U3Rh
dGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCisgICAgICAgICAgICBtX3Bvc3RCYWNrZ3Jv
dW5kaW5nQ1BVVXNhZ2VUaW1lci5zdG9wKCk7CisgICAgICAgIGVsc2UgaWYgKG1fcGFnZS5pc09u
bHlUYWJQYWdlKCkpCisgICAgICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VUaW1l
ci5zdGFydE9uZVNob3QoY3B1VXNhZ2VNZWFzdXJlbWVudERlbGF5KTsKKyAgICB9CisKKyAgICBp
ZiAoU2V0dGluZ3M6OmlzUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVk
KCkpIHsKKyAgICAgICAgLy8gSWYgdmlzaWJpbGl0eSBjaGFuZ2VkIHRoZW4gcmVwb3J0IENQVSB1
c2FnZSByaWdodCBhd2F5IGJlY2F1c2UgQ1BVIHVzYWdlIGlzIGNvbm5lY3RlZCB0byB2aXNpYmls
aXR5IHN0YXRlLgorICAgICAgICBhdXRvIG9sZEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyA9
IGFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyhvbGRTdGF0ZSk7CisgICAgICAgIGlmIChvbGRB
Y3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgIT0gYWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5n
KG5ld1N0YXRlKSkgeworICAgICAgICAgICAgbWVhc3VyZUNQVVVzYWdlSW5BY3Rpdml0eVN0YXRl
KG9sZEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyk7CisgICAgICAgICAgICBtX3BlckFjdGl2
aXR5U3RhdGVDUFVVc2FnZVRpbWVyLnN0YXJ0UmVwZWF0aW5nKGNwdVVzYWdlU2FtcGxpbmdJbnRl
cnZhbCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjpt
ZWFzdXJlUG9zdExvYWRDUFVVc2FnZSgpCit7CisgICAgaWYgKCFtX3BhZ2UuaXNPbmx5VGFiUGFn
ZSgpKSB7CisgICAgICAgIG1fcG9zdExvYWRDUFVUaW1lID0gc3RkOjpudWxsb3B0OworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX3Bvc3RMb2FkQ1BVVGltZSkgeworICAgICAg
ICBtX3Bvc3RMb2FkQ1BVVGltZSA9IGdldENQVVRpbWUoKTsKKyAgICAgICAgaWYgKG1fcG9zdExv
YWRDUFVUaW1lKQorICAgICAgICAgICAgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyLnN0YXJ0
T25lU2hvdChwb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnREdXJhdGlvbik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgc3RkOjpvcHRpb25hbDxDUFVUaW1lPiBjcHVUaW1lID0gZ2V0Q1BV
VGltZSgpOworICAgIGlmICghY3B1VGltZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZG91Ymxl
IGNwdVVzYWdlID0gY3B1VGltZS52YWx1ZSgpLnBlcmNlbnRhZ2VDUFVVc2FnZVNpbmNlKCptX3Bv
c3RMb2FkQ1BVVGltZSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQZXJmb3JtYW5jZUxv
Z2dpbmcsICJtZWFzdXJlUG9zdExvYWRDUFVVc2FnZTogUHJvY2VzcyB3YXMgdXNpbmcgJS4xZiUl
IENQVSBhZnRlciB0aGUgcGFnZSBsb2FkLiIsIGNwdVVzYWdlKTsKKyAgICBtX3BhZ2UuZGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OnBvc3RQYWdlTG9hZEtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6
OmNwdVVzYWdlS2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6Zm9yZWdyb3VuZENQVVVzYWdl
VG9EaWFnbm9zdGljTG9nZ2luS2V5KGNwdVVzYWdlKSwgU2hvdWxkU2FtcGxlOjpObyk7Cit9CisK
K3ZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlUG9zdEJhY2tncm91bmRpbmdDUFVVc2Fn
ZSgpCit7CisgICAgaWYgKCFtX3BhZ2UuaXNPbmx5VGFiUGFnZSgpKSB7CisgICAgICAgIG1fcG9z
dEJhY2tncm91bmRpbmdDUFVUaW1lID0gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKCFtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSkgeworICAgICAgICBt
X3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSA9IGdldENQVVRpbWUoKTsKKyAgICAgICAgaWYgKG1f
cG9zdEJhY2tncm91bmRpbmdDUFVUaW1lKQorICAgICAgICAgICAgbV9wb3N0QmFja2dyb3VuZGlu
Z0NQVVVzYWdlVGltZXIuc3RhcnRPbmVTaG90KGJhY2tncm91bmRDUFVVc2FnZU1lYXN1cmVtZW50
RHVyYXRpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHN0ZDo6b3B0aW9uYWw8Q1BV
VGltZT4gY3B1VGltZSA9IGdldENQVVRpbWUoKTsKKyAgICBpZiAoIWNwdVRpbWUpCisgICAgICAg
IHJldHVybjsKKworICAgIGRvdWJsZSBjcHVVc2FnZSA9IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50
YWdlQ1BVVXNhZ2VTaW5jZSgqbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWUpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUGVyZm9ybWFuY2VMb2dnaW5nLCAibWVhc3VyZVBvc3RCYWNrZ3Jv
dW5kaW5nQ1BVVXNhZ2U6IFByb2Nlc3Mgd2FzIHVzaW5nICUuMWYlJSBDUFUgYWZ0ZXIgYmVjb21p
bmcgbm9uIHZpc2libGUuIiwgY3B1VXNhZ2UpOworICAgIG1fcGFnZS5kaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5n
S2V5czo6cG9zdFBhZ2VCYWNrZ3JvdW5kaW5nS2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6
Y3B1VXNhZ2VLZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpiYWNrZ3JvdW5kQ1BVVXNhZ2VU
b0RpYWdub3N0aWNMb2dnaW5LZXkoY3B1VXNhZ2UpLCBTaG91bGRTYW1wbGU6Ok5vKTsKK30KKwor
dm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2Uo
KQoreworICAgIG1lYXN1cmVDUFVVc2FnZUluQWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlRm9y
Q1BVU2FtcGxpbmcobV9wYWdlLmFjdGl2aXR5U3RhdGUoKSkpOworfQorCitzdGF0aWMgaW5saW5l
IGNvbnN0IGNoYXIqIHN0cmluZ0ZvckNQVVNhbXBsaW5nQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0
YXRlRm9yQ1BVU2FtcGxpbmcgYWN0aXZpdHlTdGF0ZSkKK3sKKyAgICBzd2l0Y2ggKGFjdGl2aXR5
U3RhdGUpIHsKKyAgICBjYXNlIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6Tm9uVmlzaWJs
ZToKKyAgICAgICAgcmV0dXJuICJOb25WaXNpYmxlIjsKKyAgICBjYXNlIEFjdGl2aXR5U3RhdGVG
b3JDUFVTYW1wbGluZzo6VmlzaWJsZU5vbkFjdGl2ZToKKyAgICAgICAgcmV0dXJuICJWaXNpYmxl
Tm9uQWN0aXZlIjsKKyAgICBjYXNlIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6VmlzaWJs
ZUFuZEFjdGl2ZToKKyAgICAgICAgcmV0dXJuICJWaXNpYmxlQW5kQWN0aXZlIjsKKyAgICB9Cit9
CisKK3ZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2aXR5U3Rh
dGUoQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nIGFjdGl2aXR5U3RhdGUpCit7CisgICAgaWYg
KCFtX3BhZ2UuaXNPbmx5VGFiUGFnZSgpKSB7CisgICAgICAgIG1fcGVyQWN0aXZpdHlTdGF0ZUNQ
VVRpbWUgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
IW1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWUpIHsKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRl
Q1BVVGltZSA9IGdldENQVVRpbWUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0
ZDo6b3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IGdldENQVVRpbWUoKTsKKyAgICBpZiAoIWNw
dVRpbWUpIHsKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSA9IHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRvdWJsZSBjcHVVc2FnZSA9IGNwdVRp
bWUudmFsdWUoKS5wZXJjZW50YWdlQ1BVVXNhZ2VTaW5jZSgqbV9wZXJBY3Rpdml0eVN0YXRlQ1BV
VGltZSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQZXJmb3JtYW5jZUxvZ2dpbmcsICJt
ZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2aXR5U3RhdGU6IFByb2Nlc3MgaXMgdXNpbmcgJS4xZiUlIENQ
VSBpbiBzdGF0ZTogJXMiLCBjcHVVc2FnZSwgc3RyaW5nRm9yQ1BVU2FtcGxpbmdBY3Rpdml0eVN0
YXRlKGFjdGl2aXR5U3RhdGUpKTsKKyAgICBtX3BhZ2UuY2hyb21lKCkuY2xpZW50KCkucmVwb3J0
UHJvY2Vzc0NQVVRpbWUoKGNwdVRpbWUudmFsdWUoKS5zeXN0ZW1UaW1lICsgY3B1VGltZS52YWx1
ZSgpLnVzZXJUaW1lKSAtIChtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lLnZhbHVlKCkuc3lzdGVt
VGltZSArIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWUudmFsdWUoKS51c2VyVGltZSksIGFjdGl2
aXR5U3RhdGUpOworCisgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSA9IFdURk1vdmUoY3B1
VGltZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTW9uaXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwY2FjMDBiOGU1Njg4MzcxMjY0NDBlZjRk
ZjkxYTUxNDhiNTk4NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTW9uaXRvci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkFjdGl2aXR5U3RhdGUuaCIKKyNpbmNsdWRlICJDUFVUaW1lLmgi
CisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlOworCitjbGFzcyBQZXJmb3JtYW5jZU1vbml0b3Ig
eworcHVibGljOgorICAgIGV4cGxpY2l0IFBlcmZvcm1hbmNlTW9uaXRvcihQYWdlJik7CisKKyAg
ICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CisgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
KCk7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlQ2hhbmdlZChBY3Rpdml0eVN0YXRlOjpGbGFncyBv
bGRTdGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3U3RhdGUpOworCitwcml2YXRlOgorICAg
IHZvaWQgbWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UoKTsKKyAgICB2b2lkIG1lYXN1cmVQb3N0QmFj
a2dyb3VuZGluZ0NQVVVzYWdlKCk7CisgICAgdm9pZCBtZWFzdXJlUGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlKCk7CisgICAgdm9pZCBtZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2aXR5U3RhdGUoQWN0aXZp
dHlTdGF0ZUZvckNQVVNhbXBsaW5nKTsKKworICAgIFBhZ2UmIG1fcGFnZTsKKworICAgIFRpbWVy
IG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1lcjsKKyAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+
IG1fcG9zdExvYWRDUFVUaW1lOworICAgIFRpbWVyIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2Fn
ZVRpbWVyOworICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gbV9wb3N0QmFja2dyb3VuZGluZ0NQ
VVRpbWU7CisgICAgVGltZXIgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VUaW1lcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPENQVVRpbWU+IG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWU7Cit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDc1OTc5NmFmYmEwMDdhNjcxYzMzNTY1YWFh
NTcyODY1MDgxMDc1ZDMuLjZiYjlkMDNhOGIzNGMxOTY4MjRhOGQyYmVkY2RlM2RhYWFlMWQ0MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC03NzgsMjQgKzc3OCw2IEBAIGJvb2wgU2V0
dGluZ3M6Omdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkKICNlbmRpZgogfQog
Ci1ib29sIFNldHRpbmdzOjppc1Bvc3RMb2FkQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKQot
ewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICByZXR1
cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotYm9vbCBTZXR0aW5nczo6aXNQb3N0QmFja2dyb3VuZGlu
Z0NQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkKLXsKLSNpZiBQTEFURk9STShNQUMpCi0gICAg
cmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCiB2b2lk
IFNldHRpbmdzOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZShib29sIGFsbG93QW55U1NMQ2Vy
dGlmaWNhdGUpCiB7CiAgICAgZ0FsbG93c0FueVNTTENlcnRpZmljYXRlID0gYWxsb3dBbnlTU0xD
ZXJ0aWZpY2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBhOTc0MDIxNmU1NmFkMTc3NGQ2
OWZiNmNlODUwZThlYjE2OGVmYjU1Li4yZDNjODNjOTdiNTllMjJlNDgzMWI1ZDk1ZTA2NjgxMjU2
YzU0OTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0yMDEsNiArMjAxLDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIGJvb2wgaXNQb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVk
KCk7CiAgICAgc3RhdGljIGJvb2wgaXNQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlTWVhc3VyZW1l
bnRFbmFibGVkKCk7CisgICAgc3RhdGljIGJvb2wgaXNQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VN
ZWFzdXJlbWVudEVuYWJsZWQoKTsKIAogICAgIHN0YXRpYyBib29sIGdsb2JhbENvbnN0UmVkZWNs
YXJhdGlvblNob3VsZFRocm93KCk7CiAKQEAgLTQyMyw0ICs0MjQsMzEgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgYm9vbCBnQWxsb3dzQW55U1NMQ2VydGlmaWNhdGU7CiB9OwogCitpbmxpbmUgYm9v
bCBTZXR0aW5nczo6aXNQb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkKK3sKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCit9CisKK2lubGluZSBib29sIFNldHRpbmdzOjppc1Bvc3RCYWNrZ3JvdW5k
aW5nQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK2lu
bGluZSBib29sIFNldHRpbmdzOjppc1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZU1lYXN1cmVtZW50
RW5hYmxlZCgpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UK
KyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDg3MjAyNzJkZDI2YjQ5ZTU2M2VkY2FkMDYz
ZGFhNGYyNmVlYjRjYWIuLmUzZTg4YWY0MDcwZjYxMjQ1YjJiM2ViZDE4NjY3YjRhOTc2YzM1MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTU3LDYgKzU3LDcgQEAgZXh0ZXJuICJD
IiB7CiAgICAgTShOZXR3b3JrQ2FjaGVTdG9yYWdlKSBcCiAgICAgTShOZXR3b3JrU2NoZWR1bGlu
ZykgXAogICAgIE0oTmV0d29ya1Nlc3Npb24pIFwKKyAgICBNKFBlcmZvcm1hbmNlTG9nZ2luZykg
XAogICAgIE0oUGx1Z2lucykgXAogICAgIE0oUHJpbnRpbmcpIFwKICAgICBNKFByb2Nlc3NTdXNw
ZW5zaW9uKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGVyQWN0aXZp
dHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGVy
QWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc3ZjI3MjE1MDQ5
NDFiMTg3ZjM5YzUxNzJlOWQ1MWFjNGFiN2UxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcApAQCAt
MCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJv
eHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGNvbnN0IGludDY0X3QgbWljcm9zZWNvbmRzUGVyU2Vj
b25kID0gMTAwMDAwMDsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBjb25z
dCBzdGQ6OmNocm9ubzo6bWludXRlcyBsb2dnaW5nSW50ZXJ2YWwgeyA2MCB9OworCitQZXJBY3Rp
dml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOjpQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVy
KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKKyAgICA6IG1fcHJvY2Vzc1Bvb2wocHJvY2Vz
c1Bvb2wpCisgICAgLCBtX2xvZ2dpbmdUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOjpsb2dnaW5nVGltZXJGaXJlZCkKK3sKKyAgICBt
X2xhc3RDUFVUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgbV9sb2dn
aW5nVGltZXIuc3RhcnRSZXBlYXRpbmcobG9nZ2luZ0ludGVydmFsKTsKK30KKworUGVyQWN0aXZp
dHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6flBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIo
KQoreworfQorCit2b2lkIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI6OnJlcG9ydFdl
YkNvbnRlbnRDUFVUaW1lKGludDY0X3QgY3B1VGltZSwgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBs
aW5nIGFjdGl2aXR5U3RhdGUpCit7CisgICAgYXV0byByZXN1bHQgPSBtX2NwdVRpbWVJbkFjdGl2
aXR5U3RhdGUuYWRkKGFjdGl2aXR5U3RhdGUsIGNwdVRpbWUpOworICAgIGlmICghcmVzdWx0Lmlz
TmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gY3B1VGltZTsKK30K
Kworc3RhdGljIGlubGluZSBTdHJpbmcgbG9nZ2luZ0tleUZvckFjdGl2aXR5U3RhdGUoQWN0aXZp
dHlTdGF0ZUZvckNQVVNhbXBsaW5nIHN0YXRlKQoreworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAg
ICBjYXNlIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6Tm9uVmlzaWJsZToKKyAgICAgICAg
cmV0dXJuIERpYWdub3N0aWNMb2dnaW5nS2V5czo6bm9uVmlzaWJsZVN0YXRlS2V5KCk7CisgICAg
Y2FzZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc6OlZpc2libGVOb25BY3RpdmU6CisgICAg
ICAgIHJldHVybiBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnZpc2libGVOb25BY3RpdmVTdGF0ZUtl
eSgpOworICAgIGNhc2UgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpWaXNpYmxlQW5kQWN0
aXZlOgorICAgICAgICByZXR1cm4gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlQW5kQWN0
aXZlU3RhdGVLZXkoKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIGxvZ2dpbmdL
ZXlGb3JDUFVVc2FnZShBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgc3RhdGUsIGRvdWJsZSBj
cHVVc2FnZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBBY3Rpdml0eVN0YXRl
Rm9yQ1BVU2FtcGxpbmc6Ok5vblZpc2libGU6CisgICAgICAgIHJldHVybiBEaWFnbm9zdGljTG9n
Z2luZ0tleXM6OmJhY2tncm91bmRDUFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dpbktleShjcHVVc2Fn
ZSk7CisgICAgY2FzZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc6OlZpc2libGVOb25BY3Rp
dmU6CisgICAgY2FzZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc6OlZpc2libGVBbmRBY3Rp
dmU6CisgICAgICAgIHJldHVybiBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmZvcmVncm91bmRDUFVV
c2FnZVRvRGlhZ25vc3RpY0xvZ2dpbktleShjcHVVc2FnZSk7CisgICAgfQorfQorCit2b2lkIFBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI6OmxvZ2dpbmdUaW1lckZpcmVkKCkKK3sKKyAg
ICBhdXRvKiBwYWdlID0gcGFnZUZvckxvZ2dpbmcoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAg
ICAgbV9jcHVUaW1lSW5BY3Rpdml0eVN0YXRlLmNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBkb3VibGUgY3VycmVudENQVVRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKTsKKyAgICBpbnQ2NF90IGNwdVRpbWVEZWx0YSA9IChjdXJyZW50Q1BVVGltZSAtIG1f
bGFzdENQVVRpbWUpICogbWljcm9zZWNvbmRzUGVyU2Vjb25kOworCisgICAgZm9yIChhdXRvJiBw
YWlyIDogbV9jcHVUaW1lSW5BY3Rpdml0eVN0YXRlKSB7CisgICAgICAgIGRvdWJsZSBjcHVVc2Fn
ZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4ocGFpci52YWx1ZSAqIDEwMC4pIC8gY3B1VGltZURlbHRh
OworICAgICAgICBTdHJpbmcgbG9nZ2luZ0tleSA9IGxvZ2dpbmdLZXlGb3JBY3Rpdml0eVN0YXRl
KHBhaXIua2V5KTsKKyAgICAgICAgcGFnZS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUo
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjcHVVc2FnZUtleSgpLCBsb2dnaW5nS2V5LCBsb2dnaW5n
S2V5Rm9yQ1BVVXNhZ2UocGFpci5rZXksIGNwdVVzYWdlKSwgZmFsc2UpOworICAgICAgICBSRUxF
QVNFX0xPRyhQZXJmb3JtYW5jZUxvZ2dpbmcsICJXZWJDb250ZW50IHByb2Nlc3NlcyB1c2VkICUu
MWYlJSBDUFUgaW4gJXMgc3RhdGUiLCBjcHVVc2FnZSwgbG9nZ2luZ0tleS51dGY4KCkuZGF0YSgp
KTsKKyAgICB9CisKKyAgICBtX2NwdVRpbWVJbkFjdGl2aXR5U3RhdGUuY2xlYXIoKTsKKyAgICBt
X2xhc3RDUFVUaW1lID0gY3VycmVudENQVVRpbWU7Cit9CisKK1dlYlBhZ2VQcm94eSogUGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6cGFnZUZvckxvZ2dpbmcoKSBjb25zdAoreworICAg
IGZvciAoYXV0byYgd2ViUHJvY2VzcyA6IG1fcHJvY2Vzc1Bvb2wucHJvY2Vzc2VzKCkpIHsKKyAg
ICAgICAgaWYgKCF3ZWJQcm9jZXNzLT5wYWdlQ291bnQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICByZXR1cm4gKndlYlByb2Nlc3MtPnBhZ2VzKCkuYmVnaW4oKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFiNmY0Yjc1NTk4NThiMTdlMDkwY2Y5YTRlYWQ3OWY2ZjVj
YmYxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QZXJBY3Rp
dml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CisKK2NsYXNz
IFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0
IFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoV2ViUHJvY2Vzc1Bvb2wmKTsKKyAgICB+
UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcigpOworCisgICAgdm9pZCByZXBvcnRXZWJD
b250ZW50Q1BVVGltZShpbnQ2NF90IGNwdVRpbWUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGVGb3JD
UFVTYW1wbGluZyk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBsb2dnaW5nVGltZXJGaXJlZCgpOwor
ICAgIFdlYlBhZ2VQcm94eSogcGFnZUZvckxvZ2dpbmcoKSBjb25zdDsKKworICAgIFdlYlByb2Nl
c3NQb29sJiBtX3Byb2Nlc3NQb29sOworICAgIFJ1bkxvb3A6OlRpbWVyPFBlckFjdGl2aXR5U3Rh
dGVDUFVVc2FnZVNhbXBsZXI+IG1fbG9nZ2luZ1RpbWVyOworICAgIHR5cGVkZWYgSGFzaE1hcDxX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcsIGludDY0X3QsIFdURjo6SW50SGFz
aDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc+LCBXVEY6OlN0cm9uZ0VudW1I
YXNoVHJhaXRzPFdlYkNvcmU6OkFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZz4+IENQVVRpbWVJ
bkFjdGl2aXR5U3RhdGVNYXA7CisgICAgQ1BVVGltZUluQWN0aXZpdHlTdGF0ZU1hcCBtX2NwdVRp
bWVJbkFjdGl2aXR5U3RhdGU7CisgICAgZG91YmxlIG1fbGFzdENQVVRpbWU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCmluZGV4IGMyYTE4YmIxZTc5NzE2ZjMzYmJhNDUwZjg1ZmQ1Mzg2NDc1MGNmNGYuLmQ4
NjRlZjY3NTU3Y2RiMGM2NWQ5MWUyMTA1NTBjNzZlNmM2MWQwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKKyNp
bmNsdWRlICJQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAi
VGV4dENoZWNrZXIuaCIKQEAgLTE2OCw2ICsxNjksNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJv
Y2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAg
ICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUobV9jb25maWd1cmF0aW9uLT5zaG91bGRIYXZlTGVnYWN5
RGF0YVN0b3JlKCkgPyBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShsZWdhY3lXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKS5wdHIoKSA6IG51bGxwdHIp
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9oaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdl
U2FtcGxlcihzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1w
bGVyPigqdGhpcykpCisgICAgLCBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPigqdGhpcykpCiAj
ZW5kaWYKICAgICAsIG1fc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKGZhbHNlKQogICAg
ICwgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkKHRydWUpCkBAIC0xNDMxLDQgKzE0MzMsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5j
cmVhc2VMaW1pdCgpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpTZXRIaWRkZW5QYWdlVGltZXJUaHJvdHRsaW5nSW5jcmVhc2VMaW1pdChsaW1pdEluTWlsbGlz
ZWNvbmRzKSk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVU
aW1lKGludDY0X3QgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTdGF0ZSkKK3sKKyAgICBpZiAo
bV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKQorICAgICAgICBtX3BlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXItPnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKGNwdVRpbWUsIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZz4oYWN0aXZpdHlT
dGF0ZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZDliODYwMzgyZTQ3MzdmYjEyNjI1YmQ0NDYwYmM5
NGYyYTZjMTgwMC4uYWU1NmZmZTdkNmEzZjMyMDdjYTZhYjVlYzdlOTYxNWY4NGIxMWQ5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTg1LDYgKzg1LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgSGlnaFBl
cmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI7CiBjbGFzcyBVSUdhbWVwYWQ7CitjbGFzcyBQ
ZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Np
b247CiBjbGFzcyBXZWJDb250ZXh0U3VwcGxlbWVudDsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsK
QEAgLTI1OSw2ICsyNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckNhY2hlZENyZWRlbnRp
YWxzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3MoKTsKIAorICAgIHZvaWQg
cmVwb3J0V2ViQ29udGVudENQVVRpbWUoaW50NjRfdCBjcHVUaW1lLCB1aW50NjRfdCBhY3Rpdml0
eVN0YXRlKTsKKwogICAgIHZvaWQgYWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0
KGNvbnN0IFdlYkNlcnRpZmljYXRlSW5mbyosIGNvbnN0IFN0cmluZyYgaG9zdCk7CiAKICAgICBX
ZWJQcm9jZXNzUHJveHkmIGNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50
TGltaXQoKTsgLy8gV2lsbCByZXR1cm4gYW4gZXhpc3Rpbmcgb25lIGlmIGxpbWl0IGlzIG1ldC4K
QEAgLTUzMiw2ICs1MzUsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9h
dXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uTm90aWZpY2F0aW9uT2JzZXJ2ZXI7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+IG1faGlnaFBl
cmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+IG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlcjsKICNlbmRpZgogCiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2Vz
LmluCmluZGV4IDhlYmE4ZTUzMGM1ZDRkMTVmOTRkYWNkYWRiYjE0MTY2NjFmZTk3M2QuLjg5OTBj
MDA5NDEzYmM5ZGZlYzEzNDAwNzY2NWU0ZDI3NzAxYjQ2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KQEAgLTM0LDQgKzM0
LDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Bvb2wgewogICAgICMgUGx1Zy1pbiBtZXNzYWdl
cy4KICAgICB2b2lkIEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goU3RyaW5nIHBhZ2VPcmln
aW4sIHVpbnQzMl90IGhhc2gsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgdm9p
ZCBQbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVpbnQzMl90IGhhc2gsIFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCisKKyAgICBSZXBvcnRXZWJDb250ZW50Q1BVVGltZShpbnQ2
NF90IGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5U3RhdGUpCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmJjZDc5NjFhZjRi
MmU5OGVkZjc1OTdkNDNmNjJmZjAyOGQxNGNiNi4uYzM4NjFlNWVjMzk4OGVlNDU5ZmUxMWNjMWFj
YzUxMjJjNGE1Y2Y4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTIzNyw2ICsxMjM3LDggQEAKIAkJODMxRUVCQkUxQkQ4NUM0
MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzFFRUJCQzFCRDg1QzQzMDBCQjY0
QzMgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCAqLzsgfTsKIAkJODMyQUUyNTIx
QkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkFFMjUwMUJF
MkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggKi87
IH07CiAJCTgzMkFFMjUzMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzMkFFMjUxMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJODMyRUQxOEIxRTJGRTE1NzAwNkJBNjRBIC8qIFBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyRUQxODkxRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwICovOyB9OworCQk4MzJFRDE4QzFFMkZFMTU3
MDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyRUQxOEExRTJGRTEzQjAwNkJB
NjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCAqLzsgfTsKIAkJODM0QjI1
MEYxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEIyNTBFMUE4MzFBOEQwMENG
QjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggKi87IH07CiAJCTgzNEIyNTEyMUE4NDJD
ODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAgLyog
TmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovOyB9OwogCQk4MzYwMzQ5RjFBQ0IzNEQ2MDA2MjY1
NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwICovOyB9OwpAQCAtMzM4Nyw2ICszMzg5LDggQEAKIAkJ
ODMxRUVCQkMxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzJBRTI1MDFC
RTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkFFMjUxMUJFMkU4
Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzJFRDE4OTFF
MkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMyRUQxOEExRTJG
RTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUwRTFBODMxQThEMDBDRkIx
NTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzNEIyNTEwMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZVN0YXRpc3Rp
Y3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM2MDM0OUQxQUNCMzRENjAwNjI2
NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjI2Nyw2ICs2MjcxLDggQEAKIAkJCQlCQzZFREFBNTExMTI3
MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVudC5oICovLAogCQkJCTFBQzc1Mzc5MTgzQTlGREEwMDcy
Q0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNwcCAqLywKIAkJCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNC
MTUgLyogUGFnZUxvYWRTdGF0ZS5oICovLAorCQkJCTgzMkVEMTg5MUUyRkUxM0IwMDZCQTY0QSAv
KiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcCAqLywKKwkJCQk4MzJFRDE4QTFF
MkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oICovLAog
CQkJCTM3NzE2QTU5MTk1QjkxMDUwMEVFOEIxQiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmNwcCAqLywK
IAkJCQk4NkY5NTM2MDE4RkY0RkQ0MDAxREIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbi5oICovLAog
CQkJCTg2RTY3QTIyMTkwRjQxMTgwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmNwcCAqLywK
QEAgLTgwNTUsNiArODA2MSw3IEBACiAJCQkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRl
eHRJbnB1dFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjI2MzkxNDY4N0MzOTAwNEExRThB
IC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMyRUQxOEMxRTJGRTE1NzAwNkJBNjRBIC8qIFBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkU0
MzY2MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTVCRTFCNTFENTkxN0ZGMDBERDdDNjggLyogVUlHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTVCRTFBOTFENTUyOTM0MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTIxOCw2ICs5MjI1LDcgQEAKIAkJCQk5M0E4OEI0NzFCQzg4Mjk3MDBBQkE1
QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0QzQTQ4MjFB
NUQwMkZBMDA5NjIzQjggLyogQVBJTmF2aWdhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Q0Y2OUZBMzExNzZEMDE0MDA0NzFBNTIgLyogQVBJTmF2aWdhdGlvbkRhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJODMyRUQxOEIxRTJGRTE1NzAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjYzNDAzRjkxNDkxMEQ1NzAw
MTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzhFMUEzRDE4MUVE
NkZGMDAzMTAwN0EgLyogQVBJT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4NTdGQjYx
MkI4MzBFNjAwRURFQjJFIC8qIEFQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNzMxNGY2MWY4NWMwODc5NWRkOGE5Zjc3
ZjJmMTZkZDQ0NjhkMzBjZi4uNDk4MzRjM2EzMGViZjkyMTVlOWY1NGU5MWRjYjI0ZWExM2Y5NGNl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlYXJj
aFBvcHVwTWVudS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aD4KQEAgLTI3NCw2ICsyNzUsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJ1bk1vZGFsKCkK
ICAgICBtX3BhZ2UucnVuTW9kYWwoKTsKIH0KIAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlcG9y
dFByb2Nlc3NDUFVUaW1lKGludDY0X3QgY3B1VGltZSwgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBs
aW5nIGFjdGl2aXR5U3RhdGUpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Bvb2w6OlJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKGNwdVRpbWUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhY3Rpdml0eVN0YXRlKSksIDApOworfQorCiB2b2lkIFdl
YkNocm9tZUNsaWVudDo6c2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wgdG9vbGJhcnNBcmVWaXNpYmxl
KQogewogICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldFRvb2xiYXJz
QXJlVmlzaWJsZSh0b29sYmFyc0FyZVZpc2libGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4
IDY0ZThiMTQyMmFhMTU0ZTI5ZjgyZWYyZTIxNDEyOTMyYThmN2M1YzIuLjVjOWQ3NzNhNzJjMDYw
OGMwMjA2OGFjMWQ5ZGRmNDVkNGEwYmQ5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNjcs
NiArNjcsOCBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgY2FuUnVuTW9kYWwoKSBmaW5hbDsK
ICAgICB2b2lkIHJ1bk1vZGFsKCkgZmluYWw7CisKKyAgICB2b2lkIHJlcG9ydFByb2Nlc3NDUFVU
aW1lKGludDY0X3QsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZykgZmluYWw7
CiAgICAgCiAgICAgdm9pZCBzZXRUb29sYmFyc1Zpc2libGUoYm9vbCkgZmluYWw7CiAgICAgYm9v
bCB0b29sYmFyc1Zpc2libGUoKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299252</attachid>
            <date>2017-01-19 11:09:15 -0800</date>
            <delta_ts>2017-01-19 11:41:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167163-20170119110727.patch</filename>
            <type>text/plain</type>
            <size>55477</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDUyMmNkMmQwMTcxNzk4
ZmRhMmY5ZmFkNzVhMWIxMjBkYzk1ZGVmZC4uMWQyZTY5MWZkZjczMDkzMzc2ODVlNjM0YjBiZTk5
YmYwNWQwMjY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE3LTAxLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHBlciBhY3Rp
dml0eSBzdGF0ZSBDUFUgdXNhZ2UgcmVwb3J0aW5nIHVzaW5nIGRpYWdub3N0aWMgbG9nZ2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3MTYzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDA1ODM0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGVyIGFjdGl2aXR5IHN0YXRlIENQ
VSB1c2FnZSByZXBvcnRpbmcgdXNpbmcgZGlhZ25vc3RpYyBsb2dnaW5nLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQWN0aXZp
dHlTdGF0ZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFn
ZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpub25WaXNpYmxlU3RhdGVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlTm9uQWN0aXZlU3RhdGVLZXkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlQW5kQWN0aXZlU3RhdGVLZXkp
OgorICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpmb3JlZ3JvdW5kQ1BV
VXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5LZXkpOgorICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpiYWNrZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5LZXkpOgor
ICAgICAgICAqIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg6CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVGFiUGFnZUNocm9tZUNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6On5QYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6aXNPbmx5VGFiUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRBY3Rpdml0
eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldElzVmlzaWJsZUludGVybmFsKToK
KyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFjdGl2aXR5
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNUYWJQYWdlKToKKyAgICAgICAgKiBw
YWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6YWN0
aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNl
TW9uaXRvcjo6UGVyZm9ybWFuY2VNb25pdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1h
bmNlTW9uaXRvcjo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
UGVyZm9ybWFuY2VNb25pdG9yOjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
cmZvcm1hbmNlTW9uaXRvcjo6YWN0aXZpdHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlUG9zdExvYWRDUFVVc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQ
VVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGb3JDUFVT
YW1wbGluZ0FjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VNb25p
dG9yOjptZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2aXR5U3RhdGUpOgorICAgICAgICAqIHBhZ2UvUGVy
Zm9ybWFuY2VNb25pdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZp
dHlTdGF0ZS5oLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjppc1Bvc3RMb2FkQ1BVVXNh
Z2VNZWFzdXJlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmlzUG9z
dEJhY2tncm91bmRpbmdDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXR0aW5nczo6aXNQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJs
ZWQpOgorCiAyMDE3LTAxLTE5ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlYmFzZWxpbmUgYmluZGluZ3MgdGVzdHMgYWZ0ZXIgcjIxMDkxOC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBjMWJlNzE1MjBhYmE3Y2NiOTU5ZDdhMDBmZDhmNWIyZWQ3YTgxNDI2Li44ZTFmMjU3
NmQ1ODZmMmZhYjAxOThkOGY0OGI3NmQwNDYxZjUyOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzMgQEAKKzIwMTctMDEtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgcGVyIGFjdGl2aXR5IHN0YXRlIENQVSB1c2FnZSByZXBvcnRpbmcgdXNp
bmcgZGlhZ25vc3RpYyBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjcxNjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMDU4MzQ5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBwZXIgYWN0aXZpdHkgc3RhdGUgQ1BVIHVzYWdlIHJlcG9ydGluZyB1c2luZyBkaWFnbm9zdGlj
IGxvZ2dpbmcuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6UGVyQWN0aXZpdHlT
dGF0ZUNQVVVzYWdlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlBlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXI6On5QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKToKKyAgICAg
ICAgKFdlYktpdDo6UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6cmVwb3J0V2ViQ29u
dGVudENQVVRpbWUpOgorICAgICAgICAoV2ViS2l0Ojpsb2dnaW5nS2V5Rm9yQWN0aXZpdHlTdGF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OmxvZ2dpbmdLZXlGb3JDUFVVc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI6OmxvZ2dpbmdUaW1lckZpcmVk
KToKKyAgICAgICAgKFdlYktpdDo6UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6cGFn
ZUZvckxvZ2dpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0
ZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJDb250ZW50Q1BVVGltZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cmVwb3J0UHJvY2Vzc0NQ
VVRpbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lmg6CisKIDIwMTctMDEtMTggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnN0YWxsIFdlYktpdC5hcGlub3RlcyB3aXRoIHRoZSBwdWJsaWMgaGVh
ZGVycyBvZiBXZWJLaXQgZnJhbWV3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjI0YjY3YzMwODJlNjc1YzQ3ZTgwZDEyMTgw
MmE0MDAxNmI3NGMxMy4uOWE0MGRiODIzOTlmYjBiZjcwZDUyYjRhYzYzZjkwYTg4Zjk3YmRhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMzA2NCw2ICszMDY0LDggQEAKIAkJODNGMTIwNkIxQjhDMTA0NzAwRDc1RjYzIC8qIEpT
Tm9kZUZpbHRlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0YxMjA2QTFCOEMxMDM2MDBENzVGNjMgLyogSlNOb2RlRmlsdGVyQ3VzdG9t
LmNwcCAqLzsgfTsKIAkJODNGRTdDQTcxREE5RjFBNzAwMzcyMzdDIC8qIFVJRXZlbnRJbml0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZFN0NBNDFE
QTlGMTY2MDAzNzIzN0MgLyogVUlFdmVudEluaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0ZFN0NBODFEQTlGMUI2MDAzNzIzN0MgLyogRXZl
bnRNb2RpZmllckluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzRkU3Q0EzMURBOUYxNjUwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTgzRkU5MDI3
MUUzMDdDMzAwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkU5MDI2MUUzMDdDMUMwMDNFOTE5OSAv
KiBQZXJmb3JtYW5jZU1vbml0b3IuaCAqLzsgfTsKKwkJODNGRTkwMjgxRTMwN0MzMzAwM0U5MTk5
IC8qIFBlcmZvcm1hbmNlTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0ZFOTAyNTFFMzA3QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VN
b25pdG9yLmNwcCAqLzsgfTsKIAkJODQxOUQyQTcxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhC
eXRlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NDE5RDJBNDEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW0uaCAqLzsgfTsK
IAkJODQxOUQyQTgxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDE5RDJB
NTEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcCAqLzsgfTsK
IAkJODQxOUQyQTkxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQxOUQyQTYx
MjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oICovOyB9OwpAQCAt
MTA1OTYsNiArMTA1OTgsOCBAQAogCQk4M0ZFN0NBNDFEQTlGMTY2MDAzNzIzN0MgLyogVUlFdmVu
dEluaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVUlFdmVudEluaXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNGRTdDQTUxREE5RjE2NjAwMzcyMzdDIC8q
IFVJRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVSUV2ZW50SW5pdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRkU3Q0E2MURBOUYxNjYwMDM3MjM3QyAv
KiBFdmVudE1vZGlmaWVySW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnRNb2Rp
ZmllckluaXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0ZFOTAyNTFFMzA3
QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBlcmZvcm1hbmNlTW9uaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgzRkU5MDI2MUUzMDdDMUMwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1v
bml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VNb25p
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MTlEMkE0MTIwRDkyRDAwMDE0
MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdQYXRoQnl0ZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
NDE5RDJBNTEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhCeXRlU3RyZWFtQnVp
bGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MTlEMkE2MTIwRDkyRDAw
MDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xODAxOCw2ICsxODAyMiw4IEBACiAJCQkJODZCRTMzRkMxNTA1OENC
MjAwQ0UwRkQ4IC8qIFBlcmZvcm1hbmNlRW50cnkuaWRsICovLAogCQkJCUFENUEwQzIxMURFQ0Ex
MDEwMDcwNzA1NCAvKiBQZXJmb3JtYW5jZUxvZ2dpbmcuY3BwICovLAogCQkJCUFENUEwQzIwMURF
Q0EwQjUwMDcwNzA1NCAvKiBQZXJmb3JtYW5jZUxvZ2dpbmcuaCAqLywKKwkJCQk4M0ZFOTAyNTFF
MzA3QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCAqLywKKwkJCQk4M0ZFOTAy
NjFFMzA3QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmggKi8sCiAJCQkJOEFGNEU1
NTIxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgKi8sCiAJCQkJ
OEFGNEU1NTMxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oICovLAog
CQkJCThBRjRFNTU0MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaWRs
ICovLApAQCAtMjY3MjAsNiArMjY3MjYsNyBAQAogCQkJCTg1MDMxQjQ0MEE0NEVGQzcwMEY5OTJF
MCAvKiBLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUwMEQ1OTE4MkRBQzhE
MDAwODdERDcgLyogS2V5ZWRDb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E2M0M1MUI3
NDMxOEYwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNG
RTkwMjcxRTMwN0MzMDAwM0U5MTk5IC8qIFBlcmZvcm1hbmNlTW9uaXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE3QTYzQzYxQjc0MzE5MjAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTEzQjNENzExNEIxNjY2MDAxQzQyOUIgLyogS2V5RXZlbnRDb2Nv
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY1NTQxMzkxNDg5ODExQzAwMERGQzVEIC8qIEtleUV2
ZW50Q29kZXNJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMzExMjUsNiArMzExMzIsNyBAQAogCQkJ
CTA3M0JFMzRFMTdEMTgwQjIwMDJCRDQzMSAvKiBSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTBFMTdEMTRDRUUwMDQyMEFBMSAvKiBS
VENTdGF0c1JlcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDkxMDE3RDE0Q0VFMDA0
MjBBQTEgLyogUlRDU3RhdHNSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4M0ZFOTAy
ODFFMzA3QzMzMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTVFMkM0MzY3MUJDRUUzNzcwMDAxRTJCQyAvKiBSVENUcmFja0V2ZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTU4MjRBQkEyMUFFODExMTYwMDkwNzRCNyAvKiBSdWJ5RWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1ODI0QUJBNjFBRTgxMzg0MDA5MDc0QjcgLyogUnVieVRl
eHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9BY3Rpdml0eVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGUu
aAppbmRleCBiNmVkNzgyYzk4NWFkYTVmN2U2M2JmMmRlMDJkZTllY2Q4NjUyYWI2Li4wZTUzNGNj
NjZjMGNhMzU5MGIzMDdiODk5NTUwYTNiZjQyYmI3MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2
aXR5U3RhdGUuaApAQCAtNDUsNCArNDUsMTAgQEAgc3RydWN0IEFjdGl2aXR5U3RhdGUgewogICAg
IHN0YXRpYyBjb25zdCBGbGFncyBBbGxGbGFncyA9IFdpbmRvd0lzQWN0aXZlIHwgSXNGb2N1c2Vk
IHwgSXNWaXNpYmxlIHwgSXNWaXNpYmxlT3JPY2NsdWRlZCB8IElzSW5XaW5kb3cgfCBJc1Zpc3Vh
bGx5SWRsZSB8IElzQXVkaWJsZSB8IElzTG9hZGluZzsKIH07CiAKK2VudW0gY2xhc3MgQWN0aXZp
dHlTdGF0ZUZvckNQVVNhbXBsaW5nIHsKKyAgICBOb25WaXNpYmxlLAorICAgIFZpc2libGVOb25B
Y3RpdmUsCisgICAgVmlzaWJsZUFuZEFjdGl2ZQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggMzMxZGY0YWM3ZjBmN2Y4MWFmZmZj
Nzg4YmVjMThhN2E1ZTgxYzhmZi4uMmM4OWI2Y2JhNTA2ODBiOTcyZGM1NWZjNGIyNGM0ODkwZmFl
YjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC00NTUsNiArNDU1LDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJl
Y3RzKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UHJvY2Vzc0NQVVRpbWUoaW50NjRf
dCwgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgfkNocm9tZUNsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmNwcAppbmRleCBlMTZmNTlkZTBmYmQ3MWE0MThiMjY5NjkzNDk1
YjRmNDIzNGU4NTg5Li4xOGI4MzJkMmI3M2RjY2UzNDQ0ZDg0ZGM1NWQzYWZhOWEyNzdmOTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwCkBAIC0x
NjMsNiArMTYzLDExIEBAIFN0cmluZyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5vU3RvcmVLZXko
KQogICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vU3RvcmUiKTsKIH0KIAorU3RyaW5nIERpYWdu
b3N0aWNMb2dnaW5nS2V5czo6bm9uVmlzaWJsZVN0YXRlS2V5KCkKK3sKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJub25WaXNpYmxlU3RhdGUiKTsKK30KKwogU3RyaW5nIERpYWdub3N0aWNMb2dn
aW5nS2V5czo6bm90SW5NZW1vcnlDYWNoZUtleSgpCiB7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgibm90SW5NZW1vcnlDYWNoZSIpOwpAQCAtNTk4LDYgKzYwMywxNiBAQCBTdHJpbmcgRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjp2aWRlb0tleSgpCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidmlk
ZW8iKTsKIH0KIAorU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6dmlzaWJsZU5vbkFjdGl2
ZVN0YXRlS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ2aXNpYmxlTm9uQWN0aXZl
U3RhdGUiKTsKK30KKworU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6dmlzaWJsZUFuZEFj
dGl2ZVN0YXRlS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ2aXNpYmxlQW5kQWN0
aXZlU3RhdGUiKTsKK30KKwogU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6d2FzdGVkU3Bl
Y3VsYXRpdmVXYXJtdXBXaXRoUmV2YWxpZGF0aW9uS2V5KCkKIHsKICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJ3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb24iKTsKQEAgLTY1
OCw1ICs2NzMsMzcgQEAgU3RyaW5nIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6d2Vi
R0xLZXkoKQogICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIndlYkdMIik7CiB9CiAKK1N0cmluZyBE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OmZvcmVncm91bmRDUFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dp
bmdLZXkoZG91YmxlIGNwdVVzYWdlKQoreworICAgIGlmIChjcHVVc2FnZSA8IDEwKQorICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJCZWxvdzEwIik7CisgICAgaWYgKGNwdVVzYWdlIDwgMjAp
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjEwdG8yMCIpOworICAgIGlmIChjcHVVc2Fn
ZSA8IDQwKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIyMHRvNDAiKTsKKyAgICBpZiAo
Y3B1VXNhZ2UgPCA2MCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiNDB0bzYwIik7Cisg
ICAgaWYgKGNwdVVzYWdlIDwgODApCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjYwdG84
MCIpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm92ZXI4MCIpOworfQorCitTdHJpbmcgRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjpiYWNrZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5n
S2V5KGRvdWJsZSBjcHVVc2FnZSkKK3sKKyAgICBpZiAoY3B1VXNhZ2UgPCAxKQorICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJCZWxvdzEiKTsKKyAgICBpZiAoY3B1VXNhZ2UgPCA1KQorICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIxdG81Iik7CisgICAgaWYgKGNwdVVzYWdlIDwgMTAp
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjV0bzEwIik7CisgICAgaWYgKGNwdVVzYWdl
IDwgMzApCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjEwdG8zMCIpOworICAgIGlmIChj
cHVVc2FnZSA8IDUwKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIzMHRvNTAiKTsKKyAg
ICBpZiAoY3B1VXNhZ2UgPCA3MCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiNTB0bzcw
Iik7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib3ZlcjcwIik7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGlj
TG9nZ2luZ0tleXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
LmgKaW5kZXggNmI2YTJmMDFhYzgzNzE2YzZlMWE0ZmE2OWU5ZWIxYjRhOWIyZGQ4MS4uNTA4OTdi
YmY5NDFhYmU2MDU1YTg1MTUxMWU5YzllZTlhNDZhYjg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgU3RyaW5nIGNhY2hlZFJlc291cmNlUmV2YWxpZGF0aW9uS2V5KCk7CiAgICAgc3Rh
dGljIFN0cmluZyBjYW5DYWNoZUtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgY2Fubm90U3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHNLZXkoKTsKLSAgICBzdGF0aWMgU3RyaW5nIGNwdVVzYWdlS2V5KCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBjcHVVc2FnZUtleSgpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgY3JlYXRlU2hhcmVkQnVmZmVyRmFpbGVkS2V5KCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkZWx0YUtleSgpOwogICAgIHN0YXRp
YyBTdHJpbmcgZGVuaWVkQnlDbGllbnRLZXkoKTsKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBTdHJpbmcgbm9Eb2N1bWVudExvYWRlcktleSgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTdHJpbmcgbm9Mb25nZXJJbkNhY2hlS2V5KCk7CiAgICAgc3RhdGljIFN0cmlu
ZyBub1N0b3JlS2V5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBub25WaXNp
YmxlU3RhdGVLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIG5vdEhUVFBG
YW1pbHlLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIG5vdEluQ2FjaGVL
ZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIG5vdEluTWVtb3J5Q2FjaGVLZXkoKTsKQEAgLTE1MCwx
MiArMTUxLDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHVz
ZXJLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHZhcnlpbmdIZWFkZXJN
aXNtYXRjaEtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgdmlkZW9LZXkoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgU3RyaW5nIHZpc2libGVOb25BY3RpdmVTdGF0ZUtleSgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgdmlzaWJsZUFuZEFjdGl2ZVN0YXRlS2V5KCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdp
dGhSZXZhbGlkYXRpb25LZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHdh
c3RlZFNwZWN1bGF0aXZlV2FybXVwV2l0aG91dFJldmFsaWRhdGlvbktleSgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgd2ViR0xLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU3RyaW5nIHdlYlZpZXdLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3Ry
aW5nIHpvb21lZEtleSgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBmb3Jl
Z3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5nS2V5KGRvdWJsZSBjcHVVc2FnZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBiYWNrZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdu
b3N0aWNMb2dnaW5nS2V5KGRvdWJsZSBjcHVVc2FnZSk7CisKICAgICAvLyBTdWNjZXNzIC8gRmFp
bHVyZSBrZXlzLgogICAgIHN0YXRpYyBTdHJpbmcgc3VjY2Vzc0tleSgpOwogICAgIHN0YXRpYyBT
dHJpbmcgZmFpbHVyZUtleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOTUxZTI3NGI3ZjBhMGQw
YmQwMjg5MmYzYjY5ZWIxNDVhNjE3YmQ5MS4uMTM5YTY4YjU2MjVjNTBmN2YwY2I0MmMxNWMyNTM5
OTM0YjcxYTE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVk
ZSAiUGFnZURlYnVnZ2FibGUuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQ
YWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQZXJmb3JtYW5jZU1vbml0b3IuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJQbHVn
SW5DbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCkBAIC0xMjcsMTMgKzEyOCwxMyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIGNoYW5uZWwsICIlcCAtIFBhZ2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQot
CiBzdGF0aWMgSGFzaFNldDxQYWdlKj4qIGFsbFBhZ2VzOworc3RhdGljIHVuc2lnbmVkIHRhYlBh
Z2VDb3VudCB7IDAgfTsKIAotc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIGNwdVVz
YWdlTWVhc3VyZW1lbnREZWxheSB7IDUgfTsKLXN0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vj
b25kcyBwb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnREdXJhdGlvbiB7IDEwIH07Ci1zdGF0aWMg
Y29uc3Qgc3RkOjpjaHJvbm86Om1pbnV0ZXMgYmFja2dyb3VuZENQVVVzYWdlTWVhc3VyZW1lbnRE
dXJhdGlvbiB7IDUgfTsKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1RhYlBhZ2VDaHJvbWVDbGllbnQo
Q2hyb21lQ2xpZW50JiBjaHJvbWVDbGllbnQpCit7CisgICAgcmV0dXJuICFjaHJvbWVDbGllbnQu
aXNFbXB0eUNocm9tZUNsaWVudCgpICYmICFjaHJvbWVDbGllbnQuaXNTVkdJbWFnZUNocm9tZUNs
aWVudCgpOworfQogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVh
a0NvdW50ZXIsIHBhZ2VDb3VudGVyLCAoIlBhZ2UiKSk7CiAKQEAgLTI1Myw4ICsyNTQsOCBAQCBQ
YWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBt
X3Zpc2l0ZWRMaW5rU3RvcmUoKldURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtT
dG9yZSkpCiAgICAgLCBtX3Nlc3Npb25JRChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkK
ICAgICAsIG1faXNDbG9zaW5nKGZhbHNlKQotICAgICwgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRp
bWVyKCp0aGlzLCAmUGFnZTo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UpCi0gICAgLCBtX3Bvc3RC
YWNrZ3JvdW5kaW5nQ1BVVXNhZ2VUaW1lcigqdGhpcywgJlBhZ2U6Om1lYXN1cmVQb3N0QmFja2dy
b3VuZGluZ0NQVVVzYWdlKQorICAgICwgbV9pc1RhYlBhZ2UoaXNUYWJQYWdlQ2hyb21lQ2xpZW50
KGNocm9tZSgpLmNsaWVudCgpKSkKKyAgICAsIG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVGFiUGFn
ZSgpID8gc3RkOjptYWtlX3VuaXF1ZTxQZXJmb3JtYW5jZU1vbml0b3I+KCp0aGlzKSA6IG51bGxw
dHIpCiB7CiAgICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIApAQCAtMjcxLDYgKzI3
Miw4IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikK
IAogICAgIEFTU0VSVCghYWxsUGFnZXMtPmNvbnRhaW5zKHRoaXMpKTsKICAgICBhbGxQYWdlcy0+
YWRkKHRoaXMpOworICAgIGlmIChpc1RhYlBhZ2UoKSkKKyAgICAgICAgKyt0YWJQYWdlQ291bnQ7
CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgcGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC0yOTUs
NiArMjk4LDggQEAgUGFnZTo6flBhZ2UoKQogICAgIG1fbWFpbkZyYW1lLT5zZXRWaWV3KG51bGxw
dHIpOwogICAgIHNldEdyb3VwTmFtZShTdHJpbmcoKSk7CiAgICAgYWxsUGFnZXMtPnJlbW92ZSh0
aGlzKTsKKyAgICBpZiAoaXNUYWJQYWdlKCkpCisgICAgICAgIC0tdGFiUGFnZUNvdW50OwogICAg
IAogICAgIG1fc2V0dGluZ3MtPnBhZ2VEZXN0cm95ZWQoKTsKIApAQCAtOTM0LDkxICs5MzksMjEg
QEAgdm9pZCBQYWdlOjpzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24gdXNlckludGUKIAogdm9pZCBQYWdlOjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpCiB7Ci0gICAgbV9wb3N0TG9hZENQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7Ci0gICAg
bV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV9wZXJmb3JtYW5j
ZU1vbml0b3IpCisgICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5kaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpOwogfQogCiB2b2lkIFBhZ2U6OmRpZEZpbmlzaExvYWQoKQogewogICAgIHJlc2V0
UmVsZXZhbnRQYWludGVkT2JqZWN0Q291bnRlcigpOwogCi0gICAgLy8gT25seSBkbyBwb3N0LWxv
YWQgQ1BVIHVzYWdlIG1lYXN1cmVtZW50IGlmIHRoZXJlIGlzIGEgc2luZ2xlIFBhZ2UgaW4gdGhl
IHByb2Nlc3MgaW4gb3JkZXIgdG8gcmVkdWNlIG5vaXNlLgotICAgIGlmIChTZXR0aW5nczo6aXNQ
b3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkgJiYgYWxsUGFnZXMtPnNpemUoKSA9
PSAxKSB7Ci0gICAgICAgIG1fcG9zdExvYWRDUFVUaW1lID0gc3RkOjpudWxsb3B0OwotICAgICAg
ICBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIuc3RhcnRPbmVTaG90KGNwdVVzYWdlTWVhc3Vy
ZW1lbnREZWxheSk7Ci0gICAgfQotfQotCi1zdGF0aWMgU3RyaW5nIGZvcmVncm91bmRDUFVVc2Fn
ZVRvRGlhZ25vc3RpY0xvZ2dpbktleShkb3VibGUgY3B1VXNhZ2UpCi17Ci0gICAgaWYgKGNwdVVz
YWdlIDwgMTApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkJlbG93MTAiKTsKLSAgICBp
ZiAoY3B1VXNhZ2UgPCAyMCkKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMTB0bzIwIik7
Ci0gICAgaWYgKGNwdVVzYWdlIDwgNDApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjIw
dG80MCIpOwotICAgIGlmIChjcHVVc2FnZSA8IDYwKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCI0MHRvNjAiKTsKLSAgICBpZiAoY3B1VXNhZ2UgPCA4MCkKLSAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiNjB0bzgwIik7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib3ZlcjgwIik7
Ci19Ci0KLXZvaWQgUGFnZTo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UoKQotewotICAgIGlmIChh
bGxQYWdlcy0+c2l6ZSgpICE9IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9wb3N0
TG9hZENQVVRpbWUpIHsKLSAgICAgICAgbV9wb3N0TG9hZENQVVRpbWUgPSBnZXRDUFVUaW1lKCk7
Ci0gICAgICAgIGlmIChtX3Bvc3RMb2FkQ1BVVGltZSkKLSAgICAgICAgICAgIG1fcG9zdFBhZ2VM
b2FkQ1BVVXNhZ2VUaW1lci5zdGFydE9uZVNob3QocG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50
RHVyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHN0ZDo6b3B0aW9uYWw8Q1BV
VGltZT4gY3B1VGltZSA9IGdldENQVVRpbWUoKTsKLSAgICBpZiAoIWNwdVRpbWUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGRvdWJsZSBjcHVVc2FnZSA9IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50
YWdlQ1BVVXNhZ2VTaW5jZSgqbV9wb3N0TG9hZENQVVRpbWUpOwotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUGVyZm9ybWFuY2VMb2dnaW5nLCAibWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2U6IFBy
b2Nlc3Mgd2FzIHVzaW5nICUuMWYlJSBwZXJjZW50IENQVSBhZnRlciB0aGUgcGFnZSBsb2FkLiIs
IGNwdVVzYWdlKTsKLSAgICBkaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNN
ZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cG9zdFBhZ2VMb2FkS2V5KCks
IERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3B1VXNhZ2VLZXkoKSwgZm9yZWdyb3VuZENQVVVzYWdl
VG9EaWFnbm9zdGljTG9nZ2luS2V5KGNwdVVzYWdlKSwgU2hvdWxkU2FtcGxlOjpObyk7CisgICAg
aWYgKG1fcGVyZm9ybWFuY2VNb25pdG9yKQorICAgICAgICBtX3BlcmZvcm1hbmNlTW9uaXRvci0+
ZGlkRmluaXNoTG9hZCgpOwogfQogCi1zdGF0aWMgU3RyaW5nIGJhY2tncm91bmRDUFVVc2FnZVRv
RGlhZ25vc3RpY0xvZ2dpbktleShkb3VibGUgY3B1VXNhZ2UpCitib29sIFBhZ2U6OmlzT25seVRh
YlBhZ2UoKSBjb25zdAogewotICAgIGlmIChjcHVVc2FnZSA8IDEpCi0gICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoIkJlbG93MSIpOwotICAgIGlmIChjcHVVc2FnZSA8IDUpCi0gICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoIjF0bzUiKTsKLSAgICBpZiAoY3B1VXNhZ2UgPCAxMCkKLSAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiNXRvMTAiKTsKLSAgICBpZiAoY3B1VXNhZ2UgPCAzMCkK
LSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMTB0bzMwIik7Ci0gICAgaWYgKGNwdVVzYWdl
IDwgNTApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjMwdG81MCIpOwotICAgIGlmIChj
cHVVc2FnZSA8IDcwKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI1MHRvNzAiKTsKLSAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvdmVyNzAiKTsKLX0KLQotdm9pZCBQYWdlOjptZWFzdXJl
UG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZSgpCi17Ci0gICAgaWYgKGFsbFBhZ2VzLT5zaXplKCkg
IT0gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BV
VGltZSkgewotICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSA9IGdldENQVVRpbWUo
KTsKLSAgICAgICAgaWYgKG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lKQotICAgICAgICAgICAg
bV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIuc3RhcnRPbmVTaG90KGJhY2tncm91bmRD
UFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IGdldENQVVRpbWUoKTsKLSAgICBpZiAo
IWNwdVRpbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRvdWJsZSBjcHVVc2FnZSA9IGNwdVRp
bWUudmFsdWUoKS5wZXJjZW50YWdlQ1BVVXNhZ2VTaW5jZSgqbV9wb3N0QmFja2dyb3VuZGluZ0NQ
VVRpbWUpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUGVyZm9ybWFuY2VMb2dnaW5nLCAi
bWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2U6IFByb2Nlc3Mgd2FzIHVzaW5nICUuMWYl
JSBwZXJjZW50IENQVSBhZnRlciBiZWNvbWluZyBub24gdmlzaWJsZS4iLCBjcHVVc2FnZSk7Ci0g
ICAgZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnBvc3RQYWdlQmFja2dyb3VuZGluZ0tleSgpLCBEaWFn
bm9zdGljTG9nZ2luZ0tleXM6OmNwdVVzYWdlS2V5KCksIGJhY2tncm91bmRDUFVVc2FnZVRvRGlh
Z25vc3RpY0xvZ2dpbktleShjcHVVc2FnZSksIFNob3VsZFNhbXBsZTo6Tm8pOworICAgIHJldHVy
biBpc1RhYlBhZ2UoKSAmJiB0YWJQYWdlQ291bnQgPT0gMTsKIH0KIAogdm9pZCBQYWdlOjpzZXRU
b3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQpAQCAtMTU3MCw2ICsxNTA1LDkgQEAg
dm9pZCBQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5
U3RhdGUpCiAKICAgICBpZiAod2FzVmlzaWJsZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3Rp
dmUoKSkKICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVOb3dQbGF5
aW5nSW5mb0lmTmVjZXNzYXJ5KCk7CisKKyAgICBpZiAobV9wZXJmb3JtYW5jZU1vbml0b3IpCisg
ICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5hY3Rpdml0eVN0YXRlQ2hhbmdlZChvbGRBY3Rp
dml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlKTsKIH0KIAogYm9vbCBQYWdlOjppc1Zpc2libGVBbmRB
Y3RpdmUoKSBjb25zdApAQCAtMTYyNiwxMyArMTU2NCw2IEBAIHZvaWQgUGFnZTo6c2V0SXNWaXNp
YmxlSW50ZXJuYWwoYm9vbCBpc1Zpc2libGUpCiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcg
PSBtYWluRnJhbWUoKS52aWV3KCkpCiAgICAgICAgICAgICB2aWV3LT5oaWRlKCk7CiAgICAgfQot
Ci0gICAgLy8gTWVhc3VyZSBDUFUgdXNhZ2Ugb2YgcGFnZXMgd2hlbiB0aGV5IGFyZSBubyBsb25n
ZXIgdmlzaWJsZS4KLSAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSA9IHN0ZDo6bnVsbG9w
dDsKLSAgICBpZiAoaXNWaXNpYmxlKQotICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNh
Z2VUaW1lci5zdG9wKCk7Ci0gICAgZWxzZSBpZiAoU2V0dGluZ3M6OmlzUG9zdEJhY2tncm91bmRp
bmdDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpICYmIGFsbFBhZ2VzLT5zaXplKCkgPT0gMSkK
LSAgICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIuc3RhcnRPbmVTaG90KGNw
dVVzYWdlTWVhc3VyZW1lbnREZWxheSk7CiB9CiAKIHZvaWQgUGFnZTo6c2V0SXNQcmVyZW5kZXIo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAppbmRleCAwMmI1MDQ0ZjMxNTgxMzkzZDRhYWUxNGVmOWMwNWRmMGZmNzdh
ZDJjLi42YThlZGNhMzBjYzU1M2ZiODZkNzllNjA3ZjAyMGQ0OWI2ZWM3N2NhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaApAQCAtMjEsNyArMjEsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBY3Rpdml0
eVN0YXRlLmgiCi0jaW5jbHVkZSAiQ1BVVGltZS5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkxheW91dE1pbGVzdG9u
ZXMuaCIKQEAgLTEwNSw2ICsxMDQsNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNz
IFBhZ2VDb25zb2xlQ2xpZW50OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7CiBjbGFzcyBQYWdlR3Jv
dXA7CitjbGFzcyBQZXJmb3JtYW5jZU1vbml0b3I7CiBjbGFzcyBQbHVnSW5DbGllbnQ7CiBjbGFz
cyBQbHVnaW5EYXRhOwogY2xhc3MgUGx1Z2luSW5mb1Byb3ZpZGVyOwpAQCAtMzU3LDYgKzM1Nyw4
IEBAIHB1YmxpYzoKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMgd2hlbiB0aGUgUGFnZSBzdGFydHMg
YW5kIHN0b3BzIGJlaW5nIHByZXNlbnRlZCB2aWEgYSBuYXRpdmUgd2luZG93LgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyk7Cisg
ICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWN0aXZpdHlTdGF0ZTsgfQorCiAgICAgYm9vbCBpc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzVmlzaWJsZShib29sKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldElzUHJlcmVuZGVyKCk7CkBAIC01NTksNiArNTYxLDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoc3RkOjpvcHRp
b25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gdGhyb3R0bGluZykgeyBtX2V2ZW50VGhyb3R0
bGluZ0JlaGF2aW9yT3ZlcnJpZGUgPSB0aHJvdHRsaW5nOyB9CiAKICAgICBXZWJHTFN0YXRlVHJh
Y2tlciogd2ViR0xTdGF0ZVRyYWNrZXIoKSBjb25zdCB7IHJldHVybiBtX3dlYkdMU3RhdGVUcmFj
a2VyLmdldCgpOyB9CisKKyAgICBib29sIGlzT25seVRhYlBhZ2UoKSBjb25zdDsKKyAgICBib29s
IGlzVGFiUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUYWJQYWdlOyB9CisKIHByaXZhdGU6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAtNTcyLDkgKzU3OCw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjaGVja1N1YmZyYW1lQ291bnRDb25zaXN0ZW5jeSgpIGNvbnN0
OwogI2VuZGlmCiAKLSAgICB2b2lkIG1lYXN1cmVQb3N0TG9hZENQVVVzYWdlKCk7Ci0gICAgdm9p
ZCBtZWFzdXJlUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZSgpOwotCiAgICAgZW51bSBTaG91bGRI
aWdobGlnaHRNYXRjaGVzIHsgRG9Ob3RIaWdobGlnaHRNYXRjaGVzLCBIaWdobGlnaHRNYXRjaGVz
IH07CiAgICAgZW51bSBTaG91bGRNYXJrTWF0Y2hlcyB7IERvTm90TWFya01hdGNoZXMsIE1hcmtN
YXRjaGVzIH07CiAKQEAgLTc1NiwxNSArNzU5LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3No
b3dBbGxQbHVnaW5zIHsgZmFsc2UgfTsKICAgICBib29sIG1fY29udHJvbGxlZEJ5QXV0b21hdGlv
biB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Jlc291cmNlQ2FjaGluZ0Rpc2FibGVkIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faXNUYWJQYWdlOwogICAgIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHsgVXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjo6TFRSIH07CiAgICAgCiAgICAgLy8gRm9yIHRlc3RpbmcuCiAgICAgc3RkOjpvcHRp
b25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gbV9ldmVudFRocm90dGxpbmdCZWhhdmlvck92
ZXJyaWRlOwogCi0gICAgVGltZXIgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyOwotICAgIHN0
ZDo6b3B0aW9uYWw8Q1BVVGltZT4gbV9wb3N0TG9hZENQVVRpbWU7Ci0gICAgVGltZXIgbV9wb3N0
QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXI7Ci0gICAgc3RkOjpvcHRpb25hbDxDUFVUaW1lPiBt
X3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGVyZm9ybWFu
Y2VNb25pdG9yPiBtX3BlcmZvcm1hbmNlTW9uaXRvcjsKIH07CiAKIGlubGluZSBQYWdlR3JvdXAm
IFBhZ2U6Omdyb3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZWYzY2VhNDI2NzZlNTkwNDJjYmNlNTc3MDUwNmExYjFmMDAzYmZhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3Iu
Y3BwCkBAIC0wLDAgKzEsMTk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlBlcmZvcm1hbmNlTW9uaXRvci5oIgorCisjaW5jbHVkZSAiQ2hyb21lLmgiCisj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQuaCIKKyNpbmNsdWRlICJEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWws
IGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihtX3BhZ2UuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIGNoYW5uZWwsICIlcCAtIFBlcmZvcm1hbmNlTW9uaXRvcjo6IiBmbXQsIHRoaXMsICMjX19W
QV9BUkdTX18pCisKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBjcHVVc2FnZU1l
YXN1cmVtZW50RGVsYXkgeyA1IH07CitzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMg
cG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24geyAxMCB9Oworc3RhdGljIGNvbnN0
IHN0ZDo6Y2hyb25vOjptaW51dGVzIGJhY2tncm91bmRDUFVVc2FnZU1lYXN1cmVtZW50RHVyYXRp
b24geyA1IH07CitzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86Om1pbnV0ZXMgY3B1VXNhZ2VTYW1w
bGluZ0ludGVydmFsIHsgMTAgfTsKKworc3RhdGljIGlubGluZSBBY3Rpdml0eVN0YXRlRm9yQ1BV
U2FtcGxpbmcgYWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKEFjdGl2aXR5U3RhdGU6OkZsYWdz
IHN0YXRlKQoreworICAgIGlmICghKHN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSkK
KyAgICAgICAgcmV0dXJuIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6Tm9uVmlzaWJsZTsK
KyAgICBpZiAoc3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkKKyAgICAgICAg
cmV0dXJuIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6VmlzaWJsZUFuZEFjdGl2ZTsKKyAg
ICByZXR1cm4gQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpWaXNpYmxlTm9uQWN0aXZlOwor
fQorCitQZXJmb3JtYW5jZU1vbml0b3I6OlBlcmZvcm1hbmNlTW9uaXRvcihQYWdlJiBwYWdlKQor
ICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIoKnRo
aXMsICZQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0TG9hZENQVVVzYWdlKQorICAgICwg
bV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIoKnRoaXMsICZQZXJmb3JtYW5jZU1vbml0
b3I6Om1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlKQorICAgICwgbV9wZXJBY3Rpdml0
eVN0YXRlQ1BVVXNhZ2VUaW1lcigqdGhpcywgJlBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZSkKK3sKKyAgICBBU1NFUlQocGFnZS5pc1RhYlBhZ2UoKSk7
CisKKyAgICBpZiAoU2V0dGluZ3M6OmlzUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlTWVhc3VyZW1l
bnRFbmFibGVkKCkpIHsKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSA9IGdldENQ
VVRpbWUoKTsKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VUaW1lci5zdGFydFJl
cGVhdGluZyhjcHVVc2FnZVNhbXBsaW5nSW50ZXJ2YWwpOworICAgIH0KK30KKwordm9pZCBQZXJm
b3JtYW5jZU1vbml0b3I6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKK3sKKyAgICBtX3Bvc3RM
b2FkQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGlt
ZXIuc3RvcCgpOworfQorCit2b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6ZGlkRmluaXNoTG9hZCgp
Cit7CisgICAgLy8gT25seSBkbyBwb3N0LWxvYWQgQ1BVIHVzYWdlIG1lYXN1cmVtZW50IGlmIHRo
ZXJlIGlzIGEgc2luZ2xlIFBhZ2UgaW4gdGhlIHByb2Nlc3MgaW4gb3JkZXIgdG8gcmVkdWNlIG5v
aXNlLgorICAgIGlmIChTZXR0aW5nczo6aXNQb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnRFbmFi
bGVkKCkgJiYgbV9wYWdlLmlzT25seVRhYlBhZ2UoKSkgeworICAgICAgICBtX3Bvc3RMb2FkQ1BV
VGltZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVy
LnN0YXJ0T25lU2hvdChjcHVVc2FnZU1lYXN1cmVtZW50RGVsYXkpOworICAgIH0KK30KKwordm9p
ZCBQZXJmb3JtYW5jZU1vbml0b3I6OmFjdGl2aXR5U3RhdGVDaGFuZ2VkKEFjdGl2aXR5U3RhdGU6
OkZsYWdzIG9sZFN0YXRlLCBBY3Rpdml0eVN0YXRlOjpGbGFncyBuZXdTdGF0ZSkKK3sKKyAgICBB
Y3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0gb2xkU3RhdGUgXiBuZXdTdGF0ZTsKKyAgICBi
b29sIHZpc2liaWxpdHlDaGFuZ2VkID0gY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJs
ZTsKKworICAgIC8vIE1lYXN1cmUgQ1BVIHVzYWdlIG9mIHBhZ2VzIHdoZW4gdGhleSBhcmUgbm8g
bG9uZ2VyIHZpc2libGUuCisgICAgaWYgKFNldHRpbmdzOjppc1Bvc3RCYWNrZ3JvdW5kaW5nQ1BV
VXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKSAmJiB2aXNpYmlsaXR5Q2hhbmdlZCkgeworICAgICAg
ICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYg
KG5ld1N0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQorICAgICAgICAgICAgbV9wb3N0
QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIuc3RvcCgpOworICAgICAgICBlbHNlIGlmIChtX3Bh
Z2UuaXNPbmx5VGFiUGFnZSgpKQorICAgICAgICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVVz
YWdlVGltZXIuc3RhcnRPbmVTaG90KGNwdVVzYWdlTWVhc3VyZW1lbnREZWxheSk7CisgICAgfQor
CisgICAgaWYgKFNldHRpbmdzOjppc1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZU1lYXN1cmVtZW50
RW5hYmxlZCgpKSB7CisgICAgICAgIC8vIElmIHZpc2liaWxpdHkgY2hhbmdlZCB0aGVuIHJlcG9y
dCBDUFUgdXNhZ2UgcmlnaHQgYXdheSBiZWNhdXNlIENQVSB1c2FnZSBpcyBjb25uZWN0ZWQgdG8g
dmlzaWJpbGl0eSBzdGF0ZS4KKyAgICAgICAgYXV0byBvbGRBY3Rpdml0eVN0YXRlRm9yQ1BVU2Ft
cGxpbmcgPSBhY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcob2xkU3RhdGUpOworICAgICAgICBp
ZiAob2xkQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nICE9IGFjdGl2aXR5U3RhdGVGb3JDUFVT
YW1wbGluZyhuZXdTdGF0ZSkpIHsKKyAgICAgICAgICAgIG1lYXN1cmVDUFVVc2FnZUluQWN0aXZp
dHlTdGF0ZShvbGRBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpOworICAgICAgICAgICAgbV9w
ZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VUaW1lci5zdGFydFJlcGVhdGluZyhjcHVVc2FnZVNhbXBs
aW5nSW50ZXJ2YWwpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFBlcmZvcm1hbmNlTW9u
aXRvcjo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UoKQoreworICAgIGlmICghbV9wYWdlLmlzT25s
eVRhYlBhZ2UoKSkgeworICAgICAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9wb3N0TG9hZENQVVRpbWUpIHsK
KyAgICAgICAgbV9wb3N0TG9hZENQVVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgICAgIGlmICht
X3Bvc3RMb2FkQ1BVVGltZSkKKyAgICAgICAgICAgIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1l
ci5zdGFydE9uZVNob3QocG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24pOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9
IGdldENQVVRpbWUoKTsKKyAgICBpZiAoIWNwdVRpbWUpCisgICAgICAgIHJldHVybjsKKworICAg
IGRvdWJsZSBjcHVVc2FnZSA9IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50YWdlQ1BVVXNhZ2VTaW5j
ZSgqbV9wb3N0TG9hZENQVVRpbWUpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUGVyZm9y
bWFuY2VMb2dnaW5nLCAibWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2U6IFByb2Nlc3Mgd2FzIHVzaW5n
ICUuMWYlJSBDUFUgYWZ0ZXIgdGhlIHBhZ2UgbG9hZC4iLCBjcHVVc2FnZSk7CisgICAgbV9wYWdl
LmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUo
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpwb3N0UGFnZUxvYWRLZXkoKSwgRGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjpjcHVVc2FnZUtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmZvcmVncm91bmRD
UFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dpbmdLZXkoY3B1VXNhZ2UpLCBTaG91bGRTYW1wbGU6Ok5v
KTsKK30KKwordm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0QmFja2dyb3VuZGlu
Z0NQVVVzYWdlKCkKK3sKKyAgICBpZiAoIW1fcGFnZS5pc09ubHlUYWJQYWdlKCkpIHsKKyAgICAg
ICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lKSB7Cisg
ICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lID0gZ2V0Q1BVVGltZSgpOworICAgICAg
ICBpZiAobV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWUpCisgICAgICAgICAgICBtX3Bvc3RCYWNr
Z3JvdW5kaW5nQ1BVVXNhZ2VUaW1lci5zdGFydE9uZVNob3QoYmFja2dyb3VuZENQVVVzYWdlTWVh
c3VyZW1lbnREdXJhdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc3RkOjpvcHRp
b25hbDxDUFVUaW1lPiBjcHVUaW1lID0gZ2V0Q1BVVGltZSgpOworICAgIGlmICghY3B1VGltZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZG91YmxlIGNwdVVzYWdlID0gY3B1VGltZS52YWx1ZSgp
LnBlcmNlbnRhZ2VDUFVVc2FnZVNpbmNlKCptX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQZXJmb3JtYW5jZUxvZ2dpbmcsICJtZWFzdXJlUG9z
dEJhY2tncm91bmRpbmdDUFVVc2FnZTogUHJvY2VzcyB3YXMgdXNpbmcgJS4xZiUlIENQVSBhZnRl
ciBiZWNvbWluZyBub24gdmlzaWJsZS4iLCBjcHVVc2FnZSk7CisgICAgbV9wYWdlLmRpYWdub3N0
aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpwb3N0UGFnZUJhY2tncm91bmRpbmdLZXkoKSwgRGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjpjcHVVc2FnZUtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmJhY2tncm91bmRD
UFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dpbmdLZXkoY3B1VXNhZ2UpLCBTaG91bGRTYW1wbGU6Ok5v
KTsKK30KKwordm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2UoKQoreworICAgIG1lYXN1cmVDUFVVc2FnZUluQWN0aXZpdHlTdGF0ZShhY3Rpdml0
eVN0YXRlRm9yQ1BVU2FtcGxpbmcobV9wYWdlLmFjdGl2aXR5U3RhdGUoKSkpOworfQorCitzdGF0
aWMgaW5saW5lIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckNQVVNhbXBsaW5nQWN0aXZpdHlTdGF0ZShB
Y3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgYWN0aXZpdHlTdGF0ZSkKK3sKKyAgICBzd2l0Y2gg
KGFjdGl2aXR5U3RhdGUpIHsKKyAgICBjYXNlIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6
Tm9uVmlzaWJsZToKKyAgICAgICAgcmV0dXJuICJOb25WaXNpYmxlIjsKKyAgICBjYXNlIEFjdGl2
aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6VmlzaWJsZU5vbkFjdGl2ZToKKyAgICAgICAgcmV0dXJu
ICJWaXNpYmxlTm9uQWN0aXZlIjsKKyAgICBjYXNlIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGlu
Zzo6VmlzaWJsZUFuZEFjdGl2ZToKKyAgICAgICAgcmV0dXJuICJWaXNpYmxlQW5kQWN0aXZlIjsK
KyAgICB9Cit9CisKK3ZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlQ1BVVXNhZ2VJbkFj
dGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nIGFjdGl2aXR5U3RhdGUpCit7
CisgICAgaWYgKCFtX3BhZ2UuaXNPbmx5VGFiUGFnZSgpKSB7CisgICAgICAgIG1fcGVyQWN0aXZp
dHlTdGF0ZUNQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoIW1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWUpIHsKKyAgICAgICAgbV9wZXJBY3Rp
dml0eVN0YXRlQ1BVVGltZSA9IGdldENQVVRpbWUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IGdldENQVVRpbWUoKTsKKyAg
ICBpZiAoIWNwdVRpbWUpIHsKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSA9IHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgIGRvdWJsZSBjcHVVc2FnZSA9IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50YWdl
Q1BVVXNhZ2VTaW5jZSgqbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQZXJmb3JtYW5jZUxvZ2dpbmcsICJtZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2
aXR5U3RhdGU6IFByb2Nlc3MgaXMgdXNpbmcgJS4xZiUlIENQVSBpbiBzdGF0ZTogJXMiLCBjcHVV
c2FnZSwgc3RyaW5nRm9yQ1BVU2FtcGxpbmdBY3Rpdml0eVN0YXRlKGFjdGl2aXR5U3RhdGUpKTsK
KyNlbmRpZgorICAgIG1fcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5yZXBvcnRQcm9jZXNzQ1BVVGlt
ZSgoY3B1VGltZS52YWx1ZSgpLnN5c3RlbVRpbWUgKyBjcHVUaW1lLnZhbHVlKCkudXNlclRpbWUp
IC0gKG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWUudmFsdWUoKS5zeXN0ZW1UaW1lICsgbV9wZXJB
Y3Rpdml0eVN0YXRlQ1BVVGltZS52YWx1ZSgpLnVzZXJUaW1lKSwgYWN0aXZpdHlTdGF0ZSk7CisK
KyAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lID0gV1RGTW92ZShjcHVUaW1lKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZU1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25p
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjBjYWMwMGI4ZTU2ODgzNzEyNjQ0MGVmNGRmOTFhNTE0OGI1OTg1
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25p
dG9yLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgorI2luY2x1ZGUgIkNQVVRpbWUuaCIKKyNpbmNsdWRlICJU
aW1lci5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFBhZ2U7CisKK2NsYXNzIFBlcmZvcm1hbmNlTW9uaXRvciB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgUGVyZm9ybWFuY2VNb25pdG9yKFBhZ2UmKTsKKworICAgIHZvaWQgZGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWQoKTsKKyAgICB2b2lk
IGFjdGl2aXR5U3RhdGVDaGFuZ2VkKEFjdGl2aXR5U3RhdGU6OkZsYWdzIG9sZFN0YXRlLCBBY3Rp
dml0eVN0YXRlOjpGbGFncyBuZXdTdGF0ZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBtZWFzdXJl
UG9zdExvYWRDUFVVc2FnZSgpOworICAgIHZvaWQgbWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BV
VXNhZ2UoKTsKKyAgICB2b2lkIG1lYXN1cmVQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2UoKTsKKyAg
ICB2b2lkIG1lYXN1cmVDUFVVc2FnZUluQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlRm9yQ1BV
U2FtcGxpbmcpOworCisgICAgUGFnZSYgbV9wYWdlOworCisgICAgVGltZXIgbV9wb3N0UGFnZUxv
YWRDUFVVc2FnZVRpbWVyOworICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gbV9wb3N0TG9hZENQ
VVRpbWU7CisgICAgVGltZXIgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXI7CisgICAg
c3RkOjpvcHRpb25hbDxDUFVUaW1lPiBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZTsKKyAgICBU
aW1lciBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVRpbWVyOworICAgIHN0ZDo6b3B0aW9uYWw8
Q1BVVGltZT4gbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZTsKK307CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAKaW5kZXggNzU5Nzk2YWZiYTAwN2E2NzFjMzM1NjVhYWE1NzI4NjUwODEwNzVk
My4uNmJiOWQwM2E4YjM0YzE5NjgyNGE4ZDJiZWRjZGUzZGFhYWUxZDQyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAKQEAgLTc3OCwyNCArNzc4LDYgQEAgYm9vbCBTZXR0aW5nczo6Z2xvYmFs
Q29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKQogI2VuZGlmCiB9CiAKLWJvb2wgU2V0dGlu
Z3M6OmlzUG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpCi17Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNl
bmRpZgotfQotCi1ib29sIFNldHRpbmdzOjppc1Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VNZWFz
dXJlbWVudEVuYWJsZWQoKQotewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXR1cm4gdHJ1ZTsK
LSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KIHZvaWQgU2V0dGluZ3M6OnNl
dEFsbG93c0FueVNTTENlcnRpZmljYXRlKGJvb2wgYWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZSkKIHsK
ICAgICBnQWxsb3dzQW55U1NMQ2VydGlmaWNhdGUgPSBhbGxvd0FueVNTTENlcnRpZmljYXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IGE5NzQwMjE2ZTU2YWQxNzc0ZDY5ZmI2Y2U4NTBlOGVi
MTY4ZWZiNTUuLjJkM2M4M2M5N2I1OWUyMmU0ODMxYjVkOTVlMDY2ODEyNTZjNTQ5OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKQEAgLTIwMSw2ICsyMDEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgYm9vbCBpc1Bvc3RMb2FkQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKTsKICAgICBzdGF0
aWMgYm9vbCBpc1Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKTsK
KyAgICBzdGF0aWMgYm9vbCBpc1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZU1lYXN1cmVtZW50RW5h
YmxlZCgpOwogCiAgICAgc3RhdGljIGJvb2wgZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxk
VGhyb3coKTsKIApAQCAtNDIzLDQgKzQyNCwzMSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29s
IGdBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZTsKIH07CiAKK2lubGluZSBib29sIFNldHRpbmdzOjpp
c1Bvc3RMb2FkQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKQoreworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
K30KKworaW5saW5lIGJvb2wgU2V0dGluZ3M6OmlzUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZU1l
YXN1cmVtZW50RW5hYmxlZCgpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJldHVybiB0cnVl
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wgU2V0
dGluZ3M6OmlzUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkKK3sK
KyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Mb2dnaW5nLmgKaW5kZXggODcyMDI3MmRkMjZiNDllNTYzZWRjYWQwNjNkYWE0ZjI2ZWViNGNh
Yi4uZTNlODhhZjQwNzBmNjEyNDViMmIzZWJkMTg2NjdiNGE5NzZjMzUzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0xvZ2dpbmcuaApAQCAtNTcsNiArNTcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKE5l
dHdvcmtDYWNoZVN0b3JhZ2UpIFwKICAgICBNKE5ldHdvcmtTY2hlZHVsaW5nKSBcCiAgICAgTShO
ZXR3b3JrU2Vzc2lvbikgXAorICAgIE0oUGVyZm9ybWFuY2VMb2dnaW5nKSBcCiAgICAgTShQbHVn
aW5zKSBcCiAgICAgTShQcmludGluZykgXAogICAgIE0oUHJvY2Vzc1N1c3BlbnNpb24pIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VTYW1wbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDM3ZTk3ZWI2NGFmYTVmNWRkZDM1MjNm
MTZlNmRkZWM1NjJhOGNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwCkBAIC0wLDAgKzEsMTE2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitzdGF0aWMgY29uc3QgaW50NjRfdCBtaWNyb3NlY29uZHNQZXJTZWNvbmQgPSAxMDAwMDAw
OworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25v
OjptaW51dGVzIGxvZ2dpbmdJbnRlcnZhbCB7IDYwIH07CisKK1BlckFjdGl2aXR5U3RhdGVDUFVV
c2FnZVNhbXBsZXI6OlBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sKQorICAgIDogbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCkKKyAgICAs
IG1fbG9nZ2luZ1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXI6OmxvZ2dpbmdUaW1lckZpcmVkKQoreworICAgIG1fbGFzdENQVVRpbWUg
PSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBtX2xvZ2dpbmdUaW1lci5zdGFy
dFJlcGVhdGluZyhsb2dnaW5nSW50ZXJ2YWwpOworfQorCitQZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyOjp+UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcigpCit7Cit9CisKK3Zv
aWQgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6cmVwb3J0V2ViQ29udGVudENQVVRp
bWUoaW50NjRfdCBjcHVUaW1lLCBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgYWN0aXZpdHlT
dGF0ZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fY3B1VGltZUluQWN0aXZpdHlTdGF0ZS5hZGQo
YWN0aXZpdHlTdGF0ZSwgY3B1VGltZSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSBjcHVUaW1lOworfQorCitzdGF0aWMgaW5s
aW5lIFN0cmluZyBsb2dnaW5nS2V5Rm9yQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlRm9yQ1BV
U2FtcGxpbmcgc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgQWN0aXZp
dHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpOb25WaXNpYmxlOgorICAgICAgICByZXR1cm4gRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjpub25WaXNpYmxlU3RhdGVLZXkoKTsKKyAgICBjYXNlIEFjdGl2aXR5
U3RhdGVGb3JDUFVTYW1wbGluZzo6VmlzaWJsZU5vbkFjdGl2ZToKKyAgICAgICAgcmV0dXJuIERp
YWdub3N0aWNMb2dnaW5nS2V5czo6dmlzaWJsZU5vbkFjdGl2ZVN0YXRlS2V5KCk7CisgICAgY2Fz
ZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc6OlZpc2libGVBbmRBY3RpdmU6CisgICAgICAg
IHJldHVybiBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnZpc2libGVBbmRBY3RpdmVTdGF0ZUtleSgp
OworICAgIH0KK30KKworc3RhdGljIGlubGluZSBTdHJpbmcgbG9nZ2luZ0tleUZvckNQVVVzYWdl
KEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyBzdGF0ZSwgZG91YmxlIGNwdVVzYWdlKQorewor
ICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGlu
Zzo6Tm9uVmlzaWJsZToKKyAgICAgICAgcmV0dXJuIERpYWdub3N0aWNMb2dnaW5nS2V5czo6YmFj
a2dyb3VuZENQVVVzYWdlVG9EaWFnbm9zdGljTG9nZ2luZ0tleShjcHVVc2FnZSk7CisgICAgY2Fz
ZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc6OlZpc2libGVOb25BY3RpdmU6CisgICAgY2Fz
ZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc6OlZpc2libGVBbmRBY3RpdmU6CisgICAgICAg
IHJldHVybiBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmZvcmVncm91bmRDUFVVc2FnZVRvRGlhZ25v
c3RpY0xvZ2dpbmdLZXkoY3B1VXNhZ2UpOworICAgIH0KK30KKwordm9pZCBQZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyOjpsb2dnaW5nVGltZXJGaXJlZCgpCit7CisgICAgYXV0byogcGFn
ZSA9IHBhZ2VGb3JMb2dnaW5nKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIG1fY3B1VGlt
ZUluQWN0aXZpdHlTdGF0ZS5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
ZG91YmxlIGN1cnJlbnRDUFVUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Cisg
ICAgaW50NjRfdCBjcHVUaW1lRGVsdGEgPSAoY3VycmVudENQVVRpbWUgLSBtX2xhc3RDUFVUaW1l
KSAqIG1pY3Jvc2Vjb25kc1BlclNlY29uZDsKKworICAgIGZvciAoYXV0byYgcGFpciA6IG1fY3B1
VGltZUluQWN0aXZpdHlTdGF0ZSkgeworICAgICAgICBkb3VibGUgY3B1VXNhZ2UgPSBzdGF0aWNf
Y2FzdDxkb3VibGU+KHBhaXIudmFsdWUgKiAxMDAuKSAvIGNwdVRpbWVEZWx0YTsKKyAgICAgICAg
U3RyaW5nIGxvZ2dpbmdLZXkgPSBsb2dnaW5nS2V5Rm9yQWN0aXZpdHlTdGF0ZShwYWlyLmtleSk7
CisgICAgICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNM
b2dnaW5nS2V5czo6Y3B1VXNhZ2VLZXkoKSwgbG9nZ2luZ0tleSwgbG9nZ2luZ0tleUZvckNQVVVz
YWdlKHBhaXIua2V5LCBjcHVVc2FnZSksIGZhbHNlKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUGVy
Zm9ybWFuY2VMb2dnaW5nLCAiV2ViQ29udGVudCBwcm9jZXNzZXMgdXNlZCAlLjFmJSUgQ1BVIGlu
ICVzIHN0YXRlIiwgY3B1VXNhZ2UsIGxvZ2dpbmdLZXkudXRmOCgpLmRhdGEoKSk7CisgICAgfQor
CisgICAgbV9jcHVUaW1lSW5BY3Rpdml0eVN0YXRlLmNsZWFyKCk7CisgICAgbV9sYXN0Q1BVVGlt
ZSA9IGN1cnJlbnRDUFVUaW1lOworfQorCitXZWJQYWdlUHJveHkqIFBlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXI6OnBhZ2VGb3JMb2dnaW5nKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8m
IHdlYlByb2Nlc3MgOiBtX3Byb2Nlc3NQb29sLnByb2Nlc3NlcygpKSB7CisgICAgICAgIGlmICgh
d2ViUHJvY2Vzcy0+cGFnZUNvdW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
cmV0dXJuICp3ZWJQcm9jZXNzLT5wYWdlcygpLmJlZ2luKCk7CisgICAgfQorICAgIHJldHVybiBu
dWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRhYjZmNGI3NTU5ODU4YjE3ZTA5MGNmOWE0ZWFkNzlmNmY1Y2JmMTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlU2FtcGxlci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYlByb2Nlc3NQb29sOworCitjbGFzcyBQZXJBY3Rpdml0
eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQZXJBY3Rpdml0
eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKFdlYlByb2Nlc3NQb29sJik7CisgICAgflBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIoKTsKKworICAgIHZvaWQgcmVwb3J0V2ViQ29udGVudENQVVRp
bWUoaW50NjRfdCBjcHVUaW1lLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcp
OworCitwcml2YXRlOgorICAgIHZvaWQgbG9nZ2luZ1RpbWVyRmlyZWQoKTsKKyAgICBXZWJQYWdl
UHJveHkqIHBhZ2VGb3JMb2dnaW5nKCkgY29uc3Q7CisKKyAgICBXZWJQcm9jZXNzUG9vbCYgbV9w
cm9jZXNzUG9vbDsKKyAgICBSdW5Mb29wOjpUaW1lcjxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyPiBtX2xvZ2dpbmdUaW1lcjsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nLCBpbnQ2NF90LCBXVEY6OkludEhhc2g8V2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc+PiBDUFVUaW1lSW5BY3Rpdml0eVN0
YXRlTWFwOworICAgIENQVVRpbWVJbkFjdGl2aXR5U3RhdGVNYXAgbV9jcHVUaW1lSW5BY3Rpdml0
eVN0YXRlOworICAgIGRvdWJsZSBtX2xhc3RDUFVUaW1lOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCBjMmExOGJiMWU3OTcxNmYzM2JiYTQ1MGY4NWZkNTM4NjQ3NTBjZjRmLi5kODY0ZWY2NzU1N2Nk
YjBjNjVkOTFlMjEwNTUwYzc2ZTZjNjFkMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiUGVy
QWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNp
b24uaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2Vy
LmgiCkBAIC0xNjgsNiArMTY5LDcgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQ
STo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgICwgbV93ZWJz
aXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSgp
ID8gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUobGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9uKSkucHRyKCkgOiBudWxscHRyKQogI2lmIFBMQVRG
T1JNKE1BQykKICAgICAsIG1faGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcj4oKnRoaXMp
KQorICAgICwgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKHN0ZDo6bWFrZV91bmlx
dWU8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAg
LCBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbihmYWxzZSkKICAgICAsIG1fcHJvY2Vz
c1Rlcm1pbmF0aW9uRW5hYmxlZCh0cnVlKQpAQCAtMTQzMSw0ICsxNDMzLDEwIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnVwZGF0ZUhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlTGltaXQo
KQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SGlkZGVu
UGFnZVRpbWVyVGhyb3R0bGluZ0luY3JlYXNlTGltaXQobGltaXRJbk1pbGxpc2Vjb25kcykpOwog
fQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJDb250ZW50Q1BVVGltZShpbnQ2NF90
IGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5U3RhdGUpCit7CisgICAgaWYgKG1fcGVyQWN0aXZp
dHlTdGF0ZUNQVVVzYWdlU2FtcGxlcikKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyLT5yZXBvcnRXZWJDb250ZW50Q1BVVGltZShjcHVUaW1lLCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc+KGFjdGl2aXR5U3RhdGUpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCmluZGV4IGQ5Yjg2MDM4MmU0NzM3ZmIxMjYyNWJkNDQ2MGJjOTRmMmE2YzE4MDAu
LmFlNTZmZmU3ZDZhM2YzMjA3Y2E2YWI1ZWM3ZTk2MTVmODRiMTFkOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC04NSw2ICs4NSw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIEhpZ2hQZXJmb3JtYW5jZUdy
YXBoaWNzVXNhZ2VTYW1wbGVyOwogY2xhc3MgVUlHYW1lcGFkOworY2xhc3MgUGVyQWN0aXZpdHlT
dGF0ZUNQVVVzYWdlU2FtcGxlcjsKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uOwogY2xhc3Mg
V2ViQ29udGV4dFN1cHBsZW1lbnQ7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CkBAIC0yNTksNiAr
MjYwLDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJDYWNoZWRDcmVkZW50aWFscygpOwogICAg
IHZvaWQgdGVybWluYXRlRGF0YWJhc2VQcm9jZXNzKCk7CiAKKyAgICB2b2lkIHJlcG9ydFdlYkNv
bnRlbnRDUFVUaW1lKGludDY0X3QgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTdGF0ZSk7CisK
ICAgICB2b2lkIGFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJD
ZXJ0aWZpY2F0ZUluZm8qLCBjb25zdCBTdHJpbmcmIGhvc3QpOwogCiAgICAgV2ViUHJvY2Vzc1By
b3h5JiBjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7IC8v
IFdpbGwgcmV0dXJuIGFuIGV4aXN0aW5nIG9uZSBpZiBsaW1pdCBpcyBtZXQuCkBAIC01MzIsNiAr
NTM1LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1fYXV0b21hdGljRGFz
aFN1YnN0aXR1dGlvbk5vdGlmaWNhdGlvbk9ic2VydmVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyPiBtX2hpZ2hQZXJmb3JtYW5jZUdy
YXBoaWNzVXNhZ2VTYW1wbGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VTYW1wbGVyPiBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI7CiAjZW5k
aWYKIAogICAgIFN0cmluZyBtX292ZXJyaWRlSWNvbkRhdGFiYXNlUGF0aDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgppbmRleCA4
ZWJhOGU1MzBjNWQ0ZDE1Zjk0ZGFjZGFkYmIxNDE2NjYxZmU5NzNkLi44OTkwYzAwOTQxM2JjOWRm
ZWMxMzQwMDc2NjVlNGQyNzcwMWI0NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluCkBAIC0zNCw0ICszNCw2IEBAIG1lc3Nh
Z2VzIC0+IFdlYlByb2Nlc3NQb29sIHsKICAgICAjIFBsdWctaW4gbWVzc2FnZXMuCiAgICAgdm9p
ZCBBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKFN0cmluZyBwYWdlT3JpZ2luLCB1aW50MzJf
dCBoYXNoLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgUGx1Z0luRGlk
UmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1aW50MzJfdCBoYXNoLCBXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQorCisgICAgUmVwb3J0V2ViQ29udGVudENQVVRpbWUoaW50NjRfdCBjcHVUaW1l
LCB1aW50NjRfdCBhY3Rpdml0eVN0YXRlKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYzZWE1NmFkZDBkN2IwZTk4OWE1NDIw
M2QzMTdkNWNjNjg5OTgxODQuLjVkODhhOWRjZDZkNDcwNGEyNjdkNDk4YjhlMTdlYTExZTY2YjMz
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEyMzgsNiArMTIzOCw4IEBACiAJCTgzMUVFQkJFMUJEODVDNDMwMEJCNjRDMyAv
KiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxRUVCQkMxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgKi87IH07CiAJCTgzMkFFMjUyMUJFMkU4Q0QwMEZB
QUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJBRTI1MDFCRTJFOENEMDBGQUFF
MTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oICovOyB9OwogCQk4MzJB
RTI1MzFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJB
RTI1MTFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdl
ci5jcHAgKi87IH07CisJCTgzMkVEMThCMUUyRkUxNTcwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzMkVEMTg5MUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VTYW1wbGVyLmNwcCAqLzsgfTsKKwkJODMyRUQxOEMxRTJGRTE1NzAwNkJBNjRBIC8q
IFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkVEMThBMUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggKi87IH07CiAJCTgzNEIyNTBGMUE4MzFBOEQw
MENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCMjUwRTFBODMxQThEMDBDRkIxNTAgLyogTmV0
d29ya0NhY2hlRmlsZVN5c3RlbS5oICovOyB9OwogCQk4MzRCMjUxMjFBODQyQzg3MDBDRkIxNTAg
LyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNo
ZVN0YXRpc3RpY3MuaCAqLzsgfTsKIAkJODM2MDM0OUYxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNR
TGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJh
c2VUcmFja2VyLmNwcCAqLzsgfTsKQEAgLTMzOTEsNiArMzM5Myw4IEBACiAJCTgzMUVFQkJDMUJE
ODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyQUUyNTAxQkUyRThDRDAwRkFB
RTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzJBRTI1MTFCRTJFOENEMDBGQUFFMTAg
LyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMyRUQxODkxRTJGRTEzQjAwNkJB
NjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMkVEMThBMUUyRkUxM0IwMDZCQTY0
QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM0QjI1MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdv
cmtDYWNoZUZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0
d29ya0NhY2hlRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRC
MjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTYyOTIsNiArNjI5Niw4IEBACiAJCQkJQkM2RURBQTUxMTEyNzFDNjAwRTc2NzhC
IC8qIFBhZ2VDbGllbnQuaCAqLywKIAkJCQkxQUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFn
ZUxvYWRTdGF0ZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0ExODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VM
b2FkU3RhdGUuaCAqLywKKwkJCQk4MzJFRDE4OTFFMkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZp
dHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAgKi8sCisJCQkJODMyRUQxOEExRTJGRTEzQjAwNkJB
NjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCAqLywKIAkJCQkzNzcxNkE1
OTE5NUI5MTA1MDBFRThCMUIgLyogUHJvY2Vzc0Fzc2VydGlvbi5jcHAgKi8sCiAJCQkJODZGOTUz
NjAxOEZGNEZENDAwMURCMkVGIC8qIFByb2Nlc3NBc3NlcnRpb24uaCAqLywKIAkJCQk4NkU2N0Ey
MjE5MEY0MTE4MDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5jcHAgKi8sCkBAIC04MDgxLDYg
KzgwODcsNyBAQAogCQkJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcxNDY4
ODM0ODAwOEIxRTgxIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTgzMkVEMThDMUUyRkUxNTcwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZFNDM2NjE4QjZDMDgx
MDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxQjUxRDU5
MTdGRjAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxQTkx
RDU1MjkzNDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTkyNDUsNiArOTI1Miw3IEBACiAJCQkJOTNBODhCNDcxQkM4ODI5NzAwQUJBNUMyIC8qIEFQSUhp
dFRlc3RSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NEM0E0ODIxQTVEMDJGQTAwOTYy
M0I4IC8qIEFQSU5hdmlnYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGNjlGQTMxMTc2
RDAxNDAwNDcxQTUyIC8qIEFQSU5hdmlnYXRpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTgzMkVEMThCMUUyRkUxNTcwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAvKiBB
UElPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc4RTFBM0QxODFFRDZGRjAwMzEwMDdB
IC8qIEFQSU9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDODU3RkI2MTJCODMwRTYwMEVE
RUIyRSAvKiBBUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCmluZGV4IDczMTRmNjFmODVjMDg3OTVkZDhhOWY3N2YyZjE2ZGQ0NDY4
ZDMwY2YuLjQ5ODM0YzNhMzBlYmY5MjE1ZTlmNTRlOTFkY2IyNGVhMTNmOTRjZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTZWFyY2hQb3B1cE1lbnUu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CkBAIC0yNzQs
NiArMjc1LDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpydW5Nb2RhbCgpCiAgICAgbV9wYWdl
LnJ1bk1vZGFsKCk7CiB9CiAKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXBvcnRQcm9jZXNzQ1BV
VGltZShpbnQ2NF90IGNwdVRpbWUsIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyBhY3Rpdml0
eVN0YXRlKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6Oldl
YlByb2Nlc3NQb29sOjpSZXBvcnRXZWJDb250ZW50Q1BVVGltZShjcHVUaW1lLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYWN0aXZpdHlTdGF0ZSkpLCAwKTsKK30KKwogdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnNldFRvb2xiYXJzVmlzaWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSkKIHsKICAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRUb29sYmFyc0FyZVZpc2libGUo
dG9vbGJhcnNBcmVWaXNpYmxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA2NGU4YjE0MjJh
YTE1NGUyOWY4MmVmMmUyMTQxMjkzMmE4ZjdjNWMyLi41YzlkNzczYTcyYzA2MDhjMDIwNjhhYzFk
OWRkZjQ1ZDRhMGJkOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTY3LDYgKzY3LDggQEAg
cHJpdmF0ZToKICAgICAKICAgICBib29sIGNhblJ1bk1vZGFsKCkgZmluYWw7CiAgICAgdm9pZCBy
dW5Nb2RhbCgpIGZpbmFsOworCisgICAgdm9pZCByZXBvcnRQcm9jZXNzQ1BVVGltZShpbnQ2NF90
LCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpIGZpbmFsOwogICAgIAogICAg
IHZvaWQgc2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wpIGZpbmFsOwogICAgIGJvb2wgdG9vbGJhcnNW
aXNpYmxlKCkgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299255</attachid>
            <date>2017-01-19 11:41:53 -0800</date>
            <delta_ts>2017-01-19 11:59:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167163-20170119114005.patch</filename>
            <type>text/plain</type>
            <size>55516</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDUyMmNkMmQwMTcxNzk4
ZmRhMmY5ZmFkNzVhMWIxMjBkYzk1ZGVmZC4uMWQyZTY5MWZkZjczMDkzMzc2ODVlNjM0YjBiZTk5
YmYwNWQwMjY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE3LTAxLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHBlciBhY3Rp
dml0eSBzdGF0ZSBDUFUgdXNhZ2UgcmVwb3J0aW5nIHVzaW5nIGRpYWdub3N0aWMgbG9nZ2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3MTYzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDA1ODM0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGVyIGFjdGl2aXR5IHN0YXRlIENQ
VSB1c2FnZSByZXBvcnRpbmcgdXNpbmcgZGlhZ25vc3RpYyBsb2dnaW5nLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQWN0aXZp
dHlTdGF0ZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFn
ZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpub25WaXNpYmxlU3RhdGVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlTm9uQWN0aXZlU3RhdGVLZXkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlQW5kQWN0aXZlU3RhdGVLZXkp
OgorICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpmb3JlZ3JvdW5kQ1BV
VXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5LZXkpOgorICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpiYWNrZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5LZXkpOgor
ICAgICAgICAqIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg6CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVGFiUGFnZUNocm9tZUNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6On5QYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6aXNPbmx5VGFiUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRBY3Rpdml0
eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldElzVmlzaWJsZUludGVybmFsKToK
KyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFjdGl2aXR5
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNUYWJQYWdlKToKKyAgICAgICAgKiBw
YWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6YWN0
aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNl
TW9uaXRvcjo6UGVyZm9ybWFuY2VNb25pdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1h
bmNlTW9uaXRvcjo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
UGVyZm9ybWFuY2VNb25pdG9yOjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
cmZvcm1hbmNlTW9uaXRvcjo6YWN0aXZpdHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlUG9zdExvYWRDUFVVc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQ
VVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGb3JDUFVT
YW1wbGluZ0FjdGl2aXR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VNb25p
dG9yOjptZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2aXR5U3RhdGUpOgorICAgICAgICAqIHBhZ2UvUGVy
Zm9ybWFuY2VNb25pdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZp
dHlTdGF0ZS5oLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjppc1Bvc3RMb2FkQ1BVVXNh
Z2VNZWFzdXJlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmlzUG9z
dEJhY2tncm91bmRpbmdDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXR0aW5nczo6aXNQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJs
ZWQpOgorCiAyMDE3LTAxLTE5ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlYmFzZWxpbmUgYmluZGluZ3MgdGVzdHMgYWZ0ZXIgcjIxMDkxOC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBjMWJlNzE1MjBhYmE3Y2NiOTU5ZDdhMDBmZDhmNWIyZWQ3YTgxNDI2Li44ZTFmMjU3
NmQ1ODZmMmZhYjAxOThkOGY0OGI3NmQwNDYxZjUyOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzMgQEAKKzIwMTctMDEtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgcGVyIGFjdGl2aXR5IHN0YXRlIENQVSB1c2FnZSByZXBvcnRpbmcgdXNp
bmcgZGlhZ25vc3RpYyBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjcxNjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMDU4MzQ5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBwZXIgYWN0aXZpdHkgc3RhdGUgQ1BVIHVzYWdlIHJlcG9ydGluZyB1c2luZyBkaWFnbm9zdGlj
IGxvZ2dpbmcuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6UGVyQWN0aXZpdHlT
dGF0ZUNQVVVzYWdlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlBlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXI6On5QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKToKKyAgICAg
ICAgKFdlYktpdDo6UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6cmVwb3J0V2ViQ29u
dGVudENQVVRpbWUpOgorICAgICAgICAoV2ViS2l0Ojpsb2dnaW5nS2V5Rm9yQWN0aXZpdHlTdGF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OmxvZ2dpbmdLZXlGb3JDUFVVc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI6OmxvZ2dpbmdUaW1lckZpcmVk
KToKKyAgICAgICAgKFdlYktpdDo6UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6cGFn
ZUZvckxvZ2dpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0
ZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJDb250ZW50Q1BVVGltZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cmVwb3J0UHJvY2Vzc0NQ
VVRpbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lmg6CisKIDIwMTctMDEtMTggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnN0YWxsIFdlYktpdC5hcGlub3RlcyB3aXRoIHRoZSBwdWJsaWMgaGVh
ZGVycyBvZiBXZWJLaXQgZnJhbWV3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjI0YjY3YzMwODJlNjc1YzQ3ZTgwZDEyMTgw
MmE0MDAxNmI3NGMxMy4uOWE0MGRiODIzOTlmYjBiZjcwZDUyYjRhYzYzZjkwYTg4Zjk3YmRhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMzA2NCw2ICszMDY0LDggQEAKIAkJODNGMTIwNkIxQjhDMTA0NzAwRDc1RjYzIC8qIEpT
Tm9kZUZpbHRlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0YxMjA2QTFCOEMxMDM2MDBENzVGNjMgLyogSlNOb2RlRmlsdGVyQ3VzdG9t
LmNwcCAqLzsgfTsKIAkJODNGRTdDQTcxREE5RjFBNzAwMzcyMzdDIC8qIFVJRXZlbnRJbml0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZFN0NBNDFE
QTlGMTY2MDAzNzIzN0MgLyogVUlFdmVudEluaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0ZFN0NBODFEQTlGMUI2MDAzNzIzN0MgLyogRXZl
bnRNb2RpZmllckluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzRkU3Q0EzMURBOUYxNjUwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTgzRkU5MDI3
MUUzMDdDMzAwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkU5MDI2MUUzMDdDMUMwMDNFOTE5OSAv
KiBQZXJmb3JtYW5jZU1vbml0b3IuaCAqLzsgfTsKKwkJODNGRTkwMjgxRTMwN0MzMzAwM0U5MTk5
IC8qIFBlcmZvcm1hbmNlTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0ZFOTAyNTFFMzA3QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VN
b25pdG9yLmNwcCAqLzsgfTsKIAkJODQxOUQyQTcxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhC
eXRlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NDE5RDJBNDEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW0uaCAqLzsgfTsK
IAkJODQxOUQyQTgxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDE5RDJB
NTEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcCAqLzsgfTsK
IAkJODQxOUQyQTkxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQxOUQyQTYx
MjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oICovOyB9OwpAQCAt
MTA1OTYsNiArMTA1OTgsOCBAQAogCQk4M0ZFN0NBNDFEQTlGMTY2MDAzNzIzN0MgLyogVUlFdmVu
dEluaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVUlFdmVudEluaXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNGRTdDQTUxREE5RjE2NjAwMzcyMzdDIC8q
IFVJRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVSUV2ZW50SW5pdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRkU3Q0E2MURBOUYxNjYwMDM3MjM3QyAv
KiBFdmVudE1vZGlmaWVySW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnRNb2Rp
ZmllckluaXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0ZFOTAyNTFFMzA3
QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBlcmZvcm1hbmNlTW9uaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgzRkU5MDI2MUUzMDdDMUMwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1v
bml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VNb25p
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MTlEMkE0MTIwRDkyRDAwMDE0
MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdQYXRoQnl0ZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
NDE5RDJBNTEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhCeXRlU3RyZWFtQnVp
bGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MTlEMkE2MTIwRDkyRDAw
MDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xODAxOCw2ICsxODAyMiw4IEBACiAJCQkJODZCRTMzRkMxNTA1OENC
MjAwQ0UwRkQ4IC8qIFBlcmZvcm1hbmNlRW50cnkuaWRsICovLAogCQkJCUFENUEwQzIxMURFQ0Ex
MDEwMDcwNzA1NCAvKiBQZXJmb3JtYW5jZUxvZ2dpbmcuY3BwICovLAogCQkJCUFENUEwQzIwMURF
Q0EwQjUwMDcwNzA1NCAvKiBQZXJmb3JtYW5jZUxvZ2dpbmcuaCAqLywKKwkJCQk4M0ZFOTAyNTFF
MzA3QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCAqLywKKwkJCQk4M0ZFOTAy
NjFFMzA3QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmggKi8sCiAJCQkJOEFGNEU1
NTIxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgKi8sCiAJCQkJ
OEFGNEU1NTMxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oICovLAog
CQkJCThBRjRFNTU0MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaWRs
ICovLApAQCAtMjY3MjAsNiArMjY3MjYsNyBAQAogCQkJCTg1MDMxQjQ0MEE0NEVGQzcwMEY5OTJF
MCAvKiBLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUwMEQ1OTE4MkRBQzhE
MDAwODdERDcgLyogS2V5ZWRDb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E2M0M1MUI3
NDMxOEYwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNG
RTkwMjcxRTMwN0MzMDAwM0U5MTk5IC8qIFBlcmZvcm1hbmNlTW9uaXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE3QTYzQzYxQjc0MzE5MjAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTEzQjNENzExNEIxNjY2MDAxQzQyOUIgLyogS2V5RXZlbnRDb2Nv
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY1NTQxMzkxNDg5ODExQzAwMERGQzVEIC8qIEtleUV2
ZW50Q29kZXNJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMzExMjUsNiArMzExMzIsNyBAQAogCQkJ
CTA3M0JFMzRFMTdEMTgwQjIwMDJCRDQzMSAvKiBSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTBFMTdEMTRDRUUwMDQyMEFBMSAvKiBS
VENTdGF0c1JlcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDkxMDE3RDE0Q0VFMDA0
MjBBQTEgLyogUlRDU3RhdHNSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4M0ZFOTAy
ODFFMzA3QzMzMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTVFMkM0MzY3MUJDRUUzNzcwMDAxRTJCQyAvKiBSVENUcmFja0V2ZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTU4MjRBQkEyMUFFODExMTYwMDkwNzRCNyAvKiBSdWJ5RWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1ODI0QUJBNjFBRTgxMzg0MDA5MDc0QjcgLyogUnVieVRl
eHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9BY3Rpdml0eVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGUu
aAppbmRleCBiNmVkNzgyYzk4NWFkYTVmN2U2M2JmMmRlMDJkZTllY2Q4NjUyYWI2Li4wZTUzNGNj
NjZjMGNhMzU5MGIzMDdiODk5NTUwYTNiZjQyYmI3MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2
aXR5U3RhdGUuaApAQCAtNDUsNCArNDUsMTAgQEAgc3RydWN0IEFjdGl2aXR5U3RhdGUgewogICAg
IHN0YXRpYyBjb25zdCBGbGFncyBBbGxGbGFncyA9IFdpbmRvd0lzQWN0aXZlIHwgSXNGb2N1c2Vk
IHwgSXNWaXNpYmxlIHwgSXNWaXNpYmxlT3JPY2NsdWRlZCB8IElzSW5XaW5kb3cgfCBJc1Zpc3Vh
bGx5SWRsZSB8IElzQXVkaWJsZSB8IElzTG9hZGluZzsKIH07CiAKK2VudW0gY2xhc3MgQWN0aXZp
dHlTdGF0ZUZvckNQVVNhbXBsaW5nIHsKKyAgICBOb25WaXNpYmxlLAorICAgIFZpc2libGVOb25B
Y3RpdmUsCisgICAgVmlzaWJsZUFuZEFjdGl2ZQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggMzMxZGY0YWM3ZjBmN2Y4MWFmZmZj
Nzg4YmVjMThhN2E1ZTgxYzhmZi4uMmM4OWI2Y2JhNTA2ODBiOTcyZGM1NWZjNGIyNGM0ODkwZmFl
YjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC00NTUsNiArNDU1LDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJl
Y3RzKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UHJvY2Vzc0NQVVRpbWUoaW50NjRf
dCwgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgfkNocm9tZUNsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmNwcAppbmRleCBlMTZmNTlkZTBmYmQ3MWE0MThiMjY5NjkzNDk1
YjRmNDIzNGU4NTg5Li4xOGI4MzJkMmI3M2RjY2UzNDQ0ZDg0ZGM1NWQzYWZhOWEyNzdmOTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwCkBAIC0x
NjMsNiArMTYzLDExIEBAIFN0cmluZyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5vU3RvcmVLZXko
KQogICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vU3RvcmUiKTsKIH0KIAorU3RyaW5nIERpYWdu
b3N0aWNMb2dnaW5nS2V5czo6bm9uVmlzaWJsZVN0YXRlS2V5KCkKK3sKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJub25WaXNpYmxlU3RhdGUiKTsKK30KKwogU3RyaW5nIERpYWdub3N0aWNMb2dn
aW5nS2V5czo6bm90SW5NZW1vcnlDYWNoZUtleSgpCiB7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgibm90SW5NZW1vcnlDYWNoZSIpOwpAQCAtNTk4LDYgKzYwMywxNiBAQCBTdHJpbmcgRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjp2aWRlb0tleSgpCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidmlk
ZW8iKTsKIH0KIAorU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6dmlzaWJsZU5vbkFjdGl2
ZVN0YXRlS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ2aXNpYmxlTm9uQWN0aXZl
U3RhdGUiKTsKK30KKworU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6dmlzaWJsZUFuZEFj
dGl2ZVN0YXRlS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ2aXNpYmxlQW5kQWN0
aXZlU3RhdGUiKTsKK30KKwogU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6d2FzdGVkU3Bl
Y3VsYXRpdmVXYXJtdXBXaXRoUmV2YWxpZGF0aW9uS2V5KCkKIHsKICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJ3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb24iKTsKQEAgLTY1
OCw1ICs2NzMsMzcgQEAgU3RyaW5nIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6d2Vi
R0xLZXkoKQogICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIndlYkdMIik7CiB9CiAKK1N0cmluZyBE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OmZvcmVncm91bmRDUFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dp
bmdLZXkoZG91YmxlIGNwdVVzYWdlKQoreworICAgIGlmIChjcHVVc2FnZSA8IDEwKQorICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJCZWxvdzEwIik7CisgICAgaWYgKGNwdVVzYWdlIDwgMjAp
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjEwdG8yMCIpOworICAgIGlmIChjcHVVc2Fn
ZSA8IDQwKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIyMHRvNDAiKTsKKyAgICBpZiAo
Y3B1VXNhZ2UgPCA2MCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiNDB0bzYwIik7Cisg
ICAgaWYgKGNwdVVzYWdlIDwgODApCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjYwdG84
MCIpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm92ZXI4MCIpOworfQorCitTdHJpbmcgRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjpiYWNrZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5n
S2V5KGRvdWJsZSBjcHVVc2FnZSkKK3sKKyAgICBpZiAoY3B1VXNhZ2UgPCAxKQorICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJCZWxvdzEiKTsKKyAgICBpZiAoY3B1VXNhZ2UgPCA1KQorICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIxdG81Iik7CisgICAgaWYgKGNwdVVzYWdlIDwgMTAp
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjV0bzEwIik7CisgICAgaWYgKGNwdVVzYWdl
IDwgMzApCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjEwdG8zMCIpOworICAgIGlmIChj
cHVVc2FnZSA8IDUwKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIzMHRvNTAiKTsKKyAg
ICBpZiAoY3B1VXNhZ2UgPCA3MCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiNTB0bzcw
Iik7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib3ZlcjcwIik7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGlj
TG9nZ2luZ0tleXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
LmgKaW5kZXggNmI2YTJmMDFhYzgzNzE2YzZlMWE0ZmE2OWU5ZWIxYjRhOWIyZGQ4MS4uNTA4OTdi
YmY5NDFhYmU2MDU1YTg1MTUxMWU5YzllZTlhNDZhYjg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgU3RyaW5nIGNhY2hlZFJlc291cmNlUmV2YWxpZGF0aW9uS2V5KCk7CiAgICAgc3Rh
dGljIFN0cmluZyBjYW5DYWNoZUtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgY2Fubm90U3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHNLZXkoKTsKLSAgICBzdGF0aWMgU3RyaW5nIGNwdVVzYWdlS2V5KCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBjcHVVc2FnZUtleSgpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgY3JlYXRlU2hhcmVkQnVmZmVyRmFpbGVkS2V5KCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkZWx0YUtleSgpOwogICAgIHN0YXRp
YyBTdHJpbmcgZGVuaWVkQnlDbGllbnRLZXkoKTsKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBTdHJpbmcgbm9Eb2N1bWVudExvYWRlcktleSgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTdHJpbmcgbm9Mb25nZXJJbkNhY2hlS2V5KCk7CiAgICAgc3RhdGljIFN0cmlu
ZyBub1N0b3JlS2V5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBub25WaXNp
YmxlU3RhdGVLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIG5vdEhUVFBG
YW1pbHlLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIG5vdEluQ2FjaGVL
ZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIG5vdEluTWVtb3J5Q2FjaGVLZXkoKTsKQEAgLTE1MCwx
MiArMTUxLDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHVz
ZXJLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHZhcnlpbmdIZWFkZXJN
aXNtYXRjaEtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgdmlkZW9LZXkoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgU3RyaW5nIHZpc2libGVOb25BY3RpdmVTdGF0ZUtleSgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgdmlzaWJsZUFuZEFjdGl2ZVN0YXRlS2V5KCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdp
dGhSZXZhbGlkYXRpb25LZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHdh
c3RlZFNwZWN1bGF0aXZlV2FybXVwV2l0aG91dFJldmFsaWRhdGlvbktleSgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgd2ViR0xLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU3RyaW5nIHdlYlZpZXdLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3Ry
aW5nIHpvb21lZEtleSgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBmb3Jl
Z3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5nS2V5KGRvdWJsZSBjcHVVc2FnZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBiYWNrZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdu
b3N0aWNMb2dnaW5nS2V5KGRvdWJsZSBjcHVVc2FnZSk7CisKICAgICAvLyBTdWNjZXNzIC8gRmFp
bHVyZSBrZXlzLgogICAgIHN0YXRpYyBTdHJpbmcgc3VjY2Vzc0tleSgpOwogICAgIHN0YXRpYyBT
dHJpbmcgZmFpbHVyZUtleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOTUxZTI3NGI3ZjBhMGQw
YmQwMjg5MmYzYjY5ZWIxNDVhNjE3YmQ5MS4uMTM5YTY4YjU2MjVjNTBmN2YwY2I0MmMxNWMyNTM5
OTM0YjcxYTE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVk
ZSAiUGFnZURlYnVnZ2FibGUuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQ
YWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQZXJmb3JtYW5jZU1vbml0b3IuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJQbHVn
SW5DbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCkBAIC0xMjcsMTMgKzEyOCwxMyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIGNoYW5uZWwsICIlcCAtIFBhZ2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQot
CiBzdGF0aWMgSGFzaFNldDxQYWdlKj4qIGFsbFBhZ2VzOworc3RhdGljIHVuc2lnbmVkIHRhYlBh
Z2VDb3VudCB7IDAgfTsKIAotc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIGNwdVVz
YWdlTWVhc3VyZW1lbnREZWxheSB7IDUgfTsKLXN0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vj
b25kcyBwb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnREdXJhdGlvbiB7IDEwIH07Ci1zdGF0aWMg
Y29uc3Qgc3RkOjpjaHJvbm86Om1pbnV0ZXMgYmFja2dyb3VuZENQVVVzYWdlTWVhc3VyZW1lbnRE
dXJhdGlvbiB7IDUgfTsKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1RhYlBhZ2VDaHJvbWVDbGllbnQo
Q2hyb21lQ2xpZW50JiBjaHJvbWVDbGllbnQpCit7CisgICAgcmV0dXJuICFjaHJvbWVDbGllbnQu
aXNFbXB0eUNocm9tZUNsaWVudCgpICYmICFjaHJvbWVDbGllbnQuaXNTVkdJbWFnZUNocm9tZUNs
aWVudCgpOworfQogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVh
a0NvdW50ZXIsIHBhZ2VDb3VudGVyLCAoIlBhZ2UiKSk7CiAKQEAgLTI1Myw4ICsyNTQsOCBAQCBQ
YWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBt
X3Zpc2l0ZWRMaW5rU3RvcmUoKldURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtT
dG9yZSkpCiAgICAgLCBtX3Nlc3Npb25JRChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkK
ICAgICAsIG1faXNDbG9zaW5nKGZhbHNlKQotICAgICwgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRp
bWVyKCp0aGlzLCAmUGFnZTo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UpCi0gICAgLCBtX3Bvc3RC
YWNrZ3JvdW5kaW5nQ1BVVXNhZ2VUaW1lcigqdGhpcywgJlBhZ2U6Om1lYXN1cmVQb3N0QmFja2dy
b3VuZGluZ0NQVVVzYWdlKQorICAgICwgbV9pc1RhYlBhZ2UoaXNUYWJQYWdlQ2hyb21lQ2xpZW50
KGNocm9tZSgpLmNsaWVudCgpKSkKKyAgICAsIG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVGFiUGFn
ZSgpID8gc3RkOjptYWtlX3VuaXF1ZTxQZXJmb3JtYW5jZU1vbml0b3I+KCp0aGlzKSA6IG51bGxw
dHIpCiB7CiAgICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIApAQCAtMjcxLDYgKzI3
Miw4IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikK
IAogICAgIEFTU0VSVCghYWxsUGFnZXMtPmNvbnRhaW5zKHRoaXMpKTsKICAgICBhbGxQYWdlcy0+
YWRkKHRoaXMpOworICAgIGlmIChpc1RhYlBhZ2UoKSkKKyAgICAgICAgKyt0YWJQYWdlQ291bnQ7
CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgcGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC0yOTUs
NiArMjk4LDggQEAgUGFnZTo6flBhZ2UoKQogICAgIG1fbWFpbkZyYW1lLT5zZXRWaWV3KG51bGxw
dHIpOwogICAgIHNldEdyb3VwTmFtZShTdHJpbmcoKSk7CiAgICAgYWxsUGFnZXMtPnJlbW92ZSh0
aGlzKTsKKyAgICBpZiAoaXNUYWJQYWdlKCkpCisgICAgICAgIC0tdGFiUGFnZUNvdW50OwogICAg
IAogICAgIG1fc2V0dGluZ3MtPnBhZ2VEZXN0cm95ZWQoKTsKIApAQCAtOTM0LDkxICs5MzksMjEg
QEAgdm9pZCBQYWdlOjpzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24gdXNlckludGUKIAogdm9pZCBQYWdlOjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpCiB7Ci0gICAgbV9wb3N0TG9hZENQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7Ci0gICAg
bV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV9wZXJmb3JtYW5j
ZU1vbml0b3IpCisgICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5kaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpOwogfQogCiB2b2lkIFBhZ2U6OmRpZEZpbmlzaExvYWQoKQogewogICAgIHJlc2V0
UmVsZXZhbnRQYWludGVkT2JqZWN0Q291bnRlcigpOwogCi0gICAgLy8gT25seSBkbyBwb3N0LWxv
YWQgQ1BVIHVzYWdlIG1lYXN1cmVtZW50IGlmIHRoZXJlIGlzIGEgc2luZ2xlIFBhZ2UgaW4gdGhl
IHByb2Nlc3MgaW4gb3JkZXIgdG8gcmVkdWNlIG5vaXNlLgotICAgIGlmIChTZXR0aW5nczo6aXNQ
b3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkgJiYgYWxsUGFnZXMtPnNpemUoKSA9
PSAxKSB7Ci0gICAgICAgIG1fcG9zdExvYWRDUFVUaW1lID0gc3RkOjpudWxsb3B0OwotICAgICAg
ICBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIuc3RhcnRPbmVTaG90KGNwdVVzYWdlTWVhc3Vy
ZW1lbnREZWxheSk7Ci0gICAgfQotfQotCi1zdGF0aWMgU3RyaW5nIGZvcmVncm91bmRDUFVVc2Fn
ZVRvRGlhZ25vc3RpY0xvZ2dpbktleShkb3VibGUgY3B1VXNhZ2UpCi17Ci0gICAgaWYgKGNwdVVz
YWdlIDwgMTApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkJlbG93MTAiKTsKLSAgICBp
ZiAoY3B1VXNhZ2UgPCAyMCkKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMTB0bzIwIik7
Ci0gICAgaWYgKGNwdVVzYWdlIDwgNDApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjIw
dG80MCIpOwotICAgIGlmIChjcHVVc2FnZSA8IDYwKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCI0MHRvNjAiKTsKLSAgICBpZiAoY3B1VXNhZ2UgPCA4MCkKLSAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiNjB0bzgwIik7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib3ZlcjgwIik7
Ci19Ci0KLXZvaWQgUGFnZTo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UoKQotewotICAgIGlmIChh
bGxQYWdlcy0+c2l6ZSgpICE9IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9wb3N0
TG9hZENQVVRpbWUpIHsKLSAgICAgICAgbV9wb3N0TG9hZENQVVRpbWUgPSBnZXRDUFVUaW1lKCk7
Ci0gICAgICAgIGlmIChtX3Bvc3RMb2FkQ1BVVGltZSkKLSAgICAgICAgICAgIG1fcG9zdFBhZ2VM
b2FkQ1BVVXNhZ2VUaW1lci5zdGFydE9uZVNob3QocG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50
RHVyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHN0ZDo6b3B0aW9uYWw8Q1BV
VGltZT4gY3B1VGltZSA9IGdldENQVVRpbWUoKTsKLSAgICBpZiAoIWNwdVRpbWUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGRvdWJsZSBjcHVVc2FnZSA9IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50
YWdlQ1BVVXNhZ2VTaW5jZSgqbV9wb3N0TG9hZENQVVRpbWUpOwotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUGVyZm9ybWFuY2VMb2dnaW5nLCAibWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2U6IFBy
b2Nlc3Mgd2FzIHVzaW5nICUuMWYlJSBwZXJjZW50IENQVSBhZnRlciB0aGUgcGFnZSBsb2FkLiIs
IGNwdVVzYWdlKTsKLSAgICBkaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNN
ZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cG9zdFBhZ2VMb2FkS2V5KCks
IERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3B1VXNhZ2VLZXkoKSwgZm9yZWdyb3VuZENQVVVzYWdl
VG9EaWFnbm9zdGljTG9nZ2luS2V5KGNwdVVzYWdlKSwgU2hvdWxkU2FtcGxlOjpObyk7CisgICAg
aWYgKG1fcGVyZm9ybWFuY2VNb25pdG9yKQorICAgICAgICBtX3BlcmZvcm1hbmNlTW9uaXRvci0+
ZGlkRmluaXNoTG9hZCgpOwogfQogCi1zdGF0aWMgU3RyaW5nIGJhY2tncm91bmRDUFVVc2FnZVRv
RGlhZ25vc3RpY0xvZ2dpbktleShkb3VibGUgY3B1VXNhZ2UpCitib29sIFBhZ2U6OmlzT25seVRh
YlBhZ2UoKSBjb25zdAogewotICAgIGlmIChjcHVVc2FnZSA8IDEpCi0gICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoIkJlbG93MSIpOwotICAgIGlmIChjcHVVc2FnZSA8IDUpCi0gICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoIjF0bzUiKTsKLSAgICBpZiAoY3B1VXNhZ2UgPCAxMCkKLSAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiNXRvMTAiKTsKLSAgICBpZiAoY3B1VXNhZ2UgPCAzMCkK
LSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMTB0bzMwIik7Ci0gICAgaWYgKGNwdVVzYWdl
IDwgNTApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjMwdG81MCIpOwotICAgIGlmIChj
cHVVc2FnZSA8IDcwKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI1MHRvNzAiKTsKLSAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvdmVyNzAiKTsKLX0KLQotdm9pZCBQYWdlOjptZWFzdXJl
UG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZSgpCi17Ci0gICAgaWYgKGFsbFBhZ2VzLT5zaXplKCkg
IT0gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BV
VGltZSkgewotICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSA9IGdldENQVVRpbWUo
KTsKLSAgICAgICAgaWYgKG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lKQotICAgICAgICAgICAg
bV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIuc3RhcnRPbmVTaG90KGJhY2tncm91bmRD
UFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IGdldENQVVRpbWUoKTsKLSAgICBpZiAo
IWNwdVRpbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRvdWJsZSBjcHVVc2FnZSA9IGNwdVRp
bWUudmFsdWUoKS5wZXJjZW50YWdlQ1BVVXNhZ2VTaW5jZSgqbV9wb3N0QmFja2dyb3VuZGluZ0NQ
VVRpbWUpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUGVyZm9ybWFuY2VMb2dnaW5nLCAi
bWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2U6IFByb2Nlc3Mgd2FzIHVzaW5nICUuMWYl
JSBwZXJjZW50IENQVSBhZnRlciBiZWNvbWluZyBub24gdmlzaWJsZS4iLCBjcHVVc2FnZSk7Ci0g
ICAgZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnBvc3RQYWdlQmFja2dyb3VuZGluZ0tleSgpLCBEaWFn
bm9zdGljTG9nZ2luZ0tleXM6OmNwdVVzYWdlS2V5KCksIGJhY2tncm91bmRDUFVVc2FnZVRvRGlh
Z25vc3RpY0xvZ2dpbktleShjcHVVc2FnZSksIFNob3VsZFNhbXBsZTo6Tm8pOworICAgIHJldHVy
biBpc1RhYlBhZ2UoKSAmJiB0YWJQYWdlQ291bnQgPT0gMTsKIH0KIAogdm9pZCBQYWdlOjpzZXRU
b3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQpAQCAtMTU3MCw2ICsxNTA1LDkgQEAg
dm9pZCBQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5
U3RhdGUpCiAKICAgICBpZiAod2FzVmlzaWJsZUFuZEFjdGl2ZSAhPSBpc1Zpc2libGVBbmRBY3Rp
dmUoKSkKICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRhdGVOb3dQbGF5
aW5nSW5mb0lmTmVjZXNzYXJ5KCk7CisKKyAgICBpZiAobV9wZXJmb3JtYW5jZU1vbml0b3IpCisg
ICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5hY3Rpdml0eVN0YXRlQ2hhbmdlZChvbGRBY3Rp
dml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlKTsKIH0KIAogYm9vbCBQYWdlOjppc1Zpc2libGVBbmRB
Y3RpdmUoKSBjb25zdApAQCAtMTYyNiwxMyArMTU2NCw2IEBAIHZvaWQgUGFnZTo6c2V0SXNWaXNp
YmxlSW50ZXJuYWwoYm9vbCBpc1Zpc2libGUpCiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcg
PSBtYWluRnJhbWUoKS52aWV3KCkpCiAgICAgICAgICAgICB2aWV3LT5oaWRlKCk7CiAgICAgfQot
Ci0gICAgLy8gTWVhc3VyZSBDUFUgdXNhZ2Ugb2YgcGFnZXMgd2hlbiB0aGV5IGFyZSBubyBsb25n
ZXIgdmlzaWJsZS4KLSAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSA9IHN0ZDo6bnVsbG9w
dDsKLSAgICBpZiAoaXNWaXNpYmxlKQotICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNh
Z2VUaW1lci5zdG9wKCk7Ci0gICAgZWxzZSBpZiAoU2V0dGluZ3M6OmlzUG9zdEJhY2tncm91bmRp
bmdDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpICYmIGFsbFBhZ2VzLT5zaXplKCkgPT0gMSkK
LSAgICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIuc3RhcnRPbmVTaG90KGNw
dVVzYWdlTWVhc3VyZW1lbnREZWxheSk7CiB9CiAKIHZvaWQgUGFnZTo6c2V0SXNQcmVyZW5kZXIo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAppbmRleCAwMmI1MDQ0ZjMxNTgxMzkzZDRhYWUxNGVmOWMwNWRmMGZmNzdh
ZDJjLi42YThlZGNhMzBjYzU1M2ZiODZkNzllNjA3ZjAyMGQ0OWI2ZWM3N2NhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaApAQCAtMjEsNyArMjEsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBY3Rpdml0
eVN0YXRlLmgiCi0jaW5jbHVkZSAiQ1BVVGltZS5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkxheW91dE1pbGVzdG9u
ZXMuaCIKQEAgLTEwNSw2ICsxMDQsNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNz
IFBhZ2VDb25zb2xlQ2xpZW50OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7CiBjbGFzcyBQYWdlR3Jv
dXA7CitjbGFzcyBQZXJmb3JtYW5jZU1vbml0b3I7CiBjbGFzcyBQbHVnSW5DbGllbnQ7CiBjbGFz
cyBQbHVnaW5EYXRhOwogY2xhc3MgUGx1Z2luSW5mb1Byb3ZpZGVyOwpAQCAtMzU3LDYgKzM1Nyw4
IEBAIHB1YmxpYzoKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMgd2hlbiB0aGUgUGFnZSBzdGFydHMg
YW5kIHN0b3BzIGJlaW5nIHByZXNlbnRlZCB2aWEgYSBuYXRpdmUgd2luZG93LgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyk7Cisg
ICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWN0aXZpdHlTdGF0ZTsgfQorCiAgICAgYm9vbCBpc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzVmlzaWJsZShib29sKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldElzUHJlcmVuZGVyKCk7CkBAIC01NTksNiArNTYxLDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoc3RkOjpvcHRp
b25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gdGhyb3R0bGluZykgeyBtX2V2ZW50VGhyb3R0
bGluZ0JlaGF2aW9yT3ZlcnJpZGUgPSB0aHJvdHRsaW5nOyB9CiAKICAgICBXZWJHTFN0YXRlVHJh
Y2tlciogd2ViR0xTdGF0ZVRyYWNrZXIoKSBjb25zdCB7IHJldHVybiBtX3dlYkdMU3RhdGVUcmFj
a2VyLmdldCgpOyB9CisKKyAgICBib29sIGlzT25seVRhYlBhZ2UoKSBjb25zdDsKKyAgICBib29s
IGlzVGFiUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUYWJQYWdlOyB9CisKIHByaXZhdGU6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAtNTcyLDkgKzU3OCw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjaGVja1N1YmZyYW1lQ291bnRDb25zaXN0ZW5jeSgpIGNvbnN0
OwogI2VuZGlmCiAKLSAgICB2b2lkIG1lYXN1cmVQb3N0TG9hZENQVVVzYWdlKCk7Ci0gICAgdm9p
ZCBtZWFzdXJlUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZSgpOwotCiAgICAgZW51bSBTaG91bGRI
aWdobGlnaHRNYXRjaGVzIHsgRG9Ob3RIaWdobGlnaHRNYXRjaGVzLCBIaWdobGlnaHRNYXRjaGVz
IH07CiAgICAgZW51bSBTaG91bGRNYXJrTWF0Y2hlcyB7IERvTm90TWFya01hdGNoZXMsIE1hcmtN
YXRjaGVzIH07CiAKQEAgLTc1NiwxNSArNzU5LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3No
b3dBbGxQbHVnaW5zIHsgZmFsc2UgfTsKICAgICBib29sIG1fY29udHJvbGxlZEJ5QXV0b21hdGlv
biB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Jlc291cmNlQ2FjaGluZ0Rpc2FibGVkIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faXNUYWJQYWdlOwogICAgIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHsgVXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjo6TFRSIH07CiAgICAgCiAgICAgLy8gRm9yIHRlc3RpbmcuCiAgICAgc3RkOjpvcHRp
b25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gbV9ldmVudFRocm90dGxpbmdCZWhhdmlvck92
ZXJyaWRlOwogCi0gICAgVGltZXIgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyOwotICAgIHN0
ZDo6b3B0aW9uYWw8Q1BVVGltZT4gbV9wb3N0TG9hZENQVVRpbWU7Ci0gICAgVGltZXIgbV9wb3N0
QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXI7Ci0gICAgc3RkOjpvcHRpb25hbDxDUFVUaW1lPiBt
X3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGVyZm9ybWFu
Y2VNb25pdG9yPiBtX3BlcmZvcm1hbmNlTW9uaXRvcjsKIH07CiAKIGlubGluZSBQYWdlR3JvdXAm
IFBhZ2U6Omdyb3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMGM2YzYzZDg5ZTJkNjUwMWEwNzQxMjc4MGUyMTAyYzFkNWNkMGEwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3Iu
Y3BwCkBAIC0wLDAgKzEsMjAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlBlcmZvcm1hbmNlTW9uaXRvci5oIgorCisjaW5jbHVkZSAiQ2hyb21lLmgiCisj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQuaCIKKyNpbmNsdWRlICJEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWws
IGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihtX3BhZ2UuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIGNoYW5uZWwsICIlcCAtIFBlcmZvcm1hbmNlTW9uaXRvcjo6IiBmbXQsIHRoaXMsICMjX19W
QV9BUkdTX18pCisKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBjcHVVc2FnZU1l
YXN1cmVtZW50RGVsYXkgeyA1IH07CitzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMg
cG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24geyAxMCB9Oworc3RhdGljIGNvbnN0
IHN0ZDo6Y2hyb25vOjptaW51dGVzIGJhY2tncm91bmRDUFVVc2FnZU1lYXN1cmVtZW50RHVyYXRp
b24geyA1IH07CitzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86Om1pbnV0ZXMgY3B1VXNhZ2VTYW1w
bGluZ0ludGVydmFsIHsgMTAgfTsKKworc3RhdGljIGlubGluZSBBY3Rpdml0eVN0YXRlRm9yQ1BV
U2FtcGxpbmcgYWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKEFjdGl2aXR5U3RhdGU6OkZsYWdz
IHN0YXRlKQoreworICAgIGlmICghKHN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSkK
KyAgICAgICAgcmV0dXJuIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6Tm9uVmlzaWJsZTsK
KyAgICBpZiAoc3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSkKKyAgICAgICAg
cmV0dXJuIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6VmlzaWJsZUFuZEFjdGl2ZTsKKyAg
ICByZXR1cm4gQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpWaXNpYmxlTm9uQWN0aXZlOwor
fQorCitQZXJmb3JtYW5jZU1vbml0b3I6OlBlcmZvcm1hbmNlTW9uaXRvcihQYWdlJiBwYWdlKQor
ICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIoKnRo
aXMsICZQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0TG9hZENQVVVzYWdlKQorICAgICwg
bV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIoKnRoaXMsICZQZXJmb3JtYW5jZU1vbml0
b3I6Om1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlKQorICAgICwgbV9wZXJBY3Rpdml0
eVN0YXRlQ1BVVXNhZ2VUaW1lcigqdGhpcywgJlBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZSkKK3sKKyAgICBBU1NFUlQocGFnZS5pc1RhYlBhZ2UoKSk7
CisKKyAgICBpZiAoU2V0dGluZ3M6OmlzUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlTWVhc3VyZW1l
bnRFbmFibGVkKCkpIHsKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSA9IGdldENQ
VVRpbWUoKTsKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VUaW1lci5zdGFydFJl
cGVhdGluZyhjcHVVc2FnZVNhbXBsaW5nSW50ZXJ2YWwpOworICAgIH0KK30KKwordm9pZCBQZXJm
b3JtYW5jZU1vbml0b3I6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKK3sKKyAgICBtX3Bvc3RM
b2FkQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGlt
ZXIuc3RvcCgpOworfQorCit2b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6ZGlkRmluaXNoTG9hZCgp
Cit7CisgICAgLy8gT25seSBkbyBwb3N0LWxvYWQgQ1BVIHVzYWdlIG1lYXN1cmVtZW50IGlmIHRo
ZXJlIGlzIGEgc2luZ2xlIFBhZ2UgaW4gdGhlIHByb2Nlc3MgaW4gb3JkZXIgdG8gcmVkdWNlIG5v
aXNlLgorICAgIGlmIChTZXR0aW5nczo6aXNQb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnRFbmFi
bGVkKCkgJiYgbV9wYWdlLmlzT25seVRhYlBhZ2UoKSkgeworICAgICAgICBtX3Bvc3RMb2FkQ1BV
VGltZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVy
LnN0YXJ0T25lU2hvdChjcHVVc2FnZU1lYXN1cmVtZW50RGVsYXkpOworICAgIH0KK30KKwordm9p
ZCBQZXJmb3JtYW5jZU1vbml0b3I6OmFjdGl2aXR5U3RhdGVDaGFuZ2VkKEFjdGl2aXR5U3RhdGU6
OkZsYWdzIG9sZFN0YXRlLCBBY3Rpdml0eVN0YXRlOjpGbGFncyBuZXdTdGF0ZSkKK3sKKyAgICBB
Y3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0gb2xkU3RhdGUgXiBuZXdTdGF0ZTsKKyAgICBi
b29sIHZpc2liaWxpdHlDaGFuZ2VkID0gY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJs
ZTsKKworICAgIC8vIE1lYXN1cmUgQ1BVIHVzYWdlIG9mIHBhZ2VzIHdoZW4gdGhleSBhcmUgbm8g
bG9uZ2VyIHZpc2libGUuCisgICAgaWYgKFNldHRpbmdzOjppc1Bvc3RCYWNrZ3JvdW5kaW5nQ1BV
VXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKSAmJiB2aXNpYmlsaXR5Q2hhbmdlZCkgeworICAgICAg
ICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYg
KG5ld1N0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQorICAgICAgICAgICAgbV9wb3N0
QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIuc3RvcCgpOworICAgICAgICBlbHNlIGlmIChtX3Bh
Z2UuaXNPbmx5VGFiUGFnZSgpKQorICAgICAgICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVVz
YWdlVGltZXIuc3RhcnRPbmVTaG90KGNwdVVzYWdlTWVhc3VyZW1lbnREZWxheSk7CisgICAgfQor
CisgICAgaWYgKFNldHRpbmdzOjppc1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZU1lYXN1cmVtZW50
RW5hYmxlZCgpKSB7CisgICAgICAgIC8vIElmIHZpc2liaWxpdHkgY2hhbmdlZCB0aGVuIHJlcG9y
dCBDUFUgdXNhZ2UgcmlnaHQgYXdheSBiZWNhdXNlIENQVSB1c2FnZSBpcyBjb25uZWN0ZWQgdG8g
dmlzaWJpbGl0eSBzdGF0ZS4KKyAgICAgICAgYXV0byBvbGRBY3Rpdml0eVN0YXRlRm9yQ1BVU2Ft
cGxpbmcgPSBhY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcob2xkU3RhdGUpOworICAgICAgICBp
ZiAob2xkQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nICE9IGFjdGl2aXR5U3RhdGVGb3JDUFVT
YW1wbGluZyhuZXdTdGF0ZSkpIHsKKyAgICAgICAgICAgIG1lYXN1cmVDUFVVc2FnZUluQWN0aXZp
dHlTdGF0ZShvbGRBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpOworICAgICAgICAgICAgbV9w
ZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VUaW1lci5zdGFydFJlcGVhdGluZyhjcHVVc2FnZVNhbXBs
aW5nSW50ZXJ2YWwpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFBlcmZvcm1hbmNlTW9u
aXRvcjo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UoKQoreworICAgIGlmICghbV9wYWdlLmlzT25s
eVRhYlBhZ2UoKSkgeworICAgICAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9wb3N0TG9hZENQVVRpbWUpIHsK
KyAgICAgICAgbV9wb3N0TG9hZENQVVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgICAgIGlmICht
X3Bvc3RMb2FkQ1BVVGltZSkKKyAgICAgICAgICAgIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1l
ci5zdGFydE9uZVNob3QocG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24pOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9
IGdldENQVVRpbWUoKTsKKyAgICBpZiAoIWNwdVRpbWUpCisgICAgICAgIHJldHVybjsKKworICAg
IGRvdWJsZSBjcHVVc2FnZSA9IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50YWdlQ1BVVXNhZ2VTaW5j
ZSgqbV9wb3N0TG9hZENQVVRpbWUpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUGVyZm9y
bWFuY2VMb2dnaW5nLCAibWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2U6IFByb2Nlc3Mgd2FzIHVzaW5n
ICUuMWYlJSBDUFUgYWZ0ZXIgdGhlIHBhZ2UgbG9hZC4iLCBjcHVVc2FnZSk7CisgICAgbV9wYWdl
LmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUo
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpwb3N0UGFnZUxvYWRLZXkoKSwgRGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjpjcHVVc2FnZUtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmZvcmVncm91bmRD
UFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dpbmdLZXkoY3B1VXNhZ2UpLCBTaG91bGRTYW1wbGU6Ok5v
KTsKK30KKwordm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0QmFja2dyb3VuZGlu
Z0NQVVVzYWdlKCkKK3sKKyAgICBpZiAoIW1fcGFnZS5pc09ubHlUYWJQYWdlKCkpIHsKKyAgICAg
ICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lKSB7Cisg
ICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lID0gZ2V0Q1BVVGltZSgpOworICAgICAg
ICBpZiAobV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWUpCisgICAgICAgICAgICBtX3Bvc3RCYWNr
Z3JvdW5kaW5nQ1BVVXNhZ2VUaW1lci5zdGFydE9uZVNob3QoYmFja2dyb3VuZENQVVVzYWdlTWVh
c3VyZW1lbnREdXJhdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc3RkOjpvcHRp
b25hbDxDUFVUaW1lPiBjcHVUaW1lID0gZ2V0Q1BVVGltZSgpOworICAgIGlmICghY3B1VGltZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZG91YmxlIGNwdVVzYWdlID0gY3B1VGltZS52YWx1ZSgp
LnBlcmNlbnRhZ2VDUFVVc2FnZVNpbmNlKCptX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQZXJmb3JtYW5jZUxvZ2dpbmcsICJtZWFzdXJlUG9z
dEJhY2tncm91bmRpbmdDUFVVc2FnZTogUHJvY2VzcyB3YXMgdXNpbmcgJS4xZiUlIENQVSBhZnRl
ciBiZWNvbWluZyBub24gdmlzaWJsZS4iLCBjcHVVc2FnZSk7CisgICAgbV9wYWdlLmRpYWdub3N0
aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpwb3N0UGFnZUJhY2tncm91bmRpbmdLZXkoKSwgRGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjpjcHVVc2FnZUtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmJhY2tncm91bmRD
UFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dpbmdLZXkoY3B1VXNhZ2UpLCBTaG91bGRTYW1wbGU6Ok5v
KTsKK30KKwordm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2UoKQoreworICAgIG1lYXN1cmVDUFVVc2FnZUluQWN0aXZpdHlTdGF0ZShhY3Rpdml0
eVN0YXRlRm9yQ1BVU2FtcGxpbmcobV9wYWdlLmFjdGl2aXR5U3RhdGUoKSkpOworfQorCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogc3RyaW5n
Rm9yQ1BVU2FtcGxpbmdBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyBh
Y3Rpdml0eVN0YXRlKQoreworICAgIHN3aXRjaCAoYWN0aXZpdHlTdGF0ZSkgeworICAgIGNhc2Ug
QWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpOb25WaXNpYmxlOgorICAgICAgICByZXR1cm4g
Ik5vblZpc2libGUiOworICAgIGNhc2UgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpWaXNp
YmxlTm9uQWN0aXZlOgorICAgICAgICByZXR1cm4gIlZpc2libGVOb25BY3RpdmUiOworICAgIGNh
c2UgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpWaXNpYmxlQW5kQWN0aXZlOgorICAgICAg
ICByZXR1cm4gIlZpc2libGVBbmRBY3RpdmUiOworICAgIH0KK30KKworI2VuZGlmCisKK3ZvaWQg
UGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2aXR5U3RhdGUoQWN0aXZp
dHlTdGF0ZUZvckNQVVNhbXBsaW5nIGFjdGl2aXR5U3RhdGUpCit7CisgICAgaWYgKCFtX3BhZ2Uu
aXNPbmx5VGFiUGFnZSgpKSB7CisgICAgICAgIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWUgPSBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fcGVyQWN0
aXZpdHlTdGF0ZUNQVVRpbWUpIHsKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSA9
IGdldENQVVRpbWUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0ZDo6b3B0aW9u
YWw8Q1BVVGltZT4gY3B1VGltZSA9IGdldENQVVRpbWUoKTsKKyAgICBpZiAoIWNwdVRpbWUpIHsK
KyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGRvdWJs
ZSBjcHVVc2FnZSA9IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50YWdlQ1BVVXNhZ2VTaW5jZSgqbV9w
ZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQZXJm
b3JtYW5jZUxvZ2dpbmcsICJtZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2aXR5U3RhdGU6IFByb2Nlc3Mg
aXMgdXNpbmcgJS4xZiUlIENQVSBpbiBzdGF0ZTogJXMiLCBjcHVVc2FnZSwgc3RyaW5nRm9yQ1BV
U2FtcGxpbmdBY3Rpdml0eVN0YXRlKGFjdGl2aXR5U3RhdGUpKTsKKyNlbmRpZgorICAgIG1fcGFn
ZS5jaHJvbWUoKS5jbGllbnQoKS5yZXBvcnRQcm9jZXNzQ1BVVGltZSgoY3B1VGltZS52YWx1ZSgp
LnN5c3RlbVRpbWUgKyBjcHVUaW1lLnZhbHVlKCkudXNlclRpbWUpIC0gKG1fcGVyQWN0aXZpdHlT
dGF0ZUNQVVRpbWUudmFsdWUoKS5zeXN0ZW1UaW1lICsgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGlt
ZS52YWx1ZSgpLnVzZXJUaW1lKSwgYWN0aXZpdHlTdGF0ZSk7CisKKyAgICBtX3BlckFjdGl2aXR5
U3RhdGVDUFVUaW1lID0gV1RGTW92ZShjcHVUaW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjBjYWMwMGI4ZTU2ODgzNzEyNjQ0MGVmNGRmOTFhNTE0OGI1OTg1NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmgKQEAgLTAsMCArMSw2
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWN0aXZpdHlTdGF0
ZS5oIgorI2luY2x1ZGUgIkNQVVRpbWUuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2U7CisK
K2NsYXNzIFBlcmZvcm1hbmNlTW9uaXRvciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUGVyZm9y
bWFuY2VNb25pdG9yKFBhZ2UmKTsKKworICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQo
KTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWQoKTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVDaGFu
Z2VkKEFjdGl2aXR5U3RhdGU6OkZsYWdzIG9sZFN0YXRlLCBBY3Rpdml0eVN0YXRlOjpGbGFncyBu
ZXdTdGF0ZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBtZWFzdXJlUG9zdExvYWRDUFVVc2FnZSgp
OworICAgIHZvaWQgbWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2UoKTsKKyAgICB2b2lk
IG1lYXN1cmVQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2UoKTsKKyAgICB2b2lkIG1lYXN1cmVDUFVV
c2FnZUluQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpOworCisgICAg
UGFnZSYgbV9wYWdlOworCisgICAgVGltZXIgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gbV9wb3N0TG9hZENQVVRpbWU7CisgICAgVGltZXIg
bV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXI7CisgICAgc3RkOjpvcHRpb25hbDxDUFVU
aW1lPiBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZTsKKyAgICBUaW1lciBtX3BlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVRpbWVyOworICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gbV9wZXJBY3Rp
dml0eVN0YXRlQ1BVVGltZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXgg
NzU5Nzk2YWZiYTAwN2E2NzFjMzM1NjVhYWE1NzI4NjUwODEwNzVkMy4uNmJiOWQwM2E4YjM0YzE5
NjgyNGE4ZDJiZWRjZGUzZGFhYWUxZDQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAg
LTc3OCwyNCArNzc4LDYgQEAgYm9vbCBTZXR0aW5nczo6Z2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9u
U2hvdWxkVGhyb3coKQogI2VuZGlmCiB9CiAKLWJvb2wgU2V0dGluZ3M6OmlzUG9zdExvYWRDUFVV
c2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpCi17Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgcmV0
dXJuIHRydWU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi1ib29sIFNl
dHRpbmdzOjppc1Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKQot
ewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi19Ci0KIHZvaWQgU2V0dGluZ3M6OnNldEFsbG93c0FueVNTTENlcnRp
ZmljYXRlKGJvb2wgYWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZSkKIHsKICAgICBnQWxsb3dzQW55U1NM
Q2VydGlmaWNhdGUgPSBhbGxvd0FueVNTTENlcnRpZmljYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
CmluZGV4IGE5NzQwMjE2ZTU2YWQxNzc0ZDY5ZmI2Y2U4NTBlOGViMTY4ZWZiNTUuLjJkM2M4M2M5
N2I1OWUyMmU0ODMxYjVkOTVlMDY2ODEyNTZjNTQ5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgK
QEAgLTIwMSw2ICsyMDEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc1Bvc3RMb2Fk
Q1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKTsKICAgICBzdGF0aWMgYm9vbCBpc1Bvc3RCYWNr
Z3JvdW5kaW5nQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKTsKKyAgICBzdGF0aWMgYm9vbCBp
c1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpOwogCiAgICAgc3Rh
dGljIGJvb2wgZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKTsKIApAQCAtNDIz
LDQgKzQyNCwzMSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdBbGxvd3NBbnlTU0xDZXJ0
aWZpY2F0ZTsKIH07CiAKK2lubGluZSBib29sIFNldHRpbmdzOjppc1Bvc3RMb2FkQ1BVVXNhZ2VN
ZWFzdXJlbWVudEVuYWJsZWQoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVybiB0
cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wg
U2V0dGluZ3M6OmlzUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgp
Cit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wgU2V0dGluZ3M6OmlzUGVyQWN0aXZp
dHlTdGF0ZUNQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkKK3sKKyNpZiBQTEFURk9STShNQUMp
CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXgg
ODcyMDI3MmRkMjZiNDllNTYzZWRjYWQwNjNkYWE0ZjI2ZWViNGNhYi4uZTNlODhhZjQwNzBmNjEy
NDViMmIzZWJkMTg2NjdiNGE5NzZjMzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaApA
QCAtNTcsNiArNTcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKE5ldHdvcmtDYWNoZVN0b3JhZ2Up
IFwKICAgICBNKE5ldHdvcmtTY2hlZHVsaW5nKSBcCiAgICAgTShOZXR3b3JrU2Vzc2lvbikgXAor
ICAgIE0oUGVyZm9ybWFuY2VMb2dnaW5nKSBcCiAgICAgTShQbHVnaW5zKSBcCiAgICAgTShQcmlu
dGluZykgXAogICAgIE0oUHJvY2Vzc1N1c3BlbnNpb24pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNDM3ZTk3ZWI2NGFmYTVmNWRkZDM1MjNmMTZlNmRkZWM1NjJhOGNmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3Rh
dGVDUFVVc2FnZVNhbXBsZXIuY3BwCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3Qg
aW50NjRfdCBtaWNyb3NlY29uZHNQZXJTZWNvbmQgPSAxMDAwMDAwOworCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjptaW51dGVzIGxvZ2dpbmdJ
bnRlcnZhbCB7IDYwIH07CisKK1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI6OlBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQor
ICAgIDogbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCkKKyAgICAsIG1fbG9nZ2luZ1RpbWVyKFJ1
bkxvb3A6Om1haW4oKSwgdGhpcywgJlBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI6Omxv
Z2dpbmdUaW1lckZpcmVkKQoreworICAgIG1fbGFzdENQVVRpbWUgPSBtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKTsKKyAgICBtX2xvZ2dpbmdUaW1lci5zdGFydFJlcGVhdGluZyhsb2dnaW5n
SW50ZXJ2YWwpOworfQorCitQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOjp+UGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcigpCit7Cit9CisKK3ZvaWQgUGVyQWN0aXZpdHlTdGF0
ZUNQVVVzYWdlU2FtcGxlcjo6cmVwb3J0V2ViQ29udGVudENQVVRpbWUoaW50NjRfdCBjcHVUaW1l
LCBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgYWN0aXZpdHlTdGF0ZSkKK3sKKyAgICBhdXRv
IHJlc3VsdCA9IG1fY3B1VGltZUluQWN0aXZpdHlTdGF0ZS5hZGQoYWN0aXZpdHlTdGF0ZSwgY3B1
VGltZSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSArPSBjcHVUaW1lOworfQorCitzdGF0aWMgaW5saW5lIFN0cmluZyBsb2dnaW5n
S2V5Rm9yQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgc3RhdGUpCit7
CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBs
aW5nOjpOb25WaXNpYmxlOgorICAgICAgICByZXR1cm4gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpu
b25WaXNpYmxlU3RhdGVLZXkoKTsKKyAgICBjYXNlIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGlu
Zzo6VmlzaWJsZU5vbkFjdGl2ZToKKyAgICAgICAgcmV0dXJuIERpYWdub3N0aWNMb2dnaW5nS2V5
czo6dmlzaWJsZU5vbkFjdGl2ZVN0YXRlS2V5KCk7CisgICAgY2FzZSBBY3Rpdml0eVN0YXRlRm9y
Q1BVU2FtcGxpbmc6OlZpc2libGVBbmRBY3RpdmU6CisgICAgICAgIHJldHVybiBEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6OnZpc2libGVBbmRBY3RpdmVTdGF0ZUtleSgpOworICAgIH0KK30KKworc3Rh
dGljIGlubGluZSBTdHJpbmcgbG9nZ2luZ0tleUZvckNQVVVzYWdlKEFjdGl2aXR5U3RhdGVGb3JD
UFVTYW1wbGluZyBzdGF0ZSwgZG91YmxlIGNwdVVzYWdlKQoreworICAgIHN3aXRjaCAoc3RhdGUp
IHsKKyAgICBjYXNlIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6Tm9uVmlzaWJsZToKKyAg
ICAgICAgcmV0dXJuIERpYWdub3N0aWNMb2dnaW5nS2V5czo6YmFja2dyb3VuZENQVVVzYWdlVG9E
aWFnbm9zdGljTG9nZ2luZ0tleShjcHVVc2FnZSk7CisgICAgY2FzZSBBY3Rpdml0eVN0YXRlRm9y
Q1BVU2FtcGxpbmc6OlZpc2libGVOb25BY3RpdmU6CisgICAgY2FzZSBBY3Rpdml0eVN0YXRlRm9y
Q1BVU2FtcGxpbmc6OlZpc2libGVBbmRBY3RpdmU6CisgICAgICAgIHJldHVybiBEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6OmZvcmVncm91bmRDUFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dpbmdLZXkoY3B1
VXNhZ2UpOworICAgIH0KK30KKwordm9pZCBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVy
Ojpsb2dnaW5nVGltZXJGaXJlZCgpCit7CisgICAgYXV0byogcGFnZSA9IHBhZ2VGb3JMb2dnaW5n
KCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIG1fY3B1VGltZUluQWN0aXZpdHlTdGF0ZS5j
bGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZG91YmxlIGN1cnJlbnRDUFVU
aW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgaW50NjRfdCBjcHVUaW1l
RGVsdGEgPSAoY3VycmVudENQVVRpbWUgLSBtX2xhc3RDUFVUaW1lKSAqIG1pY3Jvc2Vjb25kc1Bl
clNlY29uZDsKKworICAgIGZvciAoYXV0byYgcGFpciA6IG1fY3B1VGltZUluQWN0aXZpdHlTdGF0
ZSkgeworICAgICAgICBkb3VibGUgY3B1VXNhZ2UgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHBhaXIu
dmFsdWUgKiAxMDAuKSAvIGNwdVRpbWVEZWx0YTsKKyAgICAgICAgU3RyaW5nIGxvZ2dpbmdLZXkg
PSBsb2dnaW5nS2V5Rm9yQWN0aXZpdHlTdGF0ZShwYWlyLmtleSk7CisgICAgICAgIHBhZ2UtPmxv
Z0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3B1VXNh
Z2VLZXkoKSwgbG9nZ2luZ0tleSwgbG9nZ2luZ0tleUZvckNQVVVzYWdlKHBhaXIua2V5LCBjcHVV
c2FnZSksIGZhbHNlKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUGVyZm9ybWFuY2VMb2dnaW5nLCAi
V2ViQ29udGVudCBwcm9jZXNzZXMgdXNlZCAlLjFmJSUgQ1BVIGluICVzIHN0YXRlIiwgY3B1VXNh
Z2UsIGxvZ2dpbmdLZXkudXRmOCgpLmRhdGEoKSk7CisgICAgfQorCisgICAgbV9jcHVUaW1lSW5B
Y3Rpdml0eVN0YXRlLmNsZWFyKCk7CisgICAgbV9sYXN0Q1BVVGltZSA9IGN1cnJlbnRDUFVUaW1l
OworfQorCitXZWJQYWdlUHJveHkqIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI6OnBh
Z2VGb3JMb2dnaW5nKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHdlYlByb2Nlc3MgOiBtX3By
b2Nlc3NQb29sLnByb2Nlc3NlcygpKSB7CisgICAgICAgIGlmICghd2ViUHJvY2Vzcy0+cGFnZUNv
dW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmV0dXJuICp3ZWJQcm9jZXNz
LT5wYWdlcygpLmJlZ2luKCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
ZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhYjZmNGI3
NTU5ODU4YjE3ZTA5MGNmOWE0ZWFkNzlmNmY1Y2JmMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCkBA
IC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK2Ns
YXNzIFdlYlByb2Nlc3NQb29sOworCitjbGFzcyBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyKFdlYlByb2Nlc3NQb29sJik7CisgICAgflBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXIoKTsKKworICAgIHZvaWQgcmVwb3J0V2ViQ29udGVudENQVVRpbWUoaW50NjRfdCBjcHVUaW1l
LCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpOworCitwcml2YXRlOgorICAg
IHZvaWQgbG9nZ2luZ1RpbWVyRmlyZWQoKTsKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2VGb3JMb2dn
aW5nKCkgY29uc3Q7CisKKyAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKKyAgICBS
dW5Mb29wOjpUaW1lcjxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPiBtX2xvZ2dpbmdU
aW1lcjsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZUZvckNQVVNh
bXBsaW5nLCBpbnQ2NF90LCBXVEY6OkludEhhc2g8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZUZvckNQ
VVNhbXBsaW5nPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlRm9yQ1BVU2FtcGxpbmc+PiBDUFVUaW1lSW5BY3Rpdml0eVN0YXRlTWFwOworICAgIENQVVRp
bWVJbkFjdGl2aXR5U3RhdGVNYXAgbV9jcHVUaW1lSW5BY3Rpdml0eVN0YXRlOworICAgIGRvdWJs
ZSBtX2xhc3RDUFVUaW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBjMmExOGJiMWU3OTcxNmYz
M2JiYTQ1MGY4NWZkNTM4NjQ3NTBjZjRmLi5kODY0ZWY2NzU1N2NkYjBjNjVkOTFlMjEwNTUwYzc2
ZTZjNjFkMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiUGVyQWN0aXZpdHlTdGF0ZUNQVVVz
YWdlU2FtcGxlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJT
dGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCkBAIC0xNjgsNiArMTY5
LDcgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29u
ZmlndXJhdGlvbi0+c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSgpID8gQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpjcmVhdGUobGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25m
aWd1cmF0aW9uKSkucHRyKCkgOiBudWxscHRyKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1f
aGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIoc3RkOjptYWtlX3VuaXF1ZTxIaWdo
UGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcj4oKnRoaXMpKQorICAgICwgbV9wZXJBY3Rp
dml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKHN0ZDo6bWFrZV91bmlxdWU8UGVyQWN0aXZpdHlTdGF0
ZUNQVVVzYWdlU2FtcGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3Nob3VsZFVzZVRlc3Rp
bmdOZXR3b3JrU2Vzc2lvbihmYWxzZSkKICAgICAsIG1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxl
ZCh0cnVlKQpAQCAtMTQzMSw0ICsxNDMzLDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0
ZUhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlTGltaXQoKQogICAgIHNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SGlkZGVuUGFnZVRpbWVyVGhyb3R0bGlu
Z0luY3JlYXNlTGltaXQobGltaXRJbk1pbGxpc2Vjb25kcykpOwogfQogCit2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZXBvcnRXZWJDb250ZW50Q1BVVGltZShpbnQ2NF90IGNwdVRpbWUsIHVpbnQ2NF90
IGFjdGl2aXR5U3RhdGUpCit7CisgICAgaWYgKG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlcikKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLT5yZXBvcnRX
ZWJDb250ZW50Q1BVVGltZShjcHVUaW1lLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlRm9yQ1BVU2FtcGxpbmc+KGFjdGl2aXR5U3RhdGUpKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGQ5
Yjg2MDM4MmU0NzM3ZmIxMjYyNWJkNDQ2MGJjOTRmMmE2YzE4MDAuLmFlNTZmZmU3ZDZhM2YzMjA3
Y2E2YWI1ZWM3ZTk2MTVmODRiMTFkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCkBAIC04NSw2ICs4NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
RG93bmxvYWRQcm94eTsKIGNsYXNzIEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVy
OwogY2xhc3MgVUlHYW1lcGFkOworY2xhc3MgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxl
cjsKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uOwogY2xhc3MgV2ViQ29udGV4dFN1cHBsZW1l
bnQ7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CkBAIC0yNTksNiArMjYwLDggQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXJDYWNoZWRDcmVkZW50aWFscygpOwogICAgIHZvaWQgdGVybWluYXRlRGF0
YWJhc2VQcm9jZXNzKCk7CiAKKyAgICB2b2lkIHJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKGludDY0
X3QgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTdGF0ZSk7CisKICAgICB2b2lkIGFsbG93U3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDZXJ0aWZpY2F0ZUluZm8qLCBj
b25zdCBTdHJpbmcmIGhvc3QpOwogCiAgICAgV2ViUHJvY2Vzc1Byb3h5JiBjcmVhdGVOZXdXZWJQ
cm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7IC8vIFdpbGwgcmV0dXJuIGFuIGV4
aXN0aW5nIG9uZSBpZiBsaW1pdCBpcyBtZXQuCkBAIC01MzIsNiArNTM1LDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1fYXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbk5vdGlm
aWNhdGlvbk9ic2VydmVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hQZXJmb3JtYW5jZUdy
YXBoaWNzVXNhZ2VTYW1wbGVyPiBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVy
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPiBt
X3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI7CiAjZW5kaWYKIAogICAgIFN0cmluZyBt
X292ZXJyaWRlSWNvbkRhdGFiYXNlUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgppbmRleCA4ZWJhOGU1MzBjNWQ0ZDE1Zjk0
ZGFjZGFkYmIxNDE2NjYxZmU5NzNkLi44OTkwYzAwOTQxM2JjOWRmZWMxMzQwMDc2NjVlNGQyNzcw
MWI0NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLm1lc3NhZ2VzLmluCkBAIC0zNCw0ICszNCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQ
b29sIHsKICAgICAjIFBsdWctaW4gbWVzc2FnZXMuCiAgICAgdm9pZCBBZGRQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoKFN0cmluZyBwYWdlT3JpZ2luLCB1aW50MzJfdCBoYXNoLCBXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgUGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFj
dGlvbih1aW50MzJfdCBoYXNoLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorCisgICAg
UmVwb3J0V2ViQ29udGVudENQVVRpbWUoaW50NjRfdCBjcHVUaW1lLCB1aW50NjRfdCBhY3Rpdml0
eVN0YXRlKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGYzZWE1NmFkZDBkN2IwZTk4OWE1NDIwM2QzMTdkNWNjNjg5OTgxODQu
LjVkODhhOWRjZDZkNDcwNGEyNjdkNDk4YjhlMTdlYTExZTY2YjMzOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMzgsNiAr
MTIzOCw4IEBACiAJCTgzMUVFQkJFMUJEODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMxRUVCQkMxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAgKi87IH07CiAJCTgzMkFFMjUyMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzJBRTI1MDFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oICovOyB9OwogCQk4MzJBRTI1MzFCRTJFOENEMDBGQUFF
MTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJBRTI1MTFCRTJFOENEMDBGQUFF
MTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgKi87IH07CisJCTgz
MkVEMThCMUUyRkUxNTcwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkVE
MTg5MUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNw
cCAqLzsgfTsKKwkJODMyRUQxOEMxRTJGRTE1NzAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzMkVEMThBMUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyLmggKi87IH07CiAJCTgzNEIyNTBGMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3Jr
Q2FjaGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzRCMjUwRTFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5oICovOyB9OwogCQk4MzRCMjUxMjFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCAqLzsg
fTsKIAkJODM2MDM0OUYxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzYw
MzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLzsg
fTsKQEAgLTMzOTEsNiArMzM5Myw4IEBACiAJCTgzMUVFQkJDMUJEODVDNDMwMEJCNjRDMyAvKiBO
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODMyQUUyNTAxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzJBRTI1MTFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODMyRUQxODkxRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgzMkVEMThBMUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODM0QjI1MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUxMDFBODQyQzg3MDBDRkIx
NTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1FMaXRlRGF0
YWJhc2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyOTIsNiAr
NjI5Niw4IEBACiAJCQkJQkM2RURBQTUxMTEyNzFDNjAwRTc2NzhCIC8qIFBhZ2VDbGllbnQuaCAq
LywKIAkJCQkxQUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5jcHAgKi8s
CiAJCQkJMUFDNzUzN0ExODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCAqLywKKwkJ
CQk4MzJFRDE4OTFFMkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlci5jcHAgKi8sCisJCQkJODMyRUQxOEExRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCAqLywKIAkJCQkzNzcxNkE1OTE5NUI5MTA1MDBFRThCMUIg
LyogUHJvY2Vzc0Fzc2VydGlvbi5jcHAgKi8sCiAJCQkJODZGOTUzNjAxOEZGNEZENDAwMURCMkVG
IC8qIFByb2Nlc3NBc3NlcnRpb24uaCAqLywKIAkJCQk4NkU2N0EyMjE5MEY0MTE4MDAwMDRBQjcg
LyogUHJvY2Vzc1Rocm90dGxlci5jcHAgKi8sCkBAIC04MDgxLDYgKzgwODcsNyBAQAogCQkJCUNF
MUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcxNDY4ODM0ODAwOEIxRTgxIC8qIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTgz
MkVEMThDMUUyRkUxNTcwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZFNDM2NjE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxl
Z2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxQjUxRDU5MTdGRjAwREQ3QzY4IC8qIFVJ
R2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxQTkxRDU1MjkzNDAwREQ3QzY4IC8q
IFVJR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTkyNDUsNiArOTI1Miw3IEBA
CiAJCQkJOTNBODhCNDcxQkM4ODI5NzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NEM0E0ODIxQTVEMDJGQTAwOTYyM0I4IC8qIEFQSU5hdmlnYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGNjlGQTMxMTc2RDAxNDAwNDcxQTUyIC8qIEFQ
SU5hdmlnYXRpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgzMkVEMThCMUUyRkUxNTcw
MDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzc4RTFBM0QxODFFRDZGRjAwMzEwMDdBIC8qIEFQSU9iamVjdC5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDODU3RkI2MTJCODMwRTYwMEVERUIyRSAvKiBBUElPcGVuUGFu
ZWxQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmlu
ZGV4IDczMTRmNjFmODVjMDg3OTVkZDhhOWY3N2YyZjE2ZGQ0NDY4ZDMwY2YuLjQ5ODM0YzNhMzBl
YmY5MjE1ZTlmNTRlOTFkY2IyNGVhMTNmOTRjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJTZWFyY2hQb3B1cE1lbnUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CkBAIC0yNzQsNiArMjc1LDExIEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpydW5Nb2RhbCgpCiAgICAgbV9wYWdlLnJ1bk1vZGFsKCk7CiB9CiAK
K3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXBvcnRQcm9jZXNzQ1BVVGltZShpbnQ2NF90IGNwdVRp
bWUsIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyBhY3Rpdml0eVN0YXRlKQoreworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpSZXBv
cnRXZWJDb250ZW50Q1BVVGltZShjcHVUaW1lLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYWN0aXZp
dHlTdGF0ZSkpLCAwKTsKK30KKwogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldFRvb2xiYXJzVmlz
aWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSkKIHsKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTZXRUb29sYmFyc0FyZVZpc2libGUodG9vbGJhcnNBcmVWaXNpYmxl
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA2NGU4YjE0MjJhYTE1NGUyOWY4MmVmMmUyMTQx
MjkzMmE4ZjdjNWMyLi41YzlkNzczYTcyYzA2MDhjMDIwNjhhYzFkOWRkZjQ1ZDRhMGJkOWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTY3LDYgKzY3LDggQEAgcHJpdmF0ZToKICAgICAKICAg
ICBib29sIGNhblJ1bk1vZGFsKCkgZmluYWw7CiAgICAgdm9pZCBydW5Nb2RhbCgpIGZpbmFsOwor
CisgICAgdm9pZCByZXBvcnRQcm9jZXNzQ1BVVGltZShpbnQ2NF90LCBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlRm9yQ1BVU2FtcGxpbmcpIGZpbmFsOwogICAgIAogICAgIHZvaWQgc2V0VG9vbGJhcnNW
aXNpYmxlKGJvb2wpIGZpbmFsOwogICAgIGJvb2wgdG9vbGJhcnNWaXNpYmxlKCkgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299256</attachid>
            <date>2017-01-19 11:59:18 -0800</date>
            <delta_ts>2017-01-19 12:18:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167163-20170119115730.patch</filename>
            <type>text/plain</type>
            <size>55743</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDUyMmNkMmQwMTcxNzk4
ZmRhMmY5ZmFkNzVhMWIxMjBkYzk1ZGVmZC4uNmJhOWU0NGFlMDFmY2ZjZTllNmUxZGQxODA1MmEy
NDFjM2NhNDY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE3LTAxLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHBlciBhY3Rp
dml0eSBzdGF0ZSBDUFUgdXNhZ2UgcmVwb3J0aW5nIHVzaW5nIGRpYWdub3N0aWMgbG9nZ2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3MTYzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDA1ODM0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGVyIGFjdGl2aXR5IHN0YXRlIENQ
VSB1c2FnZSByZXBvcnRpbmcgdXNpbmcgZGlhZ25vc3RpYyBsb2dnaW5nLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQWN0aXZp
dHlTdGF0ZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFn
ZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpub25WaXNpYmxlU3RhdGVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlTm9uQWN0aXZlU3RhdGVLZXkpOgorICAgICAgICAo
V2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlQW5kQWN0aXZlU3RhdGVLZXkp
OgorICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpmb3JlZ3JvdW5kQ1BV
VXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5LZXkpOgorICAgICAgICAoV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpiYWNrZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5LZXkpOgor
ICAgICAgICAqIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg6CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVXRpbGl0eVBhZ2VDaHJvbWVDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp+
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OmlzVXRpbGl0eVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0QWN0
aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRJc1Zpc2libGVJbnRlcm5h
bCk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphY3Rp
dml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzVXRpbGl0eVBhZ2UpOgorICAg
ICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjphY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGVy
Zm9ybWFuY2VNb25pdG9yOjpQZXJmb3JtYW5jZU1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
UGVyZm9ybWFuY2VNb25pdG9yOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpQZXJmb3JtYW5jZU1vbml0b3I6OmRpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVyZm9ybWFuY2VNb25pdG9yOjphY3Rpdml0eVN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0TG9hZENQVVVzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBvc3RCYWNrZ3Jv
dW5kaW5nQ1BVVXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VNb25pdG9yOjpt
ZWFzdXJlUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmlu
Z0ZvckNQVVNhbXBsaW5nQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3Jt
YW5jZU1vbml0b3I6Om1lYXN1cmVDUFVVc2FnZUluQWN0aXZpdHlTdGF0ZSk6CisgICAgICAgICog
cGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFn
ZS9BY3Rpdml0eVN0YXRlLmguCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAg
ICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmlzUG9zdExv
YWRDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
czo6aXNQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjppc1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZU1lYXN1cmVt
ZW50RW5hYmxlZCk6CisKIDIwMTctMDEtMTkgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSBiaW5kaW5ncyB0ZXN0cyBhZnRlciByMjEwOTE4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGMxYmU3MTUyMGFiYTdjY2I5NTlkN2EwMGZkOGY1YjJlZDdhODE0MjYu
LjhlMWYyNTc2ZDU4NmYyZmFiMDE5OGQ4ZjQ4Yjc2ZDA0NjFmNTI5OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMyBAQAorMjAxNy0wMS0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBwZXIgYWN0aXZpdHkgc3RhdGUgQ1BVIHVzYWdlIHJlcG9y
dGluZyB1c2luZyBkaWFnbm9zdGljIGxvZ2dpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzE2MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAw
NTgzNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IHBlciBhY3Rpdml0eSBzdGF0ZSBDUFUgdXNhZ2UgcmVwb3J0aW5nIHVzaW5nIGRp
YWdub3N0aWMgbG9nZ2luZy4KKworICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOjpQZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UGVyQWN0aXZp
dHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6flBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIp
OgorICAgICAgICAoV2ViS2l0OjpQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOjpyZXBv
cnRXZWJDb250ZW50Q1BVVGltZSk6CisgICAgICAgIChXZWJLaXQ6OmxvZ2dpbmdLZXlGb3JBY3Rp
dml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6bG9nZ2luZ0tleUZvckNQVVVzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6bG9nZ2luZ1Rp
bWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyOjpwYWdlRm9yTG9nZ2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL1BlckFjdGl2aXR5U3Rh
dGVDUFVVc2FnZVNhbXBsZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9BY3Rp
dml0eVN0YXRlLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZXBvcnRQ
cm9jZXNzQ1BVVGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaDoKKwogMjAxNy0wMS0xOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIEluc3RhbGwgV2ViS2l0LmFwaW5vdGVzIHdpdGggdGhlIHB1
YmxpYyBoZWFkZXJzIG9mIFdlYktpdCBmcmFtZXdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMjRiNjdjMzA4MmU2NzVjNDdl
ODBkMTIxODAyYTQwMDE2Yjc0YzEzLi45YTQwZGI4MjM5OWZiMGJmNzBkNTJiNGFjNjNmOTBhODhm
OTdiZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zMDY0LDYgKzMwNjQsOCBAQAogCQk4M0YxMjA2QjFCOEMxMDQ3MDBENzVG
NjMgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzRjEyMDZBMUI4QzEwMzYwMEQ3NUY2MyAvKiBKU05vZGVGaWx0
ZXJDdXN0b20uY3BwICovOyB9OwogCQk4M0ZFN0NBNzFEQTlGMUE3MDAzNzIzN0MgLyogVUlFdmVu
dEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
RkU3Q0E0MURBOUYxNjYwMDM3MjM3QyAvKiBVSUV2ZW50SW5pdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzRkU3Q0E4MURBOUYxQjYwMDM3MjM3
QyAvKiBFdmVudE1vZGlmaWVySW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODNGRTdDQTMxREE5RjE2NTAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJ
bml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
ODNGRTkwMjcxRTMwN0MzMDAwM0U5MTk5IC8qIFBlcmZvcm1hbmNlTW9uaXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGRTkwMjYxRTMwN0MxQzAw
M0U5MTk5IC8qIFBlcmZvcm1hbmNlTW9uaXRvci5oICovOyB9OworCQk4M0ZFOTAyODFFMzA3QzMz
MDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkU5MDI1MUUzMDdDMUMwMDNFOTE5OSAvKiBQZXJm
b3JtYW5jZU1vbml0b3IuY3BwICovOyB9OwogCQk4NDE5RDJBNzEyMEQ5MkQwMDAxNDFGOEYgLyog
U1ZHUGF0aEJ5dGVTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg0MTlEMkE0MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbS5o
ICovOyB9OwogCQk4NDE5RDJBODEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1C
dWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg0MTlEMkE1MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuY3Bw
ICovOyB9OwogCQk4NDE5RDJBOTEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1C
dWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NDE5RDJBNjEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmggKi87
IH07CkBAIC0xMDU5Niw2ICsxMDU5OCw4IEBACiAJCTgzRkU3Q0E0MURBOUYxNjYwMDM3MjM3QyAv
KiBVSUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVSUV2ZW50
SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0ZFN0NBNTFEQTlGMTY2MDAz
NzIzN0MgLyogVUlFdmVudEluaXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFVJRXZlbnRJ
bml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNGRTdDQTYxREE5RjE2NjAw
MzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBF
dmVudE1vZGlmaWVySW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRkU5
MDI1MUUzMDdDMUMwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyZm9ybWFuY2VNb25pdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNGRTkwMjYxRTMwN0MxQzAwM0U5MTk5IC8qIFBlcmZv
cm1hbmNlTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJmb3Jt
YW5jZU1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQxOUQyQTQxMjBE
OTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1BhdGhCeXRlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg0MTlEMkE1MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGF0aEJ5dGVT
dHJlYW1CdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQxOUQyQTYx
MjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDE4LDYgKzE4MDIyLDggQEAKIAkJCQk4NkJFMzNG
QzE1MDU4Q0IyMDBDRTBGRDggLyogUGVyZm9ybWFuY2VFbnRyeS5pZGwgKi8sCiAJCQkJQUQ1QTBD
MjExREVDQTEwMTAwNzA3MDU0IC8qIFBlcmZvcm1hbmNlTG9nZ2luZy5jcHAgKi8sCiAJCQkJQUQ1
QTBDMjAxREVDQTBCNTAwNzA3MDU0IC8qIFBlcmZvcm1hbmNlTG9nZ2luZy5oICovLAorCQkJCTgz
RkU5MDI1MUUzMDdDMUMwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0b3IuY3BwICovLAorCQkJ
CTgzRkU5MDI2MUUzMDdDMUMwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0b3IuaCAqLywKIAkJ
CQk4QUY0RTU1MjExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCAq
LywKIAkJCQk4QUY0RTU1MzExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
LmggKi8sCiAJCQkJOEFGNEU1NTQxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdh
dGlvbi5pZGwgKi8sCkBAIC0yNjcyMCw2ICsyNjcyNiw3IEBACiAJCQkJODUwMzFCNDQwQTQ0RUZD
NzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTAwRDU5
MTgyREFDOEQwMDA4N0RENyAvKiBLZXllZENvZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3
QTYzQzUxQjc0MzE4RjAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmggaW4gSGVhZGVycyAqLywK
KwkJCQk4M0ZFOTAyNzFFMzA3QzMwMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVy
Q0YuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNCM0Q3MTE0QjE2NjYwMDFDNDI5QiAvKiBLZXlF
dmVudENvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjU1NDEzOTE0ODk4MTFDMDAwREZDNUQg
LyogS2V5RXZlbnRDb2Rlc0lPUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTEyNSw2ICszMTEzMiw3
IEBACiAJCQkJMDczQkUzNEUxN0QxODBCMjAwMkJENDMxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bkRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MEUxN0QxNENFRTAwNDIw
QUExIC8qIFJUQ1N0YXRzUmVwb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTEwMTdE
MTRDRUUwMDQyMEFBMSAvKiBSVENTdGF0c1Jlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTgzRkU5MDI4MUUzMDdDMzMwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUUyQzQzNjcxQkNFRTM3NzAwMDFFMkJDIC8qIFJUQ1RyYWNrRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTgyNEFCQTIxQUU4MTExNjAwOTA3NEI3IC8qIFJ1YnlF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU4MjRBQkE2MUFFODEzODQwMDkwNzRCNyAv
KiBSdWJ5VGV4dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZp
dHlTdGF0ZS5oCmluZGV4IGI2ZWQ3ODJjOTg1YWRhNWY3ZTYzYmYyZGUwMmRlOWVjZDg2NTJhYjYu
LjBlNTM0Y2M2NmMwY2EzNTkwYjMwN2I4OTk1NTBhM2JmNDJiYjczMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZpdHlTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQWN0aXZpdHlTdGF0ZS5oCkBAIC00NSw0ICs0NSwxMCBAQCBzdHJ1Y3QgQWN0aXZpdHlTdGF0
ZSB7CiAgICAgc3RhdGljIGNvbnN0IEZsYWdzIEFsbEZsYWdzID0gV2luZG93SXNBY3RpdmUgfCBJ
c0ZvY3VzZWQgfCBJc1Zpc2libGUgfCBJc1Zpc2libGVPck9jY2x1ZGVkIHwgSXNJbldpbmRvdyB8
IElzVmlzdWFsbHlJZGxlIHwgSXNBdWRpYmxlIHwgSXNMb2FkaW5nOwogfTsKIAorZW51bSBjbGFz
cyBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgeworICAgIE5vblZpc2libGUsCisgICAgVmlz
aWJsZU5vbkFjdGl2ZSwKKyAgICBWaXNpYmxlQW5kQWN0aXZlCit9OworCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAzMzFkZjRhYzdmMGY3
ZjgxYWZmZmM3ODhiZWMxOGE3YTVlODFjOGZmLi4yYzg5YjZjYmE1MDY4MGI5NzJkYzU1ZmM0YjI0
YzQ4OTBmYWViODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTQ1NSw2ICs0
NTUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50
TWFya2VyUmVjdHMoKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQcm9jZXNzQ1BVVGlt
ZShpbnQ2NF90LCBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpIHsgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwCmluZGV4IGUxNmY1OWRlMGZiZDcxYTQxOGIy
Njk2OTM0OTViNGY0MjM0ZTg1ODkuLjE4YjgzMmQyYjczZGNjZTM0NDRkODRkYzU1ZDNhZmE5YTI3
N2Y5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5j
cHAKQEAgLTE2Myw2ICsxNjMsMTEgQEAgU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6bm9T
dG9yZUtleSgpCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibm9TdG9yZSIpOwogfQogCitTdHJp
bmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpub25WaXNpYmxlU3RhdGVLZXkoKQoreworICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoIm5vblZpc2libGVTdGF0ZSIpOworfQorCiBTdHJpbmcgRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjpub3RJbk1lbW9yeUNhY2hlS2V5KCkKIHsKICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJub3RJbk1lbW9yeUNhY2hlIik7CkBAIC01OTgsNiArNjAzLDE2IEBAIFN0cmlu
ZyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnZpZGVvS2V5KCkKICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJ2aWRlbyIpOwogfQogCitTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxl
Tm9uQWN0aXZlU3RhdGVLZXkoKQoreworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInZpc2libGVO
b25BY3RpdmVTdGF0ZSIpOworfQorCitTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNp
YmxlQW5kQWN0aXZlU3RhdGVLZXkoKQoreworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInZpc2li
bGVBbmRBY3RpdmVTdGF0ZSIpOworfQorCiBTdHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp3
YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb25LZXkoKQogewogICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIndhc3RlZFNwZWN1bGF0aXZlV2FybXVwV2l0aFJldmFsaWRhdGlvbiIp
OwpAQCAtNjU4LDUgKzY3MywzNyBAQCBTdHJpbmcgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzOjp3ZWJHTEtleSgpCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgid2ViR0wiKTsKIH0KIAor
U3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6Zm9yZWdyb3VuZENQVVVzYWdlVG9EaWFnbm9z
dGljTG9nZ2luZ0tleShkb3VibGUgY3B1VXNhZ2UpCit7CisgICAgaWYgKGNwdVVzYWdlIDwgMTAp
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkJlbG93MTAiKTsKKyAgICBpZiAoY3B1VXNh
Z2UgPCAyMCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMTB0bzIwIik7CisgICAgaWYg
KGNwdVVzYWdlIDwgNDApCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjIwdG80MCIpOwor
ICAgIGlmIChjcHVVc2FnZSA8IDYwKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI0MHRv
NjAiKTsKKyAgICBpZiAoY3B1VXNhZ2UgPCA4MCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiNjB0bzgwIik7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib3ZlcjgwIik7Cit9CisKK1N0
cmluZyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmJhY2tncm91bmRDUFVVc2FnZVRvRGlhZ25vc3Rp
Y0xvZ2dpbmdLZXkoZG91YmxlIGNwdVVzYWdlKQoreworICAgIGlmIChjcHVVc2FnZSA8IDEpCisg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkJlbG93MSIpOworICAgIGlmIChjcHVVc2FnZSA8
IDUpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjF0bzUiKTsKKyAgICBpZiAoY3B1VXNh
Z2UgPCAxMCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiNXRvMTAiKTsKKyAgICBpZiAo
Y3B1VXNhZ2UgPCAzMCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMTB0bzMwIik7Cisg
ICAgaWYgKGNwdVVzYWdlIDwgNTApCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjMwdG81
MCIpOworICAgIGlmIChjcHVVc2FnZSA8IDcwKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCI1MHRvNzAiKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvdmVyNzAiKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Rp
YWdub3N0aWNMb2dnaW5nS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9n
Z2luZ0tleXMuaAppbmRleCA2YjZhMmYwMWFjODM3MTZjNmUxYTRmYTY5ZTllYjFiNGE5YjJkZDgx
Li41MDg5N2JiZjk0MWFiZTYwNTVhODUxNTExZTljOWVlOWE0NmFiODkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBTdHJpbmcgY2FjaGVkUmVzb3VyY2VSZXZhbGlkYXRpb25LZXkoKTsK
ICAgICBzdGF0aWMgU3RyaW5nIGNhbkNhY2hlS2V5KCk7CiAgICAgc3RhdGljIFN0cmluZyBjYW5u
b3RTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0tleSgpOwotICAgIHN0YXRpYyBTdHJpbmcgY3B1VXNh
Z2VLZXkoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGNwdVVzYWdlS2V5KCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBjcmVhdGVTaGFyZWRCdWZmZXJGYWls
ZWRLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGRlbHRhS2V5KCk7CiAg
ICAgc3RhdGljIFN0cmluZyBkZW5pZWRCeUNsaWVudEtleSgpOwpAQCAtODgsNiArODgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBub0RvY3VtZW50TG9hZGVyS2V5KCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBub0xvbmdlckluQ2FjaGVLZXkoKTsKICAgICBzdGF0
aWMgU3RyaW5nIG5vU3RvcmVLZXkoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5n
IG5vblZpc2libGVTdGF0ZUtleSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcg
bm90SFRUUEZhbWlseUtleSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgbm90
SW5DYWNoZUtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgbm90SW5NZW1vcnlDYWNoZUtleSgpOwpA
QCAtMTUwLDEyICsxNTEsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
dHJpbmcgdXNlcktleSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgdmFyeWlu
Z0hlYWRlck1pc21hdGNoS2V5KCk7CiAgICAgc3RhdGljIFN0cmluZyB2aWRlb0tleSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgdmlzaWJsZU5vbkFjdGl2ZVN0YXRlS2V5KCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB2aXNpYmxlQW5kQWN0aXZlU3RhdGVL
ZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHdhc3RlZFNwZWN1bGF0aXZl
V2FybXVwV2l0aFJldmFsaWRhdGlvbktleSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
dHJpbmcgd2FzdGVkU3BlY3VsYXRpdmVXYXJtdXBXaXRob3V0UmV2YWxpZGF0aW9uS2V5KCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB3ZWJHTEtleSgpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBTdHJpbmcgd2ViVmlld0tleSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTdHJpbmcgem9vbWVkS2V5KCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3Ry
aW5nIGZvcmVncm91bmRDUFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dpbmdLZXkoZG91YmxlIGNwdVVz
YWdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGJhY2tncm91bmRDUFVVc2Fn
ZVRvRGlhZ25vc3RpY0xvZ2dpbmdLZXkoZG91YmxlIGNwdVVzYWdlKTsKKwogICAgIC8vIFN1Y2Nl
c3MgLyBGYWlsdXJlIGtleXMuCiAgICAgc3RhdGljIFN0cmluZyBzdWNjZXNzS2V5KCk7CiAgICAg
c3RhdGljIFN0cmluZyBmYWlsdXJlS2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA5NTFlMjc0
YjdmMGEwZDBiZDAyODkyZjNiNjllYjE0NWE2MTdiZDkxLi5kYjE3ZTZiYWY3YWNlNGMyNzI2NWM4
ZWRiMzcwNWZkYjE3ZWIyMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTY2LDYgKzY2LDcgQEAK
ICNpbmNsdWRlICJQYWdlRGVidWdnYWJsZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2lu
Y2x1ZGUgIlBhZ2VPdmVybGF5Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBlcmZvcm1hbmNlTW9u
aXRvci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1
ZGUgIlBsdWdJbkNsaWVudC5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKQEAgLTEyNywxMyAr
MTI4LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2RlZmluZSBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUGFnZTo6IiBmbXQsIHRoaXMsICMjX19WQV9B
UkdTX18pCi0KIHN0YXRpYyBIYXNoU2V0PFBhZ2UqPiogYWxsUGFnZXM7CitzdGF0aWMgdW5zaWdu
ZWQgbm9uVXRpbGl0eVBhZ2VDb3VudCB7IDAgfTsKIAotc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25v
OjpzZWNvbmRzIGNwdVVzYWdlTWVhc3VyZW1lbnREZWxheSB7IDUgfTsKLXN0YXRpYyBjb25zdCBz
dGQ6OmNocm9ubzo6c2Vjb25kcyBwb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnREdXJhdGlvbiB7
IDEwIH07Ci1zdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86Om1pbnV0ZXMgYmFja2dyb3VuZENQVVVz
YWdlTWVhc3VyZW1lbnREdXJhdGlvbiB7IDUgfTsKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1V0aWxp
dHlQYWdlQ2hyb21lQ2xpZW50KENocm9tZUNsaWVudCYgY2hyb21lQ2xpZW50KQoreworICAgIHJl
dHVybiBjaHJvbWVDbGllbnQuaXNFbXB0eUNocm9tZUNsaWVudCgpIHx8IGNocm9tZUNsaWVudC5p
c1NWR0ltYWdlQ2hyb21lQ2xpZW50KCk7Cit9CiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChX
VEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgcGFnZUNvdW50ZXIsICgiUGFnZSIpKTsKIApAQCAt
MjUzLDggKzI1NCw4IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmln
dXJhdGlvbikKICAgICAsIG1fdmlzaXRlZExpbmtTdG9yZSgqV1RGTW92ZShwYWdlQ29uZmlndXJh
dGlvbi52aXNpdGVkTGlua1N0b3JlKSkKICAgICAsIG1fc2Vzc2lvbklEKFNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKQogICAgICwgbV9pc0Nsb3NpbmcoZmFsc2UpCi0gICAgLCBtX3Bvc3RQ
YWdlTG9hZENQVVVzYWdlVGltZXIoKnRoaXMsICZQYWdlOjptZWFzdXJlUG9zdExvYWRDUFVVc2Fn
ZSkKLSAgICAsIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRpbWVyKCp0aGlzLCAmUGFnZTo6
bWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2UpCisgICAgLCBtX2lzVXRpbGl0eVBhZ2Uo
aXNVdGlsaXR5UGFnZUNocm9tZUNsaWVudChjaHJvbWUoKS5jbGllbnQoKSkpCisgICAgLCBtX3Bl
cmZvcm1hbmNlTW9uaXRvcihpc1V0aWxpdHlQYWdlKCkgPyBudWxscHRyIDogc3RkOjptYWtlX3Vu
aXF1ZTxQZXJmb3JtYW5jZU1vbml0b3I+KCp0aGlzKSkKIHsKICAgICB1cGRhdGVUaW1lclRocm90
dGxpbmdTdGF0ZSgpOwogCkBAIC0yNzEsNiArMjcyLDggQEAgUGFnZTo6UGFnZShQYWdlQ29uZmln
dXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogCiAgICAgQVNTRVJUKCFhbGxQYWdlcy0+Y29u
dGFpbnModGhpcykpOwogICAgIGFsbFBhZ2VzLT5hZGQodGhpcyk7CisgICAgaWYgKCFpc1V0aWxp
dHlQYWdlKCkpCisgICAgICAgICsrbm9uVXRpbGl0eVBhZ2VDb3VudDsKIAogI2lmbmRlZiBOREVC
VUcKICAgICBwYWdlQ291bnRlci5pbmNyZW1lbnQoKTsKQEAgLTI5NSw2ICsyOTgsOCBAQCBQYWdl
Ojp+UGFnZSgpCiAgICAgbV9tYWluRnJhbWUtPnNldFZpZXcobnVsbHB0cik7CiAgICAgc2V0R3Jv
dXBOYW1lKFN0cmluZygpKTsKICAgICBhbGxQYWdlcy0+cmVtb3ZlKHRoaXMpOworICAgIGlmICgh
aXNVdGlsaXR5UGFnZSgpKQorICAgICAgICAtLW5vblV0aWxpdHlQYWdlQ291bnQ7CiAgICAgCiAg
ICAgbV9zZXR0aW5ncy0+cGFnZURlc3Ryb3llZCgpOwogCkBAIC05MzQsOTEgKzkzOSwyMSBAQCB2
b2lkIFBhZ2U6OnNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbiB1c2VySW50ZQogCiB2b2lkIFBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCkKIHsKLSAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICBtX3Bv
c3RQYWdlTG9hZENQVVVzYWdlVGltZXIuc3RvcCgpOworICAgIGlmIChtX3BlcmZvcm1hbmNlTW9u
aXRvcikKKyAgICAgICAgbV9wZXJmb3JtYW5jZU1vbml0b3ItPmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCk7CiB9CiAKIHZvaWQgUGFnZTo6ZGlkRmluaXNoTG9hZCgpCiB7CiAgICAgcmVzZXRSZWxl
dmFudFBhaW50ZWRPYmplY3RDb3VudGVyKCk7CiAKLSAgICAvLyBPbmx5IGRvIHBvc3QtbG9hZCBD
UFUgdXNhZ2UgbWVhc3VyZW1lbnQgaWYgdGhlcmUgaXMgYSBzaW5nbGUgUGFnZSBpbiB0aGUgcHJv
Y2VzcyBpbiBvcmRlciB0byByZWR1Y2Ugbm9pc2UuCi0gICAgaWYgKFNldHRpbmdzOjppc1Bvc3RM
b2FkQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKSAmJiBhbGxQYWdlcy0+c2l6ZSgpID09IDEp
IHsKLSAgICAgICAgbV9wb3N0TG9hZENQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIG1f
cG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1lci5zdGFydE9uZVNob3QoY3B1VXNhZ2VNZWFzdXJlbWVu
dERlbGF5KTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZm9yZWdyb3VuZENQVVVzYWdlVG9E
aWFnbm9zdGljTG9nZ2luS2V5KGRvdWJsZSBjcHVVc2FnZSkKLXsKLSAgICBpZiAoY3B1VXNhZ2Ug
PCAxMCkKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQmVsb3cxMCIpOwotICAgIGlmIChj
cHVVc2FnZSA8IDIwKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIxMHRvMjAiKTsKLSAg
ICBpZiAoY3B1VXNhZ2UgPCA0MCkKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMjB0bzQw
Iik7Ci0gICAgaWYgKGNwdVVzYWdlIDwgNjApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
IjQwdG82MCIpOwotICAgIGlmIChjcHVVc2FnZSA8IDgwKQotICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCI2MHRvODAiKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvdmVyODAiKTsKLX0K
LQotdm9pZCBQYWdlOjptZWFzdXJlUG9zdExvYWRDUFVVc2FnZSgpCi17Ci0gICAgaWYgKGFsbFBh
Z2VzLT5zaXplKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3Bvc3RMb2Fk
Q1BVVGltZSkgewotICAgICAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IGdldENQVVRpbWUoKTsKLSAg
ICAgICAgaWYgKG1fcG9zdExvYWRDUFVUaW1lKQotICAgICAgICAgICAgbV9wb3N0UGFnZUxvYWRD
UFVVc2FnZVRpbWVyLnN0YXJ0T25lU2hvdChwb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnREdXJh
dGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3RkOjpvcHRpb25hbDxDUFVUaW1l
PiBjcHVUaW1lID0gZ2V0Q1BVVGltZSgpOwotICAgIGlmICghY3B1VGltZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZG91YmxlIGNwdVVzYWdlID0gY3B1VGltZS52YWx1ZSgpLnBlcmNlbnRhZ2VD
UFVVc2FnZVNpbmNlKCptX3Bvc3RMb2FkQ1BVVGltZSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQZXJmb3JtYW5jZUxvZ2dpbmcsICJtZWFzdXJlUG9zdExvYWRDUFVVc2FnZTogUHJvY2Vz
cyB3YXMgdXNpbmcgJS4xZiUlIHBlcmNlbnQgQ1BVIGFmdGVyIHRoZSBwYWdlIGxvYWQuIiwgY3B1
VXNhZ2UpOwotICAgIGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpwb3N0UGFnZUxvYWRLZXkoKSwgRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjpjcHVVc2FnZUtleSgpLCBmb3JlZ3JvdW5kQ1BVVXNhZ2VUb0Rp
YWdub3N0aWNMb2dnaW5LZXkoY3B1VXNhZ2UpLCBTaG91bGRTYW1wbGU6Ok5vKTsKKyAgICBpZiAo
bV9wZXJmb3JtYW5jZU1vbml0b3IpCisgICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5kaWRG
aW5pc2hMb2FkKCk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgYmFja2dyb3VuZENQVVVzYWdlVG9EaWFn
bm9zdGljTG9nZ2luS2V5KGRvdWJsZSBjcHVVc2FnZSkKK2Jvb2wgUGFnZTo6aXNPbmx5Tm9uVXRp
bGl0eVBhZ2UoKSBjb25zdAogewotICAgIGlmIChjcHVVc2FnZSA8IDEpCi0gICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIkJlbG93MSIpOwotICAgIGlmIChjcHVVc2FnZSA8IDUpCi0gICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoIjF0bzUiKTsKLSAgICBpZiAoY3B1VXNhZ2UgPCAxMCkKLSAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiNXRvMTAiKTsKLSAgICBpZiAoY3B1VXNhZ2UgPCAz
MCkKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMTB0bzMwIik7Ci0gICAgaWYgKGNwdVVz
YWdlIDwgNTApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjMwdG81MCIpOwotICAgIGlm
IChjcHVVc2FnZSA8IDcwKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI1MHRvNzAiKTsK
LSAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvdmVyNzAiKTsKLX0KLQotdm9pZCBQYWdlOjptZWFz
dXJlUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZSgpCi17Ci0gICAgaWYgKGFsbFBhZ2VzLT5zaXpl
KCkgIT0gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3Bvc3RCYWNrZ3JvdW5kaW5n
Q1BVVGltZSkgewotICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSA9IGdldENQVVRp
bWUoKTsKLSAgICAgICAgaWYgKG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lKQotICAgICAgICAg
ICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIuc3RhcnRPbmVTaG90KGJhY2tncm91
bmRDUFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IGdldENQVVRpbWUoKTsKLSAgICBp
ZiAoIWNwdVRpbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRvdWJsZSBjcHVVc2FnZSA9IGNw
dVRpbWUudmFsdWUoKS5wZXJjZW50YWdlQ1BVVXNhZ2VTaW5jZSgqbV9wb3N0QmFja2dyb3VuZGlu
Z0NQVVRpbWUpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUGVyZm9ybWFuY2VMb2dnaW5n
LCAibWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2U6IFByb2Nlc3Mgd2FzIHVzaW5nICUu
MWYlJSBwZXJjZW50IENQVSBhZnRlciBiZWNvbWluZyBub24gdmlzaWJsZS4iLCBjcHVVc2FnZSk7
Ci0gICAgZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhW
YWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnBvc3RQYWdlQmFja2dyb3VuZGluZ0tleSgpLCBE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OmNwdVVzYWdlS2V5KCksIGJhY2tncm91bmRDUFVVc2FnZVRv
RGlhZ25vc3RpY0xvZ2dpbktleShjcHVVc2FnZSksIFNob3VsZFNhbXBsZTo6Tm8pOworICAgIHJl
dHVybiAhaXNVdGlsaXR5UGFnZSgpICYmIG5vblV0aWxpdHlQYWdlQ291bnQgPT0gMTsKIH0KIAog
dm9pZCBQYWdlOjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQpAQCAtMTU3
MCw2ICsxNTA1LDkgQEAgdm9pZCBQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6
OkZsYWdzIGFjdGl2aXR5U3RhdGUpCiAKICAgICBpZiAod2FzVmlzaWJsZUFuZEFjdGl2ZSAhPSBp
c1Zpc2libGVBbmRBY3RpdmUoKSkKICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
Ojp1cGRhdGVOb3dQbGF5aW5nSW5mb0lmTmVjZXNzYXJ5KCk7CisKKyAgICBpZiAobV9wZXJmb3Jt
YW5jZU1vbml0b3IpCisgICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5hY3Rpdml0eVN0YXRl
Q2hhbmdlZChvbGRBY3Rpdml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlKTsKIH0KIAogYm9vbCBQYWdl
Ojppc1Zpc2libGVBbmRBY3RpdmUoKSBjb25zdApAQCAtMTYyNiwxMyArMTU2NCw2IEBAIHZvaWQg
UGFnZTo6c2V0SXNWaXNpYmxlSW50ZXJuYWwoYm9vbCBpc1Zpc2libGUpCiAgICAgICAgIGlmIChG
cmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWUoKS52aWV3KCkpCiAgICAgICAgICAgICB2aWV3LT5o
aWRlKCk7CiAgICAgfQotCi0gICAgLy8gTWVhc3VyZSBDUFUgdXNhZ2Ugb2YgcGFnZXMgd2hlbiB0
aGV5IGFyZSBubyBsb25nZXIgdmlzaWJsZS4KLSAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGlt
ZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoaXNWaXNpYmxlKQotICAgICAgICBtX3Bvc3RCYWNr
Z3JvdW5kaW5nQ1BVVXNhZ2VUaW1lci5zdG9wKCk7Ci0gICAgZWxzZSBpZiAoU2V0dGluZ3M6Omlz
UG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpICYmIGFsbFBhZ2Vz
LT5zaXplKCkgPT0gMSkKLSAgICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIu
c3RhcnRPbmVTaG90KGNwdVVzYWdlTWVhc3VyZW1lbnREZWxheSk7CiB9CiAKIHZvaWQgUGFnZTo6
c2V0SXNQcmVyZW5kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAwMmI1MDQ0ZjMxNTgxMzkzZDRhYWUx
NGVmOWMwNWRmMGZmNzdhZDJjLi4wZDJjNzM1NTI3NmMzYTIxZTJhOWZjNzkxMzk1NjE4MGM4MThm
NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMjEsNyArMjEsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJBY3Rpdml0eVN0YXRlLmgiCi0jaW5jbHVkZSAiQ1BVVGltZS5oIgogI2luY2x1ZGUg
IkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUg
IkxheW91dE1pbGVzdG9uZXMuaCIKQEAgLTEwNSw2ICsxMDQsNyBAQCBjbGFzcyBQYWdlQ29uZmln
dXJhdGlvbjsKIGNsYXNzIFBhZ2VDb25zb2xlQ2xpZW50OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7
CiBjbGFzcyBQYWdlR3JvdXA7CitjbGFzcyBQZXJmb3JtYW5jZU1vbml0b3I7CiBjbGFzcyBQbHVn
SW5DbGllbnQ7CiBjbGFzcyBQbHVnaW5EYXRhOwogY2xhc3MgUGx1Z2luSW5mb1Byb3ZpZGVyOwpA
QCAtMzU3LDYgKzM1Nyw4IEBAIHB1YmxpYzoKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMgd2hlbiB0
aGUgUGFnZSBzdGFydHMgYW5kIHN0b3BzIGJlaW5nIHByZXNlbnRlZCB2aWEgYSBuYXRpdmUgd2lu
ZG93LgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0
YXRlOjpGbGFncyk7CisgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZTsgfQorCiAgICAgYm9vbCBpc1Zpc2libGVBbmRB
Y3RpdmUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzVmlzaWJsZShib29s
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzUHJlcmVuZGVyKCk7CkBAIC01NTksNiAr
NTYxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3Zl
cnJpZGUoc3RkOjpvcHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gdGhyb3R0bGluZykg
eyBtX2V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUgPSB0aHJvdHRsaW5nOyB9CiAKICAg
ICBXZWJHTFN0YXRlVHJhY2tlciogd2ViR0xTdGF0ZVRyYWNrZXIoKSBjb25zdCB7IHJldHVybiBt
X3dlYkdMU3RhdGVUcmFja2VyLmdldCgpOyB9CisKKyAgICBib29sIGlzT25seU5vblV0aWxpdHlQ
YWdlKCkgY29uc3Q7CisgICAgYm9vbCBpc1V0aWxpdHlQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9p
c1V0aWxpdHlQYWdlOyB9CisKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0
R3JvdXAoKTsKIApAQCAtNTcyLDkgKzU3OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGVja1N1
YmZyYW1lQ291bnRDb25zaXN0ZW5jeSgpIGNvbnN0OwogI2VuZGlmCiAKLSAgICB2b2lkIG1lYXN1
cmVQb3N0TG9hZENQVVVzYWdlKCk7Ci0gICAgdm9pZCBtZWFzdXJlUG9zdEJhY2tncm91bmRpbmdD
UFVVc2FnZSgpOwotCiAgICAgZW51bSBTaG91bGRIaWdobGlnaHRNYXRjaGVzIHsgRG9Ob3RIaWdo
bGlnaHRNYXRjaGVzLCBIaWdobGlnaHRNYXRjaGVzIH07CiAgICAgZW51bSBTaG91bGRNYXJrTWF0
Y2hlcyB7IERvTm90TWFya01hdGNoZXMsIE1hcmtNYXRjaGVzIH07CiAKQEAgLTc1NiwxNSArNzU5
LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3dBbGxQbHVnaW5zIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Jl
c291cmNlQ2FjaGluZ0Rpc2FibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNVdGlsaXR5UGFn
ZTsKICAgICBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIG1fdXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbiB7IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiB9OwogICAgIAog
ICAgIC8vIEZvciB0ZXN0aW5nLgogICAgIHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVo
YXZpb3I+IG1fZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZTsKIAotICAgIFRpbWVyIG1f
cG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1lcjsKLSAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IG1f
cG9zdExvYWRDUFVUaW1lOwotICAgIFRpbWVyIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRp
bWVyOwotICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRp
bWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBlcmZvcm1hbmNlTW9uaXRvcj4gbV9wZXJmb3JtYW5j
ZU1vbml0b3I7CiB9OwogCiBpbmxpbmUgUGFnZUdyb3VwJiBQYWdlOjpncm91cCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNhZWJlZjQx
NzdiZmFjMjc0OTRiMmY2N2QxMDBkYmJjOTU1ZGY1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcApAQCAtMCwwICsxLDIwMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQZXJmb3JtYW5jZU1v
bml0b3IuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5o
IgorI2luY2x1ZGUgIkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgiCisjaW5jbHVkZSAiRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlBhZ2Uu
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZp
bmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0df
SUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBQZXJm
b3JtYW5jZU1vbml0b3I6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorCitzdGF0aWMgY29u
c3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgY3B1VXNhZ2VNZWFzdXJlbWVudERlbGF5IHsgNSB9Owor
c3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIHBvc3RMb2FkQ1BVVXNhZ2VNZWFzdXJl
bWVudER1cmF0aW9uIHsgMTAgfTsKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6bWludXRlcyBi
YWNrZ3JvdW5kQ1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0aW9uIHsgNSB9Oworc3RhdGljIGNvbnN0
IHN0ZDo6Y2hyb25vOjptaW51dGVzIGNwdVVzYWdlU2FtcGxpbmdJbnRlcnZhbCB7IDEwIH07CisK
K3N0YXRpYyBpbmxpbmUgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nIGFjdGl2aXR5U3RhdGVG
b3JDUFVTYW1wbGluZyhBY3Rpdml0eVN0YXRlOjpGbGFncyBzdGF0ZSkKK3sKKyAgICBpZiAoIShz
dGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkpCisgICAgICAgIHJldHVybiBBY3Rpdml0
eVN0YXRlRm9yQ1BVU2FtcGxpbmc6Ok5vblZpc2libGU7CisgICAgaWYgKHN0YXRlICYgQWN0aXZp
dHlTdGF0ZTo6V2luZG93SXNBY3RpdmUpCisgICAgICAgIHJldHVybiBBY3Rpdml0eVN0YXRlRm9y
Q1BVU2FtcGxpbmc6OlZpc2libGVBbmRBY3RpdmU7CisgICAgcmV0dXJuIEFjdGl2aXR5U3RhdGVG
b3JDUFVTYW1wbGluZzo6VmlzaWJsZU5vbkFjdGl2ZTsKK30KKworUGVyZm9ybWFuY2VNb25pdG9y
OjpQZXJmb3JtYW5jZU1vbml0b3IoUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQorICAg
ICwgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyKCp0aGlzLCAmUGVyZm9ybWFuY2VNb25pdG9y
OjptZWFzdXJlUG9zdExvYWRDUFVVc2FnZSkKKyAgICAsIG1fcG9zdEJhY2tncm91bmRpbmdDUFVV
c2FnZVRpbWVyKCp0aGlzLCAmUGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlUG9zdEJhY2tncm91
bmRpbmdDUFVVc2FnZSkKKyAgICAsIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlVGltZXIoKnRo
aXMsICZQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2Up
Cit7CisgICAgQVNTRVJUKCFwYWdlLmlzVXRpbGl0eVBhZ2UoKSk7CisKKyAgICBpZiAoU2V0dGlu
Z3M6OmlzUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkpIHsKKyAg
ICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSA9IGdldENQVVRpbWUoKTsKKyAgICAgICAg
bV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VUaW1lci5zdGFydFJlcGVhdGluZyhjcHVVc2FnZVNh
bXBsaW5nSW50ZXJ2YWwpOworICAgIH0KK30KKwordm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6OmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKK3sKKyAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IHN0ZDo6
bnVsbG9wdDsKKyAgICBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIuc3RvcCgpOworfQorCit2
b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6ZGlkRmluaXNoTG9hZCgpCit7CisgICAgLy8gT25seSBk
byBwb3N0LWxvYWQgQ1BVIHVzYWdlIG1lYXN1cmVtZW50IGlmIHRoZXJlIGlzIGEgc2luZ2xlIFBh
Z2UgaW4gdGhlIHByb2Nlc3MgaW4gb3JkZXIgdG8gcmVkdWNlIG5vaXNlLgorICAgIGlmIChTZXR0
aW5nczo6aXNQb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkgJiYgbV9wYWdlLmlz
T25seU5vblV0aWxpdHlQYWdlKCkpIHsKKyAgICAgICAgbV9wb3N0TG9hZENQVVRpbWUgPSBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1lci5zdGFydE9uZVNo
b3QoY3B1VXNhZ2VNZWFzdXJlbWVudERlbGF5KTsKKyAgICB9Cit9CisKK3ZvaWQgUGVyZm9ybWFu
Y2VNb25pdG9yOjphY3Rpdml0eVN0YXRlQ2hhbmdlZChBY3Rpdml0eVN0YXRlOjpGbGFncyBvbGRT
dGF0ZSwgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbmV3U3RhdGUpCit7CisgICAgQWN0aXZpdHlTdGF0
ZTo6RmxhZ3MgY2hhbmdlZCA9IG9sZFN0YXRlIF4gbmV3U3RhdGU7CisgICAgYm9vbCB2aXNpYmls
aXR5Q2hhbmdlZCA9IGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGU7CisKKyAgICAv
LyBNZWFzdXJlIENQVSB1c2FnZSBvZiBwYWdlcyB3aGVuIHRoZXkgYXJlIG5vIGxvbmdlciB2aXNp
YmxlLgorICAgIGlmIChTZXR0aW5nczo6aXNQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlTWVhc3Vy
ZW1lbnRFbmFibGVkKCkgJiYgdmlzaWJpbGl0eUNoYW5nZWQpIHsKKyAgICAgICAgbV9wb3N0QmFj
a2dyb3VuZGluZ0NQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmIChuZXdTdGF0ZSAm
IEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKKyAgICAgICAgICAgIG1fcG9zdEJhY2tncm91bmRp
bmdDUFVVc2FnZVRpbWVyLnN0b3AoKTsKKyAgICAgICAgZWxzZSBpZiAobV9wYWdlLmlzT25seU5v
blV0aWxpdHlQYWdlKCkpCisgICAgICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VU
aW1lci5zdGFydE9uZVNob3QoY3B1VXNhZ2VNZWFzdXJlbWVudERlbGF5KTsKKyAgICB9CisKKyAg
ICBpZiAoU2V0dGluZ3M6OmlzUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlTWVhc3VyZW1lbnRFbmFi
bGVkKCkpIHsKKyAgICAgICAgLy8gSWYgdmlzaWJpbGl0eSBjaGFuZ2VkIHRoZW4gcmVwb3J0IENQ
VSB1c2FnZSByaWdodCBhd2F5IGJlY2F1c2UgQ1BVIHVzYWdlIGlzIGNvbm5lY3RlZCB0byB2aXNp
YmlsaXR5IHN0YXRlLgorICAgICAgICBhdXRvIG9sZEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGlu
ZyA9IGFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyhvbGRTdGF0ZSk7CisgICAgICAgIGlmIChv
bGRBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgIT0gYWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBs
aW5nKG5ld1N0YXRlKSkgeworICAgICAgICAgICAgbWVhc3VyZUNQVVVzYWdlSW5BY3Rpdml0eVN0
YXRlKG9sZEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyk7CisgICAgICAgICAgICBtX3BlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVRpbWVyLnN0YXJ0UmVwZWF0aW5nKGNwdVVzYWdlU2FtcGxpbmdJ
bnRlcnZhbCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUGVyZm9ybWFuY2VNb25pdG9y
OjptZWFzdXJlUG9zdExvYWRDUFVVc2FnZSgpCit7CisgICAgaWYgKCFtX3BhZ2UuaXNPbmx5Tm9u
VXRpbGl0eVBhZ2UoKSkgeworICAgICAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9wb3N0TG9hZENQVVRpbWUp
IHsKKyAgICAgICAgbV9wb3N0TG9hZENQVVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgICAgIGlm
IChtX3Bvc3RMb2FkQ1BVVGltZSkKKyAgICAgICAgICAgIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VU
aW1lci5zdGFydE9uZVNob3QocG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gY3B1VGlt
ZSA9IGdldENQVVRpbWUoKTsKKyAgICBpZiAoIWNwdVRpbWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGRvdWJsZSBjcHVVc2FnZSA9IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50YWdlQ1BVVXNhZ2VT
aW5jZSgqbV9wb3N0TG9hZENQVVRpbWUpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUGVy
Zm9ybWFuY2VMb2dnaW5nLCAibWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2U6IFByb2Nlc3Mgd2FzIHVz
aW5nICUuMWYlJSBDUFUgYWZ0ZXIgdGhlIHBhZ2UgbG9hZC4iLCBjcHVVc2FnZSk7CisgICAgbV9w
YWdlLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFs
dWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpwb3N0UGFnZUxvYWRLZXkoKSwgRGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjpjcHVVc2FnZUtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmZvcmVncm91
bmRDUFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dpbmdLZXkoY3B1VXNhZ2UpLCBTaG91bGRTYW1wbGU6
Ok5vKTsKK30KKwordm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0QmFja2dyb3Vu
ZGluZ0NQVVVzYWdlKCkKK3sKKyAgICBpZiAoIW1fcGFnZS5pc09ubHlOb25VdGlsaXR5UGFnZSgp
KSB7CisgICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lID0gc3RkOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BV
VGltZSkgeworICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSA9IGdldENQVVRpbWUo
KTsKKyAgICAgICAgaWYgKG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lKQorICAgICAgICAgICAg
bV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIuc3RhcnRPbmVTaG90KGJhY2tncm91bmRD
UFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IGdldENQVVRpbWUoKTsKKyAgICBpZiAo
IWNwdVRpbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBjcHVVc2FnZSA9IGNwdVRp
bWUudmFsdWUoKS5wZXJjZW50YWdlQ1BVVXNhZ2VTaW5jZSgqbV9wb3N0QmFja2dyb3VuZGluZ0NQ
VVRpbWUpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUGVyZm9ybWFuY2VMb2dnaW5nLCAi
bWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2U6IFByb2Nlc3Mgd2FzIHVzaW5nICUuMWYl
JSBDUFUgYWZ0ZXIgYmVjb21pbmcgbm9uIHZpc2libGUuIiwgY3B1VXNhZ2UpOworICAgIG1fcGFn
ZS5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVl
KERpYWdub3N0aWNMb2dnaW5nS2V5czo6cG9zdFBhZ2VCYWNrZ3JvdW5kaW5nS2V5KCksIERpYWdu
b3N0aWNMb2dnaW5nS2V5czo6Y3B1VXNhZ2VLZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpi
YWNrZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5nS2V5KGNwdVVzYWdlKSwgU2hvdWxk
U2FtcGxlOjpObyk7Cit9CisKK3ZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlUGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlKCkKK3sKKyAgICBtZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2aXR5U3Rh
dGUoYWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKG1fcGFnZS5hY3Rpdml0eVN0YXRlKCkpKTsK
K30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorCitzdGF0aWMgaW5saW5lIGNvbnN0IGNo
YXIqIHN0cmluZ0ZvckNQVVNhbXBsaW5nQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlRm9yQ1BV
U2FtcGxpbmcgYWN0aXZpdHlTdGF0ZSkKK3sKKyAgICBzd2l0Y2ggKGFjdGl2aXR5U3RhdGUpIHsK
KyAgICBjYXNlIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6Tm9uVmlzaWJsZToKKyAgICAg
ICAgcmV0dXJuICJOb25WaXNpYmxlIjsKKyAgICBjYXNlIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1w
bGluZzo6VmlzaWJsZU5vbkFjdGl2ZToKKyAgICAgICAgcmV0dXJuICJWaXNpYmxlTm9uQWN0aXZl
IjsKKyAgICBjYXNlIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6VmlzaWJsZUFuZEFjdGl2
ZToKKyAgICAgICAgcmV0dXJuICJWaXNpYmxlQW5kQWN0aXZlIjsKKyAgICB9Cit9CisKKyNlbmRp
ZgorCit2b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZUNQVVVzYWdlSW5BY3Rpdml0eVN0
YXRlKEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyBhY3Rpdml0eVN0YXRlKQoreworICAgIGlm
ICghbV9wYWdlLmlzT25seU5vblV0aWxpdHlQYWdlKCkpIHsKKyAgICAgICAgbV9wZXJBY3Rpdml0
eVN0YXRlQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICghbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSkgeworICAgICAgICBtX3BlckFjdGl2
aXR5U3RhdGVDUFVUaW1lID0gZ2V0Q1BVVGltZSgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgc3RkOjpvcHRpb25hbDxDUFVUaW1lPiBjcHVUaW1lID0gZ2V0Q1BVVGltZSgpOworICAg
IGlmICghY3B1VGltZSkgeworICAgICAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lID0gc3Rk
OjpudWxsb3B0OworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECisgICAgZG91YmxlIGNwdVVzYWdlID0gY3B1VGltZS52YWx1ZSgpLnBlcmNlbnRhZ2VD
UFVVc2FnZVNpbmNlKCptX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFBlcmZvcm1hbmNlTG9nZ2luZywgIm1lYXN1cmVDUFVVc2FnZUluQWN0aXZp
dHlTdGF0ZTogUHJvY2VzcyBpcyB1c2luZyAlLjFmJSUgQ1BVIGluIHN0YXRlOiAlcyIsIGNwdVVz
YWdlLCBzdHJpbmdGb3JDUFVTYW1wbGluZ0FjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZSkpOwor
I2VuZGlmCisgICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLnJlcG9ydFByb2Nlc3NDUFVUaW1l
KChjcHVUaW1lLnZhbHVlKCkuc3lzdGVtVGltZSArIGNwdVRpbWUudmFsdWUoKS51c2VyVGltZSkg
LSAobV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZS52YWx1ZSgpLnN5c3RlbVRpbWUgKyBtX3BlckFj
dGl2aXR5U3RhdGVDUFVUaW1lLnZhbHVlKCkudXNlclRpbWUpLCBhY3Rpdml0eVN0YXRlKTsKKwor
ICAgIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWUgPSBXVEZNb3ZlKGNwdVRpbWUpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTW9uaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MGNhYzAwYjhlNTY4ODM3MTI2NDQwZWY0ZGY5MWE1MTQ4YjU5ODU0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0
b3IuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJBY3Rpdml0eVN0YXRlLmgiCisjaW5jbHVkZSAiQ1BVVGltZS5oIgorI2luY2x1ZGUgIlRp
bWVyLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgUGFnZTsKKworY2xhc3MgUGVyZm9ybWFuY2VNb25pdG9yIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBQZXJmb3JtYW5jZU1vbml0b3IoUGFnZSYpOworCisgICAgdm9pZCBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZCgpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZCgpOworICAgIHZvaWQg
YWN0aXZpdHlTdGF0ZUNoYW5nZWQoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xkU3RhdGUsIEFjdGl2
aXR5U3RhdGU6OkZsYWdzIG5ld1N0YXRlKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIG1lYXN1cmVQ
b3N0TG9hZENQVVVzYWdlKCk7CisgICAgdm9pZCBtZWFzdXJlUG9zdEJhY2tncm91bmRpbmdDUFVV
c2FnZSgpOworICAgIHZvaWQgbWVhc3VyZVBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZSgpOworICAg
IHZvaWQgbWVhc3VyZUNQVVVzYWdlSW5BY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGVGb3JDUFVT
YW1wbGluZyk7CisKKyAgICBQYWdlJiBtX3BhZ2U7CisKKyAgICBUaW1lciBtX3Bvc3RQYWdlTG9h
ZENQVVVzYWdlVGltZXI7CisgICAgc3RkOjpvcHRpb25hbDxDUFVUaW1lPiBtX3Bvc3RMb2FkQ1BV
VGltZTsKKyAgICBUaW1lciBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VUaW1lcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPENQVVRpbWU+IG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lOworICAgIFRp
bWVyIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlVGltZXI7CisgICAgc3RkOjpvcHRpb25hbDxD
UFVUaW1lPiBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lOworfTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmNwcAppbmRleCA3NTk3OTZhZmJhMDA3YTY3MWMzMzU2NWFhYTU3Mjg2NTA4MTA3NWQz
Li42YmI5ZDAzYThiMzRjMTk2ODI0YThkMmJlZGNkZTNkYWFhZTFkNDIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcApAQCAtNzc4LDI0ICs3NzgsNiBAQCBib29sIFNldHRpbmdzOjpnbG9iYWxD
b25zdFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdygpCiAjZW5kaWYKIH0KIAotYm9vbCBTZXR0aW5n
czo6aXNQb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkKLXsKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vu
ZGlmCi19Ci0KLWJvb2wgU2V0dGluZ3M6OmlzUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZU1lYXN1
cmVtZW50RW5hYmxlZCgpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIHJldHVybiB0cnVlOwot
I2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQogdm9pZCBTZXR0aW5nczo6c2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoYm9vbCBhbGxvd0FueVNTTENlcnRpZmljYXRlKQogewog
ICAgIGdBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSA9IGFsbG93QW55U1NMQ2VydGlmaWNhdGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggYTk3NDAyMTZlNTZhZDE3NzRkNjlmYjZjZTg1MGU4ZWIx
NjhlZmI1NS4uMmQzYzgzYzk3YjU5ZTIyZTQ4MzFiNWQ5NWUwNjY4MTI1NmM1NDk5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaApAQCAtMjAxLDYgKzIwMSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBib29sIGlzUG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpOwogICAgIHN0YXRp
YyBib29sIGlzUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpOwor
ICAgIHN0YXRpYyBib29sIGlzUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlTWVhc3VyZW1lbnRFbmFi
bGVkKCk7CiAKICAgICBzdGF0aWMgYm9vbCBnbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGRU
aHJvdygpOwogCkBAIC00MjMsNCArNDI0LDMxIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wg
Z0FsbG93c0FueVNTTENlcnRpZmljYXRlOwogfTsKIAoraW5saW5lIGJvb2wgU2V0dGluZ3M6Omlz
UG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpCit7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
fQorCitpbmxpbmUgYm9vbCBTZXR0aW5nczo6aXNQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlTWVh
c3VyZW1lbnRFbmFibGVkKCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0dXJuIHRydWU7
CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitpbmxpbmUgYm9vbCBTZXR0
aW5nczo6aXNQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKQorewor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0xvZ2dpbmcuaAppbmRleCA4NzIwMjcyZGQyNmI0OWU1NjNlZGNhZDA2M2RhYTRmMjZlZWI0Y2Fi
Li5lM2U4OGFmNDA3MGY2MTI0NWIyYjNlYmQxODY2N2I0YTk3NmMzNTM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vTG9nZ2luZy5oCkBAIC01Nyw2ICs1Nyw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oTmV0
d29ya0NhY2hlU3RvcmFnZSkgXAogICAgIE0oTmV0d29ya1NjaGVkdWxpbmcpIFwKICAgICBNKE5l
dHdvcmtTZXNzaW9uKSBcCisgICAgTShQZXJmb3JtYW5jZUxvZ2dpbmcpIFwKICAgICBNKFBsdWdp
bnMpIFwKICAgICBNKFByaW50aW5nKSBcCiAgICAgTShQcm9jZXNzU3VzcGVuc2lvbikgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2Fn
ZVNhbXBsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MzdlOTdlYjY0YWZhNWY1ZGRkMzUyM2Yx
NmU2ZGRlYzU2MmE4Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAKQEAgLTAsMCArMSwxMTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGVyQWN0aXZpdHlT
dGF0ZUNQVVVzYWdlU2FtcGxlci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0YXRpYyBjb25zdCBpbnQ2NF90IG1pY3Jvc2Vjb25kc1BlclNlY29uZCA9IDEwMDAwMDA7
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86
Om1pbnV0ZXMgbG9nZ2luZ0ludGVydmFsIHsgNjAgfTsKKworUGVyQWN0aXZpdHlTdGF0ZUNQVVVz
YWdlU2FtcGxlcjo6UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2wpCisgICAgOiBtX3Byb2Nlc3NQb29sKHByb2Nlc3NQb29sKQorICAgICwg
bV9sb2dnaW5nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlU2FtcGxlcjo6bG9nZ2luZ1RpbWVyRmlyZWQpCit7CisgICAgbV9sYXN0Q1BVVGltZSA9
IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIG1fbG9nZ2luZ1RpbWVyLnN0YXJ0
UmVwZWF0aW5nKGxvZ2dpbmdJbnRlcnZhbCk7Cit9CisKK1BlckFjdGl2aXR5U3RhdGVDUFVVc2Fn
ZVNhbXBsZXI6On5QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKCkKK3sKK30KKwordm9p
ZCBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOjpyZXBvcnRXZWJDb250ZW50Q1BVVGlt
ZShpbnQ2NF90IGNwdVRpbWUsIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyBhY3Rpdml0eVN0
YXRlKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV9jcHVUaW1lSW5BY3Rpdml0eVN0YXRlLmFkZChh
Y3Rpdml0eVN0YXRlLCBjcHVUaW1lKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IGNwdVRpbWU7Cit9CisKK3N0YXRpYyBpbmxp
bmUgU3RyaW5nIGxvZ2dpbmdLZXlGb3JBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGVGb3JDUFVT
YW1wbGluZyBzdGF0ZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBBY3Rpdml0
eVN0YXRlRm9yQ1BVU2FtcGxpbmc6Ok5vblZpc2libGU6CisgICAgICAgIHJldHVybiBEaWFnbm9z
dGljTG9nZ2luZ0tleXM6Om5vblZpc2libGVTdGF0ZUtleSgpOworICAgIGNhc2UgQWN0aXZpdHlT
dGF0ZUZvckNQVVNhbXBsaW5nOjpWaXNpYmxlTm9uQWN0aXZlOgorICAgICAgICByZXR1cm4gRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjp2aXNpYmxlTm9uQWN0aXZlU3RhdGVLZXkoKTsKKyAgICBjYXNl
IEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6VmlzaWJsZUFuZEFjdGl2ZToKKyAgICAgICAg
cmV0dXJuIERpYWdub3N0aWNMb2dnaW5nS2V5czo6dmlzaWJsZUFuZEFjdGl2ZVN0YXRlS2V5KCk7
CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIFN0cmluZyBsb2dnaW5nS2V5Rm9yQ1BVVXNhZ2Uo
QWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nIHN0YXRlLCBkb3VibGUgY3B1VXNhZ2UpCit7Cisg
ICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5n
OjpOb25WaXNpYmxlOgorICAgICAgICByZXR1cm4gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpiYWNr
Z3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5nS2V5KGNwdVVzYWdlKTsKKyAgICBjYXNl
IEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6VmlzaWJsZU5vbkFjdGl2ZToKKyAgICBjYXNl
IEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZzo6VmlzaWJsZUFuZEFjdGl2ZToKKyAgICAgICAg
cmV0dXJuIERpYWdub3N0aWNMb2dnaW5nS2V5czo6Zm9yZWdyb3VuZENQVVVzYWdlVG9EaWFnbm9z
dGljTG9nZ2luZ0tleShjcHVVc2FnZSk7CisgICAgfQorfQorCit2b2lkIFBlckFjdGl2aXR5U3Rh
dGVDUFVVc2FnZVNhbXBsZXI6OmxvZ2dpbmdUaW1lckZpcmVkKCkKK3sKKyAgICBhdXRvKiBwYWdl
ID0gcGFnZUZvckxvZ2dpbmcoKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgbV9jcHVUaW1l
SW5BY3Rpdml0eVN0YXRlLmNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBk
b3VibGUgY3VycmVudENQVVRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAg
ICBpbnQ2NF90IGNwdVRpbWVEZWx0YSA9IChjdXJyZW50Q1BVVGltZSAtIG1fbGFzdENQVVRpbWUp
ICogbWljcm9zZWNvbmRzUGVyU2Vjb25kOworCisgICAgZm9yIChhdXRvJiBwYWlyIDogbV9jcHVU
aW1lSW5BY3Rpdml0eVN0YXRlKSB7CisgICAgICAgIGRvdWJsZSBjcHVVc2FnZSA9IHN0YXRpY19j
YXN0PGRvdWJsZT4ocGFpci52YWx1ZSAqIDEwMC4pIC8gY3B1VGltZURlbHRhOworICAgICAgICBT
dHJpbmcgbG9nZ2luZ0tleSA9IGxvZ2dpbmdLZXlGb3JBY3Rpdml0eVN0YXRlKHBhaXIua2V5KTsK
KyAgICAgICAgcGFnZS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjpjcHVVc2FnZUtleSgpLCBsb2dnaW5nS2V5LCBsb2dnaW5nS2V5Rm9yQ1BVVXNh
Z2UocGFpci5rZXksIGNwdVVzYWdlKSwgZmFsc2UpOworICAgICAgICBSRUxFQVNFX0xPRyhQZXJm
b3JtYW5jZUxvZ2dpbmcsICJXZWJDb250ZW50IHByb2Nlc3NlcyB1c2VkICUuMWYlJSBDUFUgaW4g
JXMgc3RhdGUiLCBjcHVVc2FnZSwgbG9nZ2luZ0tleS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisK
KyAgICBtX2NwdVRpbWVJbkFjdGl2aXR5U3RhdGUuY2xlYXIoKTsKKyAgICBtX2xhc3RDUFVUaW1l
ID0gY3VycmVudENQVVRpbWU7Cit9CisKK1dlYlBhZ2VQcm94eSogUGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlU2FtcGxlcjo6cGFnZUZvckxvZ2dpbmcoKSBjb25zdAoreworICAgIGZvciAoYXV0byYg
d2ViUHJvY2VzcyA6IG1fcHJvY2Vzc1Bvb2wucHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgaWYgKCF3
ZWJQcm9jZXNzLT5wYWdlQ291bnQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBy
ZXR1cm4gKndlYlByb2Nlc3MtPnBhZ2VzKCkuYmVnaW4oKTsKKyAgICB9CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGFiNmY0Yjc1NTk4NThiMTdlMDkwY2Y5YTRlYWQ3OWY2ZjVjYmYxNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BV
VXNhZ2VTYW1wbGVyLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CisKK2NsYXNzIFBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIoV2ViUHJvY2Vzc1Bvb2wmKTsKKyAgICB+UGVyQWN0aXZpdHlT
dGF0ZUNQVVVzYWdlU2FtcGxlcigpOworCisgICAgdm9pZCByZXBvcnRXZWJDb250ZW50Q1BVVGlt
ZShpbnQ2NF90IGNwdVRpbWUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyk7
CisKK3ByaXZhdGU6CisgICAgdm9pZCBsb2dnaW5nVGltZXJGaXJlZCgpOworICAgIFdlYlBhZ2VQ
cm94eSogcGFnZUZvckxvZ2dpbmcoKSBjb25zdDsKKworICAgIFdlYlByb2Nlc3NQb29sJiBtX3By
b2Nlc3NQb29sOworICAgIFJ1bkxvb3A6OlRpbWVyPFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNh
bXBsZXI+IG1fbG9nZ2luZ1RpbWVyOworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcsIGludDY0X3QsIFdURjo6SW50SGFzaDxXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZz4+IENQVVRpbWVJbkFjdGl2aXR5U3Rh
dGVNYXA7CisgICAgQ1BVVGltZUluQWN0aXZpdHlTdGF0ZU1hcCBtX2NwdVRpbWVJbkFjdGl2aXR5
U3RhdGU7CisgICAgZG91YmxlIG1fbGFzdENQVVRpbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4
IGMyYTE4YmIxZTc5NzE2ZjMzYmJhNDUwZjg1ZmQ1Mzg2NDc1MGNmNGYuLjMyMDUxYmYxMzQ3ODYz
YTRiZDEyOWI3NGRjMDEyM2U5OTJmNjgzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJQZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIu
aCIKQEAgLTE2OCw2ICsxNjksNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJ
OjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX3dlYnNp
dGVEYXRhU3RvcmUobV9jb25maWd1cmF0aW9uLT5zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlKCkg
PyBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKS5wdHIoKSA6IG51bGxwdHIpCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgICwgbV9oaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcihzdGQ6
Om1ha2VfdW5pcXVlPEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyPigqdGhpcykp
CisgICAgLCBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoc3RkOjptYWtlX3VuaXF1
ZTxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPigqdGhpcykpCiAjZW5kaWYKICAgICAs
IG1fc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKGZhbHNlKQogICAgICwgbV9wcm9jZXNz
VGVybWluYXRpb25FbmFibGVkKHRydWUpCkBAIC0xNDMxLDQgKzE0MzMsMTUgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dXBkYXRlSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VMaW1pdCgp
CiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRIaWRkZW5Q
YWdlVGltZXJUaHJvdHRsaW5nSW5jcmVhc2VMaW1pdChsaW1pdEluTWlsbGlzZWNvbmRzKSk7CiB9
CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKGludDY0X3Qg
Y3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTdGF0ZSkKK3sKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgaWYgKG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcikKKyAgICAgICAgbV9wZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLT5yZXBvcnRXZWJDb250ZW50Q1BVVGltZShjcHVU
aW1lLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc+KGFj
dGl2aXR5U3RhdGUpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNwdVRpbWUpOworICAgIFVO
VVNFRF9QQVJBTShhY3Rpdml0eVN0YXRlKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZDli
ODYwMzgyZTQ3MzdmYjEyNjI1YmQ0NDYwYmM5NGYyYTZjMTgwMC4uYWU1NmZmZTdkNmEzZjMyMDdj
YTZhYjVlYzdlOTYxNWY4NGIxMWQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKQEAgLTg1LDYgKzg1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBE
b3dubG9hZFByb3h5OwogY2xhc3MgSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI7
CiBjbGFzcyBVSUdhbWVwYWQ7CitjbGFzcyBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVy
OwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb247CiBjbGFzcyBXZWJDb250ZXh0U3VwcGxlbWVu
dDsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKQEAgLTI1OSw2ICsyNjAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGVhckNhY2hlZENyZWRlbnRpYWxzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVEYXRh
YmFzZVByb2Nlc3MoKTsKIAorICAgIHZvaWQgcmVwb3J0V2ViQ29udGVudENQVVRpbWUoaW50NjRf
dCBjcHVUaW1lLCB1aW50NjRfdCBhY3Rpdml0eVN0YXRlKTsKKwogICAgIHZvaWQgYWxsb3dTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNlcnRpZmljYXRlSW5mbyosIGNv
bnN0IFN0cmluZyYgaG9zdCk7CiAKICAgICBXZWJQcm9jZXNzUHJveHkmIGNyZWF0ZU5ld1dlYlBy
b2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKTsgLy8gV2lsbCByZXR1cm4gYW4gZXhp
c3Rpbmcgb25lIGlmIGxpbWl0IGlzIG1ldC4KQEAgLTUzMiw2ICs1MzUsNyBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9hdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uTm90aWZp
Y2F0aW9uT2JzZXJ2ZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaFBlcmZvcm1hbmNlR3Jh
cGhpY3NVc2FnZVNhbXBsZXI+IG1faGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+IG1f
cGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjsKICNlbmRpZgogCiAgICAgU3RyaW5nIG1f
b3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLm1lc3NhZ2VzLmluCmluZGV4IDhlYmE4ZTUzMGM1ZDRkMTVmOTRk
YWNkYWRiYjE0MTY2NjFmZTk3M2QuLjg5OTBjMDA5NDEzYmM5ZGZlYzEzNDAwNzY2NWU0ZDI3NzAx
YjQ2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wubWVzc2FnZXMuaW4KQEAgLTM0LDQgKzM0LDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Bv
b2wgewogICAgICMgUGx1Zy1pbiBtZXNzYWdlcy4KICAgICB2b2lkIEFkZFBsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2goU3RyaW5nIHBhZ2VPcmlnaW4sIHVpbnQzMl90IGhhc2gsIFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiAgICAgdm9pZCBQbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0
aW9uKHVpbnQzMl90IGhhc2gsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisKKyAgICBS
ZXBvcnRXZWJDb250ZW50Q1BVVGltZShpbnQ2NF90IGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5
U3RhdGUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZjNlYTU2YWRkMGQ3YjBlOTg5YTU0MjAzZDMxN2Q1Y2M2ODk5ODE4NC4u
NWQ4OGE5ZGNkNmQ0NzA0YTI2N2Q0OThiOGUxN2VhMTFlNjZiMzM5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIzOCw2ICsx
MjM4LDggQEAKIAkJODMxRUVCQkUxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzFFRUJCQzFCRDg1QzQzMDBCQjY0QzMgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcCAqLzsgfTsKIAkJODMyQUUyNTIxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMkFFMjUwMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggKi87IH07CiAJCTgzMkFFMjUzMUJFMkU4Q0QwMEZBQUUx
MCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkFFMjUxMUJFMkU4Q0QwMEZBQUUx
MCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJODMy
RUQxOEIxRTJGRTE1NzAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyRUQx
ODkxRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3Bw
ICovOyB9OworCQk4MzJFRDE4QzFFMkZFMTU3MDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlU2FtcGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMyRUQxOEExRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2Fn
ZVNhbXBsZXIuaCAqLzsgfTsKIAkJODM0QjI1MEYxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtD
YWNoZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzNEIyNTBFMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmggKi87IH07CiAJCTgzNEIyNTEyMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0
aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovOyB9
OwogCQk4MzYwMzQ5RjFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNjAz
NDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwICovOyB9
OwpAQCAtMzM5MSw2ICszMzkzLDggQEAKIAkJODMxRUVCQkMxQkQ4NUM0MzAwQkI2NEMzIC8qIE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MzJBRTI1MDFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzMkFFMjUxMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4MzJFRDE4OTFFMkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZpdHlT
dGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODMyRUQxOEExRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3Rh
dGVDUFVVc2FnZVNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVy
QWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzRCMjUwRTFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNEIyNTEwMUE4NDJDODcwMENGQjE1
MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODM2MDM0OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTUUxpdGVEYXRh
YmFzZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI5Miw2ICs2
Mjk2LDggQEAKIAkJCQlCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVudC5oICov
LAogCQkJCTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNwcCAqLywK
IAkJCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5oICovLAorCQkJ
CTgzMkVEMTg5MUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyLmNwcCAqLywKKwkJCQk4MzJFRDE4QTFFMkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZpdHlT
dGF0ZUNQVVVzYWdlU2FtcGxlci5oICovLAogCQkJCTM3NzE2QTU5MTk1QjkxMDUwMEVFOEIxQiAv
KiBQcm9jZXNzQXNzZXJ0aW9uLmNwcCAqLywKIAkJCQk4NkY5NTM2MDE4RkY0RkQ0MDAxREIyRUYg
LyogUHJvY2Vzc0Fzc2VydGlvbi5oICovLAogCQkJCTg2RTY3QTIyMTkwRjQxMTgwMDAwNEFCNyAv
KiBQcm9jZXNzVGhyb3R0bGVyLmNwcCAqLywKQEAgLTgwODEsNiArODA4Nyw3IEBACiAJCQkJQ0Ux
QTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFBRjI2MzkxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEgLyogVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMy
RUQxOEMxRTJGRTE1NzAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkU0MzY2MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVn
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTFCNTFENTkxN0ZGMDBERDdDNjggLyogVUlH
YW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTFBOTFENTUyOTM0MDBERDdDNjggLyog
VUlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTI0NSw2ICs5MjUyLDcgQEAK
IAkJCQk5M0E4OEI0NzFCQzg4Mjk3MDBBQkE1QzIgLyogQVBJSGl0VGVzdFJlc3VsdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Q0QzQTQ4MjFBNUQwMkZBMDA5NjIzQjggLyogQVBJTmF2aWdhdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Y2OUZBMzExNzZEMDE0MDA0NzFBNTIgLyogQVBJ
TmF2aWdhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODMyRUQxOEIxRTJGRTE1NzAw
NkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjYzNDAzRjkxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzNzhFMUEzRDE4MUVENkZGMDAzMTAwN0EgLyogQVBJT2JqZWN0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM4NTdGQjYxMkI4MzBFNjAwRURFQjJFIC8qIEFQSU9wZW5QYW5l
bFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5k
ZXggNzMxNGY2MWY4NWMwODc5NWRkOGE5Zjc3ZjJmMTZkZDQ0NjhkMzBjZi4uNDk4MzRjM2EzMGVi
ZjkyMTVlOWY1NGU5MWRjYjI0ZWExM2Y5NGNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApA
QCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlNlYXJjaFBvcHVwTWVudS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KQEAgLTI3NCw2ICsyNzUsMTEgQEAgdm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OnJ1bk1vZGFsKCkKICAgICBtX3BhZ2UucnVuTW9kYWwoKTsKIH0KIAor
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlcG9ydFByb2Nlc3NDUFVUaW1lKGludDY0X3QgY3B1VGlt
ZSwgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nIGFjdGl2aXR5U3RhdGUpCit7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Bvb2w6OlJlcG9y
dFdlYkNvbnRlbnRDUFVUaW1lKGNwdVRpbWUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhY3Rpdml0
eVN0YXRlKSksIDApOworfQorCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0VG9vbGJhcnNWaXNp
YmxlKGJvb2wgdG9vbGJhcnNBcmVWaXNpYmxlKQogewogICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNldFRvb2xiYXJzQXJlVmlzaWJsZSh0b29sYmFyc0FyZVZpc2libGUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDY0ZThiMTQyMmFhMTU0ZTI5ZjgyZWYyZTIxNDEy
OTMyYThmN2M1YzIuLjVjOWQ3NzNhNzJjMDYwOGMwMjA2OGFjMWQ5ZGRmNDVkNGEwYmQ5YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNjcsNiArNjcsOCBAQCBwcml2YXRlOgogICAgIAogICAg
IGJvb2wgY2FuUnVuTW9kYWwoKSBmaW5hbDsKICAgICB2b2lkIHJ1bk1vZGFsKCkgZmluYWw7CisK
KyAgICB2b2lkIHJlcG9ydFByb2Nlc3NDUFVUaW1lKGludDY0X3QsIFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGVGb3JDUFVTYW1wbGluZykgZmluYWw7CiAgICAgCiAgICAgdm9pZCBzZXRUb29sYmFyc1Zp
c2libGUoYm9vbCkgZmluYWw7CiAgICAgYm9vbCB0b29sYmFyc1Zpc2libGUoKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299259</attachid>
            <date>2017-01-19 12:18:06 -0800</date>
            <delta_ts>2017-01-19 13:34:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167163-20170119121618.patch</filename>
            <type>text/plain</type>
            <size>56257</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDUyMmNkMmQwMTcxNzk4
ZmRhMmY5ZmFkNzVhMWIxMjBkYzk1ZGVmZC4uZGNkNWZkM2YyNTJjYTA4MDhlNDJhNTE4YzMwZWVi
YjEyZGM1NDEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE3LTAxLTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHBlciBhY3Rp
dml0eSBzdGF0ZSBDUFUgdXNhZ2UgcmVwb3J0aW5nIHVzaW5nIGRpYWdub3N0aWMgbG9nZ2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3MTYzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDA1ODM0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgorCisgICAgICAgIEltcGxlbWVudCBwZXIgYWN0aXZpdHkgc3RhdGUgQ1BV
IHVzYWdlIHJlcG9ydGluZyB1c2luZyBkaWFnbm9zdGljIGxvZ2dpbmcuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9BY3Rpdml0
eVN0YXRlLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdl
L0RpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6Om5vblZpc2libGVTdGF0ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpEaWFn
bm9zdGljTG9nZ2luZ0tleXM6OnZpc2libGVOb25BY3RpdmVTdGF0ZUtleSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnZpc2libGVBbmRBY3RpdmVTdGF0ZUtleSk6
CisgICAgICAgIChXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmZvcmVncm91bmRDUFVV
c2FnZVRvRGlhZ25vc3RpY0xvZ2dpbktleSk6CisgICAgICAgIChXZWJDb3JlOjpEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6OmJhY2tncm91bmRDUFVVc2FnZVRvRGlhZ25vc3RpY0xvZ2dpbktleSk6Cisg
ICAgICAgICogcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNVdGlsaXR5UGFnZUNocm9tZUNsaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6On5Q
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6aXNVdGlsaXR5UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRBY3Rp
dml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldElzVmlzaWJsZUludGVybmFs
KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFjdGl2
aXR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNVdGlsaXR5UGFnZSk6CisgICAg
ICAgICogcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQZXJm
b3JtYW5jZU1vbml0b3I6OlBlcmZvcm1hbmNlTW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpQ
ZXJmb3JtYW5jZU1vbml0b3I6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlcmZvcm1hbmNlTW9uaXRvcjo6ZGlkRmluaXNoTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpQZXJmb3JtYW5jZU1vbml0b3I6OmFjdGl2aXR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlUG9zdEJhY2tncm91
bmRpbmdDUFVVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZU1vbml0b3I6Om1l
YXN1cmVQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6c3RyaW5n
Rm9yQ1BVU2FtcGxpbmdBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1h
bmNlTW9uaXRvcjo6bWVhc3VyZUNQVVVzYWdlSW5BY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKiBw
YWdlL1BlcmZvcm1hbmNlTW9uaXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0FjdGl2aXR5U3RhdGUuaC4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6aXNQb3N0TG9h
ZENQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
Ojppc1Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2V0dGluZ3M6OmlzUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlTWVhc3VyZW1l
bnRFbmFibGVkKToKKwogMjAxNy0wMS0xOSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZWJhc2VsaW5lIGJpbmRpbmdzIHRlc3RzIGFmdGVyIHIyMTA5MTgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggYzFiZTcxNTIwYWJhN2NjYjk1OWQ3YTAwZmQ4ZjViMmVkN2E4MTQyNi4u
ZTU4ZmZhNWE0NzViMTI4NTY5MjA3ZGZjNTQwNDhiNjg2NzY0NDEzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMzIEBACisyMDE3LTAxLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IHBlciBhY3Rpdml0eSBzdGF0ZSBDUFUgdXNhZ2UgcmVwb3J0
aW5nIHVzaW5nIGRpYWdub3N0aWMgbG9nZ2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3MTYzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDA1
ODM0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIElt
cGxlbWVudCBwZXIgYWN0aXZpdHkgc3RhdGUgQ1BVIHVzYWdlIHJlcG9ydGluZyB1c2luZyBkaWFn
bm9zdGljIGxvZ2dpbmcuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6UGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXI6On5QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKToK
KyAgICAgICAgKFdlYktpdDo6UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6cmVwb3J0
V2ViQ29udGVudENQVVRpbWUpOgorICAgICAgICAoV2ViS2l0Ojpsb2dnaW5nS2V5Rm9yQWN0aXZp
dHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OmxvZ2dpbmdLZXlGb3JDUFVVc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI6OmxvZ2dpbmdUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxl
cjo6cGFnZUZvckxvZ2dpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VTYW1wbGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQWN0aXZp
dHlTdGF0ZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJDb250ZW50Q1BVVGltZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cmVwb3J0UHJv
Y2Vzc0NQVVRpbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lmg6CisKIDIwMTctMDEtMTggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbnN0YWxsIFdlYktpdC5hcGlub3RlcyB3aXRoIHRoZSBwdWJs
aWMgaGVhZGVycyBvZiBXZWJLaXQgZnJhbWV3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFl
MjQ2NmJkMTViZTM4YWFkOThhYzczZjI0ZDg0OTg5ODU4YzQ0OGEuLmI1MDQzYzUwNzU2YTQ0Zjg0
NmIzYzY1Y2IyZmE1NTY2NDA0YzE1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xOTg2LDYg
KzE5ODYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9QZXJmb3JtYW5jZS5jcHAK
ICAgICBwYWdlL1BlcmZvcm1hbmNlRW50cnkuY3BwCiAgICAgcGFnZS9QZXJmb3JtYW5jZUxvZ2dp
bmcuY3BwCisgICAgcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCiAgICAgcGFnZS9QZXJmb3Jt
YW5jZU5hdmlnYXRpb24uY3BwCiAgICAgcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNw
cAogICAgIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjI0YjY3YzMwODJlNjc1YzQ3
ZTgwZDEyMTgwMmE0MDAxNmI3NGMxMy4uOWE0MGRiODIzOTlmYjBiZjcwZDUyYjRhYzYzZjkwYTg4
Zjk3YmRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzA2NCw2ICszMDY0LDggQEAKIAkJODNGMTIwNkIxQjhDMTA0NzAwRDc1
RjYzIC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0YxMjA2QTFCOEMxMDM2MDBENzVGNjMgLyogSlNOb2RlRmls
dGVyQ3VzdG9tLmNwcCAqLzsgfTsKIAkJODNGRTdDQTcxREE5RjFBNzAwMzcyMzdDIC8qIFVJRXZl
bnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
M0ZFN0NBNDFEQTlGMTY2MDAzNzIzN0MgLyogVUlFdmVudEluaXQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0ZFN0NBODFEQTlGMUI2MDAzNzIz
N0MgLyogRXZlbnRNb2RpZmllckluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzRkU3Q0EzMURBOUYxNjUwMDM3MjM3QyAvKiBFdmVudE1vZGlmaWVy
SW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTgzRkU5MDI3MUUzMDdDMzAwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkU5MDI2MUUzMDdDMUMw
MDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0b3IuaCAqLzsgfTsKKwkJODNGRTkwMjgxRTMwN0Mz
MzAwM0U5MTk5IC8qIFBlcmZvcm1hbmNlTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZFOTAyNTFFMzA3QzFDMDAzRTkxOTkgLyogUGVy
Zm9ybWFuY2VNb25pdG9yLmNwcCAqLzsgfTsKIAkJODQxOUQyQTcxMjBEOTJEMDAwMTQxRjhGIC8q
IFNWR1BhdGhCeXRlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NDE5RDJBNDEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW0u
aCAqLzsgfTsKIAkJODQxOUQyQTgxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFt
QnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NDE5RDJBNTEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNw
cCAqLzsgfTsKIAkJODQxOUQyQTkxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFt
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODQxOUQyQTYxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oICov
OyB9OwpAQCAtMTA1OTYsNiArMTA1OTgsOCBAQAogCQk4M0ZFN0NBNDFEQTlGMTY2MDAzNzIzN0Mg
LyogVUlFdmVudEluaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVUlFdmVu
dEluaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNGRTdDQTUxREE5RjE2NjAw
MzcyMzdDIC8qIFVJRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVSUV2ZW50
SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRkU3Q0E2MURBOUYxNjYw
MDM3MjM3QyAvKiBFdmVudE1vZGlmaWVySW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RXZlbnRNb2RpZmllckluaXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0ZF
OTAyNTFFMzA3QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlcmZvcm1hbmNlTW9uaXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRkU5MDI2MUUzMDdDMUMwMDNFOTE5OSAvKiBQZXJm
b3JtYW5jZU1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9y
bWFuY2VNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MTlEMkE0MTIw
RDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdQYXRoQnl0ZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NDE5RDJBNTEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWls
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhCeXRl
U3RyZWFtQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MTlEMkE2
MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODAxOCw2ICsxODAyMiw4IEBACiAJCQkJODZCRTMz
RkMxNTA1OENCMjAwQ0UwRkQ4IC8qIFBlcmZvcm1hbmNlRW50cnkuaWRsICovLAogCQkJCUFENUEw
QzIxMURFQ0ExMDEwMDcwNzA1NCAvKiBQZXJmb3JtYW5jZUxvZ2dpbmcuY3BwICovLAogCQkJCUFE
NUEwQzIwMURFQ0EwQjUwMDcwNzA1NCAvKiBQZXJmb3JtYW5jZUxvZ2dpbmcuaCAqLywKKwkJCQk4
M0ZFOTAyNTFFMzA3QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCAqLywKKwkJ
CQk4M0ZFOTAyNjFFMzA3QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmggKi8sCiAJ
CQkJOEFGNEU1NTIxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAg
Ki8sCiAJCQkJOEFGNEU1NTMxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlv
bi5oICovLAogCQkJCThBRjRFNTU0MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmln
YXRpb24uaWRsICovLApAQCAtMjY3MjAsNiArMjY3MjYsNyBAQAogCQkJCTg1MDMxQjQ0MEE0NEVG
QzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUwMEQ1
OTE4MkRBQzhEMDAwODdERDcgLyogS2V5ZWRDb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
N0E2M0M1MUI3NDMxOEYwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJODNGRTkwMjcxRTMwN0MzMDAwM0U5MTk5IC8qIFBlcmZvcm1hbmNlTW9uaXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE3QTYzQzYxQjc0MzE5MjAwRTdEQ0RDIC8qIEtleWVkRW5jb2Rl
ckNGLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzQjNENzExNEIxNjY2MDAxQzQyOUIgLyogS2V5
RXZlbnRDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY1NTQxMzkxNDg5ODExQzAwMERGQzVE
IC8qIEtleUV2ZW50Q29kZXNJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMzExMjUsNiArMzExMzIs
NyBAQAogCQkJCTA3M0JFMzRFMTdEMTgwQjIwMDJCRDQzMSAvKiBSVENTZXNzaW9uRGVzY3JpcHRp
b25EZXNjcmlwdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTBFMTdEMTRDRUUwMDQy
MEFBMSAvKiBSVENTdGF0c1JlcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDkxMDE3
RDE0Q0VFMDA0MjBBQTEgLyogUlRDU3RhdHNSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk4M0ZFOTAyODFFMzA3QzMzMDAzRTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTVFMkM0MzY3MUJDRUUzNzcwMDAxRTJCQyAvKiBSVENUcmFja0V2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU4MjRBQkEyMUFFODExMTYwMDkwNzRCNyAvKiBSdWJ5
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1ODI0QUJBNjFBRTgxMzg0MDA5MDc0Qjcg
LyogUnVieVRleHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9BY3Rpdml0eVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2
aXR5U3RhdGUuaAppbmRleCBiNmVkNzgyYzk4NWFkYTVmN2U2M2JmMmRlMDJkZTllY2Q4NjUyYWI2
Li4wZTUzNGNjNjZjMGNhMzU5MGIzMDdiODk5NTUwYTNiZjQyYmI3MzJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0FjdGl2aXR5U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0FjdGl2aXR5U3RhdGUuaApAQCAtNDUsNCArNDUsMTAgQEAgc3RydWN0IEFjdGl2aXR5U3Rh
dGUgewogICAgIHN0YXRpYyBjb25zdCBGbGFncyBBbGxGbGFncyA9IFdpbmRvd0lzQWN0aXZlIHwg
SXNGb2N1c2VkIHwgSXNWaXNpYmxlIHwgSXNWaXNpYmxlT3JPY2NsdWRlZCB8IElzSW5XaW5kb3cg
fCBJc1Zpc3VhbGx5SWRsZSB8IElzQXVkaWJsZSB8IElzTG9hZGluZzsKIH07CiAKK2VudW0gY2xh
c3MgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nIHsKKyAgICBOb25WaXNpYmxlLAorICAgIFZp
c2libGVOb25BY3RpdmUsCisgICAgVmlzaWJsZUFuZEFjdGl2ZQorfTsKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggMzMxZGY0YWM3ZjBm
N2Y4MWFmZmZjNzg4YmVjMThhN2E1ZTgxYzhmZi4uMmM4OWI2Y2JhNTA2ODBiOTcyZGM1NWZjNGIy
NGM0ODkwZmFlYjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC00NTUsNiAr
NDU1LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVu
dE1hcmtlclJlY3RzKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UHJvY2Vzc0NQVVRp
bWUoaW50NjRfdCwgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKSB7IH0KKwogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgfkNocm9tZUNsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcAppbmRleCBlMTZmNTlkZTBmYmQ3MWE0MThi
MjY5NjkzNDk1YjRmNDIzNGU4NTg5Li4xOGI4MzJkMmI3M2RjY2UzNDQ0ZDg0ZGM1NWQzYWZhOWEy
NzdmOTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5n
S2V5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMu
Y3BwCkBAIC0xNjMsNiArMTYzLDExIEBAIFN0cmluZyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5v
U3RvcmVLZXkoKQogICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vU3RvcmUiKTsKIH0KIAorU3Ry
aW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6bm9uVmlzaWJsZVN0YXRlS2V5KCkKK3sKKyAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJub25WaXNpYmxlU3RhdGUiKTsKK30KKwogU3RyaW5nIERpYWdu
b3N0aWNMb2dnaW5nS2V5czo6bm90SW5NZW1vcnlDYWNoZUtleSgpCiB7CiAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgibm90SW5NZW1vcnlDYWNoZSIpOwpAQCAtNTk4LDYgKzYwMywxNiBAQCBTdHJp
bmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp2aWRlb0tleSgpCiAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgidmlkZW8iKTsKIH0KIAorU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6dmlzaWJs
ZU5vbkFjdGl2ZVN0YXRlS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ2aXNpYmxl
Tm9uQWN0aXZlU3RhdGUiKTsKK30KKworU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6dmlz
aWJsZUFuZEFjdGl2ZVN0YXRlS2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ2aXNp
YmxlQW5kQWN0aXZlU3RhdGUiKTsKK30KKwogU3RyaW5nIERpYWdub3N0aWNMb2dnaW5nS2V5czo6
d2FzdGVkU3BlY3VsYXRpdmVXYXJtdXBXaXRoUmV2YWxpZGF0aW9uS2V5KCkKIHsKICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJ3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb24i
KTsKQEAgLTY1OCw1ICs2NzMsMzcgQEAgU3RyaW5nIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5n
S2V5czo6d2ViR0xLZXkoKQogICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIndlYkdMIik7CiB9CiAK
K1N0cmluZyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmZvcmVncm91bmRDUFVVc2FnZVRvRGlhZ25v
c3RpY0xvZ2dpbmdLZXkoZG91YmxlIGNwdVVzYWdlKQoreworICAgIGlmIChjcHVVc2FnZSA8IDEw
KQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJCZWxvdzEwIik7CisgICAgaWYgKGNwdVVz
YWdlIDwgMjApCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjEwdG8yMCIpOworICAgIGlm
IChjcHVVc2FnZSA8IDQwKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIyMHRvNDAiKTsK
KyAgICBpZiAoY3B1VXNhZ2UgPCA2MCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiNDB0
bzYwIik7CisgICAgaWYgKGNwdVVzYWdlIDwgODApCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIjYwdG84MCIpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm92ZXI4MCIpOworfQorCitT
dHJpbmcgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpiYWNrZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0
aWNMb2dnaW5nS2V5KGRvdWJsZSBjcHVVc2FnZSkKK3sKKyAgICBpZiAoY3B1VXNhZ2UgPCAxKQor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJCZWxvdzEiKTsKKyAgICBpZiAoY3B1VXNhZ2Ug
PCA1KQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIxdG81Iik7CisgICAgaWYgKGNwdVVz
YWdlIDwgMTApCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjV0bzEwIik7CisgICAgaWYg
KGNwdVVzYWdlIDwgMzApCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjEwdG8zMCIpOwor
ICAgIGlmIChjcHVVc2FnZSA8IDUwKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIzMHRv
NTAiKTsKKyAgICBpZiAoY3B1VXNhZ2UgPCA3MCkKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiNTB0bzcwIik7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib3ZlcjcwIik7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
aWFnbm9zdGljTG9nZ2luZ0tleXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGlhZ25vc3RpY0xv
Z2dpbmdLZXlzLmgKaW5kZXggNmI2YTJmMDFhYzgzNzE2YzZlMWE0ZmE2OWU5ZWIxYjRhOWIyZGQ4
MS4uNTA4OTdiYmY5NDFhYmU2MDU1YTg1MTUxMWU5YzllZTlhNDZhYjg5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGNhY2hlZFJlc291cmNlUmV2YWxpZGF0aW9uS2V5KCk7
CiAgICAgc3RhdGljIFN0cmluZyBjYW5DYWNoZUtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgY2Fu
bm90U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNLZXkoKTsKLSAgICBzdGF0aWMgU3RyaW5nIGNwdVVz
YWdlS2V5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBjcHVVc2FnZUtleSgp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgY3JlYXRlU2hhcmVkQnVmZmVyRmFp
bGVkS2V5KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkZWx0YUtleSgpOwog
ICAgIHN0YXRpYyBTdHJpbmcgZGVuaWVkQnlDbGllbnRLZXkoKTsKQEAgLTg4LDYgKzg4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgbm9Eb2N1bWVudExvYWRlcktleSgpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgbm9Mb25nZXJJbkNhY2hlS2V5KCk7CiAgICAgc3Rh
dGljIFN0cmluZyBub1N0b3JlS2V5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmlu
ZyBub25WaXNpYmxlU3RhdGVLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5n
IG5vdEhUVFBGYW1pbHlLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIG5v
dEluQ2FjaGVLZXkoKTsKICAgICBzdGF0aWMgU3RyaW5nIG5vdEluTWVtb3J5Q2FjaGVLZXkoKTsK
QEAgLTE1MCwxMiArMTUxLDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U3RyaW5nIHVzZXJLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHZhcnlp
bmdIZWFkZXJNaXNtYXRjaEtleSgpOwogICAgIHN0YXRpYyBTdHJpbmcgdmlkZW9LZXkoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHZpc2libGVOb25BY3RpdmVTdGF0ZUtleSgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgdmlzaWJsZUFuZEFjdGl2ZVN0YXRl
S2V5KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB3YXN0ZWRTcGVjdWxhdGl2
ZVdhcm11cFdpdGhSZXZhbGlkYXRpb25LZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U3RyaW5nIHdhc3RlZFNwZWN1bGF0aXZlV2FybXVwV2l0aG91dFJldmFsaWRhdGlvbktleSgpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgd2ViR0xLZXkoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgU3RyaW5nIHdlYlZpZXdLZXkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU3RyaW5nIHpvb21lZEtleSgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0
cmluZyBmb3JlZ3JvdW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5nS2V5KGRvdWJsZSBjcHVV
c2FnZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBiYWNrZ3JvdW5kQ1BVVXNh
Z2VUb0RpYWdub3N0aWNMb2dnaW5nS2V5KGRvdWJsZSBjcHVVc2FnZSk7CisKICAgICAvLyBTdWNj
ZXNzIC8gRmFpbHVyZSBrZXlzLgogICAgIHN0YXRpYyBTdHJpbmcgc3VjY2Vzc0tleSgpOwogICAg
IHN0YXRpYyBTdHJpbmcgZmFpbHVyZUtleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOTUxZTI3
NGI3ZjBhMGQwYmQwMjg5MmYzYjY5ZWIxNDVhNjE3YmQ5MS4uZGIxN2U2YmFmN2FjZTRjMjcyNjVj
OGVkYjM3MDVmZGIxN2ViMjBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC02Niw2ICs2Niw3IEBA
CiAjaW5jbHVkZSAiUGFnZURlYnVnZ2FibGUuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQZXJmb3JtYW5jZU1v
bml0b3IuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNs
dWRlICJQbHVnSW5DbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCkBAIC0xMjcsMTMg
KzEyOCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZpbmUgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFBhZ2U6OiIgZm10LCB0aGlzLCAjI19fVkFf
QVJHU19fKQotCiBzdGF0aWMgSGFzaFNldDxQYWdlKj4qIGFsbFBhZ2VzOworc3RhdGljIHVuc2ln
bmVkIG5vblV0aWxpdHlQYWdlQ291bnQgeyAwIH07CiAKLXN0YXRpYyBjb25zdCBzdGQ6OmNocm9u
bzo6c2Vjb25kcyBjcHVVc2FnZU1lYXN1cmVtZW50RGVsYXkgeyA1IH07Ci1zdGF0aWMgY29uc3Qg
c3RkOjpjaHJvbm86OnNlY29uZHMgcG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24g
eyAxMCB9Owotc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjptaW51dGVzIGJhY2tncm91bmRDUFVV
c2FnZU1lYXN1cmVtZW50RHVyYXRpb24geyA1IH07CitzdGF0aWMgaW5saW5lIGJvb2wgaXNVdGls
aXR5UGFnZUNocm9tZUNsaWVudChDaHJvbWVDbGllbnQmIGNocm9tZUNsaWVudCkKK3sKKyAgICBy
ZXR1cm4gY2hyb21lQ2xpZW50LmlzRW1wdHlDaHJvbWVDbGllbnQoKSB8fCBjaHJvbWVDbGllbnQu
aXNTVkdJbWFnZUNocm9tZUNsaWVudCgpOworfQogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwo
V1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHBhZ2VDb3VudGVyLCAoIlBhZ2UiKSk7CiAKQEAg
LTI1Myw4ICsyNTQsOCBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZp
Z3VyYXRpb24pCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKldURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24udmlzaXRlZExpbmtTdG9yZSkpCiAgICAgLCBtX3Nlc3Npb25JRChTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSkKICAgICAsIG1faXNDbG9zaW5nKGZhbHNlKQotICAgICwgbV9wb3N0
UGFnZUxvYWRDUFVVc2FnZVRpbWVyKCp0aGlzLCAmUGFnZTo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNh
Z2UpCi0gICAgLCBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VUaW1lcigqdGhpcywgJlBhZ2U6
Om1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlKQorICAgICwgbV9pc1V0aWxpdHlQYWdl
KGlzVXRpbGl0eVBhZ2VDaHJvbWVDbGllbnQoY2hyb21lKCkuY2xpZW50KCkpKQorICAgICwgbV9w
ZXJmb3JtYW5jZU1vbml0b3IoaXNVdGlsaXR5UGFnZSgpID8gbnVsbHB0ciA6IHN0ZDo6bWFrZV91
bmlxdWU8UGVyZm9ybWFuY2VNb25pdG9yPigqdGhpcykpCiB7CiAgICAgdXBkYXRlVGltZXJUaHJv
dHRsaW5nU3RhdGUoKTsKIApAQCAtMjcxLDYgKzI3Miw4IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZp
Z3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKIAogICAgIEFTU0VSVCghYWxsUGFnZXMtPmNv
bnRhaW5zKHRoaXMpKTsKICAgICBhbGxQYWdlcy0+YWRkKHRoaXMpOworICAgIGlmICghaXNVdGls
aXR5UGFnZSgpKQorICAgICAgICArK25vblV0aWxpdHlQYWdlQ291bnQ7CiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgcGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC0yOTUsNiArMjk4LDggQEAgUGFn
ZTo6flBhZ2UoKQogICAgIG1fbWFpbkZyYW1lLT5zZXRWaWV3KG51bGxwdHIpOwogICAgIHNldEdy
b3VwTmFtZShTdHJpbmcoKSk7CiAgICAgYWxsUGFnZXMtPnJlbW92ZSh0aGlzKTsKKyAgICBpZiAo
IWlzVXRpbGl0eVBhZ2UoKSkKKyAgICAgICAgLS1ub25VdGlsaXR5UGFnZUNvdW50OwogICAgIAog
ICAgIG1fc2V0dGluZ3MtPnBhZ2VEZXN0cm95ZWQoKTsKIApAQCAtOTM0LDkxICs5MzksMjEgQEAg
dm9pZCBQYWdlOjpzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24gdXNlckludGUKIAogdm9pZCBQYWdlOjpkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCgpCiB7Ci0gICAgbV9wb3N0TG9hZENQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgbV9w
b3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV9wZXJmb3JtYW5jZU1v
bml0b3IpCisgICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5kaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCgpOwogfQogCiB2b2lkIFBhZ2U6OmRpZEZpbmlzaExvYWQoKQogewogICAgIHJlc2V0UmVs
ZXZhbnRQYWludGVkT2JqZWN0Q291bnRlcigpOwogCi0gICAgLy8gT25seSBkbyBwb3N0LWxvYWQg
Q1BVIHVzYWdlIG1lYXN1cmVtZW50IGlmIHRoZXJlIGlzIGEgc2luZ2xlIFBhZ2UgaW4gdGhlIHBy
b2Nlc3MgaW4gb3JkZXIgdG8gcmVkdWNlIG5vaXNlLgotICAgIGlmIChTZXR0aW5nczo6aXNQb3N0
TG9hZENQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkgJiYgYWxsUGFnZXMtPnNpemUoKSA9PSAx
KSB7Ci0gICAgICAgIG1fcG9zdExvYWRDUFVUaW1lID0gc3RkOjpudWxsb3B0OwotICAgICAgICBt
X3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIuc3RhcnRPbmVTaG90KGNwdVVzYWdlTWVhc3VyZW1l
bnREZWxheSk7Ci0gICAgfQotfQotCi1zdGF0aWMgU3RyaW5nIGZvcmVncm91bmRDUFVVc2FnZVRv
RGlhZ25vc3RpY0xvZ2dpbktleShkb3VibGUgY3B1VXNhZ2UpCi17Ci0gICAgaWYgKGNwdVVzYWdl
IDwgMTApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkJlbG93MTAiKTsKLSAgICBpZiAo
Y3B1VXNhZ2UgPCAyMCkKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiMTB0bzIwIik7Ci0g
ICAgaWYgKGNwdVVzYWdlIDwgNDApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjIwdG80
MCIpOwotICAgIGlmIChjcHVVc2FnZSA8IDYwKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCI0MHRvNjAiKTsKLSAgICBpZiAoY3B1VXNhZ2UgPCA4MCkKLSAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiNjB0bzgwIik7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib3ZlcjgwIik7Ci19
Ci0KLXZvaWQgUGFnZTo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UoKQotewotICAgIGlmIChhbGxQ
YWdlcy0+c2l6ZSgpICE9IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9wb3N0TG9h
ZENQVVRpbWUpIHsKLSAgICAgICAgbV9wb3N0TG9hZENQVVRpbWUgPSBnZXRDUFVUaW1lKCk7Ci0g
ICAgICAgIGlmIChtX3Bvc3RMb2FkQ1BVVGltZSkKLSAgICAgICAgICAgIG1fcG9zdFBhZ2VMb2Fk
Q1BVVXNhZ2VUaW1lci5zdGFydE9uZVNob3QocG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RHVy
YXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGlt
ZT4gY3B1VGltZSA9IGdldENQVVRpbWUoKTsKLSAgICBpZiAoIWNwdVRpbWUpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGRvdWJsZSBjcHVVc2FnZSA9IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50YWdl
Q1BVVXNhZ2VTaW5jZSgqbV9wb3N0TG9hZENQVVRpbWUpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUGVyZm9ybWFuY2VMb2dnaW5nLCAibWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2U6IFByb2Nl
c3Mgd2FzIHVzaW5nICUuMWYlJSBwZXJjZW50IENQVSBhZnRlciB0aGUgcGFnZSBsb2FkLiIsIGNw
dVVzYWdlKTsKLSAgICBkaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cG9zdFBhZ2VMb2FkS2V5KCksIERp
YWdub3N0aWNMb2dnaW5nS2V5czo6Y3B1VXNhZ2VLZXkoKSwgZm9yZWdyb3VuZENQVVVzYWdlVG9E
aWFnbm9zdGljTG9nZ2luS2V5KGNwdVVzYWdlKSwgU2hvdWxkU2FtcGxlOjpObyk7CisgICAgaWYg
KG1fcGVyZm9ybWFuY2VNb25pdG9yKQorICAgICAgICBtX3BlcmZvcm1hbmNlTW9uaXRvci0+ZGlk
RmluaXNoTG9hZCgpOwogfQogCi1zdGF0aWMgU3RyaW5nIGJhY2tncm91bmRDUFVVc2FnZVRvRGlh
Z25vc3RpY0xvZ2dpbktleShkb3VibGUgY3B1VXNhZ2UpCitib29sIFBhZ2U6OmlzT25seU5vblV0
aWxpdHlQYWdlKCkgY29uc3QKIHsKLSAgICBpZiAoY3B1VXNhZ2UgPCAxKQotICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJCZWxvdzEiKTsKLSAgICBpZiAoY3B1VXNhZ2UgPCA1KQotICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCIxdG81Iik7Ci0gICAgaWYgKGNwdVVzYWdlIDwgMTApCi0g
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjV0bzEwIik7Ci0gICAgaWYgKGNwdVVzYWdlIDwg
MzApCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjEwdG8zMCIpOwotICAgIGlmIChjcHVV
c2FnZSA8IDUwKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIzMHRvNTAiKTsKLSAgICBp
ZiAoY3B1VXNhZ2UgPCA3MCkKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiNTB0bzcwIik7
Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib3ZlcjcwIik7Ci19Ci0KLXZvaWQgUGFnZTo6bWVh
c3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2UoKQotewotICAgIGlmIChhbGxQYWdlcy0+c2l6
ZSgpICE9IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9wb3N0QmFja2dyb3VuZGlu
Z0NQVVRpbWUpIHsKLSAgICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWUgPSBnZXRDUFVU
aW1lKCk7Ci0gICAgICAgIGlmIChtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSkKLSAgICAgICAg
ICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRpbWVyLnN0YXJ0T25lU2hvdChiYWNrZ3Jv
dW5kQ1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IGNwdVRpbWUgPSBnZXRDUFVUaW1lKCk7Ci0gICAg
aWYgKCFjcHVUaW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3VibGUgY3B1VXNhZ2UgPSBj
cHVUaW1lLnZhbHVlKCkucGVyY2VudGFnZUNQVVVzYWdlU2luY2UoKm1fcG9zdEJhY2tncm91bmRp
bmdDUFVUaW1lKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBlcmZvcm1hbmNlTG9nZ2lu
ZywgIm1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlOiBQcm9jZXNzIHdhcyB1c2luZyAl
LjFmJSUgcGVyY2VudCBDUFUgYWZ0ZXIgYmVjb21pbmcgbm9uIHZpc2libGUuIiwgY3B1VXNhZ2Up
OwotICAgIGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
VmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpwb3N0UGFnZUJhY2tncm91bmRpbmdLZXkoKSwg
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjcHVVc2FnZUtleSgpLCBiYWNrZ3JvdW5kQ1BVVXNhZ2VU
b0RpYWdub3N0aWNMb2dnaW5LZXkoY3B1VXNhZ2UpLCBTaG91bGRTYW1wbGU6Ok5vKTsKKyAgICBy
ZXR1cm4gIWlzVXRpbGl0eVBhZ2UoKSAmJiBub25VdGlsaXR5UGFnZUNvdW50ID09IDE7CiB9CiAK
IHZvaWQgUGFnZTo6c2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNvbnRlbnRJbnNldCkKQEAgLTE1
NzAsNiArMTUwNSw5IEBAIHZvaWQgUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRl
OjpGbGFncyBhY3Rpdml0eVN0YXRlKQogCiAgICAgaWYgKHdhc1Zpc2libGVBbmRBY3RpdmUgIT0g
aXNWaXNpYmxlQW5kQWN0aXZlKCkpCiAgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6dXBkYXRlTm93UGxheWluZ0luZm9JZk5lY2Vzc2FyeSgpOworCisgICAgaWYgKG1fcGVyZm9y
bWFuY2VNb25pdG9yKQorICAgICAgICBtX3BlcmZvcm1hbmNlTW9uaXRvci0+YWN0aXZpdHlTdGF0
ZUNoYW5nZWQob2xkQWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZSk7CiB9CiAKIGJvb2wgUGFn
ZTo6aXNWaXNpYmxlQW5kQWN0aXZlKCkgY29uc3QKQEAgLTE2MjYsMTMgKzE1NjQsNiBAQCB2b2lk
IFBhZ2U6OnNldElzVmlzaWJsZUludGVybmFsKGJvb2wgaXNWaXNpYmxlKQogICAgICAgICBpZiAo
RnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lKCkudmlldygpKQogICAgICAgICAgICAgdmlldy0+
aGlkZSgpOwogICAgIH0KLQotICAgIC8vIE1lYXN1cmUgQ1BVIHVzYWdlIG9mIHBhZ2VzIHdoZW4g
dGhleSBhcmUgbm8gbG9uZ2VyIHZpc2libGUuCi0gICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRp
bWUgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKGlzVmlzaWJsZSkKLSAgICAgICAgbV9wb3N0QmFj
a2dyb3VuZGluZ0NQVVVzYWdlVGltZXIuc3RvcCgpOwotICAgIGVsc2UgaWYgKFNldHRpbmdzOjpp
c1Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKSAmJiBhbGxQYWdl
cy0+c2l6ZSgpID09IDEpCi0gICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRpbWVy
LnN0YXJ0T25lU2hvdChjcHVVc2FnZU1lYXN1cmVtZW50RGVsYXkpOwogfQogCiB2b2lkIFBhZ2U6
OnNldElzUHJlcmVuZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMDJiNTA0NGYzMTU4MTM5M2Q0YWFl
MTRlZjljMDVkZjBmZjc3YWQyYy4uMGQyYzczNTUyNzZjM2EyMWUyYTlmYzc5MTM5NTYxODBjODE4
ZjUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTIxLDcgKzIxLDYgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgotI2luY2x1ZGUgIkNQVVRpbWUuaCIKICNpbmNsdWRl
ICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRl
ICJMYXlvdXRNaWxlc3RvbmVzLmgiCkBAIC0xMDUsNiArMTA0LDcgQEAgY2xhc3MgUGFnZUNvbmZp
Z3VyYXRpb247CiBjbGFzcyBQYWdlQ29uc29sZUNsaWVudDsKIGNsYXNzIFBhZ2VEZWJ1Z2dhYmxl
OwogY2xhc3MgUGFnZUdyb3VwOworY2xhc3MgUGVyZm9ybWFuY2VNb25pdG9yOwogY2xhc3MgUGx1
Z0luQ2xpZW50OwogY2xhc3MgUGx1Z2luRGF0YTsKIGNsYXNzIFBsdWdpbkluZm9Qcm92aWRlcjsK
QEAgLTM1Nyw2ICszNTcsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBOb3RpZmljYXRpb25zIHdoZW4g
dGhlIFBhZ2Ugc3RhcnRzIGFuZCBzdG9wcyBiZWluZyBwcmVzZW50ZWQgdmlhIGEgbmF0aXZlIHdp
bmRvdy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlT
dGF0ZTo6RmxhZ3MpOworICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGU7IH0KKwogICAgIGJvb2wgaXNWaXNpYmxlQW5k
QWN0aXZlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1Zpc2libGUoYm9v
bCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1ByZXJlbmRlcigpOwpAQCAtNTU5LDYg
KzU2MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92
ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IHRocm90dGxpbmcp
IHsgbV9ldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlID0gdGhyb3R0bGluZzsgfQogCiAg
ICAgV2ViR0xTdGF0ZVRyYWNrZXIqIHdlYkdMU3RhdGVUcmFja2VyKCkgY29uc3QgeyByZXR1cm4g
bV93ZWJHTFN0YXRlVHJhY2tlci5nZXQoKTsgfQorCisgICAgYm9vbCBpc09ubHlOb25VdGlsaXR5
UGFnZSgpIGNvbnN0OworICAgIGJvb2wgaXNVdGlsaXR5UGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNVdGlsaXR5UGFnZTsgfQorCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5p
dEdyb3VwKCk7CiAKQEAgLTU3Miw5ICs1NzgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hlY2tT
dWJmcmFtZUNvdW50Q29uc2lzdGVuY3koKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9pZCBtZWFz
dXJlUG9zdExvYWRDUFVVc2FnZSgpOwotICAgIHZvaWQgbWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5n
Q1BVVXNhZ2UoKTsKLQogICAgIGVudW0gU2hvdWxkSGlnaGxpZ2h0TWF0Y2hlcyB7IERvTm90SGln
aGxpZ2h0TWF0Y2hlcywgSGlnaGxpZ2h0TWF0Y2hlcyB9OwogICAgIGVudW0gU2hvdWxkTWFya01h
dGNoZXMgeyBEb05vdE1hcmtNYXRjaGVzLCBNYXJrTWF0Y2hlcyB9OwogCkBAIC03NTYsMTUgKzc1
OSwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG93QWxsUGx1Z2lucyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9y
ZXNvdXJjZUNhY2hpbmdEaXNhYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzVXRpbGl0eVBh
Z2U7CiAgICAgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBtX3VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24geyBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFIgfTsKICAgICAK
ICAgICAvLyBGb3IgdGVzdGluZy4KICAgICBzdGQ6Om9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0Jl
aGF2aW9yPiBtX2V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGU7CiAKLSAgICBUaW1lciBt
X3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXI7Ci0gICAgc3RkOjpvcHRpb25hbDxDUFVUaW1lPiBt
X3Bvc3RMb2FkQ1BVVGltZTsKLSAgICBUaW1lciBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VU
aW1lcjsKLSAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IG1fcG9zdEJhY2tncm91bmRpbmdDUFVU
aW1lOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQZXJmb3JtYW5jZU1vbml0b3I+IG1fcGVyZm9ybWFu
Y2VNb25pdG9yOwogfTsKIAogaW5saW5lIFBhZ2VHcm91cCYgUGFnZTo6Z3JvdXAoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjYWViZWY0
MTc3YmZhYzI3NDk0YjJmNjdkMTAwZGJiYzk1NWRmNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHAKQEAgLTAsMCArMSwyMDAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGVyZm9ybWFuY2VN
b25pdG9yLmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQu
aCIKKyNpbmNsdWRlICJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIgorI2luY2x1ZGUgIkRpYWdu
b3N0aWNMb2dnaW5nS2V5cy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQYWdl
LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVm
aW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9H
X0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUGVy
Zm9ybWFuY2VNb25pdG9yOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworc3RhdGljIGNv
bnN0IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIGNwdVVzYWdlTWVhc3VyZW1lbnREZWxheSB7IDUgfTsK
K3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBwb3N0TG9hZENQVVVzYWdlTWVhc3Vy
ZW1lbnREdXJhdGlvbiB7IDEwIH07CitzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86Om1pbnV0ZXMg
YmFja2dyb3VuZENQVVVzYWdlTWVhc3VyZW1lbnREdXJhdGlvbiB7IDUgfTsKK3N0YXRpYyBjb25z
dCBzdGQ6OmNocm9ubzo6bWludXRlcyBjcHVVc2FnZVNhbXBsaW5nSW50ZXJ2YWwgeyAxMCB9Owor
CitzdGF0aWMgaW5saW5lIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyBhY3Rpdml0eVN0YXRl
Rm9yQ1BVU2FtcGxpbmcoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgc3RhdGUpCit7CisgICAgaWYgKCEo
c3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpKQorICAgICAgICByZXR1cm4gQWN0aXZp
dHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpOb25WaXNpYmxlOworICAgIGlmIChzdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlKQorICAgICAgICByZXR1cm4gQWN0aXZpdHlTdGF0ZUZv
ckNQVVNhbXBsaW5nOjpWaXNpYmxlQW5kQWN0aXZlOworICAgIHJldHVybiBBY3Rpdml0eVN0YXRl
Rm9yQ1BVU2FtcGxpbmc6OlZpc2libGVOb25BY3RpdmU7Cit9CisKK1BlcmZvcm1hbmNlTW9uaXRv
cjo6UGVyZm9ybWFuY2VNb25pdG9yKFBhZ2UmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAg
ICAsIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1lcigqdGhpcywgJlBlcmZvcm1hbmNlTW9uaXRv
cjo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UpCisgICAgLCBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BV
VXNhZ2VUaW1lcigqdGhpcywgJlBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBvc3RCYWNrZ3Jv
dW5kaW5nQ1BVVXNhZ2UpCisgICAgLCBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVRpbWVyKCp0
aGlzLCAmUGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
KQoreworICAgIEFTU0VSVCghcGFnZS5pc1V0aWxpdHlQYWdlKCkpOworCisgICAgaWYgKFNldHRp
bmdzOjppc1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpKSB7Cisg
ICAgICAgIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgICAg
IG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlVGltZXIuc3RhcnRSZXBlYXRpbmcoY3B1VXNhZ2VT
YW1wbGluZ0ludGVydmFsKTsKKyAgICB9Cit9CisKK3ZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCit7CisgICAgbV9wb3N0TG9hZENQVVRpbWUgPSBzdGQ6
Om51bGxvcHQ7CisgICAgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyLnN0b3AoKTsKK30KKwor
dm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6OmRpZEZpbmlzaExvYWQoKQoreworICAgIC8vIE9ubHkg
ZG8gcG9zdC1sb2FkIENQVSB1c2FnZSBtZWFzdXJlbWVudCBpZiB0aGVyZSBpcyBhIHNpbmdsZSBQ
YWdlIGluIHRoZSBwcm9jZXNzIGluIG9yZGVyIHRvIHJlZHVjZSBub2lzZS4KKyAgICBpZiAoU2V0
dGluZ3M6OmlzUG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpICYmIG1fcGFnZS5p
c09ubHlOb25VdGlsaXR5UGFnZSgpKSB7CisgICAgICAgIG1fcG9zdExvYWRDUFVUaW1lID0gc3Rk
OjpudWxsb3B0OworICAgICAgICBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIuc3RhcnRPbmVT
aG90KGNwdVVzYWdlTWVhc3VyZW1lbnREZWxheSk7CisgICAgfQorfQorCit2b2lkIFBlcmZvcm1h
bmNlTW9uaXRvcjo6YWN0aXZpdHlTdGF0ZUNoYW5nZWQoQWN0aXZpdHlTdGF0ZTo6RmxhZ3Mgb2xk
U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld1N0YXRlKQoreworICAgIEFjdGl2aXR5U3Rh
dGU6OkZsYWdzIGNoYW5nZWQgPSBvbGRTdGF0ZSBeIG5ld1N0YXRlOworICAgIGJvb2wgdmlzaWJp
bGl0eUNoYW5nZWQgPSBjaGFuZ2VkICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOworCisgICAg
Ly8gTWVhc3VyZSBDUFUgdXNhZ2Ugb2YgcGFnZXMgd2hlbiB0aGV5IGFyZSBubyBsb25nZXIgdmlz
aWJsZS4KKyAgICBpZiAoU2V0dGluZ3M6OmlzUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZU1lYXN1
cmVtZW50RW5hYmxlZCgpICYmIHZpc2liaWxpdHlDaGFuZ2VkKSB7CisgICAgICAgIG1fcG9zdEJh
Y2tncm91bmRpbmdDUFVUaW1lID0gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAobmV3U3RhdGUg
JiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCisgICAgICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5k
aW5nQ1BVVXNhZ2VUaW1lci5zdG9wKCk7CisgICAgICAgIGVsc2UgaWYgKG1fcGFnZS5pc09ubHlO
b25VdGlsaXR5UGFnZSgpKQorICAgICAgICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdl
VGltZXIuc3RhcnRPbmVTaG90KGNwdVVzYWdlTWVhc3VyZW1lbnREZWxheSk7CisgICAgfQorCisg
ICAgaWYgKFNldHRpbmdzOjppc1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZU1lYXN1cmVtZW50RW5h
YmxlZCgpKSB7CisgICAgICAgIC8vIElmIHZpc2liaWxpdHkgY2hhbmdlZCB0aGVuIHJlcG9ydCBD
UFUgdXNhZ2UgcmlnaHQgYXdheSBiZWNhdXNlIENQVSB1c2FnZSBpcyBjb25uZWN0ZWQgdG8gdmlz
aWJpbGl0eSBzdGF0ZS4KKyAgICAgICAgYXV0byBvbGRBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxp
bmcgPSBhY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcob2xkU3RhdGUpOworICAgICAgICBpZiAo
b2xkQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nICE9IGFjdGl2aXR5U3RhdGVGb3JDUFVTYW1w
bGluZyhuZXdTdGF0ZSkpIHsKKyAgICAgICAgICAgIG1lYXN1cmVDUFVVc2FnZUluQWN0aXZpdHlT
dGF0ZShvbGRBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpOworICAgICAgICAgICAgbV9wZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VUaW1lci5zdGFydFJlcGVhdGluZyhjcHVVc2FnZVNhbXBsaW5n
SW50ZXJ2YWwpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFBlcmZvcm1hbmNlTW9uaXRv
cjo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UoKQoreworICAgIGlmICghbV9wYWdlLmlzT25seU5v
blV0aWxpdHlQYWdlKCkpIHsKKyAgICAgICAgbV9wb3N0TG9hZENQVVRpbWUgPSBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fcG9zdExvYWRDUFVUaW1l
KSB7CisgICAgICAgIG1fcG9zdExvYWRDUFVUaW1lID0gZ2V0Q1BVVGltZSgpOworICAgICAgICBp
ZiAobV9wb3N0TG9hZENQVVRpbWUpCisgICAgICAgICAgICBtX3Bvc3RQYWdlTG9hZENQVVVzYWdl
VGltZXIuc3RhcnRPbmVTaG90KHBvc3RMb2FkQ1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0aW9uKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IGNwdVRp
bWUgPSBnZXRDUFVUaW1lKCk7CisgICAgaWYgKCFjcHVUaW1lKQorICAgICAgICByZXR1cm47CisK
KyAgICBkb3VibGUgY3B1VXNhZ2UgPSBjcHVUaW1lLnZhbHVlKCkucGVyY2VudGFnZUNQVVVzYWdl
U2luY2UoKm1fcG9zdExvYWRDUFVUaW1lKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBl
cmZvcm1hbmNlTG9nZ2luZywgIm1lYXN1cmVQb3N0TG9hZENQVVVzYWdlOiBQcm9jZXNzIHdhcyB1
c2luZyAlLjFmJSUgQ1BVIGFmdGVyIHRoZSBwYWdlIGxvYWQuIiwgY3B1VXNhZ2UpOworICAgIG1f
cGFnZS5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZh
bHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cG9zdFBhZ2VMb2FkS2V5KCksIERpYWdub3N0aWNM
b2dnaW5nS2V5czo6Y3B1VXNhZ2VLZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpmb3JlZ3Jv
dW5kQ1BVVXNhZ2VUb0RpYWdub3N0aWNMb2dnaW5nS2V5KGNwdVVzYWdlKSwgU2hvdWxkU2FtcGxl
OjpObyk7Cit9CisKK3ZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlUG9zdEJhY2tncm91
bmRpbmdDUFVVc2FnZSgpCit7CisgICAgaWYgKCFtX3BhZ2UuaXNPbmx5Tm9uVXRpbGl0eVBhZ2Uo
KSkgeworICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9wb3N0QmFja2dyb3VuZGluZ0NQ
VVRpbWUpIHsKKyAgICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWUgPSBnZXRDUFVUaW1l
KCk7CisgICAgICAgIGlmIChtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSkKKyAgICAgICAgICAg
IG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRpbWVyLnN0YXJ0T25lU2hvdChiYWNrZ3JvdW5k
Q1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IGNwdVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgaWYg
KCFjcHVUaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgY3B1VXNhZ2UgPSBjcHVU
aW1lLnZhbHVlKCkucGVyY2VudGFnZUNQVVVzYWdlU2luY2UoKm1fcG9zdEJhY2tncm91bmRpbmdD
UFVUaW1lKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBlcmZvcm1hbmNlTG9nZ2luZywg
Im1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlOiBQcm9jZXNzIHdhcyB1c2luZyAlLjFm
JSUgQ1BVIGFmdGVyIGJlY29taW5nIG5vbiB2aXNpYmxlLiIsIGNwdVVzYWdlKTsKKyAgICBtX3Bh
Z2UuZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnBvc3RQYWdlQmFja2dyb3VuZGluZ0tleSgpLCBEaWFn
bm9zdGljTG9nZ2luZ0tleXM6OmNwdVVzYWdlS2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6
YmFja2dyb3VuZENQVVVzYWdlVG9EaWFnbm9zdGljTG9nZ2luZ0tleShjcHVVc2FnZSksIFNob3Vs
ZFNhbXBsZTo6Tm8pOworfQorCit2b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZSgpCit7CisgICAgbWVhc3VyZUNQVVVzYWdlSW5BY3Rpdml0eVN0
YXRlKGFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyhtX3BhZ2UuYWN0aXZpdHlTdGF0ZSgpKSk7
Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKworc3RhdGljIGlubGluZSBjb25zdCBj
aGFyKiBzdHJpbmdGb3JDUFVTYW1wbGluZ0FjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUZvckNQ
VVNhbXBsaW5nIGFjdGl2aXR5U3RhdGUpCit7CisgICAgc3dpdGNoIChhY3Rpdml0eVN0YXRlKSB7
CisgICAgY2FzZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc6Ok5vblZpc2libGU6CisgICAg
ICAgIHJldHVybiAiTm9uVmlzaWJsZSI7CisgICAgY2FzZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2Ft
cGxpbmc6OlZpc2libGVOb25BY3RpdmU6CisgICAgICAgIHJldHVybiAiVmlzaWJsZU5vbkFjdGl2
ZSI7CisgICAgY2FzZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc6OlZpc2libGVBbmRBY3Rp
dmU6CisgICAgICAgIHJldHVybiAiVmlzaWJsZUFuZEFjdGl2ZSI7CisgICAgfQorfQorCisjZW5k
aWYKKwordm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVDUFVVc2FnZUluQWN0aXZpdHlT
dGF0ZShBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgYWN0aXZpdHlTdGF0ZSkKK3sKKyAgICBp
ZiAoIW1fcGFnZS5pc09ubHlOb25VdGlsaXR5UGFnZSgpKSB7CisgICAgICAgIG1fcGVyQWN0aXZp
dHlTdGF0ZUNQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoIW1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWUpIHsKKyAgICAgICAgbV9wZXJBY3Rp
dml0eVN0YXRlQ1BVVGltZSA9IGdldENQVVRpbWUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IGdldENQVVRpbWUoKTsKKyAg
ICBpZiAoIWNwdVRpbWUpIHsKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSA9IHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgIGRvdWJsZSBjcHVVc2FnZSA9IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50YWdl
Q1BVVXNhZ2VTaW5jZSgqbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQZXJmb3JtYW5jZUxvZ2dpbmcsICJtZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2
aXR5U3RhdGU6IFByb2Nlc3MgaXMgdXNpbmcgJS4xZiUlIENQVSBpbiBzdGF0ZTogJXMiLCBjcHVV
c2FnZSwgc3RyaW5nRm9yQ1BVU2FtcGxpbmdBY3Rpdml0eVN0YXRlKGFjdGl2aXR5U3RhdGUpKTsK
KyNlbmRpZgorICAgIG1fcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5yZXBvcnRQcm9jZXNzQ1BVVGlt
ZSgoY3B1VGltZS52YWx1ZSgpLnN5c3RlbVRpbWUgKyBjcHVUaW1lLnZhbHVlKCkudXNlclRpbWUp
IC0gKG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWUudmFsdWUoKS5zeXN0ZW1UaW1lICsgbV9wZXJB
Y3Rpdml0eVN0YXRlQ1BVVGltZS52YWx1ZSgpLnVzZXJUaW1lKSwgYWN0aXZpdHlTdGF0ZSk7CisK
KyAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lID0gV1RGTW92ZShjcHVUaW1lKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZU1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25p
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjBjYWMwMGI4ZTU2ODgzNzEyNjQ0MGVmNGRmOTFhNTE0OGI1OTg1
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25p
dG9yLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQWN0aXZpdHlTdGF0ZS5oIgorI2luY2x1ZGUgIkNQVVRpbWUuaCIKKyNpbmNsdWRlICJU
aW1lci5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFBhZ2U7CisKK2NsYXNzIFBlcmZvcm1hbmNlTW9uaXRvciB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgUGVyZm9ybWFuY2VNb25pdG9yKFBhZ2UmKTsKKworICAgIHZvaWQgZGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWQoKTsKKyAgICB2b2lk
IGFjdGl2aXR5U3RhdGVDaGFuZ2VkKEFjdGl2aXR5U3RhdGU6OkZsYWdzIG9sZFN0YXRlLCBBY3Rp
dml0eVN0YXRlOjpGbGFncyBuZXdTdGF0ZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBtZWFzdXJl
UG9zdExvYWRDUFVVc2FnZSgpOworICAgIHZvaWQgbWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BV
VXNhZ2UoKTsKKyAgICB2b2lkIG1lYXN1cmVQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2UoKTsKKyAg
ICB2b2lkIG1lYXN1cmVDUFVVc2FnZUluQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlRm9yQ1BV
U2FtcGxpbmcpOworCisgICAgUGFnZSYgbV9wYWdlOworCisgICAgVGltZXIgbV9wb3N0UGFnZUxv
YWRDUFVVc2FnZVRpbWVyOworICAgIHN0ZDo6b3B0aW9uYWw8Q1BVVGltZT4gbV9wb3N0TG9hZENQ
VVRpbWU7CisgICAgVGltZXIgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXI7CisgICAg
c3RkOjpvcHRpb25hbDxDUFVUaW1lPiBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZTsKKyAgICBU
aW1lciBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVRpbWVyOworICAgIHN0ZDo6b3B0aW9uYWw8
Q1BVVGltZT4gbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZTsKK307CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAKaW5kZXggNzU5Nzk2YWZiYTAwN2E2NzFjMzM1NjVhYWE1NzI4NjUwODEwNzVk
My4uNmJiOWQwM2E4YjM0YzE5NjgyNGE4ZDJiZWRjZGUzZGFhYWUxZDQyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAKQEAgLTc3OCwyNCArNzc4LDYgQEAgYm9vbCBTZXR0aW5nczo6Z2xvYmFs
Q29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKQogI2VuZGlmCiB9CiAKLWJvb2wgU2V0dGlu
Z3M6OmlzUG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpCi17Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNl
bmRpZgotfQotCi1ib29sIFNldHRpbmdzOjppc1Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VNZWFz
dXJlbWVudEVuYWJsZWQoKQotewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXR1cm4gdHJ1ZTsK
LSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KIHZvaWQgU2V0dGluZ3M6OnNl
dEFsbG93c0FueVNTTENlcnRpZmljYXRlKGJvb2wgYWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZSkKIHsK
ICAgICBnQWxsb3dzQW55U1NMQ2VydGlmaWNhdGUgPSBhbGxvd0FueVNTTENlcnRpZmljYXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IGE5NzQwMjE2ZTU2YWQxNzc0ZDY5ZmI2Y2U4NTBlOGVi
MTY4ZWZiNTUuLjJkM2M4M2M5N2I1OWUyMmU0ODMxYjVkOTVlMDY2ODEyNTZjNTQ5OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKQEAgLTIwMSw2ICsyMDEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgYm9vbCBpc1Bvc3RMb2FkQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKTsKICAgICBzdGF0
aWMgYm9vbCBpc1Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKTsK
KyAgICBzdGF0aWMgYm9vbCBpc1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZU1lYXN1cmVtZW50RW5h
YmxlZCgpOwogCiAgICAgc3RhdGljIGJvb2wgZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxk
VGhyb3coKTsKIApAQCAtNDIzLDQgKzQyNCwzMSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29s
IGdBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZTsKIH07CiAKK2lubGluZSBib29sIFNldHRpbmdzOjpp
c1Bvc3RMb2FkQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKQoreworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
K30KKworaW5saW5lIGJvb2wgU2V0dGluZ3M6OmlzUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZU1l
YXN1cmVtZW50RW5hYmxlZCgpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJldHVybiB0cnVl
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wgU2V0
dGluZ3M6OmlzUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkKK3sK
KyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Mb2dnaW5nLmgKaW5kZXggODcyMDI3MmRkMjZiNDllNTYzZWRjYWQwNjNkYWE0ZjI2ZWViNGNh
Yi4uZTNlODhhZjQwNzBmNjEyNDViMmIzZWJkMTg2NjdiNGE5NzZjMzUzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0xvZ2dpbmcuaApAQCAtNTcsNiArNTcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKE5l
dHdvcmtDYWNoZVN0b3JhZ2UpIFwKICAgICBNKE5ldHdvcmtTY2hlZHVsaW5nKSBcCiAgICAgTShO
ZXR3b3JrU2Vzc2lvbikgXAorICAgIE0oUGVyZm9ybWFuY2VMb2dnaW5nKSBcCiAgICAgTShQbHVn
aW5zKSBcCiAgICAgTShQcmludGluZykgXAogICAgIE0oUHJvY2Vzc1N1c3BlbnNpb24pIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VTYW1wbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDM3ZTk3ZWI2NGFmYTVmNWRkZDM1MjNm
MTZlNmRkZWM1NjJhOGNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwCkBAIC0wLDAgKzEsMTE2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitzdGF0aWMgY29uc3QgaW50NjRfdCBtaWNyb3NlY29uZHNQZXJTZWNvbmQgPSAxMDAwMDAw
OworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25v
OjptaW51dGVzIGxvZ2dpbmdJbnRlcnZhbCB7IDYwIH07CisKK1BlckFjdGl2aXR5U3RhdGVDUFVV
c2FnZVNhbXBsZXI6OlBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sKQorICAgIDogbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCkKKyAgICAs
IG1fbG9nZ2luZ1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXI6OmxvZ2dpbmdUaW1lckZpcmVkKQoreworICAgIG1fbGFzdENQVVRpbWUg
PSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBtX2xvZ2dpbmdUaW1lci5zdGFy
dFJlcGVhdGluZyhsb2dnaW5nSW50ZXJ2YWwpOworfQorCitQZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyOjp+UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcigpCit7Cit9CisKK3Zv
aWQgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjo6cmVwb3J0V2ViQ29udGVudENQVVRp
bWUoaW50NjRfdCBjcHVUaW1lLCBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcgYWN0aXZpdHlT
dGF0ZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fY3B1VGltZUluQWN0aXZpdHlTdGF0ZS5hZGQo
YWN0aXZpdHlTdGF0ZSwgY3B1VGltZSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSBjcHVUaW1lOworfQorCitzdGF0aWMgaW5s
aW5lIFN0cmluZyBsb2dnaW5nS2V5Rm9yQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlRm9yQ1BV
U2FtcGxpbmcgc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgQWN0aXZp
dHlTdGF0ZUZvckNQVVNhbXBsaW5nOjpOb25WaXNpYmxlOgorICAgICAgICByZXR1cm4gRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjpub25WaXNpYmxlU3RhdGVLZXkoKTsKKyAgICBjYXNlIEFjdGl2aXR5
U3RhdGVGb3JDUFVTYW1wbGluZzo6VmlzaWJsZU5vbkFjdGl2ZToKKyAgICAgICAgcmV0dXJuIERp
YWdub3N0aWNMb2dnaW5nS2V5czo6dmlzaWJsZU5vbkFjdGl2ZVN0YXRlS2V5KCk7CisgICAgY2Fz
ZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc6OlZpc2libGVBbmRBY3RpdmU6CisgICAgICAg
IHJldHVybiBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnZpc2libGVBbmRBY3RpdmVTdGF0ZUtleSgp
OworICAgIH0KK30KKworc3RhdGljIGlubGluZSBTdHJpbmcgbG9nZ2luZ0tleUZvckNQVVVzYWdl
KEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyBzdGF0ZSwgZG91YmxlIGNwdVVzYWdlKQorewor
ICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGlu
Zzo6Tm9uVmlzaWJsZToKKyAgICAgICAgcmV0dXJuIERpYWdub3N0aWNMb2dnaW5nS2V5czo6YmFj
a2dyb3VuZENQVVVzYWdlVG9EaWFnbm9zdGljTG9nZ2luZ0tleShjcHVVc2FnZSk7CisgICAgY2Fz
ZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc6OlZpc2libGVOb25BY3RpdmU6CisgICAgY2Fz
ZSBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc6OlZpc2libGVBbmRBY3RpdmU6CisgICAgICAg
IHJldHVybiBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmZvcmVncm91bmRDUFVVc2FnZVRvRGlhZ25v
c3RpY0xvZ2dpbmdLZXkoY3B1VXNhZ2UpOworICAgIH0KK30KKwordm9pZCBQZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyOjpsb2dnaW5nVGltZXJGaXJlZCgpCit7CisgICAgYXV0byogcGFn
ZSA9IHBhZ2VGb3JMb2dnaW5nKCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIG1fY3B1VGlt
ZUluQWN0aXZpdHlTdGF0ZS5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
ZG91YmxlIGN1cnJlbnRDUFVUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Cisg
ICAgaW50NjRfdCBjcHVUaW1lRGVsdGEgPSAoY3VycmVudENQVVRpbWUgLSBtX2xhc3RDUFVUaW1l
KSAqIG1pY3Jvc2Vjb25kc1BlclNlY29uZDsKKworICAgIGZvciAoYXV0byYgcGFpciA6IG1fY3B1
VGltZUluQWN0aXZpdHlTdGF0ZSkgeworICAgICAgICBkb3VibGUgY3B1VXNhZ2UgPSBzdGF0aWNf
Y2FzdDxkb3VibGU+KHBhaXIudmFsdWUgKiAxMDAuKSAvIGNwdVRpbWVEZWx0YTsKKyAgICAgICAg
U3RyaW5nIGxvZ2dpbmdLZXkgPSBsb2dnaW5nS2V5Rm9yQWN0aXZpdHlTdGF0ZShwYWlyLmtleSk7
CisgICAgICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNM
b2dnaW5nS2V5czo6Y3B1VXNhZ2VLZXkoKSwgbG9nZ2luZ0tleSwgbG9nZ2luZ0tleUZvckNQVVVz
YWdlKHBhaXIua2V5LCBjcHVVc2FnZSksIGZhbHNlKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUGVy
Zm9ybWFuY2VMb2dnaW5nLCAiV2ViQ29udGVudCBwcm9jZXNzZXMgdXNlZCAlLjFmJSUgQ1BVIGlu
ICVzIHN0YXRlIiwgY3B1VXNhZ2UsIGxvZ2dpbmdLZXkudXRmOCgpLmRhdGEoKSk7CisgICAgfQor
CisgICAgbV9jcHVUaW1lSW5BY3Rpdml0eVN0YXRlLmNsZWFyKCk7CisgICAgbV9sYXN0Q1BVVGlt
ZSA9IGN1cnJlbnRDUFVUaW1lOworfQorCitXZWJQYWdlUHJveHkqIFBlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXI6OnBhZ2VGb3JMb2dnaW5nKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8m
IHdlYlByb2Nlc3MgOiBtX3Byb2Nlc3NQb29sLnByb2Nlc3NlcygpKSB7CisgICAgICAgIGlmICgh
d2ViUHJvY2Vzcy0+cGFnZUNvdW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
cmV0dXJuICp3ZWJQcm9jZXNzLT5wYWdlcygpLmJlZ2luKCk7CisgICAgfQorICAgIHJldHVybiBu
dWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRhYjZmNGI3NTU5ODU4YjE3ZTA5MGNmOWE0ZWFkNzlmNmY1Y2JmMTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlU2FtcGxlci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYlByb2Nlc3NQb29sOworCitjbGFzcyBQZXJBY3Rpdml0
eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQZXJBY3Rpdml0
eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKFdlYlByb2Nlc3NQb29sJik7CisgICAgflBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIoKTsKKworICAgIHZvaWQgcmVwb3J0V2ViQ29udGVudENQVVRp
bWUoaW50NjRfdCBjcHVUaW1lLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcp
OworCitwcml2YXRlOgorICAgIHZvaWQgbG9nZ2luZ1RpbWVyRmlyZWQoKTsKKyAgICBXZWJQYWdl
UHJveHkqIHBhZ2VGb3JMb2dnaW5nKCkgY29uc3Q7CisKKyAgICBXZWJQcm9jZXNzUG9vbCYgbV9w
cm9jZXNzUG9vbDsKKyAgICBSdW5Mb29wOjpUaW1lcjxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyPiBtX2xvZ2dpbmdUaW1lcjsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nLCBpbnQ2NF90LCBXVEY6OkludEhhc2g8V2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmc+PiBDUFVUaW1lSW5BY3Rpdml0eVN0
YXRlTWFwOworICAgIENQVVRpbWVJbkFjdGl2aXR5U3RhdGVNYXAgbV9jcHVUaW1lSW5BY3Rpdml0
eVN0YXRlOworICAgIGRvdWJsZSBtX2xhc3RDUFVUaW1lOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCBjMmExOGJiMWU3OTcxNmYzM2JiYTQ1MGY4NWZkNTM4NjQ3NTBjZjRmLi4zMjA1MWJmMTM0Nzg2
M2E0YmQxMjliNzRkYzAxMjNlOTkyZjY4M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiUGVy
QWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNp
b24uaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2Vy
LmgiCkBAIC0xNjgsNiArMTY5LDcgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQ
STo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgICwgbV93ZWJz
aXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSgp
ID8gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUobGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9uKSkucHRyKCkgOiBudWxscHRyKQogI2lmIFBMQVRG
T1JNKE1BQykKICAgICAsIG1faGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcj4oKnRoaXMp
KQorICAgICwgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKHN0ZDo6bWFrZV91bmlx
dWU8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAg
LCBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbihmYWxzZSkKICAgICAsIG1fcHJvY2Vz
c1Rlcm1pbmF0aW9uRW5hYmxlZCh0cnVlKQpAQCAtMTQzMSw0ICsxNDMzLDE1IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnVwZGF0ZUhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlTGltaXQo
KQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SGlkZGVu
UGFnZVRpbWVyVGhyb3R0bGluZ0luY3JlYXNlTGltaXQobGltaXRJbk1pbGxpc2Vjb25kcykpOwog
fQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJDb250ZW50Q1BVVGltZShpbnQ2NF90
IGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5U3RhdGUpCit7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGlmIChtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIpCisgICAgICAgIG1fcGVy
QWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci0+cmVwb3J0V2ViQ29udGVudENQVVRpbWUoY3B1
VGltZSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nPihh
Y3Rpdml0eVN0YXRlKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjcHVUaW1lKTsKKyAgICBV
TlVTRURfUEFSQU0oYWN0aXZpdHlTdGF0ZSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGQ5
Yjg2MDM4MmU0NzM3ZmIxMjYyNWJkNDQ2MGJjOTRmMmE2YzE4MDAuLmFlNTZmZmU3ZDZhM2YzMjA3
Y2E2YWI1ZWM3ZTk2MTVmODRiMTFkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCkBAIC04NSw2ICs4NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
RG93bmxvYWRQcm94eTsKIGNsYXNzIEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVy
OwogY2xhc3MgVUlHYW1lcGFkOworY2xhc3MgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxl
cjsKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uOwogY2xhc3MgV2ViQ29udGV4dFN1cHBsZW1l
bnQ7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CkBAIC0yNTksNiArMjYwLDggQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXJDYWNoZWRDcmVkZW50aWFscygpOwogICAgIHZvaWQgdGVybWluYXRlRGF0
YWJhc2VQcm9jZXNzKCk7CiAKKyAgICB2b2lkIHJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKGludDY0
X3QgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTdGF0ZSk7CisKICAgICB2b2lkIGFsbG93U3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDZXJ0aWZpY2F0ZUluZm8qLCBj
b25zdCBTdHJpbmcmIGhvc3QpOwogCiAgICAgV2ViUHJvY2Vzc1Byb3h5JiBjcmVhdGVOZXdXZWJQ
cm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7IC8vIFdpbGwgcmV0dXJuIGFuIGV4
aXN0aW5nIG9uZSBpZiBsaW1pdCBpcyBtZXQuCkBAIC01MzIsNiArNTM1LDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1fYXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbk5vdGlm
aWNhdGlvbk9ic2VydmVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hQZXJmb3JtYW5jZUdy
YXBoaWNzVXNhZ2VTYW1wbGVyPiBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVy
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPiBt
X3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI7CiAjZW5kaWYKIAogICAgIFN0cmluZyBt
X292ZXJyaWRlSWNvbkRhdGFiYXNlUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgppbmRleCA4ZWJhOGU1MzBjNWQ0ZDE1Zjk0
ZGFjZGFkYmIxNDE2NjYxZmU5NzNkLi44OTkwYzAwOTQxM2JjOWRmZWMxMzQwMDc2NjVlNGQyNzcw
MWI0NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLm1lc3NhZ2VzLmluCkBAIC0zNCw0ICszNCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQ
b29sIHsKICAgICAjIFBsdWctaW4gbWVzc2FnZXMuCiAgICAgdm9pZCBBZGRQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoKFN0cmluZyBwYWdlT3JpZ2luLCB1aW50MzJfdCBoYXNoLCBXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgUGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFj
dGlvbih1aW50MzJfdCBoYXNoLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorCisgICAg
UmVwb3J0V2ViQ29udGVudENQVVRpbWUoaW50NjRfdCBjcHVUaW1lLCB1aW50NjRfdCBhY3Rpdml0
eVN0YXRlKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGYzZWE1NmFkZDBkN2IwZTk4OWE1NDIwM2QzMTdkNWNjNjg5OTgxODQu
LjVkODhhOWRjZDZkNDcwNGEyNjdkNDk4YjhlMTdlYTExZTY2YjMzOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMzgsNiAr
MTIzOCw4IEBACiAJCTgzMUVFQkJFMUJEODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMxRUVCQkMxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAgKi87IH07CiAJCTgzMkFFMjUyMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzJBRTI1MDFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oICovOyB9OwogCQk4MzJBRTI1MzFCRTJFOENEMDBGQUFF
MTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJBRTI1MTFCRTJFOENEMDBGQUFF
MTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgKi87IH07CisJCTgz
MkVEMThCMUUyRkUxNTcwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkVE
MTg5MUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNw
cCAqLzsgfTsKKwkJODMyRUQxOEMxRTJGRTE1NzAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzMkVEMThBMUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyLmggKi87IH07CiAJCTgzNEIyNTBGMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3Jr
Q2FjaGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzRCMjUwRTFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5oICovOyB9OwogCQk4MzRCMjUxMjFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCAqLzsg
fTsKIAkJODM2MDM0OUYxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzYw
MzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLzsg
fTsKQEAgLTMzOTEsNiArMzM5Myw4IEBACiAJCTgzMUVFQkJDMUJEODVDNDMwMEJCNjRDMyAvKiBO
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODMyQUUyNTAxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzJBRTI1MTFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODMyRUQxODkxRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgzMkVEMThBMUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODM0QjI1MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUxMDFBODQyQzg3MDBDRkIx
NTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1FMaXRlRGF0
YWJhc2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyOTIsNiAr
NjI5Niw4IEBACiAJCQkJQkM2RURBQTUxMTEyNzFDNjAwRTc2NzhCIC8qIFBhZ2VDbGllbnQuaCAq
LywKIAkJCQkxQUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5jcHAgKi8s
CiAJCQkJMUFDNzUzN0ExODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCAqLywKKwkJ
CQk4MzJFRDE4OTFFMkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlci5jcHAgKi8sCisJCQkJODMyRUQxOEExRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCAqLywKIAkJCQkzNzcxNkE1OTE5NUI5MTA1MDBFRThCMUIg
LyogUHJvY2Vzc0Fzc2VydGlvbi5jcHAgKi8sCiAJCQkJODZGOTUzNjAxOEZGNEZENDAwMURCMkVG
IC8qIFByb2Nlc3NBc3NlcnRpb24uaCAqLywKIAkJCQk4NkU2N0EyMjE5MEY0MTE4MDAwMDRBQjcg
LyogUHJvY2Vzc1Rocm90dGxlci5jcHAgKi8sCkBAIC04MDgxLDYgKzgwODcsNyBAQAogCQkJCUNF
MUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcxNDY4ODM0ODAwOEIxRTgxIC8qIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTgz
MkVEMThDMUUyRkUxNTcwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZFNDM2NjE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxl
Z2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxQjUxRDU5MTdGRjAwREQ3QzY4IC8qIFVJ
R2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxQTkxRDU1MjkzNDAwREQ3QzY4IC8q
IFVJR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTkyNDUsNiArOTI1Miw3IEBA
CiAJCQkJOTNBODhCNDcxQkM4ODI5NzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NEM0E0ODIxQTVEMDJGQTAwOTYyM0I4IC8qIEFQSU5hdmlnYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGNjlGQTMxMTc2RDAxNDAwNDcxQTUyIC8qIEFQ
SU5hdmlnYXRpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgzMkVEMThCMUUyRkUxNTcw
MDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzc4RTFBM0QxODFFRDZGRjAwMzEwMDdBIC8qIEFQSU9iamVjdC5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDODU3RkI2MTJCODMwRTYwMEVERUIyRSAvKiBBUElPcGVuUGFu
ZWxQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmlu
ZGV4IDczMTRmNjFmODVjMDg3OTVkZDhhOWY3N2YyZjE2ZGQ0NDY4ZDMwY2YuLjQ5ODM0YzNhMzBl
YmY5MjE1ZTlmNTRlOTFkY2IyNGVhMTNmOTRjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJTZWFyY2hQb3B1cE1lbnUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CkBAIC0yNzQsNiArMjc1LDExIEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpydW5Nb2RhbCgpCiAgICAgbV9wYWdlLnJ1bk1vZGFsKCk7CiB9CiAK
K3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXBvcnRQcm9jZXNzQ1BVVGltZShpbnQ2NF90IGNwdVRp
bWUsIEFjdGl2aXR5U3RhdGVGb3JDUFVTYW1wbGluZyBhY3Rpdml0eVN0YXRlKQoreworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpSZXBv
cnRXZWJDb250ZW50Q1BVVGltZShjcHVUaW1lLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYWN0aXZp
dHlTdGF0ZSkpLCAwKTsKK30KKwogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldFRvb2xiYXJzVmlz
aWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSkKIHsKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTZXRUb29sYmFyc0FyZVZpc2libGUodG9vbGJhcnNBcmVWaXNpYmxl
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA2NGU4YjE0MjJhYTE1NGUyOWY4MmVmMmUyMTQx
MjkzMmE4ZjdjNWMyLi41YzlkNzczYTcyYzA2MDhjMDIwNjhhYzFkOWRkZjQ1ZDRhMGJkOWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTY3LDYgKzY3LDggQEAgcHJpdmF0ZToKICAgICAKICAg
ICBib29sIGNhblJ1bk1vZGFsKCkgZmluYWw7CiAgICAgdm9pZCBydW5Nb2RhbCgpIGZpbmFsOwor
CisgICAgdm9pZCByZXBvcnRQcm9jZXNzQ1BVVGltZShpbnQ2NF90LCBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlRm9yQ1BVU2FtcGxpbmcpIGZpbmFsOwogICAgIAogICAgIHZvaWQgc2V0VG9vbGJhcnNW
aXNpYmxlKGJvb2wpIGZpbmFsOwogICAgIGJvb2wgdG9vbGJhcnNWaXNpYmxlKCkgZmluYWw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>