<?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>226116</bug_id>
          
          <creation_ts>2021-05-21 15:36:09 -0700</creation_ts>
          <short_desc>Stop using holdLock() in JSC as it is not compatible with Clang thread safety analysis</short_desc>
          <delta_ts>2021-05-21 20:14:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226117</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226119</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226127</see_also>
          <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>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762621</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 15:36:09 -0700</bug_when>
    <thetext>Stop using holdLock() in JSC as it is not compatible with Clang thread safety analysis (CheckedLock). Use the Locker constructor instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762623</commentid>
    <comment_count>1</comment_count>
      <attachid>429353</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 15:38:29 -0700</bug_when>
    <thetext>Created attachment 429353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762644</commentid>
    <comment_count>2</comment_count>
      <attachid>429353</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-05-21 16:18:34 -0700</bug_when>
    <thetext>Comment on attachment 429353
Patch

r=me if EWS bots are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762743</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-21 20:13:26 -0700</bug_when>
    <thetext>Committed r277909 (238042@main): &lt;https://commits.webkit.org/238042@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429353.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762746</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-21 20:14:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/78340630&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429353</attachid>
            <date>2021-05-21 15:38:29 -0700</date>
            <delta_ts>2021-05-21 20:13:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226116-20210521153828.patch</filename>
            <type>text/plain</type>
            <size>140696</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YTcyNDhiMGNiNWQ0OGI4NjQ5ZDkzZTVkZjZiNGEyNDgwOTE4MmM1Li5lZGQzNmViZmFmZDFlNzFj
MTZiNzI5MWMzYWIzNmRiZDU5NWY3MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTAgQEAKKzIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBTdG9wIHVzaW5nIGhvbGRMb2NrKCkgaW4gSlNDIGFzIGl0IGlzIG5vdCBjb21w
YXRpYmxlIHdpdGggQ2xhbmcgdGhyZWFkIHNhZmV0eSBhbmFseXNpcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTE2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcCB1c2luZyBob2xkTG9jaygpIGlu
IEpTQyBhcyBpdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIENsYW5nIHRocmVhZCBzYWZldHkgYW5h
bHlzaXMKKyAgICAgICAgKFdURjo6Q2hlY2tlZExvY2spLiBVc2UgdGhlIExvY2tlciBjb25zdHJ1
Y3RvciBpbnN0ZWFkLgorCisgICAgICAgIEknbGwgZXZlbnR1YWxseSBnZXQgcmlkIG9mIHRoZSBo
b2xkTG9jaygpIGRlZmluaXRpb24gb25jZSBJIGhhdmUgbWFuYWdlZCB0byBnZXQgcmlkIG9mCisg
ICAgICAgIGFsbCBpdHMgdXNhZ2VzLgorCisgICAgICAgICogQVBJL0pTVmlydHVhbE1hY2hpbmUu
bW06CisgICAgICAgICgrW0pTVk1XcmFwcGVyQ2FjaGUgYWRkV3JhcHBlcjpmb3JKU0NvbnRleHRH
cm91cFJlZjpdKToKKyAgICAgICAgKCtbSlNWTVdyYXBwZXJDYWNoZSB3cmFwcGVyRm9ySlNDb250
ZXh0R3JvdXBSZWY6XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgYWRkRXh0ZXJuYWxS
ZW1lbWJlcmVkT2JqZWN0Ol0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGFkZE1hbmFn
ZWRSZWZlcmVuY2U6d2l0aE93bmVyOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIHJl
bW92ZU1hbmFnZWRSZWZlcmVuY2U6d2l0aE93bmVyOl0pOgorICAgICAgICAoc2NhbkV4dGVybmFs
T2JqZWN0R3JhcGgpOgorICAgICAgICAoc2NhbkV4dGVybmFsUmVtZW1iZXJlZFNldCk6CisgICAg
ICAgICogQVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwOgorICAgICAgICAoYWRkV3JhcHBl
cik6CisgICAgICAgIChyZW1vdmVXcmFwcGVyKToKKyAgICAgICAgKiBBUEkvdGVzdHMvRXhlY3V0
aW9uVGltZUxpbWl0VGVzdC5jcHA6CisgICAgICAgICh0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvUGVyZkxvZy5jcHA6CisgICAgICAgIChKU0M6OlBlcmZMb2c6
OlBlcmZMb2cpOgorICAgICAgICAoSlNDOjpQZXJmTG9nOjpsb2cpOgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1Yklu
Zm86OnZpc2l0QWdncmVnYXRlSW1wbCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZv
Ojp2aXNpdFdlYWtSZWZlcmVuY2VzKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6Y29uc2lkZXJDYWNoaW5n
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmNsZWFyQnVmZmVyZWRTdHJ1Y3R1
cmVzKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9ja0dlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICog
aGVhcC9CbG9ja0RpcmVjdG9yeS5jcHA6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojp+
QmxvY2tEaXJlY3RvcnkpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6cmVtb3ZlQmxv
Y2spOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c3RvcEFsbG9jYXRpbmdGb3JHb29k
KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnBhcmFsbGVsTm90RW1wdHlCbG9ja1Nv
dXJjZSk6CisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXQuY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2tTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja1NldDo6cmVtb3ZlKToK
KyAgICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrU2V0OjppdGVyYXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3Bw
OgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KToKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpsYXN0Q2hhbmNlVG9G
aW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkhlYXA6OnJ1bk5vdFJ1bm5pbmdQaGFzZSk6CisgICAg
ICAgIChKU0M6OkhlYXA6OnJ1bkVuZFBoYXNlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZmluaXNo
UmVsaW5xdWlzaGluZ0Nvbm4pOgorICAgICAgICAoSlNDOjp2aXNpdFNhbXBsaW5nUHJvZmlsZXIp
OgorICAgICAgICAoSlNDOjpIZWFwOjpzZXRCb251c1Zpc2l0b3JUYXNrKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6cnVuVGFza0luUGFyYWxsZWwpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90
QnVpbGRlci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6OmJ1aWxkU25h
cHNob3QpOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjphbmFseXplTm9kZSk6
CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6OmFuYWx5emVFZGdlKToKKyAgICAg
ICAgKEpTQzo6SGVhcFNuYXBzaG90QnVpbGRlcjo6YW5hbHl6ZVByb3BlcnR5TmFtZUVkZ2UpOgor
ICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjphbmFseXplVmFyaWFibGVOYW1lRWRn
ZSk6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6OmFuYWx5emVJbmRleEVkZ2Up
OgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjpzZXRPcGFxdWVSb290UmVhY2hh
YmlsaXR5UmVhc29uRm9yQ2VsbCk6CisgICAgICAgICogaGVhcC9Jc29BbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6dHJ5
QWxsb2NhdGVBbGlnbmVkTWVtb3J5KToKKyAgICAgICAgKEpTQzo6SXNvQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcjo6ZnJlZUFsaWduZWRNZW1vcnkpOgorICAgICAgICAqIGhlYXAvSXNvQ2VsbFNldC5j
cHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9j
a1NvdXJjZSk6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OmFkZFNsb3cpOgorICAgICAgICAo
SlNDOjpJc29DZWxsU2V0OjpkaWRSZW1vdmVCbG9jayk6CisgICAgICAgIChKU0M6Oklzb0NlbGxT
ZXQ6OnN3ZWVwVG9GcmVlTGlzdCk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwp
OgorICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpJc29TdWJz
cGFjZTo6SXNvU3Vic3BhY2UpOgorICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHA6
CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlUGVyVk06OmZvclZNKToKKyAgICAgICAgKiBoZWFw
L0xvY2FsQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OkxvY2Fs
QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6On5Mb2NhbEFsbG9jYXRv
cik6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlND
OjpNYWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAgICAgKEpT
Qzo6TWFjaGluZVRocmVhZHM6OmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKToKKyAgICAgICAgKiBo
ZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
c3RvcEFsbG9jYXRpbmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1
bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xv
dyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlz
dCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpub3RlTWFya2VkU2xvdyk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmR1bXBTdGF0ZSk6CisgICAgICAgICogaGVhcC9N
YXJrZWRCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
aXNMaXZlKToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50LmNwcDoKKyAgICAgICAg
KEpTQzo6TWFya2luZ0NvbnN0cmFpbnQ6OmRvUGFyYWxsZWxXb3JrKToKKyAgICAgICAgKiBoZWFw
L01hcmtpbmdDb25zdHJhaW50U29sdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2luZ0NvbnN0
cmFpbnRTb2x2ZXI6OmFkZFBhcmFsbGVsVGFzayk6CisgICAgICAgIChKU0M6Ok1hcmtpbmdDb25z
dHJhaW50U29sdmVyOjpydW5FeGVjdXRpb25UaHJlYWQpOgorICAgICAgICAqIGhlYXAvUGFyYWxs
ZWxTb3VyY2VBZGFwdGVyLmg6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5jcHA6CisgICAg
ICAgIChKU0M6OlNsb3RWaXNpdG9yOjp1cGRhdGVNdXRhdG9ySXNTdG9wcGVkKToKKyAgICAgICAg
KEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnBl
cmZvcm1JbmNyZW1lbnRPZkRyYWluaW5nKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRy
YWluRnJvbVNoYXJlZCk6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpkcmFpbkluUGFyYWxs
ZWxQYXNzaXZlbHkpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6d2FpdEZvclRlcm1pbmF0
aW9uKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRvbmF0ZUFsbCk6CisgICAgICAgIChK
U0M6OlNsb3RWaXNpdG9yOjpkaWRSYWNlKToKKyAgICAgICAgKiBoZWFwL1N1YnNwYWNlLmNwcDoK
KyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OnBhcmFsbGVsRGlyZWN0b3J5U291cmNlKToKKyAgICAg
ICAgKiBoZWFwL1N1YnNwYWNlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdWJzcGFjZTo6Zm9y
RWFjaE1hcmtlZENlbGxJblBhcmFsbGVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoK
KyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoV29ya2VyOjpXb3JrZXIpOgorICAgICAgICAo
V29ya2VyOjp+V29ya2VyKToKKyAgICAgICAgKFdvcmtlcjo6ZGVxdWV1ZSk6CisgICAgICAgIChX
b3JrZXJzOjpicm9hZGNhc3QpOgorICAgICAgICAoV29ya2Vyczo6cmVwb3J0KToKKyAgICAgICAg
KFdvcmtlcnM6OnRyeUdldFJlcG9ydCk6CisgICAgICAgIChXb3JrZXJzOjpnZXRSZXBvcnQpOgor
ICAgICAgICAoSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0Rl
ZmVycmVkV29ya1RpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRXb3JrVGltZXI6OmRv
V29yayk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RXJyb3JJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXZh
bEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6dmlzaXRDaGls
ZHJlbkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6RmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlOjpnZXRQcmVkaWN0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRo
QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFy
cmF5U3RvcmFnZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpkZXRhY2gpOgorICAgICAgICAoSlNDOjpK
U0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRmluYWxpemF0aW9uUmVnaXN0cnku
Y3BwOgorICAgICAgICAoSlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ojp2aXNpdENoaWxkcmVu
SW1wbCk6CisgICAgICAgIChKU0M6OkpTRmluYWxpemF0aW9uUmVnaXN0cnk6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6dGFr
ZURlYWRIb2xkaW5nc1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNGaW5hbGl6YXRpb25SZWdpc3Ry
eTo6cmVnaXN0ZXJUYXJnZXQpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyKToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmlzaXRCdXR0ZXJmbHlJ
bXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZSk6CisgICAgICAgIChKU0M6
OkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKEpTQzo6SlNS
dW5Mb29wVGltZXI6Ok1hbmFnZXI6OnVucmVnaXN0ZXJWTSk6CisgICAgICAgIChKU0M6OkpTUnVu
TG9vcFRpbWVyOjpNYW5hZ2VyOjpzY2hlZHVsZVRpbWVyKToKKyAgICAgICAgKEpTQzo6SlNSdW5M
b29wVGltZXI6Ok1hbmFnZXI6OmNhbmNlbFRpbWVyKToKKyAgICAgICAgKEpTQzo6SlNSdW5Mb29w
VGltZXI6Ok1hbmFnZXI6OnRpbWVVbnRpbEZpcmUpOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BU
aW1lcjo6dGltZXJEaWRGaXJlKToKKyAgICAgICAgKEpTQzo6SlNSdW5Mb29wVGltZXI6OnNldFRp
bWVVbnRpbEZpcmUpOgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6Y2FuY2VsVGltZXIp
OgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6YWRkVGltZXJTZXROb3RpZmljYXRpb24p
OgorICAgICAgICAoSlNDOjpKU1J1bkxvb3BUaW1lcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Q6OmZpbmRWYXJpYWJsZUluZGV4
KToKKyAgICAgICAgKEpTQzo6SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdDo6YWRkVmFyaWFibGVz
KToKKyAgICAgICAgKEpTQzo6SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdDo6dmlzaXRDaGlsZHJl
bkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwp
OgorICAgICAgICAqIHJ1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50
LmNwcDoKKyAgICAgICAgKEpTQzo6TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50
OjpnZXRQcmVkaWN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNw
cDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKToK
KyAgICAgICAgKiBydW50aW1lL1JhbmRvbWl6aW5nRnV6emVyQWdlbnQuY3BwOgorICAgICAgICAo
SlNDOjpSYW5kb21pemluZ0Z1enplckFnZW50OjpnZXRQcmVkaWN0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL1JlZ0V4cC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZSk6CisgICAg
ICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpSZWdF
eHA6OmNvbXBpbGVNYXRjaE9ubHkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmRlbGV0ZUNvZGUp
OgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6
OlNhbXBsaW5nUHJvZmlsZXI6OnRha2VTYW1wbGUpOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1By
b2ZpbGVyOjpzdGFja1RyYWNlc0FzSlNPTik6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmls
ZXI6OnJlcG9ydFRvcEZ1bmN0aW9ucyk6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6
OnJlcG9ydFRvcEJ5dGVjb2Rlcyk6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6Y3JlYXRlVGVtcGxhdGVPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA6CisgICAgICAg
IChKU0M6OlNwYXJzZUFycmF5VmFsdWVNYXA6OmFkZCk6CisgICAgICAgIChKU0M6OlNwYXJzZUFy
cmF5VmFsdWVNYXA6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5VmFsdWVNYXA6
OmdldENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5VmFsdWVNYXA6OnZp
c2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbik6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uU2xvdyk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6c2V0QnJhbmRUcmFuc2l0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVy
ZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2FjaGU6OmNyZWF0ZUVtcHR5U3Ry
dWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2FjaGU6OmVtcHR5T2JqZWN0U3RydWN0
dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6d2FpdEZvclZNRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAg
ICAgKEpTQzo6Vk06OmdhdGhlclNjcmF0Y2hCdWZmZXJSb290cyk6CisgICAgICAgIChKU0M6OlZN
OjpzY3JhdGNoQnVmZmVyRm9yU2l6ZSk6CisgICAgICAgIChKU0M6OlZNOjpjbGVhclNjcmF0Y2hC
dWZmZXJzKToKKyAgICAgICAgKEpTQzo6Vk06OmFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcik6
CisgICAgICAgIChKU0M6OlZNOjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAg
ICAoSlNDOjpWTTo6cmVtb3ZlTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNVHJhcHMuY3BwOgorICAgICAgICAoSlNDOjpWTVRyYXBzOjp0cnlJbnN0YWxsVHJh
cEJyZWFrcG9pbnRzKToKKyAgICAgICAgKEpTQzo6Vk1UcmFwczo6aW52YWxpZGF0ZUNvZGVCbG9j
a3NPblN0YWNrKToKKyAgICAgICAgKEpTQzo6Vk1UcmFwczo6d2lsbERlc3Ryb3lWTSk6CisgICAg
ICAgIChKU0M6OlZNVHJhcHM6OmZpcmVUcmFwKToKKyAgICAgICAgKEpTQzo6Vk1UcmFwczo6aGFu
ZGxlVHJhcHMpOgorICAgICAgICAoSlNDOjpWTVRyYXBzOjp0YWtlVG9wUHJpb3JpdHlUcmFwKToK
KyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBJbXBsLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha01h
cEltcGw8QnVja2V0VHlwZT46OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpOgorICAgICAgICAqIHJ1
bnRpbWUvV2Vha01hcEltcGwuaDoKKyAgICAgICAgKEpTQzo6V2Vha01hcEltcGw6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBJbXBsSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpXZWFrTWFwSW1wbDxXZWFrTWFwQnVja2V0Pjo6cmVoYXNoKToKKyAgICAgICAgKiBy
dW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcDoKKyAgICAgICAg
KEpTQzo6V2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6OmdldFByZWRpY3Rpb24p
OgorICAgICAgICAqIHRvb2xzL0NvbXBpbGVyVGltaW5nU2NvcGUuY3BwOgorICAgICAgICAqIHRv
b2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25PdmVycmlk
ZXM6OkZ1bmN0aW9uT3ZlcnJpZGVzKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25PdmVycmlkZXM6
OnJlaW5zdGFsbE92ZXJyaWRlcyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjpp
bml0aWFsaXplT3ZlcnJpZGVGb3IpOgorICAgICAgICAqIHRvb2xzL0ludGVncml0eS5jcHA6Cisg
ICAgICAgIChKU0M6OkludGVncml0eTo6UmFuZG9tOjpyZWxvYWRBbmRDaGVja1Nob3VsZEF1ZGl0
U2xvdyk6CisgICAgICAgICogdG9vbHMvVk1JbnNwZWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpW
TUluc3BlY3Rvcjo6YWRkKToKKyAgICAgICAgKEpTQzo6Vk1JbnNwZWN0b3I6OnJlbW92ZSk6Cisg
ICAgICAgIChKU0M6OlZNSW5zcGVjdG9yOjpjb2RlQmxvY2tGb3JNYWNoaW5lUEMpOgorICAgICAg
ICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjp3
b3JrKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiB3YXNtL1dhc21DYWxsZWVSZWdpc3RyeS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpD
YWxsZWVSZWdpc3RyeTo6cmVnaXN0ZXJDYWxsZWUpOgorICAgICAgICAoSlNDOjpXYXNtOjpDYWxs
ZWVSZWdpc3RyeTo6dW5yZWdpc3RlckNhbGxlZSk6CisgICAgICAgICogd2FzbS9XYXNtQ29kZUJs
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAg
ICAgICAoSlNDOjpXYXNtOjpDb2RlQmxvY2s6OndhaXRVbnRpbEZpbmlzaGVkKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6Q29kZUJsb2NrOjpjb21waWxlQXN5bmMpOgorICAgICAgICAqIHdhc20vV2Fz
bUNvbnRleHQuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpDb250ZXh0OjpzY3JhdGNoQnVmZmVy
Rm9yU2l6ZSk6CisgICAgICAgICogd2FzbS9XYXNtRW50cnlQbGFuLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6RW50cnlQbGFuOjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6RW50cnlQbGFuOjpwcmVwYXJlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RW50cnlQ
bGFuOjpjb21waWxlRnVuY3Rpb25zKToKKyAgICAgICAgKiB3YXNtL1dhc21FbnRyeVBsYW4uaDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6RW50cnlQbGFuOjp0cnlSZXNlcnZlQ2FwYWNpdHkpOgorICAg
ICAgICAqIHdhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OnRyYXBIYW5kbGVyKToKKyAgICAgICAgKiB3YXNtL1dhc21JbnN0YW5jZS5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpzZXRGdW5jdGlvbldyYXBwZXIpOgorICAgICAgICAq
IHdhc20vV2FzbUxMSW50UGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50UGxhbjo6
Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRQbGFuOjpjb21wbGV0
ZUluU3RyZWFtaW5nKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRQbGFuOjpkaWRDb21waWxl
RnVuY3Rpb25JblN0cmVhbWluZyk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50UGxhbjo6ZGlk
RmFpbEluU3RyZWFtaW5nKToKKyAgICAgICAgKiB3YXNtL1dhc21NYWNoaW5lVGhyZWFkcy5jcHA6
CisgICAgICAgIChKU0M6Oldhc206OnJlc2V0SW5zdHJ1Y3Rpb25DYWNoZU9uQWxsVGhyZWFkcyk6
CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TWVt
b3J5Ojpncm93U2hhcmVkKToKKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGUuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpNb2R1bGU6OmdldE9yQ3JlYXRlQ29kZUJsb2NrKToKKyAgICAgICAgKiB3
YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdG
b3JPU1JFbnRyeVBsYW46OndvcmspOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21P
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6dHJpZ2dlck9NR1JlcGxhY2VtZW50
Q29tcGlsZSk6CisgICAgICAgIChKU0M6Oldhc206OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6
CisgICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpX
YXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KToKKyAgICAgICAgKiB3YXNtL1dhc21TbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q29tcGlsZUFuZFNldEhldXJpc3Rp
Y3MpOgorICAgICAgICAoSlNDOjpMTEludDo6V0FTTV9TTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogd2FzbS9XYXNtU3RyZWFtaW5nQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpT
dHJlYW1pbmdDb21waWxlcjo6ZGlkQ29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U3RyZWFtaW5nQ29tcGlsZXI6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U3Ry
ZWFtaW5nQ29tcGlsZXI6OmZhaWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpTdHJlYW1pbmdDb21w
aWxlcjo6Y2FuY2VsKToKKyAgICAgICAgKiB3YXNtL1dhc21TdHJlYW1pbmdQbGFuLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGxhbjo6d29yayk6CisgICAgICAgICogd2FzbS9X
YXNtVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpUYWJsZTo6Z3Jvdyk6CisgICAgICAg
IChKU0M6Oldhc206OlRhYmxlOjp2aXNpdEFnZ3JlZ2F0ZUltcGwpOgorICAgICAgICAqIHdhc20v
V2FzbVRodW5rcy5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlRodW5rczo6c3R1Yik6CisgICAg
ICAgIChKU0M6Oldhc206OlRodW5rczo6ZXhpc3RpbmdTdHViKToKKyAgICAgICAgKiB3YXNtL1dh
c21Xb3JrbGlzdC5jcHA6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW5J
bXBsKToKKwogMjAyMS0wNS0yMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgSW50cm9kdWNpbmcgSklUVGh1bmtzOjpwcmVpbml0aWFsaXplQ1RJVGh1bmtzKCkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KaW5kZXggZTEz
N2QwODk0NDVmOTE2MGYzZTRhMzYxZDY2OTVkMjcyNmNiMzViYy4uYzIwOTdjMmE4OTYwNTE2ODRk
OWNlZDlkY2NlNjg5YjQxY2ExNjZhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWaXJ0dWFsTWFjaGluZS5tbQpAQCAtNjksMTMgKzY5LDEzIEBAIEBpbXBsZW1lbnRhdGlvbiBK
U1ZNV3JhcHBlckNhY2hlCiAKICsgKHZvaWQpYWRkV3JhcHBlcjooSlNWaXJ0dWFsTWFjaGluZSAq
KXdyYXBwZXIgZm9ySlNDb250ZXh0R3JvdXBSZWY6KEpTQ29udGV4dEdyb3VwUmVmKWdyb3VwCiB7
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3cmFwcGVyQ2FjaGVNdXRleCk7CisgICAgTG9j
a2VyIGxvY2tlciB7IHdyYXBwZXJDYWNoZU11dGV4IH07CiAgICAgTlNNYXBJbnNlcnQod3JhcHBl
ckNhY2hlKCksIGdyb3VwLCAoX19icmlkZ2Ugdm9pZCopd3JhcHBlcik7CiB9CiAKICsgKEpTVmly
dHVhbE1hY2hpbmUgKil3cmFwcGVyRm9ySlNDb250ZXh0R3JvdXBSZWY6KEpTQ29udGV4dEdyb3Vw
UmVmKWdyb3VwCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3cmFwcGVyQ2FjaGVNdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdyYXBwZXJDYWNoZU11dGV4IH07CiAgICAgcmV0dXJu
IChfX2JyaWRnZSBKU1ZpcnR1YWxNYWNoaW5lICopTlNNYXBHZXQod3JhcHBlckNhY2hlKCksIGdy
b3VwKTsKIH0KIApAQCAtMTU2LDcgKzE1Niw3IEBAIC0gKGJvb2wpaXNPbGRFeHRlcm5hbE9iamVj
dDooaWQpb2JqZWN0CiAKIC0gKHZvaWQpYWRkRXh0ZXJuYWxSZW1lbWJlcmVkT2JqZWN0OihpZClv
YmplY3QKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZXh0ZXJuYWxEYXRhTXV0ZXgp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX2V4dGVybmFsRGF0YU11dGV4IH07CiAgICAgQVNTRVJU
KFtzZWxmIGlzT2xkRXh0ZXJuYWxPYmplY3Q6b2JqZWN0XSk7CiAgICAgW21fZXh0ZXJuYWxSZW1l
bWJlcmVkU2V0IHNldE9iamVjdDpAWUVTIGZvcktleTpvYmplY3RdOwogfQpAQCAtMTc2LDcgKzE3
Niw3IEBAIC0gKHZvaWQpYWRkTWFuYWdlZFJlZmVyZW5jZTooaWQpb2JqZWN0IHdpdGhPd25lcjoo
aWQpb3duZXIKICAgICBpZiAoW3NlbGYgaXNPbGRFeHRlcm5hbE9iamVjdDpvd25lcl0gJiYgIVtz
ZWxmIGlzT2xkRXh0ZXJuYWxPYmplY3Q6b2JqZWN0XSkKICAgICAgICAgW3NlbGYgYWRkRXh0ZXJu
YWxSZW1lbWJlcmVkT2JqZWN0Om93bmVyXTsKICAKLSAgICBhdXRvIGV4dGVybmFsRGF0YU11dGV4
TG9ja2VyID0gaG9sZExvY2sobV9leHRlcm5hbERhdGFNdXRleCk7CisgICAgTG9ja2VyIGV4dGVy
bmFsRGF0YU11dGV4TG9ja2VyIHsgbV9leHRlcm5hbERhdGFNdXRleCB9OwogICAgIFJldGFpblB0
cjxOU01hcFRhYmxlPiBvd25lZE9iamVjdHMgPSBbbV9leHRlcm5hbE9iamVjdEdyYXBoIG9iamVj
dEZvcktleTpvd25lcl07CiAgICAgaWYgKCFvd25lZE9iamVjdHMpIHsKICAgICAgICAgTlNQb2lu
dGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFrSURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vh
a01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OwpAQCAtMjAzLDcg
KzIwMyw3IEBAIC0gKHZvaWQpcmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTooaWQpb2JqZWN0IHdpdGhP
d25lcjooaWQpb3duZXIKICAgICAKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9KUyht
X2dyb3VwKSk7CiAgICAgCi0gICAgYXV0byBleHRlcm5hbERhdGFNdXRleExvY2tlciA9IGhvbGRM
b2NrKG1fZXh0ZXJuYWxEYXRhTXV0ZXgpOworICAgIExvY2tlciBleHRlcm5hbERhdGFNdXRleExv
Y2tlciB7IG1fZXh0ZXJuYWxEYXRhTXV0ZXggfTsKICAgICBOU01hcFRhYmxlICpvd25lZE9iamVj
dHMgPSBbbV9leHRlcm5hbE9iamVjdEdyYXBoIG9iamVjdEZvcktleTpvd25lcl07CiAgICAgaWYg
KCFvd25lZE9iamVjdHMpCiAgICAgICAgIHJldHVybjsKQEAgLTM0MSw3ICszNDEsNyBAQCBzdGF0
aWMgdm9pZCBzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaChKU0M6OlZNJiB2bSwgSlNDOjpBYnN0cmFj
dFNsb3RWaXNpdG9yJiB2aXNpdAogICAgICAgICAgICAgaWYgKGxvY2tBY3F1aXJlZCkKICAgICAg
ICAgICAgICAgICBhcHBlbmRPd25lZE9iamVjdHMoKTsKICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZXh0ZXJuYWxEYXRhTXV0ZXgpOwor
ICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBleHRlcm5hbERhdGFNdXRleCB9OwogICAg
ICAgICAgICAgICAgIGFwcGVuZE93bmVkT2JqZWN0cygpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KEpT
Qzo6Vk0mIHZtLCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgIGlm
ICghdmlydHVhbE1hY2hpbmUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIExvY2smIGV4
dGVybmFsRGF0YU11dGV4ID0gW3ZpcnR1YWxNYWNoaW5lIGV4dGVybmFsRGF0YU11dGV4XTsKLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhleHRlcm5hbERhdGFNdXRleCk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBleHRlcm5hbERhdGFNdXRleCB9OwogICAgICAgICBOU01hcFRhYmxl
ICpleHRlcm5hbE9iamVjdEdyYXBoID0gW3ZpcnR1YWxNYWNoaW5lIGV4dGVybmFsT2JqZWN0R3Jh
cGhdOwogICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBbdmlydHVh
bE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XTsKICAgICAgICAgZm9yIChpZCBrZXkgaW4g
ZXh0ZXJuYWxSZW1lbWJlcmVkU2V0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDVmlydHVhbE1hY2hpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQ1ZpcnR1YWxNYWNoaW5lLmNwcAppbmRleCBlZGM1ZjVkMDdmZmZjN2Y0MjBl
MjZhZjljYmQ1NDRmZGM0OWEzNzI2Li40MzFhNzEwZGUzN2NjMWYwM2U5NzY5OWYxYjJiMWQ1MDIy
MzRjYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmly
dHVhbE1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NW
aXJ0dWFsTWFjaGluZS5jcHAKQEAgLTYyLDE0ICs2MiwxNCBAQCBzdGF0aWMgSGFzaE1hcDxKU0Nv
bnRleHRHcm91cFJlZiwgSlNDVmlydHVhbE1hY2hpbmUqPiYgd3JhcHBlck1hcCgpCiAKIHN0YXRp
YyB2b2lkIGFkZFdyYXBwZXIoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ1ZpcnR1YWxNYWNo
aW5lKiB2bSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdyYXBwZXJDYWNoZU11dGV4
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgd3JhcHBlckNhY2hlTXV0ZXggfTsKICAgICBBU1NFUlQo
IXdyYXBwZXJNYXAoKS5jb250YWlucyhncm91cCkpOwogICAgIHdyYXBwZXJNYXAoKS5zZXQoZ3Jv
dXAsIHZtKTsKIH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlV3JhcHBlcihKU0NvbnRleHRHcm91cFJl
ZiBncm91cCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdyYXBwZXJDYWNoZU11dGV4
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgd3JhcHBlckNhY2hlTXV0ZXggfTsKICAgICBBU1NFUlQo
d3JhcHBlck1hcCgpLmNvbnRhaW5zKGdyb3VwKSk7CiAgICAgd3JhcHBlck1hcCgpLnJlbW92ZShn
cm91cCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4
ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcAppbmRleCAwNzIxY2FjMmVjZTU4NzBkNzc2Yzcx
ODY1YzY0YzQyOGM4YTY3ZjYxLi44ZDAxOTc5ZGQwZTU1YTlkYWFlOGVmYmJmNmE4ZDgwZDc3NjAx
YTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlv
blRpbWVMaW1pdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
RXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAKQEAgLTUwNSwxMiArNTA1LDEyIEBAIGludCB0ZXN0
RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgICAgICAgICBzdGFydFRpbWVSZWYgPSBDUFVU
aW1lOjpmb3JDdXJyZW50VGhyZWFkKCk7CiAgICAgICAgICAgICAgICAgSlNFdmFsdWF0ZVNjcmlw
dChjb250ZXh0UmVmLCBzY3JpcHRSZWYsIG51bGxwdHIsIG51bGxwdHIsIDEsICZleGNlcHRpb25S
ZWYpOwogICAgICAgICAgICAgICAgIGVuZFRpbWVSZWYgPSBDUFVUaW1lOjpmb3JDdXJyZW50VGhy
ZWFkKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBXVEY6OmhvbGRMb2NrKHN5bmNM
b2NrUmVmKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc3luY0xvY2tSZWYgfTsK
ICAgICAgICAgICAgICAgICBkaWRTeW5jaHJvbml6ZVJlZiA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgc3luY2hyb25pemVSZWYubm90aWZ5QWxsKCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzeW5jTG9jayk7CisgICAgICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgc3luY0xvY2sgfTsKICAgICAgICAgICAgIHN5bmNocm9uaXplLndhaXQoc3lu
Y0xvY2ssIFsmXSB7IHJldHVybiBkaWRTeW5jaHJvbml6ZTsgfSk7CiAKICAgICAgICAgICAgIGlm
ICgoKGVuZFRpbWUgLSBzdGFydFRpbWUpIDwgdGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmly
ZWQpICYmIGRpc3BhdGNoVGVybWluYXRlQ2FsbGJhY2tDYWxsZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1BlcmZMb2cuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9QZXJmTG9nLmNwcAppbmRleCBmNzA3MTJmYzI2YjE3ZGFhNTc2ZDk4
Njc5N2NhZGRiYzcxYjU1OGIwLi4wZmQ4YmQyOWE3NzY3YjdlNjM0YzNiYWM4YTYwMmE5Yjg1MDc0
NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1BlcmZMb2cu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUGVyZkxvZy5jcHAKQEAg
LTE2NCw3ICsxNjQsNyBAQCBQZXJmTG9nOjpQZXJmTG9nKCkKICAgICBoZWFkZXIudGltZXN0YW1w
ID0gZ2VuZXJhdGVUaW1lc3RhbXAoKTsKICAgICBoZWFkZXIucGlkID0gZ2V0Q3VycmVudFByb2Nl
c3NJRCgpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICB3cml0ZShsb2NrZXIsICZoZWFkZXIsIHNpemVvZihK
SVREdW1wOjpGaWxlSGVhZGVyKSk7CiAgICAgZmx1c2gobG9ja2VyKTsKIH0KQEAgLTE4OCw3ICsx
ODgsNyBAQCB2b2lkIFBlcmZMb2c6OmxvZyhDU3RyaW5nJiYgbmFtZSwgY29uc3QgdWludDhfdCog
ZXhlY3V0YWJsZUFkZHJlc3MsIHNpemVfdCBzaXplKQogICAgIH0KIAogICAgIFBlcmZMb2cmIGxv
Z2dlciA9IHNpbmdsZXRvbigpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9nZ2VyLm1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGxvZ2dlci5tX2xvY2sgfTsKIAogICAgIEpJVER1
bXA6OkNvZGVMb2FkUmVjb3JkIHJlY29yZDsKICAgICByZWNvcmQuaGVhZGVyLnRpbWVzdGFtcCA9
IGdlbmVyYXRlVGltZXN0YW1wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCBhZmQ4MzliZWI0MTZiOWJhZGQ2Njhk
ZGJhZDc1MTM2ZDBhMGRkNzE5Li5jOGU2YmM2M2EzNmEzOWI4NDU4YjkwMGNiMmE1MmVmNGYxNTEx
MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNp
dG9yPgogdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6dmlzaXRBZ2dyZWdhdGVJbXBsKFZpc2l0b3Im
IHZpc2l0b3IpCiB7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYnVm
ZmVyZWRTdHJ1Y3R1cmVzTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlcmVk
U3RydWN0dXJlc0xvY2sgfTsKICAgICAgICAgZm9yIChhdXRvJiBidWZmZXJlZFN0cnVjdHVyZSA6
IG1fYnVmZmVyZWRTdHJ1Y3R1cmVzKQogICAgICAgICAgICAgYnVmZmVyZWRTdHJ1Y3R1cmUuYnlW
YWxJZCgpLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogICAgIH0KQEAgLTMyOSw3ICszMjksNyBA
QCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjp2aXNpdFdlYWtSZWZlcmVuY2VzKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlcgogewogICAgIFZNJiB2bSA9IGNvZGVCbG9jay0+dm0o
KTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9idWZmZXJlZFN0cnVj
dHVyZXNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyZWRTdHJ1Y3R1cmVz
TG9jayB9OwogICAgICAgICBtX2J1ZmZlcmVkU3RydWN0dXJlcy5yZW1vdmVJZigKICAgICAgICAg
ICAgIFsmXSAoYXV0byYgZW50cnkpIC0+IGJvb2wgewogICAgICAgICAgICAgICAgIHJldHVybiAh
dm0uaGVhcC5pc01hcmtlZChlbnRyeS5zdHJ1Y3R1cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IDI0NjE5YmFkNzUy
NjBkYzkyYzRhNGQ4OTk3NjZmMjNjOThjZmM2NjUuLmY1NzdkMjEyM2YzYjYwYjE4MmM0OWZhNzg1
YjBmZGJhNTFlYjY5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC0yNDksNyArMjQ5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIC8vIHRoZSBwcm90b3R5cGUgaXMgZml4ZWQuCiAgICAgICAgICAgICBib29sIGlzTmV3
bHlBZGRlZCA9IGZhbHNlOwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9idWZmZXJlZFN0cnVjdHVyZXNMb2NrKTsKKyAgICAgICAgICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJlZFN0cnVjdHVyZXNMb2NrIH07CiAgICAgICAgICAg
ICAgICAgaXNOZXdseUFkZGVkID0gbV9idWZmZXJlZFN0cnVjdHVyZXMuYWRkKHsgc3RydWN0dXJl
LCBpbXBsIH0pLmlzTmV3RW50cnk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXNO
ZXdseUFkZGVkKQpAQCAtMjY0LDcgKzI2NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFy
QnVmZmVyZWRTdHJ1Y3R1cmVzKCkKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9idWZmZXJlZFN0cnVjdHVyZXNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
YnVmZmVyZWRTdHJ1Y3R1cmVzTG9jayB9OwogICAgICAgICBtX2J1ZmZlcmVkU3RydWN0dXJlcy5j
bGVhcigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggNmExNjJiZmQzMTE0M2U3MjhlNjUzZTdiNWMw
ZTQyMmJkZGM5YjcxMi4uNGQyMmVjMmFjNWQ3YWE5ZDdiZDU3NmU5YjA0OGZjMGRhNmVlMDhiNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwCkBAIC02NiwxMiArNjYsMTIgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2Vk
Q29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAg
ICBBU1NFUlQobV9jb2RlVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpKTsK
ICAgICBBU1NFUlQobV9kaWRPcHRpbWl6ZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVHJpU3Rh
dGU6OkluZGV0ZXJtaW5hdGUpKTsKICAgICBpZiAoaW5mby5uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcigpID09IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZZXMpIHsKLSAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IGNlbGxMb2NrKCkgfTsKICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeShsb2NrZXIp
OwogICAgICAgICBtX3JhcmVEYXRhLT5tX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpZZXMpOwogICAg
IH0KICAgICBpZiAoaW5mby5wcml2YXRlQnJhbmRSZXF1aXJlbWVudCgpID09IFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50OjpOZWVkZWQpIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhj
ZWxsTG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGNlbGxMb2NrKCkgfTsKICAgICAg
ICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeShsb2NrZXIpOwogICAgICAgICBtX3JhcmVEYXRh
LT5tX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50OjpOZWVkZWQpOwogICAgIH0KQEAgLTgzLDcgKzgzLDcgQEAgdm9p
ZCBVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNp
dG9yJiB2aXNpdG9yKQogICAgIFVubGlua2VkQ29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0
PFVubGlua2VkQ29kZUJsb2NrKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlzT2JqZWN0LT5jZWxs
TG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVjdC0+Y2VsbExvY2soKSB9Owog
ICAgIGlmICh2aXNpdG9yLmlzRmlyc3RWaXNpdCgpKQogICAgICAgICB0aGlzT2JqZWN0LT5tX2Fn
ZSA9IHN0ZDo6bWluPHVuc2lnbmVkPihzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGhpc09iamVjdC0+
bV9hZ2UpICsgMSwgbWF4QWdlKTsKICAgICBmb3IgKGF1dG8mIGJhcnJpZXIgOiB0aGlzT2JqZWN0
LT5tX2Z1bmN0aW9uRGVjbHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmNwcAppbmRleCBiM2ZlNjc2
ZWQwNzdlNjlmYTIwZjg3NDUzNDkzYTRlZGE3MGVkNzNjLi41MWE4NjUyYmYwNTFhNDg3OTA0Mzc5
YmM0ZjhlMTgzZGY4MWRlNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAKQEAgLTExNyw3
ICsxMTcsNyBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOjpmaW5hbGl6ZShzdGQ6
OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IGlucwogewogICAgIEFTU0VSVChpbnN0cnVj
dGlvbnMpOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2NvZGVCbG9j
ay0+Y2VsbExvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NvZGVCbG9jay0+Y2Vs
bExvY2soKSB9OwogICAgICAgICBtX2NvZGVCbG9jay0+bV9pbnN0cnVjdGlvbnMgPSBXVEZNb3Zl
KGluc3RydWN0aW9ucyk7CiAgICAgICAgIG1fY29kZUJsb2NrLT5tX21ldGFkYXRhLT5maW5hbGl6
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZmE5ZDlmYTBiYmZiMDZkYjZkNjIwMTI3NWNm
YzY2MzQxMTA5Yjk5Ni4uODdmNDY2NmZkMmEzMjllMDQ1MzM5YzcyZGEwYjJhMjM5NzEyNTBjYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMjI1NSw3ICsyMjU1LDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xv
YmJlckxpbWkKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKICAgICAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXJyYXlTdG9yYWdlJ3MgQnV0
dGVyZmx5IGNhbiBiZSBoYWxmLWJyb2tlbiBzdGF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2soYXJyYXktPmNlbGxMb2NrKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGFycmF5LT5jZWxsTG9jaygpIH07CiAKICAgICAg
ICAgICAgICAgICAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBhcnJheS0+YnV0dGVyZmx5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKaW5kZXggMWVmNDk2
ZDAyM2U5NWM1NWU3OWM0MmIyMzhhODhlMjU0ODhiNTBmMy4uYjFlOTdmYzY1YTRlY2MwZWMzMjVk
NzgzOTQ0MTZiMjlkODVlNmI2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQmxvY2tEaXJlY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Js
b2NrRGlyZWN0b3J5LmNwcApAQCAtNDUsNyArNDUsNyBAQCBCbG9ja0RpcmVjdG9yeTo6QmxvY2tE
aXJlY3Rvcnkoc2l6ZV90IGNlbGxTaXplKQogCiBCbG9ja0RpcmVjdG9yeTo6fkJsb2NrRGlyZWN0
b3J5KCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jYWxBbGxvY2F0b3JzTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jYWxBbGxvY2F0b3JzTG9jayB9OwogICAgIHdo
aWxlICghbV9sb2NhbEFsbG9jYXRvcnMuaXNFbXB0eSgpKQogICAgICAgICBtX2xvY2FsQWxsb2Nh
dG9ycy5iZWdpbigpLT5yZW1vdmUoKTsKIH0KQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIEJsb2Nr
RGlyZWN0b3J5OjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgV2lsbERl
bGV0ZUJsb2NrIHdpbAogICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5hcHBlbmQoYmxvY2stPmluZGV4
KCkpOwogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3IoCi0gICAgICAgIGhvbGRMb2NrKG1fYml0
dmVjdG9yTG9jayksCisgICAgICAgIExvY2tlciB7IG1fYml0dmVjdG9yTG9jayB9LAogICAgICAg
ICBbJl0oYXV0byB2ZWN0b3JSZWYpIHsKICAgICAgICAgICAgIHZlY3RvclJlZltibG9jay0+aW5k
ZXgoKV0gPSBmYWxzZTsKICAgICAgICAgfSk7CkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBCbG9j
a0RpcmVjdG9yeTo6c3RvcEFsbG9jYXRpbmdGb3JHb29kKCkKICAgICAgICAgICAgIGFsbG9jYXRv
ci0+c3RvcEFsbG9jYXRpbmdGb3JHb29kKCk7CiAgICAgICAgIH0pOwogCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2xvY2FsQWxsb2NhdG9yc0xvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2FsQWxsb2NhdG9yc0xvY2sgfTsKICAgICB3aGlsZSAoIW1fbG9jYWxBbGxvY2F0b3Jz
LmlzRW1wdHkoKSkKICAgICAgICAgbV9sb2NhbEFsbG9jYXRvcnMuYmVnaW4oKS0+cmVtb3ZlKCk7
CiB9CkBAIC0zMzMsNyArMzMzLDcgQEAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6Okhh
bmRsZSooKT4+IEJsb2NrRGlyZWN0b3J5OjpwYXJhbGxlbE5vdEVtcHR5QmxvY2sKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKG1fZG9uZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIG1faW5kZXggPSBtX2Rp
cmVjdG9yeS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCkuZmluZEJpdChtX2luZGV4LCB0cnVlKTsK
ICAgICAgICAgICAgIGlmIChtX2luZGV4ID49IG1fZGlyZWN0b3J5Lm1fYmxvY2tzLnNpemUoKSkg
ewogICAgICAgICAgICAgICAgIG1fZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29kZUJsb2NrU2V0LmNwcAppbmRleCA1ODEwNTU2ZTM4ZGQ2M2Q5YWQyZDgzOTUyOGE0
MDk0OGUyZjQ5YjYxLi5jN2VhODI0Mjg3MmMzZGMzN2MzZWNkM2UzMmZmNjE0Zjc1ZjM3YzU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAKQEAgLTczLDE0
ICs3MywxNCBAQCB2b2lkIENvZGVCbG9ja1NldDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogCiB2b2lkIENvZGVCbG9ja1NldDo6YWRkKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CiAgICAgYXV0byByZXN1bHQgPSBtX2NvZGVCbG9ja3MuYWRkKGNvZGVCbG9jayk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKIH0KIAogdm9pZCBDb2RlQmxvY2tTZXQ6OnJlbW92
ZShDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIGJvb2wgcmVzdWx0ID0g
bV9jb2RlQmxvY2tzLnJlbW92ZShjb2RlQmxvY2spOwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tT
ZXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxp
bmVzLmgKaW5kZXggN2I1MTFlZjUwMjE4NmY0ZTNhMGQ5ZGI2NTZjNTEyNWQ0NTQ4MmI0Yy4uMDU4
MTA4ZjczYTRmYTgwNjliZmZkNTk0YmVjMDdjNjllZjNjMWJhYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaApAQCAtNDgsNyArNDgsNyBA
QCBpbmxpbmUgdm9pZCBDb2RlQmxvY2tTZXQ6Om1hcmsoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaykKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENv
ZGVCbG9ja1NldDo6aXRlcmF0ZShjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CiAgICAgaXRlcmF0ZShsb2NrZXIsIGZ1bmN0b3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCmluZGV4IDYxMGU1ZWZlMjkzOGFhZDA4
MDcxYjc3YmUwZGNkZTRiNjhkMDMxMGQuLjE0ODQ4OWUzYjRjNWIzYWUwYTQyNWY3MWNjMzMzNTM4
NDgxODY5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRl
U3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwCkBAIC03MCw3ICs3MCw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjph
bGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXplKQogICAgIC8vIHByZXZlbnQgc2ltdWx0YW5lb3Vz
bHkgQmxvY2tEaXJlY3RvcnkgY3JlYXRpb25zIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4gVGhpcyBj
b2RlIGVuc3VyZXMKICAgICAvLyB0aGF0IGFueSAiZm9yRWFjaEFsbG9jYXRvciIgdHJhdmVyc2Fs
cyB3aWxsIG9ubHkgc2VlIHRoaXMgYWxsb2NhdG9yIGFmdGVyIGl0J3MgaW5pdGlhbGl6ZWQKICAg
ICAvLyBlbm91Z2g6IGl0IHdpbGwgaGF2ZSAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
c3BhY2UuZGlyZWN0b3J5TG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zcGFjZS5kaXJl
Y3RvcnlMb2NrKCkgfTsKICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IG1fYWxsb2NhdG9y
Rm9yU2l6ZVN0ZXBbaW5kZXhdKQogICAgICAgICByZXR1cm4gYWxsb2NhdG9yOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDRmMTNmNjM3MzE0MWE2NjdmMTk1MzQ5NDVmMWY1
YzRkNTRjMzEwNWYuLjYxZDJiMmQyYjEwMWMzODIyNTlkNjk4ZGJlMmY3NWMxNmMzMTkxZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBI
ZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAKICAgICBib29sIGlzQ29sbGVjdGluZzsKICAg
ICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soKm1fdGhyZWFkTG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWRMb2NrIH07CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1fbGFzdFNlcnZlZFRpY2tldCA8PSBtX2xhc3RHcmFudGVkVGlja2V0KTsKICAgICAgICAg
aXNDb2xsZWN0aW5nID0gbV9sYXN0U2VydmVkVGlja2V0IDwgbV9sYXN0R3JhbnRlZFRpY2tldDsK
ICAgICB9CkBAIC0xMjM3LDcgKzEyMzcsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5O
b3RSdW5uaW5nUGhhc2UoR0NDb25kdWN0b3IgY29ubikKIHsKICAgICAvLyBDaGVjayBtX3JlcXVl
c3RzIHNpbmNlIHRoZSBtdXRhdG9yIGNhbGxzIHRoaXMgdG8gcG9sbCB3aGF0J3MgZ29pbmcgb24u
CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKCptX3RocmVhZExvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgICAgICBpZiAobV9y
ZXF1ZXN0cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
MTQ4MSw3ICsxNDgxLDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuRW5kUGhhc2UoR0ND
b25kdWN0b3IgY29ubikKICAgICBtX3NjaGVkdWxlci0+ZW5kQ29sbGVjdGlvbigpOwogICAgICAg
ICAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tYXJraW5nTXV0ZXgp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tYXJraW5nTXV0ZXggfTsKICAgICAgICAgbV9w
YXJhbGxlbE1hcmtlcnNTaG91bGRFeGl0ID0gdHJ1ZTsKICAgICAgICAgbV9tYXJraW5nQ29uZGl0
aW9uVmFyaWFibGUubm90aWZ5QWxsKCk7CiAgICAgfQpAQCAtMTU1OCw3ICsxNTU4LDcgQEAgTkVW
RVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuRW5kUGhhc2UoR0NDb25kdWN0b3IgY29ubikKICAgICB9
CiAgICAgCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKCptX3RocmVhZExv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgICAgICBt
X3JlcXVlc3RzLnJlbW92ZUZpcnN0KCk7CiAgICAgICAgIG1fbGFzdFNlcnZlZFRpY2tldCsrOwog
ICAgICAgICBjbGVhck11dGF0b3JXYWl0aW5nKCk7CkBAIC0xOTkxLDcgKzE5OTEsNyBAQCB2b2lk
IEhlYXA6OmZpbmlzaFJlbGlucXVpc2hpbmdDb25uKCkKICAgICAKICAgICBzYW5pdGl6ZVN0YWNr
Rm9yVk0obV92bSk7CiAgICAgCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jaygqbV90aHJlYWRM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fdGhyZWFkTG9jayB9OwogICAgIGlmICghbV9y
ZXF1ZXN0cy5pc0VtcHR5KCkpCiAgICAgICAgIG1fdGhyZWFkQ29uZGl0aW9uLT5ub3RpZnlPbmUo
bG9ja2VyKTsKICAgICBQYXJraW5nTG90Ojp1bnBhcmtBbGwoJm1fd29ybGRTdGF0ZSk7CkBAIC0y
NzMwLDcgKzI3MzAsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHZpc2l0U2FtcGxpbmdQ
cm9maWxlcihWTSYgdm0sIFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgU2FtcGxpbmdQcm9maWxl
ciogc2FtcGxpbmdQcm9maWxlciA9IHZtLnNhbXBsaW5nUHJvZmlsZXIoKTsKICAgICBpZiAoVU5M
SUtFTFkoc2FtcGxpbmdQcm9maWxlcikpIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhzYW1wbGluZ1Byb2ZpbGVyLT5nZXRMb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
c2FtcGxpbmdQcm9maWxlci0+Z2V0TG9jaygpIH07CiAgICAgICAgIHNhbXBsaW5nUHJvZmlsZXIt
PnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMobG9ja2VyKTsKICAgICAgICAgc2FtcGxpbmdQ
cm9maWxlci0+dmlzaXQodmlzaXRvcik7CiAgICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpID09
IEdDTG9nZ2luZzo6VmVyYm9zZSkKQEAgLTMwNzAsNyArMzA3MCw3IEBAIHZvaWQgSGVhcDo6cmVt
b3ZlSGVhcEZpbmFsaXplckNhbGxiYWNrKGNvbnN0IEhlYXBGaW5hbGl6ZXJDYWxsYmFjayYgY2Fs
bGJhY2spCiAKIHZvaWQgSGVhcDo6c2V0Qm9udXNWaXNpdG9yVGFzayhSZWZQdHI8U2hhcmVkVGFz
azx2b2lkKFNsb3RWaXNpdG9yJik+PiB0YXNrKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9tYXJraW5nTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX21hcmtpbmdNdXRleCB9
OwogICAgIG1fYm9udXNWaXNpdG9yVGFzayA9IHRhc2s7CiAgICAgbV9tYXJraW5nQ29uZGl0aW9u
VmFyaWFibGUubm90aWZ5QWxsKCk7CiB9CkBAIC0zMDkwLDcgKzMwOTAsNyBAQCB2b2lkIEhlYXA6
OnJ1blRhc2tJblBhcmFsbGVsKFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+
IHRhc2spCiAgICAgLy8gVGhlIGNvbnN0cmFpbnQgc29sdmVyIGV4cGVjdHMgcmV0dXJuIG9mIHRo
aXMgZnVuY3Rpb24gdG8gaW1wbHkgdGVybWluYXRpb24gb2YgdGhlIHRhc2sgaW4gYWxsCiAgICAg
Ly8gdGhyZWFkcy4gVGhpcyBlbnN1cmVzIHRoYXQgcHJvcGVydHkuCiAgICAgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbWFya2luZ011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbWFya2luZ011dGV4IH07CiAgICAgICAgIHdoaWxlICh0YXNrLT5yZWZDb3VudCgp
ID4gaW5pdGlhbFJlZkNvdW50KQogICAgICAgICAgICAgbV9tYXJraW5nQ29uZGl0aW9uVmFyaWFi
bGUud2FpdChtX21hcmtpbmdNdXRleCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAppbmRleCAwODA3NjA4ZjkzN2JjYjA0
NzNhNjM0MDhiMDEyOGE2ZTY1MDk3NTE1Li5jMzZkMWQwMjEyZjkyZTYzZDY4Mzc0ZmUxZGY2ZjBi
ZWM1ZWZkYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25h
cHNob3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25h
cHNob3RCdWlsZGVyLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEhlYXBTbmFwc2hvdEJ1aWxk
ZXI6OmJ1aWxkU25hcHNob3QoKQogICAgIH0KIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2J1aWxkaW5nTm9kZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fYnVpbGRpbmdOb2RlTXV0ZXggfTsKICAgICAgICAgbV9hcHBlbmRlZENlbGxzLmNsZWFyKCk7
CiAgICAgICAgIG1fc25hcHNob3QtPmZpbmFsaXplKCk7CiAgICAgfQpAQCAtOTAsNyArOTAsNyBA
QCB2b2lkIEhlYXBTbmFwc2hvdEJ1aWxkZXI6OmFuYWx5emVOb2RlKEpTQ2VsbCogY2VsbCkKICAg
ICBpZiAocHJldmlvdXNTbmFwc2hvdEhhc05vZGVGb3JDZWxsKGNlbGwsIGlkZW50aWZpZXIpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYnVpbGRpbmdO
b2RlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2J1aWxkaW5nTm9kZU11dGV4IH07CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX2FwcGVuZGVkQ2VsbHMuYWRkKGNlbGwpOwogICAgIGlmICgh
YWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNiw3ICsxMDYsNyBA
QCB2b2lkIEhlYXBTbmFwc2hvdEJ1aWxkZXI6OmFuYWx5emVFZGdlKEpTQ2VsbCogZnJvbSwgSlND
ZWxsKiB0bywgUm9vdE1hcmtSZWFzb24gcgogICAgIGlmIChmcm9tID09IHRvKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYnVpbGRpbmdFZGdlTXV0ZXgp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX2J1aWxkaW5nRWRnZU11dGV4IH07CiAKICAgICBpZiAo
bV9zbmFwc2hvdFR5cGUgPT0gU25hcHNob3RUeXBlOjpHQ0RlYnVnZ2luZ1NuYXBzaG90ICYmICFm
cm9tKSB7CiAgICAgICAgIGlmIChyb290TWFya1JlYXNvbiA9PSBSb290TWFya1JlYXNvbjo6Tm9u
ZSAmJiBtX3NuYXBzaG90VHlwZSA9PSBTbmFwc2hvdFR5cGU6OkdDRGVidWdnaW5nU25hcHNob3Qp
CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBIZWFwU25hcHNob3RCdWlsZGVyOjphbmFseXplUHJv
cGVydHlOYW1lRWRnZShKU0NlbGwqIGZyb20sIEpTQ2VsbCogdG8sIFVuaXEKICAgICBBU1NFUlQo
bV9wcm9maWxlci5hY3RpdmVIZWFwQW5hbHl6ZXIoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQodG8p
OwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1aWxkaW5nRWRnZU11dGV4KTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9idWlsZGluZ0VkZ2VNdXRleCB9OwogCiAgICAgbV9lZGdlcy5h
cHBlbmQoSGVhcFNuYXBzaG90RWRnZShmcm9tLCB0bywgRWRnZVR5cGU6OlByb3BlcnR5LCBwcm9w
ZXJ0eU5hbWUpKTsKIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEhlYXBTbmFwc2hvdEJ1aWxk
ZXI6OmFuYWx5emVWYXJpYWJsZU5hbWVFZGdlKEpTQ2VsbCogZnJvbSwgSlNDZWxsKiB0bywgVW5p
cQogICAgIEFTU0VSVChtX3Byb2ZpbGVyLmFjdGl2ZUhlYXBBbmFseXplcigpID09IHRoaXMpOwog
ICAgIEFTU0VSVCh0byk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYnVpbGRpbmdF
ZGdlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2J1aWxkaW5nRWRnZU11dGV4IH07CiAK
ICAgICBtX2VkZ2VzLmFwcGVuZChIZWFwU25hcHNob3RFZGdlKGZyb20sIHRvLCBFZGdlVHlwZTo6
VmFyaWFibGUsIHZhcmlhYmxlTmFtZSkpOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgSGVh
cFNuYXBzaG90QnVpbGRlcjo6YW5hbHl6ZUluZGV4RWRnZShKU0NlbGwqIGZyb20sIEpTQ2VsbCog
dG8sIHVpbnQzMl90IGluCiAgICAgQVNTRVJUKG1fcHJvZmlsZXIuYWN0aXZlSGVhcEFuYWx5emVy
KCkgPT0gdGhpcyk7CiAgICAgQVNTRVJUKHRvKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9idWlsZGluZ0VkZ2VNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVpbGRpbmdF
ZGdlTXV0ZXggfTsKIAogICAgIG1fZWRnZXMuYXBwZW5kKEhlYXBTbmFwc2hvdEVkZ2UoZnJvbSwg
dG8sIGluZGV4KSk7CiB9CkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBIZWFwU25hcHNob3RCdWls
ZGVyOjpzZXRPcGFxdWVSb290UmVhY2hhYmlsaXR5UmVhc29uRm9yQ2VsbChKU0NlbGwqIGNlbGws
IGMKICAgICBpZiAoIXJlYXNvbiB8fCAhKnJlYXNvbiB8fCBtX3NuYXBzaG90VHlwZSAhPSBTbmFw
c2hvdFR5cGU6OkdDRGVidWdnaW5nU25hcHNob3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9idWlsZGluZ0VkZ2VNdXRleCk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fYnVpbGRpbmdFZGdlTXV0ZXggfTsKIAogICAgIG1fcm9vdERhdGEuZW5zdXJlKGNl
bGwsIFtdICgpIC0+IFJvb3REYXRhIHsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5j
cHAKaW5kZXggYmNkOTc5N2Q4OTJkMTIwNGMxN2FjZTcyZTRlYjgyMmFiNzUxMWE3Ni4uZjcyOTM3
MzExOTMxMmJjODY0NzM1MTM4NjIyYzBkYTQ0MTEwMjU4OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAKQEAg
LTU5LDcgKzU5LDcgQEAgdm9pZCogSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6dHJ5QWxsb2Nh
dGVBbGlnbmVkTWVtb3J5KHNpemVfdCBhbGlnbm1lbnQsIHNpemUKICNpZiBFTkFCTEUoTUFMTE9D
X0hFQVBfQlJFQUtET1dOKQogICAgIHJldHVybiBtX2RlYnVnSGVhcC5tZW1hbGlnbihNYXJrZWRC
bG9jazo6YmxvY2tTaXplLCBNYXJrZWRCbG9jazo6YmxvY2tTaXplLCB0cnVlKTsKICNlbHNlCi0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKICAgICAKICAgICBtX2ZpcnN0VW5jb21taXR0ZWQgPSBtX2NvbW1pdHRlZC5maW5k
Qml0KG1fZmlyc3RVbmNvbW1pdHRlZCwgZmFsc2UpOwogICAgIGlmIChtX2ZpcnN0VW5jb21taXR0
ZWQgPCBtX2Jsb2Nrcy5zaXplKCkpIHsKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBJc29BbGlnbmVk
TWVtb3J5QWxsb2NhdG9yOjpmcmVlQWxpZ25lZE1lbW9yeSh2b2lkKiBiYXNlUHRyKQogI2lmIEVO
QUJMRShNQUxMT0NfSEVBUF9CUkVBS0RPV04pCiAgICAgbV9kZWJ1Z0hlYXAuZnJlZShiYXNlUHRy
KTsKICNlbHNlCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAKICAgICBhdXRvIGl0ZXIgPSBtX2Jsb2NrSW5kaWNl
cy5maW5kKGJhc2VQdHIpOwogICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXIgIT0gbV9ibG9ja0luZGlj
ZXMuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2Vs
bFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAppbmRl
eCBhNDEzYzAyOWFkNzc4YmE2Mjg2MzlmZTNmMjU2OTNiZGNjM2Q1NDVlLi4xNTQ3MTY2NWRiZTVk
NjBmMzNhYmFjZGY1ODY0MTZkYjRlMjM3MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29DZWxsU2V0LmNwcApAQCAtNTksNyArNTksNyBAQCBSZWY8U2hhcmVkVGFzazxNYXJrZWRC
bG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2Nr
UwogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9kb25lKQogICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2sp
OworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICAgICAgYXV0
byBiaXRzID0gbV9kaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9zZXQubV9i
bG9ja3NXaXRoQml0czsKICAgICAgICAgICAgIG1faW5kZXggPSBiaXRzLmZpbmRCaXQobV9pbmRl
eCwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAobV9pbmRleCA+PSBtX2RpcmVjdG9yeS5tX2Jsb2Nr
cy5zaXplKCkpIHsKQEAgLTgyLDcgKzgyLDcgQEAgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6
OkhhbmRsZSooKT4+IElzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1MKIAog
TkVWRVJfSU5MSU5FIEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxT
ZXQ6OmFkZFNsb3codW5zaWduZWQgYmxvY2tJbmRleCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fc3Vic3BhY2UubV9kaXJlY3RvcnkubV9iaXR2ZWN0b3JMb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zdWJzcGFjZS5tX2RpcmVjdG9yeS5tX2JpdHZlY3RvckxvY2sgfTsKICAg
ICBhdXRvJiBiaXRzUHRyUmVmID0gbV9iaXRzW2Jsb2NrSW5kZXhdOwogICAgIGF1dG8qIGJpdHMg
PSBiaXRzUHRyUmVmLmdldCgpOwogICAgIGlmICghYml0cykgewpAQCAtMTAzLDcgKzEwMyw3IEBA
IHZvaWQgSXNvQ2VsbFNldDo6ZGlkUmVzaXplQml0cyh1bnNpZ25lZCBuZXdTaXplKQogdm9pZCBJ
c29DZWxsU2V0OjpkaWRSZW1vdmVCbG9jayh1bnNpZ25lZCBibG9ja0luZGV4KQogewogICAgIHsK
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N1YnNwYWNlLm1fZGlyZWN0b3J5Lm1f
Yml0dmVjdG9yTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3N1YnNwYWNlLm1fZGly
ZWN0b3J5Lm1fYml0dmVjdG9yTG9jayB9OwogICAgICAgICBtX2Jsb2Nrc1dpdGhCaXRzW2Jsb2Nr
SW5kZXhdID0gZmFsc2U7CiAgICAgfQogICAgIG1fYml0c1tibG9ja0luZGV4XSA9IG51bGxwdHI7
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJc29DZWxsU2V0Ojpzd2VlcFRvRnJlZUxpc3QoTWFy
a2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIEhvbGRp
bmcgdGhlIGJpdHZlY3RvciBsb2NrIGhhcHBlbnMgdG8gYmUgZW5vdWdoIGJlY2F1c2UgdGhhdCdz
IHdoYXQgd2UgYWxzbyBob2xkIGluCiAgICAgICAgICAgICAvLyBvdGhlciBwbGFjZXMgd2hlcmUg
d2UgbWFuaXB1bGF0ZSB0aGlzIGJpdHZlY3Rvci4KLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9zdWJzcGFjZS5tX2RpcmVjdG9yeS5tX2JpdHZlY3RvckxvY2spOworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc3Vic3BhY2UubV9kaXJlY3RvcnkubV9iaXR2ZWN0b3JM
b2NrIH07CiAgICAgICAgICAgICBtX2Jsb2Nrc1dpdGhCaXRzW2Jsb2NrLT5pbmRleCgpXSA9IGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIG1fYml0c1tibG9jay0+aW5kZXgoKV0gPSBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5k
ZXggNzM0YTFlNGFkOWY3NzZiYzc2MTQ3ZTgzMzlkOGIyZjk5ZWRjNzE3OC4uZWIzZTE5YThkODU0
NDBhZDYzYjJlYzczOTQwYWU3YmE1NjJmNzA4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC0xMTcsNyArMTE3LDcgQEAgUmVmPFNoYXJl
ZFRhc2s8dm9pZChWaXNpdG9yJik+PiBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbEluUGFy
YWxsZWwoY29uc3QgRnUKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICAgICAgaWYgKCFtX25lZWRUb1Zp
c2l0UHJlY2lzZUFsbG9jYXRpb25zKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgbV9uZWVkVG9WaXNpdFByZWNpc2VBbGxvY2F0aW9ucyA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCmluZGV4IDA3MzMwOGYxNWRi
YTIyMzFlMTYwNmViNDBhYzIxNDE4ZmY4YzZjNmYuLmZiNjA0ODdjMDY0MGNhNzU2MjYzMmY4NDFl
ZTcyNmVlZDY5MDc0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFj
ZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcg
bmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHMKICAgICBtX2lz
SXNvU3Vic3BhY2UgPSB0cnVlOwogICAgIGluaXRpYWxpemUoaGVhcENlbGxUeXBlLCBtX2lzb0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3IuZ2V0KCkpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3NwYWNlLmRpcmVjdG9yeUxvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3BhY2Uu
ZGlyZWN0b3J5TG9jaygpIH07CiAgICAgbV9kaXJlY3Rvcnkuc2V0U3Vic3BhY2UodGhpcyk7CiAg
ICAgbV9zcGFjZS5hZGRCbG9ja0RpcmVjdG9yeShsb2NrZXIsICZtX2RpcmVjdG9yeSk7CiAgICAg
bV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5yZWdpc3RlckRpcmVjdG9yeShoZWFwLCAmbV9kaXJl
Y3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3Bh
Y2VQZXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZN
LmNwcAppbmRleCA1OGU1ZGI1YjI4Mjk1ZTFhOTE2ZTllMGMyODlmZjlkYzlkYTIzNTUzLi40MTU5
NmJmYjFmY2Y4OTMxOWE0MGJkYjIzYTI1MWEyN2UyZThkYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcApAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgfkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKCkgZmluYWwKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wZXJWTS5tX2xvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9wZXJWTS5tX2xvY2sgfTsKICAgICAgICAgbV9wZXJWTS5tX3N1
YnNwYWNlUGVyVk0ucmVtb3ZlKCZzcGFjZSgpLmhlYXAoKS52bSgpKTsKICAgICB9CiAKQEAgLTYx
LDcgKzYxLDcgQEAgSXNvU3Vic3BhY2VQZXJWTTo6fklzb1N1YnNwYWNlUGVyVk0oKQogCiBJc29T
dWJzcGFjZSYgSXNvU3Vic3BhY2VQZXJWTTo6Zm9yVk0oVk0mIHZtKQogewotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgYXV0byByZXN1bHQgPSBtX3N1YnNwYWNlUGVyVk0uYWRkKCZ2bSwgbnVsbHB0cik7CiAgICAg
aWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIFN1YnNwYWNlUGFyYW1ldGVycyBwYXJh
bXMgPSBtX3N1YnNwYWNlUGFyYW1ldGVycyh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKaW5kZXggZTlkMjJhZWNkNTliOTFlNjYyMGUwOGM5Mzg4
ZjdhNzA0YWJiOTRjYi4uN2Q4ZWMxNjk2YTBiOWM5ZjU2MTc5OThjZDQzMzM2ZjVmYWZhOWFmYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmNwcApAQCAt
MzksNyArMzksNyBAQCBMb2NhbEFsbG9jYXRvcjo6TG9jYWxBbGxvY2F0b3IoQmxvY2tEaXJlY3Rv
cnkqIGRpcmVjdG9yeSkKICAgICA6IG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKICAgICAsIG1fZnJl
ZUxpc3QoZGlyZWN0b3J5LT5tX2NlbGxTaXplKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soZGlyZWN0b3J5LT5tX2xvY2FsQWxsb2NhdG9yc0xvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBkaXJlY3RvcnktPm1fbG9jYWxBbGxvY2F0b3JzTG9jayB9OwogICAgIGRpcmVjdG9yeS0+bV9s
b2NhbEFsbG9jYXRvcnMuYXBwZW5kKHRoaXMpOwogfQogCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQg
TG9jYWxBbGxvY2F0b3I6OnJlc2V0KCkKIExvY2FsQWxsb2NhdG9yOjp+TG9jYWxBbGxvY2F0b3Io
KQogewogICAgIGlmIChpc09uTGlzdCgpKSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9kaXJlY3RvcnktPm1fbG9jYWxBbGxvY2F0b3JzTG9jayk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2RpcmVjdG9yeS0+bV9sb2NhbEFsbG9jYXRvcnNMb2NrIH07CiAgICAgICAgIHJl
bW92ZSgpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YWNoaW5lU3RhY2tNYXJrZXIuY3BwCmluZGV4IGY4OGQ1ZWE3OWZiNTcyYmJkNGM5YWZlYjk3YTgy
ZDU5MTBjNDNkNDguLmM5NDM2YjAzMjViNDYxYTNiZDE3NDhlMjk2ODE1NmZiZDQ1NjIzNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNw
cApAQCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wgTWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhlclRo
cmVhZFN0YWNrcyhjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCB2b2lkCiAgICAgLy8gUHJl
dmVudCB0d28gVk1zIGZyb20gc3VzcGVuZGluZyBlYWNoIG90aGVyJ3MgdGhyZWFkcyBhdCB0aGUg
c2FtZSB0aW1lLAogICAgIC8vIHdoaWNoIGNhbiBjYXVzZSBkZWFkbG9jazogPHJkYXI6Ly9wcm9i
bGVtLzIwMzAwODQyPi4KICAgICBzdGF0aWMgTG9jayBzdXNwZW5kTG9jazsKLSAgICBhdXRvIHN1
c3BlbmRMb2NrZXIgPSBob2xkTG9jayhzdXNwZW5kTG9jayk7CisgICAgTG9ja2VyIHN1c3BlbmRM
b2NrZXIgeyBzdXNwZW5kTG9jayB9OwogCiAgICAgKnNpemUgPSAwOwogCkBAIC0yMDQsNyArMjA0
LDcgQEAgdm9pZCBNYWNoaW5lVGhyZWFkczo6Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2Vy
dmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJvb3QKICAgICBzaXplX3Qgc2l6ZTsKICAgICBzaXpl
X3QgY2FwYWNpdHkgPSAwOwogICAgIHZvaWQqIGJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3RocmVhZEdyb3VwLT5nZXRMb2NrKCkpOworICAgIExvY2tlciBs
b2NrZXIgeyBtX3RocmVhZEdyb3VwLT5nZXRMb2NrKCkgfTsKICAgICB3aGlsZSAoIXRyeUNvcHlP
dGhlclRocmVhZFN0YWNrcyhsb2NrZXIsIGJ1ZmZlciwgY2FwYWNpdHksICZzaXplLCAqY3VycmVu
dFRocmVhZCkpCiAgICAgICAgIGdyb3dCdWZmZXIoc2l6ZSwgJmJ1ZmZlciwgJmNhcGFjaXR5KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCmluZGV4IGEwZjYx
NDJjZWVhYzA5NzU1MGU0YjA5MjU5OTdkODZhYTIwMDk4ZTYuLjIwYWUxYzY2YjAxNDQ5NTRiMWYx
OGUwNWYwZTY3YTkzNWQ2OTYxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OnVuc3dlZXBXaXRoTm9OZXdseUFsbG9jYXRlZCgpCiAKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3RvcEFsbG9jYXRpbmcoY29uc3QgRnJlZUxpc3QmIGZyZWVMaXN0KQogewotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soYmxvY2tGb290ZXIoKS5tX2xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBibG9ja0Zvb3RlcigpLm1fbG9jayB9OwogICAgIAogICAgIGlmIChNYXJrZWRCbG9ja0lu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1h
cmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nIVxuIik7CkBAIC0xNzMsNyArMTczLDcg
QEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmcoRnJlZUxpc3QmIGZyZWVMaXN0
KQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhibG9ja0Zvb3Rlcigp
Lm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBibG9ja0Zvb3RlcigpLm1fbG9jayB9
OwogICAgICAgICAKICAgICAgICAgaWYgKE1hcmtlZEJsb2NrSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnJlc3VtZUFsbG9jYXRpbmchXG4iKTsKQEAgLTE5NywxNCArMTk3LDE0IEBAIHZvaWQgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6cmVzdW1lQWxsb2NhdGluZyhGcmVlTGlzdCYgZnJlZUxpc3QpCiB2
b2lkIE1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNp
b24pCiB7CiAgICAgQVNTRVJUKHZtKCkuaGVhcC5vYmplY3RTcGFjZSgpLmlzTWFya2luZygpKTsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGZvb3RlcigpLm1fbG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IGZvb3RlcigpLm1fbG9jayB9OwogICAgIAogICAgIGlmICghYXJlTWFya3NTdGFs
ZShtYXJraW5nVmVyc2lvbikpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBCbG9ja0RpcmVj
dG9yeSogZGlyZWN0b3J5ID0gaGFuZGxlKCkuZGlyZWN0b3J5KCk7CiAKLSAgICBpZiAoaGFuZGxl
KCkuZGlyZWN0b3J5KCktPmlzQWxsb2NhdGVkKGhvbGRMb2NrKGRpcmVjdG9yeS0+Yml0dmVjdG9y
TG9jaygpKSwgJmhhbmRsZSgpKQorICAgIGlmIChoYW5kbGUoKS5kaXJlY3RvcnkoKS0+aXNBbGxv
Y2F0ZWQoTG9ja2VyIHsgZGlyZWN0b3J5LT5iaXR2ZWN0b3JMb2NrKCkgfSwgJmhhbmRsZSgpKQog
ICAgICAgICB8fCAhbWFya3NDb252ZXlMaXZlbmVzc0R1cmluZ01hcmtpbmcobWFya2luZ1ZlcnNp
b24pKSB7CiAgICAgICAgIGlmIChNYXJrZWRCbG9ja0ludGVybmFsOjp2ZXJib3NlKQogICAgICAg
ICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBDbGVhcmluZyBtYXJrcyB3aXRob3V0
IGRvaW5nIGFueXRoaW5nIGVsc2UuXG4iKTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIE1hcmtl
ZEJsb2NrOjphYm91dFRvTWFya1Nsb3coSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pCiAgICAg
Zm9vdGVyKCkubV9tYXJraW5nVmVyc2lvbiA9IG1hcmtpbmdWZXJzaW9uOwogICAgIAogICAgIC8v
IFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0IGluIHRo
aXMgYmxvY2suCi0gICAgZGlyZWN0b3J5LT5zZXRJc01hcmtpbmdOb3RFbXB0eShob2xkTG9jayhk
aXJlY3RvcnktPmJpdHZlY3RvckxvY2soKSksICZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgZGlyZWN0
b3J5LT5zZXRJc01hcmtpbmdOb3RFbXB0eShMb2NrZXIgeyBkaXJlY3RvcnktPmJpdHZlY3Rvckxv
Y2soKSB9LCAmaGFuZGxlKCksIHRydWUpOwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpyZXNldEFs
bG9jYXRlZCgpCkBAIC0yODUsNyArMjg1LDcgQEAgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQo
Y29uc3Qgdm9pZCogcCkKIAogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJl
ZUxpc3QoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYmxvY2tGb290ZXIoKS5tX2xv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBibG9ja0Zvb3RlcigpLm1fbG9jayB9OwogICAgIGlm
IChNYXJrZWRCbG9ja0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKFJhd1BvaW50
ZXIodGhpcyksICI6IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCFcbiIp
OwogICAgIEFTU0VSVChpc0ZyZWVMaXN0ZWQoKSk7CkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBN
YXJrZWRCbG9jazo6Y2xlYXJIYXNBbnlNYXJrZWQoKQogdm9pZCBNYXJrZWRCbG9jazo6bm90ZU1h
cmtlZFNsb3coKQogewogICAgIEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkgPSBoYW5kbGUoKS5k
aXJlY3RvcnkoKTsKLSAgICBkaXJlY3RvcnktPnNldElzTWFya2luZ1JldGlyZWQoaG9sZExvY2so
ZGlyZWN0b3J5LT5iaXR2ZWN0b3JMb2NrKCkpLCAmaGFuZGxlKCksIHRydWUpOworICAgIGRpcmVj
dG9yeS0+c2V0SXNNYXJraW5nUmV0aXJlZChMb2NrZXIgeyBkaXJlY3RvcnktPmJpdHZlY3Rvckxv
Y2soKSB9LCAmaGFuZGxlKCksIHRydWUpOwogfQogCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OnJlbW92ZUZyb21EaXJlY3RvcnkoKQpAQCAtMzY5LDcgKzM2OSw3IEBAIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6ZHVtcFN0YXRlKFByaW50U3RyZWFtJiBvdXQpCiB7CiAgICAgQ29tbWFQcmlu
dGVyIGNvbW1hOwogICAgIGRpcmVjdG9yeSgpLT5mb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCi0g
ICAgICAgIGhvbGRMb2NrKGRpcmVjdG9yeSgpLT5iaXR2ZWN0b3JMb2NrKCkpLAorICAgICAgICBM
b2NrZXIgeyBkaXJlY3RvcnkoKS0+Yml0dmVjdG9yTG9jaygpIH0sCiAgICAgICAgIFsmXShhdXRv
IHZlY3RvclJlZiwgY29uc3QgY2hhciogbmFtZSkgewogICAgICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCBuYW1lLCAiOiIsIHZlY3RvclJlZltpbmRleCgpXSA/ICJZRVMiIDogIm5vIik7CiAgICAg
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGlu
ZXMuaAppbmRleCBiOWFhZTVhNjkyY2Y4NzZhMDZhODY2OWRjYjZhOTdkYzI1NmNjMGViLi5kMjM4
MjZhZTk3ZTI2ODcwYWExNGEzMzdjZGM5ODg3YTQ3NDMzNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaApAQCAtMTY4LDcgKzE2OCw3IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoSGVhcFZlcnNp
b24gbWFya2luZ1ZlcnNpb24sIEhlYXBWCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhmb290ZXIubV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
Zm9vdGVyLm1fbG9jayB9OwogCiAgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludC5jcHAKaW5k
ZXggMGE2NmY2ZjRkNDU5YTA1ZGQxZjY2MjhjNzg1MGYxY2RiNTViYjE4My4uYjA4NTFiNjQyZjY0
MmRhNWI1NWY5MWFiZDBjZWE1ZWE0NzdhMWU5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50LmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIE1h
cmtpbmdDb25zdHJhaW50Ojpkb1BhcmFsbGVsV29yayhTbG90VmlzaXRvciYgdmlzaXRvciwgU2hh
cmVkVGFzazx2b2lkKFNsbwogICAgIGlmICh2ZXJib3NlTWFya2luZ0NvbnN0cmFpbnQgJiYgdmlz
aXRDb3VudGVyLnZpc2l0Q291bnQoKSkKICAgICAgICAgZGF0YUxvZygiKCIsIGFiYnJldmlhdGVk
TmFtZSgpLCAiIHZpc2l0ZWQgIiwgdmlzaXRDb3VudGVyLnZpc2l0Q291bnQoKSwgIiBpbiBkb1Bh
cmFsbGVsV29yaykiKTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9s
b2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBtX2xhc3RW
aXNpdENvdW50ICs9IHZpc2l0Q291bnRlci52aXNpdENvdW50KCk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIu
Y3BwCmluZGV4IDNjNjYwYTg0NDhkYTVlZWI2YTRhM2M1NzZmNjYwODNiZWY2NzRhYTcuLmJiNTVi
OWNiZTI2MDBjNzkyYzg1ZGViMTE1ZDFhYzI1YjliYzA1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNvbHZlci5jcHAKQEAgLTE1
Miw3ICsxNTIsNyBAQCB2b2lkIE1hcmtpbmdDb25zdHJhaW50U29sdmVyOjpleGVjdXRlKE1hcmtp
bmdDb25zdHJhaW50JiBjb25zdHJhaW50KQogCiB2b2lkIE1hcmtpbmdDb25zdHJhaW50U29sdmVy
OjphZGRQYXJhbGxlbFRhc2soUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4g
dGFzaywgTWFya2luZ0NvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7Ci0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBt
X3RvRXhlY3V0ZUluUGFyYWxsZWwuYXBwZW5kKFRhc2tXaXRoQ29uc3RyYWludChXVEZNb3ZlKHRh
c2spLCAmY29uc3RyYWludCkpOwogfQogCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBNYXJraW5n
Q29uc3RyYWludFNvbHZlcjo6cnVuRXhlY3V0aW9uVGhyZWFkKFNsb3RWaXNpdG9yJiB2aXNpdG9y
LCBTY2hlZHVsZXIKICAgICAgICAgdW5zaWduZWQgaW5kZXhUb1J1biA9IFVJTlRfTUFYOwogICAg
ICAgICBUYXNrV2l0aENvbnN0cmFpbnQgdGFzazsKICAgICAgICAgewotICAgICAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKDs7
KSB7CiAgICAgICAgICAgICAgICAgYXV0byB0cnlQYXJhbGxlbFdvcmsgPSBbJl0gKCkgLT4gYm9v
bCB7CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBNYXJraW5nQ29uc3RyYWludFNvbHZlcjo6cnVu
RXhlY3V0aW9uVGhyZWFkKFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBTY2hlZHVsZXIKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgewotICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBpZiAoZG9QYXJhbGxlbFdvcmtNb2RlKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCFtX3RvRXhlY3V0ZUluUGFyYWxsZWwuaXNFbXB0eSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QYXJhbGxlbFNvdXJjZUFkYXB0ZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1BhcmFsbGVsU291cmNlQWRhcHRlci5oCmluZGV4IGJmZjQz
ZGNjZmFhYjAwZjVjMWViN2NmZGE2ZjBmMGE4NjAwNWZlZDEuLjQ1NWVjMzU2MmUxZjJhZTAzNGI3
MTk4Mjc3MGU1Y2E2MWIwNTJkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1BhcmFsbGVsU291cmNlQWRhcHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1BhcmFsbGVsU291cmNlQWRhcHRlci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICBJbm5lclR5cGUgcnVuKCkgZmluYWwKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owog
ICAgICAgICBkbyB7CiAgICAgICAgICAgICBpZiAobV9pbm5lclNvdXJjZSkgewogICAgICAgICAg
ICAgICAgIGlmIChJbm5lclR5cGUgcmVzdWx0ID0gbV9pbm5lclNvdXJjZS0+cnVuKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKaW5kZXggZTkyOTEwNGViNTZi
MzAwZGMwZWNlNmE2MjY0NjI4ZjRhODk4N2NlMC4uNmYwNGMzNDc2ZTg3OWVjNGE0NzlmOGI2ZWE4
OTFmMmYzOWYzZDdiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xv
dFZpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9y
LmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OnVwZGF0ZU11dGF0b3JJ
c1N0b3BwZWQoKQogewogICAgIGlmIChtdXRhdG9ySXNTdG9wcGVkSXNVcFRvRGF0ZSgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgdXBkYXRlTXV0YXRvcklzU3RvcHBlZChob2xkTG9jayhtX3JpZ2h0
VG9SdW4pKTsKKyAgICB1cGRhdGVNdXRhdG9ySXNTdG9wcGVkKExvY2tlciB7IG1fcmlnaHRUb1J1
biB9KTsKIH0KIAogYm9vbCBTbG90VmlzaXRvcjo6aGFzQWNrbm93bGVkZ2VkVGhhdFRoZU11dGF0
b3JJc1Jlc3VtZWQoKSBjb25zdApAQCAtNDg5LDcgKzQ4OSw3IEBAIE5FVkVSX0lOTElORSB2b2lk
IFNsb3RWaXNpdG9yOjpkcmFpbihNb25vdG9uaWNUaW1lIHRpbWVvdXQpCiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9yaWdodFRvUnVuKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9yaWdodFRvUnVu
IH07CiAgICAgCiAgICAgd2hpbGUgKCFoYXNFbGFwc2VkKHRpbWVvdXQpKSB7CiAgICAgICAgIHVw
ZGF0ZU11dGF0b3JJc1N0b3BwZWQobG9ja2VyKTsKQEAgLTUyMSw3ICs1MjEsNyBAQCBzaXplX3Qg
U2xvdFZpc2l0b3I6OnBlcmZvcm1JbmNyZW1lbnRPZkRyYWluaW5nKHNpemVfdCBieXRlc1JlcXVl
c3RlZCkKIAogICAgIHNpemVfdCBjZWxsc1JlcXVlc3RlZCA9IGJ5dGVzUmVxdWVzdGVkIC8gTWFy
a2VkQmxvY2s6OmF0b21TaXplOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2hlYXAubV9tYXJraW5nTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9oZWFw
Lm1fbWFya2luZ011dGV4IH07CiAgICAgICAgIGZvckVhY2hNYXJrU3RhY2soCiAgICAgICAgICAg
ICBbJl0gKE1hcmtTdGFja0FycmF5JiBzdGFjaykgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAg
ICAgICAgICAgICBjZWxsc1JlcXVlc3RlZCAtPSBjb3JyZXNwb25kaW5nR2xvYmFsU3RhY2soc3Rh
Y2spLnRyYW5zZmVyVG8oc3RhY2ssIGNlbGxzUmVxdWVzdGVkKTsKQEAgLTU0MSw3ICs1NDEsNyBA
QCBzaXplX3QgU2xvdFZpc2l0b3I6OnBlcmZvcm1JbmNyZW1lbnRPZkRyYWluaW5nKHNpemVfdCBi
eXRlc1JlcXVlc3RlZCkKICAgICB9OwogICAgIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3JpZ2h0VG9SdW4pOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9yaWdo
dFRvUnVuIH07CiAgICAgICAgIAogICAgICAgICB3aGlsZSAoIWlzRG9uZSgpKSB7CiAgICAgICAg
ICAgICB1cGRhdGVNdXRhdG9ySXNTdG9wcGVkKGxvY2tlcik7CkBAIC02MDYsNyArNjA2LDcgQEAg
TkVWRVJfSU5MSU5FIFNsb3RWaXNpdG9yOjpTaGFyZWREcmFpblJlc3VsdCBTbG90VmlzaXRvcjo6
ZHJhaW5Gcm9tU2hhcmVkKFNoYXJlZEQKICAgICAgICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChT
bG90VmlzaXRvciYpPj4gYm9udXNUYXNrOwogICAgICAgICAKICAgICAgICAgewotICAgICAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2hlYXAubV9tYXJraW5nTXV0ZXgpOworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1faGVhcC5tX21hcmtpbmdNdXRleCB9OwogICAgICAgICAg
ICAgaWYgKGlzQWN0aXZlKQogICAgICAgICAgICAgICAgIG1faGVhcC5tX251bWJlck9mQWN0aXZl
UGFyYWxsZWxNYXJrZXJzLS07CiAgICAgICAgICAgICBtX2hlYXAubV9udW1iZXJPZldhaXRpbmdQ
YXJhbGxlbE1hcmtlcnMrKzsKQEAgLTY4NSw3ICs2ODUsNyBAQCBORVZFUl9JTkxJTkUgU2xvdFZp
c2l0b3I6OlNoYXJlZERyYWluUmVzdWx0IFNsb3RWaXNpdG9yOjpkcmFpbkZyb21TaGFyZWQoU2hh
cmVkRAogICAgICAgICAgICAgLy8gVGhlIG1haW4gdGhyZWFkIGNvdWxkIHN0aWxsIGJlIHJ1bm5p
bmcsIGFuZCBtYXkgcnVuIGZvciBhIHdoaWxlLiBVbmxlc3Mgd2UgY2xlYXIgdGhlIHRhc2sKICAg
ICAgICAgICAgIC8vIG91cnNlbHZlcywgd2Ugd2lsbCBrZWVwIGxvb3BpbmcgYXJvdW5kIHRyeWlu
ZyB0byBydW4gdGhlIHRhc2suCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2hlYXAubV9tYXJraW5nTXV0ZXgpOworICAgICAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX2hlYXAubV9tYXJraW5nTXV0ZXggfTsKICAgICAgICAgICAgICAg
ICBpZiAobV9oZWFwLm1fYm9udXNWaXNpdG9yVGFzayA9PSBib251c1Rhc2spCiAgICAgICAgICAg
ICAgICAgICAgIG1faGVhcC5tX2JvbnVzVmlzaXRvclRhc2sgPSBudWxscHRyOwogICAgICAgICAg
ICAgICAgIGJvbnVzVGFzayA9IG51bGxwdHI7CkBAIC03MjEsMTMgKzcyMSwxMyBAQCBTbG90Vmlz
aXRvcjo6U2hhcmVkRHJhaW5SZXN1bHQgU2xvdFZpc2l0b3I6OmRyYWluSW5QYXJhbGxlbFBhc3Np
dmVseShNb25vdG9uaWNUaQogICAgICAgICByZXR1cm4gZHJhaW5JblBhcmFsbGVsKHRpbWVvdXQp
OwogICAgIH0KIAotICAgIGRvbmF0ZUFsbChob2xkTG9jayhtX2hlYXAubV9tYXJraW5nTXV0ZXgp
KTsKKyAgICBkb25hdGVBbGwoTG9ja2VyIHsgbV9oZWFwLm1fbWFya2luZ011dGV4IH0pOwogICAg
IHJldHVybiB3YWl0Rm9yVGVybWluYXRpb24odGltZW91dCk7CiB9CiAKIFNsb3RWaXNpdG9yOjpT
aGFyZWREcmFpblJlc3VsdCBTbG90VmlzaXRvcjo6d2FpdEZvclRlcm1pbmF0aW9uKE1vbm90b25p
Y1RpbWUgdGltZW91dCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faGVhcC5tX21h
cmtpbmdNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1faGVhcC5tX21hcmtpbmdNdXRleCB9
OwogICAgIGZvciAoOzspIHsKICAgICAgICAgaWYgKGhhc0VsYXBzZWQodGltZW91dCkpCiAgICAg
ICAgICAgICByZXR1cm4gU2hhcmVkRHJhaW5SZXN1bHQ6OlRpbWVkT3V0OwpAQCAtNzQ2LDcgKzc0
Niw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRvbmF0ZUFsbCgpCiAgICAgaWYgKGlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGRvbmF0ZUFsbChob2xkTG9jayhtX2hlYXAubV9t
YXJraW5nTXV0ZXgpKTsKKyAgICBkb25hdGVBbGwoTG9ja2VyIHsgbV9oZWFwLm1fbWFya2luZ011
dGV4IH0pOwogfQogCiB2b2lkIFNsb3RWaXNpdG9yOjpkb25hdGVBbGwoY29uc3QgQWJzdHJhY3RM
b2NrZXImKQpAQCAtNzgzLDcgKzc4Myw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRpZFJhY2UoY29u
c3QgVmlzaXRSYWNlS2V5JiByYWNlKQogewogICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJv
c2VWaXNpdFJhY2UoKSwgdG9DU3RyaW5nKCJHQyB2aXNpdCByYWNlOiAiLCByYWNlKSk7CiAgICAg
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhoZWFwKCktPm1fcmFjZU1hcmtTdGFja0xvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBoZWFwKCktPm1fcmFjZU1hcmtTdGFja0xvY2sgfTsKICAg
ICBKU0NlbGwqIGNlbGwgPSByYWNlLmNlbGwoKTsKICAgICBjZWxsLT5zZXRDZWxsU3RhdGUoQ2Vs
bFN0YXRlOjpQb3NzaWJseUdyZXkpOwogICAgIGhlYXAoKS0+bV9yYWNlTWFya1N0YWNrLT5hcHBl
bmQoY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKaW5kZXggYWUz
M2YzYWRmMmVmMGVkNDA1ZmZiYzIyNTYwYjNkMDMxMDQyODFmMy4uMWQxZDdlZmUwMTQ4YWY5NDU3
MzkxMjQyNmJjOGVlNDhhODU1ZDM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNw
YWNlLmNwcApAQCAtOTUsNyArOTUsNyBAQCBSZWY8U2hhcmVkVGFzazxCbG9ja0RpcmVjdG9yeSoo
KT4+IFN1YnNwYWNlOjpwYXJhbGxlbERpcmVjdG9yeVNvdXJjZSgpCiAgICAgICAgIAogICAgICAg
ICBCbG9ja0RpcmVjdG9yeSogcnVuKCkgZmluYWwKICAgICAgICAgewotICAgICAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgICAgICAgICAgQmxvY2tEaXJlY3RvcnkqIHJlc3VsdCA9IG1fZGlyZWN0
b3J5OwogICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgICAgICBtX2RpcmVjdG9y
eSA9IHJlc3VsdC0+bmV4dERpcmVjdG9yeUluU3Vic3BhY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmgKaW5kZXggNTQ0YzZhMGIzNDQwOTBlMGEwZGQw
ZDI1MGQwZDc5MThkMzIxNTkyNi4uNGY1Y2Y0ZjNmYTRjZGMzNTk1ZDAzMjIxZWVmZmZlY2JmOWNj
ZTcyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2VJbmxpbmVzLmgK
QEAgLTEwOCw3ICsxMDgsNyBAQCBSZWY8U2hhcmVkVGFzazx2b2lkKFZpc2l0b3ImKT4+IFN1YnNw
YWNlOjpmb3JFYWNoTWFya2VkQ2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKICAgICAgICAgICAgICAgICBpZiAoIW1fbmVlZFRvVmlzaXRQcmVjaXNlQWxsb2Nh
dGlvbnMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBtX25l
ZWRUb1Zpc2l0UHJlY2lzZUFsbG9jYXRpb25zID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4
IGUzOWY5MjZlMjFkYTk5YTZlZTFjMWIxZjU1NjE0ZTdkMjA3NzJmODcuLjEzYzI1YTk0YzJlYWY1
M2I5ZTdjNDg1N2EyMWRhNGViMjZjYmI2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC03NTgsNyAr
NzU4LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQodG8pOwogICAgICAgICBBU1NFUlQodG8t
PnZtKCkuaGVhcFByb2ZpbGVyKCktPmFjdGl2ZUhlYXBBbmFseXplcigpID09IHRoaXMpOwogCi0g
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX211dGV4IH07CiAKICAgICAgICAgaWYgKGZyb20gJiYgZnJvbSAhPSB0bykgewog
ICAgICAgICAgICAgbV9zdWNjZXNzb3JzLmVuc3VyZShmcm9tLCBbXSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCA3YzA5NzE1
YWVlYWY5ZDkzMGY1NmE5ZDkxMzI0OGZiMDc1NjdiZmQ1Li41NDMzYzcxYzczN2I5NWFkZmE2YmI3
NmY3ZThjNTAzNTBlNTAyNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
RXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBwdWJsaWM6CiAgICAg
UmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IGFsbG9jYXRlKHNpemVfdCBzaXplSW5CeXRl
cykKICAgICB7CiAjaWYgRU5BQkxFKEpVTVBfSVNMQU5EUykKLSAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhnZXRMb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ2V0TG9jaygp
IH07CiAKICAgICAgICAgdW5zaWduZWQgc3RhcnQgPSAwOwogICAgICAgICBpZiAoT3B0aW9uczo6
dXNlUmFuZG9taXppbmdFeGVjdXRhYmxlSXNsYW5kQWxsb2NhdGlvbigpKQpAQCAtNTM1LDcgKzUz
NSw3IEBAIHB1YmxpYzoKIAogICAgIE1ldGFBbGxvY2F0b3I6OlN0YXRpc3RpY3MgY3VycmVudFN0
YXRpc3RpY3MoKQogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnZXRMb2Nr
KCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ2V0TG9jaygpIH07CiAgICAgICAgIE1ldGFB
bGxvY2F0b3I6OlN0YXRpc3RpY3MgcmVzdWx0IHsgMCwgMCwgMCB9OwogICAgICAgICBmb3JFYWNo
QWxsb2NhdG9yKFsmXSAoQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsKICAgICAgICAgICAgIGF1dG8g
YWxsb2NhdG9yU3RhdHMgPSBhbGxvY2F0b3IuY3VycmVudFN0YXRpc3RpY3MobG9ja2VyKTsKQEAg
LTU4MSw3ICs1ODEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkKiBtYWtlSXNsYW5kKHVpbnRwdHJf
dCBqdW1wTG9jYXRpb24sIHVpbnRwdHJfdCBuZXdUYXJnZXQsIGJvb2wgY29uY3VycmVudGx5KQog
ICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnZXRMb2NrKCkpOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgZ2V0TG9jaygpIH07CiAgICAgICAgIHJldHVybiBpc2xhbmRGb3JK
dW1wTG9jYXRpb24obG9ja2VyLCBqdW1wTG9jYXRpb24sIG5ld1RhcmdldCwgY29uY3VycmVudGx5
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggOGY5NGE4ODY0NTM0OGY2MDAwMzIw
MWE0OWFmYWUyYTBlNTI3ZmNhOS4uZDNhMjgxMTI3MDgwNTgxZjBlZDE1YjRmMzg1ODg1NTBjZjNl
ZTZlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE4MDEsNyArMTgwMSw3IEBAIE1lc3NhZ2U6
On5NZXNzYWdlKCkKIFdvcmtlcjo6V29ya2VyKFdvcmtlcnMmIHdvcmtlcnMpCiAgICAgOiBtX3dv
cmtlcnMod29ya2VycykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd29ya2Vycy5t
X2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3dvcmtlcnMubV9sb2NrIH07CiAgICAgbV93
b3JrZXJzLm1fd29ya2Vycy5hcHBlbmQodGhpcyk7CiAgICAgCiAgICAgKmN1cnJlbnRXb3JrZXIo
KSA9IHRoaXM7CkBAIC0xODA5LDcgKzE4MDksNyBAQCBXb3JrZXI6OldvcmtlcihXb3JrZXJzJiB3
b3JrZXJzKQogCiBXb3JrZXI6On5Xb3JrZXIoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV93b3JrZXJzLm1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fd29ya2Vycy5tX2xv
Y2sgfTsKICAgICBSRUxFQVNFX0FTU0VSVChpc09uTGlzdCgpKTsKICAgICByZW1vdmUoKTsKIH0K
QEAgLTE4MjEsNyArMTgyMSw3IEBAIHZvaWQgV29ya2VyOjplbnF1ZXVlKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiwgUmVmUHRyPE1lc3NhZ2U+IG1lc3NhZ2UpCiAKIFJlZlB0cjxNZXNzYWdlPiBXb3Jr
ZXI6OmRlcXVldWUoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrZXJzLm1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fd29ya2Vycy5tX2xvY2sgfTsKICAgICB3aGls
ZSAobV9tZXNzYWdlcy5pc0VtcHR5KCkpCiAgICAgICAgIG1fd29ya2Vycy5tX2NvbmRpdGlvbi53
YWl0KG1fd29ya2Vycy5tX2xvY2spOwogICAgIHJldHVybiBtX21lc3NhZ2VzLnRha2VGaXJzdCgp
OwpAQCAtMTg1Niw3ICsxODU2LDcgQEAgV29ya2Vyczo6fldvcmtlcnMoKQogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KIHZvaWQgV29ya2Vyczo6YnJvYWRjYXN0KGNvbnN0IEZ1bmMmIGZ1bmMpCiB7
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKICAgICBmb3IgKFdvcmtlciogd29ya2VyID0gbV93b3JrZXJzLmJlZ2luKCk7
IHdvcmtlciAhPSBtX3dvcmtlcnMuZW5kKCk7IHdvcmtlciA9IHdvcmtlci0+bmV4dCgpKSB7CiAg
ICAgICAgIGlmICh3b3JrZXIgIT0gJldvcmtlcjo6Y3VycmVudCgpKQogICAgICAgICAgICAgZnVu
Yyhsb2NrZXIsICp3b3JrZXIpOwpAQCAtMTg2NiwxNCArMTg2NiwxNCBAQCB2b2lkIFdvcmtlcnM6
OmJyb2FkY2FzdChjb25zdCBGdW5jJiBmdW5jKQogCiB2b2lkIFdvcmtlcnM6OnJlcG9ydChjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIG1fcmVwb3J0cy5hcHBlbmQoc3Ry
aW5nLmlzb2xhdGVkQ29weSgpKTsKICAgICBtX2NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKIH0KIAog
U3RyaW5nIFdvcmtlcnM6OnRyeUdldFJlcG9ydCgpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBpZiAobV9y
ZXBvcnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiBt
X3JlcG9ydHMudGFrZUZpcnN0KCk7CkBAIC0xODgxLDcgKzE4ODEsNyBAQCBTdHJpbmcgV29ya2Vy
czo6dHJ5R2V0UmVwb3J0KCkKIAogU3RyaW5nIFdvcmtlcnM6OmdldFJlcG9ydCgpCiB7Ci0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKICAgICB3aGlsZSAobV9yZXBvcnRzLmlzRW1wdHkoKSkKICAgICAgICAgbV9jb25kaXRp
b24ud2FpdChtX2xvY2spOwogICAgIHJldHVybiBtX3JlcG9ydHMudGFrZUZpcnN0KCk7CkBAIC0x
OTgyLDcgKzE5ODIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJB
Z2VudFN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgICAgICAgICAgICAg
IFsmXSAoVk0mLCBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCYgc3VjY2Vzcykgewog
ICAgICAgICAgICAgICAgICAgICAvLyBOb3RpZnkgdGhlIHRocmVhZCB0aGF0IHN0YXJ0ZWQgdXMg
dGhhdCB3ZSBoYXZlIHJlZ2lzdGVyZWQgYSB3b3JrZXIuCiAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGlkU3RhcnRM
b2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBkaWRTdGFydExv
Y2sgfTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0ID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZFN0YXJ0Q29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0xOTk5LDcgKzE5OTksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZnVuY3Rpb25Eb2xsYXJBZ2VudFN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dAogICAgICAgICB9KS0+ZGV0YWNoKCk7CiAgICAgCiAgICAgewotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGRpZFN0YXJ0TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBkaWRT
dGFydExvY2sgfTsKICAgICAgICAgd2hpbGUgKCFkaWRTdGFydCkKICAgICAgICAgICAgIGRpZFN0
YXJ0Q29uZGl0aW9uLndhaXQoZGlkU3RhcnRMb2NrKTsKICAgICB9CkBAIC0yMzg5LDcgKzIzODks
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3Ry
eUxpdmVDb3VudCwgKEpTR2xvYmFsT2JqZWN0KgogICAgIGlmICghZmluYWxpemF0aW9uUmVnaXN0
cnkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6YXRpb25SZWdpc3RyeSJfcyk7CiAKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5jZWxsTG9jaygp
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZmluYWxpemF0aW9uUmVnaXN0cnktPmNlbGxMb2NrKCkg
fTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFsaXphdGlvblJlZ2lz
dHJ5LT5saXZlQ291bnQobG9ja2VyKSkpOwogfQogCkBAIC0yNDAyLDcgKzI0MDIsNyBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeURlYWRDb3Vu
dCwgKEpTR2xvYmFsT2JqZWN0KgogICAgIGlmICghZmluYWxpemF0aW9uUmVnaXN0cnkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBh
cmd1bWVudCBpcyBub3QgYSBmaW5hbGl6YXRpb25SZWdpc3RyeSJfcyk7CiAKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5jZWxsTG9jaygpKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgZmluYWxpemF0aW9uUmVnaXN0cnktPmNlbGxMb2NrKCkgfTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5kZWFk
Q291bnQobG9ja2VyKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EZWZlcnJlZFdvcmtUaW1lci5jcHAKaW5kZXggNmY4ODI1YWQyNjc0ZWJkYmEwMGFjNWFi
YjA1N2ViZDU2YjgyNDlhMy4uMjlkNWRmZTc4YWIyOTQ3ZTM5YmNlNjk3NzA0Mjk3N2ZkYTEyMjQ0
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3Jr
VGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29y
a1RpbWVyLmNwcApAQCAtNDUsNyArNDUsNyBAQCBEZWZlcnJlZFdvcmtUaW1lcjo6RGVmZXJyZWRX
b3JrVGltZXIoVk0mIHZtKQogdm9pZCBEZWZlcnJlZFdvcmtUaW1lcjo6ZG9Xb3JrKFZNJiB2bSkK
IHsKICAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Rhc2tMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV90YXNrTG9jayB9OwogICAgIGNhbmNlbFRpbWVyKCk7CiAgICAgaWYgKCFtX3J1blRhc2tzKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuY3BwCmluZGV4IDIzZDY3N2M3YmM0MjQxMzdiZGZkMzY2ZDg0MjI1NDdkMTg1ZWQ3
MTkuLmQyY2QzNmVlNWE5ZmIxMzUyMDcyNjVkMWI0ODM2M2JkOTBjMDZkODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBAIC0xMjQsNyAr
MTI0LDcgQEAgdm9pZCBFcnJvckluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFMKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8U3RhY2tGcmFtZT4+IHN0YWNrVHJhY2UgPSBnZXRTdGFja1RyYWNlKGdsb2JhbE9iamVj
dCwgdm0sIHRoaXMsIHVzZUN1cnJlbnRGcmFtZSk7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgY2VsbExv
Y2soKSB9OwogICAgICAgICBtX3N0YWNrVHJhY2UgPSBXVEZNb3ZlKHN0YWNrVHJhY2UpOwogICAg
IH0KICAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmNwcAppbmRleCAyN2M0ODgxZWZjM2NiNzJm
MWIwODE4OGM4MDhlYWVlMDUxYWU5YmE5Li4xYjJmNGY1MmFiN2JmY2UzNDBiM2MzOTUyOWUxODA1
NzJjZDE2NDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFs
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4
ZWN1dGFibGUuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgRXZhbEV4ZWN1dGFibGU6OnZpc2l0
Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkRXZhbENvZGVCbG9jayk7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9ldmFsQ29kZUJsb2NrKTsKICAgICBpZiAoVGVtcGxhdGVP
YmplY3RNYXAqIG1hcCA9IHRoaXNPYmplY3QtPm1fdGVtcGxhdGVPYmplY3RNYXAuZ2V0KCkpIHsK
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlzT2JqZWN0LT5jZWxsTG9jaygpKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRoaXNPYmplY3QtPmNlbGxMb2NrKCkgfTsKICAgICAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6ICptYXApCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChl
bnRyeS52YWx1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAKaW5kZXggYjcxMTJlMTUzZTJi
MTNmNWRlODg4ZjI5MGQ0NzM3MjRmYjM2OTkwZS4uZjEzOWQ0YTQ0N2IyNzBmOWVkMzNmN2RmZDM1
ZTAyYWZmYzMxYzcwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIE9w
Y29kZUlEIEZpbGVCYXNlZEZ1enplckFnZW50QmFzZTo6b3Bjb2RlQWxpYXNGb3JMb29rdXBLZXko
Y29uc3QgT3Bjb2RlSUQmIG9wY29kCiAKIFNwZWN1bGF0ZWRUeXBlIEZpbGVCYXNlZEZ1enplckFn
ZW50QmFzZTo6Z2V0UHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbiwgU3BlY3VsYXRlZFR5cGUgb3JpZ2luYWwpCiB7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IAogICAgIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCk7CiAgICAgY29uc3QgYXV0byYgc291cmNlVVJMID0gb3duZXJFeGVjdXRh
YmxlLT5zb3VyY2VVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDk2NDU1MTkwOGFkOWFmM2VmNzBkNjE0MWQ2
YTM3N2M1NjhmYzAyNTQuLjE4NmZiMjRmYWJhMGM0NmNlYmUwMjdlYTU2YzA3MmE3NWM5Y2FjYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlz
aXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIGlmIChS
YXJlRGF0YSogcmFyZURhdGEgPSB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLmdldCgpKSB7CiAgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKHJhcmVEYXRhLT5tX2NhY2hlZFBvbHlQcm90b1N0cnVjdHVyZSk7
CiAgICAgICAgIGlmIChUZW1wbGF0ZU9iamVjdE1hcCogbWFwID0gcmFyZURhdGEtPm1fdGVtcGxh
dGVPYmplY3RNYXAuZ2V0KCkpIHsKLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
dGhpc09iamVjdC0+Y2VsbExvY2soKSk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGhp
c09iamVjdC0+Y2VsbExvY2soKSB9OwogICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICpt
YXApCiAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoZW50cnkudmFsdWUpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IGU0MmYz
OWM5ZjhhMjEzNDE1ZTA0NGFhNDgzNTIwMzIzMjIyOTZiZWQuLjc5YzAzNDMyZTJhNjQ3OWZlMDlj
OTQwNThjNjcxODAyNDc1OTgxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCkBAIC03OTMsNyArNzkzLDcgQEAgYm9vbCBKU0FycmF5OjpzaGlmdENvdW50V2l0
aEFycmF5U3RvcmFnZShWTSYgdm0sIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGMKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOwotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7
IGNlbGxMb2NrKCkgfTsKICAgICAKICAgICBpZiAoc3RhcnRJbmRleCArIGNvdW50ID4gdmVjdG9y
TGVuZ3RoKQogICAgICAgICBjb3VudCA9IHZlY3Rvckxlbmd0aCAtIHN0YXJ0SW5kZXg7CkBAIC05
ODEsNyArOTgxLDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmUKICAgICAvLyBOZWVkIHRvIGhh
dmUgR0MgZGVmZXJyZWQgYXJvdW5kIHRoZSB1bnNoaWZ0Q291bnRTbG93Q2FzZSgpLCBzaW5jZSB0
aGF0IGxlYXZlcyB0aGUgYnV0dGVyZmx5IGluCiAgICAgLy8gYSB3ZWlyZCBzdGF0ZTogc29tZSBw
YXJ0cyBvZiBpdCB3aWxsIGJlIGxlZnQgdW5pbml0aWFsaXplZCwgd2hpY2ggd2Ugd2lsbCBmaWxs
IGluIGhlcmUuCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IGNlbGxMb2NrKCkg
fTsKICAgICAKICAgICBpZiAobW92ZUZyb250ICYmIHN0b3JhZ2UtPm1faW5kZXhCaWFzID49IGNv
dW50KSB7CiAgICAgICAgIC8vIFdoZW4gbW92aW5nIEJ1dHRlcmZseSdzIGhlYWQgdG8gYWRqdXN0
IHByb3BlcnR5LXN0b3JhZ2UsIHdlIG11c3QgdGFrZSBhIHN0cnVjdHVyZSBsb2NrLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCmlu
ZGV4IGNjOTEwZmQ2M2NjZjllZTE5YWE1MTZhZmQ4NGQ2ODc5OGNkMWI4ZDIuLjQ3NDljOWE3MTQy
OTc5OTM2NDU5Y2E0NDI5ZTg5YWZhYjA3OThjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTIyNSw3ICsyMjUsNyBA
QCBKU0FycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRKU0J1ZmZl
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogCiB2b2lkIEpTQXJyYXlCdWZmZXJWaWV3OjpkZXRh
Y2goKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAgTG9j
a2VyIGxvY2tlciB7IGNlbGxMb2NrKCkgfTsKICAgICBSRUxFQVNFX0FTU0VSVChoYXNBcnJheUJ1
ZmZlcigpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghaXNTaGFyZWQoKSk7CiAgICAgbV9sZW5ndGgg
PSAwOwpAQCAtMzA5LDcgKzMwOSw3IEBAIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6
c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpCiAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSwgZmFsc2UsIDAsIDApKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhjZWxsTG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGNlbGxMb2NrKCkg
fTsKICAgICAgICAgYnV0dGVyZmx5KCktPmluZGV4aW5nSGVhZGVyKCktPnNldEFycmF5QnVmZmVy
KGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIG1fdmVjdG9yLnNldFdpdGhvdXRCYXJyaWVyKGJ1ZmZl
ci0+ZGF0YSgpLCBtX2xlbmd0aCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDc4Y2JiZjBjZGQ2YWVlNDFh
Njg1YTRiN2RkZWFlY2MyMjU4NWNmMjUuLjJjODg4NmM5YjQ1YTQyY2ZjNWRlZmJhYWUxNTZhMTM0
Y2M1MjEyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMjMs
NyArMTIzLDcgQEAgcHVibGljOgogCiAgICAgLy8gV2UgdXNlIHRoaXMgYWJzdHJhY3Rpb24gdG8g
bWFrZSBpdCBlYXNpZXIgdG8gZ3JlcCBmb3IgcGxhY2VzIHdoZXJlIHdlIGxvY2sgY2VsbHMuCiAg
ICAgLy8gdG8gbG9jayBhIGNlbGwgeW91IGNhbiBqdXN0IGRvOgotICAgIC8vIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2soY2VsbC0+Y2VsbExvY2tlcigpKTsKKyAgICAvLyBMb2NrZXIgbG9ja2VyIHsg
Y2VsbC0+Y2VsbExvY2tlcigpIH07CiAgICAgSlNDZWxsTG9jayYgY2VsbExvY2soKSB7IHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDxKU0NlbGxMb2NrKj4odGhpcyk7IH0KICAgICAKICAgICBKU1R5
cGUgdHlwZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcAppbmRleCAxNzIxMTZkYzg0NGRmNTRmNmMy
NTg4NmE1YmJjYjQ3NTcwZGRkNTk5Li41ZmFjMGU0OTIyMjFjMzRiZjY0OGYyNzc3NGQ5NmQ1MTNi
MmZhNDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEpTRmluYWxp
emF0aW9uUmVnaXN0cnk6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYg
dmlzaXRvcikKIAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGaW5hbGl6YXRpb25S
ZWdpc3RyeSo+KGNlbGwpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlzT2JqZWN0
LT5jZWxsTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVjdC0+Y2VsbExvY2so
KSB9OwogICAgIGZvciAoY29uc3QgYXV0byYgaXRlciA6IHRoaXNPYmplY3QtPm1fbGl2ZVJlZ2lz
dHJhdGlvbnMpIHsKICAgICAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiBpdGVyLnZhbHVl
KQogICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQocmVnaXN0cmF0aW9uLmhvbGRpbmdzKTsKQEAg
LTk4LDcgKzk4LDcgQEAgdm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpkZXN0cm95KEpTQ2Vs
bCogdGFibGUpCiAKIHZvaWQgSlNGaW5hbGl6YXRpb25SZWdpc3RyeTo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkoVk0mIHZtKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2so
KSk7CisgICAgTG9ja2VyIGxvY2tlciB7IGNlbGxMb2NrKCkgfTsKIAogI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVyIDogbV9kZWFkUmVnaXN0cmF0aW9ucykKQEAg
LTE3NCw3ICsxNzQsNyBAQCB2b2lkIEpTRmluYWxpemF0aW9uUmVnaXN0cnk6OnJ1bkZpbmFsaXph
dGlvbkNsZWFudXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogCiBKU1ZhbHVlIEpTRmlu
YWxpemF0aW9uUmVnaXN0cnk6OnRha2VEZWFkSG9sZGluZ3NWYWx1ZSgpCiB7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY2VsbExv
Y2soKSB9OwogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIGlmIChtX25vVW5yZWdpc3RyYXRpb25E
ZWFkLnNpemUoKSkKICAgICAgICAgcmVzdWx0ID0gbV9ub1VucmVnaXN0cmF0aW9uRGVhZC50YWtl
TGFzdCgpLmdldCgpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIEpTVmFsdWUgSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeTo6dGFrZURlYWRIb2xkaW5nc1ZhbHVlKCkKIAogdm9pZCBKU0ZpbmFsaXphdGlvblJl
Z2lzdHJ5OjpyZWdpc3RlclRhcmdldChWTSYgdm0sIEpTT2JqZWN0KiB0YXJnZXQsIEpTVmFsdWUg
aG9sZGluZ3MsIEpTVmFsdWUgdG9rZW4pCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhj
ZWxsTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY2VsbExvY2soKSB9OwogICAgIFJlZ2lz
dHJhdGlvbiByZWdpc3RyYXRpb247CiAgICAgcmVnaXN0cmF0aW9uLnRhcmdldCA9IHRhcmdldDsK
ICAgICByZWdpc3RyYXRpb24uaG9sZGluZ3Muc2V0V2l0aG91dFdyaXRlQmFycmllcihob2xkaW5n
cyk7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5OjpyZWdp
c3RlclRhcmdldChWTSYgdm0sIEpTT2JqZWN0KiB0YXJnZXQsIEpTVmFsdWUgaG8KIGJvb2wgSlNG
aW5hbGl6YXRpb25SZWdpc3RyeTo6dW5yZWdpc3RlcihWTSYsIEpTT2JqZWN0KiB0b2tlbikKIHsK
ICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdyaXRlIGJhcnJpZXIgb3Vyc2VsdmVzIGhlcmUgYmVj
YXVzZSB3ZSB3aWxsIG9ubHkgcG9pbnQgdG8gbGVzcyB0aGluZ3MgYWZ0ZXIgdGhpcyBmaW5pc2hl
cy4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworICAgIExvY2tlciBs
b2NrZXIgeyBjZWxsTG9jaygpIH07CiAgICAgYm9vbCByZXN1bHQgPSBtX2xpdmVSZWdpc3RyYXRp
b25zLnJlbW92ZSh0b2tlbik7CiAgICAgcmVzdWx0IHw9IG1fZGVhZFJlZ2lzdHJhdGlvbnMucmVt
b3ZlKHRva2VuKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBkNmYxMTQ1OTFl
NWQwYTVmNjAxMWNjNjU3ZWNmNzQ5MmU5N2UwYjlmLi5mYTI1Y2Q4MmFkZDNlNzcxZjkwNzYzNTdj
YjkzMmRhNjkwMTU3YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtNTM0LDcg
KzUzNCw3IEBAIHZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZpc2l0Q2hp
bGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYKICAgICBzaXplX3QgYnl0ZVNpemU7CiAg
ICAgCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRoaXNPYmplY3QtPmNl
bGxMb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVjdC0+Y2VsbExvY2so
KSB9OwogICAgICAgICBtb2RlID0gdGhpc09iamVjdC0+bV9tb2RlOwogICAgICAgICB2ZWN0b3Ig
PSB0aGlzT2JqZWN0LT52ZWN0b3IoKTsKICAgICAgICAgYnl0ZVNpemUgPSB0aGlzT2JqZWN0LT5i
eXRlU2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCmluZGV4IDlkMjgyZjIyMTVjMDY0ZWJhMjQ4OTVlYmQ1MmNiYzhjMmUwNGExN2Uu
LmMwZmNjZWJiYzllMzIyNmVmNzZlODM3MTA4YTE3ZWMyOWQwZWE1NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTM4Myw3ICsz
ODMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGlzYWJsZVNhbXBsaW5nUHJvZmlsZXIs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBwcm9maWxlciA9ICZnbG9i
YWxPYmplY3QtPnZtKCkuZW5zdXJlU2FtcGxpbmdQcm9maWxlcihTdG9wd2F0Y2g6OmNyZWF0ZSgp
KTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhwcm9maWxlci0+Z2V0
TG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHByb2ZpbGVyLT5nZXRMb2NrKCkgfTsK
ICAgICAgICAgcHJvZmlsZXItPnBhdXNlKGxvY2tlcik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAKaW5kZXggZTY1ZGYxODUxMzE0MjZiMTFjZDVjMjAwMjViNjJhZjVhNWU5MzYzOS4uOTZhMGY3
ZGE0M2QzY2U4MzExZmVjOTZkOTYzODM5YWFjOTg2ZTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApA
QCAtNjAsNyArNjAsNyBAQCB2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBBYnN0cgogICAgIG1fbW9kdWxlUmVj
b3JkLnNldCh2bSwgdGhpcywgbW9kdWxlUmVjb3JkKTsKICAgICBtX25hbWVzID0gRml4ZWRWZWN0
b3I8SWRlbnRpZmllcj4ocmVzb2x1dGlvbnMuc2l6ZSgpKTsKICAgICB7Ci0gICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBj
ZWxsTG9jaygpIH07CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBwYWlyIDogcmVzb2x1dGlvbnMpIHsKICAgICAgICAgICAgIG1fbmFtZXNbaW5k
ZXhdID0gcGFpci5maXJzdDsKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9y
KQogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmQpOwogICAgIHsKLSAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlzT2JqZWN0LT5jZWxsTG9jaygpKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IHRoaXNPYmplY3QtPmNlbGxMb2NrKCkgfTsKICAgICAgICAgZm9yIChh
dXRvJiBwYWlyIDogdGhpc09iamVjdC0+bV9leHBvcnRzKQogICAgICAgICAgICAgdmlzaXRvci5h
cHBlbmRIaWRkZW4ocGFpci52YWx1ZS5tb2R1bGVSZWNvcmQpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBkZmI4MTljYzg5ZWQwNzQyOGY3
YmU5OWE1N2MxZDM4YmZmZDdkYmRkLi43NjFjMzZlYTM4MGQ5YTU5ZGU5OTBhMjY3YzBmZmRlOTE3
ZGNhODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBA
IC0zODQsNyArMzg0LDcgQEAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIEpTT2JqZWN0Ojp2aXNp
dEJ1dHRlcmZseUltcGwoVmlzaXRvciYgdmlzaXRvcikKICAgICAgICAgLy8gYnV0dGVyZmx5IHdp
dGggY29udGlndW91cyBzaGFwZSBmb3IgbmV3IGFycmF5IHN0b3JhZ2UgYnV0dGVyZmx5LiBXaGVu
IGNvbnZlcnRpbmcgdGhlIGJ1dHRlcmZseQogICAgICAgICAvLyB3aXRoIGNvbnRpZ3VvdXMgc2hh
cGUgdG8gYXJyYXkgc3RvcmFnZSwgd2UgYWx3YXlzIGFsbG9jYXRlIGEgbmV3IG9uZS4gSG9sZGlu
ZyB0aGlzIGxvY2sgZm9yIGNvbnRpZ3VvdXMKICAgICAgICAgLy8gYnV0dGVyZmxpZXMgaXMgdW5u
ZWNlc3Nhcnkgc2luY2UgY29udGlndW91cyBzaGFwZWQgYnV0dGVyZmx5IG5ldmVyIGJlY29tZXMg
YnJva2VuIHN0YXRlLgotICAgICAgICBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKyAg
ICAgICAgbG9ja2VyID0gTG9ja2VyIHsgY2VsbExvY2soKSB9OwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAppbmRleCAyNjc3Y2EwMjI5MTkxY2VjOTZjZDUwYzEy
Y2Q3MTQ5ZDg1ZWY4ZWZkLi5mMzU0NmE4ODM0NTMzZmVkN2Y4ODFlNWRkNTJlNjUyZWZjZjY4ZThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1l
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIu
Y3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVy
RGlkRmlyZSgpCiAgICAgVmVjdG9yPFJlZjxKU1J1bkxvb3BUaW1lcj4+IHRpbWVyc1RvRmlyZTsK
IAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIFJ1bkxvb3AqIGN1cnJlbnRSdW5M
b29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKICAgICAgICAgRXBvY2hUaW1lIG5vd0Vwb2NoVGlt
ZSA9IGVwb2NoVGltZSgwX3MpOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9tYXBwaW5n
KSB7CkBAIC0xMjAsMTQgKzEyMCwxNCBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpy
ZWdpc3RlclZNKFZNJiB2bSkKIHsKICAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFBlclZNRGF0
YT4oKnRoaXMsIHZtLnJ1bkxvb3AoKSk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9tYXBwaW5nLmFkZCh7IHZtLmFwaUxvY2soKSB9LCBXVEZNb3ZlKGRhdGEpKTsKICAgICBS
RUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKIHZvaWQgSlNSdW5Mb29w
VGltZXI6Ok1hbmFnZXI6OnVucmVnaXN0ZXJWTShWTSYgdm0pCiB7Ci0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAg
IGF1dG8gaXRlciA9IG1fbWFwcGluZy5maW5kKHsgdm0uYXBpTG9jaygpIH0pOwogICAgIFJFTEVB
U0VfQVNTRVJUKGl0ZXIgIT0gbV9tYXBwaW5nLmVuZCgpKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCB2
b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpzY2hlZHVsZVRpbWVyKEpTUnVuTG9vcFRpbWVy
JiB0aW1lciwgU2Vjb25kcyBkZWxheQogewogICAgIEVwb2NoVGltZSBmaXJlRXBvY2hUaW1lID0g
ZXBvY2hUaW1lKGRlbGF5KTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgYXV0byBpdGVyID0gbV9tYXBwaW5n
LmZpbmQodGltZXIubV9hcGlMb2NrKTsKICAgICBSRUxFQVNFX0FTU0VSVChpdGVyICE9IG1fbWFw
cGluZy5lbmQoKSk7IC8vIFdlIGRvbid0IGFsbG93IGNhbGxpbmcgdGhpcyBhZnRlciB0aGUgVk0g
ZGllcy4KIApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6
OnNjaGVkdWxlVGltZXIoSlNSdW5Mb29wVGltZXImIHRpbWVyLCBTZWNvbmRzIGRlbGF5CiAKIHZv
aWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OmNhbmNlbFRpbWVyKEpTUnVuTG9vcFRpbWVyJiB0
aW1lcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OwogICAgIGF1dG8gaXRlciA9IG1fbWFwcGluZy5maW5kKHRpbWVy
Lm1fYXBpTG9jayk7CiAgICAgaWYgKGl0ZXIgPT0gbV9tYXBwaW5nLmVuZCgpKSB7CiAgICAgICAg
IC8vIEl0J3MgdHJpdmlhbCB0byBhbGxvdyB0aGlzIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgVk0g
ZGllcywgc28gd2UgYWxsb3cgZm9yIGl0LgpAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgSlNSdW5M
b29wVGltZXI6Ok1hbmFnZXI6OmNhbmNlbFRpbWVyKEpTUnVuTG9vcFRpbWVyJiB0aW1lcikKIAog
T3B0aW9uYWw8U2Vjb25kcz4gSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVVbnRpbEZpcmUo
SlNSdW5Mb29wVGltZXImIHRpbWVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9s
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgYXV0byBpdGVyID0gbV9t
YXBwaW5nLmZpbmQodGltZXIubV9hcGlMb2NrKTsKICAgICBSRUxFQVNFX0FTU0VSVChpdGVyICE9
IG1fbWFwcGluZy5lbmQoKSk7IC8vIFdlIG9ubHkgYWxsb3cgdGhpcyB0byBiZSBjYWxsZWQgd2l0
aCBhIGxpdmUgVk0uCiAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjp0
aW1lckRpZEZpcmUoKQogICAgIE5PX1RBSUxfQ0FMTFMoKTsKIAogICAgIHsKLSAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CiAgICAgICAgIGlmICghbV9pc1NjaGVkdWxlZCkgewogICAgICAgICAgICAgLy8gV2Ug
cmFjZWQgYmV0d2VlbiB0aGlzIGNhbGxiYWNrIGJlaW5nIGNhbGxlZCBhbmQgY2FuY2VsKCkgYmVp
bmcgY2FsbGVkLgogICAgICAgICAgICAgLy8gVGhhdCdzIGZpbmUsIHdlIGp1c3QgZG9uJ3QgZG8g
YW55dGhpbmcgaGVyZS4KQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjp0
aW1lckRpZEZpcmUoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2FwaUxvY2suZ2V0KCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2FwaUxvY2suZ2V0
KCkgfTsKICAgICBSZWZQdHI8Vk0+IHZtID0gbV9hcGlMb2NrLT52bSgpOwogICAgIGlmICghdm0p
IHsKICAgICAgICAgLy8gVGhlIFZNIGhhcyBiZWVuIGRlc3Ryb3llZCwgc28gd2Ugc2hvdWxkIGp1
c3QgZ2l2ZSB1cC4KQEAgLTI0NywzMiArMjQ3LDMyIEBAIE9wdGlvbmFsPFNlY29uZHM+IEpTUnVu
TG9vcFRpbWVyOjp0aW1lVW50aWxGaXJlKCkKIHZvaWQgSlNSdW5Mb29wVGltZXI6OnNldFRpbWVV
bnRpbEZpcmUoU2Vjb25kcyBpbnRlcnZhbEluU2Vjb25kcykKIHsKICAgICB7Ci0gICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgICAgICBtX2lzU2NoZWR1bGVkID0gdHJ1ZTsKICAgICAgICAgTWFuYWdlcjo6
c2hhcmVkKCkuc2NoZWR1bGVUaW1lcigqdGhpcywgaW50ZXJ2YWxJblNlY29uZHMpOwogICAgIH0K
IAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90aW1lckNhbGxiYWNrc0xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX3RpbWVyQ2FsbGJhY2tzTG9jayB9OwogICAgIGZvciAoYXV0byYg
dGFzayA6IG1fdGltZXJTZXRDYWxsYmFja3MpCiAgICAgICAgIHRhc2stPnJ1bigpOwogfQogCiB2
b2lkIEpTUnVuTG9vcFRpbWVyOjpjYW5jZWxUaW1lcigpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBtX2lz
U2NoZWR1bGVkID0gZmFsc2U7CiAgICAgTWFuYWdlcjo6c2hhcmVkKCkuY2FuY2VsVGltZXIoKnRo
aXMpOwogfQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjphZGRUaW1lclNldE5vdGlmaWNhdGlvbihU
aW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxiYWNrKQogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV90aW1lckNhbGxiYWNrc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Rp
bWVyQ2FsbGJhY2tzTG9jayB9OwogICAgIG1fdGltZXJTZXRDYWxsYmFja3MuYWRkKGNhbGxiYWNr
KTsKIH0KIAogdm9pZCBKU1J1bkxvb3BUaW1lcjo6cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24o
VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayBjYWxsYmFjaykKIHsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fdGltZXJDYWxsYmFja3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90
aW1lckNhbGxiYWNrc0xvY2sgfTsKICAgICBtX3RpbWVyU2V0Q2FsbGJhY2tzLnJlbW92ZShjYWxs
YmFjayk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAKaW5kZXggYTE4MmZjNzdiZTJjMmFlNDhj
M2IwOTlmNjc2NThmZDQ3Nzk1MDQ5OC4uZWJjYTIxZTg5OWVkOTdjOTcxNzllMGQyNDAyZGYzNzIx
NTNhYjExNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Q6OnNfaW5mbyA9IHsgIlNlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0IiwKIAogU2NvcGVPZmZzZXQgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dDo6ZmluZFZhcmlhYmxlSW5kZXgodm9pZCogdmFyaWFibGVBZGRyZXNzKQogewotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IGNlbGxM
b2NrKCkgfTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ZhcmlhYmxlcy5zaXplKCk7
IGktLTspIHsKICAgICAgICAgaWYgKCZtX3ZhcmlhYmxlc1tpXSAhPSB2YXJpYWJsZUFkZHJlc3Mp
CkBAIC01MSw3ICs1MSw3IEBAIFNjb3BlT2Zmc2V0IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Q6
OmZpbmRWYXJpYWJsZUluZGV4KHZvaWQqIHZhcmlhYmxlQWRkcmVzcykKIAogU2NvcGVPZmZzZXQg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdDo6YWRkVmFyaWFibGVzKHVuc2lnbmVkIG51bWJlck9m
VmFyaWFibGVzVG9BZGQsIEpTVmFsdWUgaW5pdGlhbFZhbHVlKQogewotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2soY2VsbExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IGNlbGxMb2NrKCkg
fTsKICAgICAKICAgICBzaXplX3Qgb2xkU2l6ZSA9IG1fdmFyaWFibGVzLnNpemUoKTsKICAgICBt
X3ZhcmlhYmxlcy5ncm93KG9sZFNpemUgKyBudW1iZXJPZlZhcmlhYmxlc1RvQWRkKTsKQEAgLTcx
LDcgKzcxLDcgQEAgdm9pZCBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVu
SW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IKICAgICAKICAgICAvLyBGSVhNRTog
V2UgY291bGQgYXZvaWQgbG9ja2luZyBoZXJlIGlmIFNlZ21lbnRlZFZlY3RvciB3YXMgbG9jay1m
cmVlLiBJdCBjb3VsZCBiZSBtYWRlIGxvY2stZnJlZQogICAgIC8vIHJlbGF0aXZlbHkgZWFzaWx5
LgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhpc09iamVjdC0+Y2VsbExvY2soKSk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IHRoaXNPYmplY3QtPmNlbGxMb2NrKCkgfTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSB0aGlzT2JqZWN0LT5tX3ZhcmlhYmxlcy5zaXplKCk7IGktLTspCiAgICAgICAg
IHZpc2l0b3IuYXBwZW5kSGlkZGVuKHRoaXNPYmplY3QtPm1fdmFyaWFibGVzW2ldKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1F
eGVjdXRhYmxlLmNwcAppbmRleCBkNzk0Y2U2YmI0ZDIyZDk5OTUxMjAyOGE0M2NlZWJiNDgzZmE5
NjA1Li5kZWYwNzNjMDUwYjBkZWM4MDM1MzIwMzU0ZWUyY2MwNmM2ZjRjNDc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6
OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayk7CiAgICAgaWYgKFRlbXBsYXRlT2JqZWN0TWFwKiBtYXAgPSB0aGlzT2JqZWN0LT5tX3RlbXBs
YXRlT2JqZWN0TWFwLmdldCgpKSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhp
c09iamVjdC0+Y2VsbExvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyB0aGlzT2JqZWN0
LT5jZWxsTG9jaygpIH07CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiAqbWFwKQogICAgICAg
ICAgICAgdmlzaXRvci5hcHBlbmQoZW50cnkudmFsdWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXJyb3dpbmdOdW1i
ZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCmluZGV4IGZkNDNkMDNlOWNjY2IzOTdiZDQ0MTJh
NjhjMTNkZjkzM2Q4MmMzNzcuLmNkY2VmMTIwNDMzNDk3ZWMyZThhMWQ3ZDNlYWZmM2MxY2VkMmM0
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hcnJvd2luZ051
bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcApAQCAtMzcs
NyArMzcsNyBAQCBOYXJyb3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6Ok5hcnJvd2lu
Z051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudChWTSYgdgogCiBTcGVjdWxhdGVkVHlwZSBOYXJy
b3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ6OmdldFByZWRpY3Rpb24oQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIFNwZWN1bGF0ZWRUeXBl
IG9yaWdpbmFsKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBpZiAoIShvcmlnaW5hbCAmJiBzcGVjdWxh
dGlvbkNoZWNrZWQob3JpZ2luYWwsIFNwZWNCeXRlY29kZU51bWJlcikpKQogICAgICAgICByZXR1
cm4gb3JpZ2luYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9n
cmFtRXhlY3V0YWJsZS5jcHAKaW5kZXggZGM0NWMyY2NhOGM2OTZiZTM5YThhYzk4NzFhZTRlNzZi
NjFkYTVlZS4uZWFiZmE4NWFjYTM3ZWYwYWE3YzdkZjg5NWVhZTQxNzM5ZDE1NDkwZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNw
cApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRy
ZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jayk7CiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9wcm9ncmFtQ29kZUJsb2NrKTsKICAgICBpZiAoVGVtcGxhdGVP
YmplY3RNYXAqIG1hcCA9IHRoaXNPYmplY3QtPm1fdGVtcGxhdGVPYmplY3RNYXAuZ2V0KCkpIHsK
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlzT2JqZWN0LT5jZWxsTG9jaygpKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRoaXNPYmplY3QtPmNlbGxMb2NrKCkgfTsKICAgICAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6ICptYXApCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChl
bnRyeS52YWx1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SYW5kb21pemluZ0Z1enplckFnZW50LmNwcAppbmRleCBjOWM1NGU3ZTNjYzgwZmRk
NWE1N2FkMzY2ZGMyMzc5YmE5ZDk2MzY5Li4xN2IyNmM2OWI0ZjY1ZjI5OWJjOTRkNWJmOTY2NDAy
NmIzMDBlNDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SYW5k
b21pemluZ0Z1enplckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SYW5kb21pemluZ0Z1enplckFnZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSYW5kb21pemlu
Z0Z1enplckFnZW50OjpSYW5kb21pemluZ0Z1enplckFnZW50KFZNJikKIAogU3BlY3VsYXRlZFR5
cGUgUmFuZG9taXppbmdGdXp6ZXJBZ2VudDo6Z2V0UHJlZGljdGlvbihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgU3BlY3VsYXRlZFR5cGUgb3JpZ2lu
YWwpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICB1aW50MzJfdCBoaWdoID0gbV9yYW5kb20uZ2V0VWludDMy
KCk7CiAgICAgdWludDMyX3QgbG93ID0gbV9yYW5kb20uZ2V0VWludDMyKCk7CiAgICAgU3BlY3Vs
YXRlZFR5cGUgZ2VuZXJhdGVkID0gc3RhdGljX2Nhc3Q8U3BlY3VsYXRlZFR5cGU+KChzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oaGlnaCkgPDwgMzIpIHwgbG93KSAmIFNwZWNGdWxsVG9wOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5kZXggMzNkMWY5ZTQwM2JjMjk4MTc3
YTM2NDNmZTYyNDgxMTljNDE4ODUxYy4uZWU1OWE4YzBjZGM1ZDhkNWM4NGJiNTU2NTk4MDBmOTBh
NGU0NzdkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC0y
NDIsNyArMjQyLDcgQEAgdm9pZCBSZWdFeHA6OmJ5dGVDb2RlQ29tcGlsZUlmTmVjZXNzYXJ5KFZN
KiB2bSkKIAogdm9pZCBSZWdFeHA6OmNvbXBpbGUoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUg
Y2hhclNpemUpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgY2VsbExvY2soKSB9OwogICAgIAogICAgIFlhcnI6OllhcnJQYXR0
ZXJuIHBhdHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBtX2ZsYWdzLCBtX2NvbnN0cnVjdGlvbkVycm9y
Q29kZSk7CiAgICAgaWYgKGhhc0Vycm9yKG1fY29uc3RydWN0aW9uRXJyb3JDb2RlKSkgewpAQCAt
MjkzLDcgKzI5Myw3IEBAIGludCBSZWdFeHA6Om1hdGNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPCiBib29sIFJlZ0V4cDo6bWF0
Y2hDb25jdXJyZW50bHkoCiAgICAgVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9uLCBWZWN0b3I8aW50PiYgb3ZlY3RvcikKIHsKLSAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBj
ZWxsTG9jaygpIH07CiAKICAgICBpZiAoIWhhc0NvZGVGb3Iocy5pczhCaXQoKSA/IFlhcnI6OkNo
YXI4IDogWWFycjo6Q2hhcjE2KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA2LDcgKzMw
Niw3IEBAIGJvb2wgUmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSgKIAogdm9pZCBSZWdFeHA6OmNv
bXBpbGVNYXRjaE9ubHkoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7Ci0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgY2VsbExvY2soKSB9OwogICAgIAogICAgIFlhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9w
YXR0ZXJuU3RyaW5nLCBtX2ZsYWdzLCBtX2NvbnN0cnVjdGlvbkVycm9yQ29kZSk7CiAgICAgaWYg
KGhhc0Vycm9yKG1fY29uc3RydWN0aW9uRXJyb3JDb2RlKSkgewpAQCAtMzU2LDcgKzM1Niw3IEBA
IE1hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lCiAKIGJvb2wgUmVnRXhwOjptYXRjaENvbmN1cnJlbnRs
eShWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hdGNoUmVz
dWx0JiByZXN1bHQpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgY2VsbExvY2soKSB9OwogCiAgICAgaWYgKCFoYXNNYXRjaE9u
bHlDb2RlRm9yKHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTM2Nyw3ICszNjcsNyBAQCBib29sIFJlZ0V4cDo6bWF0Y2hD
b25jdXJyZW50bHkoVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCBNYQogCiB2b2lkIFJlZ0V4cDo6ZGVsZXRlQ29kZSgpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhjZWxsTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY2VsbExvY2soKSB9Owog
ICAgIAogICAgIGlmICghaGFzQ29kZSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IDVjM2Q0
NTIzZGJkNmQxOTg1ODgwOThkZGNkMzA1NWIyNzEwM2Y2YjQuLjVmZjU4N2VlOTQwMTU4ZTY0ZWU5
ZDE2MGJmNjAwNDRhMWI2OWRmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCkBAIC0zNTAsMTMgKzM1MCwxMyBAQCB2b2lkIFNh
bXBsaW5nUHJvZmlsZXI6OnRha2VTYW1wbGUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBTZWNvbmRz
JiBzdGFja1RyYWNlUHJvYwogICAgIGlmIChtX3ZtLmVudHJ5U2NvcGUpIHsKICAgICAgICAgU2Vj
b25kcyBub3dUaW1lID0gbV9zdG9wd2F0Y2gtPmVsYXBzZWRUaW1lKCk7CiAKLSAgICAgICAgYXV0
byBtYWNoaW5lVGhyZWFkc0xvY2tlciA9IGhvbGRMb2NrKG1fdm0uaGVhcC5tYWNoaW5lVGhyZWFk
cygpLmdldExvY2soKSk7Ci0gICAgICAgIGF1dG8gY29kZUJsb2NrU2V0TG9ja2VyID0gaG9sZExv
Y2sobV92bS5oZWFwLmNvZGVCbG9ja1NldCgpLmdldExvY2soKSk7Ci0gICAgICAgIGF1dG8gZXhl
Y3V0YWJsZUFsbG9jYXRvckxvY2tlciA9IGhvbGRMb2NrKEV4ZWN1dGFibGVBbGxvY2F0b3I6OnNp
bmdsZXRvbigpLmdldExvY2soKSk7CisgICAgICAgIExvY2tlciBtYWNoaW5lVGhyZWFkc0xvY2tl
ciB7IG1fdm0uaGVhcC5tYWNoaW5lVGhyZWFkcygpLmdldExvY2soKSB9OworICAgICAgICBMb2Nr
ZXIgY29kZUJsb2NrU2V0TG9ja2VyIHsgbV92bS5oZWFwLmNvZGVCbG9ja1NldCgpLmdldExvY2so
KSB9OworICAgICAgICBMb2NrZXIgZXhlY3V0YWJsZUFsbG9jYXRvckxvY2tlciB7IEV4ZWN1dGFi
bGVBbGxvY2F0b3I6OnNpbmdsZXRvbigpLmdldExvY2soKSB9OwogICAgICAgICBPcHRpb25hbDxM
b2NrSG9sZGVyPiB3YXNtQ2FsbGVlc0xvY2tlcjsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgICAgIGlmIChXYXNtOjppc1N1cHBvcnRlZCgpKQotICAgICAgICAgICAgd2FzbUNhbGxlZXNM
b2NrZXIgPSBob2xkTG9jayhXYXNtOjpDYWxsZWVSZWdpc3RyeTo6c2luZ2xldG9uKCkuZ2V0TG9j
aygpKTsKKyAgICAgICAgICAgIHdhc21DYWxsZWVzTG9ja2VyID0gTG9ja2VyIHsgV2FzbTo6Q2Fs
bGVlUmVnaXN0cnk6OnNpbmdsZXRvbigpLmdldExvY2soKSB9OwogI2VuZGlmCiAKICAgICAgICAg
YXV0byBkaWRTdXNwZW5kID0gbV9qc2NFeGVjdXRpb25UaHJlYWQtPnN1c3BlbmQoKTsKQEAgLTk1
MSw3ICs5NTEsNyBAQCBWZWN0b3I8U2FtcGxpbmdQcm9maWxlcjo6U3RhY2tUcmFjZT4gU2FtcGxp
bmdQcm9maWxlcjo6cmVsZWFzZVN0YWNrVHJhY2VzKGNvbnN0CiBTdHJpbmcgU2FtcGxpbmdQcm9m
aWxlcjo6c3RhY2tUcmFjZXNBc0pTT04oKQogewogICAgIERlZmVyR0MgZGVmZXJHQyhtX3ZtLmhl
YXApOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAKICAgICB7CiAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFw
SXRlcmF0aW9uU2NvcGUobV92bS5oZWFwKTsKQEAgLTEwMjcsNyArMTAyNyw3IEBAIHZvaWQgU2Ft
cGxpbmdQcm9maWxlcjo6cmVwb3J0VG9wRnVuY3Rpb25zKCkKIAogdm9pZCBTYW1wbGluZ1Byb2Zp
bGVyOjpyZXBvcnRUb3BGdW5jdGlvbnMoUHJpbnRTdHJlYW0mIG91dCkKIHsKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owog
ICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyhtX3ZtLmhlYXApOwogCiAgICAgewpAQCAtMTA4
OCw3ICsxMDg4LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBvcnRUb3BCeXRlY29kZXMo
KQogCiB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2RlcyhQcmludFN0cmVh
bSYgb3V0KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKG1fdm0u
aGVhcCk7CiAKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDlkZTk3ZTdjZThmYzg4ZDZmZDNhMTc1NGVmYjlkYzUw
NzI3ODRlMzMuLjI3MDY1NWU5YzMxMDllMTJkYzUzZjM4MmJjMzRjMjQ4OGJhMjNjYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3Bw
CkBAIC00NTUsNyArNDU1LDcgQEAgSlNBcnJheSogU2NyaXB0RXhlY3V0YWJsZTo6Y3JlYXRlVGVt
cGxhdGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICBUZW1wbGF0
ZU9iamVjdE1hcCYgdGVtcGxhdGVPYmplY3RNYXAgPSBlbnN1cmVUZW1wbGF0ZU9iamVjdE1hcCh2
bSk7CiAgICAgVGVtcGxhdGVPYmplY3RNYXA6OkFkZFJlc3VsdCByZXN1bHQ7CiAgICAgewotICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgY2VsbExvY2soKSB9OwogICAgICAgICByZXN1bHQgPSB0ZW1wbGF0ZU9iamVjdE1h
cC5hZGQoZGVzY3JpcHRvci0+ZW5kT2Zmc2V0KCksIFdyaXRlQmFycmllcjxKU0FycmF5PigpKTsK
ICAgICB9CiAgICAgaWYgKEpTQXJyYXkqIGFycmF5ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5n
ZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFy
cmF5VmFsdWVNYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJy
YXlWYWx1ZU1hcC5jcHAKaW5kZXggZGViYzZmYTM2ZDhlODdkNWI0MTI5NWIwOWJkOWQ2MmJiOGI5
NjM4My4uY2UxN2I4Nzc5MzgyZDI0YmU5NzIxMDRkYmY5MTExMzQzMGU4NTFlYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5j
cHAKQEAgLTY5LDcgKzY5LDcgQEAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVzdWx0IFNwYXJz
ZUFycmF5VmFsdWVNYXA6OmFkZChKU09iamVjdCogYXJyYXksIHVuc2lnbmUKICAgICBBZGRSZXN1
bHQgcmVzdWx0OwogICAgIHNpemVfdCBpbmNyZWFzZWRDYXBhY2l0eSA9IDA7CiAgICAgewotICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgY2VsbExvY2soKSB9OwogICAgICAgICByZXN1bHQgPSBtX21hcC5hZGQoaSwgU3Bh
cnNlQXJyYXlFbnRyeSgpKTsKICAgICAgICAgc2l6ZV90IGNhcGFjaXR5ID0gbV9tYXAuY2FwYWNp
dHkoKTsKICAgICAgICAgaWYgKGNhcGFjaXR5ID4gbV9yZXBvcnRlZENhcGFjaXR5KSB7CkBAIC04
NCwxMyArODQsMTMgQEAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVzdWx0IFNwYXJzZUFycmF5
VmFsdWVNYXA6OmFkZChKU09iamVjdCogYXJyYXksIHVuc2lnbmUKIAogdm9pZCBTcGFyc2VBcnJh
eVZhbHVlTWFwOjpyZW1vdmUoaXRlcmF0b3IgaXQpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhjZWxsTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY2VsbExvY2soKSB9OwogICAg
IG1fbWFwLnJlbW92ZShpdCk7CiB9CiAKIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cmVtb3Zl
KHVuc2lnbmVkIGkpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgY2VsbExvY2soKSB9OwogICAgIG1fbWFwLnJlbW92ZShpKTsK
IH0KIApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGly
ZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBhcnJhCiAKIEpTVmFs
dWUgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Z2V0Q29uY3VycmVudGx5KHVuc2lnbmVkIGkpCiB7Ci0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgY2VsbExvY2soKSB9OwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX21hcC5maW5kKGkpOwogICAg
IGlmIChpdGVyYXRvciA9PSBtX21hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
QEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnZpc2l0Q2hpbGRy
ZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bihjZWxsLCB2aXNpdG9yKTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
dGhpc09iamVjdC0+Y2VsbExvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyB0aGlzT2Jq
ZWN0LT5jZWxsTG9jaygpIH07CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiB0aGlzT2JqZWN0
LT5tX21hcCkKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKGVudHJ5LnZhbHVlLmFzVmFsdWUo
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
aW5kZXggOGM2NjE2MTkwM2ZkMDBkYzM4ZDZjMzE1NjAzYmJkZDU4NDZhYjM5ZS4uYWY1MjYxMTcz
NzBkOTUyOTA1NzM0NDIzYjY3N2UxOTk1ZTViMGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC03MTAsNyArNzEwLDcgQEAgU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlMKICAgICB0cmFuc2l0aW9uLT5tX3Byb3RvdHlwZS5zZXQodm0sIHRyYW5zaXRp
b24sIHByb3RvdHlwZSk7CiAKICAgICBQcm9wZXJ0eVRhYmxlKiB0YWJsZSA9IHN0cnVjdHVyZS0+
Y29weVByb3BlcnR5VGFibGVGb3JQaW5uaW5nKHZtKTsKLSAgICB0cmFuc2l0aW9uLT5waW4oaG9s
ZExvY2sodHJhbnNpdGlvbi0+bV9sb2NrKSwgdm0sIHRhYmxlKTsKKyAgICB0cmFuc2l0aW9uLT5w
aW4oTG9ja2VyIHsgdHJhbnNpdGlvbi0+bV9sb2NrIH0sIHZtLCB0YWJsZSk7CiAgICAgdHJhbnNp
dGlvbi0+c2V0TWF4T2Zmc2V0KHZtLCBzdHJ1Y3R1cmUtPm1heE9mZnNldCgpKTsKICAgICAKICAg
ICB0cmFuc2l0aW9uLT5jaGVja09mZnNldENvbnNpc3RlbmN5KCk7CkBAIC04MDIsNyArODAyLDcg
QEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnRvRGljdGlvbmFyeVRyYW5zaXRpb24oVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRGljdGkKICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBj
cmVhdGUodm0sIHN0cnVjdHVyZSwgZGVmZXJyZWQpOwogCiAgICAgUHJvcGVydHlUYWJsZSogdGFi
bGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyh2bSk7Ci0gICAgdHJh
bnNpdGlvbi0+cGluKGhvbGRMb2NrKHRyYW5zaXRpb24tPm1fbG9jayksIHZtLCB0YWJsZSk7Cisg
ICAgdHJhbnNpdGlvbi0+cGluKExvY2tlciB7IHRyYW5zaXRpb24tPm1fbG9jayB9LCB2bSwgdGFi
bGUpOwogICAgIHRyYW5zaXRpb24tPnNldE1heE9mZnNldCh2bSwgc3RydWN0dXJlLT5tYXhPZmZz
ZXQoKSk7CiAgICAgdHJhbnNpdGlvbi0+c2V0RGljdGlvbmFyeUtpbmQoa2luZCk7CiAgICAgdHJh
bnNpdGlvbi0+c2V0SGFzQmVlbkRpY3Rpb25hcnkodHJ1ZSk7CkBAIC04NzksNyArODc5LDcgQEAg
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvblNsb3coVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVHIKICAgICAgICAgLy8gdGFibGUgZG9lc24ndCBrbm93IGhv
dyB0byB0YWtlIGludG8gYWNjb3VudCBzdWNoIHdob2xlc2FsZSBlZGl0cy4KIAogICAgICAgICBQ
cm9wZXJ0eVRhYmxlKiB0YWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGVGb3JQaW5u
aW5nKHZtKTsKLSAgICAgICAgdHJhbnNpdGlvbi0+cGluRm9yQ2FjaGluZyhob2xkTG9jayh0cmFu
c2l0aW9uLT5tX2xvY2spLCB2bSwgdGFibGUpOworICAgICAgICB0cmFuc2l0aW9uLT5waW5Gb3JD
YWNoaW5nKExvY2tlciB7IHRyYW5zaXRpb24tPm1fbG9jayB9LCB2bSwgdGFibGUpOwogICAgICAg
ICB0cmFuc2l0aW9uLT5zZXRNYXhPZmZzZXQodm0sIHN0cnVjdHVyZS0+bWF4T2Zmc2V0KCkpOwog
ICAgICAgICAKICAgICAgICAgdGFibGUgPSB0cmFuc2l0aW9uLT5wcm9wZXJ0eVRhYmxlT3JOdWxs
KCk7CkBAIC05MDIsOSArOTAyLDkgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5
VHJhbnNpdGlvblNsb3coVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVHIKICAgICAKICAg
ICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAgICBQcm9wZXJ0eVRhYmxl
KiB0YWJsZSA9IHRyYW5zaXRpb24tPmVuc3VyZVByb3BlcnR5VGFibGUodm0pOwotICAgICAgICB0
cmFuc2l0aW9uLT5waW4oaG9sZExvY2sodHJhbnNpdGlvbi0+bV9sb2NrKSwgdm0sIHRhYmxlKTsK
KyAgICAgICAgdHJhbnNpdGlvbi0+cGluKExvY2tlciB7IHRyYW5zaXRpb24tPm1fbG9jayB9LCB2
bSwgdGFibGUpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
c3RydWN0dXJlLT5tX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc3RydWN0dXJlLT5t
X2xvY2sgfTsKICAgICAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQodm0sIHRy
YW5zaXRpb24pOwogICAgIH0KIApAQCAtMTU0Myw5ICsxNTQzLDkgQEAgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBT
eW1ib2wqIGIKIAogICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAg
IFByb3BlcnR5VGFibGUqIHRhYmxlID0gdHJhbnNpdGlvbi0+ZW5zdXJlUHJvcGVydHlUYWJsZSh2
bSk7Ci0gICAgICAgIHRyYW5zaXRpb24tPnBpbihob2xkTG9jayh0cmFuc2l0aW9uLT5tX2xvY2sp
LCB2bSwgdGFibGUpOworICAgICAgICB0cmFuc2l0aW9uLT5waW4oTG9ja2VyIHsgdHJhbnNpdGlv
bi0+bV9sb2NrIH0sIHZtLCB0YWJsZSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhzdHJ1Y3R1cmUtPm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBzdHJ1Y3R1cmUtPm1fbG9jayB9OwogICAgICAgICBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRh
YmxlLmFkZCh2bSwgdHJhbnNpdGlvbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5jcHAKaW5kZXggMjlkODcwZDE1YTQ5NjM0ZmVk
MjEyOWU5NDU0NjZhN2UzZTlmN2FmYS4uMTRlMWNjYjVmZDJhMGY0MmE4MDU5YTZkODU3NDMxODNj
OTA4ZjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUNhY2hlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmVD
YWNoZTo6Y3JlYXRlRW1wdHlTdHJ1Y3R1cmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAg
ICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNyZWF0ZSgKICAgICAgICAgICAgIHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgdHlwZUluZm8sIGNsYXNzSW5mbywgaW5kZXhpbmdUeXBlLCBp
bmxpbmVDYXBhY2l0eSk7CiAgICAgfQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgbV9zdHJ1Y3R1cmVzLnNldChr
ZXksIHN0cnVjdHVyZSk7CiAgICAgcmV0dXJuIHN0cnVjdHVyZTsKIH0KQEAgLTY4LDcgKzY4LDcg
QEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmVDYWNoZTo6ZW1wdHlPYmplY3RTdHJ1Y3R1cmVDb25jdXJy
ZW50bHkoSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICBSRUxFQVNFX0FTU0VSVCghIXByb3RvdHlw
ZSk7IC8vIFdlIHVzZSBudWxscHRyIGluc2lkZSB0aGUgSGFzaE1hcCBmb3IgcHJvdG90eXBlIHRv
IG1lYW4gcG9seSBwcm90bywgc28gdXNlcidzIG9mIHRoaXMgQVBJIG11c3QgcHJvdmlkZSBub24t
bnVsbCBwcm90b3R5cGVzLgogICAgIAogICAgIFByb3RvdHlwZUtleSBrZXkgeyBwcm90b3R5cGUs
IG51bGxwdHIsIGlubGluZUNhcGFjaXR5LCBKU0ZpbmFsT2JqZWN0OjppbmZvKCksIGdsb2JhbE9i
amVjdCB9OwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9zdHJ1
Y3R1cmVzLmdldChrZXkpKSB7CiAgICAgICAgIEFTU0VSVChwcm90b3R5cGUtPm1heUJlUHJvdG90
eXBlKCkpOwogICAgICAgICByZXR1cm4gc3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCmluZGV4IDgwODYzMTI2ZDcwMTgzNGUxOWZhYWU4NjRlNWMyMGI3MDRhZWZiOGIu
Ljk5NjI5M2M3YmZkZjFkMzk4NDdlMWUxM2M2MDY2YjU5YmYxMGY0N2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTU4NSwxMiArNTg1LDEyIEBAIHN0YXRpYyBSZWFkV3Jp
dGVMb2NrIHNfZGVzdHJ1Y3Rpb25Mb2NrOwogCiB2b2lkIHdhaXRGb3JWTURlc3RydWN0aW9uKCkK
IHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNfZGVzdHJ1Y3Rpb25Mb2NrLndyaXRlKCkp
OworICAgIExvY2tlciBsb2NrZXIgeyBzX2Rlc3RydWN0aW9uTG9jay53cml0ZSgpIH07CiB9CiAK
IFZNOjp+Vk0oKQogewotICAgIGF1dG8gZGVzdHJ1Y3Rpb25Mb2NrZXIgPSBob2xkTG9jayhzX2Rl
c3RydWN0aW9uTG9jay5yZWFkKCkpOworICAgIExvY2tlciBkZXN0cnVjdGlvbkxvY2tlciB7IHNf
ZGVzdHJ1Y3Rpb25Mb2NrLnJlYWQoKSB9OwogICAgIAogICAgIEdpZ2FjYWdlOjpyZW1vdmVQcmlt
aXRpdmVEaXNhYmxlQ2FsbGJhY2socHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZENhbGxiYWNrLCB0
aGlzKTsKICAgICBkZWZlcnJlZFdvcmtUaW1lci0+c3RvcFJ1bm5pbmdUYXNrcygpOwpAQCAtMTEy
OSw3ICsxMTI5LDcgQEAgdm9pZCBWTTo6dXBkYXRlU3RhY2tMaW1pdHMoKQogI2lmIEVOQUJMRShE
RkdfSklUKQogdm9pZCBWTTo6Z2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKENvbnNlcnZhdGl2ZVJv
b3RzJiBjb25zZXJ2YXRpdmVSb290cykKIHsKLSAgICBhdXRvIGxvY2sgPSBob2xkTG9jayhtX3Nj
cmF0Y2hCdWZmZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zY3JhdGNoQnVmZmVyTG9j
ayB9OwogICAgIGZvciAoYXV0byogc2NyYXRjaEJ1ZmZlciA6IG1fc2NyYXRjaEJ1ZmZlcnMpIHsK
ICAgICAgICAgaWYgKHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxlbmd0aCgpKSB7CiAgICAgICAgICAg
ICB2b2lkKiBidWZmZXJTdGFydCA9IHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKTsKQEAgLTE0
OTMsNyArMTQ5Myw3IEBAIFNjcmF0Y2hCdWZmZXIqIFZNOjpzY3JhdGNoQnVmZmVyRm9yU2l6ZShz
aXplX3Qgc2l6ZSkKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NjcmF0Y2hCdWZmZXJMb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zY3JhdGNoQnVmZmVyTG9jayB9OwogCiAgICAgaWYgKHNpemUgPiBtX3Np
emVPZkxhc3RTY3JhdGNoQnVmZmVyKSB7CiAgICAgICAgIC8vIFByb3RlY3QgYWdhaW5zdCBhIE5e
MiBtZW1vcnkgdXNhZ2UgcGF0aG9sb2d5IGJ5IGVuc3VyaW5nCkBAIC0xNTEzLDcgKzE1MTMsNyBA
QCBTY3JhdGNoQnVmZmVyKiBWTTo6c2NyYXRjaEJ1ZmZlckZvclNpemUoc2l6ZV90IHNpemUpCiAK
IHZvaWQgVk06OmNsZWFyU2NyYXRjaEJ1ZmZlcnMoKQogewotICAgIGF1dG8gbG9jayA9IGhvbGRM
b2NrKG1fc2NyYXRjaEJ1ZmZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NjcmF0Y2hC
dWZmZXJMb2NrIH07CiAgICAgZm9yIChhdXRvKiBzY3JhdGNoQnVmZmVyIDogbV9zY3JhdGNoQnVm
ZmVycykKICAgICAgICAgc2NyYXRjaEJ1ZmZlci0+c2V0QWN0aXZlTGVuZ3RoKDApOwogfQpAQCAt
MTY4Nyw3ICsxNjg3LDcgQEAgdm9pZCBWTTo6c2V0Q3Jhc2hPblZNQ3JlYXRpb24oYm9vbCBzaG91
bGRDcmFzaCkKIAogdm9pZCBWTTo6YWRkTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
bG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvb3BI
aW50RXhlY3V0aW9uQ291bnRMb2NrIH07CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvb3BIaW50
RXhlY3V0aW9uQ291bnRzLmFkZChpbnN0cnVjdGlvbiwgc3RkOjpwYWlyPHVuc2lnbmVkLCBzdGQ6
OnVuaXF1ZV9wdHI8dWludDY0X3Q+PigwLCBudWxscHRyKSk7CiAgICAgaWYgKGFkZFJlc3VsdC5p
c05ld0VudHJ5KSB7CiAgICAgICAgIGF1dG8gcHRyID0gV1RGOjptYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazx1aW50NjRfdD4oKTsKQEAgLTE2OTksMTQgKzE2OTksMTQgQEAgdm9pZCBW
TTo6YWRkTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbikKIAogdWludDY0X3QqIFZNOjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9sb29wSGludEV4ZWN1dGlvbkNvdW50TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9v
cEhpbnRFeGVjdXRpb25Db3VudExvY2sgfTsKICAgICBhdXRvIGl0ZXIgPSBtX2xvb3BIaW50RXhl
Y3V0aW9uQ291bnRzLmZpbmQoaW5zdHJ1Y3Rpb24pOwogICAgIHJldHVybiBpdGVyLT52YWx1ZS5z
ZWNvbmQuZ2V0KCk7CiB9CiAKIHZvaWQgVk06OnJlbW92ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRl
cihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb29wSGludEV4ZWN1dGlvbkNvdW50TG9jayB9OwogICAgIGF1dG8gaXRlciA9IG1fbG9v
cEhpbnRFeGVjdXRpb25Db3VudHMuZmluZChpbnN0cnVjdGlvbik7CiAgICAgUkVMRUFTRV9BU1NF
UlQoISFpdGVyLT52YWx1ZS5maXJzdCk7CiAgICAgLS1pdGVyLT52YWx1ZS5maXJzdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKaW5kZXggNjFjMGYwOWVkNzgyMGFk
NmFhZjQyNTdlNjVlYTI2MjVlMGMzYTY4MS4uOTJiZmVhYTc2OGFhNjg2MmJkZjVkOThjNGFlZGQ3
MTQ2MmU0YWQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1U
cmFwcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAK
QEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFZNVHJhcHM6OnRyeUluc3RhbGxUcmFwQnJlYWtwb2lu
dHMoU2lnbmFsQ29udGV4dCYgY29udGV4dCwgU3RhY2tCb3VuZHMgc3RhYwogCiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSByZWludGVycHJldF9jYXN0PENhbGxGcmFtZSo+KGNvbnRleHQuZnJh
bWVQb2ludGVyKTsKIAotICAgIGF1dG8gY29kZUJsb2NrU2V0TG9ja2VyID0gaG9sZExvY2sodm0u
aGVhcC5jb2RlQmxvY2tTZXQoKS5nZXRMb2NrKCkpOworICAgIExvY2tlciBjb2RlQmxvY2tTZXRM
b2NrZXIgeyB2bS5oZWFwLmNvZGVCbG9ja1NldCgpLmdldExvY2soKSB9OwogCiAgICAgQ29kZUJs
b2NrKiBmb3VuZENvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgRW50cnlGcmFtZSogZW50cnlGcmFt
ZSA9IHZtLnRvcEVudHJ5RnJhbWU7CkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBWTVRyYXBzOjpp
bnZhbGlkYXRlQ29kZUJsb2Nrc09uU3RhY2soKQogCiB2b2lkIFZNVHJhcHM6OmludmFsaWRhdGVD
b2RlQmxvY2tzT25TdGFjayhDYWxsRnJhbWUqIHRvcENhbGxGcmFtZSkKIHsKLSAgICBhdXRvIGNv
ZGVCbG9ja1NldExvY2tlciA9IGhvbGRMb2NrKHZtKCkuaGVhcC5jb2RlQmxvY2tTZXQoKS5nZXRM
b2NrKCkpOworICAgIExvY2tlciBjb2RlQmxvY2tTZXRMb2NrZXIgeyB2bSgpLmhlYXAuY29kZUJs
b2NrU2V0KCkuZ2V0TG9jaygpIH07CiAgICAgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKGNv
ZGVCbG9ja1NldExvY2tlciwgdG9wQ2FsbEZyYW1lKTsKIH0KICAgICAKQEAgLTIxNyw3ICsyMTcs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVk0mIHZtID0gY3VycmVudENvZGVCbG9jay0+
dm0oKTsKIAogICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBpbiBKSVQgY29kZSBzbyBpdCdzIHNh
ZmUgdG8gYWNxdWlyZSB0aGlzIGxvY2suCi0gICAgICAgICAgICAgICAgYXV0byBjb2RlQmxvY2tT
ZXRMb2NrZXIgPSBob2xkTG9jayh2bS5oZWFwLmNvZGVCbG9ja1NldCgpLmdldExvY2soKSk7Cisg
ICAgICAgICAgICAgICAgTG9ja2VyIGNvZGVCbG9ja1NldExvY2tlciB7IHZtLmhlYXAuY29kZUJs
b2NrU2V0KCkuZ2V0TG9jaygpIH07CiAgICAgICAgICAgICAgICAgYm9vbCBzYXdDdXJyZW50Q29k
ZUJsb2NrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgdm0uaGVhcC5mb3JFYWNoQ29kZUJsb2Nr
SWdub3JpbmdKSVRQbGFucyhjb2RlQmxvY2tTZXRMb2NrZXIsIFsmXSAoQ29kZUJsb2NrKiBjb2Rl
QmxvY2spIHsKICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBqZXR0aXNvbiBhbGwg
Y29kZSBibG9ja3MgdGhhdCBoYXZlIHZtIHRyYXBzIGJyZWFrcG9pbnRzLCBvdGhlcndpc2Ugd2Ug
Y291bGQgaGl0IHRoZW0gbGF0ZXIuCkBAIC0yNzksNyArMjc5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogCiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soKnRy
YXBzKCkubV9sb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqdHJhcHMoKS5tX2xv
Y2sgfTsKICAgICAgICAgICAgIGlmICh0cmFwcygpLm1faXNTaHV0dGluZ0Rvd24pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFdvcmtSZXN1bHQ6OlN0b3A7CiAgICAgICAgICAgICB0cmFwcygpLm1f
Y29uZGl0aW9uLT53YWl0Rm9yKCp0cmFwcygpLm1fbG9jaywgMV9tcyk7CkBAIC0zMDgsNyArMzA4
LDcgQEAgdm9pZCBWTVRyYXBzOjp3aWxsRGVzdHJveVZNKCkKICNpZiBFTkFCTEUoU0lHTkFMX0JB
U0VEX1ZNX1RSQVBTKQogICAgIGlmIChtX3NpZ25hbFNlbmRlcikgewogICAgICAgICB7Ci0gICAg
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKCptX2xvY2spOworICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7ICptX2xvY2sgfTsKICAgICAgICAgICAgIGlmICghbV9zaWduYWxTZW5kZXIt
PnRyeVN0b3AobG9ja2VyKSkKICAgICAgICAgICAgICAgICBtX2NvbmRpdGlvbi0+bm90aWZ5QWxs
KGxvY2tlcik7CiAgICAgICAgIH0KQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIFZNVHJhcHM6OmZp
cmVUcmFwKFZNVHJhcHM6OkV2ZW50IGV2ZW50KQogICAgIEFTU0VSVCghdm0oKS5jdXJyZW50VGhy
ZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBBU1NFUlQob25seUNvbnRhaW5zQXN5bmNFdmVu
dHMoZXZlbnQpKTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soKm1fbG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIEFTU0VSVCgh
bV9pc1NodXR0aW5nRG93bik7CiAgICAgICAgIHNldFRyYXBCaXQoZXZlbnQpOwogICAgICAgICBt
X25lZWRUb0ludmFsaWRhdGVkQ29kZUJsb2NrcyA9IHRydWU7CkBAIC0zMzQsNyArMzM0LDcgQEAg
dm9pZCBWTVRyYXBzOjpmaXJlVHJhcChWTVRyYXBzOjpFdmVudCBldmVudCkKICAgICAgICAgLy8g
c2VuZFNpZ25hbCgpIGNhbiBsb29wIHVudGlsIGl0IGhhcyBjb25maXJtYXRpb24gdGhhdCB0aGUg
bXV0YXRvciB0aHJlYWQKICAgICAgICAgLy8gaGFzIHJlY2VpdmVkIHRoZSB0cmFwIHJlcXVlc3Qu
IFdlJ2xsIGNhbGwgaXQgZnJvbSBhbm90aGVyIHRocmVhZCBzbyB0aGF0CiAgICAgICAgIC8vIGZp
cmVUcmFwKCkgZG9lcyBub3QgYmxvY2suCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
Km1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV9sb2NrIH07CiAgICAgICAgIGlm
ICghbV9zaWduYWxTZW5kZXIpCiAgICAgICAgICAgICBtX3NpZ25hbFNlbmRlciA9IGFkb3B0UmVm
KG5ldyBTaWduYWxTZW5kZXIobG9ja2VyLCB2bSgpKSk7CiAgICAgICAgIG1fY29uZGl0aW9uLT5u
b3RpZnlBbGwobG9ja2VyKTsKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIFZNVHJhcHM6OmhhbmRs
ZVRyYXBzKFZNVHJhcHM6OkJpdEZpZWxkIG1hc2spCiAgICAgICAgIG1hc2sgJj0gfk5lZWRUZXJt
aW5hdGlvbjsKIAogICAgIHsKLSAgICAgICAgYXV0byBjb2RlQmxvY2tTZXRMb2NrZXIgPSBob2xk
TG9jayh2bS5oZWFwLmNvZGVCbG9ja1NldCgpLmdldExvY2soKSk7CisgICAgICAgIExvY2tlciBj
b2RlQmxvY2tTZXRMb2NrZXIgeyB2bS5oZWFwLmNvZGVCbG9ja1NldCgpLmdldExvY2soKSB9Owog
ICAgICAgICB2bS5oZWFwLmZvckVhY2hDb2RlQmxvY2tJZ25vcmluZ0pJVFBsYW5zKGNvZGVCbG9j
a1NldExvY2tlciwgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaykgewogICAgICAgICAgICAgLy8g
V2Ugd2FudCB0byBqZXR0aXNvbiBhbGwgY29kZSBibG9ja3MgdGhhdCBoYXZlIHZtIHRyYXBzIGJy
ZWFrcG9pbnRzLCBvdGhlcndpc2Ugd2UgY291bGQgaGl0IHRoZW0gbGF0ZXIuCiAgICAgICAgICAg
ICBpZiAoY29kZUJsb2NrLT5oYXNJbnN0YWxsZWRWTVRyYXBCcmVha3BvaW50cygpKQpAQCAtMzk3
LDcgKzM5Nyw3IEBAIHZvaWQgVk1UcmFwczo6aGFuZGxlVHJhcHMoVk1UcmFwczo6Qml0RmllbGQg
bWFzaykKIAogYXV0byBWTVRyYXBzOjp0YWtlVG9wUHJpb3JpdHlUcmFwKFZNVHJhcHM6OkJpdEZp
ZWxkIG1hc2spIC0+IEV2ZW50CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jaygqbV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogCiAgICAgLy8gTm90ZTogdGhlIEV2
ZW50Qml0U2hpZnQgaXMgYWxyZWFkeSBzb3J0ZWQgaW4gaGlnaGVzdCB0byBsb3dlc3QgcHJpb3Jp
dHkKICAgICAvLyBpLmUuIGEgYml0IHNoaWZ0IG9mIDAgaXMgaGlnaGVzdCBwcmlvcml0eSwgZXRj
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwuY3BwCmluZGV4
IDcwMmJhNTQ3MTk5YzYwYTZiN2UwMDNmYzQ5ZDNkOTJmMGNlYjEyNDkuLjk4MzNmNzQzMTBiMWY4
MTk2MjRjOWM5ZWViNDY3NDY4M2M5YmZhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrTWFwSW1wbC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgQUxXQVlTX0lOTElORSB2
b2lkIFdlYWtNYXBJbXBsPEJ1Y2tldFR5cGU+Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzKEpTQ2Vs
bCogY2VsbCwKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxCdWNrZXRUeXBlLCBXZWFr
TWFwQnVja2V0PFdlYWtNYXBCdWNrZXREYXRhS2V5VmFsdWU+Pjo6dmFsdWUpOwogCiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWFrTWFwSW1wbCo+KGNlbGwpOwotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sodGhpc09iamVjdC0+Y2VsbExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IHRoaXNPYmplY3QtPmNlbGxMb2NrKCkgfTsKICAgICBhdXRvKiBidWZmZXIgPSB0aGlzT2Jq
ZWN0LT5idWZmZXIoKTsKICAgICBmb3IgKHVpbnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCB0aGlz
T2JqZWN0LT5tX2NhcGFjaXR5OyArK2luZGV4KSB7CiAgICAgICAgIGF1dG8qIGJ1Y2tldCA9IGJ1
ZmZlciArIGluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha01hcEltcGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBs
LmgKaW5kZXggZGMyMWUyYmZmNmYzNWRiZDRiMTEyMjNjNGFlMGIxZTYxNjFmYTUwYy4uNmJiYTJj
ZDQ2YjFkNTg2NGViMTkzMTZiY2NhYzg3MGQxODEyYjQwNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5oCkBAIC0yMTAsNyArMjEwLDcgQEAgcHVibGljOgog
CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKIAotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgY2VsbExv
Y2soKSB9OwogICAgICAgICBtYWtlQW5kU2V0TmV3QnVmZmVyKGxvY2tlciwgaW5pdGlhbENhcGFj
aXR5KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtNYXBJbXBsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcEltcGxJbmxpbmVzLmgKaW5kZXggZmI3NTY4YzZkYTUxZTk1Njk0YWY3ZTVmNjk4OTAyZDJk
MDdhZGRhOC4uNzhhZTYzZDliODU5ZTgyNzNlMWUxZjE1MWRjNThkOTc5M2FmM2U2YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGxJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGxJbmxpbmVzLmgK
QEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXZWFrTWFwSW1wbDxXZWFrTWFwQnVja2V0Pjo6cmVoYXNo
KFJlaGFzaE1vZGUgbW9kZSkKIAogICAgIC8vIFRoaXMgcmVoYXNoIG1vZGlmaWVzIG1fYnVmZmVy
IHdoaWNoIGlzIG5vdCBHQy1tYW5hZ2VkIGJ1ZmZlci4gQnV0IG1fYnVmZmVyIGNhbiBiZSB0b3Vj
aGVkIGluCiAgICAgLy8gdmlzaXRPdXRwdXRDb25zdHJhaW50cy4gVGh1cywgd2Ugc2hvdWxkIGd1
YXJkIGl0IHdpdGggY2VsbExvY2suCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9j
aygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY2VsbExvY2soKSB9OwogCiAgICAgdWludDMyX3Qg
b2xkQ2FwYWNpdHkgPSBtX2NhcGFjaXR5OwogICAgIE1hbGxvY1B0cjxXZWFrTWFwQnVmZmVyVHlw
ZSwgSlNWYWx1ZU1hbGxvYz4gb2xkQnVmZmVyID0gV1RGTW92ZShtX2J1ZmZlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmluZ051bWJlclByZWRpY3Rp
b25GdXp6ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XaWRlbmlu
Z051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAKaW5kZXggZDcyOTg2OWM0ZTM3YmYyYWNh
MTZjNTAxMzBhZjI3Mzk3YjI5NzA1My4uMWQzMjQ4NjM0M2ZiYjliOTBhMjRhYzU3MjUwNWE3YWZl
MDM5OTA0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2lkZW5p
bmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcApAQCAt
MzcsNyArMzcsNyBAQCBXaWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6V2lkZW5p
bmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQoVk0mIHZtKQogCiBTcGVjdWxhdGVkVHlwZSBX
aWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudDo6Z2V0UHJlZGljdGlvbihDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgU3BlY3VsYXRlZFR5
cGUgb3JpZ2luYWwpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGlmICghKG9yaWdpbmFsICYmIHNwZWN1
bGF0aW9uQ2hlY2tlZChvcmlnaW5hbCwgU3BlY0J5dGVjb2RlTnVtYmVyKSkpCiAgICAgICAgIHJl
dHVybiBvcmlnaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9D
b21waWxlclRpbWluZ1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db21w
aWxlclRpbWluZ1Njb3BlLmNwcAppbmRleCBiMGQ4YWEyYzdjNTQxOGQ1MTcyZDhmNWE3MWUwZTY1
ZjhhYjI4NWVjLi43ZWJjNWRhOWI1NmFlOTAyMjJkZjczNmU2NzljNTkxZTZmNjk2Y2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29tcGlsZXJUaW1pbmdTY29wZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvbXBpbGVyVGltaW5nU2NvcGUu
Y3BwCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBTZWNvbmRzIGFkZFRvVG90
YWwoY29uc3QgY2hhciogY29tcGlsZXJOYW1lLCBjb25zdCBjaGFyKiBuYW1lLCBTZWNvbmRzIGR1
cmF0aW9uKQogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKIAogICAgICAgICBmb3IgKGF1dG8mIHR1cGxl
IDogdG90YWxzKSB7CiAgICAgICAgICAgICBpZiAoU3RyaW5nKHN0ZDo6Z2V0PDA+KHR1cGxlKSkg
PT0gU3RyaW5nKGNvbXBpbGVyTmFtZSkgJiYgU3RyaW5nKHN0ZDo6Z2V0PDE+KHR1cGxlKSkgPT0g
U3RyaW5nKG5hbWUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
RnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0
aW9uT3ZlcnJpZGVzLmNwcAppbmRleCA0OGIyZGE1ZTJmMjYxZmM5ZTA2YmVhYjdkOTRmZjcxOTQw
ZWY3ZmQ2Li5kOWZlMWVmMmM3YThmMzMyZDNlMTc3OWNiNDU3YzFlNDg1NjAyYzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKQEAg
LTExMCwxNCArMTEwLDE0IEBAIEZ1bmN0aW9uT3ZlcnJpZGVzJiBGdW5jdGlvbk92ZXJyaWRlczo6
b3ZlcnJpZGVzKCkKIEZ1bmN0aW9uT3ZlcnJpZGVzOjpGdW5jdGlvbk92ZXJyaWRlcyhjb25zdCBj
aGFyKiBvdmVycmlkZXNGaWxlTmFtZSkKIHsKICAgICBGdW5jdGlvbk92ZXJyaWRlc0Fzc2VydFNj
b3BlIGFzc2VydFNjb3BlOwotICAgIHBhcnNlT3ZlcnJpZGVzSW5GaWxlKGhvbGRMb2NrKG1fbG9j
ayksIG92ZXJyaWRlc0ZpbGVOYW1lKTsKKyAgICBwYXJzZU92ZXJyaWRlc0luRmlsZShMb2NrZXIg
eyBtX2xvY2sgfSwgb3ZlcnJpZGVzRmlsZU5hbWUpOwogfQogCiB2b2lkIEZ1bmN0aW9uT3ZlcnJp
ZGVzOjpyZWluc3RhbGxPdmVycmlkZXMoKQogewogICAgIEZ1bmN0aW9uT3ZlcnJpZGVzQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgRnVuY3Rpb25PdmVycmlkZXMmIG92ZXJyaWRlcyA9IEZ1
bmN0aW9uT3ZlcnJpZGVzOjpvdmVycmlkZXMoKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG92ZXJyaWRlcy5tX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBvdmVycmlkZXMubV9sb2Nr
IH07CiAgICAgY29uc3QgY2hhciogb3ZlcnJpZGVzRmlsZU5hbWUgPSBPcHRpb25zOjpmdW5jdGlv
bk92ZXJyaWRlcygpOwogICAgIG92ZXJyaWRlcy5jbGVhcihsb2NrZXIpOwogICAgIG92ZXJyaWRl
cy5wYXJzZU92ZXJyaWRlc0luRmlsZShsb2NrZXIsIG92ZXJyaWRlc0ZpbGVOYW1lKTsKQEAgLTE2
Nyw3ICsxNjcsNyBAQCBib29sIEZ1bmN0aW9uT3ZlcnJpZGVzOjppbml0aWFsaXplT3ZlcnJpZGVG
b3IoY29uc3QgU291cmNlQ29kZSYgb3JpZ0NvZGUsIEZ1bmN0aQogCiAgICAgU3RyaW5nIG5ld0Jv
ZHk7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG92ZXJyaWRlcy5tX2xv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgb3ZlcnJpZGVzLm1fbG9jayB9OwogICAgICAg
ICBhdXRvIGl0ID0gb3ZlcnJpZGVzLm1fZW50cmllcy5maW5kKHNvdXJjZUJvZHlTdHJpbmcuaXNv
bGF0ZWRDb3B5KCkpOwogICAgICAgICBpZiAoaXQgPT0gb3ZlcnJpZGVzLm1fZW50cmllcy5lbmQo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9JbnRlZ3JpdHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0ludGVncml0eS5jcHAKaW5kZXggNTE5MDUyNDk0MGM5NDU2MzFlYjY0YzE5NzBiZTExMDE3ODE5
YTFhZS4uMGM5OGZkNGEwY2JiODM3ODE3MzdkNWVkM2I4ZDA0ZWJkOWM4YzNlNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgUmFu
ZG9tOjpSYW5kb20oVk0mIHZtKQogCiBib29sIFJhbmRvbTo6cmVsb2FkQW5kQ2hlY2tTaG91bGRB
dWRpdFNsb3coVk0mIHZtKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBpZiAoIU9wdGlvbnM6OnJhbmRv
bUludGVncml0eUF1ZGl0UmF0ZSgpKSB7CiAgICAgICAgIG1fdHJpZ2dlckJpdHMgPSAwOyAvLyBO
ZXZlciB0cmlnZ2VyLCBhbmQgZG9uJ3QgYm90aGVyIHJlbG9hZGluZy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCmluZGV4IGJiYmMyMzZkMjE3YTE1MGQ1YTg2
ZWRmODA0ZjViN2YzOTYyMDhkOWUuLmVkODhmZjJjNzRhZjI1YzIzOTAxZTZlZTY0ODk3ZTc5ZmNi
MmEzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcApA
QCAtNTQsMTMgKzU0LDEzIEBAIFZNSW5zcGVjdG9yJiBWTUluc3BlY3Rvcjo6aW5zdGFuY2UoKQog
CiB2b2lkIFZNSW5zcGVjdG9yOjphZGQoVk0qIHZtKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgbV92bUxp
c3QuYXBwZW5kKHZtKTsKIH0KIAogdm9pZCBWTUluc3BlY3Rvcjo6cmVtb3ZlKFZNKiB2bSkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgIG1fdm1MaXN0LnJlbW92ZSh2bSk7CiB9CiAKQEAgLTE3MSw3ICsxNzEs
NyBAQCBhdXRvIFZNSW5zcGVjdG9yOjpjb2RlQmxvY2tGb3JNYWNoaW5lUEMoY29uc3QgVk1JbnNw
ZWN0b3I6OkxvY2tlciYsIHZvaWQqIG1hY2hpbgogICAgICAgICAgICAgcmV0dXJuIEZ1bmN0b3JT
dGF0dXM6OkNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgVk0uCiAgICAgICAgIH0KIAotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvZGVCbG9ja1NldExvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgY29kZUJsb2NrU2V0TG9jayB9OwogICAgICAgICB2bS5oZWFwLmZvckVhY2hDb2Rl
QmxvY2tJZ25vcmluZ0pJVFBsYW5zKGxvY2tlciwgWyZdIChDb2RlQmxvY2sqIGNiKSB7CiAgICAg
ICAgICAgICBKSVRDb2RlKiBqaXRDb2RlID0gY2ItPmppdENvZGUoKS5nZXQoKTsKICAgICAgICAg
ICAgIGlmICghaml0Q29kZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBs
YW4uY3BwCmluZGV4IGUzOTM4MmVkODg2NjNkOTUwZGYyYTQ1OGZjNDFjN2EyZTQ2Y2M1ZTYuLjM2
ZWY2NGRhMzM1Yzc0OGVjNTc0N2EyMWFjMGUyNzBjOWMzNTZlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBCQlFQ
bGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAgICAgICAgIHBhcnNlQW5k
VmFsaWRhdGVNb2R1bGUoKTsKICAgICAgICAgICAgIGlmICghaGFzV29yaygpKSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlZhbGlkYXRlZCk7Ci0gICAgICAgICAg
ICAgICAgY29tcGxldGUoaG9sZExvY2sobV9sb2NrKSk7CisgICAgICAgICAgICAgICAgY29tcGxl
dGUoTG9ja2VyIHsgbV9sb2NrIH0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBC
QlFQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIAogICAgIExpbmtCdWZmZXIg
bGlua0J1ZmZlcigqY29udGV4dC53YXNtRW50cnlwb2ludEpJVCwgbnVsbHB0ciwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6V2FzbSwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAoVU5MSUtF
TFkobGlua0J1ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSkgewotICAgICAgICBCYXNlOjpmYWls
KGhvbGRMb2NrKG1fbG9jayksIG1ha2VTdHJpbmcoIk91dCBvZiBleGVjdXRhYmxlIG1lbW9yeSB3
aGlsZSB0aWVyaW5nIHVwIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKG1fZnVu
Y3Rpb25JbmRleCkpKTsKKyAgICAgICAgQmFzZTo6ZmFpbChMb2NrZXIgeyBtX2xvY2sgfSwgbWFr
ZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFibGUgbWVtb3J5IHdoaWxlIHRpZXJpbmcgdXAgZnVuY3Rp
b24gYXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIobV9mdW5jdGlvbkluZGV4KSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBCQlFQbGFuOjp3b3Jr
KENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIAogICAgICAgICB7CiAgICAgICAgICAgICBMTElu
dENhbGxlZSYgbGxpbnRDYWxsZWUgPSBtX2NvZGVCbG9jay0+bV9sbGludENhbGxlZXMtPmF0KG1f
ZnVuY3Rpb25JbmRleCkuZ2V0KCk7Ci0gICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KGxsaW50Q2FsbGVlLnRpZXJVcENvdW50ZXIoKS5tX2xvY2spOworICAgICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IGxsaW50Q2FsbGVlLnRpZXJVcENvdW50ZXIoKS5tX2xvY2sgfTsKICAgICAgICAg
ICAgIGxsaW50Q2FsbGVlLnNldFJlcGxhY2VtZW50KGNhbGxlZS5jb3B5UmVmKCkpOwogICAgICAg
ICAgICAgbGxpbnRDYWxsZWUudGllclVwQ291bnRlcigpLm1fY29tcGlsYXRpb25TdGF0dXMgPSBM
TEludFRpZXJVcENvdW50ZXI6OkNvbXBpbGF0aW9uU3RhdHVzOjpDb21waWxlZDsKICAgICAgICAg
fQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgQkJRUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9y
dCBlZmZvcnQpCiAKICAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3Nl
LCAiRmluaXNoZWQgQkJRICIsIG1fZnVuY3Rpb25JbmRleCk7CiAKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIG1v
dmVUb1N0YXRlKFN0YXRlOjpDb21wbGV0ZWQpOwogICAgIHJ1bkNvbXBsZXRpb25UYXNrcyhsb2Nr
ZXIpOwogfQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9u
KHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCiAgICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVu
Y3Rpb25JbmRleF0gPSBjb21waWxlRnVuY3Rpb24oZnVuY3Rpb25JbmRleCwgbV9jb21waWxhdGlv
bkNvbnRleHRzW2Z1bmN0aW9uSW5kZXhdLCBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0
aW9uSW5kZXhdLCBtX3RpZXJVcENvdW50c1tmdW5jdGlvbkluZGV4XS5nZXQoKSk7CiAKICAgICBp
ZiAobV9leHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5jb250YWlucyhmdW5jdGlvbkluZGV4KSB8fCBt
X21vZHVsZUluZm9ybWF0aW9uLT5yZWZlcmVuY2VkRnVuY3Rpb25zKCkuY29udGFpbnMoZnVuY3Rp
b25JbmRleCkpIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNp
Z25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25h
dHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF07CiAgICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbV9lbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb25zLmFkZChm
dW5jdGlvbkluZGV4LCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoKm1fY29tcGlsYXRpb25Db250ZXh0
c1tmdW5jdGlvbkluZGV4XS5lbWJlZGRlckVudHJ5cG9pbnRKSVQsIHNpZ25hdHVyZSwgJm1fdW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbHNbZnVuY3Rpb25JbmRleF0sIG1fbW9kdWxlSW5mb3JtYXRpb24u
Z2V0KCksIG1fbW9kZSwgZnVuY3Rpb25JbmRleCkpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb24odWlu
dDMyX3QgZnVuY3Rpb25JbmRlCiAgICAgICAgIHBhcnNlQW5kQ29tcGlsZVJlc3VsdCA9IHBhcnNl
QW5kQ29tcGlsZShjb250ZXh0LCBmdW5jdGlvbiwgc2lnbmF0dXJlLCB1bmxpbmtlZFdhc21Ub1dh
c21DYWxscywgb3NyRW50cnlTY3JhdGNoQnVmZmVyU2l6ZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5n
ZXQoKSwgbV9tb2RlLCBDb21waWxhdGlvbk1vZGU6OkJCUU1vZGUsIGZ1bmN0aW9uSW5kZXgsIFVJ
TlQzMl9NQVgsIHRpZXJVcCk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXBhcnNlQW5kQ29tcGlsZVJl
c3VsdCkpIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIGlmICghbV9lcnJvck1lc3NhZ2Up
IHsKICAgICAgICAgICAgIC8vIE11bHRpcGxlIGNvbXBpbGVzIGNvdWxkIGZhaWwgc2ltdWx0YW5l
b3VzbHkuIFdlIGFyYml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QuCiAgICAgICAgICAgICBmYWls
KGxvY2tlciwgbWFrZVN0cmluZyhwYXJzZUFuZENvbXBpbGVSZXN1bHQuZXJyb3IoKSwgIiwgaW4g
ZnVuY3Rpb24gYXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIoZnVuY3Rpb25JbmRleCkpKTsgLy8g
RklYTUUgbWFrZSB0aGlzIGFuIEV4cGVjdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUNhbGxlZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQ2FsbGVlUmVnaXN0cnkuaAppbmRleCBkNDEyNjk3NGYyNGM1ZjFjYTA3YmZiM2Q5
ZDNkODgwYTg4OTljMTFlLi4xMjEzNDExYjdmYzEwNjRhOTgyYzc1OGIzZTAzMjhhODQxNDc4ZTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlUmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlUmVnaXN0cnku
aApAQCAtNDUsMTMgKzQ1LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVnaXN0ZXJDYWxsZWUo
Q2FsbGVlKiBjYWxsZWUpCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
bG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgbV9jYWxs
ZWVTZXQuYWRkKGNhbGxlZSk7CiAgICAgfQogCiAgICAgdm9pZCB1bnJlZ2lzdGVyQ2FsbGVlKENh
bGxlZSogY2FsbGVlKQogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIG1fY2FsbGVl
U2V0LnJlbW92ZShjYWxsZWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUNvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQ29kZUJsb2NrLmNwcAppbmRleCA0NmVhMmI0MjVhNTdkMzg5MmMyODg4ZTM3OTA4NDdi
NWY1YjFhMTU2Li45NjA1MjAxNDA4NzU2ZGUxMTJhMDI4MDk4Y2FhZDM2YTkwODY0NmEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29kZUJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29kZUJsb2NrLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb250ZXh0KiBjb250ZXh0LCBNZW1vcnlNb2Rl
IG1vZGUsIE1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bAogCiAgICAgaWYgKE9wdGlvbnM6OnVzZVdh
c21MTEludCgpKSB7CiAgICAgICAgIG1fcGxhbiA9IGFkb3B0UmVmKCpuZXcgTExJbnRQbGFuKGNv
bnRleHQsIG1ha2VSZWYobW9kdWxlSW5mb3JtYXRpb24pLCBtX2xsaW50Q2FsbGVlcy0+ZGF0YSgp
LCBjcmVhdGVTaGFyZWRUYXNrPFBsYW46OkNhbGxiYWNrVHlwZT4oW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoUGxhbiYpIHsKLSAgICAgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKICAgICAgICAgICAgIGlmIChtX3BsYW4tPmZhaWxlZCgpKSB7CiAgICAgICAgICAg
ICAgICAgbV9lcnJvck1lc3NhZ2UgPSBtX3BsYW4tPmVycm9yTWVzc2FnZSgpOwogICAgICAgICAg
ICAgICAgIHNldENvbXBpbGF0aW9uRmluaXNoZWQoKTsKQEAgLTc3LDcgKzc3LDcgQEAgQ29kZUJs
b2NrOjpDb2RlQmxvY2soQ29udGV4dCogY29udGV4dCwgTWVtb3J5TW9kZSBtb2RlLCBNb2R1bGVJ
bmZvcm1hdGlvbiYgbW9kdWwKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFlfQjNKSVQpCiAgICAgZWxz
ZSB7CiAgICAgICAgIG1fcGxhbiA9IGFkb3B0UmVmKCpuZXcgQkJRUGxhbihjb250ZXh0LCBtYWtl
UmVmKG1vZHVsZUluZm9ybWF0aW9uKSwgQ29tcGlsZXJNb2RlOjpGdWxsQ29tcGlsZSwgY3JlYXRl
U2hhcmVkVGFzazxQbGFuOjpDYWxsYmFja1R5cGU+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKV0gKFBsYW4mKSB7Ci0gICAgICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CiAgICAgICAgICAgICBpZiAobV9wbGFuLT5mYWlsZWQoKSkgewogICAgICAgICAgICAgICAgIG1f
ZXJyb3JNZXNzYWdlID0gbV9wbGFuLT5lcnJvck1lc3NhZ2UoKTsKICAgICAgICAgICAgICAgICBz
ZXRDb21waWxhdGlvbkZpbmlzaGVkKCk7CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OndhaXRVbnRpbEZpbmlzaGVkKCkKIHsKICAgICBSZWZQdHI8UGxhbj4gcGxhbjsKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBwbGFuID0gbV9wbGFuOwogICAgIH0KIApAQCAt
MTM0LDcgKzEzNCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpjb21waWxlQXN5bmMoQ29udGV4dCogY29u
dGV4dCwgQXN5bmNDb21waWxhdGlvbkNhbGxiYWNrJiYgdGFzaykKIHsKICAgICBSZWZQdHI8UGxh
bj4gcGxhbjsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBwbGFuID0gbV9wbGFu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNv
bnRleHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCmlu
ZGV4IDcxMGU1MmZhZjA4NWQyMjc4NWExNTY1ZDQwNzQ4MWYyMDk0NmJjNjIuLjAwZTllYmY3ZTc1
YTllZjE3NDlhNGE5OGJjZTcxNjI3NzQ4M2EzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQ29udGV4dC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdWludDY0X3QqIENvbnRleHQ6
OnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVfdCBzaXplKQogICAgIGlmICghc2l6ZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2NyYXRj
aEJ1ZmZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NjcmF0Y2hCdWZmZXJMb2NrIH07
CiAgICAgaWYgKHNpemUgPiBtX3NpemVPZkxhc3RTY3JhdGNoQnVmZmVyKSB7CiAgICAgICAgIG1f
c2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIgPSBzaXplICogMjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUVudHJ5UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcAppbmRleCBhYWQ3ZTYwYTE3ZGRiZTk3NjdlOTRi
ZDkxYzljYzIwOTFmZGYyNTM0Li45ZDJjMjRkOGVhMDI5YTBhOTVlNDI1OGFhMjA5ZjBmM2M4NzE1
NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFu
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcApA
QCAtODksMTMgKzg5LDEzIEBAIGJvb2wgRW50cnlQbGFuOjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxl
KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IHNvdXJjZUxlbmd0CiAKICAgICBtX3N0cmVh
bWluZ1BhcnNlci5hZGRCeXRlcyhzb3VyY2UsIHNvdXJjZUxlbmd0aCk7CiAgICAgewotICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKICAgICAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAogICAgIGlmIChtX3N0cmVhbWluZ1BhcnNlci5maW5hbGl6ZSgpICE9IFN0
cmVhbWluZ1BhcnNlcjo6U3RhdGU6OkZpbmlzaGVkKSB7Ci0gICAgICAgIGZhaWwoaG9sZExvY2so
bV9sb2NrKSwgbV9zdHJlYW1pbmdQYXJzZXIuZXJyb3JNZXNzYWdlKCkpOworICAgICAgICBmYWls
KExvY2tlciB7IG1fbG9jayB9LCBtX3N0cmVhbWluZ1BhcnNlci5lcnJvck1lc3NhZ2UoKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIEVu
dHJ5UGxhbjo6cHJlcGFyZSgpCiAgICAgICAgIGlmIChVTkxJS0VMWSghYmluZGluZykpIHsKICAg
ICAgICAgICAgIHN3aXRjaCAoYmluZGluZy5lcnJvcigpKSB7CiAgICAgICAgICAgICBjYXNlIEJp
bmRpbmdGYWlsdXJlOjpPdXRPZk1lbW9yeToKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCho
b2xkTG9jayhtX2xvY2spLCBtYWtlU3RyaW5nKCJPdXQgb2YgZXhlY3V0YWJsZSBtZW1vcnkgYXQg
aW1wb3J0ICIsIFN0cmluZzo6bnVtYmVyKGltcG9ydEluZGV4KSkpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWlsKExvY2tlciB7IG1fbG9jayB9LCBtYWtlU3RyaW5nKCJPdXQgb2YgZXhlY3V0
YWJsZSBtZW1vcnkgYXQgaW1wb3J0ICIsIFN0cmluZzo6bnVtYmVyKGltcG9ydEluZGV4KSkpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgRW50cnlQbGFuOjpjb21waWxlRnVu
Y3Rpb25zKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIAogICAgICAgICB1aW50MzJfdCBmdW5j
dGlvbkluZGV4OwogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAg
ICAgICBpZiAobV9jdXJyZW50SW5kZXggPj0gbV9udW1iZXJPZkZ1bmN0aW9ucykgewogICAgICAg
ICAgICAgICAgIGlmIChoYXNXb3JrKCkpCiAgICAgICAgICAgICAgICAgICAgIG1vdmVUb1N0YXRl
KFN0YXRlOjpDb21waWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRW50cnlQbGFuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQ
bGFuLmgKaW5kZXggYjFjZmI1ZjEzZTc2OWU2ZmJkZTM5ZTcxMWViZjlkNmU4MjJhYzg1Zi4uZTEx
MjI0Y2YxMWE5MWExODY3NWFiNzYwNWUwZTk0M2M1YTk5MTc4NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUVudHJ5UGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uaApAQCAtMTA2LDcgKzEwNiw3IEBAIHByb3RlY3Rl
ZDoKICAgICBib29sIHRyeVJlc2VydmVDYXBhY2l0eShWZWN0b3I8VD4mIHZlY3Rvciwgc2l6ZV90
IHNpemUsIGNvbnN0IGNoYXIqIHdoYXQpCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIXZl
Y3Rvci50cnlSZXNlcnZlQ2FwYWNpdHkoc2l6ZSkpKSB7Ci0gICAgICAgICAgICBmYWlsKGhvbGRM
b2NrKG1fbG9jayksIFdURjo6bWFrZVN0cmluZygiRmFpbGVkIGFsbG9jYXRpbmcgZW5vdWdoIHNw
YWNlIGZvciAiLCBzaXplLCB3aGF0KSk7CisgICAgICAgICAgICBmYWlsKExvY2tlciB7IG1fbG9j
ayB9LCBXVEY6Om1ha2VTdHJpbmcoIkZhaWxlZCBhbGxvY2F0aW5nIGVub3VnaCBzcGFjZSBmb3Ig
Iiwgc2l6ZSwgd2hhdCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAppbmRleCAwNjJjNTZhZGNmYTcyMGM5MTg2ZTUz
ZDQ0OTQ3YzYzODAyODA5NDZkLi4yZmY1ZTI2OTEwOGMwZTY1YzBiZDViZjBjMjNjN2U3ZDA0YmRi
ODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWdu
YWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRT
aWduYWxIYW5kbGVyLmNwcApAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgU2lnbmFsQWN0aW9uIHRy
YXBIYW5kbGVyKFNpZ25hbCBzaWduYWwsIFNpZ0luZm8mIHNpZ0luZm8sIFBsYXRmb3JtUmVnaXN0
ZQogICAgICAgICAgICAgICAgIGlmIChMTEludDo6aXNXYXNtTExJbnRQQyhmYXVsdGluZ0luc3Ry
dWN0aW9uKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAg
ICAgYXV0byYgY2FsbGVlUmVnaXN0cnkgPSBDYWxsZWVSZWdpc3RyeTo6c2luZ2xldG9uKCk7Ci0g
ICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjYWxsZWVSZWdpc3RyeS5nZXRM
b2NrKCkpOworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBjYWxsZWVSZWdpc3RyeS5n
ZXRMb2NrKCkgfTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNhbGxlZSA6IGNhbGxlZVJl
Z2lzdHJ5LmFsbENhbGxlZXMobG9ja2VyKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIFtz
dGFydCwgZW5kXSA9IGNhbGxlZS0+cmFuZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuSWYoV2FzbUZhdWx0U2lnbmFsSGFuZGxlckludGVybmFsOjp2ZXJib3NlLCAiZnVuY3Rpb24g
c3RhcnQ6ICIsIFJhd1BvaW50ZXIoc3RhcnQpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihlbmQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCmluZGV4IDdhZmU2
ZWNjZjY1ODVkNGM1YmJlMzY1YWI5ZjM2MDkxY2Q5ZjNlZTMuLjg1NzU0NTczMGNjYzMwZDYzNGYz
NGI0YzJiNGM5YTY0MTBiOWRiN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21JbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUluc3RhbmNlLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgSW5zdGFuY2U6OnNldEZ1bmN0
aW9uV3JhcHBlcih1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogICAgIEFTU0VSVChtX293bmVy
KTsKICAgICBBU1NFUlQodmFsdWUuaXNDYWxsYWJsZShvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U+KCktPnZtKCkpKTsKICAgICBBU1NFUlQoIW1fZnVuY3Rpb25XcmFwcGVycy5jb250YWlucyhp
KSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U+KCktPmNlbGxMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvd25lcjxKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U+KCktPmNlbGxMb2NrKCkgfTsKICAgICBtX2Z1bmN0aW9uV3JhcHBlcnMuc2V0
KGksIFdyaXRlQmFycmllcjxVbmtub3duPihvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCkt
PnZtKCksIG93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKSwgdmFsdWUpKTsKICAgICBBU1NF
UlQoZ2V0RnVuY3Rpb25XcmFwcGVyKGkpID09IHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAKaW5kZXggNjA4NmE0MjFkNGJlYzdmZWMyMTgw
OTg2NzFmMDRiNWUxM2U5Yjk1MC4uMTViODkzZDgxZjU2ZTgwZTYxNjQxMGQ4ZWY4MTQyODNhZmQy
YTcwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxh
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAK
QEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBMTEludFBsYW46OmNvbXBpbGVGdW5jdGlvbih1aW50MzJf
dCBmdW5jdGlvbkluZGV4KQogICAgIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNv
ZGVCbG9jaz4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlUmVzdWx0ID0gcGFyc2VBbmRDb21waWxl
Qnl0ZWNvZGUoZnVuY3Rpb24uZGF0YS5kYXRhKCksIGZ1bmN0aW9uLmRhdGEuc2l6ZSgpLCBzaWdu
YXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCksIGZ1bmN0aW9uSW5kZXgpOwogCiAgICAg
aWYgKFVOTElLRUxZKCFwYXJzZUFuZENvbXBpbGVSZXN1bHQpKSB7Ci0gICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogICAgICAgICBpZiAoIW1fZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgICAgICAvLyBNdWx0aXBs
ZSBjb21waWxlcyBjb3VsZCBmYWlsIHNpbXVsdGFuZW91c2x5LiBXZSBhcmJpdHJhcmlseSBjaG9v
c2UgdGhlIGZpcnN0LgogICAgICAgICAgICAgZmFpbChsb2NrZXIsIG1ha2VTdHJpbmcocGFyc2VB
bmRDb21waWxlUmVzdWx0LmVycm9yKCksICIsIGluIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmlu
Zzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7IC8vIEZJWE1FIG1ha2UgdGhpcyBhbiBFeHBlY3Rl
ZC4KQEAgLTE5MSwxOCArMTkxLDE4IEBAIHZvaWQgTExJbnRQbGFuOjpkaWRDb21wbGV0ZUNvbXBp
bGF0aW9uKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAKIHZvaWQgTExJbnRQbGFuOjpj
b21wbGV0ZUluU3RyZWFtaW5nKCkKIHsKLSAgICBjb21wbGV0ZShob2xkTG9jayhtX2xvY2spKTsK
KyAgICBjb21wbGV0ZShMb2NrZXIgeyBtX2xvY2sgfSk7CiB9CiAKIHZvaWQgTExJbnRQbGFuOjpk
aWRDb21waWxlRnVuY3Rpb25JblN0cmVhbWluZygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBtb3ZlVG9T
dGF0ZShFbnRyeVBsYW46OlN0YXRlOjpDb21waWxlZCk7CiB9CiAKIHZvaWQgTExJbnRQbGFuOjpk
aWRGYWlsSW5TdHJlYW1pbmcoU3RyaW5nJiYgbWVzc2FnZSkKIHsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIGlm
ICghbV9lcnJvck1lc3NhZ2UpCiAgICAgICAgIGZhaWwobG9ja2VyLCBXVEZNb3ZlKG1lc3NhZ2Up
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NYWNoaW5l
VGhyZWFkcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWFjaGluZVRocmVh
ZHMuY3BwCmluZGV4IGNmNGY3NmNjNTljYzE3OTgzOTg5YWIyYWFmMjQwMzU2NTI3ZTQyODguLmYy
ODM2ZWI0ZGRkMTI2MTAyZmZlNWY1M2YzNWNhNjdlMzI1MjEyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NYWNoaW5lVGhyZWFkcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1hY2hpbmVUaHJlYWRzLmNwcApAQCAtNTMsNyArNTMs
NyBAQCB2b2lkIHN0YXJ0VHJhY2tpbmdDdXJyZW50VGhyZWFkKCkKIAogdm9pZCByZXNldEluc3Ry
dWN0aW9uQ2FjaGVPbkFsbFRocmVhZHMoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
d2FzbVRocmVhZHMoKS5nZXRMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyB3YXNtVGhyZWFk
cygpLmdldExvY2soKSB9OwogICAgIGZvciAoYXV0byYgdGhyZWFkIDogd2FzbVRocmVhZHMoKS50
aHJlYWRzKGxvY2tlcikpIHsKICAgICAgICAgc2VuZE1lc3NhZ2UodGhyZWFkLmdldCgpLCBbXSAo
Y29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmKSB7CiAgICAgICAgICAgICAvLyBJdCdzIGxpa2VseSB0
aGF0IHRoZSBzaWduYWwgaGFuZGxlciB3aWxsIGFscmVhZHkgcmVzZXQgdGhlIGluc3RydWN0aW9u
IGNhY2hlIGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGJlIHN1cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnkuY3BwCmluZGV4IGYzOWI1M2Y5NmM1ZGU0OTQ1YTNlYzlkMzY5ZjI1
YTQ0NmI5YTVlM2MuLmVlNmM3YjI0NzdiZDZiMWRmZWNiYjcwMDAzNWVhYTEyZDAyOGRjYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCkBAIC0xMDUsNyArMTA1
LDcgQEAgcHVibGljOgogICAgIE1lbW9yeVJlc3VsdCB0cnlBbGxvY2F0ZUZhc3RNZW1vcnkoKQog
ICAgIHsKICAgICAgICAgTWVtb3J5UmVzdWx0IHJlc3VsdCA9IFsmXSB7Ci0gICAgICAgICAgICBh
dXRvIGhvbGRlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CiAgICAgICAgICAgICBpZiAobV9mYXN0TWVtb3JpZXMuc2l6ZSgpID49IG1f
bWF4RmFzdE1lbW9yeUNvdW50KQogICAgICAgICAgICAgICAgIHJldHVybiBNZW1vcnlSZXN1bHQo
bnVsbHB0ciwgTWVtb3J5UmVzdWx0OjpTeW5jVHJ5VG9SZWNsYWltTWVtb3J5KTsKICAgICAgICAg
ICAgIApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZyZWVGYXN0TWVtb3J5
KHZvaWQqIGJhc2VQdHIpCiAgICAgewogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGhvbGRl
ciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CiAgICAgICAgICAgICBHaWdhY2FnZTo6ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJp
bWl0aXZlLCBiYXNlUHRyLCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpKTsKICAgICAgICAgICAg
IG1fZmFzdE1lbW9yaWVzLnJlbW92ZUZpcnN0KGJhc2VQdHIpOwogICAgICAgICB9CkBAIC0xMzks
NyArMTM5LDcgQEAgcHVibGljOgogICAgIE1lbW9yeVJlc3VsdCB0cnlBbGxvY2F0ZUdyb3dhYmxl
Qm91bmRzQ2hlY2tpbmdNZW1vcnkoc2l6ZV90IG1hcHBlZENhcGFjaXR5KQogICAgIHsKICAgICAg
ICAgTWVtb3J5UmVzdWx0IHJlc3VsdCA9IFsmXSB7Ci0gICAgICAgICAgICBhdXRvIGhvbGRlciA9
IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CiAgICAgICAgICAgICB2b2lkKiByZXN1bHQgPSBHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRW
aXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgbWFwcGVkQ2FwYWNpdHkpOwogICAgICAg
ICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE1lbW9yeVJlc3VsdChu
dWxscHRyLCBNZW1vcnlSZXN1bHQ6OlN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpOwpAQCAtMTU3LDcg
KzE1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZyZWVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVt
b3J5KHZvaWQqIGJhc2VQdHIsIHNpemVfdCBtYXBwZWRDYXBhY2l0eSkKICAgICB7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVl
VmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VQdHIsIG1hcHBlZENhcGFjaXR5
KTsKICAgICAgICAgICAgIG1fZ3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yaWVzLmVyYXNlKHN0
ZDo6bWFrZV9wYWlyKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGJhc2VQdHIpLCBtYXBwZWRDYXBh
Y2l0eSkpOwogICAgICAgICB9CkBAIC0xNjgsNyArMTY4LDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNJbkdyb3dhYmxlT3JGYXN0TWVtb3J5KHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICAv
LyBOT1RFOiBUaGlzIGNhbiBiZSBjYWxsZWQgZnJvbSBhIHNpZ25hbCBoYW5kbGVyLCBidXQgb25s
eSBhZnRlciB3ZSBwcm92ZWQgdGhhdCB3ZSdyZSBpbiBKSVQgY29kZSBvciBXYXNtTExJbnQgY29k
ZS4KLSAgICAgICAgYXV0byBob2xkZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIGZvciAodm9pZCogbWVtb3J5IDogbV9mYXN0
TWVtb3JpZXMpIHsKICAgICAgICAgICAgIGNoYXIqIHN0YXJ0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KG1lbW9yeSk7CiAgICAgICAgICAgICBpZiAoc3RhcnQgPD0gYWRkcmVzcyAmJiBhZGRyZXNzIDw9
IHN0YXJ0ICsgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSkKQEAgLTE5Nyw3ICsxOTcsNyBAQCBw
dWJsaWM6CiAgICAgTWVtb3J5UmVzdWx0OjpLaW5kIHRyeUFsbG9jYXRlUGh5c2ljYWxCeXRlcyhz
aXplX3QgYnl0ZXMpCiAgICAgewogICAgICAgICBNZW1vcnlSZXN1bHQ6OktpbmQgcmVzdWx0ID0g
WyZdIHsKLSAgICAgICAgICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIGlmIChtX3BoeXNp
Y2FsQnl0ZXMgKyBieXRlcyA+IG1lbW9yeUxpbWl0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IE1lbW9yeVJlc3VsdDo6U3luY1RyeVRvUmVjbGFpbU1lbW9yeTsKICAgICAgICAgICAgIApAQCAt
MjE3LDcgKzIxNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZyZWVQaHlzaWNhbEJ5dGVzKHNpemVf
dCBieXRlcykKICAgICB7CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gaG9sZGVyID0gaG9s
ZExvY2sobV9sb2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAg
ICAgICAgICAgIG1fcGh5c2ljYWxCeXRlcyAtPSBieXRlczsKICAgICAgICAgfQogICAgICAgICAK
QEAgLTQ3Niw3ICs0NzYsNyBAQCBFeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxS
ZWFzb24+IE1lbW9yeTo6Z3Jvd1NoYXJlZChQYWdlQ291bnQgZGVsdGEpCiAgICAgV2FzbTo6UGFn
ZUNvdW50IG9sZFBhZ2VDb3VudDsKICAgICBXYXNtOjpQYWdlQ291bnQgbmV3UGFnZUNvdW50Owog
ICAgIGF1dG8gcmVzdWx0ID0gKFsmXSgpIC0+IEV4cGVjdGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpH
cm93RmFpbFJlYXNvbj4gewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faGFuZGxl
LT5sb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9oYW5kbGUtPmxvY2soKSB9Owog
CiAgICAgICAgIG9sZFBhZ2VDb3VudCA9IHNpemVJblBhZ2VzKCk7CiAgICAgICAgIG5ld1BhZ2VD
b3VudCA9IG9sZFBhZ2VDb3VudCArIGRlbHRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTW9kdWxlLmNwcAppbmRleCBkN2Q5ZmY4ZWZmYzExMTE2NzY0YWYxY2UxOTRkOGJlZjQwMmNj
N2I2Li5mMTcxYTRkOWJiZGU5YmQ5NWFmNzczODI0MGZhODRmNjY1ZWQzZjg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lk
IE1vZHVsZTo6dmFsaWRhdGVBc3luYyhDb250ZXh0KiBjb250ZXh0LCBWZWN0b3I8dWludDhfdD4m
JiBzb3VyY2UsIE1vZHVsZTo6QQogUmVmPENvZGVCbG9jaz4gTW9kdWxlOjpnZXRPckNyZWF0ZUNv
ZGVCbG9jayhDb250ZXh0KiBjb250ZXh0LCBNZW1vcnlNb2RlIG1vZGUpCiB7CiAgICAgUmVmUHRy
PENvZGVCbG9jaz4gY29kZUJsb2NrOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgY29kZUJsb2NrID0gbV9jb2Rl
QmxvY2tzW3N0YXRpY19jYXN0PHVpbnQ4X3Q+KG1vZGUpXTsKICAgICAvLyBJZiBhIHByZXZpb3Vz
IGF0dGVtcHQgYXQgYSBjb21waWxlIGVycm9yZWQgb3V0LCBsZXQncyB0cnkgYWdhaW4uCiAgICAg
Ly8gQ29tcGlsYXRpb25zIGZyb20gdmFsaWQgbW9kdWxlcyBjYW4gZmFpbCBiZWNhdXNlIE9PTSBh
bmQgY2FuY2VsbGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcAppbmRleCA4OGZkZjNlZjFhNTE5YjBhNmIxMGI5MmVi
MzU4OWRhNmU5ZmJmMGE5Li5hMjhiZTcxNWI3OTBiOTg2YjkyZGMxNmZiNmUyMTBkNDAxMzI4YWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HRm9yT1NSRW50
cnlQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HRm9yT1NS
RW50cnlQbGFuLmNwcApAQCAtNzgsMTQgKzc4LDE0IEBAIHZvaWQgT01HRm9yT1NSRW50cnlQbGFu
Ojp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgIGF1dG8gcGFyc2VBbmRDb21waWxlUmVzdWx0
ID0gcGFyc2VBbmRDb21waWxlKGNvbnRleHQsIGZ1bmN0aW9uLCBzaWduYXR1cmUsIHVubGlua2Vk
Q2FsbHMsIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0
KCksIG1fbW9kZSwgQ29tcGlsYXRpb25Nb2RlOjpPTUdGb3JPU1JFbnRyeU1vZGUsIG1fZnVuY3Rp
b25JbmRleCwgbV9sb29wSW5kZXgpOwogCiAgICAgaWYgKFVOTElLRUxZKCFwYXJzZUFuZENvbXBp
bGVSZXN1bHQpKSB7Ci0gICAgICAgIGZhaWwoaG9sZExvY2sobV9sb2NrKSwgbWFrZVN0cmluZyhw
YXJzZUFuZENvbXBpbGVSZXN1bHQuZXJyb3IoKSwgIndoZW4gdHJ5aW5nIHRvIHRpZXIgdXAgIiwg
U3RyaW5nOjpudW1iZXIobV9mdW5jdGlvbkluZGV4KSkpOworICAgICAgICBmYWlsKExvY2tlciB7
IG1fbG9jayB9LCBtYWtlU3RyaW5nKHBhcnNlQW5kQ29tcGlsZVJlc3VsdC5lcnJvcigpLCAid2hl
biB0cnlpbmcgdG8gdGllciB1cCAiLCBTdHJpbmc6Om51bWJlcihtX2Z1bmN0aW9uSW5kZXgpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBFbnRyeXBvaW50IG9tZ0VudHJ5cG9pbnQ7
CiAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKCpjb250ZXh0Lndhc21FbnRyeXBvaW50SklULCBu
dWxscHRyLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpXYXNtLCBKSVRDb21waWxhdGlvbkNhbkZhaWwp
OwogICAgIGlmIChVTkxJS0VMWShsaW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpKSB7Ci0g
ICAgICAgIEJhc2U6OmZhaWwoaG9sZExvY2sobV9sb2NrKSwgbWFrZVN0cmluZygiT3V0IG9mIGV4
ZWN1dGFibGUgbWVtb3J5IHdoaWxlIHRpZXJpbmcgdXAgZnVuY3Rpb24gYXQgaW5kZXggIiwgU3Ry
aW5nOjpudW1iZXIobV9mdW5jdGlvbkluZGV4KSkpOworICAgICAgICBCYXNlOjpmYWlsKExvY2tl
ciB7IG1fbG9jayB9LCBtYWtlU3RyaW5nKCJPdXQgb2YgZXhlY3V0YWJsZSBtZW1vcnkgd2hpbGUg
dGllcmluZyB1cCBmdW5jdGlvbiBhdCBpbmRleCAiLCBTdHJpbmc6Om51bWJlcihtX2Z1bmN0aW9u
SW5kZXgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2
b2lkIE9NR0Zvck9TUkVudHJ5UGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICB7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcihwYXJzZUFuZENvbXBpbGVSZXN1
bHQudmFsdWUoKS0+Y2FsbGVlTW92ZUxvY2F0aW9uLCBDYWxsZWVCaXRzOjpib3hXYXNtKGNhbGxl
ZS5wdHIoKSkpOwogCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jb2RlQmxvY2st
Pm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NvZGVCbG9jay0+bV9sb2NrIH07
CiAgICAgICAgIGZvciAoYXV0byYgY2FsbCA6IGNhbGxlZS0+d2FzbVRvV2FzbUNhbGxzaXRlcygp
KSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8V2FzbUVudHJ5UHRyVGFnPiBl
bnRyeXBvaW50OwogICAgICAgICAgICAgaWYgKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlIDwgbV9t
b2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpKQpAQCAtMTE4
LDE0ICsxMTgsMTQgQEAgdm9pZCBPTUdGb3JPU1JFbnRyeVBsYW46OndvcmsoQ29tcGlsYXRpb25F
ZmZvcnQpCiAgICAgICAgICAgICBzd2l0Y2ggKG1fY2FsbGVlLT5jb21waWxhdGlvbk1vZGUoKSkg
ewogICAgICAgICAgICAgY2FzZSBDb21waWxhdGlvbk1vZGU6OkxMSW50TW9kZTogewogICAgICAg
ICAgICAgICAgIExMSW50Q2FsbGVlKiBsbGludENhbGxlZSA9IHN0YXRpY19jYXN0PExMSW50Q2Fs
bGVlKj4obV9jYWxsZWUucHRyKCkpOwotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobGxpbnRDYWxsZWUtPnRpZXJVcENvdW50ZXIoKS5tX2xvY2spOworICAgICAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBsbGludENhbGxlZS0+dGllclVwQ291bnRlcigpLm1fbG9jayB9
OwogICAgICAgICAgICAgICAgIGxsaW50Q2FsbGVlLT5zZXRPU1JFbnRyeUNhbGxlZShjYWxsZWUu
Y29weVJlZigpKTsKICAgICAgICAgICAgICAgICBsbGludENhbGxlZS0+dGllclVwQ291bnRlcigp
Lm1fbG9vcENvbXBpbGF0aW9uU3RhdHVzID0gTExJbnRUaWVyVXBDb3VudGVyOjpDb21waWxhdGlv
blN0YXR1czo6Q29tcGlsZWQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIENvbXBpbGF0aW9uTW9kZTo6QkJRTW9kZTogewogICAgICAgICAg
ICAgICAgIEJCUUNhbGxlZSogYmJxQ2FsbGVlID0gc3RhdGljX2Nhc3Q8QkJRQ2FsbGVlKj4obV9j
YWxsZWUucHRyKCkpOwotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYmJx
Q2FsbGVlLT50aWVyVXBDb3VudCgpLT5nZXRMb2NrKCkpOworICAgICAgICAgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBiYnFDYWxsZWUtPnRpZXJVcENvdW50KCktPmdldExvY2soKSB9OwogICAgICAg
ICAgICAgICAgIGJicUNhbGxlZS0+c2V0T1NSRW50cnlDYWxsZWUoY2FsbGVlLmNvcHlSZWYoKSk7
CiAgICAgICAgICAgICAgICAgYmJxQ2FsbGVlLT50aWVyVXBDb3VudCgpLT5vc3JFbnRyeVRyaWdn
ZXJzKClbbV9sb29wSW5kZXhdID0gVGllclVwQ291bnQ6OlRyaWdnZXJSZWFzb246OkNvbXBpbGF0
aW9uRG9uZTsKICAgICAgICAgICAgICAgICBiYnFDYWxsZWUtPnRpZXJVcENvdW50KCktPm1fY29t
cGlsYXRpb25TdGF0dXNGb3JPTUdGb3JPU1JFbnRyeSA9IFRpZXJVcENvdW50OjpDb21waWxhdGlv
blN0YXR1czo6Q29tcGlsZWQ7CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBPTUdGb3JPU1JFbnRy
eVBsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgICAgIH0KICAgICB9CiAgICAgZGF0
YUxvZ0xuSWYoV2FzbU9NR0Zvck9TUkVudHJ5UGxhbkludGVybmFsOjp2ZXJib3NlLCAiRmluaXNo
ZWQgT01HRm9yT1NSRW50cnkgIiwgbV9mdW5jdGlvbkluZGV4KTsKLSAgICBjb21wbGV0ZShob2xk
TG9jayhtX2xvY2spKTsKKyAgICBjb21wbGV0ZShMb2NrZXIgeyBtX2xvY2sgfSk7CiB9CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
T01HUGxhbi5jcHAKaW5kZXggNWIwOWEwMGQ5MjQ0YThkNzEyNDdkOTM3MDY0NGE0Y2M0MGI1M2My
Mi4uOGMyMzg4YjE2ZjBjZTE0OGQ3ZDhhMTM1NjI2ZGE2ZjVkMzRlOTRjYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtNzUsMTQgKzc1LDE0IEBAIHZv
aWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICBhdXRvIHBhcnNlQW5kQ29t
cGlsZVJlc3VsdCA9IHBhcnNlQW5kQ29tcGlsZShjb250ZXh0LCBmdW5jdGlvbiwgc2lnbmF0dXJl
LCB1bmxpbmtlZENhbGxzLCBvc3JFbnRyeVNjcmF0Y2hCdWZmZXJTaXplLCBtX21vZHVsZUluZm9y
bWF0aW9uLmdldCgpLCBtX21vZGUsIENvbXBpbGF0aW9uTW9kZTo6T01HTW9kZSwgbV9mdW5jdGlv
bkluZGV4LCBVSU5UMzJfTUFYKTsKIAogICAgIGlmIChVTkxJS0VMWSghcGFyc2VBbmRDb21waWxl
UmVzdWx0KSkgewotICAgICAgICBmYWlsKGhvbGRMb2NrKG1fbG9jayksIG1ha2VTdHJpbmcocGFy
c2VBbmRDb21waWxlUmVzdWx0LmVycm9yKCksICJ3aGVuIHRyeWluZyB0byB0aWVyIHVwICIsIFN0
cmluZzo6bnVtYmVyKG1fZnVuY3Rpb25JbmRleCkpKTsKKyAgICAgICAgZmFpbChMb2NrZXIgeyBt
X2xvY2sgfSwgbWFrZVN0cmluZyhwYXJzZUFuZENvbXBpbGVSZXN1bHQuZXJyb3IoKSwgIndoZW4g
dHJ5aW5nIHRvIHRpZXIgdXAgIiwgU3RyaW5nOjpudW1iZXIobV9mdW5jdGlvbkluZGV4KSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgRW50cnlwb2ludCBvbWdFbnRyeXBvaW50Owog
ICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcigqY29udGV4dC53YXNtRW50cnlwb2ludEpJVCwgbnVs
bHB0ciwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6V2FzbSwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsK
ICAgICBpZiAoVU5MSUtFTFkobGlua0J1ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSkgewotICAg
ICAgICBCYXNlOjpmYWlsKGhvbGRMb2NrKG1fbG9jayksIG1ha2VTdHJpbmcoIk91dCBvZiBleGVj
dXRhYmxlIG1lbW9yeSB3aGlsZSB0aWVyaW5nIHVwIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmlu
Zzo6bnVtYmVyKG1fZnVuY3Rpb25JbmRleCkpKTsKKyAgICAgICAgQmFzZTo6ZmFpbChMb2NrZXIg
eyBtX2xvY2sgfSwgbWFrZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFibGUgbWVtb3J5IHdoaWxlIHRp
ZXJpbmcgdXAgZnVuY3Rpb24gYXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIobV9mdW5jdGlvbklu
ZGV4KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjIsMTMgKzEyMiwxMyBAQCB2
b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKEJCUUNhbGxlZSogYmJxQ2FsbGVlID0gbV9jb2RlQmxvY2stPm1fYmJxQ2FsbGVl
c1ttX2Z1bmN0aW9uSW5kZXhdLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhiYnFDYWxsZWUtPnRpZXJVcENvdW50KCktPmdldExvY2soKSk7CisgICAgICAg
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGJicUNhbGxlZS0+dGllclVwQ291bnQoKS0+Z2V0TG9j
aygpIH07CiAgICAgICAgICAgICAgICAgYmJxQ2FsbGVlLT5zZXRSZXBsYWNlbWVudChjYWxsZWUu
Y29weVJlZigpKTsKICAgICAgICAgICAgICAgICBiYnFDYWxsZWUtPnRpZXJVcENvdW50KCktPm1f
Y29tcGlsYXRpb25TdGF0dXNGb3JPTUcgPSBUaWVyVXBDb3VudDo6Q29tcGlsYXRpb25TdGF0dXM6
OkNvbXBpbGVkOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5t
X2xsaW50Q2FsbGVlcykgewogICAgICAgICAgICAgICAgIExMSW50Q2FsbGVlJiBsbGludENhbGxl
ZSA9IG1fY29kZUJsb2NrLT5tX2xsaW50Q2FsbGVlcy0+YXQobV9mdW5jdGlvbkluZGV4KS5nZXQo
KTsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxsaW50Q2FsbGVlLnRp
ZXJVcENvdW50ZXIoKS5tX2xvY2spOworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBs
bGludENhbGxlZS50aWVyVXBDb3VudGVyKCkubV9sb2NrIH07CiAgICAgICAgICAgICAgICAgbGxp
bnRDYWxsZWUuc2V0UmVwbGFjZW1lbnQoY2FsbGVlLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICAg
ICAgbGxpbnRDYWxsZWUudGllclVwQ291bnRlcigpLm1fY29tcGlsYXRpb25TdGF0dXMgPSBMTElu
dFRpZXJVcENvdW50ZXI6OkNvbXBpbGF0aW9uU3RhdHVzOjpDb21waWxlZDsKICAgICAgICAgICAg
IH0KQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZv
cnQpCiAgICAgfQogCiAgICAgZGF0YUxvZ0xuSWYoV2FzbU9NR1BsYW5JbnRlcm5hbDo6dmVyYm9z
ZSwgIkZpbmlzaGVkIE9NRyAiLCBtX2Z1bmN0aW9uSW5kZXgpOwotICAgIGNvbXBsZXRlKGhvbGRM
b2NrKG1fbG9jaykpOworICAgIGNvbXBsZXRlKExvY2tlciB7IG1fbG9jayB9KTsKIH0KIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21PcGVyYXRpb25zLmNwcAppbmRleCA0NTZlNTI4ODIwNmNjNTY1ZmViMzhjOWMzY2ZhMmU2NTBm
MTdlMjhlLi41YWY4NzQ1NWY0ODIwNDA1YTFiMWIyNzE0ZmRjZjkwOTZiMjlhZGMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCkBAIC03OCw3ICs3
OCw3IEBAIHN0YXRpYyB2b2lkIHRyaWdnZXJPTUdSZXBsYWNlbWVudENvbXBpbGUoVGllclVwQ291
bnQmIHRpZXJVcCwgT01HQ2FsbGVlKiByZXBsYWNlCiAKICAgICBib29sIGNvbXBpbGUgPSBmYWxz
ZTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGllclVwLmdldExvY2so
KSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyB0aWVyVXAuZ2V0TG9jaygpIH07CiAgICAgICAg
IHN3aXRjaCAodGllclVwLm1fY29tcGlsYXRpb25TdGF0dXNGb3JPTUcpIHsKICAgICAgICAgY2Fz
ZSBUaWVyVXBDb3VudDo6Q29tcGlsYXRpb25TdGF0dXM6OlN0YXJ0Q29tcGlsYXRpb246CiAgICAg
ICAgICAgICB0aWVyVXAuc2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9u
UmVzdWx0KGZ1bmN0aW9uSW5kZXgsIENvbXBpbGF0aW9uRGVmZXJyZWQpOwpAQCAtMjc4LDcgKzI3
OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25XYXNtVHJpZ2dlck9TUkVu
dHJ5Tm93LCB2b2lkLCAoUHJvYmU6OkNvbnRleHQmCiAKICAgICBUaWVyVXBDb3VudDo6Q29tcGls
YXRpb25TdGF0dXMgY29tcGlsYXRpb25TdGF0dXMgPSBUaWVyVXBDb3VudDo6Q29tcGlsYXRpb25T
dGF0dXM6Ok5vdENvbXBpbGVkOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayh0aWVyVXAuZ2V0TG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRpZXJVcC5nZXRM
b2NrKCkgfTsKICAgICAgICAgY29tcGlsYXRpb25TdGF0dXMgPSB0aWVyVXAubV9jb21waWxhdGlv
blN0YXR1c0Zvck9NR0Zvck9TUkVudHJ5OwogICAgIH0KIApAQCAtMjk2LDcgKzI5Niw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25XYXNtVHJpZ2dlck9TUkVudHJ5Tm93LCB2
b2lkLCAoUHJvYmU6OkNvbnRleHQmCiAgICAgICAgIC8vIFdlIHdlcmUgYXNrZWQgdG8gZW50ZXIg
YXMgc29vbiBhcyBwb3NzaWJsZSBhbmQgc3RhcnQgY29tcGlsaW5nIGFuCiAgICAgICAgIC8vIGVu
dHJ5IGZvciB0aGUgY3VycmVudCBsb29wSW5kZXguIFVuc2V0IHRoaXMgdHJpZ2dlciBzbyB3ZQog
ICAgICAgICAvLyBkb24ndCBjb250aW51YWxseSBlbnRlci4KLSAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayh0aWVyVXAuZ2V0TG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRp
ZXJVcC5nZXRMb2NrKCkgfTsKICAgICAgICAgVGllclVwQ291bnQ6OlRyaWdnZXJSZWFzb24gcmVh
c29uID0gdGllclVwLm9zckVudHJ5VHJpZ2dlcnMoKVtsb29wSW5kZXhdOwogICAgICAgICBpZiAo
cmVhc29uID09IFRpZXJVcENvdW50OjpUcmlnZ2VyUmVhc29uOjpTdGFydENvbXBpbGF0aW9uKSB7
CiAgICAgICAgICAgICB0aWVyVXAub3NyRW50cnlUcmlnZ2VycygpW2xvb3BJbmRleF0gPSBUaWVy
VXBDb3VudDo6VHJpZ2dlclJlYXNvbjo6RG9udFRyaWdnZXI7CkBAIC0zNTAsNyArMzUwLDcgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21UcmlnZ2VyT1NSRW50cnlOb3cs
IHZvaWQsIChQcm9iZTo6Q29udGV4dCYKICAgICAgICAgICAgIC8vIHdlJ2xsIGV2ZW50dWFsbHkg
dHJpZ2dlciBzb21lIGxvb3AgdGhhdCBpcyBleGVjdXRpbmcgdG8gY29tcGlsZS4gV2Ugc3RhcnQg
d2l0aCB0cnlpbmcgdG8gY29tcGlsZSBvdXRlcgogICAgICAgICAgICAgLy8gbG9vcHMgc2luY2Ug
d2UgYmVsaWV2ZSBvdXRlciBsb29wIGNvbXBpbGF0aW9ucyByZXZlYWwgdGhlIGJlc3Qgb3Bwb3J0
dW5pdGllcyBmb3Igb3B0aW1pemluZyBjb2RlLgogICAgICAgICAgICAgdWludDMyX3QgY3VycmVu
dExvb3BJbmRleCA9IHRpZXJVcC5vdXRlckxvb3BzKClbbG9vcEluZGV4XTsKLSAgICAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGllclVwLmdldExvY2soKSk7CisgICAgICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgdGllclVwLmdldExvY2soKSB9OwogCiAgICAgICAgICAgICAvLyBXZSBh
bHJlYWR5IHN0YXJ0ZWQgT01HRm9yT1NSRW50cnlQbGFuLgogICAgICAgICAgICAgaWYgKGNhbGxl
ZS5kaWRTdGFydENvbXBpbGluZ09TUkVudHJ5Q2FsbGVlKCkpCkBAIC0zODIsNyArMzgyLDcgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21UcmlnZ2VyT1NSRW50cnlOb3cs
IHZvaWQsIChQcm9iZTo6Q29udGV4dCYKIAogICAgIGJvb2wgc3RhcnRPU1JFbnRyeUNvbXBpbGF0
aW9uID0gZmFsc2U7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRpZXJV
cC5nZXRMb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGllclVwLmdldExvY2soKSB9
OwogICAgICAgICBpZiAodGllclVwLm1fY29tcGlsYXRpb25TdGF0dXNGb3JPTUdGb3JPU1JFbnRy
eSA9PSBUaWVyVXBDb3VudDo6Q29tcGlsYXRpb25TdGF0dXM6Ok5vdENvbXBpbGVkKSB7CiAgICAg
ICAgICAgICB0aWVyVXAubV9jb21waWxhdGlvblN0YXR1c0Zvck9NR0Zvck9TUkVudHJ5ID0gVGll
clVwQ291bnQ6OkNvbXBpbGF0aW9uU3RhdHVzOjpTdGFydENvbXBpbGF0aW9uOwogICAgICAgICAg
ICAgc3RhcnRPU1JFbnRyeUNvbXBpbGF0aW9uID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlSW5saW5lcy5oCmluZGV4IGRlZTZmN2E1NjNhNjdh
MGFmMTMxMzJlOGVjZTFhYTYzNmIxYThmYjUuLmY1MjViZWJkMzY4NjYzMGE3NWE3MjRkMmYxMzYw
ODVmYWQyOTM0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
aWduYXR1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNp
Z25hdHVyZUlubGluZXMuaApAQCAtNTAsNyArNTAsNyBAQCBpbmxpbmUgU2lnbmF0dXJlSW5kZXgg
U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkKIHsK
ICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgU2lnbmF0dXJlSW5mb3JtYXRpb24m
IGluZm8gPSBzaW5nbGV0b24oKTsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhpbmZv
Lm1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBpbmZvLm1fbG9jayB9OwogICAgICAg
ICBBU1NFUlRfVU5VU0VEKGluZm8sIGluZm8ubV9zaWduYXR1cmVTZXQuY29udGFpbnMoU2lnbmF0
dXJlSGFzaCB7IG1ha2VSZWYoY29uc3RfY2FzdDxTaWduYXR1cmUmPihzaWduYXR1cmUpKSB9KSk7
CiAgICAgfQogICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KCZzaWduYXR1
cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAppbmRl
eCAwZjY1YTkwZjA0ZjQwMWRlNWFiYjFmZjk0ZTBjYjg0NmEzOGNhZjg2Li5lNzg3ODY1NWU0MDE4
MTc0ZDY4MzkzYThiMDM0MDBhNTUzOTY1MmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2xvd1BhdGhzLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIGlubGluZSBib29sIGpp
dENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKFdhc206OkxMSW50Q2FsbGVlKiBjYWxsZWUsIFdhc206
OkZ1bmN0aW9uCiAKICAgICBib29sIGNvbXBpbGUgPSBmYWxzZTsKICAgICB7Ci0gICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sodGllclVwQ291bnRlci5tX2xvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgdGllclVwQ291bnRlci5tX2xvY2sgfTsKICAgICAgICAgc3dpdGNoICh0aWVy
VXBDb3VudGVyLm1fY29tcGlsYXRpb25TdGF0dXMpIHsKICAgICAgICAgY2FzZSBXYXNtOjpMTElu
dFRpZXJVcENvdW50ZXI6OkNvbXBpbGF0aW9uU3RhdHVzOjpOb3RDb21waWxlZDoKICAgICAgICAg
ICAgIGNvbXBpbGUgPSB0cnVlOwpAQCAtMjExLDcgKzIxMSw3IEBAIFdBU01fU0xPV19QQVRIX0RF
Q0wobG9vcF9vc3IpCiAKICAgICBib29sIGNvbXBpbGUgPSBmYWxzZTsKICAgICB7Ci0gICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGllclVwQ291bnRlci5tX2xvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgdGllclVwQ291bnRlci5tX2xvY2sgfTsKICAgICAgICAgc3dpdGNoICh0
aWVyVXBDb3VudGVyLm1fbG9vcENvbXBpbGF0aW9uU3RhdHVzKSB7CiAgICAgICAgIGNhc2UgV2Fz
bTo6TExJbnRUaWVyVXBDb3VudGVyOjpDb21waWxhdGlvblN0YXR1czo6Tm90Q29tcGlsZWQ6CiAg
ICAgICAgICAgICBjb21waWxlID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TdHJlYW1pbmdDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU3RyZWFtaW5nQ29tcGlsZXIuY3BwCmluZGV4IGExYTAzNzQ1MzA4Mjk3ZDAw
NTk3MzFiNzQ5YjZlNzM5NDlkOWQ3MDkuLjg1OTZjMDdkZmRlYjZhNjUzNjcxMjQ5NThlM2VmMzJk
Y2YwOTBkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJl
YW1pbmdDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0
cmVhbWluZ0NvbXBpbGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBib29sIFN0cmVhbWluZ0NvbXBp
bGVyOjpkaWRSZWNlaXZlRnVuY3Rpb25EYXRhKHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXgsIGNvbnN0
IFdhcwogCiB2b2lkIFN0cmVhbWluZ0NvbXBpbGVyOjpkaWRDb21waWxlRnVuY3Rpb24oU3RyZWFt
aW5nUGxhbiYgcGxhbikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIEFTU0VSVChtX3RocmVhZGVkQ29tcGls
YXRpb25TdGFydGVkKTsKICAgICBpZiAocGxhbi5mYWlsZWQoKSkKICAgICAgICAgbV9wbGFuLT5k
aWRGYWlsSW5TdHJlYW1pbmcocGxhbi5lcnJvck1lc3NhZ2UoKSk7CkBAIC0xOTEsNyArMTkxLDcg
QEAgdm9pZCBTdHJlYW1pbmdDb21waWxlcjo6ZmluYWxpemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB7Ci0gICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogICAgICAgICBtX2ZpbmFsaXplZCA9IHRydWU7CiAgICAgICAgIGNvbXBsZXRlSWZOZWNlc3Nh
cnkobG9ja2VyKTsKICAgICB9CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBTdHJlYW1pbmdDb21w
aWxlcjo6ZmluYWxpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHZvaWQgU3RyZWFt
aW5nQ29tcGlsZXI6OmZhaWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBl
cnJvcikKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBBU1NFUlQoIW1fZmlu
YWxpemVkKTsKICAgICAgICAgaWYgKG1fZWFnZXJGYWlsZWQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBTdHJlYW1pbmdDb21waWxlcjo6ZmFpbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGVycm9yKQogdm9pZCBTdHJlYW1pbmdDb21w
aWxlcjo6Y2FuY2VsKCkKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBBU1NF
UlQoIW1fZmluYWxpemVkKTsKICAgICAgICAgaWYgKG1fZWFnZXJGYWlsZWQpCiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3Ry
ZWFtaW5nUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5n
UGxhbi5jcHAKaW5kZXggNDIyNzhmYWFkYzYzYWE5OWJjNjc4NTI5YzY0OGNhNDcxMGE4YTNkZi4u
NjEzYWNiYTE4ZjM2OTEzOWFkOGYyN2I4MTlkMTMwODYzZTFmZGQwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BsYW4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQbGFuLmNwcApAQCAtNTQsNyArNTQs
NyBAQCB2b2lkIFN0cmVhbWluZ1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiB7CiAgICAg
bV9wbGFuLT5jb21waWxlRnVuY3Rpb24obV9mdW5jdGlvbkluZGV4KTsKICAgICBkYXRhTG9nTG5J
ZihXYXNtU3RyZWFtaW5nUGxhbkludGVybmFsOjp2ZXJib3NlLCAiRmluaXNoZWQgU3RyZWFtaW5n
ICIsIG1fZnVuY3Rpb25JbmRleCk7Ci0gICAgY29tcGxldGUoaG9sZExvY2sobV9sb2NrKSk7Cisg
ICAgY29tcGxldGUoTG9ja2VyIHsgbV9sb2NrIH0pOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6V2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKaW5kZXggNmFm
NzdkYzU2NWU1NjEzMjJlNDczMTY3ZjEwNTNhN2JlMWFjNjNlYy4uZmEyNjZkMjk3YjFiNmQ1ZWFj
NzQ4NmI3YTUxOGI5YjNjZTI3MGU0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VGFibGUuY3BwCkBAIC04NSw3ICs4NSw3IEBAIE9wdGlvbmFsPHVpbnQzMl90PiBUYWJsZTo6Z3Jv
dyh1aW50MzJfdCBkZWx0YSwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUpCiAgICAgaWYgKGRlbHRhID09
IDApCiAgICAgICAgIHJldHVybiBsZW5ndGgoKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9vd25lci0+Y2VsbExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb3duZXItPmNl
bGxMb2NrKCkgfTsKIAogICAgIHVzaW5nIENoZWNrZWQgPSBDaGVja2VkPHVpbnQzMl90LCBSZWNv
cmRPdmVyZmxvdz47CiAgICAgQ2hlY2tlZCBuZXdMZW5ndGhDaGVja2VkID0gbGVuZ3RoKCk7CkBA
IC0xNzAsNyArMTcwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQgVGFibGU6
OnZpc2l0QWdncmVnYXRlSW1wbChWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKG1fb3duZXIpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vd25lci0+Y2VsbExv
Y2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb3duZXItPmNlbGxMb2NrKCkgfTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkKICAgICAgICAgdmlzaXRvci5h
cHBlbmQobV9qc1ZhbHVlcy5nZXQoKVtpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21UaHVua3MuY3BwCmluZGV4IGY2MGQwNDJjZTIxODY3OTc0MzQ1YjdjODg4Zjg4ZTQ2NjUy
ODYyNzYuLmJmYjUyZTdjZTc1YjQzYjI3YmY5MDBmMDFmOGJmNWZmMTM2YmM3NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaHVua3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaHVua3MuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAg
VGh1bmtzJiBUaHVua3M6OnNpbmdsZXRvbigpCiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gVGh1bmtzOjpzdHViKFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvcikKIHsKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgIHJldHVybiBzdHViKGxvY2tlciwgZ2VuZXJhdG9yKTsKIH0KIApAQCAtMTMz
LDcgKzEzMyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gVGh1bmtz
OjpzdHViKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsCiAKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gVGh1bmtzOjpleGlzdGluZ1N0dWIoVGh1bmtHZW5lcmF0b3Ig
Z2VuZXJhdG9yKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBhdXRvIGl0ZXIgPSBtX3N0dWJzLmZpbmQo
Z2VuZXJhdG9yKTsKICAgICBpZiAoaXRlciAhPSBtX3N0dWJzLmVuZCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKaW5kZXggMTkwNDM3OTM3NTlkNDU4MzRi
ZWE4NTkyNzUyMjUxNGJjY2Q0ODViZC4uMGNjNmVmZmJkNzk0OGNjMGQzY2U4NDFhODkzNWY2ZDU3
OWViNTBmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmts
aXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3Bw
CkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0
ZShsb2NrZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRlKGhvbGRMb2Nr
KCp3b3JrbGlzdC5tX2xvY2spKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRlKExvY2tlciB7ICp3
b3JrbGlzdC5tX2xvY2sgfSk7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0
IGZpbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5SW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUluc3RhbmNlLmNwcAppbmRleCA4NzAzNWEyMmIxZjUwZTQ5YzVhNTQ2OGExYzVhOTMz
OTEzODZjNDhhLi42NmRhMTBhNzgwMDNkYjI3YTE5MTgyZTliMWIwYzNjODA1ZDRhM2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJ
bnN0YW5jZS5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICBm
b3IgKHNpemVfdCBpIDogdGhpc09iamVjdC0+aW5zdGFuY2UoKS5nbG9iYWxzVG9NYXJrKCkpCiAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNPYmpl
Y3QtPmluc3RhbmNlKCkubG9hZEk2NEdsb2JhbChpKSkpOwogCi0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhjZWxsLT5jZWxsTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY2VsbC0+Y2Vs
bExvY2soKSB9OwogICAgIGZvciAoYXV0byYgd3JhcHBlciA6IHRoaXNPYmplY3QtPmluc3RhbmNl
KCkuZnVuY3Rpb25XcmFwcGVycygpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVk
KHdyYXBwZXIuZ2V0KCkpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>