<?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>147340</bug_id>
          
          <creation_ts>2015-07-27 16:36:00 -0700</creation_ts>
          <short_desc>[ES6] Implement ES6 Modules</short_desc>
          <delta_ts>2026-01-12 09:03:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>164539</dependson>
    
    <dependson>147350</dependson>
    
    <dependson>147353</dependson>
    
    <dependson>147422</dependson>
    
    <dependson>147876</dependson>
    
    <dependson>148053</dependson>
    
    <dependson>148171</dependson>
    
    <dependson>148172</dependson>
    
    <dependson>148173</dependson>
    
    <dependson>148689</dependson>
    
    <dependson>148705</dependson>
    
    <dependson>148896</dependson>
    
    <dependson>148897</dependson>
    
    <dependson>149129</dependson>
    
    <dependson>161651</dependson>
    
    <dependson>164827</dependson>
    
    <dependson>164858</dependson>
    
    <dependson>164860</dependson>
    
    <dependson>164861</dependson>
    
    <dependson>165849</dependson>
    
    <dependson>177959</dependson>
    
    <dependson>178168</dependson>
          <blocked>166405</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>adam</cc>
    
    <cc>barraclough</cc>
    
    <cc>chi187</cc>
    
    <cc>darin</cc>
    
    <cc>fealebenpae</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>graouts</cc>
    
    <cc>ivanbuhov2</cc>
    
    <cc>lzsoft.cja</cc>
    
    <cc>m.goleb+bugzilla</cc>
    
    <cc>mike</cc>
    
    <cc>oliver</cc>
    
    <cc>paulirish</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1112581</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-27 16:36:00 -0700</bug_when>
    <thetext>Meta bug for ES6 modules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119670</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-20 22:43:56 -0700</bug_when>
    <thetext>Let&apos;s keep the Loader implementation JS.
It makes catching up the draft change easy.
And we can extract / propose the spec from the actual working prototype relatively easy :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119671</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-20 22:44:27 -0700</bug_when>
    <thetext>Roadmap seems to be added to the draft repository. https://github.com/whatwg/loader/blob/master/roadmap.md</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121190</commentid>
    <comment_count>3</comment_count>
      <attachid>260029</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-26 21:34:42 -0700</bug_when>
    <thetext>Created attachment 260029
Patch

WIP: the big picture of the final implementation. now breaking this into several patches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121237</commentid>
    <comment_count>4</comment_count>
      <attachid>260044</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-27 00:00:11 -0700</bug_when>
    <thetext>Created attachment 260044
Patch

WIP: drop C++ recursions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121634</commentid>
    <comment_count>5</comment_count>
      <attachid>260137</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 01:35:24 -0700</bug_when>
    <thetext>Created attachment 260137
Patch

WIP: rebase the patch based on the landed part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121638</commentid>
    <comment_count>6</comment_count>
      <attachid>260139</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 01:50:10 -0700</bug_when>
    <thetext>Created attachment 260139
Patch

WIP: rebase the patch based on the landed part, part 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121644</commentid>
    <comment_count>7</comment_count>
      <attachid>260139</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 01:55:56 -0700</bug_when>
    <thetext>Comment on attachment 260139
Patch

Still have a problem in Export/Import module processing (order, and resolveExport part), I&apos;ll fix this part while extracting ModuleProgramExecutable from this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121970</commentid>
    <comment_count>8</comment_count>
      <attachid>260220</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 23:16:30 -0700</bug_when>
    <thetext>Created attachment 260220
Patch

WIP: adding bunch of tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123916</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-05 01:46:22 -0700</bug_when>
    <thetext>OK, now, ES6 Modules in JSC shell is landed!
It&apos;s time to integrate it to WebCore! (first, we&apos;ll enable it only inside WebKit, not expose it to user space, because the loader spec is not mature yet.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126454</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-16 14:03:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/14790682&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260029</attachid>
            <date>2015-08-26 21:34:42 -0700</date>
            <delta_ts>2015-08-27 00:00:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147340-20150826213431.patch</filename>
            <type>text/plain</type>
            <size>173171</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NTcyNTg1YWEyNmRlZGFhZGMwOTZkY2MwZmE3NjAzYTE1OTEzNDA1Li4wYWFjNWI3YWRhNWUxZjAx
MzM4NWZhMmMwN2YxOGM2ZDlhZGIwYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDggQEAKKzIwMTUtMDgtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBNb2R1bGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDczNDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvTW9kdWxlTG9hZGVy
T2JqZWN0LmpzOgorICAgICAgICAocmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMucmVzb2x2ZURl
cGVuZGVuY2llc1Byb21pc2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbi4pOgorICAgICAg
ICAocmVxdWVzdExpbmspOgorICAgICAgICAocmVxdWVzdFJlYWR5KToKKyAgICAgICAgKGxpbmsp
OgorICAgICAgICAobW9kdWxlRXZhbHVhdGlvbik6CisgICAgICAgIChsb2FkTW9kdWxlKToKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmluZmVycmVkTmFtZSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6TW9kdWxl
UHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6Ok1v
ZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpFdmFs
Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OkZ1bmN0aW9uQ29k
ZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlVHlwZS5jcHA6CisgICAgICAgIChXVEY6
OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVUeXBlLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVQ
cm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SW1wb3J0RGVjbGFyYXRp
b25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFeHBvcnRBbGxEZWNsYXJhdGlv
bk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cG9ydERlZmF1bHREZWNsYXJh
dGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cG9ydExvY2FsRGVjbGFy
YXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFeHBvcnROYW1lZERlY2xh
cmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnJpZW5kbHlTb3VyY2VVUkwpOgorICAgICAgICAo
SlNDOjpTdGFja0ZyYW1lOjpmcmllbmRseUZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChKU0M6Omdl
dFN0YWNrRnJhbWVDb2RlVHlwZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRl
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJh
bWU6OmNvZGVUeXBlKToKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVuY3Rp
b25OYW1lKToKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6c291cmNlVVJMKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaDoKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29s
dmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2NvcGUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICog
bGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldE1vZHVs
ZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEVudHJ5cG9pbnQp
OgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICog
bGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6bW9kdWxlUHJvZ3Jh
bUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6
ZXIuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUpOgorICAgICAgICAo
SlNDOjpNb2R1bGVBbmFseXplcjo6YW5hbHl6ZSk6CisgICAgICAgICogcGFyc2VyL01vZHVsZUFu
YWx5emVyLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUltcG9ydENsYXVzZUl0ZW0pOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhdGlvbik6CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZUxleGljYWxWYXJpYWJs
ZSk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc0ltcG9ydGVkTmFtZXNwYWNlKToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc0ltcG9ydGVkTmFtZXNwYWNl
KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZmluZCk6CisgICAgICAgICog
cnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2Jh
bENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0TW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpjaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgICogcnVudGltZS9FeGVj
dXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUp
OgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAg
ICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbWVudENvZGVCbG9ja0Zvcik6
CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveSk6CisgICAg
ICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheCk6CisgICAgICAg
IChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp1bmxpbmtDYWxscyk6CisgICAgICAgIChK
U0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpT
Qzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNsZWFyQ29kZSk6CisgICAgICAgIChKU0M6OkV4
ZWN1dGFibGVCYXNlOjpkdW1wKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmlzTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOgor
ICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGlt
ZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxl
RW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6
OnB1dCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5
KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaC4KKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVFbnZpcm9ubWVudDo6b2Zmc2V0T2ZNb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpK
U01vZHVsZUVudmlyb25tZW50OjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlRW52aXJvbm1lbnQ6Om1vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52
aXJvbm1lbnQ6Om1vZHVsZVJlY29yZFNsb3QpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmly
b25tZW50OjpKU01vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVO
YW1lc3BhY2VPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkpOgorICAgICAgICAoSlNDOjptb2R1
bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
Y3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6
OmlkZW50aWZpZXJUb0pTVmFsdWUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6aG9z
dFJlc29sdmVJbXBvcnRlZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpn
ZXRFeHBvcnRlZE5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVs
ZU5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmxpbmtNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6ZXhlY3V0ZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5o
OgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVSZWNvcmQ6OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29y
ZDo6bW9kdWxlS2V5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV4cG9ydEVudHJp
ZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6aW1wb3J0RW50cmllcyk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpkZWNsYXJlZFZhcmlhYmxlcyk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjpsZXhpY2FsVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6Om1vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVS
ZWNvcmQ6OlJlc29sdmVRdWVyeTo6UmVzb2x2ZVF1ZXJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6OlJlc29sdmVRdWVyeTo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OlJlc29sdmVRdWVyeTo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlND
OjpKU01vZHVsZVJlY29yZDo6bW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlND
OjpKU01vZHVsZVJlY29yZDo6SlNNb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZVJlY29yZDo6UmVzb2x2ZVF1ZXJ5SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjpSZXNvbHZlUXVlcnlIYXNoOjplcXVhbCk6CisgICAgICAgICogcnVudGltZS9KU1Nj
b3BlLmNwcDoKKyAgICAgICAgKEpTQzo6YWJzdHJhY3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpy
ZXNvbHZlVHlwZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5oOgorICAgICAgICAo
SlNDOjptYWtlVHlwZSk6CisgICAgICAgIChKU0M6Om5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKToK
KyAgICAgICAgKEpTQzo6UmVzb2x2ZU9wOjpSZXNvbHZlT3ApOgorICAgICAgICAqIHJ1bnRpbWUv
SlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSk6CisgICAgICAgIChKU0M6
Om1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMpOgorICAgICAgICAoSlNDOjptb2R1
bGVMb2FkZXJPYmplY3RNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24pOgorICAgICAgICAo
SlNDOjptb2R1bGVMb2FkZXJPYmplY3RFdmFsdWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxv
YWRlck9iamVjdDo6cmVxdWVzdEluc3RhbnRpYXRlQWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAg
ICogcnVudGltZS9WTS5oOgorCiAyMDE1LTA4LTI2ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IHRyYWNraW5n
IG9mIGFjdGl2ZSBzdHlsZXNoZWV0cyBpbiB0aGUgZnJvbnRlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNGE0MGRmMmZhY2VjZGM1ZjExMjU0Y2RmODc5ZTRlM2I2ZmUzZDk1OS4u
MjYyOTViNGY1YTE4YzRlNzRkZjljZmU0ZDk5NGU2N2EzODdkZjllZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE3MDAsNiArMTcwMCw5IEBACiAJCUUxMjRBOEY3MEU1NTU3NzUw
MDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3Ry
aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTEyNEE4RjgwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY2MEU1NTU3NzUwMDMw
OTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi87IH07CiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5
MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovOyB9OworCQlFMzA2Nzc5
ODFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3
RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzICovOyB9OworCQlFMzE4Q0JDMDFCOEFFRjUxMDBB
MjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLzsgfTsKKwkJRTMxOENCQzExQjhBRUY1MTAwQTI5
MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdB
MzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2
MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVm
bGVjdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oICovOyB9OwpAQCAtMTcyMiw2ICsxNzI1LDggQEAKIAkJRTM5NjNDRUUxQjcz
Rjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyog
Tm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNB
IC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5j
cHAgKi87IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUx
QjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8q
IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJv
bm1lbnQuY3BwICovOyB9OworCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVF
bnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0VGODg3NDFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2
Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CiAJCUUzRUY4ODc1MUI2NkRG
MjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyog
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZCMTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92
aWRlckNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0OURDMTU1MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAq
LzsgfTsKQEAgLTM1NTMsNiArMzU1OCw5IEBACiAJCUUxNzg2MzZDMEQ5QkVFQzMwMEQ3NEU3NSAv
KiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluaXRpYWxpemVUaHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMThFM0E1NjBERjkyNzhDMDBEOTBCMzQgLyogVk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IFZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3Bw
OyB9OwogCQlFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IFZNLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUu
bGFuZy5jcHA7IH07CisJCUUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJP
YmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBNb2R1bGVM
b2FkZXJPYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMThDQkJFMUI4
QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzM2MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZsZWN0T2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmbGVjdE9iamVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTc3LDYgKzM1ODUsOCBAQAogCQlFMzk2M0NF
QzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVs
ZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVs
ZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThC
N0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
M0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8q
IEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNb2R1bGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VG
ODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNC
IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0
ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3NjQsNiArNDc3NCwxMCBAQAog
CQkJCUE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5oICovLAogCQkJCUE3NERFRjhG
MTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzRERUY5MDE4
MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICovLAorCQkJCUUzRDIzOUM2MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLywKKwkJCQlFM0QyMzlDNzFC
ODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovLAorCQkJCUUzMThDQkJF
MUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi8sCisJCQkJ
RTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggKi8s
CiAJCQkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLywK
IAkJCQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLywKIAkJ
CQlBNzI3MDA3ODBEQUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgKi8sCkBAIC01
Nzg1LDYgKzU3OTksNyBAQAogCQkJCUUzNUUwMzYxMUI3QUI0ODUwMDczQUQyQSAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QuanMgKi8sCiAJCQkJRTMzRjUwODgxQjg0NEExQTAwNDEz
ODU2IC8qIEludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzVCMUI2
NUQ5QTMwMDlEQjFFRiAvKiBJdGVyYXRvci5wcm90b3R5cGUuanMgKi8sCisJCQkJRTMwNjc3OTcx
QjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5qcyAqLywKIAkJCQk3Q0Y5QkM1
QzFCNjVEOUIxMDA5REIxRUYgLyogT2JqZWN0Q29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJD
NUQxQjY1RDlCMTAwOURCMUVGIC8qIE9wZXJhdGlvbnMuUHJvbWlzZS5qcyAqLywKIAkJCQk3Q0ZC
QUMxQzE4QjUzNUU1MDBEMDA3NTAgLyogUHJvbWlzZS5wcm90b3R5cGUuanMgKi8sCkBAIC02MTE5
LDYgKzYxMzQsNyBAQAogCQkJCTBGMkI5Q0U5MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RN
YXRlcmlhbGl6YXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5ODE3QTBCQzc0
MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGQzE3
QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGMEYxOUIxNkI3MjlGQTAwNURGOTVCIC8qIERGR0xvbmdM
aXZlZFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDlGQjg2ODFBRTMzNUM2MDAzOUQwNjkg
LyogSlNXZWFrU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzY3QjVCNjE3QTBCOTY1MDA2M0Q5
NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAt
NjI1Miw2ICs2MjY4LDcgQEAKIAkJCQk3QjAyNDc1NzFCODY4MkU0MDA1NDI0NDAgLyogV0FTTUZ1
bmN0aW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcy
MkMgLyogRlRMTG93ZXJERkdUb0xMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdB
MEI5MDQwMDc3M0FEOCAvKiBGVExMb3dlcmVkTm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRDhBMzFDMTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRy
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCREQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9T
UkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkRFMTcxNzhFMUMwMDY5MEM3RiAvKiBG
VExPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTcwMjksNiArNzA0
Niw3IEBACiAJCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCUUzMDY3Nzk4MUI4QkM2RjUwMDNG
ODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUE1M0Yx
QUMwMThDOTBGOEYwMDcyRUI2RCAvKiBmcmFtZXdvcmsuc2IgaW4gUmVzb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtNzM2Myw2
ICs3MzgxLDcgQEAKIAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0
ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCNTgyNjkxNEQyNzk3MDAwQTlD
MzA2IC8qIENvZGVQcm9maWxpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0M0MxNjY3
NjMxMzAwRDYxOTcxIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUMxMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21t
b25JZGVudGlmaWVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlDNUU1RTE4RTM1RjVFMDBE
NDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0NDIsNiAr
NzQ2MSw3IEBACiAJCQkJMEZEMTIwMzMxQThDODVCRDAwMEY1MjgwIC8qIEZUTEpTQ2FsbFZhcmFy
Z3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzOTYxN0ZGQzRFNjAwNzNDMkJDIC8qIERG
R0ZsdXNoZWRBdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzNGNTA4NDFCODQzN0EwMDA0MTM4
NTYgLyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlF
MzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY5RDM2OTQxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQ
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNzE3QTBCOENDMDA3NzNBRDggLyog
REZHRmx1c2hGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQkQxQjcxQjg5NkEwNzAw
NTk4QUE2IC8qIERGR0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzCmluZGV4
IDY1YTA1Mzk2NGRmNDg3NzM1ZTY3NWY0YjkxNzgzNjgxMGNkZDlhMzIuLjVkOTE3MDg5NWIwMzMx
YjEzMjg2Y2RiODU1ZWE0YzkzYTc4Y2YyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qcwpAQCAtMTkyLDcgKzE5Miw3IEBA
IGZ1bmN0aW9uIGNvbW1pdEluc3RhbnRpYXRlZChlbnRyeSwgb3B0aW9uYWxJbnN0YW5jZSwgc291
cmNlKQogICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKIAog
ICAgIHZhciBkZXBlbmRlbmNpZXMgPSBbXTsKLSAgICB2YXIgZGVwZW5kZW5jaWVzTWFwID0gbmV3
IEBNYXAoKTsKKyAgICB2YXIgZGVwZW5kZW5jaWVzTWFwID0gbW9kdWxlUmVjb3JkLmRlcGVuZGVu
Y2llc01hcDsKICAgICBtb2R1bGVSZWNvcmQucmVnaXN0cnlFbnRyeSA9IGVudHJ5OwogICAgIHZh
ciByZXF1ZXN0ZWRNb2R1bGVzID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7
CiAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHJlcXVlc3RlZE1vZHVsZXMubGVuZ3RoOyBp
IDwgbGVuZ3RoOyArK2kpIHsKQEAgLTM0OSw3ICszNDksNyBAQCBmdW5jdGlvbiByZXF1ZXN0UmVz
b2x2ZURlcGVuZGVuY2llcyhrZXkpCiAgICAgdmFyIHJlc29sdmVEZXBlbmRlbmNpZXNQcm9taXNl
ID0gdGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUoa2V5KS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgewog
ICAgICAgICB2YXIgZGVwTG9hZHMgPSBbXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0
aCA9IGVudHJ5LmRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgdmFyIHBhaXIgPSBlbnRyeS5kZXBlbmRlbmNpZXNbaV07CisgICAgICAgICAgICBsZXQg
cGFpciA9IGVudHJ5LmRlcGVuZGVuY2llc1tpXTsKIAogICAgICAgICAgICAgLy8gSG9vayBwb2lu
dC4KICAgICAgICAgICAgIC8vIDEuIExvYWRlci5yZXNvbHZlLgpAQCAtMzYxLDE1ICszNjEsMjEg
QEAgZnVuY3Rpb24gcmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMoa2V5KQogCiAgICAgICAgICAg
ICAgICAgLy8gUmVjdXJzaXZlIHJlc29sdmluZy4gVGhlIGRlcGVuZGVuY2llcyBvZiB0aGlzIGVu
dHJ5IGlzIGJlaW5nIHJlc29sdmVkIG9yIGFscmVhZHkgcmVzb2x2ZWQuCiAgICAgICAgICAgICAg
ICAgLy8gU3RvcCB0cmFjaW5nIHRoZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAg
ICAgICAgLy8gQnV0IHRvIHJldHJpZXZlIHRoZSBpbnN0YW50aWF0ZWQgbW9kdWxlIHJlY29yZCBj
b3JyZWN0bHksCisgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgaW5z
dGFudGlhdGlvbiBmb3IgdGhlIGRlcGVuZGVudCBtb2R1bGUuCisgICAgICAgICAgICAgICAgLy8g
Rm9yIGV4YW1wbGUsIHJlYWNoaW5nIGhlcmUsIHRoZSBtb2R1bGUgaXMgc3RhcnRpbmcgcmVzb2x2
aW5nIHRoZSBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgLy8gQnV0IHRoZSBtb2R1bGUg
bWF5IG9yIG1heSBub3QgcmVhY2ggdGhlIGluc3RhbnRpYXRpb24gcGhhc2UgaW4gdGhlIGxvYWRl
cidzIHBpcGVsaW5lLgorICAgICAgICAgICAgICAgIC8vIElmIHdlIHdhaXQgZm9yIHRoZSBSZXNv
bHZlRGVwZW5kZW5jaWVzIGZvciB0aGlzIG1vZHVsZSwgaXQgY29uc3RydWN0IHRoZSBjaXJjdWxh
ciBwcm9taXNlIGNoYWluIGFuZAorICAgICAgICAgICAgICAgIC8vIHJlamVjdGVkIGJ5IHRoZSBQ
cm9taXNlcyBydW50aW1lLiBTaW5jZSBvbmx5IHdlIG5lZWQgaXMgdGhlIGluc3RhbnRpYXRlZCBt
b2R1bGUsIGluc3RlYWQgb2Ygd2FpdGluZworICAgICAgICAgICAgICAgIC8vIHRoZSBSZXNvbHZl
RGVwZW5kZW5jaWVzIGZvciB0aGlzIG1vZHVsZSwgd2UganVzdCB3YWl0IEluc3RhbnRpYXRlIGZv
ciB0aGlzLgogICAgICAgICAgICAgICAgIGlmIChkZXBFbnRyeS5yZXNvbHZlRGVwZW5kZW5jaWVz
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBkZXBFbnRyeS5tb2R1bGU7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXBFbnRyeTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGRlcEVudHJ5Lmluc3RhbnRpYXRlLnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwYWlyLnZhbHVlID0gZW50cnkubW9kdWxlOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RS
ZXNvbHZlRGVwZW5kZW5jaWVzKGRlcEtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZSByZXN1bHQgcHJvbWlzZSBvZiB0aGUgcmVxdWVz
dEluc3RhbnRpYXRlQWxsIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aAotICAgICAgICAgICAgICAg
ICAgICAvLyB0aGUgcmVnaXN0cnkgZW50cnkuCi0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjYKICAgICAgICAgICAgICAgICAgICAg
cGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVu
dHJ5OwogICAgICAgICAgICAgICAgIH0pOwpAQCAtMzk2LDYgKzQwMiw5MCBAQCBmdW5jdGlvbiBy
ZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5KQogICAgIHJldHVybiB0aGlzLnJlcXVlc3RSZXNvbHZl
RGVwZW5kZW5jaWVzKGtleSk7CiB9CiAKK2Z1bmN0aW9uIHJlcXVlc3RMaW5rKGtleSkKK3sKKyAg
ICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWxpbmsKKworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChr
ZXkpOworICAgIGlmIChlbnRyeS5zdGF0ZSA+IHRoaXMuTGluaykgeworICAgICAgICB2YXIgZGVm
ZXJyZWQgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQEludGVybmFsUHJvbWlzZSk7CisgICAgICAg
IGRlZmVycmVkLkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgZW50cnkubW9kdWxlKTsKKyAgICAg
ICAgcmV0dXJuIGRlZmVycmVkLkBwcm9taXNlOworICAgIH0KKworICAgIHZhciBsb2FkZXIgPSB0
aGlzOworICAgIHJldHVybiB0aGlzLnJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkpLnRoZW4oZnVu
Y3Rpb24gKGVudHJ5KSB7CisgICAgICAgIGxvYWRlci5saW5rKGVudHJ5KTsKKyAgICAgICAgcmV0
dXJuIGVudHJ5OworICAgIH0pOworfQorCitmdW5jdGlvbiByZXF1ZXN0UmVhZHkoa2V5KQorewor
ICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtcmVhZHkKKwor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHJldHVybiB0
aGlzLnJlcXVlc3RMaW5rKGtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgbG9h
ZGVyLm1vZHVsZUV2YWx1YXRpb24oZW50cnkubW9kdWxlKTsKKyAgICB9KTsKK30KKworLy8gTGlu
a2luZyBzZW1hbnRpY3MuCisKK2Z1bmN0aW9uIGxpbmsoZW50cnkpCit7CisgICAgLy8gaHR0cHM6
Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jbGluaworCisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgLy8gRklYTUU6IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBvcHRp
b25hbEluc3RhbmNlLgorICAgIC8vIFNvIExpbmsncyBzdGVwIDMgaXMgc2tpcHBlZC4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcxCisKKyAgICBp
ZiAoZW50cnkuc3RhdGUgPT09IHRoaXMuUmVhZHkpCisgICAgICAgIHJldHVybjsKKyAgICBlbnRy
eS5zdGF0ZSA9IHRoaXMuUmVhZHk7CisKKyAgICAvLyBTaW5jZSB3ZSBhbHJlYWR5IGhhdmUgdGhl
ICJkZXBlbmRlbmNpZXMiIGZpZWxkLAorICAgIC8vIHdlIGNhbiBjYWxsIG1vZHVsZURlY2xhcmF0
aW9uSW5zdGFudGlhdGlvbiB3aXRoIHRoZSBjb3JyZWN0IG9yZGVyCisgICAgLy8gd2l0aG91dCBj
b25zdHJ1Y3RpbmcgdGhlIGRlcGVuZGVuY3kgZ3JhcGggYnkgY2FsbGluZyBkZXBlbmRlbmN5R3Jh
cGguCisgICAgdmFyIGRlcGVuZGVuY2llcyA9IGVudHJ5LmRlcGVuZGVuY2llczsKKyAgICBmb3Ig
KHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytp
KSB7CisgICAgICAgIHZhciBwYWlyID0gZGVwZW5kZW5jaWVzW2ldOworICAgICAgICB0aGlzLmxp
bmsocGFpci52YWx1ZS5yZWdpc3RyeUVudHJ5KTsKKyAgICB9CisKKyAgICB0aGlzLm1vZHVsZURl
Y2xhcmF0aW9uSW5zdGFudGlhdGlvbihlbnRyeS5tb2R1bGUpOworfQorCisvLyBNb2R1bGUgc2Vt
YW50aWNzLgorCitmdW5jdGlvbiBtb2R1bGVFdmFsdWF0aW9uKG1vZHVsZVJlY29yZCkKK3sKKyAg
ICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMt
bW9kdWxlZXZhbHVhdGlvbgorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKG1vZHVsZVJl
Y29yZC5ldmFsdWF0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtb2R1bGVSZWNvcmQuZXZhbHVh
dGVkID0gdHJ1ZTsKKworICAgIHZhciBlbnRyeSA9IG1vZHVsZVJlY29yZC5yZWdpc3RyeUVudHJ5
OworCisgICAgLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBbW1JlcXVlc3RlZE1vZHVsZXNdXSBpcyBj
bG9uZWQgaW50byBlbnRyeS5kZXBlbmRlbmNpZXMuCisgICAgdmFyIGRlcGVuZGVuY2llcyA9IGVu
dHJ5LmRlcGVuZGVuY2llczsKKyAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5j
aWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBwYWlyID0gZGVwZW5k
ZW5jaWVzW2ldOworICAgICAgICB2YXIgcmVxdWlyZWRNb2R1bGVSZWNvcmQgPSBwYWlyLnZhbHVl
OworICAgICAgICB0aGlzLm1vZHVsZUV2YWx1YXRpb24ocmVxdWlyZWRNb2R1bGVSZWNvcmQpOwor
ICAgIH0KKyAgICB0aGlzLmV2YWx1YXRlKG1vZHVsZVJlY29yZCk7Cit9CisKIGZ1bmN0aW9uIGxv
YWRNb2R1bGUobW9kdWxlTmFtZSwgcmVmZXJyZXIpCiB7CiAgICAgInVzZSBzdHJpY3QiOwpAQCAt
NDA2LDExICs0OTYsNyBAQCBmdW5jdGlvbiBsb2FkTW9kdWxlKG1vZHVsZU5hbWUsIHJlZmVycmVy
KQogICAgIC8vIFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVuaXF1ZSBpZGVu
dGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCiAgICAgLy8gRm9yIGV4YW1wbGUsIHRh
a2UgdGhlICJqcXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291cmNlLgogICAg
IHJldHVybiB0aGlzLnJlc29sdmUobW9kdWxlTmFtZSwgcmVmZXJyZXIpLnRoZW4oZnVuY3Rpb24g
KGtleSkgewotICAgICAgICAvLyBGSVhNRTogTm93LCB3ZSBkb24ndCBpbXBsZW1lbnQgdGhlIGxp
bmtpbmcgcGhhc2UgeWV0LgotICAgICAgICAvLyBTbyBoZXJlLCB3ZSBqdXN0IGNhbGwgcmVxdWVz
dEluc3RhbnRpYXRlQWxsIHRvIG9ubHkgcGVyZm9ybSB0aGUgbW9kdWxlIGxvYWRpbmcuCi0gICAg
ICAgIC8vIEF0IGxhc3QsIGl0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHJlcXVlc3RSZWFkeS4K
LSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE3
MgotICAgICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkpOworICAg
ICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RSZWFkeShrZXkpOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXgg
NGU1YTk2YzM4ZWQ4NjI3NzQ0MmNhMjYxOWM1YzhjYWMyOWNlODJhYS4uMDIwZWMyNDg5ZWZlM2Ez
MzI5ODViNzA5MTBkZWNjZjc4ZDQ5YTk2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTU3LDYgKzE1Nyw3IEBACiAgICAgICAg
ICJieXRlY29kZXMiIDogWwogICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfcHJvZ3JhbV9w
cm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2V2YWxfcHJvbG9ndWUi
IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1
ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3By
b2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrIiB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAyMGMxNDdhMDE1ZDJjNDNkZWMzODNmN2JhYTgxMGE2
NmE5MTkxNDYyLi5kNmJjNjJhMDVkN2UxMzcyNTA2ZjY4YWNlNDRjZWRmMTFhMTRjNzMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDgsNiAr
NDgsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVu
dmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTg3LDYgKzg4
LDggQEAgQ1N0cmluZyBDb2RlQmxvY2s6OmluZmVycmVkTmFtZSgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiAiPGV2YWw+IjsKICAgICBjYXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAgcmV0dXJuIGpz
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmluZmVycmVkTmFt
ZSgpLnV0ZjgoKTsKKyAgICBjYXNlIE1vZHVsZUNvZGU6CisgICAgICAgIHJldHVybiAiPG1vZHVs
ZT4iOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIHJldHVybiBDU3Ry
aW5nKCIiLCAwKTsKQEAgLTE5NjgsOSArMTk3MSwxNCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxp
bgogICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1f
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50
LCBHZXQsIHR5cGUpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQg
PSBvcC50eXBlOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51Lm9wZXJhbmQgPSBv
cC5kZXB0aDsKLSAgICAgICAgICAgIGlmIChvcC5sZXhpY2FsRW52aXJvbm1lbnQpCi0gICAgICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnN5bWJvbFRhYmxlLnNldCgqdm0oKSwgb3du
ZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCkpOwotICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKG9wLmxleGljYWxFbnZpcm9ubWVudCkgewor
ICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZhcikgeworICAgICAgICAgICAg
ICAgICAgICAvLyBLZWVwIHRoZSBsaW5rZWQgbW9kdWxlIGVudmlyb25tZW50IHN0cm9uZ2x5IHJl
ZmVyZW5jZWQuCisgICAgICAgICAgICAgICAgICAgIGFkZENvbnN0YW50KG9wLmxleGljYWxFbnZp
cm9ubWVudCk7CisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5qc0Nl
bGwuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9ubWVudCk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tp
ICsgNl0udS5zeW1ib2xUYWJsZS5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3AubGV4aWNh
bEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5wb2ludGVyID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xOTk1LDcgKzIwMDMsMTIgQEAgQ29kZUJsb2Nr
OjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENv
ZGVCbG9jayogdW5saW4KICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRl
bnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNT
Y29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2Fs
U2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIG1vZGVBbmRUeXBlLnR5cGUoKSk7CiAKLSAg
ICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gUmVzb2x2ZU1vZGVBbmRU
eXBlKG1vZGVBbmRUeXBlLm1vZGUoKSwgb3AudHlwZSkub3BlcmFuZCgpOworICAgICAgICAgICAg
Ly8gTW9kdWxlVmFyIGNhbiBnZXQgdGhlIHZhcmlhYmxlIGFzIHRoZSBzYW1lIHRvIENsb3N1cmVW
YXIuCisgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBNb2R1bGVWYXIpCisgICAgICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUobW9k
ZUFuZFR5cGUubW9kZSgpLCBDbG9zdXJlVmFyKS5vcGVyYW5kKCk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBSZXNvbHZl
TW9kZUFuZFR5cGUobW9kZUFuZFR5cGUubW9kZSgpLCBvcC50eXBlKS5vcGVyYW5kKCk7CisKICAg
ICAgICAgICAgIGlmIChvcC50eXBlID09IEdsb2JhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MpCiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyA1XS51LndhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwogICAgICAgICAgICAgZWxz
ZSBpZiAob3Auc3RydWN0dXJlKQpAQCAtMjA2MywxNyArMjA3NiwxOCBAQCBDb2RlQmxvY2s6OkNv
ZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbgogICAgICAgICAgICAgICAgIC8vIHdlJ3JlIGFic3RyYWN0bHkgInJlYWQiaW5n
IGZyb20gYSBKU1Njb3BlLgogICAgICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6
OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3Bl
RGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCB0eXBlKTsKIAotICAgICAgICAgICAgICAgIGlmIChv
cC50eXBlID09IENsb3N1cmVWYXIpCisgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xv
c3VyZVZhciB8fCBvcC50eXBlID09IE1vZHVsZVZhcikKICAgICAgICAgICAgICAgICAgICAgc3lt
Ym9sVGFibGUgPSBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIpCiAgICAgICAgICAgICAgICAg
ICAgIHN5bWJvbFRhYmxlID0gbV9nbG9iYWxPYmplY3QuZ2V0KCktPnN5bWJvbFRhYmxlKCk7Ci0g
ICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaW1w
bCA9IChvcC50eXBlID09IE1vZHVsZVZhcikgPyBvcC5pbXBvcnRlZE5hbWUuZ2V0KCkgOiBpZGVu
dC5pbXBsKCk7CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2sp
OwogICAgICAgICAgICAgICAgICAgICAvLyBJZiBvdXIgcGFyZW50IHNjb3BlIHdhcyBjcmVhdGVk
IHdoaWxlIHByb2ZpbGluZyB3YXMgZGlzYWJsZWQsIGl0IHdpbGwgbm90IGhhdmUgcHJlcGFyZWQg
Zm9yIHByb2ZpbGluZyB5ZXQuCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVw
YXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIpOwotICAgICAgICAgICAgICAgICAgICBnbG9iYWxW
YXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpZGVu
dC5pbXBsKCksICp2bSgpKTsKLSAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVHlwZVNldCA9IHN5
bWJvbFRhYmxlLT5nbG9iYWxUeXBlU2V0Rm9yVmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCks
ICp2bSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRh
YmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwgaW1wbCwgKnZtKCkpOworICAgICAgICAg
ICAgICAgICAgICBnbG9iYWxUeXBlU2V0ID0gc3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JW
YXJpYWJsZShsb2NrZXIsIGltcGwsICp2bSgpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IFR5cGVQcm9maWxlck5vR2xvYmFs
SURFeGlzdHM7CiAKQEAgLTMwMjMsNiArMzAzNywxMSBAQCBDb2RlQmxvY2sqIFByb2dyYW1Db2Rl
QmxvY2s6OnJlcGxhY2VtZW50KCkKICAgICByZXR1cm4ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxl
Kj4ob3duZXJFeGVjdXRhYmxlKCkpLT5jb2RlQmxvY2soKTsKIH0KIAorQ29kZUJsb2NrKiBNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOjpyZXBsYWNlbWVudCgpCit7CisgICAgcmV0dXJuIGpzQ2FzdDxN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7
Cit9CisKIENvZGVCbG9jayogRXZhbENvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogewogICAgIHJl
dHVybiBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9j
aygpOwpAQCAtMzAzOCw2ICszMDU3LDExIEBAIERGRzo6Q2FwYWJpbGl0eUxldmVsIFByb2dyYW1D
b2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbEludGVybmFsKCkKICAgICByZXR1cm4gREZHOjpwcm9n
cmFtQ2FwYWJpbGl0eUxldmVsKHRoaXMpOwogfQogCitERkc6OkNhcGFiaWxpdHlMZXZlbCBNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpCit7CisgICAgcmV0
dXJuIERGRzo6cHJvZ3JhbUNhcGFiaWxpdHlMZXZlbCh0aGlzKTsKK30KKwogREZHOjpDYXBhYmls
aXR5TGV2ZWwgRXZhbENvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKQogewogICAg
IHJldHVybiBERkc6OmV2YWxDYXBhYmlsaXR5TGV2ZWwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggOTQ5OTQwNTY0M2FhOTEzZGM3OGU3OTlh
YTBjYzU2NzJlYjM2ZWYzYy4uMWZmMTZmZTM5MjIyMjhjZmM4YzMxZWFkYzZmZmY5M2ViYjBiYzZk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODIs
NiArODIsNyBAQCBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiBjbGFzcyBSZXBhdGNoQnVmZmVyOwogY2xhc3MgVHlwZUxvY2F0aW9uOworY2xhc3MgSlNNb2R1
bGVFbnZpcm9ubWVudDsKIAogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291bnRSZW9w
dGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwogCkBAIC0xMDkwLDEwICsxMDkxLDI5
IEBAIGNsYXNzIFByb2dyYW1Db2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICNl
bmRpZgogfTsKIAorY2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxD
b2RlQmxvY2sgeworcHVibGljOgorICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ29weVBhcnNl
ZEJsb2NrVGFnLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKKyAgICAgICAgOiBHbG9i
YWxDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrLCBvdGhlcikKKyAgICB7CisgICAgfQorCisgICAg
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
LCBKU1Njb3BlKiBzY29wZSwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlk
ZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgOiBHbG9iYWxDb2Rl
QmxvY2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVBy
b3ZpZGVyLCAwLCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgeworICAgIH0KKworI2lmIEVO
QUJMRShKSVQpCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50
KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5
TGV2ZWxJbnRlcm5hbCgpIG92ZXJyaWRlOworI2VuZGlmCit9OworCiBjbGFzcyBFdmFsQ29kZUJs
b2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiBwdWJsaWM6CiAgICAgRXZhbENvZGVCbG9j
ayhDb3B5UGFyc2VkQmxvY2tUYWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQotICAgIDogR2xvYmFs
Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCisgICAgICAgIDogR2xvYmFsQ29kZUJs
b2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCiAgICAgewogICAgIH0KICAgICAgICAgCkBAIC0x
MTE4LDcgKzExMzgsNyBAQCBjbGFzcyBFdmFsQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVC
bG9jayB7CiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jayA6IHB1YmxpYyBDb2RlQmxvY2sgewogcHVi
bGljOgogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywgRnVuY3Rpb25D
b2RlQmxvY2smIG90aGVyKQotICAgIDogQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIp
CisgICAgICAgIDogQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCiAgICAgewogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAKaW5kZXgg
OGIyY2FkNTZhYjY4YWYxMmIzMmJmMjljZDg0MGFjMGFhNzE4M2Q0OC4uMGM3MDQzZGZhM2VhZmZl
OWY5NDZhZGQ5MTc5M2ZlNjI1N2FhZTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZVR5cGUuY3BwCkBAIC00Miw2ICs0Miw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBKU0M6OkNvZGVUeXBlIGNvZGVUeXBlKQogICAgIGNhc2UgSlNDOjpG
dW5jdGlvbkNvZGU6CiAgICAgICAgIG91dC5wcmludCgiRnVuY3Rpb24iKTsKICAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgSlNDOjpNb2R1bGVDb2RlOgorICAgICAgICBvdXQucHJpbnQoIk1vZHVs
ZSIpOworICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaApp
bmRleCBiOGUxMDdkY2Y2YjY3MGNkODI4M2ViZmE1MzUxZjdjNjM0MmYwMjNjLi45OTQxZDUxNGNk
ZDBjNWZmZTMwZjFhODg0ZjNiYTU0YzZmMDBmODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZVR5cGUuaApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotZW51bSBDb2RlVHlwZSB7IEdsb2JhbENvZGUsIEV2YWxDb2RlLCBGdW5jdGlvbkNvZGUgfTsK
K2VudW0gQ29kZVR5cGUgeyBHbG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVuY3Rpb25Db2RlLCBNb2R1
bGVDb2RlIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA1NzRiMWU0ODIz
ODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhLi40NjA5NWQ4NGJjY2E2MDY3NWZlZmRlN2Y0
MDAyNzUyZGQ5YWViNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlu
a2VkQ29kZUJsb2NrIiwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZENvZGVCbG9j
aykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jazo6c19pbmZvID0g
eyAiVW5saW5rZWRHbG9iYWxDb2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFVubGlua2VkR2xvYmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2spIH07Citjb25zdCBDbGFzc0luZm8gVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2siLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6
OnNfaW5mbyA9IHsgIlVubGlua2VkRXZhbENvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRFdmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJ
bmZvIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2spIH07CiAKQEAgLTg5LDcgKzkwLDYgQEAgdm9pZCBVbmxpbmtl
ZENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIFVubGlua2VkQ29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2Vk
Q29kZUJsb2NrKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOwogICAg
IGZvciAoRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yOjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0
LT5tX2Z1bmN0aW9uRGVjbHMuYmVnaW4oKSwgZW5kID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkRl
Y2xzLmVuZCgpOyBwdHIgIT0gZW5kOyArK3B0cikKICAgICAgICAgdmlzaXRvci5hcHBlbmQocHRy
KTsKICAgICBmb3IgKEZ1bmN0aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0b3IgcHRyID0gdGhp
c09iamVjdC0+bV9mdW5jdGlvbkV4cHJzLmJlZ2luKCksIGVuZCA9IHRoaXNPYmplY3QtPm1fZnVu
Y3Rpb25FeHBycy5lbmQoKTsgcHRyICE9IGVuZDsgKytwdHIpCkBAIC0yOTIsNiArMjkyLDE0IEBA
IHZvaWQgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKIH0KIAordm9pZCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
c3ltYm9sVGFibGUpOworfQorCiBVbmxpbmtlZENvZGVCbG9jazo6flVubGlua2VkQ29kZUJsb2Nr
KCkKIHsKIH0KQEAgLTMwMSw2ICszMDksMTEgQEAgdm9pZCBVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2s6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIGpzQ2FzdDxVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqPihjZWxsKS0+flVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaygpOwogfQogCit2b2lkIFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7Cisg
ICAganNDYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpLT5+VW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCk7Cit9CisKIHZvaWQgVW5saW5rZWRFdmFsQ29kZUJs
b2NrOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKICAgICBqc0Nhc3Q8VW5saW5rZWRFdmFsQ29k
ZUJsb2NrKj4oY2VsbCktPn5VbmxpbmtlZEV2YWxDb2RlQmxvY2soKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMzIyZDI2
MTk5Zjc5N2MxMDM4MWRkNDU4OTNiZDUzNTNmZjFiNmI0Ni4uODhjZTIzMTNjYWNhMDg4MmQ4NmMx
ZjI4NzcwYTNhMDk4NzA2YjZjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTM2MCw5ICszNjAsNiBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAg
ICBpZiAoY29kZVR5cGUoKSA9PSBHbG9iYWxDb2RlKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkp
OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTQxMiw4ICs0MDksNiBAQCBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBt
X2Z1bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25F
eHByczsKIAotICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKLQog
ICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKIAogI2lm
IEVOQUJMRShCWVRFQ09ERV9DT01NRU5UUykKQEAgLTUxNCw2ICs1MDksNDkgQEAgY2xhc3MgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkR2xvYmFsQ29kZUJs
b2NrIHsKICAgICBERUNMQVJFX0lORk87CiB9OwogCitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgeworcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOworICAgIHN0YXRpYyBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSogdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZv
JiBpbmZvKQorICAgIHsKKyAgICAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jaz4odm0tPmhlYXApKSBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sodm0s
IHZtLT51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8p
OworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKKyAgICAgICAgcmV0dXJu
IGluc3RhbmNlOworICAgIH0KKworcHVibGljOgorICAgIHR5cGVkZWYgVW5saW5rZWRHbG9iYWxD
b2RlQmxvY2sgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
KCkgeyByZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbykKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUs
IE1vZHVsZUNvZGUsIGluZm8pCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
ICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkp
OworICAgIH0KKworICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsK
KworcHVibGljOgorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5
cGVJbmZvKFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1R5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87Cit9OworCiBjbGFzcyBVbmxp
bmtlZEV2YWxDb2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sg
ewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCA2MmMyZDNiYTQyNTc2MzhlODQwYmIzYTYyZDI3NzRiMGYzMTI3ZGZjLi4yNTJjZmYwYmM5
OGRmYmExY2VlODMyNjNkNDVhNDM1YWJlODdjZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNzAs
NyArNzAsOSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAg
IGlmIChtX25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMpCiAgICAgICAgIGluaXRpYWxpemVWYXJp
YWJsZSh2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSwgbV9hcmd1bWVudHNSZWdp
c3Rlcik7CiAKLSAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCB0cnVlKTsKKyAgICAv
LyBGb3IgTW9kdWxlQ29kZSwgd2UgYWxyZWFkeSBpbnN0YW50aWF0ZWQgdGhlIGVudmlyb25tZW50
IGZvciB0aGUgbGV4aWNhbCB2YXJpYWJsZXMuCisgICAgaWYgKG1fY29kZVR5cGUgIT0gTW9kdWxl
Q29kZSkKKyAgICAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgdHJ1ZSk7CiAKICAg
ICB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wID0gbmV3VGVtcG9yYXJ5KCk7CkBA
IC01MDQsNiArNTA2LDE0MyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgIG1fVERaU3Rh
Y2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZmFsc2Up
KTsKIH0KIAorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9k
dWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2sqIGNvZGVCbG9jaywgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJN
b2RlIHByb2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMpCisgICAgOiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKE9wdGlvbnM6OmZvcmNl
RGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb24oKSB8fCBkZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJP
bikKKyAgICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhPcHRpb25zOjpmb3JjZVByb2ZpbGVy
Qnl0ZWNvZGVHZW5lcmF0aW9uKCkgfHwgcHJvZmlsZXJNb2RlID09IFByb2ZpbGVyT24pCisgICAg
LCBtX3Njb3BlTm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKKyAgICAsIG1fY29kZUJsb2NrKHZtLCBj
b2RlQmxvY2spCisgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9m
ZnNldCgpKQorICAgICwgbV9jb2RlVHlwZShNb2R1bGVDb2RlKQorICAgICwgbV92bSgmdm0pCisg
ICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQoreworICAgIEFTU0VSVF9VTlVTRUQocGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsK
KworICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJl
Z2lzdGVycykKKyAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7CisKKyAgICBpZiAo
bV9pc0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZh
bHNlOworCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gY29kZUJsb2NrLT5zeW1ib2xU
YWJsZSgpOworICAgIHN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25T
dHJpY3RFdmFsKTsKKyAgICBzeW1ib2xUYWJsZS0+c2V0U2NvcGVUeXBlKFN5bWJvbFRhYmxlOjpT
Y29wZVR5cGU6OkxleGljYWxTY29wZSk7CisKKyAgICAvLyBGb3IgdGhlIGV4cG9ydGVkIHZhcmlh
Ymxlcywgd2UgYWxyZWFkeSByZWdpc3RlciB0aGVtIHRvIHRoZSBzdG9yZWQgc3ltYm9sIHRhYmxl
LgorICAgIC8vIEV2ZW4gaWYgdGhlIHVubGlua2VkL2xpbmtlZCBjb2RlIGJsb2NrIGlzIHJlbW92
ZWQgYW5kIHN5bWJvbCB0YWJsZSBpcyByZWNyZWF0ZWQsCisgICAgLy8gdGhpcyBlbnN1cmVzIHRo
ZSBnZW5lcmF0ZWQgc3ltYm9sIHRhYmxlIGlzIGFsd2F5cyB0aGUgc2FtZS4KKworICAgIGJvb2wg
c2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwg
bV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAgICBib29sIHNob3VsZENhcHR1
cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51
c2VzRXZhbCgpOworICAgIGlmIChzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MpCisgICAgICAg
IG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKS5tYXJrQWxsVmFyaWFibGVzQXND
YXB0dXJlZCgpOworCisgICAgYXV0byBjYXB0dXJlcyA9IFsmXSAoVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCkgLT4gYm9vbCB7CisgICAgICAgIGlmICghc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5n
cykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1vZHVsZVByb2dy
YW1Ob2RlLT5jYXB0dXJlcyh1aWQpOworICAgIH07CisgICAgYXV0byBsb29rVXBWYXJLaW5kID0g
WyZdIChVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50
cnkmIGVudHJ5KSAtPiBWYXJLaW5kIHsKKyAgICAgICAgaWYgKGVudHJ5LmlzRXhwb3J0ZWQoKSkK
KyAgICAgICAgICAgIHJldHVybiBWYXJLaW5kOjpTY29wZTsKKyAgICAgICAgaWYgKGVudHJ5Lmlz
SW1wb3J0ZWROYW1lc3BhY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBWYXJLaW5kOjpTY29wZTsK
KyAgICAgICAgaWYgKGVudHJ5LmlzQ2FwdHVyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBWYXJL
aW5kOjpTY29wZTsKKyAgICAgICAgcmV0dXJuIGNhcHR1cmVzKHVpZCkgPyBWYXJLaW5kOjpTY29w
ZSA6IFZhcktpbmQ6OlN0YWNrOworICAgIH07CisKKyAgICBlbWl0T3Bjb2RlKG9wX2VudGVyKTsK
KworICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CisKKyAgICBtX2NhbGxlZVJlZ2lzdGVyLnNl
dEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisKKyAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1l
dGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgorCisgICAgZm9yIChGdW5jdGlv
bk1ldGFkYXRhTm9kZSogZnVuY3Rpb24gOiBtb2R1bGVQcm9ncmFtTm9kZS0+ZnVuY3Rpb25TdGFj
aygpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGl0ZXJhdG9yID0gbW9kdWxlUHJvZ3JhbU5vZGUt
PnZhckRlY2xhcmF0aW9ucygpLmZpbmQoZnVuY3Rpb24tPmlkZW50KCkuaW1wbCgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXRlcmF0b3IgIT0gbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xh
cmF0aW9ucygpLmVuZCgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWl0ZXJhdG9yLT52YWx1
ZS5pc0ltcG9ydGVkKCkpOworCisgICAgICAgIFZhcktpbmQgdmFyS2luZCA9IGxvb2tVcFZhcktp
bmQoaXRlcmF0b3ItPmtleS5nZXQoKSwgaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgaWYgKHZh
cktpbmQgPT0gVmFyS2luZDo6U2NvcGUpIHsKKyAgICAgICAgICAgIC8vIEhlYXAgYWxsb2NhdGVk
IGZ1bmN0aW9ucyBzaG91bGQgYmUgaW5zdGFudGlhdGVkIHdoZW4gdGhlIG1vZHVsZSBlbnZpcm9u
bWVudCBpcyBjcmVhdGVkLgorICAgICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVj
bChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IC8vIFN0YWNrIGFsbG9jYXRlZCBmdW5jdGlvbnMgY2FuIGJlIGFsbG9jYXRlZCB3aGVuIGV4ZWN1
dGluZyB0aGUgbW9kdWxlJ3MgYm9keS4KKyAgICAgICAgICAgIG1fZnVuY3Rpb25zVG9Jbml0aWFs
aXplLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihmdW5jdGlvbiwgTm9ybWFsRnVuY3Rpb25WYXJpYWJs
ZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTm93IGRlY2xhcmUgYWxsIHZhcmlhYmxl
cy4KKworICAgIGZvciAoYXV0byYgZW50cnkgOiBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFy
YXRpb25zKCkpIHsKKyAgICAgICAgQVNTRVJUKCFlbnRyeS52YWx1ZS5pc0xldCgpICYmICFlbnRy
eS52YWx1ZS5pc0NvbnN0KCkpOworICAgICAgICBpZiAoIWVudHJ5LnZhbHVlLmlzVmFyKCkpIC8v
IFRoaXMgaXMgZWl0aGVyIGEgcGFyYW1ldGVyIG9yIGNhbGxlZS4KKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNJbXBvcnRlZCgpICYmICFlbnRyeS52YWx1
ZS5pc0ltcG9ydGVkTmFtZXNwYWNlKCkpIC8vIFRoZXNlIGFyZSBtYW5hZ2VkIGluIHRoZSBvdGhl
ciBwaGFzZS4KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAvLyBWYXJpYWJsZXMgbmFt
ZWQgImFyZ3VtZW50cyIgYXJlIG5ldmVyIGNvbnN0LgorICAgICAgICBjcmVhdGVWYXJpYWJsZShJ
ZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGVudHJ5LmtleS5nZXQoKSksIGxvb2tVcFZhcktpbmQo
ZW50cnkua2V5LmdldCgpLCBlbnRyeS52YWx1ZSksIHN5bWJvbFRhYmxlLCBJZ25vcmVFeGlzdGlu
Zyk7CisgICAgfQorCisgICAgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQgPSBtb2R1
bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpOworCisgICAgeworICAgICAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgZm9y
IChhdXRvJiBlbnRyeSA6IGVudmlyb25tZW50KSB7CisgICAgICAgICAgICBBU1NFUlQoZW50cnku
dmFsdWUuaXNMZXQoKSB8fCBlbnRyeS52YWx1ZS5pc0NvbnN0KCkpOworICAgICAgICAgICAgQVNT
RVJUKCFlbnRyeS52YWx1ZS5pc1ZhcigpKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkg
c3ltYm9sVGFibGVFbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQobG9ja2VyLCBlbnRyeS5rZXkuZ2V0
KCkpOworICAgICAgICAgICAgQVNTRVJUKHN5bWJvbFRhYmxlRW50cnkuaXNOdWxsKCkpOworCisg
ICAgICAgICAgICAvLyBJbXBvcnRlZCB2YXJpYWJsZXMgYXJlIGhhbmRsZWQgaW5zaWRlIHRoZSB0
b3AtbW9zdCBtb2R1bGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUu
aXNJbXBvcnRlZCgpICYmICFlbnRyeS52YWx1ZS5pc0ltcG9ydGVkTmFtZXNwYWNlKCkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIFZhcktpbmQgdmFyS2luZCA9IGxv
b2tVcFZhcktpbmQoZW50cnkua2V5LmdldCgpLCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICBW
YXJPZmZzZXQgdmFyT2Zmc2V0OworICAgICAgICAgICAgaWYgKHZhcktpbmQgPT0gVmFyS2luZDo6
U2NvcGUpCisgICAgICAgICAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KHN5bWJvbFRhYmxl
LT50YWtlTmV4dFNjb3BlT2Zmc2V0KGxvY2tlcikpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKHZhcktpbmQgPT0gVmFyS2luZDo6U3RhY2spOworICAgICAgICAg
ICAgICAgIFJlZ2lzdGVySUQqIGxvY2FsID0gbmV3QmxvY2tTY29wZVZhcmlhYmxlKCk7CisgICAg
ICAgICAgICAgICAgbG9jYWwtPnJlZigpOworICAgICAgICAgICAgICAgIHZhck9mZnNldCA9IFZh
ck9mZnNldChsb2NhbC0+dmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgZW50cnkudmFsdWUu
aXNDb25zdCgpID8gUmVhZE9ubHkgOiAwKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGQo
bG9ja2VyLCBlbnRyeS5rZXkuZ2V0KCksIG5ld0VudHJ5KTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIFJlZ2lzdGVySUQqIGNvbnN0YW50U3ltYm9sVGFibGUgPSBudWxscHRyOworICAgIGlmICh2
bS50eXBlUHJvZmlsZXIoKSkKKyAgICAgICAgY29uc3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0
YW50VmFsdWUoc3ltYm9sVGFibGUpOworICAgIGVsc2UKKyAgICAgICAgY29uc3RhbnRTeW1ib2xU
YWJsZSA9IGFkZENvbnN0YW50VmFsdWUoc3ltYm9sVGFibGUtPmNsb25lU2NvcGVQYXJ0KCptX3Zt
KSk7CisKKyAgICBtX1REWlN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihlbnZpcm9ubWVudCwg
dHJ1ZSkpOworICAgIG1fc3ltYm9sVGFibGVTdGFjay5hcHBlbmQoU3ltYm9sVGFibGVTdGFja0Vu
dHJ5IHsgU3Ryb25nPFN5bWJvbFRhYmxlPigqbV92bSwgc3ltYm9sVGFibGUpLCBtX3Njb3BlUmVn
aXN0ZXIsIGZhbHNlLCBjb25zdGFudFN5bWJvbFRhYmxlLT5pbmRleCgpIH0pOworCisgICAgLy8g
UHJlZmlsbCBzdGFjayB2YXJpYWJsZXMgd2l0aCB0aGUgVERaIGVtcHR5IHZhbHVlLgorICAgIC8v
IFNjb3BlIHZhcmlhYmxlcyB3aWxsIGJlIGluaXRpYWxpemVkIHRvIHRoZSBURFogZW1wdHkgdmFs
dWUgd2hlbiBKU0xleGljYWxFbnZpcm9ubWVudCBpcyBhbGxvY2F0ZWQuCisgICAgZm9yIChhdXRv
JiBlbnRyeSA6IGVudmlyb25tZW50KSB7CisgICAgICAgIC8vIEltcG9ydGVkIHZhcmlhYmxlcyBh
cmUgYWxyZWFkeSBpbml0aWFsaXplZC4KKyAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzSW1wb3J0
ZWQoKSAmJiAhZW50cnkudmFsdWUuaXNJbXBvcnRlZE5hbWVzcGFjZSgpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBzeW1ib2xUYWJsZUVudHJ5ID0g
c3ltYm9sVGFibGUtPmdldChlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICBBU1NFUlQoIXN5bWJv
bFRhYmxlRW50cnkuaXNOdWxsKCkpOworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gc3ltYm9s
VGFibGVFbnRyeS52YXJPZmZzZXQoKTsKKyAgICAgICAgaWYgKG9mZnNldC5pc1Njb3BlKCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKG9mZnNldC5pc1N0YWNrKCkpOwor
ICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoJnJlZ2lzdGVyRm9yKG9mZnNldC5zdGFja09mZnNl
dCgpKSk7CisgICAgfQorfQorCiBCeXRlY29kZUdlbmVyYXRvcjo6fkJ5dGVjb2RlR2VuZXJhdG9y
KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA4OWNkZWFkMTM1NDQ4MWM3NDY2NzBlMzVmOTYwMDU5
MzdmYjk1YmE3Li4xNmJiYzBkZGMwYWRmNDA5MWQ4YTEzOTQ0NGFiYjM5MzQwZjUwODFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCkBAIC0yNjksNiArMjY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCopOwogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCopOwogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2
YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0
b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
Kik7CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJhdG9yKCk7CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4
IDljNmU3NmYyZjQyYmRkY2U5NjViODI0MjI4YWI2NTIxOGZlMGUxN2UuLjNiYmQyMDEyNjVjNGZm
ZjY2ZjhhZmUyMWUwMmEwMjdhYzQ4YTRmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTI4OTUsOCArMjg5NSwxNyBA
QCB2b2lkIFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBN
b2R1bGVQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIE1vZHVsZVByb2dy
YW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKK3Zv
aWQgTW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
RXhlY3V0ZVByb2dyYW0sIHN0YXJ0TGluZSgpLCBzdGFydFN0YXJ0T2Zmc2V0KCksIHN0YXJ0TGlu
ZVN0YXJ0T2Zmc2V0KCkpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZ2lzdGVyID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIGdlbmVyYXRvci5lbWl0TG9hZChkc3RSZWdp
c3Rlci5nZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29u
dHJvbEZsb3coc3RhcnRTdGFydE9mZnNldCgpKTsKKyAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2Rl
KGdlbmVyYXRvciwgZHN0UmVnaXN0ZXIuZ2V0KCkpOworCisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVT
dGFydE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEVuZChkc3RSZWdpc3Rlci5nZXQoKSk7
CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzA1NywzMCArMzA2NiwzNyBAQCBSZWdpc3RlcklE
KiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRAogCiB2b2lkIEltcG9ydERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCiB7CisgICAgLy8gRG8gbm90aGluZyBh
dCB0aGUgcnVudGltZS4KIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4
cG9ydEFsbERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIEV4cG9y
dEFsbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCopCiB7CisgICAgLy8gRG8gbm90aGluZyBhdCB0aGUgcnVudGltZS4KIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5v
ZGUgLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQordm9pZCBFeHBv
cnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogeworICAgIEFTU0VSVChtX2RlY2xhcmF0aW9u
KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2RlY2xhcmF0aW9uKTsKIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKK3ZvaWQgRXhwb3J0
TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CisgICAgQVNTRVJUKG1fZGVjbGFyYXRpb24pOwor
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZGVjbGFyYXRpb24pOwogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tCiAKIHZvaWQgRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQogeworICAgIC8vIERvIG5v
dGhpbmcgYXQgdGhlIHJ1bnRpbWUuCiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggY2Ji
YTljODUwMjY1ODY3MjQ4YTEzOGI4NjcwMDJhNDJmZGY3OTIzYS4uMTE5MGNhM2MwNWU3ODZkYzdi
NWNjYWIxMmVmMTU5NGY3Y2RjNTAwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJIZWFw
LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlByZWNp
c2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJT
dGFja0FsaWdubWVudC5oIgpAQCAtMzgzMyw2ICszODM0LDEyIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgaWYgKHJlc29s
dmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCByZXNvbHZl
VHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldERpcmVjdChtX2lubGluZVN0YWNrVG9wLT5yZW1h
cE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
KSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBNb2R1bGVWYXI6
IHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGFscmVhZHkgc3Ryb25nbHkgcmVmZXJlbmNl
ZCBieSB0aGUgQ29kZUJsb2NrLgorICAgICAgICAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQq
IG1vZHVsZUVudmlyb25tZW50ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjdXJyZW50
SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0KCkpOworICAgICAgICAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIoZHN0KSwgd2Vha0pTQ29uc3RhbnQobW9kdWxlRW52aXJvbm1lbnQpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgTG9j
YWxDbG9zdXJlVmFyOgogICAgICAgICAgICAgY2FzZSBDbG9zdXJlVmFyOgogICAgICAgICAgICAg
Y2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczogewpAQCAtNDAwMiw2ICs0MDA5
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRDbG9zdXJlVmFyLCBPcEluZm8ob3BlcmFu
ZCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgc2NvcGVOb2RlKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIE1vZHVsZVZhcjoKICAgICAgICAg
ICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA4Niw2ICs0MDk0LDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlIE1vZHVsZVZhcjoKICAgICAgICAgICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4
IDdmNTQzMDg0ODUyOTE1OTNmYjc1ZjZiYmMwNjliYWEzYjZjZDEzMjUuLjhmZGE3ZTJiYTEyNTQy
MzFiZDE0YjI4YzViZjNiYTY2OWJlY2RhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTIxMyw2ICsyMTMsOSBAQCBDYXBhYmlsaXR5TGV2
ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSW5zdHJ1YwogCiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKICAgICAgICAgUmVzb2x2
ZVR5cGUgcmVzb2x2ZVR5cGUgPSBSZXNvbHZlTW9kZUFuZFR5cGUocGNbNF0udS5vcGVyYW5kKS50
eXBlKCk7CisgICAgICAgIC8vIEltcG9ydGVkIGJpbmRpbmdzIGFyZSBhbHdheXMgaW1tdXRhYmxl
LgorICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKQorICAgICAgICAgICAgcmV0
dXJuIENhbm5vdENvbXBpbGU7CiAgICAgICAgIC8vIElmIHdlJ3JlIHdyaXRpbmcgdG8gYSByZWFk
b25seSBwcm9wZXJ0eSB3ZSBlbWl0IGEgRHluYW1pYyBwdXQgdGhhdAogICAgICAgICAvLyB0aGUg
REZHIGNhbid0IGN1cnJlbnRseSBoYW5kbGUuCiAgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBE
eW5hbWljKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggY2MzNGE2NjViZTMwZGIyOWUwZGFkZTNjN2Q4YTUzYTQ3YTBmNWY3Mi4u
ZmM4Mzk3ZGNlMDg3MjllYzVmMDMyZjJhZTZkZTdjYWVkZTliYzFmNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00OSw2ICs0
OSw3IEBACiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1
bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJK
U1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC05Nyw2ICs5OCw3IEBA
IFN0cmluZyBTdGFja0ZyYW1lOjpmcmllbmRseVNvdXJjZVVSTCgpIGNvbnN0CiAgICAgCiAgICAg
c3dpdGNoIChjb2RlVHlwZSkgewogICAgIGNhc2UgU3RhY2tGcmFtZUV2YWxDb2RlOgorICAgIGNh
c2UgU3RhY2tGcmFtZU1vZHVsZUNvZGU6CiAgICAgY2FzZSBTdGFja0ZyYW1lRnVuY3Rpb25Db2Rl
OgogICAgIGNhc2UgU3RhY2tGcmFtZUdsb2JhbENvZGU6CiAgICAgICAgIGlmICghc291cmNlVVJM
LmlzRW1wdHkoKSkKQEAgLTExOCw2ICsxMjAsOSBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnJpZW5k
bHlGdW5jdGlvbk5hbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIGNvbnN0CiAgICAgY2FzZSBTdGFj
a0ZyYW1lRXZhbENvZGU6CiAgICAgICAgIHRyYWNlTGluZSA9ICJldmFsIGNvZGUiOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFN0YWNrRnJhbWVNb2R1bGVDb2RlOgorICAgICAgICB0cmFjZUxp
bmUgPSAibW9kdWxlIGNvZGUiOworICAgICAgICBicmVhazsKICAgICBjYXNlIFN0YWNrRnJhbWVO
YXRpdmVDb2RlOgogICAgICAgICBpZiAoY2FsbGVlKQogICAgICAgICAgICAgdHJhY2VMaW5lID0g
Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKGNhbGxGcmFtZSwgc3RhY2tGcmFtZUNhbGxlZSkuaW1w
bCgpOwpAQCAtNDUxLDYgKzQ1Niw4IEBAIHN0YXRpYyBTdGFja0ZyYW1lQ29kZVR5cGUgZ2V0U3Rh
Y2tGcmFtZUNvZGVUeXBlKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKICAgICBzd2l0Y2ggKHZpc2l0
b3ItPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkV2YWw6CiAg
ICAgICAgIHJldHVybiBTdGFja0ZyYW1lRXZhbENvZGU7CisgICAgY2FzZSBTdGFja1Zpc2l0b3I6
OkZyYW1lOjpNb2R1bGU6CisgICAgICAgIHJldHVybiBTdGFja0ZyYW1lTW9kdWxlQ29kZTsKICAg
ICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkZ1bmN0aW9uOgogICAgICAgICByZXR1cm4gU3Rh
Y2tGcmFtZUZ1bmN0aW9uQ29kZTsKICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6Okdsb2Jh
bDoKQEAgLTExNzYsNiArMTE4Myw1NCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2
YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQogICAgIHJl
dHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9CiAKK0pTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU01vZHVsZUVudmlyb25tZW50KiBzY29wZSkKK3sKKyAgICBWTSYgdm0gPSAqc2Nv
cGUtPnZtKCk7CisgICAgU2FtcGxpbmdTY29wZSBzYW1wbGluZ1Njb3BlKHRoaXMpOworCisgICAg
QVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOworICAgIEFTU0VSVCghdm0u
ZXhjZXB0aW9uKCkpOworICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGlm
ICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworCisgICAg
Vk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CisgICAg
aWYgKCF2bS5pc1NhZmVUb1JlY3Vyc2UoKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisKKyAgICBKU09iamVjdCogY29t
cGlsZUVycm9yID0gZXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbihjYWxsRnJhbWUsIG51
bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVy
cm9yKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1lLT52bSgpLnRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAgTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29kZUJsb2NrKCk7CisKKyAgICBpZiAo
VU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoY2FsbEZyYW1lKSkp
CisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZy
YW1lKTsKKworICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8g
MSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKworICAgIC8vIFRoZSB8dGhpc3wgb2YgdGhlIG1vZHVs
ZSBpcyBhbHdheXMgYHVuZGVmaW5lZGAuCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWhh
c3RoaXNiaW5kaW5nCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWdldHRoaXNiaW5kaW5n
CisgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CisgICAgcHJvdG9DYWxsRnJhbWUu
aW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3Qo
KSwgc2NvcGUpLCBqc1VuZGVmaW5lZCgpLCAxKTsKKworICAgIGlmIChMZWdhY3lQcm9maWxlciog
cHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKKyAgICAgICAgcHJvZmlsZXItPndpbGxF
eGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFibGUtPmZp
cnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKKworICAgIC8vIEV4ZWN1dGUg
dGhlIGNvZGU6CisgICAgSlNWYWx1ZSByZXN1bHQ7CisgICAgeworICAgICAgICBTYW1wbGluZ1Rv
b2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOworICAgICAgICByZXN1
bHQgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9D
YWxsRnJhbWUpOworICAgIH0KKworICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJvZmlsZXIgPSB2
bS5lbmFibGVkUHJvZmlsZXIoKSkKKyAgICAgICAgcHJvZmlsZXItPmRpZEV4ZWN1dGUoY2FsbEZy
YW1lLCBleGVjdXRhYmxlLT5zb3VyY2VVUkwoKSwgZXhlY3V0YWJsZS0+Zmlyc3RMaW5lKCksIGV4
ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkpOworCisgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVz
dWx0KTsKK30KKwogTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCkKIHsKICAgICBEZWJ1Z2dlciog
ZGVidWdnZXIgPSBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5k
ZXggMTMyYzk1ZDE3ZjRlMTA5YmEzN2JiY2IwMTg3MjczMmIyZjk1MTE2Zi4uNGZlZmFhNmNmOGUz
MWFmMmQzNTlkMTYzYmFjOGExYTQwOTVhZjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTU0LDggKzU0LDExIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEpTQXJyb3dGdW5jdGlvbjsKICAgICBjbGFzcyBKU0Z1bmN0aW9u
OwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1l
bnQ7CisgICAgY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOworICAgIGNsYXNzIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIEpTU2NvcGU7
CiAgICAgY2xhc3MgU2FtcGxpbmdUb29sOwpAQCAtNzYsNiArNzksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBlbnVtIFN0YWNrRnJhbWVDb2RlVHlwZSB7CiAgICAgICAgIFN0YWNrRnJhbWVHbG9i
YWxDb2RlLAogICAgICAgICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgICAgIFN0YWNrRnJhbWVN
b2R1bGVDb2RlLAogICAgICAgICBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlLAogICAgICAgICBTdGFj
a0ZyYW1lTmF0aXZlQ29kZQogICAgIH07CkBAIC0yMTIsNiArMjE2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1
bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29u
c3QgQXJnTGlzdCYpOwogICAgICAgICBKU09iamVjdCogZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJh
bWUqLCBKU09iamVjdCogZnVuY3Rpb24sIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERh
dGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwogICAgICAgICBKU1ZhbHVl
IGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
SlNTY29wZSopOworICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqLCBDYWxsRnJhbWUqLCBKU01vZHVsZUVudmlyb25tZW50Kik7CiAKICAgICAgICAgdm9pZCBn
ZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRyZGlmZl90JiBmaXJz
dFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7CiAgICAgICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cAppbmRleCBkMzc2ZGI0MjE3ZmE2MWU2YzMyZWE5ZGEyN2E3NWJmYjAzMzBiM2I3Li4wYjFmNDU1
ZjE3NzllY2IxNTljM2E0NGU4MzA4NWU3MjNkM2ViMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMTgxLDYgKzE4MSw4
IEBAIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkNvZGVUeXBlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNv
ZGVUeXBlKCkgY29uc3QKICAgICBzd2l0Y2ggKGNvZGVCbG9jaygpLT5jb2RlVHlwZSgpKSB7CiAg
ICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgcmV0dXJuIENvZGVUeXBlOjpFdmFsOworICAgIGNh
c2UgTW9kdWxlQ29kZToKKyAgICAgICAgcmV0dXJuIENvZGVUeXBlOjpNb2R1bGU7CiAgICAgY2Fz
ZSBGdW5jdGlvbkNvZGU6CiAgICAgICAgIHJldHVybiBDb2RlVHlwZTo6RnVuY3Rpb247CiAgICAg
Y2FzZSBHbG9iYWxDb2RlOgpAQCAtMTk5LDYgKzIwMSw5IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6
OkZyYW1lOjpmdW5jdGlvbk5hbWUoKQogICAgIGNhc2UgQ29kZVR5cGU6OkV2YWw6CiAgICAgICAg
IHRyYWNlTGluZSA9IEFTQ0lJTGl0ZXJhbCgiZXZhbCBjb2RlIik7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ29kZVR5cGU6Ok1vZHVsZToKKyAgICAgICAgdHJhY2VMaW5lID0gQVNDSUlMaXRl
cmFsKCJtb2R1bGUgY29kZSIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvZGVUeXBlOjpO
YXRpdmU6CiAgICAgICAgIGlmIChjYWxsZWUpCiAgICAgICAgICAgICB0cmFjZUxpbmUgPSBnZXRD
YWxjdWxhdGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lKCksIGNhbGxlZSkuaW1wbCgpOwpAQCAtMjE5
LDYgKzIyNCw3IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjpzb3VyY2VVUkwoKQogCiAg
ICAgc3dpdGNoIChjb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBDb2RlVHlwZTo6RXZhbDoKKyAgICBj
YXNlIENvZGVUeXBlOjpNb2R1bGU6CiAgICAgY2FzZSBDb2RlVHlwZTo6RnVuY3Rpb246CiAgICAg
Y2FzZSBDb2RlVHlwZTo6R2xvYmFsOiB7CiAgICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSBjb2Rl
QmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCmluZGV4IDAwMzZhNzg5YzU4
ZTE5YWUxM2IwZDRhYmZiNzU1ODNlOWJiNDY3MzQuLjQxYmZjNzA4ODIwZWNjZmNhYzczNWIzOWI0
MjI0NzEzZWJlNTJkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvU3RhY2tWaXNpdG9yLmgKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3MgU3RhY2tWaXNpdG9yIHsK
ICAgICAgICAgICAgIEdsb2JhbCwKICAgICAgICAgICAgIEV2YWwsCiAgICAgICAgICAgICBGdW5j
dGlvbiwKKyAgICAgICAgICAgIE1vZHVsZSwKICAgICAgICAgICAgIE5hdGl2ZQogICAgICAgICB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYmJjODUyM2Y1YmIyM2EzOTMwYzA5
NGVkNDg2MjE3NDY0ZDg2YzU1MS4uODRmMzZkNTQwZjNjYmFhMWFlY2M1NTNhZGY4YzQ2MTRiN2Jk
ZTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNDg2LDYgKzQ4Niw3IEBAIENv
bXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSklUQ29tcGlsYXRpb25FZmZvcnQg
ZWZmb3J0KQogICAgIAogICAgIHN3aXRjaCAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkpIHsKICAg
ICBjYXNlIEdsb2JhbENvZGU6CisgICAgY2FzZSBNb2R1bGVDb2RlOgogICAgIGNhc2UgRXZhbENv
ZGU6CiAgICAgICAgIG1fY29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNl
OwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNDhjZGYxMWZkMzZmYWZkOTZiZjJiYjY3MWY1NWMzMWQ0NTdl
NjQ0OS4uOWE0YWU0NTUyOWRlZmU0NzVkNjc3YmY3MDRiNWM2MDc2ZTNlZDM2NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTQzLDYg
KzQzLDcgQEAKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1
bWVudHMuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHNUYWJsZS5oIgorI2luY2x1ZGUgIlNs
b3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiAKQEAg
LTcwMyw2ICs3MDQsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3M6CiAgICAgICAgIGVtaXRSZXNvbHZlQ2xvc3VyZShkc3QsIHNjb3BlLCBuZWVk
c1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSksIGRlcHRoKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBNb2R1bGVWYXI6CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjdXJyZW50
SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0KCkpLCByZWdUMCk7CisgICAgICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEeW5hbWljOgog
ICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKQEAgLTcxNiw3ICs3
MjEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvdwogICAgIGludCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3Rh
dGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwog
Ci0gICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09
IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQorICAgIGlmIChyZXNvbHZl
VHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVz
b2x2ZVR5cGUgPT0gQ2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKQEAgLTc3OCw2ICs3ODMsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgp
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBMb2NhbENs
b3N1cmVWYXI6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpA
QCAtODUyLDYgKzg1OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF90b19zY29wZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2so
bmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpKTsKICAgICAgICAgZW1pdFB1dENs
b3N1cmVWYXIoc2NvcGUsICpvcGVyYW5kU2xvdCwgdmFsdWUsIGN1cnJlbnRJbnN0cnVjdGlvbls1
XS51LndhdGNocG9pbnRTZXQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoK
ICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtODczLDcgKzg4MCwxMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3Rv
X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAg
ICAgICByZXR1cm47CiAgICAgd2hpbGUgKGxpbmtDb3VudC0tKQogICAgICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50
SW5zdHJ1Y3Rpb24pOworCisgICAgaWYgKHJlc29sdmVUeXBlID09IE1vZHVsZVZhcikgeworICAg
ICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vy
cm9yKTsKKyAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAKaW5kZXggZTkyNmY1MmRjNzZkOWVkZTJmMGUzYTViM2RjMjZiMzM2YTkyZjg1ZC4uMDI2OWJh
NDZiMWJiMWRlMjIwNDMzNWJlYjk5MzJhMGRkZDczYjBjNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTEzMiw4ICsxMzIsOCBAQCB2b2lkIERhdGE6OnBl
cmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQobWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwgPT0gNjQpOwogI2VuZGlmCiAgICAgQVNTRVJUKFN0cmluZ1R5cGUgPT0gNik7Ci0g
ICAgQVNTRVJUKE9iamVjdFR5cGUgPT0gMTgpOwotICAgIEFTU0VSVChGaW5hbE9iamVjdFR5cGUg
PT0gMTkpOworICAgIEFTU0VSVChPYmplY3RUeXBlID09IDIwKTsKKyAgICBBU1NFUlQoRmluYWxP
YmplY3RUeXBlID09IDIxKTsKICAgICBBU1NFUlQoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9PSAx
KTsKICAgICBBU1NFUlQoSW1wbGVtZW50c0hhc0luc3RhbmNlID09IDIpOwogICAgIEFTU0VSVChJ
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID09IDgpOwpAQCAtMTQxLDE1ICsxNDEsMTcgQEAg
dm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKEdsb2JhbENv
ZGUgPT0gMCk7CiAgICAgQVNTRVJUKEV2YWxDb2RlID09IDEpOwogICAgIEFTU0VSVChGdW5jdGlv
bkNvZGUgPT0gMik7CisgICAgQVNTRVJUKE1vZHVsZUNvZGUgPT0gMyk7CiAKICAgICBzdGF0aWNf
YXNzZXJ0KEdsb2JhbFByb3BlcnR5ID09IDAsICJMTEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5
IFJlc3VsdFR5cGUgaXMgPT0gMCIpOwogICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyID09IDEs
ICJMTEludCBhc3N1bWVzIEdsb2JhbFZhciBSZXN1bHRUeXBlIGlzID09IDEiKTsKICAgICBzdGF0
aWNfYXNzZXJ0KENsb3N1cmVWYXIgPT0gMiwgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZhciBSZXN1
bHRUeXBlIGlzID09IDIiKTsKICAgICBzdGF0aWNfYXNzZXJ0KExvY2FsQ2xvc3VyZVZhciA9PSAz
LCAiTExJbnQgYXNzdW1lcyBMb2NhbENsb3N1cmVWYXIgUmVzdWx0VHlwZSBpcyA9PSAzIik7Ci0g
ICAgc3RhdGljX2Fzc2VydChHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0g
NCwgIkxMSW50IGFzc3VtZXMgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJl
c3VsdFR5cGUgaXMgPT0gNCIpOwotICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcyA9PSA1LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNSIpOwotICAgIHN0YXRpY19hc3NlcnQoQ2xvc3Vy
ZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNiwgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA2Iik7Ci0gICAgc3RhdGlj
X2Fzc2VydChEeW5hbWljID09IDcsICJMTEludCBhc3N1bWVzIER5bmFtaWMgUmVzdWx0VHlwZSBp
cyA9PSA3Iik7CisgICAgc3RhdGljX2Fzc2VydChNb2R1bGVWYXIgPT0gNCwgIkxMSW50IGFzc3Vt
ZXMgTW9kdWxlVmFyIFJlc3VsdFR5cGUgaXMgPT0gNCIpOworICAgIHN0YXRpY19hc3NlcnQoR2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDUsICJMTEludCBhc3N1bWVzIEds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDUiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNiwg
IkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBl
IGlzID09IDYiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzID09IDcsICJMTEludCBhc3N1bWVzIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIFJlc3VsdFR5cGUgaXMgPT0gNyIpOworICAgIHN0YXRpY19hc3NlcnQoRHluYW1pYyA9PSA4
LCAiTExJbnQgYXNzdW1lcyBEeW5hbWljIFJlc3VsdFR5cGUgaXMgPT0gOCIpOwogICAgIAogICAg
IEFTU0VSVChSZXNvbHZlTW9kZUFuZFR5cGU6Om1hc2sgPT0gMHhmZmZmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAppbmRleCA5ZDAwMTA2
YjlhODI3NmY0ODQyMGY2YjU0NmMzMmQ1OTMwYTM2YjY4Li5hNmMzZDI3ZTI4MGEwNDQ3OTIyODY5
ZDc4MmNmZTJhNTVhYjc4MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFbnRyeXBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50LmNwcApAQCAtOTcsMTIgKzk3LDMwIEBAIHN0YXRpYyB2b2lkIHNldFBy
b2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJ
bnRDb2RlUmVmKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAorc3RhdGljIHZvaWQgc2V0TW9k
dWxlUHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyNp
ZiBFTkFCTEUoSklUKQorICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBjb2RlQmxv
Y2stPnNldEpJVENvZGUoCisgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2
bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworICAgIFVOVVNFRF9QQVJBTSh2
bSk7CisgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICBhZG9wdFJlZihuZXcgRGly
ZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworfQorCiB2b2lkIHNldEVudHJ5cG9pbnQoVk0mIHZt
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBzd2l0Y2ggKGNvZGVCbG9jay0+Y29kZVR5
cGUoKSkgewogICAgIGNhc2UgR2xvYmFsQ29kZToKICAgICAgICAgc2V0UHJvZ3JhbUVudHJ5cG9p
bnQodm0sIGNvZGVCbG9jayk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIE1vZHVsZUNvZGU6
CisgICAgICAgIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOworICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgc2V0RXZhbEVudHJ5cG9p
bnQodm0sIGNvZGVCbG9jayk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYTJhNmIy
YjExYzU2ODFlMGI2ZTk3MGM0ZmQxMWM5NmUxOWRiOTNkYS4uOWUzZjQ0ODdiMDg1MjAxMzcyYjJk
N2IyN2I3OGNlNTkxYWJkOTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJWTS5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCmluZGV4IDhhYjk2
YjMwNDc1ZmQ1NTRkZWY4YjMyNjYyNDk2NjMyZWFmOTZkOWEuLmFmNjg4NGU1ZWRlN2JlYmUwNGYz
N2IzZjAwMDkxZWUxNmY5NTExNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50VGh1bmtzLmNwcApAQCAtODgsNiArODgsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHBy
b2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKICAgICByZXR1cm4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfcHJvZ3JhbV9w
cm9sb2d1ZSksICJwcm9ncmFtIik7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBtb2R1bGVQ
cm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X21vZHVs
ZV9wcm9ncmFtX3Byb2xvZ3VlKSwgIm1vZHVsZV9wcm9ncmFtIik7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIExMSW50CiAKICNlbHNlIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5oCmluZGV4IDBkMWJlNmJkYWVhZGY3OTQ4N2NlOTA2NjgyNjQ2ODUx
ODhhOGJkMTIuLjk1YjBmNDQ4NDhiY2M1MjlkMTUwM2UyODliOTNlZmUzNzA1YzgzMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCkBAIC00Niw2ICs0Niw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5l
cmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFy
aXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxF
bnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVu
dHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBtb2R1bGVQcm9n
cmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJ
bnQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCmluZGV4IDVhZDgzNDY1Y2QxYTRlOGY0ZTk2NGE2N2VkMDhhMTU3ZTdmYTM3NWEu
LjI5ODhlMWVhYmEyMDczYTcxNDc0MzU4MjJlNDU5NmFkZDRhYzQzOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE2
MSw4ICsxNjEsOCBAQCBjb25zdCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgPSAzMAogCiAjIFR5
cGUgY29uc3RhbnRzLgogY29uc3QgU3RyaW5nVHlwZSA9IDYKLWNvbnN0IE9iamVjdFR5cGUgPSAx
OAotY29uc3QgRmluYWxPYmplY3RUeXBlID0gMTkKK2NvbnN0IE9iamVjdFR5cGUgPSAyMAorY29u
c3QgRmluYWxPYmplY3RUeXBlID0gMjEKIAogIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNvbnN0
IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCkBAIC0xNzYsNiArMTc2LDcgQEAgY29uc3QgRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCiBjb25zdCBHbG9iYWxDb2RlID0g
MAogY29uc3QgRXZhbENvZGUgPSAxCiBjb25zdCBGdW5jdGlvbkNvZGUgPSAyCitjb25zdCBNb2R1
bGVDb2RlID0gMwogCiAjIFRoZSBpbnRlcnByZXRlciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9mIHRo
ZSBhcmd1bWVudCBjb3VudC4KIGNvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsg
VGFnT2Zmc2V0CkBAIC0xOTEsMTAgKzE5MiwxMSBAQCBjb25zdCBHbG9iYWxQcm9wZXJ0eSA9IDAK
IGNvbnN0IEdsb2JhbFZhciA9IDEKIGNvbnN0IENsb3N1cmVWYXIgPSAyCiBjb25zdCBMb2NhbENs
b3N1cmVWYXIgPSAzCi1jb25zdCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3Mg
PSA0Ci1jb25zdCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNQotY29uc3QgQ2xv
c3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA2Ci1jb25zdCBEeW5hbWljID0gNworY29u
c3QgTW9kdWxlVmFyID0gNAorY29uc3QgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzID0gNQorY29uc3QgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDYKK2NvbnN0
IENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNworY29uc3QgRHluYW1pYyA9IDgK
IAogY29uc3QgUmVzb2x2ZU1vZGVNYXNrID0gMHhmZmZmCiAKQEAgLTg4NCw2ICs4ODYsMTEgQEAg
X2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CiAgICAgZGlzcGF0Y2goMCkKIAogCitfbGxpbnRfbW9k
dWxlX3Byb2dyYW1fcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tH
ZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxp
bnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCiBfbGxpbnRfZXZhbF9wcm9s
b2d1ZToKICAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1
ZSkKICAgICBkaXNwYXRjaCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBkMjE1MmEyZjI3N2FkZTU4Nzk3NmEx
YzNmMTIwMjM3MjliMzhhNTlhLi41YzAwZTY0NmY2MDEwZTZiYTY4NjFlMzRjZTljZjc3NGE1YThj
NDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtMTkxOCw2ICsxOTE4LDEyIEBAIG1hY3JvIGdldEdsb2JhbE9i
amVjdChkc3QpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KIGVuZAogCittYWNybyBnZXRJ
bXBvcnRlZE1vZHVsZVNjb3BlKGRzdCkKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0MCkK
KyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oZHN0LCB0MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIs
IHQxLCA4XQorZW5kCisKIG1hY3JvIHZhckluamVjdGlvbkNoZWNrKHNsb3dQYXRoKQogICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDBdLCB0MApAQCAtMTk1NywxMCArMTk2MywxNSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29w
ZToKICAgICBkaXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXI6Ci0gICAgYmluZXEgdDAsIENsb3N1
cmVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgYmluZXEg
dDAsIENsb3N1cmVWYXIsIC5yTW9kdWxlVmFyCiAgICAgcmVzb2x2ZVNjb3BlKCkKICAgICBkaXNw
YXRjaCg3KQogCisuck1vZHVsZVZhcjoKKyAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGdldEltcG9ydGVkTW9kdWxlU2Nv
cGUoMSkKKyAgICBkaXNwYXRjaCg3KQorCiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25D
aGVjayguckR5bmFtaWMpCkBAIC0yMTQ0LDEzICsyMTU1LDE4IEBAIF9sbGludF9vcF9wdXRfdG9f
c2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAogLnBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrczoKLSAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5w
RHluYW1pYworICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywg
LnBNb2R1bGVWYXIKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgdmFySW5q
ZWN0aW9uQ2hlY2soLnBEeW5hbWljKQogICAgIGxvYWRWYXJpYWJsZSgxLCB0MCkKICAgICBwdXRD
bG9zdXJlVmFyKCkKICAgICBkaXNwYXRjaCg3KQogCisucE1vZHVsZVZhcjoKKyAgICBiaW5lcSB0
MCwgTW9kdWxlVmFyLCAucER5bmFtaWMKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90aHJv
d19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcikKKyAgICBkaXNwYXRj
aCg3KQorCiAucER5bmFtaWM6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0
X3RvX3Njb3BlKQogICAgIGRpc3BhdGNoKDcpCkBAIC0yMjMzLDQgKzIyNDksNCBAQCBfbGxpbnRf
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgbG9hZHAgSlNBcnJvd0Z1bmN0aW9uOjpt
X2JvdW5kVGhpc1t0MF0sIHQwCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAg
IHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMikKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCisgICAgZGlzcGF0Y2goMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXggM2QxNzdjYTc3YjhiOGQ4OGQ4N2I0ZjRl
ODVjZTNkNDY4MzhjNDQxZC4uZjYyMzhmYjk2ODAyYmU1MzdlOTFhZGMyNmI4MmQ4OTBiOTU0MDMy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXpl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5j
cHAKQEAgLTM2LDExICszNiw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogCi1Nb2R1bGVBbmFseXpl
cjo6TW9kdWxlQW5hbHl6ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1
bGVLZXksIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQorTW9kdWxlQW5hbHl6ZXI6
Ok1vZHVsZUFuYWx5emVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxl
S2V5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNh
bFZhcmlhYmxlcykKICAgICA6IG1fdm0oJmV4ZWMtPnZtKCkpCi0gICAgLCBtX21vZHVsZVJlY29y
ZChleGVjLT52bSgpLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+bW9kdWxlUmVjb3JkU3RydWN0dXJlKCksIG1vZHVsZUtleSkp
Ci0gICAgLCBtX2RlY2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzKQotICAgICwgbV9s
ZXhpY2FsVmFyaWFibGVzKGxleGljYWxWYXJpYWJsZXMpCisgICAgLCBtX21vZHVsZVJlY29yZChl
eGVjLT52bSgpLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+bW9kdWxlUmVjb3JkU3RydWN0dXJlKCksIG1vZHVsZUtleSwgc291
cmNlQ29kZSwgZGVjbGFyZWRWYXJpYWJsZXMsIGxleGljYWxWYXJpYWJsZXMpKQogewogfQogCkBA
IC04NSw3ICs4Myw3IEBAIHZvaWQgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSwKICAgICB9CiAKICAgICBjb25z
dCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZCgpLT5sb29rVXBJbXBvcnRFbnRyeShs
b2NhbE5hbWUpOwotICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZSh2bSgpKSkgeworICAg
IGlmICh2YXJpYWJsZS5pc0ltcG9ydGVkTmFtZXNwYWNlKCkpIHsKICAgICAgICAgLy8gRXhwb3J0
ZWQgbmFtZXNwYWNlIGJpbmRpbmcuCiAgICAgICAgIC8vIGltcG9ydCAqIGFzIG5hbWVzcGFjZSBm
cm9tICJtb2QiCiAgICAgICAgIC8vIGV4cG9ydCB7IG5hbWVzcGFjZSB9CkBAIC0xNDQsMTAgKzE0
MiwxMCBAQCBKU01vZHVsZVJlY29yZCogTW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUoTW9kdWxlUHJv
Z3JhbU5vZGUmIG1vZHVsZVByb2dyYW1Ob2RlKQogICAgIC8vICAgICBUaGlzIGV4cG9ydHMgYWxs
IHRoZSBuYW1lcyBmcm9tIHRoZSBzcGVjaWZpZWQgZXh0ZXJuYWwgbW9kdWxlIGFzIHRoZSBjdXJy
ZW50IG1vZHVsZSdzIG5hbWUuCiAgICAgLy8KICAgICAvLyAgICAgZXhwb3J0ICogZnJvbSAibW9k
IgotICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZGVjbGFyZWRWYXJpYWJsZXMpCisgICAg
Zm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9tb2R1bGVSZWNvcmQtPmRlY2xhcmVkVmFyaWFibGVz
KCkpCiAgICAgICAgIGV4cG9ydFZhcmlhYmxlKHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKIAotICAg
IGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fbGV4aWNhbFZhcmlhYmxlcykKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIHBhaXIgOiBtX21vZHVsZVJlY29yZC0+bGV4aWNhbFZhcmlhYmxlcygpKQogICAg
ICAgICBleHBvcnRWYXJpYWJsZShwYWlyLmtleSwgcGFpci52YWx1ZSk7CiAKICAgICBpZiAoT3B0
aW9uczo6ZHVtcE1vZHVsZVJlY29yZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Nb2R1bGVBbmFseXplci5oCmluZGV4IDIyOGE2OWZlZTc0NzM2NjIwZDdmNmRhNTcxYmI2YWNh
ZDg0NmI3MDYuLjcwODNjYTkwOTkxOGVmZDIzZWJhMWEzZDViYjljM2Y2NTczMzhlMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgKQEAgLTMxLDEx
ICszMSwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTTW9kdWxlUmVjb3JkOworY2xh
c3MgU291cmNlQ29kZTsKIAogY2xhc3MgTW9kdWxlQW5hbHl6ZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE1vZHVsZUFuYWx5emVyKTsKIHB1YmxpYzoKLSAgICBNb2R1bGVBbmFseXplcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBs
ZXhpY2FsVmFyaWFibGVzKTsKKyAgICBNb2R1bGVBbmFseXplcihFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBtb2R1bGVLZXksIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYg
bGV4aWNhbFZhcmlhYmxlcyk7CiAKICAgICBKU01vZHVsZVJlY29yZCogYW5hbHl6ZShNb2R1bGVQ
cm9ncmFtTm9kZSYpOwogCkBAIC01NCw4ICs1NSw2IEBAIGNsYXNzIE1vZHVsZUFuYWx5emVyIHsK
IAogICAgIFZNKiBtX3ZtOwogICAgIFN0cm9uZzxKU01vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNv
cmQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2RlY2xhcmVkVmFyaWFibGVzOwotICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQgbV9sZXhpY2FsVmFyaWFibGVzOwogICAgIElkZW50aWZpZXJBbGlh
c01hcCBtX2FsaWFzTWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCmluZGV4IDhhOTM2MTU3YjNmNjk2MGI2M2JhODFlYjQ3NzY4ODZmYTAzNDU5OGEuLjdmMDUw
MWM2NTMxMmRiNGQ0ZmY4NWRjNGRiMTNhZjI2MzFkZGVjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIzMTksNyArMjMxOSw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkltcG9ydFNwZWNpZmllciBQYXJz
ZXI8TGV4ZXJUCiAgICAgfQogCiAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGxvY2FsTmFtZVRva2Vu
Lm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcsICJDYW5ub3QgdXNlIGtleXdvcmQgYXMgaW1wb3J0
ZWQgYmluZGluZyBuYW1lIik7Ci0gICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9u
UmVzdWx0ID0gZGVjbGFyZVZhcmlhYmxlKGxvY2FsTmFtZSwgRGVjbGFyYXRpb25UeXBlOjpDb25z
dERlY2xhcmF0aW9uLCBEZWNsYXJhdGlvbkltcG9ydFR5cGU6OkltcG9ydGVkKTsKKyAgICBEZWNs
YXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBkZWNsYXJlVmFyaWFibGUobG9j
YWxOYW1lLCBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24sIChzcGVjaWZpZXJUeXBl
ID09IEltcG9ydFNwZWNpZmllclR5cGU6Ok5hbWVzcGFjZUltcG9ydCkgPyBEZWNsYXJhdGlvbklt
cG9ydFR5cGU6OkltcG9ydGVkTmFtZXNwYWNlIDogRGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBv
cnRlZCk7CiAgICAgaWYgKGRlY2xhcmF0aW9uUmVzdWx0ICE9IERlY2xhcmF0aW9uUmVzdWx0OjpW
YWxpZCkgewogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QoZGVjbGFyYXRpb25SZXN1bHQgJiBE
ZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0cmljdE1vZGUsICJDYW5ub3QgZGVjbGFyZSBhbiBp
bXBvcnRlZCBiaW5kaW5nIG5hbWVkICIsIGxvY2FsTmFtZS0+aW1wbCgpLCAiIGluIHN0cmljdCBt
b2RlIik7CiAgICAgICAgIGlmIChkZWNsYXJhdGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0
OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24pCkBAIC0yNTYwLDEwICsyNTYwLDggQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgICAgIC8vIGRvZXMgbm90IGhhdmUgZWZmZWN0
IG9uIHRoZSBjdXJyZW50IG1vZHVsZSdzIHNjb3BlLiBCdXQsCiAgICAgICAgICAgICAvLyAgIGV4
cG9ydCB7IEEsIEIsIEMgYXMgRCB9CiAgICAgICAgICAgICAvLyB3aWxsIHJlZmVyZW5jZSB0aGUg
Y3VycmVudCBtb2R1bGUncyBiaW5kaW5ncy4KLSAgICAgICAgICAgIGZvciAoY29uc3QgSWRlbnRp
ZmllciogbG9jYWxOYW1lIDogbWF5YmVMb2NhbE5hbWVzKSB7Ci0gICAgICAgICAgICAgICAgY3Vy
cmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGxvY2FsTmFtZSwgbV92bS0+cHJvcGVydHlOYW1lcy0+
ZXZhbCA9PSAqbG9jYWxOYW1lKTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgSWRlbnRpZmllciog
bG9jYWxOYW1lIDogbWF5YmVMb2NhbE5hbWVzKQogICAgICAgICAgICAgICAgIGN1cnJlbnRTY29w
ZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRCaW5kaW5nKCpsb2NhbE5hbWUpOwotICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0
TmFtZWREZWNsYXJhdGlvbihleHBvcnRMb2NhdGlvbiwgc3BlY2lmaWVyTGlzdCwgbW9kdWxlTmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBjMmU2YTY1MDQwODk5
MTVkYzI4MDU3ZmZlMDFmMDRlZWFkZTAxZjE0Li5mNjk3YmUzMzZiYjgwYzUyNTA0Mjg1NmI4YzA4
NzU1MzczM2ExMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTEw
MCw2ICsxMDAsNyBAQCBlbnVtIGNsYXNzIERlY2xhcmF0aW9uVHlwZSB7CiAKIGVudW0gY2xhc3Mg
RGVjbGFyYXRpb25JbXBvcnRUeXBlIHsKICAgICBJbXBvcnRlZCwKKyAgICBJbXBvcnRlZE5hbWVz
cGFjZSwKICAgICBOb3RJbXBvcnRlZAogfTsKIApAQCAtMzM1LDYgKzMzNiwxMCBAQCBzdHJ1Y3Qg
U2NvcGUgewogCiAgICAgICAgIGlmIChpbXBvcnRUeXBlID09IERlY2xhcmF0aW9uSW1wb3J0VHlw
ZTo6SW1wb3J0ZWQpCiAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNldElz
SW1wb3J0ZWQoKTsKKyAgICAgICAgZWxzZSBpZiAoaW1wb3J0VHlwZSA9PSBEZWNsYXJhdGlvbklt
cG9ydFR5cGU6OkltcG9ydGVkTmFtZXNwYWNlKSB7CisgICAgICAgICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLnNldElzSW1wb3J0ZWQoKTsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuc2V0SXNJbXBvcnRlZE5hbWVzcGFjZSgpOworICAgICAgICB9CiAKICAgICAg
ICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNs
YXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAppbmRleCA1ZWQy
YTZiZGE5MjgzOGUyOTY0ODJmNjZjMDc4NWEzNjExYWU2MTVjLi43NmM3MDk2ZTllNjQ0N2ViYmJk
YjBkOTY1YTNlYTRhMjRhNTE3M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApAQCAtNDAsNiArNDAsNyBAQCBzdHJ1Y3QgVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5IHsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNMZXQoKSBj
b25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0xldDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0V4cG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNFeHBvcnRlZDsgfQogICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc0ltcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNJ
bXBvcnRlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0ltcG9ydGVkTmFtZXNwYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNJbXBvcnRlZE5hbWVzcGFjZTsgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7IG1fYml0cyB8PSBJc0NhcHR1cmVkOyB9
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ29uc3QoKSB7IG1fYml0cyB8PSBJc0NvbnN0
OyB9CkBAIC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgewog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0xldCgpIHsgbV9iaXRzIHw9IElzTGV0OyB9CiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRXhwb3J0ZWQoKSB7IG1fYml0cyB8PSBJc0V4cG9y
dGVkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzSW1wb3J0ZWQoKSB7IG1fYml0cyB8
PSBJc0ltcG9ydGVkOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzSW1wb3J0ZWROYW1l
c3BhY2UoKSB7IG1fYml0cyB8PSBJc0ltcG9ydGVkTmFtZXNwYWNlOyB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsgbV9iaXRzICY9IH5Jc1ZhcjsgfQogCkBAIC01Nyw3
ICs1OSw4IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgewogICAgICAgICBJc1Zh
ciA9IDEgPDwgMiwKICAgICAgICAgSXNMZXQgPSAxIDw8IDMsCiAgICAgICAgIElzRXhwb3J0ZWQg
PSAxIDw8IDQsCi0gICAgICAgIElzSW1wb3J0ZWQgPSAxIDw8IDUKKyAgICAgICAgSXNJbXBvcnRl
ZCA9IDEgPDwgNSwKKyAgICAgICAgSXNJbXBvcnRlZE5hbWVzcGFjZSA9IDEgPDwgNgogICAgIH07
CiAgICAgdWludDhfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAtNzksNiArODIsOCBAQCBjbGFzcyBW
YXJpYWJsZUVudmlyb25tZW50IHsKICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY29u
dGFpbnMoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgY29uc3Qg
eyByZXR1cm4gbV9tYXAuY29udGFpbnMoaWRlbnRpZmllcik7IH0KICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgcmVtb3ZlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIp
IHsgcmV0dXJuIG1fbWFwLnJlbW92ZShpZGVudGlmaWVyKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
TWFwOjppdGVyYXRvciBmaW5kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50
aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmZpbmQoaWRlbnRpZmllcik7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIE1hcDo6Y29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX21hcC5maW5kKGlkZW50aWZpZXIpOyB9
CiAgICAgdm9pZCBzd2FwKFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKTsKICAgICB2b2lkIG1h
cmtWYXJpYWJsZUFzQ2FwdHVyZWRJZkRlZmluZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiYgaWRlbnRpZmllcik7CiAgICAgdm9pZCBtYXJrVmFyaWFibGVBc0NhcHR1cmVkKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggYWI3MGVhYmI5ZTNhMmEwNDUwYzYy
OWU3MDU2NjZmNGRjY2EwMWUyOC4uZDJlZmVjZDgyOWIyYzQ0ODVkZjEwNGI3ZmU0MWMyYzc2OWJk
OGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBA
IC02NywxMSArNjcsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBDYWNoZVR5cGVz
IHsgfTsKIHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jaz4gewogICAgIHR5cGVkZWYgSlNDOjpQcm9ncmFtTm9kZSBSb290Tm9kZTsKICAgICBzdGF0
aWMgY29uc3QgU291cmNlQ29kZUtleTo6Q29kZVR5cGUgY29kZVR5cGUgPSBTb3VyY2VDb2RlS2V5
OjpQcm9ncmFtVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU7CiB9OwogCiB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgQ2FjaGVUeXBlczxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+IHsKICAgICB0eXBlZGVmIEpTQzo6
RXZhbE5vZGUgUm9vdE5vZGU7CiAgICAgc3RhdGljIGNvbnN0IFNvdXJjZUNvZGVLZXk6OkNvZGVU
eXBlIGNvZGVUeXBlID0gU291cmNlQ29kZUtleTo6RXZhbFR5cGU7CisgICAgc3RhdGljIGNvbnN0
IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2Rl
OworfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrPiB7CisgICAgdHlwZWRlZiBKU0M6Ok1vZHVsZVByb2dyYW1Ob2RlIFJvb3RO
b2RlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VDb2RlS2V5OjpDb2RlVHlwZSBjb2RlVHlwZSA9
IFNvdXJjZUNvZGVLZXk6OlByb2dyYW1UeXBlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGU7CiB9
OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRh
YmxlVHlwZT4KQEAgLTk1LDcgKzEwMyw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNh
Y2hlOjpnZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlCiAgICAg
dHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3RO
b2RlIFJvb3ROb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBw
YXJzZTxSb290Tm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0
aW5Nb2RlLCBzdHJpY3RNb2RlLAotICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2Rl
LCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7Cisg
ICAgICAgIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBlcnJv
ciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CiAgICAgaWYg
KCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEzMiw2ICsxNDAsMTIg
QEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2soVk0m
IHZtLCBFdmFsRXhlY3V0YWJsZSogZXhlY3UKICAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2Nr
PFVubGlua2VkRXZhbENvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1v
ZGUsIHN0cmljdE1vZGUsIHRoaXNURFpNb2RlLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwg
ZXJyb3IsIHZhcmlhYmxlc1VuZGVyVERaKTsKIH0KIAorVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKiBDb2RlQ2FjaGU6OmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0mIHZtLCBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJN
b2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCit7Cisg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVBhcmVudFREWlZhcmlhYmxlczsKKyAgICByZXR1
cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0s
IGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3Ry
aWN0LCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1v
ZGUsIGVycm9yLCAmZW1wdHlQYXJlbnRURFpWYXJpYWJsZXMpOworfQorCiAvLyBGSVhNRTogVGhl
cmUncyBubyBuZWVkIHRvIGFkZCB0aGUgZnVuY3Rpb24ncyBuYW1lIHRvIHRoZSBrZXkgaGVyZS4g
SXQncyBhbHJlYWR5IGluIHRoZSBzb3VyY2UgY29kZS4KIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2
bSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJz
ZXJFcnJvciYgZXJyb3IpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5oCmluZGV4IGFmN2RhYzdlNDg3MDQxMzE5YzYzZmVjOTc1NWUyMzkzMTg4MzRjYjYuLjcxNzVm
ZTM5NTEyYzkzNjZlNjE2Mzk4MTNjYjZjNGY4MjI1OThkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC00NSw4ICs0NSwxMCBAQCBjbGFzcyBJZGVudGlm
aWVyOwogY2xhc3MgSlNTY29wZTsKIGNsYXNzIFBhcnNlckVycm9yOwogY2xhc3MgUHJvZ3JhbUV4
ZWN1dGFibGU7CitjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFVubGlua2Vk
Q29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsK
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrOwpAQCAtNTYsNyArNTgsNyBAQCBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIAogY2xh
c3MgU291cmNlQ29kZUtleSB7CiBwdWJsaWM6Ci0gICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBl
LCBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlIH07CisgICAgZW51bSBDb2RlVHlwZSB7IEV2YWxU
eXBlLCBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07CiAKICAgICBTb3Vy
Y2VDb2RlS2V5KCkKICAgICB7CkBAIC0yNTcsNiArMjU5LDcgQEAgY2xhc3MgQ29kZUNhY2hlIHsK
IAogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogZ2V0UHJvZ3JhbUNvZGVCbG9jayhWTSYs
IFByb2dyYW1FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNl
ckVycm9yJik7CiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZXRFdmFsQ29kZUJsb2NrKFZN
JiwgRXZhbEV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9k
ZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBUaGlzVERaTW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOworICAgIFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogZ2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhW
TSYsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2Vy
QnVpbHRpbk1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwog
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9t
R2xvYmFsQ29kZShWTSYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFy
c2VyRXJyb3ImKTsKIAogICAgIHZvaWQgY2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggMTYzYjExNjEwNDFjY2RiMzVh
ZDUyOTc2Y2FmZTZiZDExZGZjOGI3Ny4uNGZkYmQ5MzE0MzA4ZmI5OTUxNDUzNjgzMzgzZTFiYTRl
MmM4MmY3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCkBAIC0yODMsNiArMjgzLDcgQEAKICAgICBtYWNybyhBcnJheSkgXAogICAg
IG1hY3JvKFN0cmluZykgXAogICAgIG1hY3JvKE1hcCkgXAorICAgIG1hY3JvKFNldCkgXAogICAg
IG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhJbnRlcm5hbFByb21pc2UpIFwKICAgICBtYWNy
byhhYnMpIFwKQEAgLTMwNyw2ICszMDgsNyBAQAogICAgIG1hY3JvKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbikgXAogICAgIG1hY3JvKGdldCkgXAogICAgIG1hY3JvKHNldCkgXAorICAgIG1hY3Jv
KGFkZCkgXAogCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYWNiZTE0NjI5ZDI4NGVlODI1MTFm
NzNjNTY4MDkxZGVkZjNiNDQ0Zi4uMTNlMmU1YTM5NzRjYTM5NWM0YmE3NTc2OTU2ODMyYzNmNGZh
ZjY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCkBAIC0yNzAsNiArMjcwLDEyIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90
aHJvd190ZHpfZXJyb3IpCiAgICAgVEhST1coY3JlYXRlVERaRXJyb3IoZXhlYykpOwogfQogCitT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVy
dHlfd3JpdGVfZXJyb3IpCit7CisgICAgQkVHSU4oKTsKKyAgICBUSFJPVyhjcmVhdGVUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25vdCkKIHsKICAgICBCRUdJTigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApp
bmRleCAwNjdkZjBjMzhlOTEyMGJmNzA3Y2ZkZTQxYzNlZmJmMmE2ODcyZWUzLi4zMDA5ODU1ZmY2
YmEyZDE1MjgzZGI4Zjg1ZjNjZTQ1N2RkYjI4NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMTg5LDYgKzE4OSw3IEBAIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZW50ZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9nZXRfY2FsbGVlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
dG9fdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Rocm93X3Rkel9lcnJv
cik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3Jl
YWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbm90KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZXEpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCAyNzExNzhjMmI1ZjY0MzdlNjhkZTU5MmQ2MTRi
ODEyZmE1MWVmMjVkLi5iNWY2MjNhY2RhNTIzMDUxMTg3ZDBkYjU2ODg1MjEyNjJkODYyNDhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtNzgs
NyArNzgsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBQcml2YXRlTmFtZSBwcml2YXRlTmFtZShQcml2YXRlTmFtZTo6RGVzY3JpcHRpb24s
ICJFbnRyeVBvaW50TW9kdWxlIik7Ci0gICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIo
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChwcml2YXRlTmFtZSksIG1vZHVsZVByb2dyYW1Ob2Rl
LT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMo
KSk7CisgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVVpZChwcml2YXRlTmFtZSksIHNvdXJjZSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xh
cmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKICAgICBt
b2R1bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmlu
ZGV4IDFiOWE3M2Q3OTMzOGFhMzkxNGYzZTQ1NDUxYmI2ZjlhMDBjYzkwOTcuLjgyNTFjNTgzYTY4
MTc1ZDI3ZTZjYjExZjgzMzdjYzk0YzU2NGQyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZH
RHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAj
aW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgpAQCAtMTU5
LDcgKzE2MCwxOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKENvZGVCbG9j
ayogZ2VuZXJpY0NvZGVCbG9jaykKICAgICAgICAgZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJs
b2NrID0gY29kZUJsb2NrOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCisgICAg
Y2FzZSBNb2R1bGVDb2RlOiB7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7CisgICAgICAg
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqPihnZW5lcmljQ29kZUJsb2NrKTsKKworICAgICAgICBBU1NFUlQoa2lu
ZCA9PSBDb2RlRm9yQ2FsbCk7CisKKyAgICAgICAgb2xkQ29kZUJsb2NrID0gZXhlY3V0YWJsZS0+
bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVBy
b2dyYW1Db2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAg
IGNhc2UgRXZhbENvZGU6IHsKICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBq
c0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0aGlzKTsKICAgICAgICAgRXZhbENvZGVCbG9jayogY29k
ZUJsb2NrID0gc3RhdGljX2Nhc3Q8RXZhbENvZGVCbG9jayo+KGdlbmVyaWNDb2RlQmxvY2spOwpA
QCAtMjI2LDcgKzIzOCwxNyBAQCBSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpu
ZXdDb2RlQmxvY2tGb3IoCiAgICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3Vu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUsCiAgICAgICAgICAgICBleGVjdXRh
YmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydENvbHVt
bigpKSk7CiAgICAgfQotICAgIAorCisgICAgaWYgKGNsYXNzSW5mbygpID09IE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2spOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rpb24pOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2soCisgICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRh
YmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUsCisgICAg
ICAgICAgICBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBleGVjdXRhYmxlLT5zb3Vy
Y2UoKS5zdGFydENvbHVtbigpKSk7CisgICAgfQorCiAgICAgUkVMRUFTRV9BU1NFUlQoY2xhc3NJ
bmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGZ1bmN0aW9uKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyk7CkBAIC0yODMsNiArMzA1LDE3IEBAIFBhc3NSZWZQ
dHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbWVudENvZGVCbG9ja0Zv
cigKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBpZiAoY2xhc3NJbmZvKCkg
PT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgeworICAgICAgICBSRUxFQVNFX0FT
U0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsK
KyAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogYmFzZWxpbmUgPSBzdGF0aWNfY2FzdDxN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oCisgICAgICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVs
ZVByb2dyYW1Db2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKTsKKyAgICAgICAgUmVmUHRyPE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2s+IHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKAorICAgICAgICAgICAgQ29kZUJsb2NrOjpDb3B5UGFyc2VkQmxvY2ssICpiYXNl
bGluZSkpOworICAgICAgICByZXN1bHQtPnNldEFsdGVybmF0aXZlKGJhc2VsaW5lKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBSRUxFQVNFX0FTU0VSVChjbGFzc0luZm8o
KSA9PSBGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwogICAgIEZ1
bmN0aW9uQ29kZUJsb2NrKiBiYXNlbGluZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2Nr
Kj4oCkBAIC0zODMsNiArNDE2LDQyIEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCkt
PlByb2dyYW1FeGVjdXRhYmxlOjp+UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIH0KIAorY29uc3QgQ2xh
c3NJbmZvIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIH07CisKK01vZHVsZVByb2dyYW1FeGVjdXRh
YmxlOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5tb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxz
ZSkKK3sKKyAgICBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IDA7CisgICAgbV90eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0ID0gc291cmNlLmxlbmd0aCgpIC0gMTsKKyAgICBpZiAoZXhlYy0+dm0o
KS50eXBlUHJvZmlsZXIoKSB8fCBleGVjLT52bSgpLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKKyAg
ICAgICAgZXhlYy0+dm0oKS5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVj
dXRlZFJhbmdlKHNvdXJjZUlEKCksIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0LCBtX3R5cGVQ
cm9maWxpbmdFbmRPZmZzZXQpOworfQorCitNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAg
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpOworICAgIGV4ZWN1dGFibGUtPmZpbmlzaENy
ZWF0aW9uKGV4ZWMtPnZtKCksIG1vZHVsZVJlY29yZCk7CisKKyAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGUgPSBnbG9iYWxPYmplY3Qt
PmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soZXhlYywgZXhlY3V0YWJsZSk7CisgICAgaWYg
KCF1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5zZXQoZXhlYy0+
dm0oKSwgZXhlY3V0YWJsZSwgdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZSk7CisKKyAgICByZXR1
cm4gZXhlY3V0YWJsZTsKK30KKwordm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBtX21vZHVsZVJlY29yZC5zZXQodm0sIHRoaXMs
IG1vZHVsZVJlY29yZCk7Cit9CisKK3ZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKj4oY2VsbCktPk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp+TW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUoKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZv
ID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAKIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCAKQEAgLTUxNSw2ICs1ODQsNDcgQEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6Y2xlYXJD
b2RlKCkKICAgICBCYXNlOjpjbGVhckNvZGUoKTsKIH0KIAorSlNPYmplY3QqIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgUGFyc2Vy
RXJyb3IgZXJyb3I7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9
IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKKyAgICAgICAgdm0sIG1fc291cmNlLCBJZGVudGlm
aWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCisgICAgICAgIEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBl
cnJvcik7CisgICAgaWYgKG1vZHVsZVByb2dyYW1Ob2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKKyAgICByZXR1cm4gZXJyb3IudG9FcnJv
ck9iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX3NvdXJjZSk7Cit9CisKK3ZvaWQgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU6OnVubGlua0NhbGxzKCkKK3sKKyNpZiBFTkFCTEUoSklUKQorICAg
IGlmICghbV9qaXRDb2RlRm9yQ2FsbCkKKyAgICAgICAgcmV0dXJuOworICAgIFJFTEVBU0VfQVNT
RVJUKG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7CisgICAgbV9tb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLT51bmxpbmtDYWxscygpOworI2VuZGlmCit9Cit2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZCk7CisgICAgaWYgKHRoaXNPYmplY3QtPm1fbW9kdWxl
UHJvZ3JhbUNvZGVCbG9jaykKKyAgICAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKK30KKwordm9pZCBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZTo6Y2xlYXJDb2RlKCkKK3sKKyAgICBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2sg
PSBudWxscHRyOworICAgIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7
CisgICAgQmFzZTo6Y2xlYXJDb2RlKCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlv
bkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKIHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0OwpAQCAtNTg5LDYgKzY5OSwx
NSBAQCB2b2lkIEV4ZWN1dGFibGVCYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAg
ICAgICAgICAgICBvdXQucHJpbnQoIlByb2dyYW1FeGVjdXRhYmxlIHcvbyBDb2RlQmxvY2siKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmIChjbGFzc0luZm8oKSA9PSBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4ocmVhbFRo
aXMpOworICAgICAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2Rl
QmxvY2soKSkKKyAgICAgICAgICAgIG91dC5wcmludCgqY29kZUJsb2NrKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgb3V0LnByaW50KCJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSB3L28gQ29k
ZUJsb2NrIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbiA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihyZWFsVGhpcyk7
CiAgICAgaWYgKCFmdW5jdGlvbi0+ZWl0aGVyQ29kZUJsb2NrKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYjUxMzU0N2QwODMxY2E5NTE0MDkwM2Zj
MDAyNjExMzBhM2M2NWY5Yi4uYTY5OThmYWUzMGRiOTE2MzY0OWJmNWY1OGYyYjVkZjJiNjQ1NDJm
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNTIs
NiArNTIsOCBAQCBjbGFzcyBFdmFsQ29kZUJsb2NrOwogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7
CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwor
Y2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOwogY2xh
c3MgSlNTY29wZTsKICAgICAKIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlv
biwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CkBAIC0xMDQsNiArMTA2LDExIEBAIGNsYXNzIEV4
ZWN1dGFibGVCYXNlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICByZXR1cm4gdHlw
ZSgpID09IFByb2dyYW1FeGVjdXRhYmxlVHlwZTsKICAgICB9CisgICAgYm9vbCBpc01vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlKCkgPT0gTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGVUeXBlOworICAgIH0KKwogCiAgICAgYm9vbCBpc0hvc3RGdW5jdGlv
bigpIGNvbnN0CiAgICAgewpAQCAtNTM3LDYgKzU0NCw1NiBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0
YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBSZWZQdHI8UHJvZ3Jh
bUNvZGVCbG9jaz4gbV9wcm9ncmFtQ29kZUJsb2NrOwogfTsKIAorY2xhc3MgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFNjcmlw
dEV4ZWN1dGFibGUgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAgICBz
dGF0aWMgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CisKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2soKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsKKyAgICB9
CisKKyAgICBKU09iamVjdCogY2hlY2tTeW50YXgoRXhlY1N0YXRlKik7CisKKyAgICBQYXNzUmVm
UHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdl
bmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOwor
CisgICAgdm9pZCB1bmxpbmtDYWxscygpOworCisgICAgdm9pZCBjbGVhckNvZGUoKTsKKworICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxz
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7
IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQorCitwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOworCisgICAgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYpOworCisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJp
ZXI8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiBtX3VubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazsKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVj
b3JkOworICAgIFJlZlB0cjxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiBtX21vZHVsZVByb2dyYW1D
b2RlQmxvY2s7Cit9OworCiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtNjgxLDYgKzczOCw4IEBAIGlubGluZSB2b2lk
IEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGVWaXJ0dWFsKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRh
YmxlKQogICAgICAgICByZXR1cm4ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oZXhlY3V0YWJs
ZSktPmNsZWFyQ29kZSgpOwogICAgIGNhc2UgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZToKICAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xlYXJD
b2RlKCk7CisgICAgY2FzZSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU6CisgICAgICAgIHJl
dHVybiBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xlYXJD
b2RlKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxOYXRpdmVFeGVjdXRh
YmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5M2VlMWZkNzRiOTky
NTkwNDFjYTFlODYyZjYzMTFmNjUwOTgzODlhLi4yZDIyOWJlNjk0NDlkNmU4MmI1MjhmZWVkZmFl
MDNiNTJkOTdmMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC04NCw2ICs4NCw4IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAj
aW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAi
SlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCkBAIC0zMTAsNiArMzEyLDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVEYXRh
VmlldyldLnN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTRGF0YVZpZXc6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVEYXRhVmlldyldLnByb3RvdHlw
ZS5nZXQoKSkpOwogICAgIAogICAgIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykp
OworICAgIG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVs
ZUVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKICAgICBtX3N0cmljdEV2
YWxBY3RpdmF0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3RyaWN0RXZhbEFjdGl2YXRpb246
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX2RlYnVnZ2VyU2Nv
cGVTdHJ1Y3R1cmUuc2V0KG1fdm0sIHRoaXMsIERlYnVnZ2VyU2NvcGU6OmNyZWF0ZVN0cnVjdHVy
ZShtX3ZtLCB0aGlzKSk7CiAgICAgbV93aXRoU2NvcGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBK
U1dpdGhTY29wZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwpAQCAtMzQ2
LDYgKzM0OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fcmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlKHZtLCAqdGhpcykpOwogCiAgICAgbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICAKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgbV93YXNtTW9kdWxlU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNXQVNNTW9kdWxl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKQEAgLTUyMCw2ICs1MjQsNyBAQCBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJO
YW1lICMjIENvbnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYlByaXZhdGVOYW1l
KCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1Byb21p
c2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZSh2
bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPk1hcFByaXZhdGVOYW1lLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+U2V0UHJpdmF0ZU5hbWUsIHNldENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMs
IFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApAQCAtNzg5LDYgKzc5NCw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRo
U2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N0cmlj
dEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJl
KTsKQEAgLTgxNiw2ICs4MjIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jb25zb2xlU3RydWN0dXJlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CkBA
IC05MzAsNiArOTM3LDI1IEBAIFVubGlua2VkRXZhbENvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6
OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUsCiAgICAgcmV0dXJuIHVu
bGlua2VkQ29kZUJsb2NrOwogfQogCitVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIEpT
R2xvYmFsT2JqZWN0OjpjcmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSkKK3sKKyAgICBQYXJz
ZXJFcnJvciBlcnJvcjsKKyAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlID0gaGFzRGVidWdn
ZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKKyAgICBQcm9maWxlck1vZGUgcHJvZmls
ZXJNb2RlID0gaGFzUHJvZmlsZXIoKSA/IFByb2ZpbGVyT24gOiBQcm9maWxlck9mZjsKKyAgICBV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gdm0oKS5j
b2RlQ2FjaGUoKS0+Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKKyAgICAgICAgdm0oKSwgZXhl
Y3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1
aWx0aW4sIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisKKyAgICBpZiAoaGFz
RGVidWdnZXIoKSkKKyAgICAgICAgZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGNhbGxGcmFtZSwg
ZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5tZXNz
YWdlKCkpOworCisgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgeworICAgICAgICB0aHJvd1ZNRXJy
b3IoY2FsbEZyYW1lLCBlcnJvci50b0Vycm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJj
ZSgpKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiB1bmxp
bmtlZENvZGVCbG9jazsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0UmVtb3RlRGVidWdn
aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCAyNjEzMTZlODVkMmJhZmJkZWQ3ODQzMGI2ZjhmOGViYTVhZDg3NzZlLi44YzJlM2NhNGVlNGNm
MmJlMWYyOWIxMmUwN2ZiNDU1MzAwNzFlYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTc4LDYgKzc4LDcgQEAgY2xhc3MgSlNTdGFj
azsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1pY3JvdGFzazsKIGNsYXNz
IE1vZHVsZUxvYWRlck9iamVjdDsKK2NsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogY2xh
c3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yOwogY2xh
c3MgUHJvZ3JhbUNvZGVCbG9jazsKQEAgLTg1LDYgKzg2LDcgQEAgY2xhc3MgUHJvZ3JhbUV4ZWN1
dGFibGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKIGNsYXNzIFJlZ0V4cFByb3RvdHlwZTsK
IGNsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7
CiBjbGFzcyBOdWxsR2V0dGVyRnVuY3Rpb247CiBjbGFzcyBOdWxsU2V0dGVyRnVuY3Rpb247CiBl
bnVtIGNsYXNzIFRoaXNURFpNb2RlOwpAQCAtMjMwLDYgKzIzMiw3IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmU7CisgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZTsKQEAgLTI2
Miw2ICsyNjUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVz
dWx0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9kdWxlUmVj
b3JkU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9kdWxlTmFtZXNw
YWNlT2JqZWN0U3RydWN0dXJlOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmU7CiAjZW5kaWYKQEAgLTQ0Niw2
ICs0NTAsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJp
Y3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0RXZhbEFj
dGl2YXRpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFjdGl2YXRpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZS5nZXQo
KTsgfQorICAgIFN0cnVjdHVyZSogbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiBkaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdEFy
Z3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc2NvcGVkQXJndW1lbnRz
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0
KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG91dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CkBAIC00OTks
NiArNTA0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdCB7CiAgICAgc3RhdGljIHB0cmRpZmZfdCBpdGVyYXRvclJlc3VsdFN0cnVjdHVy
ZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9pdGVy
YXRvclJlc3VsdFN0cnVjdHVyZSk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSog
bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVO
YW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAgICAgU3RydWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93
YXNtTW9kdWxlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYKQEAgLTY0MSw2ICs2NDcsNyBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
IAogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlUHJvZ3JhbUNvZGVCbG9jayhD
YWxsRnJhbWUqLCBQcm9ncmFtRXhlY3V0YWJsZSosIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKICAg
ICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiwg
RXZhbEV4ZWN1dGFibGUqLCBUaGlzVERaTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCop
OworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayhDYWxsRnJhbWUqLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSopOwogCiBwcm90
ZWN0ZWQ6CiAgICAgc3RydWN0IEdsb2JhbFByb3BlcnR5SW5mbyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCA5NTE2
MzE4ZDcwMTY5ZTNkZDhjMmJlZjc4MzMxMjU2NzVjNWUyMThiLi40NDhlYTQzMWI3YjdjOTgyNjJk
NDEwYmYwMWY4NDkzNzFkOGFiNTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiBjbGFzcyBSZWdpc3RlcjsKICAgICAKIGNsYXNzIEpTTGV4aWNhbEVudmlyb25t
ZW50IDogcHVibGljIEpTRW52aXJvbm1lbnRSZWNvcmQgewotcHJpdmF0ZToKK3Byb3RlY3RlZDoK
ICAgICBKU0xleGljYWxFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1i
b2xUYWJsZSopOwogICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjRmY2FhYTkx
YjkxYTZmMjZiYTBjOWU2ZGUwYjJmYTM3NmIwZGZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKQEAgLTAsMCAr
MSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKwor
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZUVudmlyb25tZW50OjpzX2luZm8gPSB7ICJK
U01vZHVsZUVudmlyb25tZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU01vZHVsZUVudmlyb25tZW50KSB9OworCitKU01vZHVsZUVudmlyb25tZW50KiBKU01vZHVs
ZUVudmlyb25tZW50OjpjcmVhdGUoCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFsdWUg
aW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIC8vIEpT
TGV4aWNhbEVudmlyb25tZW50IChwcmVjaXNlbHksIEpTRW52aXJvbm1lbnRSZWNvcmQpIGhhcyB0
aGUgc3RvcmFnZSB0byBzdG9yZSB0aGUgdmFyaWFibGUgc2xvdHMgYWZ0ZXIgdGhlIGl0cyBjbGFz
cyBzdG9yYWdlLgorICAgIC8vIEJlY2F1c2UgdGhlIG9mZnNldCBvZiB0aGUgdmFyaWFibGUgc2xv
dHMgYXJlIGZpeGVkIGluIHRoZSBKU0Vudmlyb25tZW50UmVjb3JkLCBpbmhlcml0dGluZyB0aGVz
ZSBjbGFzcyBhbmQgYWRkaW5nIG5ldyBtZW1iZXIgZmllbGQgaXMgbm90IGFsbG93ZWQsCisgICAg
Ly8gdGhlIG5ldyBtZW1iZXIgd2lsbCBvdmVybGFwIHRoZSB2YXJpYWJsZSBzbG90cy4KKyAgICAv
LyBUbyBrZWVwIHRoZSBKU01vZHVsZUVudmlyb25tZW50IGNvbXBhdGlibGUgdG8gdGhlIEpTTGV4
aWNhbEVudmlyb25tZW50IGJ1dCBhZGQgdGhlIG5ldyBtZW1iZXIgdG8gc3RvcmUgdGhlIEpTTW9k
dWxlUmVjb3JkLCB3ZSBhZGRpdGlvbmFsbHkgYWxsb2NhdGUKKyAgICAvLyB0aGUgc3RvcmFnZSBh
ZnRlciB0aGUgdmFyaWFibGUgc2xvdHMuCisgICAgLy8KKyAgICAvLyBKU0xleGljYWxFbnZpcm9u
bWVudDoKKyAgICAvLyAgICAgWyBKU0xleGljYWxFbnZpcm9ubWVudCBdWyB2YXJpYWJsZSBzbG90
cyBdCisgICAgLy8KKyAgICAvLyBKU01vZHVsZUVudmlyb25tZW50OgorICAgIC8vICAgICBbIEpT
TGV4aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxlIHNsb3RzIF1bIGFkZGl0aW9uYWwgc2xvdHMg
Zm9yIEpTTW9kdWxlRW52aXJvbm1lbnQgXQorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHJlc3Vs
dCA9CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAgICAgICAgYWxs
b2NhdGVDZWxsPEpTTW9kdWxlRW52aXJvbm1lbnQ+KHZtLmhlYXAsIEpTTW9kdWxlRW52aXJvbm1l
bnQ6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSkpCisgICAgICAgIEpTTW9kdWxlRW52aXJv
bm1lbnQodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSk7CisgICAgcmVz
dWx0LT5maW5pc2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVs
ZVJlY29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlKTsK
KyAgICB0aGlzLT5tb2R1bGVSZWNvcmRTbG90KCkuc2V0KHZtLCB0aGlzLCBtb2R1bGVSZWNvcmQp
OworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5k
VmFsdWVzKHRoaXNPYmplY3QtPnZhcmlhYmxlcygpLCB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgp
LT5zY29wZVNpemUoKSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1vZHVsZVJl
Y29yZFNsb3QoKSk7Cit9CisKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICBj
b25zdCBhdXRvIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2
ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQo
KSkpOworICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRp
b246OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIGltcG9y
dGVkTW9kdWxlRW52aXJvbm1lbnQgPSByZXNvbHV0aW9uLm1vZHVsZVJlY29yZC0+bW9kdWxlRW52
aXJvbm1lbnQoKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHJlZGlyZWN0U2xvdChpbXBvcnRlZE1v
ZHVsZUVudmlyb25tZW50KTsKKyAgICAgICAgaWYgKGltcG9ydGVkTW9kdWxlRW52aXJvbm1lbnQt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QoaW1wb3J0ZWRNb2R1
bGVFbnZpcm9ubWVudCwgZXhlYywgcHJvcGVydHlOYW1lLCByZWRpcmVjdFNsb3QpKSB7CisgICAg
ICAgICAgICBKU1ZhbHVlIHZhbHVlID0gcmVkaXJlY3RTbG90LmdldFZhbHVlKGV4ZWMsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCByZWRpcmVjdFNsb3QuYXR0cmlidXRlcygpLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK3ZvaWQg
SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
QXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2RlKQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIGlm
IChwcm9wZXJ0eU5hbWVzQXJyYXkuaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKSkgeworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+aW1w
b3J0RW50cmllcygpKSB7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IHBh
aXIudmFsdWU7CisgICAgICAgICAgICBpZiAoIWltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKGV4ZWMt
PnZtKCkpKQorICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNBcnJheS5hZGQoaW1wb3J0RW50
cnkubG9jYWxOYW1lKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gQmFzZTo6Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXNBcnJh
eSwgbW9kZSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgLy8g
QWxsIGltcG9ydGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCisgICAgY29uc3QgYXV0byByZXNv
bHV0aW9uID0gdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywg
SWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAo
cmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNv
bHZlZCkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKK30KKworYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9k
dWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICAvLyBBbGwgaW1wb3J0ZWQgYmluZGluZ3MgYXJl
IGltbXV0YWJsZS4KKyAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1
bGVSZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMs
IHByb3BlcnR5TmFtZS51aWQoKSkpOworICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1
bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjll
NWUxMmVlZmM1NDhiOWVlNmViZjMxM2ZhN2E4ZDRjNzE2OTE0ZjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKQEAg
LTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBKU01vZHVsZUVudmlyb25tZW50X2gKKyNkZWZpbmUgSlNNb2R1bGVFbnZp
cm9ubWVudF9oCisKKyNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUg
IkpTTW9kdWxlUmVjb3JkLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBSZWdpc3RlcjsK
KworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0xleGljYWxFbnZpcm9ubWVu
dCB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworcHVibGljOgorICAgIHR5cGVkZWYgSlNMZXhpY2FsRW52aXJvbm1lbnQgQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXM7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVFbnZpcm9ubWVudCogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgSlNWYWx1ZSBpbml0aWFsVmFs
dWUsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVFbnZpcm9ubWVudCog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogY3Vy
cmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFsdWUgaW5pdGlhbFZhbHVl
LCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQorICAgIHsKKyAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKCk7
CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1i
b2xUYWJsZSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOworICAgIH0KKworICAgIERFQ0xB
UkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCksIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6
ZV90IG9mZnNldE9mTW9kdWxlUmVjb3JkKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFy
cmllcjxKU01vZHVsZVJlY29yZD4pPihCYXNlOjphbGxvY2F0aW9uU2l6ZShzeW1ib2xUYWJsZSkp
OworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoU3ltYm9sVGFibGUq
IHN5bWJvbFRhYmxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTW9kdWxlUmVjb3Jk
KHN5bWJvbFRhYmxlKSArIHNpemVvZihXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+KTsKKyAg
ICB9CisKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBtb2R1bGVSZWNvcmRTbG90KCkuZ2V0KCk7CisgICAgfQorCisgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0
aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKworcHJpdmF0
ZToKKyAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5
bWJvbFRhYmxlKik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNWYWx1ZSBpbml0
aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPEpTTW9k
dWxlUmVjb3JkPiYgbW9kdWxlUmVjb3JkU2xvdCgpCisgICAgeworICAgICAgICByZXR1cm4gKmJp
dHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPEpTTW9kdWxlUmVjb3JkPio+KGJpdHdpc2VfY2Fz
dDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZk1vZHVsZVJlY29yZChzeW1ib2xUYWJsZSgpKSk7Cisg
ICAgfQorCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOworfTsKKworaW5saW5lIEpTTW9kdWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxlRW52aXJvbm1l
bnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogY3VycmVudFNjb3BlLCBT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGN1cnJl
bnRTY29wZSwgc3ltYm9sVGFibGUpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gSlNNb2R1bGVFbnZpcm9ubWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGQyNzNmY2FjNzRlZjBkZjJkZDAxY2Y4NDUwMjU5NjdlZTVlZjVjMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmNwcApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5oIgorCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1
ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3ltYm9sSXRlcmF0b3IoRXhlY1N0YXRlKik7CisKK2Nv
bnN0IENsYXNzSW5mbyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6c19pbmZvID0geyAiTW9kdWxl
TmFtZXNwYWNlT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU01vZHVsZU5hbWVzcGFjZU9iamVjdCkgfTsKKworCitKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllclNldCYgZXhwb3J0cykKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKKyAgICAsIG1fZXhwb3J0cyhleHBvcnRzKQoreworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBtX21vZHVs
ZVJlY29yZC5zZXQodm0sIHRoaXMsIG1vZHVsZVJlY29yZCk7CisgICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgbW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0U3ltYm9sSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKworICAgIC8vIGh0dHA6Ly93d3cuZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4
b3RpYy1vYmplY3RzLWdldHByb3RvdHlwZW9mCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9i
amVjdHMtc2V0cHJvdG90eXBlb2YtdgorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3Rz
LWlzZXh0ZW5zaWJsZQorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXByZXZlbnRl
eHRlbnNpb25zCisgICAgcHJldmVudEV4dGVuc2lvbnModm0pOworfQorCit2b2lkIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVj
dCo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojp+SlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QoKTsKK30KKwordm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3Jk
KTsKK30KKworYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJu
YXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2Jq
ZWN0cy1nZXRvd25wcm9wZXJ0eS1wCisKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworCisgICAg
aWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
CisgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2V4cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVp
ZCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVs
ZVJlY29yZCA9IHRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkLmdldCgpOworCisgICAgSlNNb2R1
bGVSZWNvcmQ6OlJlc29sdmVTZXQgcmVzb2x2ZVNldDsKKyAgICBJZGVudGlmaWVyU2V0IGV4cG9y
dFN0YXJTZXQ7CisgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gbW9kdWxlUmVjb3JkLT5yZXNv
bHZlRXhwb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVp
ZCgpKSwgcmVzb2x2ZVNldCwgZXhwb3J0U3RhclNldCk7CisgICAgQVNTRVJUKHJlc29sdXRpb24u
dHlwZSAhPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQgJiYgcmVz
b2x1dGlvbi50eXBlICE9IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3Vv
dXMpOworICAgIEpTTW9kdWxlUmVjb3JkKiB0YXJnZXRNb2R1bGUgPSByZXNvbHV0aW9uLm1vZHVs
ZVJlY29yZDsKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0YXJnZXRFbnZpcm9ubWVudCA9IHRh
cmdldE1vZHVsZS0+bW9kdWxlRW52aXJvbm1lbnQoKTsKKyAgICBQcm9wZXJ0eVNsb3QgdHJhbXBv
bGluZVNsb3QodGFyZ2V0RW52aXJvbm1lbnQpOworICAgIGlmICghdGFyZ2V0RW52aXJvbm1lbnQt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGFyZ2V0RW52aXJv
bm1lbnQsIGV4ZWMsIHJlc29sdXRpb24ubG9jYWxOYW1lLCB0cmFtcG9saW5lU2xvdCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTVmFsdWUgdmFsdWUgPSB0cmFtcG9saW5lU2xvdC5n
ZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0
aW9uKCkpOworICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgRG9udERlbGV0ZSwgdmFsdWUp
OworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojpw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXNldC1wLXYtcmVj
ZWl2ZXIKKyAgICByZXR1cm47Cit9CisKK2Jvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1kZWxldGUtcAor
ICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5tX2V4cG9y
dHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKK30KKwordm9pZCBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
IG1vZGUpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtb3ducHJvcGVydHlr
ZXlzCisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG5hbWUg
OiB0aGlzT2JqZWN0LT5tX2V4cG9ydHMpCisgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKG5hbWUu
Z2V0KCkpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30KKworYm9vbCBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWRlZmluZW93
bnByb3BlcnR5LXAtZGVzYworICAgIGlmIChzaG91bGRUaHJvdykKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBv
biBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN5
bWJvbEl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJ8dGhpc3wgc2hvdWxkIGJlIGFuIG9iamVjdCIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZSgpLCBhc09iamVj
dCh0aGlzVmFsdWUpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmFkNzcyMTExNjlkZTA5NDA3ODZlZmFjYzY3ODRlZDdiMjlmNmZiYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3RfaAorI2Rl
ZmluZSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJs
ZU9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CisK
K2NsYXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0
eU5hbWVzOworCisgICAgc3RhdGljIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCwgY29uc3QgSWRlbnRpZmllclNl
dCYgZXhwb3J0cykKKyAgICB7CisgICAgICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4o
ZXhlYy0+dm0oKS5oZWFwKSkgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QoZXhlYy0+dm0oKSwgc3Ry
dWN0dXJlLCBleHBvcnRzKTsKKyAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT52
bSgpLCBnbG9iYWxPYmplY3QsIG1vZHVsZVJlY29yZCk7CisgICAgICAgIHJldHVybiBvYmplY3Q7
CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisKKyAg
ICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVSZWNvcmQqKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdChWTSYsIFN0cnVj
dHVyZSosIGNvbnN0IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpOworCitwcml2YXRlOgorICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgSWRlbnRpZmllclNldCBtX2V4cG9ydHM7
CisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlUmVjb3JkPiBtX21vZHVsZVJlY29yZDsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Rf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3Bw
CmluZGV4IGU3MDJmYWZhNDRlNTA2ZjlkNDdmZWRlNjMzNjY0YTczOGMxOWI0MGIuLmMzZDA2YjYy
NjAyMmFkZGU5YzEzNjI4YjlkNWM4M2MxMThhZGY0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTIwLDE1ICsyMCwyMSBAQAog
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNN
b2R1bGVSZWNvcmQuaCIKIAorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJs
ZS5oIgogI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNNYXAu
aCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDEsMTIgKzQ3
LDI2IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIHRo
aXNPYmplY3QtPkpTTW9kdWxlUmVjb3JkOjp+SlNNb2R1bGVSZWNvcmQoKTsKIH0KIAotCiB2b2lk
IEpTTW9kdWxlUmVjb3JkOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICBwdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoInJlZ2lz
dHJ5RW50cnkiKSksIGpzVW5kZWZpbmVkKCkpOworICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sIEFTQ0lJTGl0ZXJhbCgiZXZhbHVhdGVkIikpLCBqc0Jvb2xlYW4o
ZmFsc2UpKTsKKworICAgIG1fZGVwZW5kZW5jaWVzTWFwLnNldCh2bSwgdGhpcywgSlNNYXA6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KCktPm1hcFN0cnVjdHVyZSgpKSk7CisgICAgcHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJkZXBlbmRlbmNp
ZXNNYXAiKSksIG1fZGVwZW5kZW5jaWVzTWFwLmdldCgpKTsKK30KKwordm9pZCBKU01vZHVsZVJl
Y29yZDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEpTTW9kdWxlUmVjb3JkKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlUmVjb3Jk
Kj4oY2VsbCk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudCk7Cisg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVwZW5kZW5jaWVzTWFwKTsK
KyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5tX2xpbmtlZE1vZHVsZXMuZGF0
YSgpLCB0aGlzT2JqZWN0LT5tX2xpbmtlZE1vZHVsZXMuc2l6ZSgpKTsKIH0KIAogYXV0byBKU01v
ZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4
cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkKQEAgLTY0LDYgKzg0LDI1OSBA
QCBhdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3QoY29uc3Qg
SWRlbnRpZmllciYgZXhwb3J0TmFtZSwgYwogICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6
OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBpbXBvcnROYW1lLCBJZGVudGlmaWVy
KCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07CiB9CiAKK3N0YXRpYyBKU1ZhbHVlIGlk
ZW50aWZpZXJUb0pTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQoreworICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVy
biBTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKmlk
ZW50aWZpZXIuaW1wbCgpKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKCZleGVjLT52bSgpLCBpZGVu
dGlmaWVyLmltcGwoKSk7Cit9CisKK0pTTW9kdWxlUmVjb3JkKiBKU01vZHVsZVJlY29yZDo6aG9z
dFJlc29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZU5hbWUpCit7CisgICAgSlNWYWx1ZSBtb2R1bGVOYW1lVmFsdWUgPSBpZGVudGlmaWVy
VG9KU1ZhbHVlKGV4ZWMsIG1vZHVsZU5hbWUpOworICAgIEpTVmFsdWUgcGFpciA9IG1fZGVwZW5k
ZW5jaWVzTWFwLT5KU01hcDo6Z2V0KGV4ZWMsIG1vZHVsZU5hbWVWYWx1ZSk7CisgICAgcmV0dXJu
IGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KHBhaXIuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgInZhbHVlIikpKTsKK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6cmVzb2x2
ZUltcG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSkgLT4g
UmVzb2x1dGlvbgoreworICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2ltcG9ydEVudHJpZXMu
ZmluZChsb2NhbE5hbWUuaW1wbCgpKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9pbXBvcnRFbnRy
aWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6
Ok5vdEZvdW5kLCBtb2R1bGVLZXkoKSwgdGhpcywgSWRlbnRpZmllcigpIH07CisKKyAgICBjb25z
dCBhdXRvJiBpbXBvcnRFbnRyeSA9IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoaW1wb3J0RW50
cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsg
UmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQsIG1vZHVsZUtleSgpLCB0aGlzLCBJZGVudGlmaWVy
KCkgfTsKKworICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZSA9IGhvc3RSZXNvbHZl
SW1wb3J0ZWRNb2R1bGUoZXhlYywgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCk7CisgICAgUmVz
b2x2ZVNldCByZXNvbHZlU2V0OworICAgIElkZW50aWZpZXJTZXQgZXhwb3J0U3RhclNldDsKKyAg
ICByZXR1cm4gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnku
aW1wb3J0TmFtZSwgcmVzb2x2ZVNldCwgZXhwb3J0U3RhclNldCk7Cit9CisKK2F1dG8gSlNNb2R1
bGVSZWNvcmQ6OnJlc29sdmVFeHBvcnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBleHBvcnROYW1lLCBSZXNvbHZlU2V0JiByZXNvbHZlU2V0LCBJZGVudGlmaWVyU2V0JiBzdGFy
U2V0KSAtPiBSZXNvbHV0aW9uCit7CisgICAgaWYgKCFyZXNvbHZlU2V0LmFkZChSZXNvbHZlUXVl
cnkobW9kdWxlS2V5KCksIGV4cG9ydE5hbWUpKS5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4g
UmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kLCBtb2R1bGVLZXkoKSwgdGhp
cywgSWRlbnRpZmllcigpIH07CisKKyAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9leHBvcnRF
bnRyaWVzLmZpbmQoZXhwb3J0TmFtZS5pbXBsKCkpOworICAgIGlmIChpdGVyYXRvciAhPSBtX2V4
cG9ydEVudHJpZXMuZW5kKCkpIHsKKyAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBp
dGVyYXRvci0+dmFsdWU7CisgICAgICAgIHN3aXRjaCAoZXhwb3J0RW50cnkudHlwZSkgeworICAg
ICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6CisgICAg
ICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6Cisg
ICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVk
LCBtb2R1bGVLZXkoKSwgdGhpcywgZXhwb3J0RW50cnkubG9jYWxOYW1lIH07CisKKyAgICAgICAg
Y2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0OiB7CisgICAg
ICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGVSZWNvcmQgPSBob3N0UmVzb2x2
ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGV4cG9ydEVudHJ5Lm1vZHVsZU5hbWUpOworICAgICAgICAg
ICAgY29uc3QgYXV0byBpbmRpcmVjdFJlc29sdXRpb24gPSBpbXBvcnRlZE1vZHVsZVJlY29yZC0+
cmVzb2x2ZUV4cG9ydChleGVjLCBleHBvcnROYW1lLCByZXNvbHZlU2V0LCBzdGFyU2V0KTsKKyAg
ICAgICAgICAgIGlmIChpbmRpcmVjdFJlc29sdXRpb24udHlwZSAhPSBSZXNvbHV0aW9uOjpUeXBl
OjpOb3RGb3VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kaXJlY3RSZXNvbHV0aW9uOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChleHBvcnROYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZWZhdWx0S2V5d29yZCkKKyAg
ICAgICAgcmV0dXJuIFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvciwgbW9kdWxl
S2V5KCksIHRoaXMsIElkZW50aWZpZXIoKSB9OworCisgICAgaWYgKCFzdGFyU2V0LmFkZChtb2R1
bGVLZXkoKS5pbXBsKCkpLmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsg
UmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQsIG1vZHVsZUtleSgpLCB0aGlzLCBJZGVudGlmaWVy
KCkgfTsKKworICAgIGF1dG8gc3RhclJlc29sdXRpb24gPSBSZXNvbHV0aW9uIHsgUmVzb2x1dGlv
bjo6VHlwZTo6Tm90Rm91bmQsIG1vZHVsZUtleSgpLCB0aGlzLCBJZGVudGlmaWVyKCkgfTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIHN0YXJNb2R1bGVOYW1lIDogbV9zdGFyRXhwb3J0RW50cmllcykg
eworICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGVSZWNvcmQgPSBob3N0UmVz
b2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgc3Rhck1v
ZHVsZU5hbWUuZ2V0KCkpKTsKKyAgICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gaW1wb3J0
ZWRNb2R1bGVSZWNvcmQtPnJlc29sdmVFeHBvcnQoZXhlYywgZXhwb3J0TmFtZSwgcmVzb2x2ZVNl
dCwgc3RhclNldCk7CisgICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gUmVzb2x1dGlvbjo6
VHlwZTo6QW1iaWd1b3VzIHx8IHJlc29sdXRpb24udHlwZSA9PSBSZXNvbHV0aW9uOjpUeXBlOjpF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiByZXNvbHV0aW9uOworICAgICAgICBpZiAocmVzb2x1
dGlvbi50eXBlICE9IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKSB7CisgICAgICAgICAgICBp
ZiAoc3RhclJlc29sdXRpb24udHlwZSA9PSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCkKKyAg
ICAgICAgICAgICAgICBzdGFyUmVzb2x1dGlvbiA9IHJlc29sdXRpb247CisgICAgICAgICAgICBl
bHNlIGlmIChzdGFyUmVzb2x1dGlvbi5tb2R1bGVLZXkgIT0gcmVzb2x1dGlvbi5tb2R1bGVLZXkg
fHwgc3RhclJlc29sdXRpb24ubG9jYWxOYW1lICE9IHJlc29sdXRpb24ubG9jYWxOYW1lKQorICAg
ICAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1
b3VzLCBJZGVudGlmaWVyKCksIG51bGxwdHIsIElkZW50aWZpZXIoKSB9OworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIHN0YXJSZXNvbHV0aW9uOworfQorCit2b2lkIEpTTW9kdWxlUmVj
b3JkOjpnZXRFeHBvcnRlZE5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgSWRlbnRpZmllclNldCYgZXhw
b3J0U3RhclNldCwgSWRlbnRpZmllclNldCYgZXhwb3J0ZWROYW1lcywgSW5jbHVkZURlZmF1bHRN
b2RlIG1vZGUpCit7CisgICAgaWYgKGV4cG9ydFN0YXJTZXQuY29udGFpbnMobW9kdWxlS2V5KCku
aW1wbCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGV4cG9ydFN0YXJTZXQuYWRkKG1vZHVsZUtl
eSgpLmltcGwoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9leHBvcnRFbnRyaWVz
KSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAg
ICAgc3dpdGNoIChleHBvcnRFbnRyeS50eXBlKSB7CisgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNv
cmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAgICAgICAgY2FzZSBKU01vZHVsZVJlY29y
ZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0OgorICAgICAgICAgICAgaWYgKG1vZGUgPT0g
SW5jbHVkZURlZmF1bHRNb2RlOjpJbmNsdWRlIHx8IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZWZh
dWx0S2V5d29yZCAhPSBleHBvcnRFbnRyeS5leHBvcnROYW1lKQorICAgICAgICAgICAgICAgIGV4
cG9ydGVkTmFtZXMuYWRkKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpU
eXBlOjpOYW1lc3BhY2U6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZvciAoY29uc3QgYXV0byYgc3Rhck1vZHVsZU5hbWUgOiBtX3N0YXJFeHBvcnRFbnRyaWVz
KSB7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiByZXF1ZXN0ZWRNb2R1bGVSZWNvcmQgPSBob3N0
UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgc3Rh
ck1vZHVsZU5hbWUuZ2V0KCkpKTsKKyAgICAgICAgcmVxdWVzdGVkTW9kdWxlUmVjb3JkLT5nZXRF
eHBvcnRlZE5hbWVzKGV4ZWMsIGV4cG9ydFN0YXJTZXQsIGV4cG9ydGVkTmFtZXMsIEluY2x1ZGVE
ZWZhdWx0TW9kZTo6RXhjbHVkZSk7CisgICAgfQorfQorCitKU01vZHVsZU5hbWVzcGFjZU9iamVj
dCogSlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZShFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgaWYgKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KQorICAgICAgICByZXR1cm4gbV9tb2R1
bGVOYW1lc3BhY2VPYmplY3QuZ2V0KCk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIElkZW50aWZpZXJTZXQgZXhw
b3J0ZWROYW1lczsKKyAgICB7CisgICAgICAgIElkZW50aWZpZXJTZXQgZXhwb3J0U3RhclNldDsK
KyAgICAgICAgZ2V0RXhwb3J0ZWROYW1lcyhleGVjLCBleHBvcnRTdGFyU2V0LCBleHBvcnRlZE5h
bWVzLCBJbmNsdWRlRGVmYXVsdE1vZGU6OkluY2x1ZGUpOworICAgIH0KKworICAgIElkZW50aWZp
ZXJTZXQgdW5hbWJpZ3VvdXNOYW1lczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG5hbWUgOiBleHBv
cnRlZE5hbWVzKSB7CisgICAgICAgIFJlc29sdmVTZXQgcmVzb2x2ZVNldDsKKyAgICAgICAgSWRl
bnRpZmllclNldCBleHBvcnRTdGFyU2V0OworICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRpb24g
PSByZXNvbHZlRXhwb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgbmFtZS5nZXQo
KSksIHJlc29sdmVTZXQsIGV4cG9ydFN0YXJTZXQpOworICAgICAgICBzd2l0Y2ggKHJlc29sdXRp
b24udHlwZSkgeworICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgorICAg
ICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgdGhyb3dTeW50
YXhFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGNh
c2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAgIHVuYW1i
aWd1b3VzTmFtZXMuYWRkKG5hbWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQoZXhlYy0+dm0oKSwgdGhpcywg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCksIHRoaXMsIHVuYW1iaWd1
b3VzTmFtZXMpKTsKKyAgICByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3QuZ2V0KCk7Cit9
CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjKQoreworICAgIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGU6OmNyZWF0ZShleGVjLCBzb3VyY2VDb2RlKCksIHRoaXMpOworICAgIGlmICghZXhlY3V0YWJs
ZSkgeworICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGluc3RhbnRpYXRlRGVjbGFyYXRpb25zKGV4ZWMsIGV4ZWN1dGFibGUpOworfQor
CitzaXplX3QgSlNNb2R1bGVSZWNvcmQ6OmxpbmtNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU01v
ZHVsZVJlY29yZCogaW1wb3J0ZWQpCit7CisgICAgc2l6ZV90IGNhbmRpZGF0ZUluZGV4ID0gbV9s
aW5rZWRNb2R1bGVzLnNpemUoKTsKKyAgICBjb25zdCBhdXRvIGFkZFJlc3VsdCA9IG1fbGlua2Vk
TW9kdWxlTWFwLmFkZChpbXBvcnRlZC0+bW9kdWxlRW52aXJvbm1lbnQoKSwgY2FuZGlkYXRlSW5k
ZXgpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBtX2xpbmtlZE1v
ZHVsZXMuYXBwZW5kKFdyaXRlQmFycmllcjxVbmtub3duPigpKTsKKyAgICAgICAgbV9saW5rZWRN
b2R1bGVzLmxhc3QoKS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgaW1wb3J0ZWQpOworICAgICAgICBy
ZXR1cm4gY2FuZGlkYXRlSW5kZXg7CisgICAgfQorICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlOworfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0
aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSkKK3sKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jaygpOworICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IHVubGlu
a2VkQ29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpOworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1v
ZHVsZUVudmlyb25tZW50ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKGV4ZWMtPnZtKCks
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBzeW1ib2xUYWJsZSwganNURFpWYWx1ZSgpLCB0aGlzKTsKKworICAgIC8vIEluaXRpYWxpemUg
bm9uLWxleGljYWwgdmFyaWFibGVzIHdpdGggdW5kZWZpbmVkLgorICAgIGZvciAoY29uc3QgYXV0
byYgdmFyaWFibGUgOiBtX2RlY2xhcmVkVmFyaWFibGVzKSB7CisgICAgICAgIGNvbnN0IGF1dG8m
IGVudHJ5ID0gc3ltYm9sVGFibGUtPmdldCh2YXJpYWJsZS5rZXkuZ2V0KCkpOworICAgICAgICBW
YXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7CisgICAgICAgIGlmICghb2Zmc2V0
LmlzU3RhY2soKSkKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0KG1vZHVsZUVudmlyb25tZW50
LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlhYmxlLmtleS5nZXQoKSksIGpz
VW5kZWZpbmVkKCksIGZhbHNlKTsKKyAgICB9CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
CisgICAgLy8gSW5pdGlhbGl6ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCisgICAgZm9yIChzaXpl
X3QgaSA9IDAsIG51bWJlck9mRnVuY3Rpb25zID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9m
RnVuY3Rpb25EZWNscygpOyBpIDwgbnVtYmVyT2ZGdW5jdGlvbnM7ICsraSkgeworICAgICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgPSB1
bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOworICAgICAgICBjb25zdCBhdXRvJiBl
bnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQodW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUo
KS5pbXBsKCkpOworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7
CisgICAgICAgIGlmICghb2Zmc2V0LmlzU3RhY2soKSkgeworICAgICAgICAgICAgQVNTRVJUKCF1
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLmlzRW1wdHkoKSk7CisgICAgICAgICAg
ICBpZiAodm0udHlwZVByb2ZpbGVyKCkgfHwgdm0uY29udHJvbEZsb3dQcm9maWxlcigpKSB7Cisg
ICAgICAgICAgICAgICAgdm0uZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhl
Y3V0ZWRSYW5nZShtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291cmNlSUQoKSwKKyAgICAgICAg
ICAgICAgICAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdTdGFy
dE9mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB1bmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS0+bGluayh2bSwgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnNvdXJj
ZSgpKSwgbW9kdWxlRW52aXJvbm1lbnQpOworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQobW9k
dWxlRW52aXJvbm1lbnQsIGV4ZWMsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCks
IGZ1bmN0aW9uLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0
RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBpZiAoZXhwb3J0RW50cnkudHlwZSA9PSBKU01v
ZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0KSB7CisgICAgICAgICAgICBS
ZXNvbHZlU2V0IHJlc29sdmVTZXQ7CisgICAgICAgICAgICBJZGVudGlmaWVyU2V0IGV4cG9ydFN0
YXJTZXQ7CisgICAgICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0
KGV4ZWMsIGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUsIHJlc29sdmVTZXQsIGV4cG9ydFN0YXJTZXQp
OworICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKKyAgICAgICAgICAgIGNh
c2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICBjYXNlIFJlc29sdXRp
b246OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJp
Z3VvdXM6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVz
b2x2ZWQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpIHsKKyAgICAg
ICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBKU01vZHVs
ZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMs
IGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOworICAgICAgICBpZiAoaW1wb3J0RW50cnkuaXNO
YW1lc3BhY2UoZXhlYy0+dm0oKSkpIHsKKyAgICAgICAgICAgIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0KiBuYW1lc3BhY2VPYmplY3QgPSBpbXBvcnRlZE1vZHVsZS0+Z2V0TW9kdWxlTmFtZXNwYWNl
KGV4ZWMpOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5
bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9
IHN5bWJvbFRhYmxlLT5pbmxpbmVHZXQobG9ja2VyLCBpbXBvcnRFbnRyeS5sb2NhbE5hbWUuaW1w
bCgpKTsKKyAgICAgICAgICAgIFNjb3BlT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnNjb3BlT2Zmc2V0
KCk7CisgICAgICAgICAgICBBU1NFUlQobW9kdWxlRW52aXJvbm1lbnQtPmlzVmFsaWQob2Zmc2V0
KSk7CisgICAgICAgICAgICBtb2R1bGVFbnZpcm9ubWVudC0+dmFyaWFibGVBdChvZmZzZXQpLnNl
dChleGVjLT52bSgpLCBtb2R1bGVFbnZpcm9ubWVudCwgbmFtZXNwYWNlT2JqZWN0KTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJlc29sdmVTZXQgcmVzb2x2ZVNldDsKKyAgICAgICAg
ICAgIElkZW50aWZpZXJTZXQgZXhwb3J0U3RhclNldDsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8g
cmVzb2x1dGlvbiA9IGltcG9ydGVkTW9kdWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGltcG9ydEVu
dHJ5LmltcG9ydE5hbWUsIHJlc29sdmVTZXQsIGV4cG9ydFN0YXJTZXQpOworICAgICAgICAgICAg
c3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6
VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmln
dW91czoKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAg
ICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBt
X21vZHVsZUVudmlyb25tZW50LnNldChleGVjLT52bSgpLCB0aGlzLCBtb2R1bGVFbnZpcm9ubWVu
dCk7CisgICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywg
bW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOworfQorCitKU1ZhbHVlIEpTTW9kdWxlUmVjb3JkOjpl
eGVjdXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoIW1fbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxl
LmdldCgpLCBleGVjLCBtX21vZHVsZUVudmlyb25tZW50LmdldCgpKTsKKyAgICBtX21vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlLmNsZWFyKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGlj
IFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHVp
ZCkKIHsKICAgICBpZiAodWlkLT5pc1N5bWJvbCgpKQpAQCAtNzYsNyArMzQ5LDYgQEAgc3RhdGlj
IFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHJldHVy
biBwcmludGFibGVOYW1lKGlkZW50LmltcGwoKSk7CiB9CiAKLQogdm9pZCBKU01vZHVsZVJlY29y
ZDo6ZHVtcCgpCiB7CiAgICAgZGF0YUxvZygiXG5BbmFseXppbmcgTW9kdWxlUmVjb3JkIGtleSgi
LCBwcmludGFibGVOYW1lKG1fbW9kdWxlS2V5KSwgIilcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXggMDVkNjk0ZDNlM2ZlNTVhNTIx
YWYzNWRlODI2MTU5ODBmMDgwZTJlMC4uMGFiZGVkYTgwZjAyNjk4MmRlNzQ3YzQ0ZWUzOTg1M2Ri
Yzc0NzViZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5oCkBAIC0yOCwxNSArMjgsMjIgQEAKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIK
ICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK2Ns
YXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsK
K2NsYXNzIEpTTWFwOworY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CisKIC8vIEJhc2Vk
IG9uIHRoZSBTb3VyY2UgVGV4dCBNb2R1bGUgUmVjb3JkCiAvLyBodHRwOi8vd3d3LmVjbWEtaW50
ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc291cmNlLXRleHQtbW9kdWxlLXJlY29y
ZHMKIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsK
KyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIHR5
cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKIApAQCAtODEsMTggKzg4LDEzIEBAIGNs
YXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyBKU01vZHVsZVJlY29yZCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSkKKyAgICBzdGF0aWMgSlNNb2R1bGVS
ZWNvcmQqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlm
aWVyJiBtb2R1bGVLZXksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50JiBsZXhpY2FsVmFyaWFibGVzKQogICAgIHsKLSAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVSZWNvcmQ+KHZtLmhl
YXApKSBKU01vZHVsZVJlY29yZCh2bSwgc3RydWN0dXJlLCBtb2R1bGVLZXkpOworICAgICAgICBK
U01vZHVsZVJlY29yZCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01v
ZHVsZVJlY29yZD4odm0uaGVhcCkpIEpTTW9kdWxlUmVjb3JkKHZtLCBzdHJ1Y3R1cmUsIG1vZHVs
ZUtleSwgc291cmNlQ29kZSwgZGVjbGFyZWRWYXJpYWJsZXMsIGxleGljYWxWYXJpYWJsZXMpOwog
ICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gaW5z
dGFuY2U7CiAgICAgfQogCi0gICAgc3RhdGljIEpTTW9kdWxlUmVjb3JkKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxl
S2V5KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUs
IG1vZHVsZUtleSk7Ci0gICAgfQotCiAgICAgdm9pZCBhcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29u
c3QgSWRlbnRpZmllciYpOwogICAgIHZvaWQgYWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50
aWZpZXImKTsKICAgICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7CkBA
IC0xMDAsMjQgKzEwMiwxMjAgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgewogCiAgICAgY29uc3QgSW1wb3J0RW50cnkmIGxvb2tVcEltcG9ydEVu
dHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSk7CiAKKyAgICBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2Rl
OyB9CisgICAgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KCkgY29uc3QgeyByZXR1cm4gbV9t
b2R1bGVLZXk7IH0KICAgICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYgcmVxdWVzdGVkTW9k
dWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVkTW9kdWxlczsgfQorICAgIGNvbnN0IEV4
cG9ydE1hcCYgZXhwb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3J0RW50cmllczsg
fQorICAgIGNvbnN0IEltcG9ydE1hcCYgaW1wb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wb3J0RW50cmllczsgfQorCisgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFy
ZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2RlY2xhcmVkVmFyaWFibGVzOyB9CisgICAg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fbGV4aWNhbFZhcmlhYmxlczsgfQogCiAgICAgdm9pZCBkdW1wKCk7CiAKKyAgICBKU01v
ZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpCisgICAgeworICAgICAgICBBU1NF
UlQobV9tb2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAgIHJldHVybiBtX21vZHVsZUVudmlyb25t
ZW50LmdldCgpOworICAgIH0KKworICAgIHZvaWQgbGluayhFeGVjU3RhdGUqKTsKKyAgICBKU1Zh
bHVlIGV4ZWN1dGUoRXhlY1N0YXRlKik7CisKKyAgICBzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5IHsKKyAg
ICAgICAgUmVzb2x2ZVF1ZXJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBtb2R1bGVLZXksIFVuaXF1ZWRT
dHJpbmdJbXBsKiBleHBvcnROYW1lKQorICAgICAgICAgICAgOiBtb2R1bGVLZXkobW9kdWxlS2V5
KQorICAgICAgICAgICAgLCBleHBvcnROYW1lKGV4cG9ydE5hbWUpCisgICAgICAgIHsKKyAgICAg
ICAgfQorCisgICAgICAgIFJlc29sdmVRdWVyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXks
IGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpCisgICAgICAgICAgICA6IFJlc29sdmVRdWVy
eShtb2R1bGVLZXkuaW1wbCgpLCBleHBvcnROYW1lLmltcGwoKSkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1ZSB9OworICAgICAg
ICBSZXNvbHZlUXVlcnkoRW1wdHlWYWx1ZVRhZykKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICAgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKKyAgICAgICAgUmVz
b2x2ZVF1ZXJ5KERlbGV0ZWRWYWx1ZVRhZykKKyAgICAgICAgICAgIDogbW9kdWxlS2V5KFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgICAgICAgICAgLCBleHBvcnROYW1lKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBib29s
IGlzRW1wdHlWYWx1ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhbW9k
dWxlS2V5OworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtb2R1bGVLZXkuaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4gbW9kdWxlS2V5OworICAgICAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGV4cG9ydE5h
bWU7CisgICAgfTsKKworICAgIHN0cnVjdCBSZXNvbHZlUXVlcnlIYXNoIHsKKyAgICAgICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVzb2x2ZVF1ZXJ5Jik7CisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFJlc29sdmVRdWVyeSYsIGNvbnN0IFJlc29sdmVRdWVyeSYpOworICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRy
dWU7CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RGOjpIYXNoU2V0PFJlc29sdmVRdWVyeSwgUmVz
b2x2ZVF1ZXJ5SGFzaCwgV1RGOjpDdXN0b21IYXNoVHJhaXRzPFJlc29sdmVRdWVyeT4+IFJlc29s
dmVTZXQ7CisKKyAgICBzdHJ1Y3QgUmVzb2x1dGlvbiB7CisgICAgICAgIGVudW0gY2xhc3MgVHlw
ZSB7IFJlc29sdmVkLCBOb3RGb3VuZCwgQW1iaWd1b3VzLCBFcnJvciB9OworCisgICAgICAgIFR5
cGUgdHlwZTsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1bGVLZXk7CisgICAgICAgIEpTTW9kdWxl
UmVjb3JkKiBtb2R1bGVSZWNvcmQ7CisgICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOworICAg
IH07CisKKyAgICBSZXNvbHV0aW9uIHJlc29sdmVFeHBvcnQoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgZXhwb3J0TmFtZSwgUmVzb2x2ZVNldCYsIElkZW50aWZpZXJTZXQmIGV4cG9ydFN0
YXJTZXQpOworCisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5nZXQoKTsg
fQorCisgICAgUmVzb2x1dGlvbiByZXNvbHZlSW1wb3J0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIGxvY2FsTmFtZSk7CisKKyAgICBzaXplX3QgbGlua01vZHVsZShFeGVjU3RhdGUqLCBK
U01vZHVsZVJlY29yZCogaW1wb3J0ZWQpOworCiBwcml2YXRlOgotICAgIEpTTW9kdWxlUmVjb3Jk
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtl
eSkKKyAgICBKU01vZHVsZVJlY29yZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSkKICAgICAgICAgLCBtX21vZHVsZUtleShtb2R1bGVLZXkpCisgICAgICAgICwgbV9zb3Vy
Y2VDb2RlKHNvdXJjZUNvZGUpCisgICAgICAgICwgbV9kZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJl
ZFZhcmlhYmxlcykKKyAgICAgICAgLCBtX2xleGljYWxWYXJpYWJsZXMobGV4aWNhbFZhcmlhYmxl
cykKICAgICB7CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCisgICAg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIGdldE1vZHVsZU5hbWVzcGFjZShFeGVjU3RhdGUqKTsK
KyAgICBlbnVtIGNsYXNzIEluY2x1ZGVEZWZhdWx0TW9kZSB7IEluY2x1ZGUsIEV4Y2x1ZGUgfTsK
KyAgICB2b2lkIGdldEV4cG9ydGVkTmFtZXMoRXhlY1N0YXRlKiwgSWRlbnRpZmllclNldCYgZXhw
b3J0U3RhclNldCwgSWRlbnRpZmllclNldCYgZXhwb3J0ZWROYW1lcywgSW5jbHVkZURlZmF1bHRN
b2RlKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAgdm9pZCBpbnN0
YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSop
OworCisgICAgSlNNb2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisKICAgICAvLyBUaGUgbG9hZGVy
IHJlc29sdmVzIHRoZSBnaXZlbiBtb2R1bGUgbmFtZSB0byB0aGUgbW9kdWxlIGtleS4gVGhlIG1v
ZHVsZSBrZXkgaXMgdGhlIHVuaXF1ZSB2YWx1ZSB0byByZXByZXNlbnQgdGhpcyBtb2R1bGUuCiAg
ICAgSWRlbnRpZmllciBtX21vZHVsZUtleTsKIAorICAgIFNvdXJjZUNvZGUgbV9zb3VyY2VDb2Rl
OworCisgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2RlY2xhcmVkVmFyaWFibGVzOworICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQgbV9sZXhpY2FsVmFyaWFibGVzOworCiAgICAgLy8gTWFwIGxvY2Fs
TmFtZSAtPiBJbXBvcnRFbnRyeS4KICAgICBJbXBvcnRNYXAgbV9pbXBvcnRFbnRyaWVzOwogCkBA
IC0xMjksNiArMjI3LDE1IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IHsKICAgICAvLyBTYXZlIHRoZSBvY2N1cnJlbmNlIG9yZGVyIHNpbmNlIHRo
ZSBtb2R1bGUgbG9hZGVyIGxvYWRzIGFuZCBydW5zIHRoZSBtb2R1bGVzIGluIHRoaXMgb3JkZXIu
CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLW1vZHVsZWV2YWx1YXRpb24KICAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3JlcXVlc3Rl
ZE1vZHVsZXM7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVFbnZpcm9ubWVudD4gbV9tb2R1
bGVFbnZpcm9ubWVudDsKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+
IG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0OworICAgIFdyaXRlQmFycmllcjxNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZT4gbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8
SlNNYXA+IG1fZGVwZW5kZW5jaWVzTWFwOworCisgICAgdHlwZWRlZiBIYXNoTWFwPEpTTW9kdWxl
RW52aXJvbm1lbnQqLCBzaXplX3Q+IExpbmtlZE1vZHVsZU1hcDsKKyAgICBMaW5rZWRNb2R1bGVN
YXAgbV9saW5rZWRNb2R1bGVNYXA7CisgICAgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4g
bV9saW5rZWRNb2R1bGVzOwogfTsKIAogaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFwcGVu
ZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQpAQCAtMTU2LDYg
KzI2MywxNiBAQCBpbmxpbmUgYXV0byBKU01vZHVsZVJlY29yZDo6bG9va1VwSW1wb3J0RW50cnko
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbAogICAgIHJldHVybiAoKm1faW1wb3J0
RW50cmllcy5maW5kKGxvY2FsTmFtZSkpLnZhbHVlOwogfQogCitpbmxpbmUgdW5zaWduZWQgSlNN
b2R1bGVSZWNvcmQ6OlJlc29sdmVRdWVyeUhhc2g6Omhhc2goY29uc3QgSlNNb2R1bGVSZWNvcmQ6
OlJlc29sdmVRdWVyeSYgcXVlcnkpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXJSZXBIYXNoOjpo
YXNoKHF1ZXJ5Lm1vZHVsZUtleSkgKyBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaChxdWVyeS5leHBv
cnROYW1lKTsKK30KKworaW5saW5lIGJvb2wgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdmVRdWVyeUhh
c2g6OmVxdWFsKGNvbnN0IFJlc29sdmVRdWVyeSYgbGhzLCBjb25zdCBSZXNvbHZlUXVlcnkmIHJo
cykKK3sKKyAgICByZXR1cm4gbGhzLm1vZHVsZUtleSA9PSByaHMubW9kdWxlS2V5ICYmIGxocy5l
eHBvcnROYW1lID09IHJocy5leHBvcnROYW1lOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIEpTTW9kdWxlUmVjb3JkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5jcHAKaW5kZXggYmIyZWZkZDA2MzFjZDE4ZWE5NzU0MjY3NGEyY2U3MTgxNTA3MmM4
Zi4uMGJlYzBkODYxYTc0OGRkNzgwNTRlZTlmMjkzYWNiOWUyYjMyYzFkZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVS
ZWNvcmQuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKIApAQCAtNjUsNiArNjcsMjEgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNjZXNz
KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWYKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKEpTTW9kdWxlRW52aXJv
bm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUVudmlyb25t
ZW50Kj4oc2NvcGUpKSB7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3Jk
ID0gbW9kdWxlRW52aXJvbm1lbnQtPm1vZHVsZVJlY29yZCgpOworICAgICAgICAgICAgY29uc3Qg
YXV0byByZXNvbHV0aW9uID0gbW9kdWxlUmVjb3JkLT5yZXNvbHZlSW1wb3J0KGV4ZWMsIGlkZW50
KTsKKyAgICAgICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJl
c29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAgICAgICAgICAgSlNNb2R1bGVSZWNv
cmQqIGltcG9ydGVkUmVjb3JkID0gcmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQ7CisgICAgICAgICAg
ICAgICAgbW9kdWxlUmVjb3JkLT5saW5rTW9kdWxlKGV4ZWMsIGltcG9ydGVkUmVjb3JkKTsKKyAg
ICAgICAgICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KiBpbXBvcnRlZEVudmlyb25tZW50ID0g
aW1wb3J0ZWRSZWNvcmQtPm1vZHVsZUVudmlyb25tZW50KCk7CisgICAgICAgICAgICAgICAgU3lt
Ym9sVGFibGVFbnRyeSBlbnRyeSA9IGltcG9ydGVkRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCkt
PmdldChyZXNvbHV0aW9uLmxvY2FsTmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAgIEFTU0VS
VCghZW50cnkuaXNOdWxsKCkpOworICAgICAgICAgICAgICAgIC8vIE1vZHVsZSBleGVjdXRpb24g
aXMgYWx3YXlzIGRvbmUgdW5kZXIgdGhlIHN0cmljdCBtb2RlLiBTbyB0aGVyZSBpcyBubyB3YXkg
dG8gaW5qZWN0IHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcChNb2R1
bGVWYXIsIGRlcHRoLCAwLCBpbXBvcnRlZEVudmlyb25tZW50LCBlbnRyeS53YXRjaHBvaW50U2V0
KCksIGVudHJ5LnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCksIHJlc29sdXRpb24ubG9jYWxOYW1lLmlt
cGwoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKwogICAgICAgICBpZiAobGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT51
c2VzTm9uU3RyaWN0RXZhbCgpKQogICAgICAgICAgICAgbmVlZHNWYXJJbmplY3Rpb25DaGVja3Mg
PSB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzIsNiArMjQ5LDcgQEAgY29uc3Qg
Y2hhciogcmVzb2x2ZVR5cGVOYW1lKFJlc29sdmVUeXBlIHR5cGUpCiAgICAgICAgICJHbG9iYWxW
YXIiLAogICAgICAgICAiQ2xvc3VyZVZhciIsCiAgICAgICAgICJMb2NhbENsb3N1cmVWYXIiLAor
ICAgICAgICAiTW9kdWxlVmFyIiwKICAgICAgICAgIkdsb2JhbFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrcyIsCiAgICAgICAgICJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwK
ICAgICAgICAgIkNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAppbmRleCBhNjUzMTY3NDkwZjY4MjIzZjUxMWRkMjg5
MDg5MjlmYzQ2YTE5NzNjLi4wMjZhMjcxNGRjOGQ5MjJhOTgyODg1ZTU0NmI1NzhiYTk2MzQ4MGE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCkBAIC00NSw2ICs0NSw3
IEBAIGVudW0gUmVzb2x2ZVR5cGUgewogICAgIEdsb2JhbFZhciwKICAgICBDbG9zdXJlVmFyLAog
ICAgIExvY2FsQ2xvc3VyZVZhciwKKyAgICBNb2R1bGVWYXIsCiAKICAgICAvLyBEaXR0bywgYnV0
IGF0IGxlYXN0IG9uZSBpbnRlcnZlbmluZyBzY29wZSB1c2VkIG5vbi1zdHJpY3QgZXZhbCwgd2hp
Y2gKICAgICAvLyBjYW4gaW5qZWN0IGFuIGludGVyY2VwdGluZyB2YXIgZGVsY2FyYXRpb24gYXQg
cnVudGltZS4KQEAgLTcyLDYgKzczLDcgQEAgaW5saW5lIFJlc29sdmVUeXBlIG1ha2VUeXBlKFJl
c29sdmVUeXBlIHR5cGUsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCiAgICAgY2FzZSBD
bG9zdXJlVmFyOgogICAgIGNhc2UgTG9jYWxDbG9zdXJlVmFyOgogICAgICAgICByZXR1cm4gQ2xv
c3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAg
Y2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgY2FzZSBHbG9i
YWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3M6CkBAIC05MCw2ICs5Miw3IEBAIGlubGluZSBib29sIG5lZWRzVmFySW5q
ZWN0aW9uQ2hlY2tzKFJlc29sdmVUeXBlIHR5cGUpCiAgICAgY2FzZSBHbG9iYWxWYXI6CiAgICAg
Y2FzZSBDbG9zdXJlVmFyOgogICAgIGNhc2UgTG9jYWxDbG9zdXJlVmFyOgorICAgIGNhc2UgTW9k
dWxlVmFyOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgY2FzZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzOgpAQCAtMTAzLDEzICsxMDYsMTQgQEAgaW5saW5lIGJvb2wgbmVlZHNWYXJJbmplY3Rp
b25DaGVja3MoUmVzb2x2ZVR5cGUgdHlwZSkKIH0KIAogc3RydWN0IFJlc29sdmVPcCB7Ci0gICAg
UmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0aCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQsIFdhdGNocG9p
bnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRwdHJfdCBvcGVyYW5kKQorICAgIFJlc29sdmVPcChS
ZXNvbHZlVHlwZSB0eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0xl
eGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50LCBXYXRjaHBvaW50U2V0KiB3YXRj
aHBvaW50U2V0LCB1aW50cHRyX3Qgb3BlcmFuZCwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcG9ydGVk
TmFtZSA9IG51bGxwdHIpCiAgICAgICAgIDogdHlwZSh0eXBlKQogICAgICAgICAsIGRlcHRoKGRl
cHRoKQogICAgICAgICAsIHN0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgICAgICwgbGV4aWNhbEVu
dmlyb25tZW50KGxleGljYWxFbnZpcm9ubWVudCkKICAgICAgICAgLCB3YXRjaHBvaW50U2V0KHdh
dGNocG9pbnRTZXQpCiAgICAgICAgICwgb3BlcmFuZChvcGVyYW5kKQorICAgICAgICAsIGltcG9y
dGVkTmFtZShpbXBvcnRlZE5hbWUpCiAgICAgewogICAgIH0KIApAQCAtMTE5LDYgKzEyMyw3IEBA
IHN0cnVjdCBSZXNvbHZlT3AgewogICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52
aXJvbm1lbnQ7CiAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldDsKICAgICB1aW50cHRy
X3Qgb3BlcmFuZDsKKyAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGltcG9ydGVkTmFtZTsK
IH07CiAKIGNsYXNzIFJlc29sdmVNb2RlQW5kVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5oCmluZGV4IDQwMzI2Y2UwZjMyOWZhN2M3YmJjOTlmNDQ2NDI4ZmU5NmM5MTI0
YjMuLmZjZTA2MWQxZjhkNjFkYWIwNjM2MGFlOGQ3YWE0NDhmMmYxOGM3OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC00MSwxMCArNDEsMTIgQEAgZW51bSBKU1R5
cGUgOiB1aW50OF90IHsKIAogICAgIEV2YWxFeGVjdXRhYmxlVHlwZSwKICAgICBQcm9ncmFtRXhl
Y3V0YWJsZVR5cGUsCisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlLAogICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZVR5cGUsCiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUs
CiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrVHlwZSwKKyAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2tUeXBlLAogICAgIFVubGlua2VkRXZhbENvZGVCbG9ja1R5cGUsCiAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1R5cGUsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCmluZGV4IDFkNjdhNGNhZGU4
YjQ3Y2MxOGNmNTg2NDJkNjQ0NmQwMzJmNWU3OTMuLmU2YzIyZDJkM2MzNTI1MDljNWM4NTcyNTUz
YTlmYTZjMmJkYjk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZUxvYWRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpT
SW50ZXJuYWxQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5o
IgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgog
I2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIK
ICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtNDUsNiArNDYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFy
c2VNb2R1bGUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0RXZhbHVhdGUo
RXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJPYmplY3RNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXNv
bHZlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyT2JqZWN0RmV0Y2goRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RUcmFuc2xhdGUoRXhlY1N0YXRlKik7CkBA
IC02MiwyOCArNjUsMzQgQEAgY29uc3QgQ2xhc3NJbmZvIE1vZHVsZUxvYWRlck9iamVjdDo6c19p
bmZvID0geyAiTW9kdWxlTG9hZGVyIiwgJkJhc2U6OnNfaW5mbywgJm0KIAogLyogU291cmNlIGZv
ciBNb2R1bGVMb2FkZXJPYmplY3QubHV0LmgKIEBiZWdpbiBtb2R1bGVMb2FkZXJPYmplY3RUYWJs
ZQotICAgIHNldFN0YXRlVG9NYXggICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFNldFN0
YXRlVG9NYXggICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBuZXdSZWdpc3Ry
eUVudHJ5ICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3ROZXdSZWdpc3RyeUVudHJ5ICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgZW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAg
bW9kdWxlTG9hZGVyT2JqZWN0RW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQotICAgIGZvcmNlRnVsZmlsbFByb21pc2UgICAgICAgIG1vZHVsZUxvYWRlck9iamVj
dEZvcmNlRnVsZmlsbFByb21pc2UgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBmdWxm
aWxsRmV0Y2ggICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGdWxmaWxsRmV0Y2ggICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgZnVsZmlsbFRyYW5zbGF0ZSAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbFRyYW5zbGF0ZSAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMgotICAgIGZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgIG1vZHVsZUxvYWRl
ck9iamVjdEZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAg
ICBjb21taXRJbnN0YW50aWF0ZWQgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RDb21taXRJbnN0
YW50aWF0ZWQgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCi0gICAgaW5zdGFudGlhdGlvbiAg
ICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0SW5zdGFudGlhdGlvbiAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMwotICAgIHJlcXVlc3RGZXRjaCAgICAgICAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdFJlcXVlc3RGZXRjaCAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKLSAgICByZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1
ZXN0VHJhbnNsYXRlICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgcmVxdWVzdElu
c3RhbnRpYXRlICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIHJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVz
IG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzIERvbnRFbnVtfEZ1
bmN0aW9uIDEKLSAgICByZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICBtb2R1bGVMb2FkZXJPYmpl
Y3RSZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gICAgbG9h
ZE1vZHVsZSAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TG9hZE1vZHVsZSAgICAg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIHByb3ZpZGUgICAgICAgICAgICAg
ICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFByb3ZpZGUgICAgICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDMKLSAgICBwYXJzZU1vZHVsZSAgICAgICAgICAgICAgICBtb2R1bGVMb2Fk
ZXJPYmplY3RQYXJzZU1vZHVsZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0g
ICAgcmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVk
TW9kdWxlcyAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIHJlc29sdmUgICAgICAg
ICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUgICAgICAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICBmZXRjaCAgICAgICAgICAgICAgICAgICAgICBtb2R1
bGVMb2FkZXJPYmplY3RGZXRjaCAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCi0gICAgdHJhbnNsYXRlICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0VHJh
bnNsYXRlICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIGluc3RhbnRp
YXRlICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRlICAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBzZXRTdGF0ZVRvTWF4ICAgICAgICAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0U2V0U3RhdGVUb01heCAgICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBuZXdSZWdpc3RyeUVudHJ5ICAgICAgICAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0TmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgICBlbnN1cmVSZWdpc3RlcmVkICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVy
T2JqZWN0RW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgICBmb3JjZUZ1bGZpbGxQcm9taXNlICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Rm9y
Y2VGdWxmaWxsUHJvbWlzZSAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBmdWxm
aWxsRmV0Y2ggICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEZldGNo
ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBmdWxmaWxsVHJhbnNs
YXRlICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbFRyYW5zbGF0ZSAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBmdWxmaWxsSW5zdGFudGlhdGUgICAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEluc3RhbnRpYXRlICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBjb21taXRJbnN0YW50aWF0ZWQgICAgICAgICAgICAg
bW9kdWxlTG9hZGVyT2JqZWN0Q29tbWl0SW5zdGFudGlhdGVkICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDMKKyAgICBpbnN0YW50aWF0aW9uICAgICAgICAgICAgICAgICAgbW9kdWxlTG9h
ZGVyT2JqZWN0SW5zdGFudGlhdGlvbiAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDMKKyAgICByZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0
UmVxdWVzdEZldGNoICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBy
ZXF1ZXN0VHJhbnNsYXRlICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFRy
YW5zbGF0ZSAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0SW5z
dGFudGlhdGUgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRl
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0UmVzb2x2ZURlcGVu
ZGVuY2llcyAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0SW5zdGFudGlhdGVBbGwgICAgICAg
ICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdEluc3RhbnRpYXRlQWxsICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgICByZXF1ZXN0TGluayAgICAgICAgICAgICAgICAgICAgbW9kdWxl
TG9hZGVyT2JqZWN0UmVxdWVzdExpbmsgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgICByZXF1ZXN0UmVhZHkgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2Jq
ZWN0UmVxdWVzdFJlYWR5ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
ICBsaW5rICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TGluayAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBtb2R1bGVE
ZWNsYXJhdGlvbkluc3RhbnRpYXRpb24gbW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRGVjbGFyYXRp
b25JbnN0YW50aWF0aW9uIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBtb2R1bGVFdmFsdWF0aW9u
ICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRXZhbHVhdGlvbiAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBldmFsdWF0ZSAgICAgICAgICAgICAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RXZhbHVhdGUgICAgICAgICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBsb2FkTW9kdWxlICAgICAgICAgICAgICAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0TG9hZE1vZHVsZSAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDIKKyAgICBwcm92aWRlICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVy
T2JqZWN0UHJvdmlkZSAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMK
KyAgICBwYXJzZU1vZHVsZSAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UGFy
c2VNb2R1bGUgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICByZXF1
ZXN0ZWRNb2R1bGVzICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9k
dWxlcyAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICByZXNvbHZlICAgICAg
ICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZSAgICAgICAgICAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBmZXRjaCAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RmV0Y2ggICAgICAgICAgICAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICB0cmFuc2xhdGUgICAgICAgICAgICAgICAgICAgICAg
bW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKKyAgICBpbnN0YW50aWF0ZSAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9h
ZGVyT2JqZWN0SW5zdGFudGlhdGUgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDIKIEBlbmQKICovCiAKQEAgLTEzNywxOSArMTQ2LDYgQEAgSlNWYWx1ZSBNb2R1bGVMb2FkZXJP
YmplY3Q6OnByb3ZpZGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgU3RhdHVzIHN0YXR1
cywKICAgICByZXR1cm4gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0
aGlzLCBhcmd1bWVudHMpOwogfQogCi1KU0ludGVybmFsUHJvbWlzZSogTW9kdWxlTG9hZGVyT2Jq
ZWN0OjpyZXF1ZXN0SW5zdGFudGlhdGVBbGwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSkK
LXsKLSAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnJlcXVlc3RJbnN0YW50aWF0ZUFs
bFB1YmxpY05hbWUoKSkpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIEFTU0VS
VChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOwotCi0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJndW1lbnRzOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoa2V5KTsKLQotICAgIHJldHVybiBqc0Nh
c3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXMsIGFyZ3VtZW50cykpOwotfQotCiBKU0ludGVybmFsUHJvbWlzZSogTW9kdWxl
TG9hZGVyT2JqZWN0Ojpsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBtb2R1bGVO
YW1lLCBKU1ZhbHVlIHJlZmVycmVyKQogewogICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2Fz
dDxKU09iamVjdCo+KGdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkubG9hZE1vZHVsZVB1YmxpY05hbWUoKSkpOwpAQCAtMjQ5LDE0ICsyNDUsMTUgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgfQogICAgIEFTU0VSVChtb2R1bGVQcm9ncmFtTm9kZSk7CiAKLSAg
ICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihleGVjLCBtb2R1bGVLZXksIG1vZHVsZVBy
b2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxW
YXJpYWJsZXMoKSk7CisgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9k
dWxlS2V5LCBzb3VyY2VDb2RlLCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCks
IG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCkpOwogICAgIEpTTW9kdWxlUmVj
b3JkKiBtb2R1bGVSZWNvcmQgPSBtb2R1bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFt
Tm9kZSk7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1vZHVsZVJlY29yZCk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVk
TW9kdWxlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJl
Y29yZCA9IGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBK
U01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29y
ZCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIW1vZHVsZVJlY29yZCkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIp
KTsKIApAQCAtMjY4LDYgKzI2NSwzNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMoRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24o
RXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBq
c0R5bmFtaWNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlm
ICghbW9kdWxlUmVjb3JkKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworCisgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKKyAg
ICAgICAgZGF0YUxvZygiTG9hZGVyIFtsaW5rXSAiLCBtb2R1bGVSZWNvcmQtPm1vZHVsZUtleSgp
LCAiXG4iKTsKKworICAgIG1vZHVsZVJlY29yZC0+bGluayhleGVjKTsKKyAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEV2YWx1YXRl
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0g
anNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBp
ZiAoIW1vZHVsZVJlY29yZCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCisg
ICAgICAgIGRhdGFMb2coIkxvYWRlciBbZXZhbHVhdGVdICIsIG1vZHVsZVJlY29yZC0+bW9kdWxl
S2V5KCksICJcbiIpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBtb2R1bGVSZWNvcmQtPmV4ZWN1
dGUoZXhlYyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIb29rIEZ1bmN0aW9ucyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJPYmplY3RSZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmgKaW5kZXggNDViOTMyYWM1ODBh
ZjYwYWI1MmZkMTUwMTkzOTA5NTlhYmUwNTEwMy4uMTJjZmU1NmVlYmI2YzQyN2MwZWY3OTAyMWY5
OTdjNmIwZDM4NGExZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0LmgKQEAgLTY0LDcgKzY0LDYgQEAgY2xhc3MgTW9kdWxlTG9hZGVy
T2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgLy8gQVBJcyB0byBjb250
cm9sIHRoZSBtb2R1bGUgbG9hZGVyLgogICAgIEpTVmFsdWUgcHJvdmlkZShFeGVjU3RhdGUqLCBK
U1ZhbHVlIGtleSwgU3RhdHVzLCBjb25zdCBTdHJpbmcmKTsKLSAgICBKU0ludGVybmFsUHJvbWlz
ZSogcmVxdWVzdEluc3RhbnRpYXRlQWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5KTsKICAgICBK
U0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqLCBKU1ZhbHVlIG1vZHVsZU5h
bWUsIEpTVmFsdWUgcmVmZXJyZXIpOwogCiAgICAgLy8gUGxhdGZvcm0gZGVwZW5kZW50IGhvb2tl
ZCBBUElzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5j
cHAKaW5kZXggZTgzZTM4MzI1OGY5OWJiMDViYmUxMWUwYzY1ZGUwNGI4ZTA0OWUwYS4uNGM0M2M2
YWZmMmY2N2ZmMzU3NTczYWVjYTJkZjQzYmQzNzExM2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2V0UHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJC
dWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJDYWNoZWRDYWxsLmgiCiAjaW5jbHVkZSAiRXJyb3Iu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCkBAIC02NSw2ICs2NiwxMCBAQCB2b2lk
IFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aGFz
LCBzZXRQcm90b0Z1bmNIYXMsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIHNldFByb3RvRnVuY0VudHJpZXMsIERvbnRFbnVt
LCAwKTsKIAorICAgIC8vIFByaXZhdGUgYWRkIC8gaGFzIG9wZXJhdGlvbnMuCisgICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5hZGRQcml2YXRlTmFtZSwgc2V0UHJvdG9G
dW5jQWRkLCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNQcml2YXRlTmFtZSgpLCBzZXRQcm90b0Z1bmNIYXMs
IERvbnRFbnVtLCAxKTsKKwogICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMuc3RyaW5n
KCksIHNldFByb3RvRnVuY1ZhbHVlcyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgdmFsdWVzLCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIHZhbHVl
cywgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDkzYzk2
ZmJlYzA0NGY3Zjc0ZTk3ODQ3M2I2YmY5OGMwNzIxYjhlZDMuLjA1NmNkOTFmZTU5YzE4MDY0NTg1
YTM0MDM0Yzg5YjExY2Q4Yzk1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
QEAgLTIyMSw2ICsyMjEsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5
cGUpCiAgICAgZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb2dyYW1FeGVj
dXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKKyAgICBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQo
KnRoaXMsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgcmVnRXhwU3RydWN0dXJlLnNldCgqdGhpcywgUmVnRXhwOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3ltYm9sU3RydWN0dXJlLnNl
dCgqdGhpcywgU3ltYm9sOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAg
ICAgc3ltYm9sVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTeW1ib2xUYWJsZTo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpAQCAtMjMyLDYgKzIzMyw3IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICB1bmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxpbmtlZEV2YWxDb2RlQmxv
Y2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
U3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
azo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb3BlcnR5VGFi
bGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQcm9wZXJ0eVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgd2Vha01hcERhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBX
ZWFrTWFwRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGlu
ZmVycmVkVmFsdWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFZhbHVlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCA5YWZlOWE1YTJmZjQxZDljMWZjNjUxZmRjMDZiYjZhNTBmNzQ5ZjYxLi5jZGFiOWIyMjQ0
MTBmNDMwYzYwNTY2OWFhMThmMGIxOTliZjI3NDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKIGNsYXNz
IFVubGlua2VkRXZhbENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OwogY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogY2xhc3MgVk1FbnRyeVNj
b3BlOwogY2xhc3MgV2F0Y2hkb2c7CkBAIC0yNzksNiArMjgwLDcgQEAgY2xhc3MgVk0gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBldmFs
RXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9ncmFtRXhlY3V0
YWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvbkV4ZWN1dGFibGVT
dHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcmVnRXhwU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IHN5bWJvbFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBz
eW1ib2xUYWJsZVN0cnVjdHVyZTsKQEAgLTI5MCw2ICsyOTIsNyBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxp
bmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gcHJvcGVydHlUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB3ZWFrTWFw
RGF0YVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFZhbHVlU3RydWN0
dXJlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260044</attachid>
            <date>2015-08-27 00:00:11 -0700</date>
            <delta_ts>2015-08-28 01:35:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147340-20150827000000.patch</filename>
            <type>text/plain</type>
            <size>179949</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NTcyNTg1YWEyNmRlZGFhZGMwOTZkY2MwZmE3NjAzYTE1OTEzNDA1Li4zMjU2MTIxNmQxMTc2M2Qy
YjY5YWRiZGM2NmU1ODg2MmZlYmZkZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDkgQEAKKzIwMTUtMDgtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBNb2R1bGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDczNDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvTW9kdWxlTG9hZGVy
T2JqZWN0LmpzOgorICAgICAgICAocmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMucmVzb2x2ZURl
cGVuZGVuY2llc1Byb21pc2UudGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUudGhlbi4pOgorICAgICAg
ICAocmVxdWVzdExpbmspOgorICAgICAgICAocmVxdWVzdFJlYWR5KToKKyAgICAgICAgKGxpbmsp
OgorICAgICAgICAobW9kdWxlRXZhbHVhdGlvbik6CisgICAgICAgIChsb2FkTW9kdWxlKToKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmluZmVycmVkTmFtZSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6TW9kdWxl
UHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6Ok1v
ZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpFdmFs
Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OkZ1bmN0aW9uQ29k
ZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlVHlwZS5jcHA6CisgICAgICAgIChXVEY6
OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVUeXBlLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVQ
cm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SW1wb3J0RGVjbGFyYXRp
b25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFeHBvcnRBbGxEZWNsYXJhdGlv
bk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cG9ydERlZmF1bHREZWNsYXJh
dGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cG9ydExvY2FsRGVjbGFy
YXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFeHBvcnROYW1lZERlY2xh
cmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnJpZW5kbHlTb3VyY2VVUkwpOgorICAgICAgICAo
SlNDOjpTdGFja0ZyYW1lOjpmcmllbmRseUZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChKU0M6Omdl
dFN0YWNrRnJhbWVDb2RlVHlwZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRl
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJh
bWU6OmNvZGVUeXBlKToKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVuY3Rp
b25OYW1lKToKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6c291cmNlVVJMKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaDoKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29s
dmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2NvcGUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICog
bGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldE1vZHVs
ZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEVudHJ5cG9pbnQp
OgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICog
bGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6bW9kdWxlUHJvZ3Jh
bUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6
ZXIuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUpOgorICAgICAgICAo
SlNDOjpNb2R1bGVBbmFseXplcjo6YW5hbHl6ZSk6CisgICAgICAgICogcGFyc2VyL01vZHVsZUFu
YWx5emVyLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUltcG9ydENsYXVzZUl0ZW0pOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhdGlvbik6CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZUxleGljYWxWYXJpYWJs
ZSk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc0ltcG9ydGVkTmFtZXNwYWNlKToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc0ltcG9ydGVkTmFtZXNwYWNl
KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZmluZCk6CisgICAgICAgICog
cnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2Jh
bENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0TW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpjaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgICogcnVudGltZS9FeGVj
dXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUp
OgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAg
ICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbWVudENvZGVCbG9ja0Zvcik6
CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveSk6CisgICAg
ICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheCk6CisgICAgICAg
IChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNsZWFyQ29kZSk6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVCYXNlOjpkdW1wKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoK
KyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmlzTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbCk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Y3JlYXRlTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVu
dGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTW9k
dWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1l
bnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93
bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1l
bnQ6OnB1dCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3Bl
cnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDogQ29waWVkIGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaC4K
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVFbnZpcm9ubWVudDo6b2Zmc2V0T2ZNb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlND
OjpKU01vZHVsZUVudmlyb25tZW50OjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlRW52aXJvbm1lbnQ6Om1vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
RW52aXJvbm1lbnQ6Om1vZHVsZVJlY29yZFNsb3QpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVu
dmlyb25tZW50OjpKU01vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0OjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVO
YW1lc3BhY2VPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5h
bWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpt
b2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9K
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVO
YW1lc3BhY2VPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChK
U0M6OmlkZW50aWZpZXJUb0pTVmFsdWUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6
aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVyeTo6
UmVzb2x2ZVF1ZXJ5KToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5Ojppc0VtcHR5VmFsdWUp
OgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAg
KEpTQzo6UmVzb2x2ZVF1ZXJ5SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVy
eUhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6cmVzb2x2ZUV4cG9ydExvb3ApOgorICAgICAg
ICAoSlNDOjpnZXRFeHBvcnRlZE5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6
OmdldE1vZHVsZU5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpsaW5r
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmxpbmtNb2R1bGUpOgorICAgICAgICAo
SlNDOjpKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMpOgorICAgICAgICAo
SlNDOjpKU01vZHVsZVJlY29yZDo6ZXhlY3V0ZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVs
ZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6bW9kdWxlS2V5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV4
cG9ydEVudHJpZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6aW1wb3J0RW50cmll
cyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpzdGFyRXhwb3J0RW50cmllcyk6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpkZWNsYXJlZFZhcmlhYmxlcyk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlUmVjb3JkOjpsZXhpY2FsVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVSZWNvcmQ6Om1vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6Om1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6OkpTTW9kdWxlUmVjb3JkKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuY3Bw
OgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OnJlc29sdmVU
eXBlTmFtZSk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgIChKU0M6Om1h
a2VUeXBlKToKKyAgICAgICAgKEpTQzo6bmVlZHNWYXJJbmplY3Rpb25DaGVja3MpOgorICAgICAg
ICAoSlNDOjpSZXNvbHZlT3A6OlJlc29sdmVPcCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6Om1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bW9kdWxl
TG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyk6CisgICAgICAgIChKU0M6Om1vZHVsZUxvYWRl
ck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbik6CisgICAgICAgIChKU0M6Om1v
ZHVsZUxvYWRlck9iamVjdEV2YWx1YXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2Jq
ZWN0OjpyZXF1ZXN0SW5zdGFudGlhdGVBbGwpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TZXRQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmg6CisKIDIwMTUtMDgtMjYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgdHJhY2tpbmcgb2YgYWN0
aXZlIHN0eWxlc2hlZXRzIGluIHRoZSBmcm9udGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA0YTQwZGYyZmFjZWNkYzVmMTEyNTRjZGY4NzllNGUzYjZmZTNkOTU5Li40OWYxZGIw
NjEzOTNkZjQwNWI2MGM0ZTM5NDZlYTgwODQ2ZjkwMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTcwMCw2ICsxNzAwLDkgQEAKIAkJRTEyNEE4RjcwRTU1NTc3NTAwMzA5MUYx
IC8qIE9wYXF1ZUpTU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTI0QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTI0QThG
ODBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8q
IE9wYXF1ZUpTU3RyaW5nLmNwcCAqLzsgfTsKIAkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8q
IFZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
OEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi87IH07CisJCUUzMDY3Nzk4MUI4QkM2
RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBN
b2R1bGVMb2FkZXJPYmplY3QuanMgKi87IH07CisJCUUzMThDQkMwMUI4QUVGNTEwMEEyOTI5RCAv
KiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuY3BwICovOyB9OworCQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyog
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzMzYzN0E1MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0EzMUI2MzIy
MDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMzNjM3QTYxQjYzMjIw
MjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2Jq
ZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
M0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
bHV0LmggKi87IH07CkBAIC0xNzIyLDYgKzE3MjUsOCBAQAogCQlFMzk2M0NFRTFCNzNGNzUwMDBF
QjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0Fu
YWx5emVNb2R1bGUuY3BwICovOyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNN
b2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsg
fTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdD
MDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAgKi87IH07CisJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25t
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Qy
MzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRUY4ODc0MUI2NkRGMjMw
MDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJRTNFRjg4NzUxQjY2REYyMzAwM0Yy
NkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTQ5REMxNkIxMkVGMjkzRTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2Fj
aGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5
REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovOyB9OwpA
QCAtMzU1Myw2ICszNTU4LDkgQEAKIAkJRTE3ODYzNkMwRDlCRUVDMzAwRDc0RTc1IC8qIEluaXRp
YWxpemVUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
OEUzQTU2MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNM
YW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CiAJ
CUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNw
cDsgfTsKKwkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IE1vZHVsZUxvYWRlck9i
amVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMxOENCQkUxQjhBRUY1MTAw
QTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzYz
N0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZsZWN0T2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1NzcsNiArMzU4NSw4IEBACiAJCUUzOTYzQ0VDMUI3M0Y3
NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3Jk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3Jk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDIzOUM2
MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1
bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVs
ZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2
NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDc2NCw2ICs0Nzc0LDEwIEBACiAJCQkJQTcw
MDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmggKi8sCiAJCQkJQTc0REVGOEYxODJEOTkx
NDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuY3BwICovLAogCQkJCUE3NERFRjkwMTgyRDk5MTQw
MDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8sCisJCQkJRTNEMjM5QzYxQjgyOUMxQzAwQkJF
RjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovLAorCQkJCUUzRDIzOUM3MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8sCisJCQkJRTMxOENCQkUxQjhBRUY1
MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLywKKwkJCQlFMzE4Q0JC
RjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLywKIAkJCQlF
MzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovLAogCQkJCUUz
OURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovLAogCQkJCUE3Mjcw
MDc4MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCAqLywKQEAgLTU3ODUsNiAr
NTc5OSw3IEBACiAJCQkJRTM1RTAzNjExQjdBQjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdC5qcyAqLywKIAkJCQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4NTYgLyog
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNUIxQjY1RDlBMzAw
OURCMUVGIC8qIEl0ZXJhdG9yLnByb3RvdHlwZS5qcyAqLywKKwkJCQlFMzA2Nzc5NzFCOEJDNkY1
MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzICovLAogCQkJCTdDRjlCQzVDMUI2NUQ5
QjEwMDlEQjFFRiAvKiBPYmplY3RDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1RDFCNjVE
OUIxMDA5REIxRUYgLyogT3BlcmF0aW9ucy5Qcm9taXNlLmpzICovLAogCQkJCTdDRkJBQzFDMThC
NTM1RTUwMEQwMDc1MCAvKiBQcm9taXNlLnByb3RvdHlwZS5qcyAqLywKQEAgLTYxMTksNiArNjEz
NCw3IEBACiAJCQkJMEYyQjlDRTkxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDlBMjk4MTdBMEJDNzQwMEVFMjYx
OCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZDMTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkYwRjE5QjE2QjcyOUZBMDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3Rh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUZCODY4MUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dl
YWtTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBE
RkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjUyLDYg
KzYyNjgsNyBAQAogCQkJCTdCMDI0NzU3MUI4NjgyRTQwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25Q
YXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTEwMTcwNTEzREIwMEJCNzIyQyAvKiBG
VExMb3dlckRGR1RvTExWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlEMDIxN0EwQjkwNDAw
NzczQUQ4IC8qIEZUTExvd2VyZWROb2RlVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMThD
QkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEOEEzMUMxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjIzNUJERDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCREUxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4
aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtNzAyOSw2ICs3MDQ2LDcgQEAK
IAkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJRTMwNjc3OTgxQjhCQzZGNTAwM0Y4N0YwIC8q
IE1vZHVsZUxvYWRlck9iamVjdC5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTUzRjFBQzAxOEM5
MEY4RjAwNzJFQjZEIC8qIGZyYW1ld29yay5zYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC03MzYzLDYgKzczODEs
NyBAQAogCQkJCTBGNkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURl
dGFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyog
Q29kZVByb2ZpbGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQzQzE2Njc2MzEzMDBE
NjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlF
M0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjhGOTQ0MjE2Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzExMDdFQzM3NjAwNDI3QTQ4IC8qIENvbW1vbklkZW50
aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUM1RTVFMThFMzVGNUUwMEQ0MzFDMyAv
KiBGVExEV0FSRlJlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzQ0Miw2ICs3NDYxLDcg
QEAKIAkJCQkwRkQxMjAzMzFBOEM4NUJEMDAwRjUyODAgLyogRlRMSlNDYWxsVmFyYXJncy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5NjE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hl
ZEF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzM0Y1MDg0MUI4NDM3QTAwMDQxMzg1NiAvKiBK
U0ludGVybmFsUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMThDQkMw
MUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjlEMzY5NDFBRTlDQzMzMDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0Y3MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVz
aEZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYg
LyogREZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtODA5MSw2ICs4MTExLDcg
QEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSAwRkNFRkFCRTE4MDVEODY5MDA0NzJDRTQgLyogTExWTUZvckpTQy54Y2NvbmZp
ZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5B
QkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTgwOTgs
NiArODExOSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gMEZDRUZBQkUxODA1RDg2OTAwNDcyQ0U0IC8qIExMVk1Gb3JK
U0MueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9E
VUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJ
fTsKQEAgLTgxMDUsNiArODEyNyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
IAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMEZDRUZBQkUxODA1RDg2OTAwNDcyQ0U0
IC8qIExMVk1Gb3JKU0MueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVO
QUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0g
UHJvZmlsaW5nOwogCQl9OwpAQCAtODExMiw2ICs4MTM1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAwRkNFRkFCRTE4
MDVEODY5MDA0NzJDRTQgLyogTExWTUZvckpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJ
fTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtODExOSw2ICs4MTQzLDcgQEAKIAkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVu
Y2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcg
Ki87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJM
RV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC04MTI2LDYg
KzgxNTEsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0
YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9N
T0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwog
CQl9OwpAQCAtODEzMyw2ICs4MTU5LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0
NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQlu
YW1lID0gUHJvZmlsaW5nOwogCQl9OwpAQCAtODE0MCw2ICs4MTY3LDcgQEAKIAkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAy
MUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9E
VUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTgxNjgsNiArODE5
Niw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3Jl
LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVM
RVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpA
QCAtODE3NSw2ICs4MjA0LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyog
SmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVO
QUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0g
UmVsZWFzZTsKIAkJfTsKQEAgLTgxODMsNiArODIxMyw3IEBACiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54
Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CiAJCQkJQlVJTERfVkFSSUFOVFMgPSBu
b3JtYWw7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJ
fTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtODE5MCw2ICs4MjIxLDcgQEAKIAkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVu
Y2UgPSA1REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVM
RVM7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtODE5Nyw2ICs4MjI5LDcgQEAK
IAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSA1REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovOwogCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01P
RFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC04MjA0LDYgKzgyMzcs
NyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi87
CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9F
UzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTgzMzUs
NiArODM2OSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3Jp
cHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2
X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSAiRGVy
aXZlZCBTb3VyY2VzIGNvcHktSW5mby5wbGlzdCI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2
ZWQgU291cmNlcyBjb3B5IjsKIAkJCX07CkBAIC04MzQ0LDYgKzgzNzksNyBAQAogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFD
OTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9N
T0RVTEVTOwogCQkJCUlORk9QTElTVF9GSUxFID0gIkRlcml2ZWQgU291cmNlcyBjb3B5LUluZm8u
cGxpc3QiOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CiAJCQl9
OwpAQCAtODM1Myw2ICs4Mzg5LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwog
CQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAg
LyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlJTkZPUExJU1Rf
RklMRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weS1JbmZvLnBsaXN0IjsKIAkJCQlQUk9EVUNUX05B
TUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOwogCQkJfTsKQEAgLTgzNjIsNiArODM5OSw3IEBA
CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVm
ZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29u
ZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBF
TkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSAiRGVyaXZlZCBTb3VyY2Vz
IGNvcHktSW5mby5wbGlzdCI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBj
b3B5IjsKIAkJCX07CkBAIC04MzcxLDYgKzg0MDksNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4
QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJ
CVBST0RVQ1RfTkFNRSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOwogCQkJfTsKIAkJCW5h
bWUgPSBEZWJ1ZzsKQEAgLTgzNzksNiArODQxOCw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThB
NzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJ
UFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CiAJCQl9OwogCQkJbmFt
ZSA9IFJlbGVhc2U7CkBAIC04Mzg3LDYgKzg0MjcsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4
QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJ
CVBST0RVQ1RfTkFNRSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOwogCQkJfTsKIAkJCW5h
bWUgPSBQcm9kdWN0aW9uOwpAQCAtODQxMCw2ICs4NDUxLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBC
QTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsK
IAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5nOwogCQl9OwpAQCAtODQxNyw2ICs4NDU5LDcgQEAK
IAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25m
aWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVO
QUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlQUk9EVUNUX05BTUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBT
b3VyY2VzIjsKIAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5nOwpAQCAtODQzOSw2ICs4NDgyLDcg
QEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSA1REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovOwog
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2
X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2ZpbGluZzsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzCmluZGV4
IDY1YTA1Mzk2NGRmNDg3NzM1ZTY3NWY0YjkxNzgzNjgxMGNkZDlhMzIuLjVkOTE3MDg5NWIwMzMx
YjEzMjg2Y2RiODU1ZWE0YzkzYTc4Y2YyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qcwpAQCAtMTkyLDcgKzE5Miw3IEBA
IGZ1bmN0aW9uIGNvbW1pdEluc3RhbnRpYXRlZChlbnRyeSwgb3B0aW9uYWxJbnN0YW5jZSwgc291
cmNlKQogICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjcKIAog
ICAgIHZhciBkZXBlbmRlbmNpZXMgPSBbXTsKLSAgICB2YXIgZGVwZW5kZW5jaWVzTWFwID0gbmV3
IEBNYXAoKTsKKyAgICB2YXIgZGVwZW5kZW5jaWVzTWFwID0gbW9kdWxlUmVjb3JkLmRlcGVuZGVu
Y2llc01hcDsKICAgICBtb2R1bGVSZWNvcmQucmVnaXN0cnlFbnRyeSA9IGVudHJ5OwogICAgIHZh
ciByZXF1ZXN0ZWRNb2R1bGVzID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7
CiAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHJlcXVlc3RlZE1vZHVsZXMubGVuZ3RoOyBp
IDwgbGVuZ3RoOyArK2kpIHsKQEAgLTM0OSw3ICszNDksNyBAQCBmdW5jdGlvbiByZXF1ZXN0UmVz
b2x2ZURlcGVuZGVuY2llcyhrZXkpCiAgICAgdmFyIHJlc29sdmVEZXBlbmRlbmNpZXNQcm9taXNl
ID0gdGhpcy5yZXF1ZXN0SW5zdGFudGlhdGUoa2V5KS50aGVuKGZ1bmN0aW9uIChlbnRyeSkgewog
ICAgICAgICB2YXIgZGVwTG9hZHMgPSBbXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0
aCA9IGVudHJ5LmRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgdmFyIHBhaXIgPSBlbnRyeS5kZXBlbmRlbmNpZXNbaV07CisgICAgICAgICAgICBsZXQg
cGFpciA9IGVudHJ5LmRlcGVuZGVuY2llc1tpXTsKIAogICAgICAgICAgICAgLy8gSG9vayBwb2lu
dC4KICAgICAgICAgICAgIC8vIDEuIExvYWRlci5yZXNvbHZlLgpAQCAtMzYxLDE1ICszNjEsMjEg
QEAgZnVuY3Rpb24gcmVxdWVzdFJlc29sdmVEZXBlbmRlbmNpZXMoa2V5KQogCiAgICAgICAgICAg
ICAgICAgLy8gUmVjdXJzaXZlIHJlc29sdmluZy4gVGhlIGRlcGVuZGVuY2llcyBvZiB0aGlzIGVu
dHJ5IGlzIGJlaW5nIHJlc29sdmVkIG9yIGFscmVhZHkgcmVzb2x2ZWQuCiAgICAgICAgICAgICAg
ICAgLy8gU3RvcCB0cmFjaW5nIHRoZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAg
ICAgICAgLy8gQnV0IHRvIHJldHJpZXZlIHRoZSBpbnN0YW50aWF0ZWQgbW9kdWxlIHJlY29yZCBj
b3JyZWN0bHksCisgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgaW5z
dGFudGlhdGlvbiBmb3IgdGhlIGRlcGVuZGVudCBtb2R1bGUuCisgICAgICAgICAgICAgICAgLy8g
Rm9yIGV4YW1wbGUsIHJlYWNoaW5nIGhlcmUsIHRoZSBtb2R1bGUgaXMgc3RhcnRpbmcgcmVzb2x2
aW5nIHRoZSBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgLy8gQnV0IHRoZSBtb2R1bGUg
bWF5IG9yIG1heSBub3QgcmVhY2ggdGhlIGluc3RhbnRpYXRpb24gcGhhc2UgaW4gdGhlIGxvYWRl
cidzIHBpcGVsaW5lLgorICAgICAgICAgICAgICAgIC8vIElmIHdlIHdhaXQgZm9yIHRoZSBSZXNv
bHZlRGVwZW5kZW5jaWVzIGZvciB0aGlzIG1vZHVsZSwgaXQgY29uc3RydWN0IHRoZSBjaXJjdWxh
ciBwcm9taXNlIGNoYWluIGFuZAorICAgICAgICAgICAgICAgIC8vIHJlamVjdGVkIGJ5IHRoZSBQ
cm9taXNlcyBydW50aW1lLiBTaW5jZSBvbmx5IHdlIG5lZWQgaXMgdGhlIGluc3RhbnRpYXRlZCBt
b2R1bGUsIGluc3RlYWQgb2Ygd2FpdGluZworICAgICAgICAgICAgICAgIC8vIHRoZSBSZXNvbHZl
RGVwZW5kZW5jaWVzIGZvciB0aGlzIG1vZHVsZSwgd2UganVzdCB3YWl0IEluc3RhbnRpYXRlIGZv
ciB0aGlzLgogICAgICAgICAgICAgICAgIGlmIChkZXBFbnRyeS5yZXNvbHZlRGVwZW5kZW5jaWVz
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBkZXBFbnRyeS5tb2R1bGU7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXBFbnRyeTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGRlcEVudHJ5Lmluc3RhbnRpYXRlLnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwYWlyLnZhbHVlID0gZW50cnkubW9kdWxlOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RS
ZXNvbHZlRGVwZW5kZW5jaWVzKGRlcEtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZSByZXN1bHQgcHJvbWlzZSBvZiB0aGUgcmVxdWVz
dEluc3RhbnRpYXRlQWxsIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aAotICAgICAgICAgICAgICAg
ICAgICAvLyB0aGUgcmVnaXN0cnkgZW50cnkuCi0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS93aGF0d2cvbG9hZGVyL3B1bGwvNjYKICAgICAgICAgICAgICAgICAgICAg
cGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVu
dHJ5OwogICAgICAgICAgICAgICAgIH0pOwpAQCAtMzk2LDYgKzQwMiw5MCBAQCBmdW5jdGlvbiBy
ZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5KQogICAgIHJldHVybiB0aGlzLnJlcXVlc3RSZXNvbHZl
RGVwZW5kZW5jaWVzKGtleSk7CiB9CiAKK2Z1bmN0aW9uIHJlcXVlc3RMaW5rKGtleSkKK3sKKyAg
ICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZXF1ZXN0LWxpbmsKKworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChr
ZXkpOworICAgIGlmIChlbnRyeS5zdGF0ZSA+IHRoaXMuTGluaykgeworICAgICAgICB2YXIgZGVm
ZXJyZWQgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQEludGVybmFsUHJvbWlzZSk7CisgICAgICAg
IGRlZmVycmVkLkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgZW50cnkubW9kdWxlKTsKKyAgICAg
ICAgcmV0dXJuIGRlZmVycmVkLkBwcm9taXNlOworICAgIH0KKworICAgIHZhciBsb2FkZXIgPSB0
aGlzOworICAgIHJldHVybiB0aGlzLnJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkpLnRoZW4oZnVu
Y3Rpb24gKGVudHJ5KSB7CisgICAgICAgIGxvYWRlci5saW5rKGVudHJ5KTsKKyAgICAgICAgcmV0
dXJuIGVudHJ5OworICAgIH0pOworfQorCitmdW5jdGlvbiByZXF1ZXN0UmVhZHkoa2V5KQorewor
ICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtcmVhZHkKKwor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBsb2FkZXIgPSB0aGlzOworICAgIHJldHVybiB0
aGlzLnJlcXVlc3RMaW5rKGtleSkudGhlbihmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgbG9h
ZGVyLm1vZHVsZUV2YWx1YXRpb24oZW50cnkubW9kdWxlKTsKKyAgICB9KTsKK30KKworLy8gTGlu
a2luZyBzZW1hbnRpY3MuCisKK2Z1bmN0aW9uIGxpbmsoZW50cnkpCit7CisgICAgLy8gaHR0cHM6
Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jbGluaworCisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgLy8gRklYTUU6IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBvcHRp
b25hbEluc3RhbmNlLgorICAgIC8vIFNvIExpbmsncyBzdGVwIDMgaXMgc2tpcHBlZC4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTcxCisKKyAgICBp
ZiAoZW50cnkuc3RhdGUgPT09IHRoaXMuUmVhZHkpCisgICAgICAgIHJldHVybjsKKyAgICBlbnRy
eS5zdGF0ZSA9IHRoaXMuUmVhZHk7CisKKyAgICAvLyBTaW5jZSB3ZSBhbHJlYWR5IGhhdmUgdGhl
ICJkZXBlbmRlbmNpZXMiIGZpZWxkLAorICAgIC8vIHdlIGNhbiBjYWxsIG1vZHVsZURlY2xhcmF0
aW9uSW5zdGFudGlhdGlvbiB3aXRoIHRoZSBjb3JyZWN0IG9yZGVyCisgICAgLy8gd2l0aG91dCBj
b25zdHJ1Y3RpbmcgdGhlIGRlcGVuZGVuY3kgZ3JhcGggYnkgY2FsbGluZyBkZXBlbmRlbmN5R3Jh
cGguCisgICAgdmFyIGRlcGVuZGVuY2llcyA9IGVudHJ5LmRlcGVuZGVuY2llczsKKyAgICBmb3Ig
KHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytp
KSB7CisgICAgICAgIHZhciBwYWlyID0gZGVwZW5kZW5jaWVzW2ldOworICAgICAgICB0aGlzLmxp
bmsocGFpci52YWx1ZS5yZWdpc3RyeUVudHJ5KTsKKyAgICB9CisKKyAgICB0aGlzLm1vZHVsZURl
Y2xhcmF0aW9uSW5zdGFudGlhdGlvbihlbnRyeS5tb2R1bGUpOworfQorCisvLyBNb2R1bGUgc2Vt
YW50aWNzLgorCitmdW5jdGlvbiBtb2R1bGVFdmFsdWF0aW9uKG1vZHVsZVJlY29yZCkKK3sKKyAg
ICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMt
bW9kdWxlZXZhbHVhdGlvbgorCisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKG1vZHVsZVJl
Y29yZC5ldmFsdWF0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtb2R1bGVSZWNvcmQuZXZhbHVh
dGVkID0gdHJ1ZTsKKworICAgIHZhciBlbnRyeSA9IG1vZHVsZVJlY29yZC5yZWdpc3RyeUVudHJ5
OworCisgICAgLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBbW1JlcXVlc3RlZE1vZHVsZXNdXSBpcyBj
bG9uZWQgaW50byBlbnRyeS5kZXBlbmRlbmNpZXMuCisgICAgdmFyIGRlcGVuZGVuY2llcyA9IGVu
dHJ5LmRlcGVuZGVuY2llczsKKyAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5j
aWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBwYWlyID0gZGVwZW5k
ZW5jaWVzW2ldOworICAgICAgICB2YXIgcmVxdWlyZWRNb2R1bGVSZWNvcmQgPSBwYWlyLnZhbHVl
OworICAgICAgICB0aGlzLm1vZHVsZUV2YWx1YXRpb24ocmVxdWlyZWRNb2R1bGVSZWNvcmQpOwor
ICAgIH0KKyAgICB0aGlzLmV2YWx1YXRlKG1vZHVsZVJlY29yZCk7Cit9CisKIGZ1bmN0aW9uIGxv
YWRNb2R1bGUobW9kdWxlTmFtZSwgcmVmZXJyZXIpCiB7CiAgICAgInVzZSBzdHJpY3QiOwpAQCAt
NDA2LDExICs0OTYsNyBAQCBmdW5jdGlvbiBsb2FkTW9kdWxlKG1vZHVsZU5hbWUsIHJlZmVycmVy
KQogICAgIC8vIFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVuaXF1ZSBpZGVu
dGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCiAgICAgLy8gRm9yIGV4YW1wbGUsIHRh
a2UgdGhlICJqcXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291cmNlLgogICAg
IHJldHVybiB0aGlzLnJlc29sdmUobW9kdWxlTmFtZSwgcmVmZXJyZXIpLnRoZW4oZnVuY3Rpb24g
KGtleSkgewotICAgICAgICAvLyBGSVhNRTogTm93LCB3ZSBkb24ndCBpbXBsZW1lbnQgdGhlIGxp
bmtpbmcgcGhhc2UgeWV0LgotICAgICAgICAvLyBTbyBoZXJlLCB3ZSBqdXN0IGNhbGwgcmVxdWVz
dEluc3RhbnRpYXRlQWxsIHRvIG9ubHkgcGVyZm9ybSB0aGUgbW9kdWxlIGxvYWRpbmcuCi0gICAg
ICAgIC8vIEF0IGxhc3QsIGl0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHJlcXVlc3RSZWFkeS4K
LSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE3
MgotICAgICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkpOworICAg
ICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RSZWFkeShrZXkpOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXgg
NGU1YTk2YzM4ZWQ4NjI3NzQ0MmNhMjYxOWM1YzhjYWMyOWNlODJhYS4uMDIwZWMyNDg5ZWZlM2Ez
MzI5ODViNzA5MTBkZWNjZjc4ZDQ5YTk2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTU3LDYgKzE1Nyw3IEBACiAgICAgICAg
ICJieXRlY29kZXMiIDogWwogICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfcHJvZ3JhbV9w
cm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2V2YWxfcHJvbG9ndWUi
IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1
ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3By
b2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrIiB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAyMGMxNDdhMDE1ZDJjNDNkZWMzODNmN2JhYTgxMGE2
NmE5MTkxNDYyLi5kNmJjNjJhMDVkN2UxMzcyNTA2ZjY4YWNlNDRjZWRmMTFhMTRjNzMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDgsNiAr
NDgsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVu
dmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTg3LDYgKzg4
LDggQEAgQ1N0cmluZyBDb2RlQmxvY2s6OmluZmVycmVkTmFtZSgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiAiPGV2YWw+IjsKICAgICBjYXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAgcmV0dXJuIGpz
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmluZmVycmVkTmFt
ZSgpLnV0ZjgoKTsKKyAgICBjYXNlIE1vZHVsZUNvZGU6CisgICAgICAgIHJldHVybiAiPG1vZHVs
ZT4iOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIHJldHVybiBDU3Ry
aW5nKCIiLCAwKTsKQEAgLTE5NjgsOSArMTk3MSwxNCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxp
bgogICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1f
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50
LCBHZXQsIHR5cGUpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQg
PSBvcC50eXBlOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51Lm9wZXJhbmQgPSBv
cC5kZXB0aDsKLSAgICAgICAgICAgIGlmIChvcC5sZXhpY2FsRW52aXJvbm1lbnQpCi0gICAgICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnN5bWJvbFRhYmxlLnNldCgqdm0oKSwgb3du
ZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCkpOwotICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKG9wLmxleGljYWxFbnZpcm9ubWVudCkgewor
ICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZhcikgeworICAgICAgICAgICAg
ICAgICAgICAvLyBLZWVwIHRoZSBsaW5rZWQgbW9kdWxlIGVudmlyb25tZW50IHN0cm9uZ2x5IHJl
ZmVyZW5jZWQuCisgICAgICAgICAgICAgICAgICAgIGFkZENvbnN0YW50KG9wLmxleGljYWxFbnZp
cm9ubWVudCk7CisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5qc0Nl
bGwuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9ubWVudCk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tp
ICsgNl0udS5zeW1ib2xUYWJsZS5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3AubGV4aWNh
bEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5wb2ludGVyID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xOTk1LDcgKzIwMDMsMTIgQEAgQ29kZUJsb2Nr
OjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENv
ZGVCbG9jayogdW5saW4KICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRl
bnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNT
Y29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2Fs
U2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIG1vZGVBbmRUeXBlLnR5cGUoKSk7CiAKLSAg
ICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gUmVzb2x2ZU1vZGVBbmRU
eXBlKG1vZGVBbmRUeXBlLm1vZGUoKSwgb3AudHlwZSkub3BlcmFuZCgpOworICAgICAgICAgICAg
Ly8gTW9kdWxlVmFyIGNhbiBnZXQgdGhlIHZhcmlhYmxlIGFzIHRoZSBzYW1lIHRvIENsb3N1cmVW
YXIuCisgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBNb2R1bGVWYXIpCisgICAgICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUobW9k
ZUFuZFR5cGUubW9kZSgpLCBDbG9zdXJlVmFyKS5vcGVyYW5kKCk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBSZXNvbHZl
TW9kZUFuZFR5cGUobW9kZUFuZFR5cGUubW9kZSgpLCBvcC50eXBlKS5vcGVyYW5kKCk7CisKICAg
ICAgICAgICAgIGlmIChvcC50eXBlID09IEdsb2JhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MpCiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyA1XS51LndhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwogICAgICAgICAgICAgZWxz
ZSBpZiAob3Auc3RydWN0dXJlKQpAQCAtMjA2MywxNyArMjA3NiwxOCBAQCBDb2RlQmxvY2s6OkNv
ZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbgogICAgICAgICAgICAgICAgIC8vIHdlJ3JlIGFic3RyYWN0bHkgInJlYWQiaW5n
IGZyb20gYSBKU1Njb3BlLgogICAgICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6
OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3Bl
RGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCB0eXBlKTsKIAotICAgICAgICAgICAgICAgIGlmIChv
cC50eXBlID09IENsb3N1cmVWYXIpCisgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xv
c3VyZVZhciB8fCBvcC50eXBlID09IE1vZHVsZVZhcikKICAgICAgICAgICAgICAgICAgICAgc3lt
Ym9sVGFibGUgPSBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIpCiAgICAgICAgICAgICAgICAg
ICAgIHN5bWJvbFRhYmxlID0gbV9nbG9iYWxPYmplY3QuZ2V0KCktPnN5bWJvbFRhYmxlKCk7Ci0g
ICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaW1w
bCA9IChvcC50eXBlID09IE1vZHVsZVZhcikgPyBvcC5pbXBvcnRlZE5hbWUuZ2V0KCkgOiBpZGVu
dC5pbXBsKCk7CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2sp
OwogICAgICAgICAgICAgICAgICAgICAvLyBJZiBvdXIgcGFyZW50IHNjb3BlIHdhcyBjcmVhdGVk
IHdoaWxlIHByb2ZpbGluZyB3YXMgZGlzYWJsZWQsIGl0IHdpbGwgbm90IGhhdmUgcHJlcGFyZWQg
Zm9yIHByb2ZpbGluZyB5ZXQuCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVw
YXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIpOwotICAgICAgICAgICAgICAgICAgICBnbG9iYWxW
YXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpZGVu
dC5pbXBsKCksICp2bSgpKTsKLSAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVHlwZVNldCA9IHN5
bWJvbFRhYmxlLT5nbG9iYWxUeXBlU2V0Rm9yVmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCks
ICp2bSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRh
YmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwgaW1wbCwgKnZtKCkpOworICAgICAgICAg
ICAgICAgICAgICBnbG9iYWxUeXBlU2V0ID0gc3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JW
YXJpYWJsZShsb2NrZXIsIGltcGwsICp2bSgpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IFR5cGVQcm9maWxlck5vR2xvYmFs
SURFeGlzdHM7CiAKQEAgLTMwMjMsNiArMzAzNywxMSBAQCBDb2RlQmxvY2sqIFByb2dyYW1Db2Rl
QmxvY2s6OnJlcGxhY2VtZW50KCkKICAgICByZXR1cm4ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxl
Kj4ob3duZXJFeGVjdXRhYmxlKCkpLT5jb2RlQmxvY2soKTsKIH0KIAorQ29kZUJsb2NrKiBNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOjpyZXBsYWNlbWVudCgpCit7CisgICAgcmV0dXJuIGpzQ2FzdDxN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7
Cit9CisKIENvZGVCbG9jayogRXZhbENvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogewogICAgIHJl
dHVybiBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9j
aygpOwpAQCAtMzAzOCw2ICszMDU3LDExIEBAIERGRzo6Q2FwYWJpbGl0eUxldmVsIFByb2dyYW1D
b2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbEludGVybmFsKCkKICAgICByZXR1cm4gREZHOjpwcm9n
cmFtQ2FwYWJpbGl0eUxldmVsKHRoaXMpOwogfQogCitERkc6OkNhcGFiaWxpdHlMZXZlbCBNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpCit7CisgICAgcmV0
dXJuIERGRzo6cHJvZ3JhbUNhcGFiaWxpdHlMZXZlbCh0aGlzKTsKK30KKwogREZHOjpDYXBhYmls
aXR5TGV2ZWwgRXZhbENvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKQogewogICAg
IHJldHVybiBERkc6OmV2YWxDYXBhYmlsaXR5TGV2ZWwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggOTQ5OTQwNTY0M2FhOTEzZGM3OGU3OTlh
YTBjYzU2NzJlYjM2ZWYzYy4uMWZmMTZmZTM5MjIyMjhjZmM4YzMxZWFkYzZmZmY5M2ViYjBiYzZk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODIs
NiArODIsNyBAQCBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiBjbGFzcyBSZXBhdGNoQnVmZmVyOwogY2xhc3MgVHlwZUxvY2F0aW9uOworY2xhc3MgSlNNb2R1
bGVFbnZpcm9ubWVudDsKIAogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291bnRSZW9w
dGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwogCkBAIC0xMDkwLDEwICsxMDkxLDI5
IEBAIGNsYXNzIFByb2dyYW1Db2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKICNl
bmRpZgogfTsKIAorY2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxD
b2RlQmxvY2sgeworcHVibGljOgorICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ29weVBhcnNl
ZEJsb2NrVGFnLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrJiBvdGhlcikKKyAgICAgICAgOiBHbG9i
YWxDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrLCBvdGhlcikKKyAgICB7CisgICAgfQorCisgICAg
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
LCBKU1Njb3BlKiBzY29wZSwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlk
ZXIsIHVuc2lnbmVkIGZpcnN0TGluZUNvbHVtbk9mZnNldCkKKyAgICAgICAgOiBHbG9iYWxDb2Rl
QmxvY2sob3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIHNvdXJjZVBy
b3ZpZGVyLCAwLCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgeworICAgIH0KKworI2lmIEVO
QUJMRShKSVQpCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50
KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5
TGV2ZWxJbnRlcm5hbCgpIG92ZXJyaWRlOworI2VuZGlmCit9OworCiBjbGFzcyBFdmFsQ29kZUJs
b2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiBwdWJsaWM6CiAgICAgRXZhbENvZGVCbG9j
ayhDb3B5UGFyc2VkQmxvY2tUYWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQotICAgIDogR2xvYmFs
Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCisgICAgICAgIDogR2xvYmFsQ29kZUJs
b2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCiAgICAgewogICAgIH0KICAgICAgICAgCkBAIC0x
MTE4LDcgKzExMzgsNyBAQCBjbGFzcyBFdmFsQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVC
bG9jayB7CiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jayA6IHB1YmxpYyBDb2RlQmxvY2sgewogcHVi
bGljOgogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywgRnVuY3Rpb25D
b2RlQmxvY2smIG90aGVyKQotICAgIDogQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIp
CisgICAgICAgIDogQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCiAgICAgewogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAKaW5kZXgg
OGIyY2FkNTZhYjY4YWYxMmIzMmJmMjljZDg0MGFjMGFhNzE4M2Q0OC4uMGM3MDQzZGZhM2VhZmZl
OWY5NDZhZGQ5MTc5M2ZlNjI1N2FhZTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZVR5cGUuY3BwCkBAIC00Miw2ICs0Miw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBKU0M6OkNvZGVUeXBlIGNvZGVUeXBlKQogICAgIGNhc2UgSlNDOjpG
dW5jdGlvbkNvZGU6CiAgICAgICAgIG91dC5wcmludCgiRnVuY3Rpb24iKTsKICAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgSlNDOjpNb2R1bGVDb2RlOgorICAgICAgICBvdXQucHJpbnQoIk1vZHVs
ZSIpOworICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaApp
bmRleCBiOGUxMDdkY2Y2YjY3MGNkODI4M2ViZmE1MzUxZjdjNjM0MmYwMjNjLi45OTQxZDUxNGNk
ZDBjNWZmZTMwZjFhODg0ZjNiYTU0YzZmMDBmODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZVR5cGUuaApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotZW51bSBDb2RlVHlwZSB7IEdsb2JhbENvZGUsIEV2YWxDb2RlLCBGdW5jdGlvbkNvZGUgfTsK
K2VudW0gQ29kZVR5cGUgeyBHbG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVuY3Rpb25Db2RlLCBNb2R1
bGVDb2RlIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA1NzRiMWU0ODIz
ODk4YjM4MDE0ZDUxODI5ZWFiN2Y3MTMwOWRiYjBhLi40NjA5NWQ4NGJjY2E2MDY3NWZlZmRlN2Y0
MDAyNzUyZGQ5YWViNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlu
a2VkQ29kZUJsb2NrIiwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZENvZGVCbG9j
aykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jazo6c19pbmZvID0g
eyAiVW5saW5rZWRHbG9iYWxDb2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFVubGlua2VkR2xvYmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2spIH07Citjb25zdCBDbGFzc0luZm8gVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2siLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6
OnNfaW5mbyA9IHsgIlVubGlua2VkRXZhbENvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRFdmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJ
bmZvIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2spIH07CiAKQEAgLTg5LDcgKzkwLDYgQEAgdm9pZCBVbmxpbmtl
ZENvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIFVubGlua2VkQ29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2Vk
Q29kZUJsb2NrKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sVGFibGUpOwogICAg
IGZvciAoRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yOjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0
LT5tX2Z1bmN0aW9uRGVjbHMuYmVnaW4oKSwgZW5kID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkRl
Y2xzLmVuZCgpOyBwdHIgIT0gZW5kOyArK3B0cikKICAgICAgICAgdmlzaXRvci5hcHBlbmQocHRy
KTsKICAgICBmb3IgKEZ1bmN0aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0b3IgcHRyID0gdGhp
c09iamVjdC0+bV9mdW5jdGlvbkV4cHJzLmJlZ2luKCksIGVuZCA9IHRoaXNPYmplY3QtPm1fZnVu
Y3Rpb25FeHBycy5lbmQoKTsgcHRyICE9IGVuZDsgKytwdHIpCkBAIC0yOTIsNiArMjkyLDE0IEBA
IHZvaWQgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKIH0KIAordm9pZCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
c3ltYm9sVGFibGUpOworfQorCiBVbmxpbmtlZENvZGVCbG9jazo6flVubGlua2VkQ29kZUJsb2Nr
KCkKIHsKIH0KQEAgLTMwMSw2ICszMDksMTEgQEAgdm9pZCBVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2s6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIGpzQ2FzdDxVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqPihjZWxsKS0+flVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaygpOwogfQogCit2b2lkIFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7Cisg
ICAganNDYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpLT5+VW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCk7Cit9CisKIHZvaWQgVW5saW5rZWRFdmFsQ29kZUJs
b2NrOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKICAgICBqc0Nhc3Q8VW5saW5rZWRFdmFsQ29k
ZUJsb2NrKj4oY2VsbCktPn5VbmxpbmtlZEV2YWxDb2RlQmxvY2soKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMzIyZDI2
MTk5Zjc5N2MxMDM4MWRkNDU4OTNiZDUzNTNmZjFiNmI0Ni4uODhjZTIzMTNjYWNhMDg4MmQ4NmMx
ZjI4NzcwYTNhMDk4NzA2YjZjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTM2MCw5ICszNjAsNiBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAg
ICBpZiAoY29kZVR5cGUoKSA9PSBHbG9iYWxDb2RlKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkp
OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTQxMiw4ICs0MDksNiBAQCBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBt
X2Z1bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25F
eHByczsKIAotICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKLQog
ICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKIAogI2lm
IEVOQUJMRShCWVRFQ09ERV9DT01NRU5UUykKQEAgLTUxNCw2ICs1MDksNDkgQEAgY2xhc3MgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkR2xvYmFsQ29kZUJs
b2NrIHsKICAgICBERUNMQVJFX0lORk87CiB9OwogCitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgeworcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOworICAgIHN0YXRpYyBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSogdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZv
JiBpbmZvKQorICAgIHsKKyAgICAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jaz4odm0tPmhlYXApKSBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sodm0s
IHZtLT51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8p
OworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKKyAgICAgICAgcmV0dXJu
IGluc3RhbmNlOworICAgIH0KKworcHVibGljOgorICAgIHR5cGVkZWYgVW5saW5rZWRHbG9iYWxD
b2RlQmxvY2sgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
KCkgeyByZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbykKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUs
IE1vZHVsZUNvZGUsIGluZm8pCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
ICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkp
OworICAgIH0KKworICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsK
KworcHVibGljOgorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5
cGVJbmZvKFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1R5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87Cit9OworCiBjbGFzcyBVbmxp
bmtlZEV2YWxDb2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sg
ewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCA2MmMyZDNiYTQyNTc2MzhlODQwYmIzYTYyZDI3NzRiMGYzMTI3ZGZjLi4yNTJjZmYwYmM5
OGRmYmExY2VlODMyNjNkNDVhNDM1YWJlODdjZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNzAs
NyArNzAsOSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAg
IGlmIChtX25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMpCiAgICAgICAgIGluaXRpYWxpemVWYXJp
YWJsZSh2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKSwgbV9hcmd1bWVudHNSZWdp
c3Rlcik7CiAKLSAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCB0cnVlKTsKKyAgICAv
LyBGb3IgTW9kdWxlQ29kZSwgd2UgYWxyZWFkeSBpbnN0YW50aWF0ZWQgdGhlIGVudmlyb25tZW50
IGZvciB0aGUgbGV4aWNhbCB2YXJpYWJsZXMuCisgICAgaWYgKG1fY29kZVR5cGUgIT0gTW9kdWxl
Q29kZSkKKyAgICAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgdHJ1ZSk7CiAKICAg
ICB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wID0gbmV3VGVtcG9yYXJ5KCk7CkBA
IC01MDQsNiArNTA2LDE0MyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgIG1fVERaU3Rh
Y2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZmFsc2Up
KTsKIH0KIAorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9k
dWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2sqIGNvZGVCbG9jaywgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJN
b2RlIHByb2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMpCisgICAgOiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKE9wdGlvbnM6OmZvcmNl
RGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb24oKSB8fCBkZWJ1Z2dlck1vZGUgPT0gRGVidWdnZXJP
bikKKyAgICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhPcHRpb25zOjpmb3JjZVByb2ZpbGVy
Qnl0ZWNvZGVHZW5lcmF0aW9uKCkgfHwgcHJvZmlsZXJNb2RlID09IFByb2ZpbGVyT24pCisgICAg
LCBtX3Njb3BlTm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKKyAgICAsIG1fY29kZUJsb2NrKHZtLCBj
b2RlQmxvY2spCisgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9m
ZnNldCgpKQorICAgICwgbV9jb2RlVHlwZShNb2R1bGVDb2RlKQorICAgICwgbV92bSgmdm0pCisg
ICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQoreworICAgIEFTU0VSVF9VTlVTRUQocGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsK
KworICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJl
Z2lzdGVycykKKyAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7CisKKyAgICBpZiAo
bV9pc0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZh
bHNlOworCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gY29kZUJsb2NrLT5zeW1ib2xU
YWJsZSgpOworICAgIHN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25T
dHJpY3RFdmFsKTsKKyAgICBzeW1ib2xUYWJsZS0+c2V0U2NvcGVUeXBlKFN5bWJvbFRhYmxlOjpT
Y29wZVR5cGU6OkxleGljYWxTY29wZSk7CisKKyAgICAvLyBGb3IgdGhlIGV4cG9ydGVkIHZhcmlh
Ymxlcywgd2UgYWxyZWFkeSByZWdpc3RlciB0aGVtIHRvIHRoZSBzdG9yZWQgc3ltYm9sIHRhYmxl
LgorICAgIC8vIEV2ZW4gaWYgdGhlIHVubGlua2VkL2xpbmtlZCBjb2RlIGJsb2NrIGlzIHJlbW92
ZWQgYW5kIHN5bWJvbCB0YWJsZSBpcyByZWNyZWF0ZWQsCisgICAgLy8gdGhpcyBlbnN1cmVzIHRo
ZSBnZW5lcmF0ZWQgc3ltYm9sIHRhYmxlIGlzIGFsd2F5cyB0aGUgc2FtZS4KKworICAgIGJvb2wg
c2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwg
bV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsKKyAgICBib29sIHNob3VsZENhcHR1
cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51
c2VzRXZhbCgpOworICAgIGlmIChzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MpCisgICAgICAg
IG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKS5tYXJrQWxsVmFyaWFibGVzQXND
YXB0dXJlZCgpOworCisgICAgYXV0byBjYXB0dXJlcyA9IFsmXSAoVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCkgLT4gYm9vbCB7CisgICAgICAgIGlmICghc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5n
cykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1vZHVsZVByb2dy
YW1Ob2RlLT5jYXB0dXJlcyh1aWQpOworICAgIH07CisgICAgYXV0byBsb29rVXBWYXJLaW5kID0g
WyZdIChVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50
cnkmIGVudHJ5KSAtPiBWYXJLaW5kIHsKKyAgICAgICAgaWYgKGVudHJ5LmlzRXhwb3J0ZWQoKSkK
KyAgICAgICAgICAgIHJldHVybiBWYXJLaW5kOjpTY29wZTsKKyAgICAgICAgaWYgKGVudHJ5Lmlz
SW1wb3J0ZWROYW1lc3BhY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBWYXJLaW5kOjpTY29wZTsK
KyAgICAgICAgaWYgKGVudHJ5LmlzQ2FwdHVyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBWYXJL
aW5kOjpTY29wZTsKKyAgICAgICAgcmV0dXJuIGNhcHR1cmVzKHVpZCkgPyBWYXJLaW5kOjpTY29w
ZSA6IFZhcktpbmQ6OlN0YWNrOworICAgIH07CisKKyAgICBlbWl0T3Bjb2RlKG9wX2VudGVyKTsK
KworICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CisKKyAgICBtX2NhbGxlZVJlZ2lzdGVyLnNl
dEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisKKyAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1l
dGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgorCisgICAgZm9yIChGdW5jdGlv
bk1ldGFkYXRhTm9kZSogZnVuY3Rpb24gOiBtb2R1bGVQcm9ncmFtTm9kZS0+ZnVuY3Rpb25TdGFj
aygpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGl0ZXJhdG9yID0gbW9kdWxlUHJvZ3JhbU5vZGUt
PnZhckRlY2xhcmF0aW9ucygpLmZpbmQoZnVuY3Rpb24tPmlkZW50KCkuaW1wbCgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXRlcmF0b3IgIT0gbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xh
cmF0aW9ucygpLmVuZCgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWl0ZXJhdG9yLT52YWx1
ZS5pc0ltcG9ydGVkKCkpOworCisgICAgICAgIFZhcktpbmQgdmFyS2luZCA9IGxvb2tVcFZhcktp
bmQoaXRlcmF0b3ItPmtleS5nZXQoKSwgaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgaWYgKHZh
cktpbmQgPT0gVmFyS2luZDo6U2NvcGUpIHsKKyAgICAgICAgICAgIC8vIEhlYXAgYWxsb2NhdGVk
IGZ1bmN0aW9ucyBzaG91bGQgYmUgaW5zdGFudGlhdGVkIHdoZW4gdGhlIG1vZHVsZSBlbnZpcm9u
bWVudCBpcyBjcmVhdGVkLgorICAgICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVj
bChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IC8vIFN0YWNrIGFsbG9jYXRlZCBmdW5jdGlvbnMgY2FuIGJlIGFsbG9jYXRlZCB3aGVuIGV4ZWN1
dGluZyB0aGUgbW9kdWxlJ3MgYm9keS4KKyAgICAgICAgICAgIG1fZnVuY3Rpb25zVG9Jbml0aWFs
aXplLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihmdW5jdGlvbiwgTm9ybWFsRnVuY3Rpb25WYXJpYWJs
ZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTm93IGRlY2xhcmUgYWxsIHZhcmlhYmxl
cy4KKworICAgIGZvciAoYXV0byYgZW50cnkgOiBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFy
YXRpb25zKCkpIHsKKyAgICAgICAgQVNTRVJUKCFlbnRyeS52YWx1ZS5pc0xldCgpICYmICFlbnRy
eS52YWx1ZS5pc0NvbnN0KCkpOworICAgICAgICBpZiAoIWVudHJ5LnZhbHVlLmlzVmFyKCkpIC8v
IFRoaXMgaXMgZWl0aGVyIGEgcGFyYW1ldGVyIG9yIGNhbGxlZS4KKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNJbXBvcnRlZCgpICYmICFlbnRyeS52YWx1
ZS5pc0ltcG9ydGVkTmFtZXNwYWNlKCkpIC8vIFRoZXNlIGFyZSBtYW5hZ2VkIGluIHRoZSBvdGhl
ciBwaGFzZS4KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAvLyBWYXJpYWJsZXMgbmFt
ZWQgImFyZ3VtZW50cyIgYXJlIG5ldmVyIGNvbnN0LgorICAgICAgICBjcmVhdGVWYXJpYWJsZShJ
ZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGVudHJ5LmtleS5nZXQoKSksIGxvb2tVcFZhcktpbmQo
ZW50cnkua2V5LmdldCgpLCBlbnRyeS52YWx1ZSksIHN5bWJvbFRhYmxlLCBJZ25vcmVFeGlzdGlu
Zyk7CisgICAgfQorCisgICAgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQgPSBtb2R1
bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpOworCisgICAgeworICAgICAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgZm9y
IChhdXRvJiBlbnRyeSA6IGVudmlyb25tZW50KSB7CisgICAgICAgICAgICBBU1NFUlQoZW50cnku
dmFsdWUuaXNMZXQoKSB8fCBlbnRyeS52YWx1ZS5pc0NvbnN0KCkpOworICAgICAgICAgICAgQVNT
RVJUKCFlbnRyeS52YWx1ZS5pc1ZhcigpKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkg
c3ltYm9sVGFibGVFbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQobG9ja2VyLCBlbnRyeS5rZXkuZ2V0
KCkpOworICAgICAgICAgICAgQVNTRVJUKHN5bWJvbFRhYmxlRW50cnkuaXNOdWxsKCkpOworCisg
ICAgICAgICAgICAvLyBJbXBvcnRlZCB2YXJpYWJsZXMgYXJlIGhhbmRsZWQgaW5zaWRlIHRoZSB0
b3AtbW9zdCBtb2R1bGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUu
aXNJbXBvcnRlZCgpICYmICFlbnRyeS52YWx1ZS5pc0ltcG9ydGVkTmFtZXNwYWNlKCkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIFZhcktpbmQgdmFyS2luZCA9IGxv
b2tVcFZhcktpbmQoZW50cnkua2V5LmdldCgpLCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICBW
YXJPZmZzZXQgdmFyT2Zmc2V0OworICAgICAgICAgICAgaWYgKHZhcktpbmQgPT0gVmFyS2luZDo6
U2NvcGUpCisgICAgICAgICAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KHN5bWJvbFRhYmxl
LT50YWtlTmV4dFNjb3BlT2Zmc2V0KGxvY2tlcikpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKHZhcktpbmQgPT0gVmFyS2luZDo6U3RhY2spOworICAgICAgICAg
ICAgICAgIFJlZ2lzdGVySUQqIGxvY2FsID0gbmV3QmxvY2tTY29wZVZhcmlhYmxlKCk7CisgICAg
ICAgICAgICAgICAgbG9jYWwtPnJlZigpOworICAgICAgICAgICAgICAgIHZhck9mZnNldCA9IFZh
ck9mZnNldChsb2NhbC0+dmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgZW50cnkudmFsdWUu
aXNDb25zdCgpID8gUmVhZE9ubHkgOiAwKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGQo
bG9ja2VyLCBlbnRyeS5rZXkuZ2V0KCksIG5ld0VudHJ5KTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIFJlZ2lzdGVySUQqIGNvbnN0YW50U3ltYm9sVGFibGUgPSBudWxscHRyOworICAgIGlmICh2
bS50eXBlUHJvZmlsZXIoKSkKKyAgICAgICAgY29uc3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0
YW50VmFsdWUoc3ltYm9sVGFibGUpOworICAgIGVsc2UKKyAgICAgICAgY29uc3RhbnRTeW1ib2xU
YWJsZSA9IGFkZENvbnN0YW50VmFsdWUoc3ltYm9sVGFibGUtPmNsb25lU2NvcGVQYXJ0KCptX3Zt
KSk7CisKKyAgICBtX1REWlN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihlbnZpcm9ubWVudCwg
dHJ1ZSkpOworICAgIG1fc3ltYm9sVGFibGVTdGFjay5hcHBlbmQoU3ltYm9sVGFibGVTdGFja0Vu
dHJ5IHsgU3Ryb25nPFN5bWJvbFRhYmxlPigqbV92bSwgc3ltYm9sVGFibGUpLCBtX3Njb3BlUmVn
aXN0ZXIsIGZhbHNlLCBjb25zdGFudFN5bWJvbFRhYmxlLT5pbmRleCgpIH0pOworCisgICAgLy8g
UHJlZmlsbCBzdGFjayB2YXJpYWJsZXMgd2l0aCB0aGUgVERaIGVtcHR5IHZhbHVlLgorICAgIC8v
IFNjb3BlIHZhcmlhYmxlcyB3aWxsIGJlIGluaXRpYWxpemVkIHRvIHRoZSBURFogZW1wdHkgdmFs
dWUgd2hlbiBKU0xleGljYWxFbnZpcm9ubWVudCBpcyBhbGxvY2F0ZWQuCisgICAgZm9yIChhdXRv
JiBlbnRyeSA6IGVudmlyb25tZW50KSB7CisgICAgICAgIC8vIEltcG9ydGVkIHZhcmlhYmxlcyBh
cmUgYWxyZWFkeSBpbml0aWFsaXplZC4KKyAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzSW1wb3J0
ZWQoKSAmJiAhZW50cnkudmFsdWUuaXNJbXBvcnRlZE5hbWVzcGFjZSgpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBzeW1ib2xUYWJsZUVudHJ5ID0g
c3ltYm9sVGFibGUtPmdldChlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICBBU1NFUlQoIXN5bWJv
bFRhYmxlRW50cnkuaXNOdWxsKCkpOworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gc3ltYm9s
VGFibGVFbnRyeS52YXJPZmZzZXQoKTsKKyAgICAgICAgaWYgKG9mZnNldC5pc1Njb3BlKCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKG9mZnNldC5pc1N0YWNrKCkpOwor
ICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoJnJlZ2lzdGVyRm9yKG9mZnNldC5zdGFja09mZnNl
dCgpKSk7CisgICAgfQorfQorCiBCeXRlY29kZUdlbmVyYXRvcjo6fkJ5dGVjb2RlR2VuZXJhdG9y
KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA4OWNkZWFkMTM1NDQ4MWM3NDY2NzBlMzVmOTYwMDU5
MzdmYjk1YmE3Li4xNmJiYzBkZGMwYWRmNDA5MWQ4YTEzOTQ0NGFiYjM5MzQwZjUwODFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCkBAIC0yNjksNiArMjY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCopOwogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCopOwogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2
YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0
b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
Kik7CiAKICAgICAgICAgfkJ5dGVjb2RlR2VuZXJhdG9yKCk7CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4
IDljNmU3NmYyZjQyYmRkY2U5NjViODI0MjI4YWI2NTIxOGZlMGUxN2UuLjNiYmQyMDEyNjVjNGZm
ZjY2ZjhhZmUyMWUwMmEwMjdhYzQ4YTRmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTI4OTUsOCArMjg5NSwxNyBA
QCB2b2lkIFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBN
b2R1bGVQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIE1vZHVsZVByb2dy
YW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKK3Zv
aWQgTW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
RXhlY3V0ZVByb2dyYW0sIHN0YXJ0TGluZSgpLCBzdGFydFN0YXJ0T2Zmc2V0KCksIHN0YXJ0TGlu
ZVN0YXJ0T2Zmc2V0KCkpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZ2lzdGVyID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgIGdlbmVyYXRvci5lbWl0TG9hZChkc3RSZWdp
c3Rlci5nZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29u
dHJvbEZsb3coc3RhcnRTdGFydE9mZnNldCgpKTsKKyAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2Rl
KGdlbmVyYXRvciwgZHN0UmVnaXN0ZXIuZ2V0KCkpOworCisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVT
dGFydE9mZnNldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdEVuZChkc3RSZWdpc3Rlci5nZXQoKSk7
CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzA1NywzMCArMzA2NiwzNyBAQCBSZWdpc3RlcklE
KiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRAogCiB2b2lkIEltcG9ydERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCiB7CisgICAgLy8gRG8gbm90aGluZyBh
dCB0aGUgcnVudGltZS4KIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4
cG9ydEFsbERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIEV4cG9y
dEFsbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCopCiB7CisgICAgLy8gRG8gbm90aGluZyBhdCB0aGUgcnVudGltZS4KIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5v
ZGUgLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQordm9pZCBFeHBv
cnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogeworICAgIEFTU0VSVChtX2RlY2xhcmF0aW9u
KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2RlY2xhcmF0aW9uKTsKIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKK3ZvaWQgRXhwb3J0
TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CisgICAgQVNTRVJUKG1fZGVjbGFyYXRpb24pOwor
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZGVjbGFyYXRpb24pOwogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tCiAKIHZvaWQgRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQogeworICAgIC8vIERvIG5v
dGhpbmcgYXQgdGhlIHJ1bnRpbWUuCiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggY2Ji
YTljODUwMjY1ODY3MjQ4YTEzOGI4NjcwMDJhNDJmZGY3OTIzYS4uMTE5MGNhM2MwNWU3ODZkYzdi
NWNjYWIxMmVmMTU5NGY3Y2RjNTAwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJIZWFw
LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlByZWNp
c2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJT
dGFja0FsaWdubWVudC5oIgpAQCAtMzgzMyw2ICszODM0LDEyIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgaWYgKHJlc29s
dmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCByZXNvbHZl
VHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldERpcmVjdChtX2lubGluZVN0YWNrVG9wLT5yZW1h
cE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
KSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBNb2R1bGVWYXI6
IHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGFscmVhZHkgc3Ryb25nbHkgcmVmZXJlbmNl
ZCBieSB0aGUgQ29kZUJsb2NrLgorICAgICAgICAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQq
IG1vZHVsZUVudmlyb25tZW50ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjdXJyZW50
SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0KCkpOworICAgICAgICAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIoZHN0KSwgd2Vha0pTQ29uc3RhbnQobW9kdWxlRW52aXJvbm1lbnQpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgTG9j
YWxDbG9zdXJlVmFyOgogICAgICAgICAgICAgY2FzZSBDbG9zdXJlVmFyOgogICAgICAgICAgICAg
Y2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczogewpAQCAtNDAwMiw2ICs0MDA5
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRDbG9zdXJlVmFyLCBPcEluZm8ob3BlcmFu
ZCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgc2NvcGVOb2RlKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIE1vZHVsZVZhcjoKICAgICAgICAg
ICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA4Niw2ICs0MDk0LDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlIE1vZHVsZVZhcjoKICAgICAgICAgICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4
IDdmNTQzMDg0ODUyOTE1OTNmYjc1ZjZiYmMwNjliYWEzYjZjZDEzMjUuLjhmZGE3ZTJiYTEyNTQy
MzFiZDE0YjI4YzViZjNiYTY2OWJlY2RhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTIxMyw2ICsyMTMsOSBAQCBDYXBhYmlsaXR5TGV2
ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSW5zdHJ1YwogCiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKICAgICAgICAgUmVzb2x2
ZVR5cGUgcmVzb2x2ZVR5cGUgPSBSZXNvbHZlTW9kZUFuZFR5cGUocGNbNF0udS5vcGVyYW5kKS50
eXBlKCk7CisgICAgICAgIC8vIEltcG9ydGVkIGJpbmRpbmdzIGFyZSBhbHdheXMgaW1tdXRhYmxl
LgorICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKQorICAgICAgICAgICAgcmV0
dXJuIENhbm5vdENvbXBpbGU7CiAgICAgICAgIC8vIElmIHdlJ3JlIHdyaXRpbmcgdG8gYSByZWFk
b25seSBwcm9wZXJ0eSB3ZSBlbWl0IGEgRHluYW1pYyBwdXQgdGhhdAogICAgICAgICAvLyB0aGUg
REZHIGNhbid0IGN1cnJlbnRseSBoYW5kbGUuCiAgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBE
eW5hbWljKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggY2MzNGE2NjViZTMwZGIyOWUwZGFkZTNjN2Q4YTUzYTQ3YTBmNWY3Mi4u
ZmM4Mzk3ZGNlMDg3MjllYzVmMDMyZjJhZTZkZTdjYWVkZTliYzFmNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00OSw2ICs0
OSw3IEBACiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1
bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJK
U1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC05Nyw2ICs5OCw3IEBA
IFN0cmluZyBTdGFja0ZyYW1lOjpmcmllbmRseVNvdXJjZVVSTCgpIGNvbnN0CiAgICAgCiAgICAg
c3dpdGNoIChjb2RlVHlwZSkgewogICAgIGNhc2UgU3RhY2tGcmFtZUV2YWxDb2RlOgorICAgIGNh
c2UgU3RhY2tGcmFtZU1vZHVsZUNvZGU6CiAgICAgY2FzZSBTdGFja0ZyYW1lRnVuY3Rpb25Db2Rl
OgogICAgIGNhc2UgU3RhY2tGcmFtZUdsb2JhbENvZGU6CiAgICAgICAgIGlmICghc291cmNlVVJM
LmlzRW1wdHkoKSkKQEAgLTExOCw2ICsxMjAsOSBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnJpZW5k
bHlGdW5jdGlvbk5hbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIGNvbnN0CiAgICAgY2FzZSBTdGFj
a0ZyYW1lRXZhbENvZGU6CiAgICAgICAgIHRyYWNlTGluZSA9ICJldmFsIGNvZGUiOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFN0YWNrRnJhbWVNb2R1bGVDb2RlOgorICAgICAgICB0cmFjZUxp
bmUgPSAibW9kdWxlIGNvZGUiOworICAgICAgICBicmVhazsKICAgICBjYXNlIFN0YWNrRnJhbWVO
YXRpdmVDb2RlOgogICAgICAgICBpZiAoY2FsbGVlKQogICAgICAgICAgICAgdHJhY2VMaW5lID0g
Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKGNhbGxGcmFtZSwgc3RhY2tGcmFtZUNhbGxlZSkuaW1w
bCgpOwpAQCAtNDUxLDYgKzQ1Niw4IEBAIHN0YXRpYyBTdGFja0ZyYW1lQ29kZVR5cGUgZ2V0U3Rh
Y2tGcmFtZUNvZGVUeXBlKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKICAgICBzd2l0Y2ggKHZpc2l0
b3ItPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkV2YWw6CiAg
ICAgICAgIHJldHVybiBTdGFja0ZyYW1lRXZhbENvZGU7CisgICAgY2FzZSBTdGFja1Zpc2l0b3I6
OkZyYW1lOjpNb2R1bGU6CisgICAgICAgIHJldHVybiBTdGFja0ZyYW1lTW9kdWxlQ29kZTsKICAg
ICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkZ1bmN0aW9uOgogICAgICAgICByZXR1cm4gU3Rh
Y2tGcmFtZUZ1bmN0aW9uQ29kZTsKICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6Okdsb2Jh
bDoKQEAgLTExNzYsNiArMTE4Myw1NCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2
YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQogICAgIHJl
dHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9CiAKK0pTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU01vZHVsZUVudmlyb25tZW50KiBzY29wZSkKK3sKKyAgICBWTSYgdm0gPSAqc2Nv
cGUtPnZtKCk7CisgICAgU2FtcGxpbmdTY29wZSBzYW1wbGluZ1Njb3BlKHRoaXMpOworCisgICAg
QVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOworICAgIEFTU0VSVCghdm0u
ZXhjZXB0aW9uKCkpOworICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGlm
ICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworCisgICAg
Vk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CisgICAg
aWYgKCF2bS5pc1NhZmVUb1JlY3Vyc2UoKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisKKyAgICBKU09iamVjdCogY29t
cGlsZUVycm9yID0gZXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbihjYWxsRnJhbWUsIG51
bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVy
cm9yKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1lLT52bSgpLnRocm93
RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAgTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29kZUJsb2NrKCk7CisKKyAgICBpZiAo
VU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoY2FsbEZyYW1lKSkp
CisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZy
YW1lKTsKKworICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8g
MSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKworICAgIC8vIFRoZSB8dGhpc3wgb2YgdGhlIG1vZHVs
ZSBpcyBhbHdheXMgYHVuZGVmaW5lZGAuCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWhh
c3RoaXNiaW5kaW5nCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWdldHRoaXNiaW5kaW5n
CisgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CisgICAgcHJvdG9DYWxsRnJhbWUu
aW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3Qo
KSwgc2NvcGUpLCBqc1VuZGVmaW5lZCgpLCAxKTsKKworICAgIGlmIChMZWdhY3lQcm9maWxlciog
cHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKKyAgICAgICAgcHJvZmlsZXItPndpbGxF
eGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFibGUtPmZp
cnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKKworICAgIC8vIEV4ZWN1dGUg
dGhlIGNvZGU6CisgICAgSlNWYWx1ZSByZXN1bHQ7CisgICAgeworICAgICAgICBTYW1wbGluZ1Rv
b2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOworICAgICAgICByZXN1
bHQgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9D
YWxsRnJhbWUpOworICAgIH0KKworICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJvZmlsZXIgPSB2
bS5lbmFibGVkUHJvZmlsZXIoKSkKKyAgICAgICAgcHJvZmlsZXItPmRpZEV4ZWN1dGUoY2FsbEZy
YW1lLCBleGVjdXRhYmxlLT5zb3VyY2VVUkwoKSwgZXhlY3V0YWJsZS0+Zmlyc3RMaW5lKCksIGV4
ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkpOworCisgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVz
dWx0KTsKK30KKwogTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCkKIHsKICAgICBEZWJ1Z2dlciog
ZGVidWdnZXIgPSBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5k
ZXggMTMyYzk1ZDE3ZjRlMTA5YmEzN2JiY2IwMTg3MjczMmIyZjk1MTE2Zi4uNGZlZmFhNmNmOGUz
MWFmMmQzNTlkMTYzYmFjOGExYTQwOTVhZjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTU0LDggKzU0LDExIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEpTQXJyb3dGdW5jdGlvbjsKICAgICBjbGFzcyBKU0Z1bmN0aW9u
OwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1l
bnQ7CisgICAgY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOworICAgIGNsYXNzIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIEpTU2NvcGU7
CiAgICAgY2xhc3MgU2FtcGxpbmdUb29sOwpAQCAtNzYsNiArNzksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBlbnVtIFN0YWNrRnJhbWVDb2RlVHlwZSB7CiAgICAgICAgIFN0YWNrRnJhbWVHbG9i
YWxDb2RlLAogICAgICAgICBTdGFja0ZyYW1lRXZhbENvZGUsCisgICAgICAgIFN0YWNrRnJhbWVN
b2R1bGVDb2RlLAogICAgICAgICBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlLAogICAgICAgICBTdGFj
a0ZyYW1lTmF0aXZlQ29kZQogICAgIH07CkBAIC0yMTIsNiArMjE2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1
bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29u
c3QgQXJnTGlzdCYpOwogICAgICAgICBKU09iamVjdCogZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJh
bWUqLCBKU09iamVjdCogZnVuY3Rpb24sIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERh
dGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwogICAgICAgICBKU1ZhbHVl
IGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
SlNTY29wZSopOworICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqLCBDYWxsRnJhbWUqLCBKU01vZHVsZUVudmlyb25tZW50Kik7CiAKICAgICAgICAgdm9pZCBn
ZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRyZGlmZl90JiBmaXJz
dFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7CiAgICAgICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cAppbmRleCBkMzc2ZGI0MjE3ZmE2MWU2YzMyZWE5ZGEyN2E3NWJmYjAzMzBiM2I3Li4wYjFmNDU1
ZjE3NzllY2IxNTljM2E0NGU4MzA4NWU3MjNkM2ViMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMTgxLDYgKzE4MSw4
IEBAIFN0YWNrVmlzaXRvcjo6RnJhbWU6OkNvZGVUeXBlIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNv
ZGVUeXBlKCkgY29uc3QKICAgICBzd2l0Y2ggKGNvZGVCbG9jaygpLT5jb2RlVHlwZSgpKSB7CiAg
ICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgcmV0dXJuIENvZGVUeXBlOjpFdmFsOworICAgIGNh
c2UgTW9kdWxlQ29kZToKKyAgICAgICAgcmV0dXJuIENvZGVUeXBlOjpNb2R1bGU7CiAgICAgY2Fz
ZSBGdW5jdGlvbkNvZGU6CiAgICAgICAgIHJldHVybiBDb2RlVHlwZTo6RnVuY3Rpb247CiAgICAg
Y2FzZSBHbG9iYWxDb2RlOgpAQCAtMTk5LDYgKzIwMSw5IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6
OkZyYW1lOjpmdW5jdGlvbk5hbWUoKQogICAgIGNhc2UgQ29kZVR5cGU6OkV2YWw6CiAgICAgICAg
IHRyYWNlTGluZSA9IEFTQ0lJTGl0ZXJhbCgiZXZhbCBjb2RlIik7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ29kZVR5cGU6Ok1vZHVsZToKKyAgICAgICAgdHJhY2VMaW5lID0gQVNDSUlMaXRl
cmFsKCJtb2R1bGUgY29kZSIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvZGVUeXBlOjpO
YXRpdmU6CiAgICAgICAgIGlmIChjYWxsZWUpCiAgICAgICAgICAgICB0cmFjZUxpbmUgPSBnZXRD
YWxjdWxhdGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lKCksIGNhbGxlZSkuaW1wbCgpOwpAQCAtMjE5
LDYgKzIyNCw3IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjpzb3VyY2VVUkwoKQogCiAg
ICAgc3dpdGNoIChjb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBDb2RlVHlwZTo6RXZhbDoKKyAgICBj
YXNlIENvZGVUeXBlOjpNb2R1bGU6CiAgICAgY2FzZSBDb2RlVHlwZTo6RnVuY3Rpb246CiAgICAg
Y2FzZSBDb2RlVHlwZTo6R2xvYmFsOiB7CiAgICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSBjb2Rl
QmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCmluZGV4IDAwMzZhNzg5YzU4
ZTE5YWUxM2IwZDRhYmZiNzU1ODNlOWJiNDY3MzQuLjQxYmZjNzA4ODIwZWNjZmNhYzczNWIzOWI0
MjI0NzEzZWJlNTJkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvU3RhY2tWaXNpdG9yLmgKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3MgU3RhY2tWaXNpdG9yIHsK
ICAgICAgICAgICAgIEdsb2JhbCwKICAgICAgICAgICAgIEV2YWwsCiAgICAgICAgICAgICBGdW5j
dGlvbiwKKyAgICAgICAgICAgIE1vZHVsZSwKICAgICAgICAgICAgIE5hdGl2ZQogICAgICAgICB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYmJjODUyM2Y1YmIyM2EzOTMwYzA5
NGVkNDg2MjE3NDY0ZDg2YzU1MS4uODRmMzZkNTQwZjNjYmFhMWFlY2M1NTNhZGY4YzQ2MTRiN2Jk
ZTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNDg2LDYgKzQ4Niw3IEBAIENv
bXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSklUQ29tcGlsYXRpb25FZmZvcnQg
ZWZmb3J0KQogICAgIAogICAgIHN3aXRjaCAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkpIHsKICAg
ICBjYXNlIEdsb2JhbENvZGU6CisgICAgY2FzZSBNb2R1bGVDb2RlOgogICAgIGNhc2UgRXZhbENv
ZGU6CiAgICAgICAgIG1fY29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNl
OwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNDhjZGYxMWZkMzZmYWZkOTZiZjJiYjY3MWY1NWMzMWQ0NTdl
NjQ0OS4uOWE0YWU0NTUyOWRlZmU0NzVkNjc3YmY3MDRiNWM2MDc2ZTNlZDM2NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTQzLDYg
KzQzLDcgQEAKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1
bWVudHMuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHNUYWJsZS5oIgorI2luY2x1ZGUgIlNs
b3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiAKQEAg
LTcwMyw2ICs3MDQsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3M6CiAgICAgICAgIGVtaXRSZXNvbHZlQ2xvc3VyZShkc3QsIHNjb3BlLCBuZWVk
c1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSksIGRlcHRoKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBNb2R1bGVWYXI6CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjdXJyZW50
SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0KCkpLCByZWdUMCk7CisgICAgICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEeW5hbWljOgog
ICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKQEAgLTcxNiw3ICs3
MjEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvdwogICAgIGludCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3Rh
dGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwog
Ci0gICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09
IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQorICAgIGlmIChyZXNvbHZl
VHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVz
b2x2ZVR5cGUgPT0gQ2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKQEAgLTc3OCw2ICs3ODMsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgp
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBMb2NhbENs
b3N1cmVWYXI6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpA
QCAtODUyLDYgKzg1OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF90b19zY29wZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2so
bmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpKTsKICAgICAgICAgZW1pdFB1dENs
b3N1cmVWYXIoc2NvcGUsICpvcGVyYW5kU2xvdCwgdmFsdWUsIGN1cnJlbnRJbnN0cnVjdGlvbls1
XS51LndhdGNocG9pbnRTZXQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoK
ICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtODczLDcgKzg4MCwxMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3Rv
X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAg
ICAgICByZXR1cm47CiAgICAgd2hpbGUgKGxpbmtDb3VudC0tKQogICAgICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50
SW5zdHJ1Y3Rpb24pOworCisgICAgaWYgKHJlc29sdmVUeXBlID09IE1vZHVsZVZhcikgeworICAg
ICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vy
cm9yKTsKKyAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAKaW5kZXggZTkyNmY1MmRjNzZkOWVkZTJmMGUzYTViM2RjMjZiMzM2YTkyZjg1ZC4uMDI2OWJh
NDZiMWJiMWRlMjIwNDMzNWJlYjk5MzJhMGRkZDczYjBjNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTEzMiw4ICsxMzIsOCBAQCB2b2lkIERhdGE6OnBl
cmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBBU1NFUlQobWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwgPT0gNjQpOwogI2VuZGlmCiAgICAgQVNTRVJUKFN0cmluZ1R5cGUgPT0gNik7Ci0g
ICAgQVNTRVJUKE9iamVjdFR5cGUgPT0gMTgpOwotICAgIEFTU0VSVChGaW5hbE9iamVjdFR5cGUg
PT0gMTkpOworICAgIEFTU0VSVChPYmplY3RUeXBlID09IDIwKTsKKyAgICBBU1NFUlQoRmluYWxP
YmplY3RUeXBlID09IDIxKTsKICAgICBBU1NFUlQoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9PSAx
KTsKICAgICBBU1NFUlQoSW1wbGVtZW50c0hhc0luc3RhbmNlID09IDIpOwogICAgIEFTU0VSVChJ
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID09IDgpOwpAQCAtMTQxLDE1ICsxNDEsMTcgQEAg
dm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKEdsb2JhbENv
ZGUgPT0gMCk7CiAgICAgQVNTRVJUKEV2YWxDb2RlID09IDEpOwogICAgIEFTU0VSVChGdW5jdGlv
bkNvZGUgPT0gMik7CisgICAgQVNTRVJUKE1vZHVsZUNvZGUgPT0gMyk7CiAKICAgICBzdGF0aWNf
YXNzZXJ0KEdsb2JhbFByb3BlcnR5ID09IDAsICJMTEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5
IFJlc3VsdFR5cGUgaXMgPT0gMCIpOwogICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyID09IDEs
ICJMTEludCBhc3N1bWVzIEdsb2JhbFZhciBSZXN1bHRUeXBlIGlzID09IDEiKTsKICAgICBzdGF0
aWNfYXNzZXJ0KENsb3N1cmVWYXIgPT0gMiwgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZhciBSZXN1
bHRUeXBlIGlzID09IDIiKTsKICAgICBzdGF0aWNfYXNzZXJ0KExvY2FsQ2xvc3VyZVZhciA9PSAz
LCAiTExJbnQgYXNzdW1lcyBMb2NhbENsb3N1cmVWYXIgUmVzdWx0VHlwZSBpcyA9PSAzIik7Ci0g
ICAgc3RhdGljX2Fzc2VydChHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0g
NCwgIkxMSW50IGFzc3VtZXMgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJl
c3VsdFR5cGUgaXMgPT0gNCIpOwotICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcyA9PSA1LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNSIpOwotICAgIHN0YXRpY19hc3NlcnQoQ2xvc3Vy
ZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNiwgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA2Iik7Ci0gICAgc3RhdGlj
X2Fzc2VydChEeW5hbWljID09IDcsICJMTEludCBhc3N1bWVzIER5bmFtaWMgUmVzdWx0VHlwZSBp
cyA9PSA3Iik7CisgICAgc3RhdGljX2Fzc2VydChNb2R1bGVWYXIgPT0gNCwgIkxMSW50IGFzc3Vt
ZXMgTW9kdWxlVmFyIFJlc3VsdFR5cGUgaXMgPT0gNCIpOworICAgIHN0YXRpY19hc3NlcnQoR2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDUsICJMTEludCBhc3N1bWVzIEds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDUiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNiwg
IkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBl
IGlzID09IDYiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzID09IDcsICJMTEludCBhc3N1bWVzIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIFJlc3VsdFR5cGUgaXMgPT0gNyIpOworICAgIHN0YXRpY19hc3NlcnQoRHluYW1pYyA9PSA4
LCAiTExJbnQgYXNzdW1lcyBEeW5hbWljIFJlc3VsdFR5cGUgaXMgPT0gOCIpOwogICAgIAogICAg
IEFTU0VSVChSZXNvbHZlTW9kZUFuZFR5cGU6Om1hc2sgPT0gMHhmZmZmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAppbmRleCA5ZDAwMTA2
YjlhODI3NmY0ODQyMGY2YjU0NmMzMmQ1OTMwYTM2YjY4Li5hNmMzZDI3ZTI4MGEwNDQ3OTIyODY5
ZDc4MmNmZTJhNTVhYjc4MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFbnRyeXBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50LmNwcApAQCAtOTcsMTIgKzk3LDMwIEBAIHN0YXRpYyB2b2lkIHNldFBy
b2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIGFk
b3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlTExJ
bnRDb2RlUmVmKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKIH0KIAorc3RhdGljIHZvaWQgc2V0TW9k
dWxlUHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyNp
ZiBFTkFCTEUoSklUKQorICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBjb2RlQmxv
Y2stPnNldEpJVENvZGUoCisgICAgICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZSh2
bS5nZXRDVElTdHViKG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworICAgIFVOVVNFRF9QQVJBTSh2
bSk7CisgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICBhZG9wdFJlZihuZXcgRGly
ZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKSkpOworfQorCiB2b2lkIHNldEVudHJ5cG9pbnQoVk0mIHZt
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBzd2l0Y2ggKGNvZGVCbG9jay0+Y29kZVR5
cGUoKSkgewogICAgIGNhc2UgR2xvYmFsQ29kZToKICAgICAgICAgc2V0UHJvZ3JhbUVudHJ5cG9p
bnQodm0sIGNvZGVCbG9jayk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIE1vZHVsZUNvZGU6
CisgICAgICAgIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOworICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgc2V0RXZhbEVudHJ5cG9p
bnQodm0sIGNvZGVCbG9jayk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYTJhNmIy
YjExYzU2ODFlMGI2ZTk3MGM0ZmQxMWM5NmUxOWRiOTNkYS4uOWUzZjQ0ODdiMDg1MjAxMzcyYjJk
N2IyN2I3OGNlNTkxYWJkOTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJWTS5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCmluZGV4IDhhYjk2
YjMwNDc1ZmQ1NTRkZWY4YjMyNjYyNDk2NjMyZWFmOTZkOWEuLmFmNjg4NGU1ZWRlN2JlYmUwNGYz
N2IzZjAwMDkxZWUxNmY5NTExNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50VGh1bmtzLmNwcApAQCAtODgsNiArODgsMTEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHBy
b2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKICAgICByZXR1cm4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIobGxpbnRfcHJvZ3JhbV9w
cm9sb2d1ZSksICJwcm9ncmFtIik7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBtb2R1bGVQ
cm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCit7CisgICAgcmV0dXJuIGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKGxsaW50X21vZHVs
ZV9wcm9ncmFtX3Byb2xvZ3VlKSwgIm1vZHVsZV9wcm9ncmFtIik7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIExMSW50CiAKICNlbHNlIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5oCmluZGV4IDBkMWJlNmJkYWVhZGY3OTQ4N2NlOTA2NjgyNjQ2ODUx
ODhhOGJkMTIuLjk1YjBmNDQ4NDhiY2M1MjlkMTUwM2UyODliOTNlZmUzNzA1YzgzMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCkBAIC00Niw2ICs0Niw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5l
cmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFy
aXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxF
bnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVu
dHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBtb2R1bGVQcm9n
cmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJ
bnQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCmluZGV4IDVhZDgzNDY1Y2QxYTRlOGY0ZTk2NGE2N2VkMDhhMTU3ZTdmYTM3NWEu
LjI5ODhlMWVhYmEyMDczYTcxNDc0MzU4MjJlNDU5NmFkZDRhYzQzOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE2
MSw4ICsxNjEsOCBAQCBjb25zdCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgPSAzMAogCiAjIFR5
cGUgY29uc3RhbnRzLgogY29uc3QgU3RyaW5nVHlwZSA9IDYKLWNvbnN0IE9iamVjdFR5cGUgPSAx
OAotY29uc3QgRmluYWxPYmplY3RUeXBlID0gMTkKK2NvbnN0IE9iamVjdFR5cGUgPSAyMAorY29u
c3QgRmluYWxPYmplY3RUeXBlID0gMjEKIAogIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNvbnN0
IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCkBAIC0xNzYsNiArMTc2LDcgQEAgY29uc3QgRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCiBjb25zdCBHbG9iYWxDb2RlID0g
MAogY29uc3QgRXZhbENvZGUgPSAxCiBjb25zdCBGdW5jdGlvbkNvZGUgPSAyCitjb25zdCBNb2R1
bGVDb2RlID0gMwogCiAjIFRoZSBpbnRlcnByZXRlciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9mIHRo
ZSBhcmd1bWVudCBjb3VudC4KIGNvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsg
VGFnT2Zmc2V0CkBAIC0xOTEsMTAgKzE5MiwxMSBAQCBjb25zdCBHbG9iYWxQcm9wZXJ0eSA9IDAK
IGNvbnN0IEdsb2JhbFZhciA9IDEKIGNvbnN0IENsb3N1cmVWYXIgPSAyCiBjb25zdCBMb2NhbENs
b3N1cmVWYXIgPSAzCi1jb25zdCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3Mg
PSA0Ci1jb25zdCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNQotY29uc3QgQ2xv
c3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA2Ci1jb25zdCBEeW5hbWljID0gNworY29u
c3QgTW9kdWxlVmFyID0gNAorY29uc3QgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzID0gNQorY29uc3QgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDYKK2NvbnN0
IENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNworY29uc3QgRHluYW1pYyA9IDgK
IAogY29uc3QgUmVzb2x2ZU1vZGVNYXNrID0gMHhmZmZmCiAKQEAgLTg4NCw2ICs4ODYsMTEgQEAg
X2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CiAgICAgZGlzcGF0Y2goMCkKIAogCitfbGxpbnRfbW9k
dWxlX3Byb2dyYW1fcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tH
ZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxp
bnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCiBfbGxpbnRfZXZhbF9wcm9s
b2d1ZToKICAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1
ZSkKICAgICBkaXNwYXRjaCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBkMjE1MmEyZjI3N2FkZTU4Nzk3NmEx
YzNmMTIwMjM3MjliMzhhNTlhLi41YzAwZTY0NmY2MDEwZTZiYTY4NjFlMzRjZTljZjc3NGE1YThj
NDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtMTkxOCw2ICsxOTE4LDEyIEBAIG1hY3JvIGdldEdsb2JhbE9i
amVjdChkc3QpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KIGVuZAogCittYWNybyBnZXRJ
bXBvcnRlZE1vZHVsZVNjb3BlKGRzdCkKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0MCkK
KyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oZHN0LCB0MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIs
IHQxLCA4XQorZW5kCisKIG1hY3JvIHZhckluamVjdGlvbkNoZWNrKHNsb3dQYXRoKQogICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDBdLCB0MApAQCAtMTk1NywxMCArMTk2MywxNSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29w
ZToKICAgICBkaXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXI6Ci0gICAgYmluZXEgdDAsIENsb3N1
cmVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgYmluZXEg
dDAsIENsb3N1cmVWYXIsIC5yTW9kdWxlVmFyCiAgICAgcmVzb2x2ZVNjb3BlKCkKICAgICBkaXNw
YXRjaCg3KQogCisuck1vZHVsZVZhcjoKKyAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGdldEltcG9ydGVkTW9kdWxlU2Nv
cGUoMSkKKyAgICBkaXNwYXRjaCg3KQorCiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25D
aGVjayguckR5bmFtaWMpCkBAIC0yMTQ0LDEzICsyMTU1LDE4IEBAIF9sbGludF9vcF9wdXRfdG9f
c2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAogLnBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrczoKLSAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5w
RHluYW1pYworICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywg
LnBNb2R1bGVWYXIKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgdmFySW5q
ZWN0aW9uQ2hlY2soLnBEeW5hbWljKQogICAgIGxvYWRWYXJpYWJsZSgxLCB0MCkKICAgICBwdXRD
bG9zdXJlVmFyKCkKICAgICBkaXNwYXRjaCg3KQogCisucE1vZHVsZVZhcjoKKyAgICBiaW5lcSB0
MCwgTW9kdWxlVmFyLCAucER5bmFtaWMKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90aHJv
d19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcikKKyAgICBkaXNwYXRj
aCg3KQorCiAucER5bmFtaWM6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0
X3RvX3Njb3BlKQogICAgIGRpc3BhdGNoKDcpCkBAIC0yMjMzLDQgKzIyNDksNCBAQCBfbGxpbnRf
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgbG9hZHAgSlNBcnJvd0Z1bmN0aW9uOjpt
X2JvdW5kVGhpc1t0MF0sIHQwCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAg
IHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMikKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCisgICAgZGlzcGF0Y2goMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXggM2QxNzdjYTc3YjhiOGQ4OGQ4N2I0ZjRl
ODVjZTNkNDY4MzhjNDQxZC4uZjYyMzhmYjk2ODAyYmU1MzdlOTFhZGMyNmI4MmQ4OTBiOTU0MDMy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXpl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5j
cHAKQEAgLTM2LDExICszNiw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogCi1Nb2R1bGVBbmFseXpl
cjo6TW9kdWxlQW5hbHl6ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1
bGVLZXksIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQorTW9kdWxlQW5hbHl6ZXI6
Ok1vZHVsZUFuYWx5emVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxl
S2V5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNh
bFZhcmlhYmxlcykKICAgICA6IG1fdm0oJmV4ZWMtPnZtKCkpCi0gICAgLCBtX21vZHVsZVJlY29y
ZChleGVjLT52bSgpLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+bW9kdWxlUmVjb3JkU3RydWN0dXJlKCksIG1vZHVsZUtleSkp
Ci0gICAgLCBtX2RlY2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzKQotICAgICwgbV9s
ZXhpY2FsVmFyaWFibGVzKGxleGljYWxWYXJpYWJsZXMpCisgICAgLCBtX21vZHVsZVJlY29yZChl
eGVjLT52bSgpLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+bW9kdWxlUmVjb3JkU3RydWN0dXJlKCksIG1vZHVsZUtleSwgc291
cmNlQ29kZSwgZGVjbGFyZWRWYXJpYWJsZXMsIGxleGljYWxWYXJpYWJsZXMpKQogewogfQogCkBA
IC04NSw3ICs4Myw3IEBAIHZvaWQgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSwKICAgICB9CiAKICAgICBjb25z
dCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZCgpLT5sb29rVXBJbXBvcnRFbnRyeShs
b2NhbE5hbWUpOwotICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZSh2bSgpKSkgeworICAg
IGlmICh2YXJpYWJsZS5pc0ltcG9ydGVkTmFtZXNwYWNlKCkpIHsKICAgICAgICAgLy8gRXhwb3J0
ZWQgbmFtZXNwYWNlIGJpbmRpbmcuCiAgICAgICAgIC8vIGltcG9ydCAqIGFzIG5hbWVzcGFjZSBm
cm9tICJtb2QiCiAgICAgICAgIC8vIGV4cG9ydCB7IG5hbWVzcGFjZSB9CkBAIC0xNDQsMTAgKzE0
MiwxMCBAQCBKU01vZHVsZVJlY29yZCogTW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUoTW9kdWxlUHJv
Z3JhbU5vZGUmIG1vZHVsZVByb2dyYW1Ob2RlKQogICAgIC8vICAgICBUaGlzIGV4cG9ydHMgYWxs
IHRoZSBuYW1lcyBmcm9tIHRoZSBzcGVjaWZpZWQgZXh0ZXJuYWwgbW9kdWxlIGFzIHRoZSBjdXJy
ZW50IG1vZHVsZSdzIG5hbWUuCiAgICAgLy8KICAgICAvLyAgICAgZXhwb3J0ICogZnJvbSAibW9k
IgotICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZGVjbGFyZWRWYXJpYWJsZXMpCisgICAg
Zm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9tb2R1bGVSZWNvcmQtPmRlY2xhcmVkVmFyaWFibGVz
KCkpCiAgICAgICAgIGV4cG9ydFZhcmlhYmxlKHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKIAotICAg
IGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fbGV4aWNhbFZhcmlhYmxlcykKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIHBhaXIgOiBtX21vZHVsZVJlY29yZC0+bGV4aWNhbFZhcmlhYmxlcygpKQogICAg
ICAgICBleHBvcnRWYXJpYWJsZShwYWlyLmtleSwgcGFpci52YWx1ZSk7CiAKICAgICBpZiAoT3B0
aW9uczo6ZHVtcE1vZHVsZVJlY29yZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Nb2R1bGVBbmFseXplci5oCmluZGV4IDIyOGE2OWZlZTc0NzM2NjIwZDdmNmRhNTcxYmI2YWNh
ZDg0NmI3MDYuLjcwODNjYTkwOTkxOGVmZDIzZWJhMWEzZDViYjljM2Y2NTczMzhlMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgKQEAgLTMxLDEx
ICszMSwxMiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTTW9kdWxlUmVjb3JkOworY2xh
c3MgU291cmNlQ29kZTsKIAogY2xhc3MgTW9kdWxlQW5hbHl6ZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE1vZHVsZUFuYWx5emVyKTsKIHB1YmxpYzoKLSAgICBNb2R1bGVBbmFseXplcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBs
ZXhpY2FsVmFyaWFibGVzKTsKKyAgICBNb2R1bGVBbmFseXplcihFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBtb2R1bGVLZXksIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYg
bGV4aWNhbFZhcmlhYmxlcyk7CiAKICAgICBKU01vZHVsZVJlY29yZCogYW5hbHl6ZShNb2R1bGVQ
cm9ncmFtTm9kZSYpOwogCkBAIC01NCw4ICs1NSw2IEBAIGNsYXNzIE1vZHVsZUFuYWx5emVyIHsK
IAogICAgIFZNKiBtX3ZtOwogICAgIFN0cm9uZzxKU01vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNv
cmQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2RlY2xhcmVkVmFyaWFibGVzOwotICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQgbV9sZXhpY2FsVmFyaWFibGVzOwogICAgIElkZW50aWZpZXJBbGlh
c01hcCBtX2FsaWFzTWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCmluZGV4IDhhOTM2MTU3YjNmNjk2MGI2M2JhODFlYjQ3NzY4ODZmYTAzNDU5OGEuLjdmMDUw
MWM2NTMxMmRiNGQ0ZmY4NWRjNGRiMTNhZjI2MzFkZGVjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIzMTksNyArMjMxOSw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkltcG9ydFNwZWNpZmllciBQYXJz
ZXI8TGV4ZXJUCiAgICAgfQogCiAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGxvY2FsTmFtZVRva2Vu
Lm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcsICJDYW5ub3QgdXNlIGtleXdvcmQgYXMgaW1wb3J0
ZWQgYmluZGluZyBuYW1lIik7Ci0gICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9u
UmVzdWx0ID0gZGVjbGFyZVZhcmlhYmxlKGxvY2FsTmFtZSwgRGVjbGFyYXRpb25UeXBlOjpDb25z
dERlY2xhcmF0aW9uLCBEZWNsYXJhdGlvbkltcG9ydFR5cGU6OkltcG9ydGVkKTsKKyAgICBEZWNs
YXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBkZWNsYXJlVmFyaWFibGUobG9j
YWxOYW1lLCBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24sIChzcGVjaWZpZXJUeXBl
ID09IEltcG9ydFNwZWNpZmllclR5cGU6Ok5hbWVzcGFjZUltcG9ydCkgPyBEZWNsYXJhdGlvbklt
cG9ydFR5cGU6OkltcG9ydGVkTmFtZXNwYWNlIDogRGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBv
cnRlZCk7CiAgICAgaWYgKGRlY2xhcmF0aW9uUmVzdWx0ICE9IERlY2xhcmF0aW9uUmVzdWx0OjpW
YWxpZCkgewogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QoZGVjbGFyYXRpb25SZXN1bHQgJiBE
ZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0cmljdE1vZGUsICJDYW5ub3QgZGVjbGFyZSBhbiBp
bXBvcnRlZCBiaW5kaW5nIG5hbWVkICIsIGxvY2FsTmFtZS0+aW1wbCgpLCAiIGluIHN0cmljdCBt
b2RlIik7CiAgICAgICAgIGlmIChkZWNsYXJhdGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0
OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24pCkBAIC0yNTYwLDEwICsyNTYwLDggQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgICAgIC8vIGRvZXMgbm90IGhhdmUgZWZmZWN0
IG9uIHRoZSBjdXJyZW50IG1vZHVsZSdzIHNjb3BlLiBCdXQsCiAgICAgICAgICAgICAvLyAgIGV4
cG9ydCB7IEEsIEIsIEMgYXMgRCB9CiAgICAgICAgICAgICAvLyB3aWxsIHJlZmVyZW5jZSB0aGUg
Y3VycmVudCBtb2R1bGUncyBiaW5kaW5ncy4KLSAgICAgICAgICAgIGZvciAoY29uc3QgSWRlbnRp
ZmllciogbG9jYWxOYW1lIDogbWF5YmVMb2NhbE5hbWVzKSB7Ci0gICAgICAgICAgICAgICAgY3Vy
cmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGxvY2FsTmFtZSwgbV92bS0+cHJvcGVydHlOYW1lcy0+
ZXZhbCA9PSAqbG9jYWxOYW1lKTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgSWRlbnRpZmllciog
bG9jYWxOYW1lIDogbWF5YmVMb2NhbE5hbWVzKQogICAgICAgICAgICAgICAgIGN1cnJlbnRTY29w
ZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRCaW5kaW5nKCpsb2NhbE5hbWUpOwotICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0
TmFtZWREZWNsYXJhdGlvbihleHBvcnRMb2NhdGlvbiwgc3BlY2lmaWVyTGlzdCwgbW9kdWxlTmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBjMmU2YTY1MDQwODk5
MTVkYzI4MDU3ZmZlMDFmMDRlZWFkZTAxZjE0Li5mNjk3YmUzMzZiYjgwYzUyNTA0Mjg1NmI4YzA4
NzU1MzczM2ExMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTEw
MCw2ICsxMDAsNyBAQCBlbnVtIGNsYXNzIERlY2xhcmF0aW9uVHlwZSB7CiAKIGVudW0gY2xhc3Mg
RGVjbGFyYXRpb25JbXBvcnRUeXBlIHsKICAgICBJbXBvcnRlZCwKKyAgICBJbXBvcnRlZE5hbWVz
cGFjZSwKICAgICBOb3RJbXBvcnRlZAogfTsKIApAQCAtMzM1LDYgKzMzNiwxMCBAQCBzdHJ1Y3Qg
U2NvcGUgewogCiAgICAgICAgIGlmIChpbXBvcnRUeXBlID09IERlY2xhcmF0aW9uSW1wb3J0VHlw
ZTo6SW1wb3J0ZWQpCiAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNldElz
SW1wb3J0ZWQoKTsKKyAgICAgICAgZWxzZSBpZiAoaW1wb3J0VHlwZSA9PSBEZWNsYXJhdGlvbklt
cG9ydFR5cGU6OkltcG9ydGVkTmFtZXNwYWNlKSB7CisgICAgICAgICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLnNldElzSW1wb3J0ZWQoKTsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuc2V0SXNJbXBvcnRlZE5hbWVzcGFjZSgpOworICAgICAgICB9CiAKICAgICAg
ICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNs
YXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAppbmRleCA1ZWQy
YTZiZGE5MjgzOGUyOTY0ODJmNjZjMDc4NWEzNjExYWU2MTVjLi43NmM3MDk2ZTllNjQ0N2ViYmJk
YjBkOTY1YTNlYTRhMjRhNTE3M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApAQCAtNDAsNiArNDAsNyBAQCBzdHJ1Y3QgVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5IHsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNMZXQoKSBj
b25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0xldDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0V4cG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNFeHBvcnRlZDsgfQogICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc0ltcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNJ
bXBvcnRlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0ltcG9ydGVkTmFtZXNwYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNJbXBvcnRlZE5hbWVzcGFjZTsgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7IG1fYml0cyB8PSBJc0NhcHR1cmVkOyB9
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ29uc3QoKSB7IG1fYml0cyB8PSBJc0NvbnN0
OyB9CkBAIC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgewog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0xldCgpIHsgbV9iaXRzIHw9IElzTGV0OyB9CiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRXhwb3J0ZWQoKSB7IG1fYml0cyB8PSBJc0V4cG9y
dGVkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzSW1wb3J0ZWQoKSB7IG1fYml0cyB8
PSBJc0ltcG9ydGVkOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzSW1wb3J0ZWROYW1l
c3BhY2UoKSB7IG1fYml0cyB8PSBJc0ltcG9ydGVkTmFtZXNwYWNlOyB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsgbV9iaXRzICY9IH5Jc1ZhcjsgfQogCkBAIC01Nyw3
ICs1OSw4IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgewogICAgICAgICBJc1Zh
ciA9IDEgPDwgMiwKICAgICAgICAgSXNMZXQgPSAxIDw8IDMsCiAgICAgICAgIElzRXhwb3J0ZWQg
PSAxIDw8IDQsCi0gICAgICAgIElzSW1wb3J0ZWQgPSAxIDw8IDUKKyAgICAgICAgSXNJbXBvcnRl
ZCA9IDEgPDwgNSwKKyAgICAgICAgSXNJbXBvcnRlZE5hbWVzcGFjZSA9IDEgPDwgNgogICAgIH07
CiAgICAgdWludDhfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAtNzksNiArODIsOCBAQCBjbGFzcyBW
YXJpYWJsZUVudmlyb25tZW50IHsKICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY29u
dGFpbnMoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgY29uc3Qg
eyByZXR1cm4gbV9tYXAuY29udGFpbnMoaWRlbnRpZmllcik7IH0KICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgcmVtb3ZlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIp
IHsgcmV0dXJuIG1fbWFwLnJlbW92ZShpZGVudGlmaWVyKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
TWFwOjppdGVyYXRvciBmaW5kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50
aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmZpbmQoaWRlbnRpZmllcik7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIE1hcDo6Y29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX21hcC5maW5kKGlkZW50aWZpZXIpOyB9
CiAgICAgdm9pZCBzd2FwKFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKTsKICAgICB2b2lkIG1h
cmtWYXJpYWJsZUFzQ2FwdHVyZWRJZkRlZmluZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiYgaWRlbnRpZmllcik7CiAgICAgdm9pZCBtYXJrVmFyaWFibGVBc0NhcHR1cmVkKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggYWI3MGVhYmI5ZTNhMmEwNDUwYzYy
OWU3MDU2NjZmNGRjY2EwMWUyOC4uZDJlZmVjZDgyOWIyYzQ0ODVkZjEwNGI3ZmU0MWMyYzc2OWJk
OGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBA
IC02NywxMSArNjcsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBDYWNoZVR5cGVz
IHsgfTsKIHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jaz4gewogICAgIHR5cGVkZWYgSlNDOjpQcm9ncmFtTm9kZSBSb290Tm9kZTsKICAgICBzdGF0
aWMgY29uc3QgU291cmNlQ29kZUtleTo6Q29kZVR5cGUgY29kZVR5cGUgPSBTb3VyY2VDb2RlS2V5
OjpQcm9ncmFtVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU7CiB9OwogCiB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgQ2FjaGVUeXBlczxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+IHsKICAgICB0eXBlZGVmIEpTQzo6
RXZhbE5vZGUgUm9vdE5vZGU7CiAgICAgc3RhdGljIGNvbnN0IFNvdXJjZUNvZGVLZXk6OkNvZGVU
eXBlIGNvZGVUeXBlID0gU291cmNlQ29kZUtleTo6RXZhbFR5cGU7CisgICAgc3RhdGljIGNvbnN0
IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2Rl
OworfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrPiB7CisgICAgdHlwZWRlZiBKU0M6Ok1vZHVsZVByb2dyYW1Ob2RlIFJvb3RO
b2RlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VDb2RlS2V5OjpDb2RlVHlwZSBjb2RlVHlwZSA9
IFNvdXJjZUNvZGVLZXk6OlByb2dyYW1UeXBlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGU7CiB9
OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRh
YmxlVHlwZT4KQEAgLTk1LDcgKzEwMyw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNh
Y2hlOjpnZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlCiAgICAg
dHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3RO
b2RlIFJvb3ROb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBw
YXJzZTxSb290Tm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0
aW5Nb2RlLCBzdHJpY3RNb2RlLAotICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2Rl
LCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7Cisg
ICAgICAgIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBlcnJv
ciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CiAgICAgaWYg
KCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEzMiw2ICsxNDAsMTIg
QEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2soVk0m
IHZtLCBFdmFsRXhlY3V0YWJsZSogZXhlY3UKICAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2Nr
PFVubGlua2VkRXZhbENvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1v
ZGUsIHN0cmljdE1vZGUsIHRoaXNURFpNb2RlLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwg
ZXJyb3IsIHZhcmlhYmxlc1VuZGVyVERaKTsKIH0KIAorVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKiBDb2RlQ2FjaGU6OmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0mIHZtLCBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJN
b2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCit7Cisg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVBhcmVudFREWlZhcmlhYmxlczsKKyAgICByZXR1
cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0s
IGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3Ry
aWN0LCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1v
ZGUsIGVycm9yLCAmZW1wdHlQYXJlbnRURFpWYXJpYWJsZXMpOworfQorCiAvLyBGSVhNRTogVGhl
cmUncyBubyBuZWVkIHRvIGFkZCB0aGUgZnVuY3Rpb24ncyBuYW1lIHRvIHRoZSBrZXkgaGVyZS4g
SXQncyBhbHJlYWR5IGluIHRoZSBzb3VyY2UgY29kZS4KIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2
bSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJz
ZXJFcnJvciYgZXJyb3IpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5oCmluZGV4IGFmN2RhYzdlNDg3MDQxMzE5YzYzZmVjOTc1NWUyMzkzMTg4MzRjYjYuLjcxNzVm
ZTM5NTEyYzkzNjZlNjE2Mzk4MTNjYjZjNGY4MjI1OThkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC00NSw4ICs0NSwxMCBAQCBjbGFzcyBJZGVudGlm
aWVyOwogY2xhc3MgSlNTY29wZTsKIGNsYXNzIFBhcnNlckVycm9yOwogY2xhc3MgUHJvZ3JhbUV4
ZWN1dGFibGU7CitjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFVubGlua2Vk
Q29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsK
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrOwpAQCAtNTYsNyArNTgsNyBAQCBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIAogY2xh
c3MgU291cmNlQ29kZUtleSB7CiBwdWJsaWM6Ci0gICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBl
LCBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlIH07CisgICAgZW51bSBDb2RlVHlwZSB7IEV2YWxU
eXBlLCBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07CiAKICAgICBTb3Vy
Y2VDb2RlS2V5KCkKICAgICB7CkBAIC0yNTcsNiArMjU5LDcgQEAgY2xhc3MgQ29kZUNhY2hlIHsK
IAogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogZ2V0UHJvZ3JhbUNvZGVCbG9jayhWTSYs
IFByb2dyYW1FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNl
ckVycm9yJik7CiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZXRFdmFsQ29kZUJsb2NrKFZN
JiwgRXZhbEV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9k
ZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBUaGlzVERaTW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOworICAgIFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogZ2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhW
TSYsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2Vy
QnVpbHRpbk1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwog
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9t
R2xvYmFsQ29kZShWTSYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFy
c2VyRXJyb3ImKTsKIAogICAgIHZvaWQgY2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggMTYzYjExNjEwNDFjY2RiMzVh
ZDUyOTc2Y2FmZTZiZDExZGZjOGI3Ny4uNGZkYmQ5MzE0MzA4ZmI5OTUxNDUzNjgzMzgzZTFiYTRl
MmM4MmY3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCkBAIC0yODMsNiArMjgzLDcgQEAKICAgICBtYWNybyhBcnJheSkgXAogICAg
IG1hY3JvKFN0cmluZykgXAogICAgIG1hY3JvKE1hcCkgXAorICAgIG1hY3JvKFNldCkgXAogICAg
IG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhJbnRlcm5hbFByb21pc2UpIFwKICAgICBtYWNy
byhhYnMpIFwKQEAgLTMwNyw2ICszMDgsNyBAQAogICAgIG1hY3JvKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbikgXAogICAgIG1hY3JvKGdldCkgXAogICAgIG1hY3JvKHNldCkgXAorICAgIG1hY3Jv
KGFkZCkgXAogCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYWNiZTE0NjI5ZDI4NGVlODI1MTFm
NzNjNTY4MDkxZGVkZjNiNDQ0Zi4uMTNlMmU1YTM5NzRjYTM5NWM0YmE3NTc2OTU2ODMyYzNmNGZh
ZjY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCkBAIC0yNzAsNiArMjcwLDEyIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90
aHJvd190ZHpfZXJyb3IpCiAgICAgVEhST1coY3JlYXRlVERaRXJyb3IoZXhlYykpOwogfQogCitT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVy
dHlfd3JpdGVfZXJyb3IpCit7CisgICAgQkVHSU4oKTsKKyAgICBUSFJPVyhjcmVhdGVUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25vdCkKIHsKICAgICBCRUdJTigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApp
bmRleCAwNjdkZjBjMzhlOTEyMGJmNzA3Y2ZkZTQxYzNlZmJmMmE2ODcyZWUzLi4zMDA5ODU1ZmY2
YmEyZDE1MjgzZGI4Zjg1ZjNjZTQ1N2RkYjI4NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMTg5LDYgKzE4OSw3IEBAIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZW50ZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9nZXRfY2FsbGVlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
dG9fdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Rocm93X3Rkel9lcnJv
cik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3Jl
YWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbm90KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZXEpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCAyNzExNzhjMmI1ZjY0MzdlNjhkZTU5MmQ2MTRi
ODEyZmE1MWVmMjVkLi5iNWY2MjNhY2RhNTIzMDUxMTg3ZDBkYjU2ODg1MjEyNjJkODYyNDhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtNzgs
NyArNzgsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBQcml2YXRlTmFtZSBwcml2YXRlTmFtZShQcml2YXRlTmFtZTo6RGVzY3JpcHRpb24s
ICJFbnRyeVBvaW50TW9kdWxlIik7Ci0gICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIo
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChwcml2YXRlTmFtZSksIG1vZHVsZVByb2dyYW1Ob2Rl
LT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMo
KSk7CisgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVVpZChwcml2YXRlTmFtZSksIHNvdXJjZSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xh
cmF0aW9ucygpLCBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKICAgICBt
b2R1bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmlu
ZGV4IDFiOWE3M2Q3OTMzOGFhMzkxNGYzZTQ1NDUxYmI2ZjlhMDBjYzkwOTcuLjYxMjgzZmU1MDA2
YTBiMmZjMjhiNjg2NDk0NmFhNjgzNTU1ZjEzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZH
RHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAj
aW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgpAQCAtMTU5
LDcgKzE2MCwxOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxDb2RlKENvZGVCbG9j
ayogZ2VuZXJpY0NvZGVCbG9jaykKICAgICAgICAgZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJs
b2NrID0gY29kZUJsb2NrOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCisgICAg
Y2FzZSBNb2R1bGVDb2RlOiB7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7CisgICAgICAg
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqPihnZW5lcmljQ29kZUJsb2NrKTsKKworICAgICAgICBBU1NFUlQoa2lu
ZCA9PSBDb2RlRm9yQ2FsbCk7CisKKyAgICAgICAgb2xkQ29kZUJsb2NrID0gZXhlY3V0YWJsZS0+
bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVsZVBy
b2dyYW1Db2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAg
IGNhc2UgRXZhbENvZGU6IHsKICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBq
c0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0aGlzKTsKICAgICAgICAgRXZhbENvZGVCbG9jayogY29k
ZUJsb2NrID0gc3RhdGljX2Nhc3Q8RXZhbENvZGVCbG9jayo+KGdlbmVyaWNDb2RlQmxvY2spOwpA
QCAtMjI2LDcgKzIzOCwxNyBAQCBSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpu
ZXdDb2RlQmxvY2tGb3IoCiAgICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3Vu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUsCiAgICAgICAgICAgICBleGVjdXRh
YmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydENvbHVt
bigpKSk7CiAgICAgfQotICAgIAorCisgICAgaWYgKGNsYXNzSW5mbygpID09IE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2spOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rpb24pOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2soCisgICAgICAgICAgICBleGVjdXRhYmxlLCBleGVjdXRh
YmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUsCisgICAg
ICAgICAgICBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBleGVjdXRhYmxlLT5zb3Vy
Y2UoKS5zdGFydENvbHVtbigpKSk7CisgICAgfQorCiAgICAgUkVMRUFTRV9BU1NFUlQoY2xhc3NJ
bmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGZ1bmN0aW9uKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyk7CkBAIC0yODMsNiArMzA1LDE3IEBAIFBhc3NSZWZQ
dHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbWVudENvZGVCbG9ja0Zv
cigKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBpZiAoY2xhc3NJbmZvKCkg
PT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgeworICAgICAgICBSRUxFQVNFX0FT
U0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsK
KyAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogYmFzZWxpbmUgPSBzdGF0aWNfY2FzdDxN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oCisgICAgICAgICAgICBleGVjdXRhYmxlLT5tX21vZHVs
ZVByb2dyYW1Db2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKTsKKyAgICAgICAgUmVmUHRyPE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2s+IHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKAorICAgICAgICAgICAgQ29kZUJsb2NrOjpDb3B5UGFyc2VkQmxvY2ssICpiYXNl
bGluZSkpOworICAgICAgICByZXN1bHQtPnNldEFsdGVybmF0aXZlKGJhc2VsaW5lKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBSRUxFQVNFX0FTU0VSVChjbGFzc0luZm8o
KSA9PSBGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwogICAgIEZ1
bmN0aW9uQ29kZUJsb2NrKiBiYXNlbGluZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2Nr
Kj4oCkBAIC0zODMsNiArNDE2LDQyIEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCkt
PlByb2dyYW1FeGVjdXRhYmxlOjp+UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIH0KIAorY29uc3QgQ2xh
c3NJbmZvIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIH07CisKK01vZHVsZVByb2dyYW1FeGVjdXRh
YmxlOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5tb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxz
ZSkKK3sKKyAgICBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IDA7CisgICAgbV90eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0ID0gc291cmNlLmxlbmd0aCgpIC0gMTsKKyAgICBpZiAoZXhlYy0+dm0o
KS50eXBlUHJvZmlsZXIoKSB8fCBleGVjLT52bSgpLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKKyAg
ICAgICAgZXhlYy0+dm0oKS5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVj
dXRlZFJhbmdlKHNvdXJjZUlEKCksIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0LCBtX3R5cGVQ
cm9maWxpbmdFbmRPZmZzZXQpOworfQorCitNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAg
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpOworICAgIGV4ZWN1dGFibGUtPmZpbmlzaENy
ZWF0aW9uKGV4ZWMtPnZtKCksIG1vZHVsZVJlY29yZCk7CisKKyAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGUgPSBnbG9iYWxPYmplY3Qt
PmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soZXhlYywgZXhlY3V0YWJsZSk7CisgICAgaWYg
KCF1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5zZXQoZXhlYy0+
dm0oKSwgZXhlY3V0YWJsZSwgdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZSk7CisKKyAgICByZXR1
cm4gZXhlY3V0YWJsZTsKK30KKwordm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBtX21vZHVsZVJlY29yZC5zZXQodm0sIHRoaXMs
IG1vZHVsZVJlY29yZCk7Cit9CisKK3ZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKj4oY2VsbCktPk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp+TW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUoKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZv
ID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAKIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCAKQEAgLTUxNSw2ICs1ODQsMzggQEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6Y2xlYXJD
b2RlKCkKICAgICBCYXNlOjpjbGVhckNvZGUoKTsKIH0KIAorSlNPYmplY3QqIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgUGFyc2Vy
RXJyb3IgZXJyb3I7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9
IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKKyAgICAgICAgdm0sIG1fc291cmNlLCBJZGVudGlm
aWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCisgICAgICAgIEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBl
cnJvcik7CisgICAgaWYgKG1vZHVsZVByb2dyYW1Ob2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKKyAgICByZXR1cm4gZXJyb3IudG9FcnJv
ck9iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX3NvdXJjZSk7Cit9CisKK3ZvaWQgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogdGhpc09iamVjdCA9
IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBTY3JpcHRFeGVjdXRhYmxl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkKTsKKyAgICBpZiAodGhpc09i
amVjdC0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQorICAgICAgICB0aGlzT2JqZWN0LT5tX21v
ZHVsZVByb2dyYW1Db2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQorCit2b2lk
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUoKQoreworICAgIG1fbW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayA9IG51bGxwdHI7CisgICAgbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2suY2xlYXIoKTsKKyAgICBCYXNlOjpjbGVhckNvZGUoKTsKK30KKwogRnVuY3Rpb25Db2Rl
QmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YmFzZWxpbmVDb2RlQmxvY2tGb3IoQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQ7CkBA
IC01ODksNiArNjkwLDE1IEBAIHZvaWQgRXhlY3V0YWJsZUJhc2U6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKICAgICAgICAgICAgIG91dC5wcmludCgiUHJvZ3JhbUV4ZWN1dGFibGUgdy9v
IENvZGVCbG9jayIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKGNsYXNzSW5m
bygpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAgICAgICAgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUqPihyZWFsVGhpcyk7CisgICAgICAgIGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWN1dGFibGUtPmNvZGVCbG9jaygpKQorICAgICAgICAgICAgb3V0LnByaW50KCpjb2RlQmxvY2sp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQucHJpbnQoIk1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlIHcvbyBDb2RlQmxvY2siKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAKICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KHJlYWxUaGlzKTsKICAgICBpZiAoIWZ1bmN0aW9uLT5laXRoZXJDb2RlQmxvY2soKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCBiNTEzNTQ3ZDA4
MzFjYTk1MTQwOTAzZmMwMDI2MTEzMGEzYzY1ZjliLi43YjAxM2JkMDc5NzM4NzVjZDQ5MDE1MjEx
M2UzMWIzY2ViNTYzNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCkBAIC01Miw2ICs1Miw4IEBAIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiBjbGFzcyBGdW5j
dGlvbkNvZGVCbG9jazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFByb2dy
YW1Db2RlQmxvY2s7CitjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworY2xhc3MgSlNNb2R1
bGVSZWNvcmQ7CiBjbGFzcyBKU1Njb3BlOwogICAgIAogZW51bSBDb21waWxhdGlvbktpbmQgeyBG
aXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24gfTsKQEAgLTEwNCw2ICsxMDYs
MTEgQEAgY2xhc3MgRXhlY3V0YWJsZUJhc2UgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB7CiAgICAg
ICAgIHJldHVybiB0eXBlKCkgPT0gUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOwogICAgIH0KKyAgICBi
b29sIGlzTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5
cGUoKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU7CisgICAgfQorCiAKICAgICBib29s
IGlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKICAgICB7CkBAIC01MzcsNiArNTQ0LDU0IEBAIGNsYXNz
IFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAg
IFJlZlB0cjxQcm9ncmFtQ29kZUJsb2NrPiBtX3Byb2dyYW1Db2RlQmxvY2s7CiB9OwogCitjbGFz
cyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxl
IHsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAg
IHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1v
cnRhbDsKKworICAgIHN0YXRpYyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNT
dGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU01vZHVsZVJlY29yZCopOworCisgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNv
ZGVCbG9jaygpCisgICAgeworICAgICAgICByZXR1cm4gbV9tb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
LmdldCgpOworICAgIH0KKworICAgIEpTT2JqZWN0KiBjaGVja1N5bnRheChFeGVjU3RhdGUqKTsK
KworICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICB2b2lkIGNsZWFyQ29kZSgpOworCisgICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0Fj
dGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZnJp
ZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CisKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2s+IG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwor
ICAgIFdyaXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNvcmQ7CisgICAgUmVm
UHRyPE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKK307
CisKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRh
YmxlIHsKICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CkBAIC02ODEsNiArNzM2LDggQEAgaW5saW5lIHZvaWQgRXhlY3V0YWJsZUJh
c2U6OmNsZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUpCiAgICAgICAg
IHJldHVybiBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xlYXJDb2Rl
KCk7CiAgICAgY2FzZSBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlOgogICAgICAgICByZXR1cm4ganND
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsKKyAgICBj
YXNlIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZToKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsKICAgICBk
ZWZhdWx0OgogICAgICAgICByZXR1cm4ganNDYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihleGVjdXRh
YmxlKS0+Y2xlYXJDb2RlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDkzZWUxZmQ3NGI5OTI1OTA0MWNhMWU4NjJm
NjMxMWY2NTA5ODM4OWEuLjJkMjI5YmU2OTQ0OWQ2ZTgyYjUyOGZlZWRmYWUwM2I1MmQ5N2YzMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKQEAgLTg0LDYgKzg0LDggQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01h
cC5oIgogI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmly
b25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNpbmNsdWRl
ICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJK
U1Byb21pc2UuaCIKQEAgLTMxMCw2ICszMTIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0
KFZNJiB2bSkKICAgICBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURhdGFWaWV3KV0uc3RydWN0
dXJlLnNldCh2bSwgdGhpcywgSlNEYXRhVmlldzo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURhdGFWaWV3KV0ucHJvdG90eXBlLmdldCgpKSk7CiAg
ICAgCiAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0xl
eGljYWxFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CisgICAgbV9tb2R1
bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlRW52aXJvbm1lbnQ6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwogICAgIG1fc3RyaWN0RXZhbEFjdGl2YXRpb25T
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5z
ZXQobV92bSwgdGhpcywgRGVidWdnZXJTY29wZTo6Y3JlYXRlU3RydWN0dXJlKG1fdm0sIHRoaXMp
KTsKICAgICBtX3dpdGhTY29wZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTV2l0aFNjb3BlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CkBAIC0zNDYsNiArMzQ5LDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9yZWdFeHBNYXRjaGVzQXJy
YXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUodm0sICp0aGlzKSk7CiAKICAgICBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpKSk7CisgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBqc051bGwoKSkpOwogICAgIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBtX3dh
c21Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dBU01Nb2R1bGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcykpOwpAQCAtNTIwLDYgKzUyNCw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3Ry
dWN0CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNv
bHZlVGhlbmFibGVKb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1l
KCksIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TWFwUHJpdmF0
ZU5hbWUsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSks
CisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5TZXRQcml2YXRl
TmFtZSwgc2V0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
ICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xF
TkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC03ODksNiArNzk0LDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0RXZhbEFjdGl2YXRp
b25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2xleGljYWxF
bnZpcm9ubWVudFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUpOwpAQCAtODE2LDYg
KzgyMiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9yZWdFeHBTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Jl
Z0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2NvbnNvbGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2RvbGxhclZNU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsKQEAgLTkzMCw2ICs5Mzcs
MjUgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlRXZhbENv
ZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwKICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxv
Y2s7CiB9CiAKK1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6
OmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlKQoreworICAgIFBhcnNlckVycm9yIGVycm9y
OworICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNEZWJ1Z2dlcigpID8gRGVidWdn
ZXJPbiA6IERlYnVnZ2VyT2ZmOworICAgIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUgPSBoYXNQ
cm9maWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOworICAgIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bSgpLmNvZGVDYWNoZSgpLT5n
ZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICB2bSgpLCBleGVjdXRhYmxlLCBleGVj
dXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgZGVidWdn
ZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKworICAgIGlmIChoYXNEZWJ1Z2dlcigpKQor
ICAgICAgICBkZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5z
b3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CisKKyAg
ICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUs
IGVycm9yLnRvRXJyb3JPYmplY3QodGhpcywgZXhlY3V0YWJsZS0+c291cmNlKCkpKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2Nr
OworfQorCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJv
b2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDI2MTMxNmU4NWQy
YmFmYmRlZDc4NDMwYjZmOGY4ZWJhNWFkODc3NmUuLjhjMmUzY2E0ZWU0Y2YyYmUxZjI5YjEyZTA3
ZmI0NTUzMDA3MWViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBKU1N0YWNrOwogY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwogY2xhc3MgTW9kdWxlTG9hZGVy
T2JqZWN0OworY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiBjbGFzcyBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOwogY2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29k
ZUJsb2NrOwpAQCAtODUsNiArODYsNyBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNz
IFJlZ0V4cENvbnN0cnVjdG9yOwogY2xhc3MgUmVnRXhwUHJvdG90eXBlOwogY2xhc3MgU291cmNl
Q29kZTsKK2NsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIE51bGxH
ZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIE51bGxTZXR0ZXJGdW5jdGlvbjsKIGVudW0gY2xhc3MgVGhp
c1REWk1vZGU7CkBAIC0yMzAsNiArMjMyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9z
dHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlOwpAQCAtMjYyLDYgKzI2NSw3IEBA
IGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qg
ewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmU7
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmU7
CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1
Y3R1cmU7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fd2FzbU1vZHVsZVN0cnVjdHVyZTsKICNlbmRpZgpAQCAtNDQ2LDYgKzQ1MCw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRo
U2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2YWxBY3RpdmF0
aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVj
dHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3Ry
dWN0dXJlKiBtb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9k
dWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGRpcmVjdEFy
Z3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0QXJndW1lbnRzU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9v
dXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTQ5OSw2ICs1MDQsNyBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBzdGF0aWMgcHRyZGlmZl90IGl0ZXJhdG9yUmVzdWx0U3RydWN0dXJlT2Zmc2V0KCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX2l0ZXJhdG9yUmVzdWx0U3Ry
dWN0dXJlKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9k
dWxlUmVjb3JkU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBtb2R1bGVOYW1lc3Bh
Y2VPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVj
dFN0cnVjdHVyZS5nZXQoKTsgfQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBTdHJ1Y3R1
cmUqIHdhc21Nb2R1bGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dhc21Nb2R1bGVTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICNlbmRpZgpAQCAtNjQxLDYgKzY0Nyw3IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogCiAgICAgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSosIFBy
b2dyYW1FeGVjdXRhYmxlKiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogICAgIFVubGlua2VkRXZh
bENvZGVCbG9jayogY3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqLCBFdmFsRXhlY3V0YWJs
ZSosIFRoaXNURFpNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKENh
bGxGcmFtZSosIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKik7CiAKIHByb3RlY3RlZDoKICAgICBz
dHJ1Y3QgR2xvYmFsUHJvcGVydHlJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IDk1MTYzMThkNzAxNjllM2Rk
OGMyYmVmNzgzMzEyNTY3NWM1ZTIxOGIuLjQ0OGVhNDMxYjdiN2M5ODI2MmQ0MTBiZjAxZjg0OTM3
MWQ4YWI1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4
aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNs
YXNzIFJlZ2lzdGVyOwogICAgIAogY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1lbnQgOiBwdWJsaWMg
SlNFbnZpcm9ubWVudFJlY29yZCB7Ci1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIEpTTGV4aWNh
bEVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CiAg
ICAgCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlRW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyNGZjYWFhOTFiOTFhNmYyNmJhMGM5
ZTZkZTBiMmZhMzc2YjBkZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorCisjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3Qg
Q2xhc3NJbmZvIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnNfaW5mbyA9IHsgIkpTTW9kdWxlRW52aXJv
bm1lbnQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTW9kdWxlRW52
aXJvbm1lbnQpIH07CisKK0pTTW9kdWxlRW52aXJvbm1lbnQqIEpTTW9kdWxlRW52aXJvbm1lbnQ6
OmNyZWF0ZSgKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBjdXJy
ZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUs
IEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAgLy8gSlNMZXhpY2FsRW52aXJv
bm1lbnQgKHByZWNpc2VseSwgSlNFbnZpcm9ubWVudFJlY29yZCkgaGFzIHRoZSBzdG9yYWdlIHRv
IHN0b3JlIHRoZSB2YXJpYWJsZSBzbG90cyBhZnRlciB0aGUgaXRzIGNsYXNzIHN0b3JhZ2UuCisg
ICAgLy8gQmVjYXVzZSB0aGUgb2Zmc2V0IG9mIHRoZSB2YXJpYWJsZSBzbG90cyBhcmUgZml4ZWQg
aW4gdGhlIEpTRW52aXJvbm1lbnRSZWNvcmQsIGluaGVyaXR0aW5nIHRoZXNlIGNsYXNzIGFuZCBh
ZGRpbmcgbmV3IG1lbWJlciBmaWVsZCBpcyBub3QgYWxsb3dlZCwKKyAgICAvLyB0aGUgbmV3IG1l
bWJlciB3aWxsIG92ZXJsYXAgdGhlIHZhcmlhYmxlIHNsb3RzLgorICAgIC8vIFRvIGtlZXAgdGhl
IEpTTW9kdWxlRW52aXJvbm1lbnQgY29tcGF0aWJsZSB0byB0aGUgSlNMZXhpY2FsRW52aXJvbm1l
bnQgYnV0IGFkZCB0aGUgbmV3IG1lbWJlciB0byBzdG9yZSB0aGUgSlNNb2R1bGVSZWNvcmQsIHdl
IGFkZGl0aW9uYWxseSBhbGxvY2F0ZQorICAgIC8vIHRoZSBzdG9yYWdlIGFmdGVyIHRoZSB2YXJp
YWJsZSBzbG90cy4KKyAgICAvLworICAgIC8vIEpTTGV4aWNhbEVudmlyb25tZW50OgorICAgIC8v
ICAgICBbIEpTTGV4aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxlIHNsb3RzIF0KKyAgICAvLwor
ICAgIC8vIEpTTW9kdWxlRW52aXJvbm1lbnQ6CisgICAgLy8gICAgIFsgSlNMZXhpY2FsRW52aXJv
bm1lbnQgXVsgdmFyaWFibGUgc2xvdHMgXVsgYWRkaXRpb25hbCBzbG90cyBmb3IgSlNNb2R1bGVF
bnZpcm9ubWVudCBdCisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogcmVzdWx0ID0KKyAgICAgICAg
bmV3ICgKKyAgICAgICAgICAgIE5vdE51bGwsCisgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8SlNN
b2R1bGVFbnZpcm9ubWVudD4odm0uaGVhcCwgSlNNb2R1bGVFbnZpcm9ubWVudDo6YWxsb2NhdGlv
blNpemUoc3ltYm9sVGFibGUpKSkKKyAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCh2bSwgc3Ry
dWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKTsKKyAgICByZXN1bHQtPmZpbmlzaENy
ZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUsIG1vZHVsZVJlY29yZCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUpOworICAgIHRoaXMtPm1v
ZHVsZVJlY29yZFNsb3QoKS5zZXQodm0sIHRoaXMsIG1vZHVsZVJlY29yZCk7Cit9CisKK3ZvaWQg
SlNNb2R1bGVFbnZpcm9ubWVudDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09i
amVjdC0+dmFyaWFibGVzKCksIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPnNjb3BlU2l6ZSgp
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkU2xvdCgpKTsK
K30KKworYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIGNvbnN0IGF1dG8gcmVz
b2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNvbHZlSW1wb3J0KGV4ZWMs
IElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgaWYg
KHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVz
b2x2ZWQpIHsKKyAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogaW1wb3J0ZWRNb2R1bGVFbnZp
cm9ubWVudCA9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkLT5tb2R1bGVFbnZpcm9ubWVudCgpOwor
ICAgICAgICBQcm9wZXJ0eVNsb3QgcmVkaXJlY3RTbG90KGltcG9ydGVkTW9kdWxlRW52aXJvbm1l
bnQpOworICAgICAgICBpZiAoaW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdChpbXBvcnRlZE1vZHVsZUVudmlyb25tZW50
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHJlZGlyZWN0U2xvdCkpIHsKKyAgICAgICAgICAgIEpTVmFs
dWUgdmFsdWUgPSByZWRpcmVjdFNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHJlZGlyZWN0
U2xvdC5hdHRyaWJ1dGVzKCksIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKwordm9pZCBKU01vZHVsZUVudmly
b25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXNBcnJheSwgRW51bWVy
YXRpb25Nb2RlIG1vZGUpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgaWYgKHByb3BlcnR5TmFt
ZXNBcnJheS5pbmNsdWRlU3RyaW5nUHJvcGVydGllcygpKSB7CisgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgcGFpciA6IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5pbXBvcnRFbnRyaWVzKCkp
IHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAg
ICAgICAgICAgIGlmICghaW1wb3J0RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpCisgICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lc0FycmF5LmFkZChpbXBvcnRFbnRyeS5sb2NhbE5hbWUp
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBCYXNlOjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lc0FycmF5LCBtb2RlKTsKK30K
Kwordm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICAvLyBBbGwgaW1wb3J0ZWQg
YmluZGluZ3MgYXJlIGltbXV0YWJsZS4KKyAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSB0aGlz
T2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpm
cm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOworICAgIGlmIChyZXNvbHV0aW9uLnR5
cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXR1cm4g
QmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwor
fQorCitib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIEpT
TW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVu
dCo+KGNlbGwpOworICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUgaW1tdXRhYmxlLgor
ICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5y
ZXNvbHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1l
LnVpZCgpKSk7CisgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVz
b2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU1ZTEyZWVmYzU0OGI5
ZWU2ZWJmMzEzZmE3YThkNGM3MTY5MTRmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtMCwwICsxLDEwMSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEpTTW9kdWxlRW52aXJvbm1lbnRfaAorI2RlZmluZSBKU01vZHVsZUVudmlyb25tZW50X2gKKwor
I2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNv
cmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFJlZ2lzdGVyOworCitjbGFzcyBKU01v
ZHVsZUVudmlyb25tZW50IDogcHVibGljIEpTTGV4aWNhbEVudmlyb25tZW50IHsKKyAgICBmcmll
bmQgY2xhc3MgSklUOworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBKU0xleGljYWxFbnZpcm9ubWVudCBCYXNlOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsK
KworICAgIHN0YXRpYyBKU01vZHVsZUVudmlyb25tZW50KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
LCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVS
ZWNvcmQqKTsKKworICAgIHN0YXRpYyBKU01vZHVsZUVudmlyb25tZW50KiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5
bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVj
b3JkKiBtb2R1bGVSZWNvcmQpCisgICAgeworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUoKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlLCBpbml0
aWFsVmFsdWUsIG1vZHVsZVJlY29yZCk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZN
b2R1bGVSZWNvcmQoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPEpTTW9kdWxl
UmVjb3JkPik+KEJhc2U6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSk7CisgICAgfQorCisg
ICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUp
CisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoc3ltYm9sVGFibGUp
ICsgc2l6ZW9mKFdyaXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4pOworICAgIH0KKworICAgIEpT
TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1vZHVs
ZVJlY29yZFNsb3QoKS5nZXQoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOworCitwcml2YXRlOgorICAgIEpTTW9k
dWxlRW52aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsK
KworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNN
b2R1bGVSZWNvcmQqKTsKKworICAgIFdyaXRlQmFycmllckJhc2U8SlNNb2R1bGVSZWNvcmQ+JiBt
b2R1bGVSZWNvcmRTbG90KCkKKyAgICB7CisgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFdy
aXRlQmFycmllckJhc2U8SlNNb2R1bGVSZWNvcmQ+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlz
KSArIG9mZnNldE9mTW9kdWxlUmVjb3JkKHN5bWJvbFRhYmxlKCkpKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cit9OworCitp
bmxpbmUgSlNNb2R1bGVFbnZpcm9ubWVudDo6SlNNb2R1bGVFbnZpcm9ubWVudChWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1i
b2xUYWJsZSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU01vZHVs
ZUVudmlyb25tZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDYwNWU5OTEwYTYz
M2JhMGM0NjkxZGExNjFlZDQ5M2E1YjQ0OTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCkBAIC0wLDAg
KzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmgi
CisKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVS
ZWNvcmQuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVOYW1l
c3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUqKTsKKworY29uc3QgQ2xhc3NJbmZv
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpzX2luZm8gPSB7ICJNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0KSB9OworCisKK0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyU2V0JiBleHBvcnRzKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgICwgbV9l
eHBvcnRzKGV4cG9ydHMpCit7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNNb2R1
bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIG1fbW9kdWxlUmVjb3JkLnNldCh2
bSwgdGhpcywgbW9kdWxlUmVjb3JkKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVy
YXRvciwgRG9udEVudW0sIDApOworCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMt
Z2V0cHJvdG90eXBlb2YKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1zZXRwcm90
b3R5cGVvZi12CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtaXNleHRlbnNpYmxl
CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtcHJldmVudGV4dGVuc2lvbnMKKyAg
ICBwcmV2ZW50RXh0ZW5zaW9ucyh2bSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7Cisg
ICAgdGhpc09iamVjdC0+SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6On5KU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCgpOworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmQpOworfQorCitib29s
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWdldG93bnBy
b3BlcnR5LXAKKworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisKKyAgICBpZiAocHJvcGVydHlO
YW1lLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisKKyAgICBpZiAoIXRo
aXNPYmplY3QtPm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gdGhp
c09iamVjdC0+bV9tb2R1bGVSZWNvcmQuZ2V0KCk7CisKKyAgICBjb25zdCBhdXRvIHJlc29sdXRp
b24gPSBtb2R1bGVSZWNvcmQtPnJlc29sdmVFeHBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVp
ZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBBU1NFUlQocmVzb2x1dGlvbi50eXBl
ICE9IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCAmJiByZXNvbHV0
aW9uLnR5cGUgIT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OkFtYmlndW91cyk7
CisgICAgSlNNb2R1bGVSZWNvcmQqIHRhcmdldE1vZHVsZSA9IHJlc29sdXRpb24ubW9kdWxlUmVj
b3JkOworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRhcmdldEVudmlyb25tZW50ID0gdGFyZ2V0
TW9kdWxlLT5tb2R1bGVFbnZpcm9ubWVudCgpOworICAgIFByb3BlcnR5U2xvdCB0cmFtcG9saW5l
U2xvdCh0YXJnZXRFbnZpcm9ubWVudCk7CisgICAgaWYgKCF0YXJnZXRFbnZpcm9ubWVudC0+bWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0YXJnZXRFbnZpcm9ubWVu
dCwgZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRyYW1wb2xpbmVTbG90KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IHRyYW1wb2xpbmVTbG90LmdldFZh
bHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24o
KSk7CisgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBEb250RGVsZXRlLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtc2V0LXAtdi1yZWNlaXZl
cgorICAgIHJldHVybjsKK30KKworYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWRlbGV0ZS1wCisgICAg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICByZXR1cm4gIXRoaXNPYmplY3QtPm1fZXhwb3J0cy5j
b250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpOworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIv
Ni4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1vd25wcm9wZXJ0eWtleXMK
KyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworICAgIGZvciAoY29uc3QgYXV0byYgbmFtZSA6IHRo
aXNPYmplY3QtPm1fZXhwb3J0cykKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQobmFtZS5nZXQo
KSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworfQorCitib29sIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZGVmaW5lb3ducHJv
cGVydHktcC1kZXNjCisgICAgaWYgKHNob3VsZFRocm93KQorICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9i
amVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3ltYm9s
SXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
Inx0aGlzfCBzaG91bGQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPnByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCksIGFzT2JqZWN0KHRo
aXNWYWx1ZSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42YWQ3NzIxMTE2OWRlMDk0MDc4NmVmYWNjNjc4NGVkN2IyOWY2ZmJjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCisjZGVmaW5l
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0X2gKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU01vZHVsZVJlY29yZDsKKworY2xh
c3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qg
eworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXM7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkLCBjb25zdCBJZGVudGlmaWVyU2V0JiBl
eHBvcnRzKQorICAgIHsKKyAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PihleGVj
LT52bSgpLmhlYXApKSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdChleGVjLT52bSgpLCBzdHJ1Y3R1
cmUsIGV4cG9ydHMpOworICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCks
IGdsb2JhbE9iamVjdCwgbW9kdWxlUmVjb3JkKTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAg
ICB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Ob25JbmRleFByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKworICAgIERF
Q0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZVJlY29yZCopOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KFZNJiwgU3RydWN0dXJl
KiwgY29uc3QgSWRlbnRpZmllclNldCYgZXhwb3J0cyk7CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBJZGVudGlmaWVyU2V0IG1fZXhwb3J0czsKKyAg
ICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5k
ZXggZTcwMmZhZmE0NGU1MDZmOWQ0N2ZlZGU2MzM2NjRhNzM4YzE5YjQwYi4uZWU5ODRmZWJjNjU1
ZmE4ZTM4NDM2ODkwNjY4YTZmNzc1ZDkwOGIxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtMjAsMTUgKzIwLDIxIEBACiAgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU01vZHVs
ZVJlY29yZC5oIgogCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CiAjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU01hcC5oIgor
I2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MSwxMiArNDcsMjYg
QEAgdm9pZCBKU01vZHVsZVJlY29yZDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09i
amVjdC0+SlNNb2R1bGVSZWNvcmQ6On5KU01vZHVsZVJlY29yZCgpOwogfQogCi0KIHZvaWQgSlNN
b2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIEFTQ0lJTGl0ZXJhbCgicmVnaXN0cnlF
bnRyeSIpKSwganNVbmRlZmluZWQoKSk7CisgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJldmFsdWF0ZWQiKSksIGpzQm9vbGVhbihmYWxz
ZSkpOworCisgICAgbV9kZXBlbmRlbmNpZXNNYXAuc2V0KHZtLCB0aGlzLCBKU01hcDo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QoKS0+bWFwU3RydWN0dXJlKCkpKTsKKyAgICBwdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoImRlcGVuZGVuY2llc01h
cCIpKSwgbV9kZXBlbmRlbmNpZXNNYXAuZ2V0KCkpOworfQorCit2b2lkIEpTTW9kdWxlUmVjb3Jk
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihj
ZWxsKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50KTsKKyAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpOworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZXBlbmRlbmNpZXNNYXApOworICAg
IHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1fbGlua2VkTW9kdWxlcy5kYXRhKCks
IHRoaXNPYmplY3QtPm1fbGlua2VkTW9kdWxlcy5zaXplKCkpOwogfQogCiBhdXRvIEpTTW9kdWxl
UmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0
TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkmIHZhcmlhYmxlKSAtPiBFeHBvcnRFbnRyeQpAQCAtNjQsNiArODQsMzYzIEBAIGF1
dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChjb25zdCBJZGVu
dGlmaWVyJiBleHBvcnROYW1lLCBjCiAgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6SW5k
aXJlY3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5hbWUsIElkZW50aWZpZXIoKSwg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKIH0KIAorc3RhdGljIEpTVmFsdWUgaWRlbnRp
ZmllclRvSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpCit7CisgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIFN5
bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqaWRlbnRp
Zmllci5pbXBsKCkpKTsKKyAgICByZXR1cm4ganNTdHJpbmcoJmV4ZWMtPnZtKCksIGlkZW50aWZp
ZXIuaW1wbCgpKTsKK30KKworSlNNb2R1bGVSZWNvcmQqIEpTTW9kdWxlUmVjb3JkOjpob3N0UmVz
b2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9k
dWxlTmFtZSkKK3sKKyAgICBKU1ZhbHVlIG1vZHVsZU5hbWVWYWx1ZSA9IGlkZW50aWZpZXJUb0pT
VmFsdWUoZXhlYywgbW9kdWxlTmFtZSk7CisgICAgSlNWYWx1ZSBwYWlyID0gbV9kZXBlbmRlbmNp
ZXNNYXAtPkpTTWFwOjpnZXQoZXhlYywgbW9kdWxlTmFtZVZhbHVlKTsKKyAgICByZXR1cm4ganND
YXN0PEpTTW9kdWxlUmVjb3JkKj4ocGFpci5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAidmFsdWUiKSkpOworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpyZXNvbHZlSW1w
b3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKSAtPiBSZXNv
bHV0aW9uCit7CisgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1faW1wb3J0RW50cmllcy5maW5k
KGxvY2FsTmFtZS5pbXBsKCkpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2ltcG9ydEVudHJpZXMu
ZW5kKCkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6Tm90
Rm91bmQsIHRoaXMsIElkZW50aWZpZXIoKSB9OworCisgICAgY29uc3QgYXV0byYgaW1wb3J0RW50
cnkgPSBpdGVyYXRvci0+dmFsdWU7CisgICAgaWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKGV4
ZWMtPnZtKCkpKQorICAgICAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6
Ok5vdEZvdW5kLCB0aGlzLCBJZGVudGlmaWVyKCkgfTsKKworICAgIEpTTW9kdWxlUmVjb3JkKiBp
bXBvcnRlZE1vZHVsZSA9IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgaW1wb3J0RW50
cnkubW9kdWxlUmVxdWVzdCk7CisgICAgcmV0dXJuIGltcG9ydGVkTW9kdWxlLT5yZXNvbHZlRXhw
b3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUpOworfQorCitzdHJ1Y3QgUmVzb2x2ZVF1
ZXJ5IHsKKyAgICBSZXNvbHZlUXVlcnkoSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCwgVW5p
cXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpCisgICAgICAgIDogbW9kdWxlUmVjb3JkKG1vZHVs
ZVJlY29yZCkKKyAgICAgICAgLCBleHBvcnROYW1lKGV4cG9ydE5hbWUpCisgICAgeworICAgIH0K
KworICAgIFJlc29sdmVRdWVyeShKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkLCBjb25zdCBJ
ZGVudGlmaWVyJiBleHBvcnROYW1lKQorICAgICAgICA6IFJlc29sdmVRdWVyeShtb2R1bGVSZWNv
cmQsIGV4cG9ydE5hbWUuaW1wbCgpKQorICAgIHsKKyAgICB9CisKKyAgICBlbnVtIEVtcHR5VmFs
dWVUYWcgeyBFbXB0eVZhbHVlIH07CisgICAgUmVzb2x2ZVF1ZXJ5KEVtcHR5VmFsdWVUYWcpCisg
ICAgeworICAgIH0KKworICAgIGVudW0gRGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRlZFZhbHVlIH07
CisgICAgUmVzb2x2ZVF1ZXJ5KERlbGV0ZWRWYWx1ZVRhZykKKyAgICAgICAgOiBtb2R1bGVSZWNv
cmQobnVsbHB0cikKKyAgICAgICAgLCBleHBvcnROYW1lKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gIWV4cG9ydE5hbWU7CisgICAgfQorCisgICAgYm9vbCBpc0RlbGV0
ZWRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZXhwb3J0TmFtZS5pc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpOworICAgIH0KKworICAgIC8vIFRoZSBtb2R1bGUgcmVjb3JkIGlz
IG5vdCBtYXJrZWQgZnJvbSB0aGUgR0MuIEJ1dCB0aGVzZSByZWNvcmRzIGFyZSByZWFjaGFibGUg
ZnJvbSB0aGUgSlNHbG9iYWxPYmplY3QuCisgICAgLy8gU28gd2UgZG9uJ3QgY2FyZSB0aGUgcmVh
Y2hhYmlsaXR5IHRvIHRoaXMgcmVjb3JkLgorICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNv
cmQ7CisgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBleHBvcnROYW1lOworfTsKKworc3Ry
dWN0IFJlc29sdmVRdWVyeUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJl
c29sdmVRdWVyeSYpOworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlc29sdmVRdWVyeSYs
IGNvbnN0IFJlc29sdmVRdWVyeSYpOworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK2lubGluZSB1bnNpZ25lZCBSZXNvbHZl
UXVlcnlIYXNoOjpoYXNoKGNvbnN0IFJlc29sdmVRdWVyeSYgcXVlcnkpCit7CisgICAgcmV0dXJu
IFdURjo6UHRySGFzaDxKU01vZHVsZVJlY29yZCo+OjpoYXNoKHF1ZXJ5Lm1vZHVsZVJlY29yZCkg
KyBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaChxdWVyeS5leHBvcnROYW1lKTsKK30KKworaW5saW5l
IGJvb2wgUmVzb2x2ZVF1ZXJ5SGFzaDo6ZXF1YWwoY29uc3QgUmVzb2x2ZVF1ZXJ5JiBsaHMsIGNv
bnN0IFJlc29sdmVRdWVyeSYgcmhzKQoreworICAgIHJldHVybiBsaHMubW9kdWxlUmVjb3JkID09
IHJocy5tb2R1bGVSZWNvcmQgJiYgbGhzLmV4cG9ydE5hbWUgPT0gcmhzLmV4cG9ydE5hbWU7Cit9
CisKK3N0YXRpYyBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHZlRXhwb3J0TG9vcChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFJlc29sdmVRdWVyeSYgcm9vdCkKK3sKKyAgICB0eXBlZGVm
IFdURjo6SGFzaFNldDxSZXNvbHZlUXVlcnksIFJlc29sdmVRdWVyeUhhc2gsIFdURjo6Q3VzdG9t
SGFzaFRyYWl0czxSZXNvbHZlUXVlcnk+PiBSZXNvbHZlU2V0OworICAgIHVzaW5nIFJlc29sdXRp
b24gPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjsKKworICAgIGVudW0gY2xhc3MgVHlwZSB7
IFNlbnRpbmVsLCBOb25lIH07CisgICAgc3RydWN0IFRhc2sgeworICAgICAgICBSZXNvbHZlUXVl
cnkgcXVlcnk7CisgICAgICAgIFR5cGUgdHlwZTsKKyAgICB9OworCisgICAgVmVjdG9yPFRhc2ss
IDg+IHBlbmRpbmdUYXNrczsKKyAgICBSZXNvbHZlU2V0IHJlc29sdmVTZXQ7CisgICAgSGFzaFNl
dDxKU01vZHVsZVJlY29yZCo+IHN0YXJTZXQ7CisKKyAgICBhdXRvIHJlc3VsdCA9IFJlc29sdXRp
b24geyBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCwgbnVsbHB0ciwgSWRlbnRpZmllcigpIH07
CisKKyAgICBhdXRvIHJlc29sdmVOb25Mb2NhbCA9IFsmXShjb25zdCBSZXNvbHZlUXVlcnkmIHF1
ZXJ5KSAtPiBib29sIHsKKyAgICAgICAgaWYgKHF1ZXJ5LmV4cG9ydE5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmRlZmF1bHRLZXl3b3JkLmltcGwoKSkgeworICAgICAgICAgICAgcmVzdWx0
ID0gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6OkVycm9yLCBxdWVyeS5tb2R1bGVSZWNv
cmQsIElkZW50aWZpZXIoKSB9OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXN0YXJTZXQuYWRkKHF1ZXJ5Lm1vZHVsZVJlY29yZCkuaXNOZXdFbnRy
eSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHN0YXJNb2R1bGVOYW1lIDogcXVlcnkubW9kdWxlUmVjb3JkLT5zdGFyRXhwb3J0RW50cmllcygp
KSB7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGVSZWNvcmQgPSBx
dWVyeS5tb2R1bGVSZWNvcmQtPmhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVVpZChleGVjLCBzdGFyTW9kdWxlTmFtZS5nZXQoKSkpOworICAgICAgICAgICAg
cGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgUmVzb2x2ZVF1ZXJ5KGltcG9ydGVkTW9kdWxlUmVj
b3JkLCBxdWVyeS5leHBvcnROYW1lLmdldCgpKSwgVHlwZTo6Tm9uZSB9KTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKworICAgIHBlbmRpbmdUYXNrcy5hcHBlbmQo
VGFzayB7IHJvb3QsIFR5cGU6Ok5vbmUgfSk7CisgICAgd2hpbGUgKCFwZW5kaW5nVGFza3MuaXNF
bXB0eSgpKSB7CisgICAgICAgIGNvbnN0IGF1dG8gdGFzayA9IHBlbmRpbmdUYXNrcy50YWtlTGFz
dCgpOworCisgICAgICAgIGlmICh0YXNrLnR5cGUgPT0gVHlwZTo6Tm9uZSkgeworICAgICAgICAg
ICAgY29uc3QgUmVzb2x2ZVF1ZXJ5JiBxdWVyeSA9IHRhc2sucXVlcnk7CisgICAgICAgICAgICBp
ZiAoIXJlc29sdmVTZXQuYWRkKHRhc2sucXVlcnkpLmlzTmV3RW50cnkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQg
PSBxdWVyeS5tb2R1bGVSZWNvcmQ7CisgICAgICAgICAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0g
bW9kdWxlUmVjb3JkLT5leHBvcnRFbnRyaWVzKCkuZmluZChxdWVyeS5leHBvcnROYW1lKTsKKyAg
ICAgICAgICAgIGlmIChpdGVyYXRvciA9PSBtb2R1bGVSZWNvcmQtPmV4cG9ydEVudHJpZXMoKS5l
bmQoKSkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1hdGNoZWQgZXhwb3J0
ZWQgYmluZGluZyBpbiB0aGUgY3VycmVudCBtb2R1bGUsCisgICAgICAgICAgICAgICAgLy8gd2Ug
bmVlZCB0byBsb29rIGludG8gdGhlIHN0YXJzLgorICAgICAgICAgICAgICAgIGlmIChyZXNvbHZl
Tm9uTG9jYWwodGFzay5xdWVyeSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGNvbnN0IGF1dG8mIGV4cG9ydEVudHJ5ID0gaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAg
c3dpdGNoIChleHBvcnRFbnRyeS50eXBlKSB7CisgICAgICAgICAgICBjYXNlIEpTTW9kdWxlUmVj
b3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6CisgICAgICAgICAgICBjYXNlIEpTTW9kdWxl
UmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgorICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQudHlwZSA9PSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCkgeworICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2
ZWQsIG1vZHVsZVJlY29yZCwgZXhwb3J0RW50cnkubG9jYWxOYW1lIH07CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQubW9kdWxlUmVjb3JkICE9IHF1ZXJ5Lm1vZHVsZVJlY29yZCB8fCByZXN1bHQubG9j
YWxOYW1lICE9IGV4cG9ydEVudHJ5LmxvY2FsTmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXMsIG1vZHVsZVJlY29y
ZCwgSWRlbnRpZmllcigpIH07CisKKyAgICAgICAgICAgICAgICAvLyBTYW1lIHZhbHVlIGNhc2Uu
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVS
ZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDogeworICAgICAgICAgICAgICAgIEpT
TW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9IG1vZHVsZVJlY29yZC0+aG9zdFJl
c29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBleHBvcnRFbnRyeS5tb2R1bGVOYW1lKTsKKworICAg
ICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGltcG9ydGVkIG1vZHVsZSBkb2VzIG5vdCBwcm9kdWNl
IGFueSByZXNvbHZlZCBiaW5kaW5nLCB3ZSBuZWVkIHRvIGxvb2sgaW50byB0aGUgc3RhcnMgaW4g
dGhlICpjdXJyZW50KgorICAgICAgICAgICAgICAgIC8vIG1vZHVsZS4gVG8gZG8gdGhpcywgd2Ug
YXBwZW5kIHRoZSBgU2VudGluZWxgIHRhc2sgdG8gdGhlIHRhc2sgcXVldWUuCisgICAgICAgICAg
ICAgICAgLy8gV2hlbiB0aGUgYFNlbnRpbmVsYCB0YXNrIGlzIHBvcGVkIGFuZCBzdGlsbCB0aGUg
cmVxdWVzdCBpcyBub3QgcmVzb2x2ZWQsIHdlIHdpbGwgbG9vayBpbnRvIHRoZSBzdGFycy4KKyAg
ICAgICAgICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyBxdWVyeSwgVHlwZTo6U2Vu
dGluZWwgfSk7CisgICAgICAgICAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgUmVz
b2x2ZVF1ZXJ5KGltcG9ydGVkTW9kdWxlUmVjb3JkLCBleHBvcnRFbnRyeS5pbXBvcnROYW1lKSwg
VHlwZTo6Tm9uZSB9KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQu
dHlwZSA9PSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCkgeworICAgICAgICAgICAgICAgIC8v
IEluZGlyZWN0IGV4cG9ydCBlbnRyeSBkb2VzIG5vdCBwcm9kdWNlIGFueSByZXNvbHZlZCBiaW5k
aW5nLgorICAgICAgICAgICAgICAgIC8vIFNvIHdlIHdpbGwgaW52ZXN0aWdhdGUgdGhlIHN0YXJz
LgorICAgICAgICAgICAgICAgIGlmIChyZXNvbHZlTm9uTG9jYWwodGFzay5xdWVyeSkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpy
ZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFt
ZSkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiByZXNvbHZlRXhwb3J0TG9vcChleGVjLCBS
ZXNvbHZlUXVlcnkodGhpcywgZXhwb3J0TmFtZS5pbXBsKCkpKTsKK30KKworc3RhdGljIHZvaWQg
Z2V0RXhwb3J0ZWROYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIEpTTW9kdWxlUmVjb3JkKiByb290LCBJ
ZGVudGlmaWVyU2V0JiBleHBvcnRlZE5hbWVzKQoreworICAgIEhhc2hTZXQ8SlNNb2R1bGVSZWNv
cmQqPiBleHBvcnRTdGFyU2V0OworICAgIFZlY3RvcjxKU01vZHVsZVJlY29yZCosIDg+IHBlbmRp
bmdNb2R1bGVzOworCisgICAgcGVuZGluZ01vZHVsZXMuYXBwZW5kKHJvb3QpOworCisgICAgd2hp
bGUgKCFwZW5kaW5nTW9kdWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQq
IG1vZHVsZVJlY29yZCA9IHBlbmRpbmdNb2R1bGVzLnRha2VMYXN0KCk7CisgICAgICAgIGlmIChl
eHBvcnRTdGFyU2V0LmNvbnRhaW5zKG1vZHVsZVJlY29yZCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgZXhwb3J0U3RhclNldC5hZGQobW9kdWxlUmVjb3JkKTsKKworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtb2R1bGVSZWNvcmQtPmV4cG9ydEVudHJpZXMoKSkgewor
ICAgICAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAg
ICAgICAgc3dpdGNoIChleHBvcnRFbnRyeS50eXBlKSB7CisgICAgICAgICAgICBjYXNlIEpTTW9k
dWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6CisgICAgICAgICAgICBjYXNlIEpT
TW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6CisgICAgICAgICAgICAg
ICAgaWYgKG1vZHVsZVJlY29yZCA9PSByb290IHx8IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZWZh
dWx0S2V5d29yZCAhPSBleHBvcnRFbnRyeS5leHBvcnROYW1lKQorICAgICAgICAgICAgICAgICAg
ICBleHBvcnRlZE5hbWVzLmFkZChleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4
cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0YXJNb2R1
bGVOYW1lIDogbW9kdWxlUmVjb3JkLT5zdGFyRXhwb3J0RW50cmllcygpKSB7CisgICAgICAgICAg
ICBKU01vZHVsZVJlY29yZCogcmVxdWVzdGVkTW9kdWxlUmVjb3JkID0gbW9kdWxlUmVjb3JkLT5o
b3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywg
c3Rhck1vZHVsZU5hbWUuZ2V0KCkpKTsKKyAgICAgICAgICAgIHBlbmRpbmdNb2R1bGVzLmFwcGVu
ZChyZXF1ZXN0ZWRNb2R1bGVSZWNvcmQpOworICAgICAgICB9CisgICAgfQorfQorCitKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdCogSlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZShFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KQorICAgICAg
ICByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3QuZ2V0KCk7CisKKyAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIElk
ZW50aWZpZXJTZXQgZXhwb3J0ZWROYW1lczsKKyAgICBnZXRFeHBvcnRlZE5hbWVzKGV4ZWMsIHRo
aXMsIGV4cG9ydGVkTmFtZXMpOworCisgICAgSWRlbnRpZmllclNldCB1bmFtYmlndW91c05hbWVz
OworICAgIGZvciAoY29uc3QgYXV0byYgbmFtZSA6IGV4cG9ydGVkTmFtZXMpIHsKKyAgICAgICAg
Y29uc3QgYXV0byByZXNvbHV0aW9uID0gcmVzb2x2ZUV4cG9ydChleGVjLCBJZGVudGlmaWVyOjpm
cm9tVWlkKGV4ZWMsIG5hbWUuZ2V0KCkpKTsKKyAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5
cGUpIHsKKyAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAg
Y2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgIHRocm93U3ludGF4RXJy
b3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBjYXNlIFJl
c29sdXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAgICAgICB1bmFtYmlndW91
c05hbWVzLmFkZChuYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
CisgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Quc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QtPm1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpLCB0aGlzLCB1bmFtYmlndW91c05h
bWVzKSk7CisgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOworfQorCit2
b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpj
cmVhdGUoZXhlYywgc291cmNlQ29kZSgpLCB0aGlzKTsKKyAgICBpZiAoIWV4ZWN1dGFibGUpIHsK
KyAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhleGVjLCBleGVjdXRhYmxlKTsKK30KKworc2l6
ZV90IEpTTW9kdWxlUmVjb3JkOjpsaW5rTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNNb2R1bGVS
ZWNvcmQqIGltcG9ydGVkKQoreworICAgIHNpemVfdCBjYW5kaWRhdGVJbmRleCA9IG1fbGlua2Vk
TW9kdWxlcy5zaXplKCk7CisgICAgY29uc3QgYXV0byBhZGRSZXN1bHQgPSBtX2xpbmtlZE1vZHVs
ZU1hcC5hZGQoaW1wb3J0ZWQtPm1vZHVsZUVudmlyb25tZW50KCksIGNhbmRpZGF0ZUluZGV4KTsK
KyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgbV9saW5rZWRNb2R1bGVz
LmFwcGVuZChXcml0ZUJhcnJpZXI8VW5rbm93bj4oKSk7CisgICAgICAgIG1fbGlua2VkTW9kdWxl
cy5sYXN0KCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGltcG9ydGVkKTsKKyAgICAgICAgcmV0dXJu
IGNhbmRpZGF0ZUluZGV4OworICAgIH0KKyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZTsKK30KKwordm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMo
RXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUpCit7CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jayA9IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT51bmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2soKTsKKyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSB1bmxpbmtlZENv
ZGVCbG9jay0+c3ltYm9sVGFibGUoKTsKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVF
bnZpcm9ubWVudCA9IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3lt
Ym9sVGFibGUsIGpzVERaVmFsdWUoKSwgdGhpcyk7CisKKyAgICAvLyBJbml0aWFsaXplIG5vbi1s
ZXhpY2FsIHZhcmlhYmxlcyB3aXRoIHVuZGVmaW5lZC4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHZh
cmlhYmxlIDogbV9kZWNsYXJlZFZhcmlhYmxlcykgeworICAgICAgICBjb25zdCBhdXRvJiBlbnRy
eSA9IHN5bWJvbFRhYmxlLT5nZXQodmFyaWFibGUua2V5LmdldCgpKTsKKyAgICAgICAgVmFyT2Zm
c2V0IG9mZnNldCA9IGVudHJ5LnZhck9mZnNldCgpOworICAgICAgICBpZiAoIW9mZnNldC5pc1N0
YWNrKCkpCisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dChtb2R1bGVFbnZpcm9ubWVudCwgZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCB2YXJpYWJsZS5rZXkuZ2V0KCkpLCBqc1VuZGVm
aW5lZCgpLCBmYWxzZSk7CisgICAgfQorCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKworICAg
IC8vIEluaXRpYWxpemUgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgorICAgIGZvciAoc2l6ZV90IGkg
PSAwLCBudW1iZXJPZkZ1bmN0aW9ucyA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0
aW9uRGVjbHMoKTsgaSA8IG51bWJlck9mRnVuY3Rpb25zOyArK2kpIHsKKyAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlID0gdW5saW5r
ZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKKyAgICAgICAgY29uc3QgYXV0byYgZW50cnkg
PSBzeW1ib2xUYWJsZS0+Z2V0KHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCkuaW1w
bCgpKTsKKyAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnZhck9mZnNldCgpOworICAg
ICAgICBpZiAoIW9mZnNldC5pc1N0YWNrKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKS5pc0VtcHR5KCkpOworICAgICAgICAgICAgaWYg
KHZtLnR5cGVQcm9maWxlcigpIHx8IHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkgeworICAgICAg
ICAgICAgICAgIHZtLmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4ZWN1dGVk
UmFuZ2UobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnNvdXJjZUlEKCksCisgICAgICAgICAgICAg
ICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZz
ZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPnR5
cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUtPmxpbmsodm0sIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT5zb3VyY2UoKSks
IG1vZHVsZUVudmlyb25tZW50KTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0KG1vZHVsZUVu
dmlyb25tZW50LCBleGVjLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLCBmdW5j
dGlvbiwgZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChjb25zdCBhdXRvJiBw
YWlyIDogbV9leHBvcnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVudHJ5
ID0gcGFpci52YWx1ZTsKKyAgICAgICAgaWYgKGV4cG9ydEVudHJ5LnR5cGUgPT0gSlNNb2R1bGVS
ZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdCkgeworICAgICAgICAgICAgY29uc3Qg
YXV0byByZXNvbHV0aW9uID0gcmVzb2x2ZUV4cG9ydChleGVjLCBleHBvcnRFbnRyeS5leHBvcnRO
YW1lKTsKKyAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgICAg
ICBjYXNlIFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgorICAgICAgICAgICAgY2FzZSBSZXNv
bHV0aW9uOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6
QW1iaWd1b3VzOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6
OlJlc29sdmVkOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgZm9yIChhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKSB7Cisg
ICAgICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgSlNN
b2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShl
eGVjLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KTsKKyAgICAgICAgaWYgKGltcG9ydEVudHJ5
LmlzTmFtZXNwYWNlKGV4ZWMtPnZtKCkpKSB7CisgICAgICAgICAgICBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCogbmFtZXNwYWNlT2JqZWN0ID0gaW1wb3J0ZWRNb2R1bGUtPmdldE1vZHVsZU5hbWVz
cGFjZShleGVjKTsKKyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzeW1ib2xUYWJsZS0+aW5saW5lR2V0KGxvY2tlciwgaW1wb3J0RW50cnkubG9jYWxOYW1l
LmltcGwoKSk7CisgICAgICAgICAgICBTY29wZU9mZnNldCBvZmZzZXQgPSBlbnRyeS5zY29wZU9m
ZnNldCgpOworICAgICAgICAgICAgQVNTRVJUKG1vZHVsZUVudmlyb25tZW50LT5pc1ZhbGlkKG9m
ZnNldCkpOworICAgICAgICAgICAgbW9kdWxlRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQob2Zmc2V0
KS5zZXQoZXhlYy0+dm0oKSwgbW9kdWxlRW52aXJvbm1lbnQsIG5hbWVzcGFjZU9iamVjdCk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSBpbXBv
cnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lKTsK
KyAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgICAgICBjYXNl
IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgorICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9u
OjpUeXBlOjpBbWJpZ3VvdXM6CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVy
cm9yOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29s
dmVkOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgbW9k
dWxlRW52aXJvbm1lbnQpOworICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0KGV4ZWMt
PnZtKCksIHRoaXMsIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKTsKK30KKworSlNWYWx1ZSBKU01v
ZHVsZVJlY29yZDo6ZXhlY3V0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFtX21vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGUobV9tb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZS5nZXQoKSwgZXhlYywgbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQoKSk7Cisg
ICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jbGVhcigpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKIHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiB1aWQpCiB7CiAgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKQEAgLTc2LDcgKzQ1
Myw2IEBAIHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkKICAgICByZXR1cm4gcHJpbnRhYmxlTmFtZShpZGVudC5pbXBsKCkpOwogfQogCi0KIHZvaWQg
SlNNb2R1bGVSZWNvcmQ6OmR1bXAoKQogewogICAgIGRhdGFMb2coIlxuQW5hbHl6aW5nIE1vZHVs
ZVJlY29yZCBrZXkoIiwgcHJpbnRhYmxlTmFtZShtX21vZHVsZUtleSksICIpXG4iKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4IDA1ZDY5
NGQzZTNmZTU1YTUyMWFmMzVkZTgyNjE1OTgwZjA4MGUyZTAuLjY2Y2JlZTFlZTFhZjQ0OGQwMzA1
OTIxYzhhMGJhMDE2NzZiNjU0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuaApAQCAtMjgsMTUgKzI4LDIyIEBACiAKICNpbmNsdWRlICJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJT
b3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsKK2NsYXNzIEpTTW9kdWxl
RW52aXJvbm1lbnQ7CitjbGFzcyBKU01hcDsKK2NsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
OworCiAvLyBCYXNlZCBvbiB0aGUgU291cmNlIFRleHQgTW9kdWxlIFJlY29yZAogLy8gaHR0cDov
L3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXNvdXJjZS10ZXh0
LW1vZHVsZS1yZWNvcmRzCiBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0
aWJsZU9iamVjdCB7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAKQEAgLTgxLDE4
ICs4OCwxMyBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkpCisgICAgc3Rh
dGljIEpTTW9kdWxlUmVjb3JkKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAgICB7Ci0gICAgICAgIEpTTW9k
dWxlUmVjb3JkKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxl
UmVjb3JkPih2bS5oZWFwKSkgSlNNb2R1bGVSZWNvcmQodm0sIHN0cnVjdHVyZSwgbW9kdWxlS2V5
KTsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNNb2R1bGVSZWNvcmQ+KHZtLmhlYXApKSBKU01vZHVsZVJlY29yZCh2bSwgc3Ry
dWN0dXJlLCBtb2R1bGVLZXksIHNvdXJjZUNvZGUsIGRlY2xhcmVkVmFyaWFibGVzLCBsZXhpY2Fs
VmFyaWFibGVzKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAg
ICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KIAotICAgIHN0YXRpYyBKU01vZHVsZVJlY29yZCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50
aWZpZXImIG1vZHVsZUtleSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0o
KSwgc3RydWN0dXJlLCBtb2R1bGVLZXkpOwotICAgIH0KLQogICAgIHZvaWQgYXBwZW5kUmVxdWVz
dGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImKTsKICAgICB2b2lkIGFkZFN0YXJFeHBvcnRFbnRy
eShjb25zdCBJZGVudGlmaWVyJik7CiAgICAgdm9pZCBhZGRJbXBvcnRFbnRyeShjb25zdCBJbXBv
cnRFbnRyeSYpOwpAQCAtMTAwLDI0ICsxMDIsNzEgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBw
dWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogCiAgICAgY29uc3QgSW1wb3J0RW50cnkmIGxv
b2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFt
ZSk7CiAKKyAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2VDb2RlOyB9CisgICAgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KCkgY29uc3Qg
eyByZXR1cm4gbV9tb2R1bGVLZXk7IH0KICAgICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYg
cmVxdWVzdGVkTW9kdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVkTW9kdWxlczsgfQor
ICAgIGNvbnN0IEV4cG9ydE1hcCYgZXhwb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fZXhw
b3J0RW50cmllczsgfQorICAgIGNvbnN0IEltcG9ydE1hcCYgaW1wb3J0RW50cmllcygpIGNvbnN0
IHsgcmV0dXJuIG1faW1wb3J0RW50cmllczsgfQorICAgIGNvbnN0IElkZW50aWZpZXJTZXQmIHN0
YXJFeHBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGFyRXhwb3J0RW50cmllczsgfQor
CisgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMoKSBjb25z
dCB7IHJldHVybiBtX2RlY2xhcmVkVmFyaWFibGVzOyB9CisgICAgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbFZhcmlh
YmxlczsgfQogCiAgICAgdm9pZCBkdW1wKCk7CiAKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiBt
b2R1bGVFbnZpcm9ubWVudCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9tb2R1bGVFbnZpcm9u
bWVudCk7CisgICAgICAgIHJldHVybiBtX21vZHVsZUVudmlyb25tZW50LmdldCgpOworICAgIH0K
KworICAgIHZvaWQgbGluayhFeGVjU3RhdGUqKTsKKyAgICBKU1ZhbHVlIGV4ZWN1dGUoRXhlY1N0
YXRlKik7CisKKyAgICBzdHJ1Y3QgUmVzb2x1dGlvbiB7CisgICAgICAgIGVudW0gY2xhc3MgVHlw
ZSB7IFJlc29sdmVkLCBOb3RGb3VuZCwgQW1iaWd1b3VzLCBFcnJvciB9OworCisgICAgICAgIFR5
cGUgdHlwZTsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZDsKKyAgICAgICAg
SWRlbnRpZmllciBsb2NhbE5hbWU7CisgICAgfTsKKworICAgIFJlc29sdXRpb24gcmVzb2x2ZUV4
cG9ydChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKTsKKyAgICBSZXNv
bHV0aW9uIHJlc29sdmVJbXBvcnQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxO
YW1lKTsKKworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuZ2V0KCk7IH0K
KworICAgIHNpemVfdCBsaW5rTW9kdWxlKEV4ZWNTdGF0ZSosIEpTTW9kdWxlUmVjb3JkKiBpbXBv
cnRlZCk7CisKKyAgICBKU01vZHVsZVJlY29yZCogaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKwogcHJpdmF0ZToKLSAg
ICBKU01vZHVsZVJlY29yZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVu
dGlmaWVyJiBtb2R1bGVLZXkpCisgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxl
cywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAgICAgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9tb2R1bGVLZXkobW9kdWxlS2V5KQor
ICAgICAgICAsIG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQorICAgICAgICAsIG1fZGVjbGFyZWRW
YXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMpCisgICAgICAgICwgbV9sZXhpY2FsVmFyaWFibGVz
KGxleGljYWxWYXJpYWJsZXMpCiAgICAgewogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKIAorICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBnZXRNb2R1bGVOYW1lc3Bh
Y2UoRXhlY1N0YXRlKik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAorICAg
IHZvaWQgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiwgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqKTsKKwogICAgIC8vIFRoZSBsb2FkZXIgcmVzb2x2ZXMgdGhlIGdpdmVuIG1vZHVs
ZSBuYW1lIHRvIHRoZSBtb2R1bGUga2V5LiBUaGUgbW9kdWxlIGtleSBpcyB0aGUgdW5pcXVlIHZh
bHVlIHRvIHJlcHJlc2VudCB0aGlzIG1vZHVsZS4KICAgICBJZGVudGlmaWVyIG1fbW9kdWxlS2V5
OwogCisgICAgU291cmNlQ29kZSBtX3NvdXJjZUNvZGU7CisKKyAgICBWYXJpYWJsZUVudmlyb25t
ZW50IG1fZGVjbGFyZWRWYXJpYWJsZXM7CisgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2xleGlj
YWxWYXJpYWJsZXM7CisKICAgICAvLyBNYXAgbG9jYWxOYW1lIC0+IEltcG9ydEVudHJ5LgogICAg
IEltcG9ydE1hcCBtX2ltcG9ydEVudHJpZXM7CiAKQEAgLTEyOSw2ICsxNzgsMTUgQEAgY2xhc3Mg
SlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIC8vIFNh
dmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1vZHVsZSBsb2FkZXIgbG9hZHMgYW5k
IHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KICAgICAvLyBodHRwOi8vd3d3LmVjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgogICAg
IE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxlczsKKworICAgIFdyaXRlQmFy
cmllcjxKU01vZHVsZUVudmlyb25tZW50PiBtX21vZHVsZUVudmlyb25tZW50OworICAgIFdyaXRl
QmFycmllcjxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Q7
CisgICAgV3JpdGVCYXJyaWVyPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPiBtX21vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOworICAgIFdyaXRlQmFycmllcjxKU01hcD4gbV9kZXBlbmRlbmNpZXNNYXA7
CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8SlNNb2R1bGVFbnZpcm9ubWVudCosIHNpemVfdD4gTGlu
a2VkTW9kdWxlTWFwOworICAgIExpbmtlZE1vZHVsZU1hcCBtX2xpbmtlZE1vZHVsZU1hcDsKKyAg
ICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2xpbmtlZE1vZHVsZXM7CiB9OwogCiBp
bmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuY3BwCmluZGV4IGJiMmVmZGQwNjMxY2QxOGVhOTc1NDI2NzRhMmNlNzE4MTUwNzJjOGYuLjBi
ZWMwZDg2MWE3NDhkZDc4MDU0ZWU5ZjI5M2FjYjllMmIzMmMxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCisj
aW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3Jk
LmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAK
QEAgLTY1LDYgKzY3LDIxIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJZGVudGlmCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChKU01vZHVsZUVudmlyb25tZW50
KiBtb2R1bGVFbnZpcm9ubWVudCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+
KHNjb3BlKSkgeworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IG1v
ZHVsZUVudmlyb25tZW50LT5tb2R1bGVSZWNvcmQoKTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8g
cmVzb2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+cmVzb2x2ZUltcG9ydChleGVjLCBpZGVudCk7Cisg
ICAgICAgICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0
aW9uOjpUeXBlOjpSZXNvbHZlZCkgeworICAgICAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBp
bXBvcnRlZFJlY29yZCA9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkOworICAgICAgICAgICAgICAg
IG1vZHVsZVJlY29yZC0+bGlua01vZHVsZShleGVjLCBpbXBvcnRlZFJlY29yZCk7CisgICAgICAg
ICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogaW1wb3J0ZWRFbnZpcm9ubWVudCA9IGltcG9y
dGVkUmVjb3JkLT5tb2R1bGVFbnZpcm9ubWVudCgpOworICAgICAgICAgICAgICAgIFN5bWJvbFRh
YmxlRW50cnkgZW50cnkgPSBpbXBvcnRlZEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQo
cmVzb2x1dGlvbi5sb2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWVu
dHJ5LmlzTnVsbCgpKTsKKyAgICAgICAgICAgICAgICAvLyBNb2R1bGUgZXhlY3V0aW9uIGlzIGFs
d2F5cyBkb25lIHVuZGVyIHRoZSBzdHJpY3QgbW9kZS4gU28gdGhlcmUgaXMgbm8gd2F5IHRvIGlu
amVjdCB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgb3AgPSBSZXNvbHZlT3AoTW9kdWxlVmFy
LCBkZXB0aCwgMCwgaW1wb3J0ZWRFbnZpcm9ubWVudCwgZW50cnkud2F0Y2hwb2ludFNldCgpLCBl
bnRyeS5zY29wZU9mZnNldCgpLm9mZnNldCgpLCByZXNvbHV0aW9uLmxvY2FsTmFtZS5pbXBsKCkp
OworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKICAgICAgICAgaWYgKGxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+dXNlc05v
blN0cmljdEV2YWwoKSkKICAgICAgICAgICAgIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzID0gdHJ1
ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMyLDYgKzI0OSw3IEBAIGNvbnN0IGNoYXIq
IHJlc29sdmVUeXBlTmFtZShSZXNvbHZlVHlwZSB0eXBlKQogICAgICAgICAiR2xvYmFsVmFyIiwK
ICAgICAgICAgIkNsb3N1cmVWYXIiLAogICAgICAgICAiTG9jYWxDbG9zdXJlVmFyIiwKKyAgICAg
ICAgIk1vZHVsZVZhciIsCiAgICAgICAgICJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MiLAogICAgICAgICAiR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIsCiAgICAg
ICAgICJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmgKaW5kZXggYTY1MzE2NzQ5MGY2ODIyM2Y1MTFkZDI4OTA4OTI5
ZmM0NmExOTczYy4uMDI2YTI3MTRkYzhkOTIyYTk4Mjg4NWU1NDZiNTc4YmE5NjM0ODBhNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtNDUsNiArNDUsNyBAQCBl
bnVtIFJlc29sdmVUeXBlIHsKICAgICBHbG9iYWxWYXIsCiAgICAgQ2xvc3VyZVZhciwKICAgICBM
b2NhbENsb3N1cmVWYXIsCisgICAgTW9kdWxlVmFyLAogCiAgICAgLy8gRGl0dG8sIGJ1dCBhdCBs
ZWFzdCBvbmUgaW50ZXJ2ZW5pbmcgc2NvcGUgdXNlZCBub24tc3RyaWN0IGV2YWwsIHdoaWNoCiAg
ICAgLy8gY2FuIGluamVjdCBhbiBpbnRlcmNlcHRpbmcgdmFyIGRlbGNhcmF0aW9uIGF0IHJ1bnRp
bWUuCkBAIC03Miw2ICs3Myw3IEBAIGlubGluZSBSZXNvbHZlVHlwZSBtYWtlVHlwZShSZXNvbHZl
VHlwZSB0eXBlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgIGNhc2UgQ2xvc3Vy
ZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgcmV0dXJuIENsb3N1cmVW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOworICAgIGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2Ug
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgR2xvYmFsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOgpAQCAtOTAsNiArOTIsNyBAQCBpbmxpbmUgYm9vbCBuZWVkc1ZhckluamVjdGlv
bkNoZWNrcyhSZXNvbHZlVHlwZSB0eXBlKQogICAgIGNhc2UgR2xvYmFsVmFyOgogICAgIGNhc2Ug
Q2xvc3VyZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKKyAgICBjYXNlIE1vZHVsZVZh
cjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
czoKQEAgLTEwMywxMyArMTA2LDE0IEBAIGlubGluZSBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hl
Y2tzKFJlc29sdmVUeXBlIHR5cGUpCiB9CiAKIHN0cnVjdCBSZXNvbHZlT3AgewotICAgIFJlc29s
dmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50LCBXYXRjaHBvaW50U2V0
KiB3YXRjaHBvaW50U2V0LCB1aW50cHRyX3Qgb3BlcmFuZCkKKyAgICBSZXNvbHZlT3AoUmVzb2x2
ZVR5cGUgdHlwZSwgc2l6ZV90IGRlcHRoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNMZXhpY2Fs
RW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2lu
dFNldCwgdWludHB0cl90IG9wZXJhbmQsIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBvcnRlZE5hbWUg
PSBudWxscHRyKQogICAgICAgICA6IHR5cGUodHlwZSkKICAgICAgICAgLCBkZXB0aChkZXB0aCkK
ICAgICAgICAgLCBzdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICAgICAsIGxleGljYWxFbnZpcm9u
bWVudChsZXhpY2FsRW52aXJvbm1lbnQpCiAgICAgICAgICwgd2F0Y2hwb2ludFNldCh3YXRjaHBv
aW50U2V0KQogICAgICAgICAsIG9wZXJhbmQob3BlcmFuZCkKKyAgICAgICAgLCBpbXBvcnRlZE5h
bWUoaW1wb3J0ZWROYW1lKQogICAgIHsKICAgICB9CiAKQEAgLTExOSw2ICsxMjMsNyBAQCBzdHJ1
Y3QgUmVzb2x2ZU9wIHsKICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25t
ZW50OwogICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQ7CiAgICAgdWludHB0cl90IG9w
ZXJhbmQ7CisgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBpbXBvcnRlZE5hbWU7CiB9Owog
CiBjbGFzcyBSZXNvbHZlTW9kZUFuZFR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuaAppbmRleCA0MDMyNmNlMGYzMjlmYTdjN2JiYzk5ZjQ0NjQyOGZlOTZjOTEyNGIzLi5m
Y2UwNjFkMWY4ZDYxZGFiMDYzNjBhZThkN2FhNDQ4ZjJmMThjNzk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtNDEsMTAgKzQxLDEyIEBAIGVudW0gSlNUeXBlIDog
dWludDhfdCB7CiAKICAgICBFdmFsRXhlY3V0YWJsZVR5cGUsCiAgICAgUHJvZ3JhbUV4ZWN1dGFi
bGVUeXBlLAorICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZSwKICAgICBGdW5jdGlvbkV4
ZWN1dGFibGVUeXBlLAogCiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVUeXBlLAogICAg
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1R5cGUsCisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrVHlwZSwKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2tUeXBlLAogICAgIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2tUeXBlLAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAppbmRleCAxZDY3YTRjYWRlOGI0N2Nj
MThjZjU4NjQyZDY0NDZkMDMyZjVlNzkzLi5lNmMyMmQyZDNjMzUyNTA5YzVjODU3MjU1M2E5ZmE2
YzJiZGI5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVMb2FkZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01v
ZHVsZUxvYWRlck9iamVjdC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU0ludGVy
bmFsUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCIKICNp
bmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNs
dWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCiAjaW5j
bHVkZSAiTm9kZXMuaCIKQEAgLTQ1LDYgKzQ2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9k
dWxlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEV2YWx1YXRlKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVy
T2JqZWN0TW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEV4ZWNTdGF0ZSopOwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UmVzb2x2ZShF
eGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlck9iamVjdEZldGNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0VHJhbnNsYXRlKEV4ZWNTdGF0ZSopOwpAQCAtNjIs
MjggKzY1LDM0IEBAIGNvbnN0IENsYXNzSW5mbyBNb2R1bGVMb2FkZXJPYmplY3Q6OnNfaW5mbyA9
IHsgIk1vZHVsZUxvYWRlciIsICZCYXNlOjpzX2luZm8sICZtCiAKIC8qIFNvdXJjZSBmb3IgTW9k
dWxlTG9hZGVyT2JqZWN0Lmx1dC5oCiBAYmVnaW4gbW9kdWxlTG9hZGVyT2JqZWN0VGFibGUKLSAg
ICBzZXRTdGF0ZVRvTWF4ICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RTZXRTdGF0ZVRv
TWF4ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgbmV3UmVnaXN0cnlFbnRy
eSAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQotICAgIGVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdEVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKLSAgICBmb3JjZUZ1bGZpbGxQcm9taXNlICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RGb3Jj
ZUZ1bGZpbGxQcm9taXNlICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgZnVsZmlsbEZl
dGNoICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RnVsZmlsbEZldGNoICAgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIGZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAg
IG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDIKLSAgICBmdWxmaWxsSW5zdGFudGlhdGUgICAgICAgICBtb2R1bGVMb2FkZXJPYmpl
Y3RGdWxmaWxsSW5zdGFudGlhdGUgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgY29t
bWl0SW5zdGFudGlhdGVkICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0Q29tbWl0SW5zdGFudGlh
dGVkICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwotICAgIGluc3RhbnRpYXRpb24gICAgICAg
ICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRpb24gICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDMKLSAgICByZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICBtb2R1bGVMb2Fk
ZXJPYmplY3RSZXF1ZXN0RmV0Y2ggICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0g
ICAgcmVxdWVzdFRyYW5zbGF0ZSAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdFRy
YW5zbGF0ZSAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIHJlcXVlc3RJbnN0YW50
aWF0ZSAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZSAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICByZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyBtb2R1
bGVMb2FkZXJPYmplY3RSZXF1ZXN0UmVzb2x2ZURlcGVuZGVuY2llcyBEb250RW51bXxGdW5jdGlv
biAxCi0gICAgcmVxdWVzdEluc3RhbnRpYXRlQWxsICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UmVx
dWVzdEluc3RhbnRpYXRlQWxsICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICAgIGxvYWRNb2R1
bGUgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdExvYWRNb2R1bGUgICAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBwcm92aWRlICAgICAgICAgICAgICAgICAg
ICBtb2R1bGVMb2FkZXJPYmplY3RQcm92aWRlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAzCi0gICAgcGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2Jq
ZWN0UGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIHJl
cXVlc3RlZE1vZHVsZXMgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVs
ZXMgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgICByZXNvbHZlICAgICAgICAgICAg
ICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlICAgICAgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCi0gICAgZmV0Y2ggICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9h
ZGVyT2JqZWN0RmV0Y2ggICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQot
ICAgIHRyYW5zbGF0ZSAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFRyYW5zbGF0
ZSAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBpbnN0YW50aWF0ZSAg
ICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0ZSAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgc2V0U3RhdGVUb01heCAgICAgICAgICAgICAgICAg
IG1vZHVsZUxvYWRlck9iamVjdFNldFN0YXRlVG9NYXggICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAyCisgICAgbmV3UmVnaXN0cnlFbnRyeSAgICAgICAgICAgICAgIG1vZHVsZUxv
YWRlck9iamVjdE5ld1JlZ2lzdHJ5RW50cnkgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCisgICAgZW5zdXJlUmVnaXN0ZXJlZCAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVj
dEVuc3VyZVJlZ2lzdGVyZWQgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAg
Zm9yY2VGdWxmaWxsUHJvbWlzZSAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZvcmNlRnVs
ZmlsbFByb21pc2UgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEZl
dGNoICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxGZXRjaCAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbFRyYW5zbGF0ZSAg
ICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxUcmFuc2xhdGUgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZnVsZmlsbEluc3RhbnRpYXRlICAgICAgICAg
ICAgIG1vZHVsZUxvYWRlck9iamVjdEZ1bGZpbGxJbnN0YW50aWF0ZSAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAyCisgICAgY29tbWl0SW5zdGFudGlhdGVkICAgICAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdENvbW1pdEluc3RhbnRpYXRlZCAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAzCisgICAgaW5zdGFudGlhdGlvbiAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdEluc3RhbnRpYXRpb24gICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisg
ICAgcmVxdWVzdEZldGNoICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVl
c3RGZXRjaCAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVz
dFRyYW5zbGF0ZSAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RUcmFuc2xh
dGUgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdEluc3RhbnRp
YXRlICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZSAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdFJlc29sdmVEZXBlbmRlbmNp
ZXMgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RSZXNvbHZlRGVwZW5kZW5jaWVzICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgICAgcmVxdWVzdEluc3RhbnRpYXRlQWxsICAgICAgICAgIG1v
ZHVsZUxvYWRlck9iamVjdFJlcXVlc3RJbnN0YW50aWF0ZUFsbCAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgICAgcmVxdWVzdExpbmsgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRl
ck9iamVjdFJlcXVlc3RMaW5rICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CisgICAgcmVxdWVzdFJlYWR5ICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJl
cXVlc3RSZWFkeSAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgbGlu
ayAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdExpbmsgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgbW9kdWxlRGVjbGFy
YXRpb25JbnN0YW50aWF0aW9uIG1vZHVsZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5z
dGFudGlhdGlvbiBEb250RW51bXxGdW5jdGlvbiAyCisgICAgbW9kdWxlRXZhbHVhdGlvbiAgICAg
ICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdE1vZHVsZUV2YWx1YXRpb24gICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgZXZhbHVhdGUgICAgICAgICAgICAgICAgICAgICAg
IG1vZHVsZUxvYWRlck9iamVjdEV2YWx1YXRlICAgICAgICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAyCisgICAgbG9hZE1vZHVsZSAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxv
YWRlck9iamVjdExvYWRNb2R1bGUgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAyCisgICAgcHJvdmlkZSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVj
dFByb3ZpZGUgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCisgICAg
cGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9k
dWxlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVxdWVzdGVk
TW9kdWxlcyAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVsZXMg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgcmVzb2x2ZSAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUgICAgICAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgZmV0Y2ggICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZHVsZUxvYWRlck9iamVjdEZldGNoICAgICAgICAgICAgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgICAgdHJhbnNsYXRlICAgICAgICAgICAgICAgICAgICAgIG1vZHVs
ZUxvYWRlck9iamVjdFRyYW5zbGF0ZSAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAyCisgICAgaW5zdGFudGlhdGUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlck9i
amVjdEluc3RhbnRpYXRlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiBA
ZW5kCiAqLwogCkBAIC0xMzcsMTkgKzE0Niw2IEBAIEpTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0
Ojpwcm92aWRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIFN0YXR1cyBzdGF0dXMsCiAg
ICAgcmV0dXJuIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywg
YXJndW1lbnRzKTsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIE1vZHVsZUxvYWRlck9iamVjdDo6
cmVxdWVzdEluc3RhbnRpYXRlQWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXkpCi17Ci0g
ICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5yZXF1ZXN0SW5zdGFudGlhdGVBbGxQdWJs
aWNOYW1lKCkpKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2Fs
bFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3Vt
ZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKGtleSk7Ci0KLSAgICByZXR1cm4ganNDYXN0PEpT
SW50ZXJuYWxQcm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCB0aGlzLCBhcmd1bWVudHMpKTsKLX0KLQogSlNJbnRlcm5hbFByb21pc2UqIE1vZHVsZUxvYWRl
ck9iamVjdDo6bG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtZSwg
SlNWYWx1ZSByZWZlcnJlcikKIHsKICAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNP
YmplY3QqPihnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmxv
YWRNb2R1bGVQdWJsaWNOYW1lKCkpKTsKQEAgLTI0OSwxNCArMjQ1LDE1IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRl
KiBleGVjKQogICAgIH0KICAgICBBU1NFUlQobW9kdWxlUHJvZ3JhbU5vZGUpOwogCi0gICAgTW9k
dWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlS2V5LCBtb2R1bGVQcm9ncmFt
Tm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFi
bGVzKCkpOworICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVyKGV4ZWMsIG1vZHVsZUtl
eSwgc291cmNlQ29kZSwgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLCBtb2R1
bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKICAgICBKU01vZHVsZVJlY29yZCog
bW9kdWxlUmVjb3JkID0gbW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3JhbU5vZGUp
OworCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShtb2R1bGVSZWNvcmQpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlcXVlc3RlZE1vZHVs
ZXMoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQg
PSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgSlNNb2R1
bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihl
eGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFtb2R1bGVSZWNvcmQpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKSk7CiAK
QEAgLTI2OCw2ICsyNjUsMzYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganNEeW5h
bWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoIW1v
ZHVsZVJlY29yZCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKworICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCisgICAgICAg
IGRhdGFMb2coIkxvYWRlciBbbGlua10gIiwgbW9kdWxlUmVjb3JkLT5tb2R1bGVLZXkoKSwgIlxu
Iik7CisKKyAgICBtb2R1bGVSZWNvcmQtPmxpbmsoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RFdmFsdWF0ZShFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzRHlu
YW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFt
b2R1bGVSZWNvcmQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQorICAgICAg
ICBkYXRhTG9nKCJMb2FkZXIgW2V2YWx1YXRlXSAiLCBtb2R1bGVSZWNvcmQtPm1vZHVsZUtleSgp
LCAiXG4iKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gbW9kdWxlUmVjb3JkLT5leGVjdXRlKGV4
ZWMpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSG9vayBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVy
T2JqZWN0UmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5oCmluZGV4IDQ1YjkzMmFjNTgwYWY2MGFi
NTJmZDE1MDE5MzkwOTU5YWJlMDUxMDMuLjEyY2ZlNTZlZWJiNmM0MjdjMGVmNzkwMjFmOTk3YzZi
MGQzODRhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZUxvYWRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZUxvYWRlck9iamVjdC5oCkBAIC02NCw3ICs2NCw2IEBAIGNsYXNzIE1vZHVsZUxvYWRlck9iamVj
dCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIC8vIEFQSXMgdG8gY29udHJvbCB0
aGUgbW9kdWxlIGxvYWRlci4KICAgICBKU1ZhbHVlIHByb3ZpZGUoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBrZXksIFN0YXR1cywgY29uc3QgU3RyaW5nJik7Ci0gICAgSlNJbnRlcm5hbFByb21pc2UqIHJl
cXVlc3RJbnN0YW50aWF0ZUFsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSk7CiAgICAgSlNJbnRl
cm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBtb2R1bGVOYW1lLCBK
U1ZhbHVlIHJlZmVycmVyKTsKIAogICAgIC8vIFBsYXRmb3JtIGRlcGVuZGVudCBob29rZWQgQVBJ
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCmlu
ZGV4IGU4M2UzODMyNThmOTliYjA1YmJlMTFlMGM2NWRlMDRiOGUwNDllMGEuLjRjNDNjNmFmZjJm
NjdmZjM1NzU3M2FlY2EyZGY0M2JkMzcxMTNiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAiQnVpbHRp
bk5hbWVzLmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ2FsbC5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpAQCAtNjUsNiArNjYsMTAgQEAgdm9pZCBTZXRQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhhcywgc2V0
UHJvdG9GdW5jSGFzLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBzZXRQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7
CiAKKyAgICAvLyBQcml2YXRlIGFkZCAvIGhhcyBvcGVyYXRpb25zLgorICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+YWRkUHJpdmF0ZU5hbWUsIHNldFByb3RvRnVuY0Fk
ZCwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuaGFzUHJpdmF0ZU5hbWUoKSwgc2V0UHJvdG9GdW5jSGFzLCBEb250
RW51bSwgMSk7CisKICAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCBz
ZXRQcm90b0Z1bmNWYWx1ZXMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMsIHZhbHVlcywgRG9udEVudW0pOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCB2YWx1ZXMsIERv
bnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA5M2M5NmZiZWMw
NDRmN2Y3NGU5Nzg0NzNiNmJmOThjMDcyMWI4ZWQzLi4wNTZjZDkxZmU1OWMxODA2NDU4NWEzNDAz
NGM4OWIxMWNkOGM5NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0y
MjEsNiArMjIxLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgIGV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgRXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9ncmFtRXhlY3V0YWJs
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLnNl
dCgqdGhpcywgRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CisgICAgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIHJlZ0V4cFN0cnVjdHVyZS5zZXQoKnRoaXMsIFJlZ0V4cDo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHN5bWJvbFN0cnVjdHVyZS5zZXQoKnRo
aXMsIFN5bWJvbDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHN5
bWJvbFRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKQEAgLTIzMiw2ICsyMzMsNyBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgdW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
U3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRFdmFsQ29kZUJsb2NrU3Ry
dWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1N0cnVj
dHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9wZXJ0eVRhYmxlU3Ry
dWN0dXJlLnNldCgqdGhpcywgUHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwogICAgIHdlYWtNYXBEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgV2Vha01h
cERhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJl
ZFZhbHVlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRWYWx1ZTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXgg
OWFmZTlhNWEyZmY0MWQ5YzFmYzY1MWZkYzA2YmI2YTUwZjc0OWY2MS4uY2RhYjliMjI0NDEwZjQz
MGM2MDU2NjlhYTE4ZjBiMTk5YmYyNzQyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CkBAIC0xMDMsNiArMTAzLDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxp
bmtlZEV2YWxDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNs
YXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsKK2NsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazsKIGNsYXNzIFZpcnR1YWxSZWdpc3RlcjsKIGNsYXNzIFZNRW50cnlTY29wZTsK
IGNsYXNzIFdhdGNoZG9nOwpAQCAtMjc5LDYgKzI4MCw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXZhbEV4ZWN1
dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvZ3JhbUV4ZWN1dGFibGVT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0
dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0
dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBzeW1ib2xTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3ltYm9s
VGFibGVTdHJ1Y3R1cmU7CkBAIC0yOTAsNiArMjkyLDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRF
dmFsQ29kZUJsb2NrU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2tTdHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHBy
b3BlcnR5VGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2Vha01hcERhdGFT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRWYWx1ZVN0cnVjdHVyZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260137</attachid>
            <date>2015-08-28 01:35:24 -0700</date>
            <delta_ts>2015-08-28 01:50:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147340-20150828013510.patch</filename>
            <type>text/plain</type>
            <size>155685</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MzVkMGU5NTczNzAxMjIxZWRkOWIwNmI5NjAzN2JkYWNiNmY1ODlkLi44OTE5ZjExZDAzZGM0Mjlm
MzY4MDk3ZjEyNGRlZDI1YTRlMmE2YjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODEgQEAKKzIwMTUtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBNb2R1bGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDczNDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjppbmZlcnJlZE5hbWUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVC
bG9jayk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnJlcGxhY2VtZW50
KToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVs
SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6RXZhbENvZGVCbG9jazo6RXZhbENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uQ29kZUJsb2NrOjpGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZVR5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlVHlwZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0Q2hpbGRy
ZW4pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkltcG9ydERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmZy
aWVuZGx5U291cmNlVVJMKToKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnJpZW5kbHlGdW5j
dGlvbk5hbWUpOgorICAgICAgICAoSlNDOjpnZXRTdGFja0ZyYW1lQ29kZVR5cGUpOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSk6CisgICAgICAgIChKU0M6
OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChKU0M6OlN0YWNr
VmlzaXRvcjo6RnJhbWU6OnNvdXJjZVVSTCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tW
aXNpdG9yLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9mcm9tX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19zY29w
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVy
Zm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpzZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6Om1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAg
ICAgKiBsbGludC9MTEludFRodW5rcy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206Cisg
ICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxl
QW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0Q2xhdXNlSXRlbSk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9u
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNs
YXJlTGV4aWNhbFZhcmlhYmxlKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVu
dC5oOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzSW1wb3J0ZWRO
YW1lc3BhY2UpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElz
SW1wb3J0ZWROYW1lc3BhY2UpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpm
aW5kKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNv
ZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUv
RXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxD
b2RlKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1lbnRDb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3kpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAg
ICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUpOgorICAgICAgICAo
SlNDOjpFeGVjdXRhYmxlQmFzZTo6ZHVtcCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxl
Lmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjppc01vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZU1vZHVsZVByb2dy
YW1Db2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpK
U01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmly
b25tZW50OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1l
bnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmly
b25tZW50OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmguCisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6Om9mZnNldE9mTW9kdWxlUmVjb3JkKToKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlND
OjpKU01vZHVsZUVudmlyb25tZW50Ojptb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZUVudmlyb25tZW50Ojptb2R1bGVSZWNvcmRTbG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVFbnZpcm9ubWVudDo6SlNNb2R1bGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcnVudGltZS9K
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpOgorICAgICAgICAoSlND
OjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3ltYm9sSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OlJlc29sdmVRdWVyeSk6CisgICAgICAgIChK
U0M6OlJlc29sdmVRdWVyeTo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1
ZXJ5Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVyeUhhc2g6Omhh
c2gpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnlIYXNoOjplcXVhbCk6CisgICAgICAgIChK
U0M6OnJlc29sdmVFeHBvcnRMb29wKToKKyAgICAgICAgKEpTQzo6Z2V0RXhwb3J0ZWROYW1lcyk6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpnZXRNb2R1bGVOYW1lc3BhY2UpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjpsaW5rTW9kdWxlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV4ZWN1
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVSZWNvcmQ6OnN0YXJFeHBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6Om1vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNv
cmQ6Om1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUu
Y3BwOgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OnJlc29s
dmVUeXBlTmFtZSk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgIChKU0M6
Om1ha2VUeXBlKToKKyAgICAgICAgKEpTQzo6bmVlZHNWYXJJbmplY3Rpb25DaGVja3MpOgorICAg
ICAgICAoSlNDOjpSZXNvbHZlT3A6OlJlc29sdmVPcCk6CisgICAgICAgICogcnVudGltZS9KU1R5
cGUuaDoKKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6Om1vZHVsZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbik6
CisgICAgICAgICogcnVudGltZS9TZXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTUtMDgt
MjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VT
Nl0gSW1wbGVtZW50IE1vZHVsZSBleGVjdXRpb24gYW5kIExvYWRlcidzIHJlYWR5IC8gbGluayBw
aGFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlYjYyY2E1NmExNWUwNmMwMThk
NTg1YmRhMzI3NmU3OGIyZTI4ZTczLi44OGFiYWE1ZjBmNjhmZGQzYzc2NjBjYjJkYjk3NDhmOTAw
NDE2ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcwMCw2ICsxNzAwLDkg
QEAKIAkJRTEyNEE4RjcwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI0QThGNTBFNTU1Nzc1
MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTI0QThGODBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVl
SlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLzsgfTsK
IAkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBW
TS5jcHAgKi87IH07CisJCUUzMDY3Nzk4MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJP
YmplY3QuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgKi87IH07
CisJCUUzMThDQkMwMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JC
RTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovOyB9Owor
CQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJGMUI4
QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E1MUI2MzIyMDIwMEVF
MDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0
LmNwcCAqLzsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0
MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CkBAIC0xNzIyLDYgKzE3
MjUsOCBAQAogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYz
Q0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovOyB9OwogCQlF
MzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0Qy
MzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBC
QkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi87IH07CisJCUUzRDIzOUM5MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzRUY4ODc0MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAq
LzsgfTsKIAkJRTNFRjg4NzUxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4
ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5REMxNkIxMkVGMjkz
RTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8qIFNv
dXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovOyB9OwpAQCAtMzU1Myw2ICszNTU4LDkgQEAKIAkJRTE3
ODYzNkMwRDlCRUVDMzAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOEUzQTU2MERGOTI3OEMwMEQ5MEIzNCAvKiBW
TS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlm
aWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CiAJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAv
KiBWTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBw
YXRoID0gVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNh
dGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKKwkJRTMwNjc3OTcxQjhCQzZGNTAw
M0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IE1vZHVsZUxvYWRlck9iamVjdC5qczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMxOENC
QkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZs
ZWN0T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZmxl
Y3RPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM2MzdBNDFCNjMy
MjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZWZsZWN0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
M0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Qu
bHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1Nzcs
NiArMzU4NSw4IEBACiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVN
b2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFs
eXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVs
ZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0Qy
MzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
M0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBT
b3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDc2NSw2ICs0Nzc1LDEwIEBACiAJCQkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIEpT
TWFwLmggKi8sCiAJCQkJQTc0REVGOEYxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3Iu
Y3BwICovLAogCQkJCUE3NERFRjkwMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmgg
Ki8sCisJCQkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQu
Y3BwICovLAorCQkJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25t
ZW50LmggKi8sCisJCQkJRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmNwcCAqLywKKwkJCQlFMzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QuaCAqLywKIAkJCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyog
SlNNb2R1bGVSZWNvcmQuY3BwICovLAogCQkJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBK
U01vZHVsZVJlY29yZC5oICovLAogCQkJCUE3MjcwMDc4MERBQzYwNTYwMEU1NDhENyAvKiBKU05v
dEFuT2JqZWN0LmNwcCAqLywKQEAgLTU3ODcsNiArNTgwMSw3IEBACiAJCQkJRTM1RTAzNjExQjdB
QjQ4NTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5qcyAqLywKIAkJ
CQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
anMgKi8sCiAJCQkJN0NGOUJDNUIxQjY1RDlBMzAwOURCMUVGIC8qIEl0ZXJhdG9yLnByb3RvdHlw
ZS5qcyAqLywKKwkJCQlFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2Jq
ZWN0LmpzICovLAogCQkJCTdDRjlCQzVDMUI2NUQ5QjEwMDlEQjFFRiAvKiBPYmplY3RDb25zdHJ1
Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1RDFCNjVEOUIxMDA5REIxRUYgLyogT3BlcmF0aW9ucy5Q
cm9taXNlLmpzICovLAogCQkJCTdDRkJBQzFDMThCNTM1RTUwMEQwMDc1MCAvKiBQcm9taXNlLnBy
b3RvdHlwZS5qcyAqLywKQEAgLTYxMjEsNiArNjEzNiw3IEBACiAJCQkJMEYyQjlDRTkxOUQwQkE3
RDAwQjFEMUI1IC8qIERGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3RDlBMjk4MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3RDg5Q0ZDMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5
c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAv
KiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYwRjE5QjE2Qjcy
OUZBMDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
OUZCODY4MUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjU0LDYgKzYyNzAsNyBAQAogCQkJCTdCMDI0NzU3MUI4
NjgyRTQwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUEwQTEwMTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1RvTExWTS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdEODlEMDIxN0EwQjkwNDAwNzczQUQ4IC8qIEZUTExvd2VyZWROb2RlVmFs
dWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMUMxN0Q1MUYy
MjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJERDE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVC
REUxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFk
ZXJzICovLApAQCAtNzAzMSw2ICs3MDQ4LDcgQEAKIAkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJ
CQkJRTMwNjc3OTgxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5qcyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJQTUzRjFBQzAxOEM5MEY4RjAwNzJFQjZEIC8qIGZyYW1ld29yay5z
YiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CkBAIC03MzY1LDYgKzczODMsNyBAQAogCQkJCTBGNkM3MzUwMUFDOUY5OUYw
MEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29kZVByb2ZpbGluZy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjhGOTQzQzE2Njc2MzEzMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQ0MjE2Njc2
MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzEx
MDdFQzM3NjAwNDI3QTQ4IC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGOUM1RTVFMThFMzVGNUUwMEQ0MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVyLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtNzQ0NCw2ICs3NDYzLDcgQEAKIAkJCQkwRkQxMjAzMzFBOEM4NUJEMDAw
RjUyODAgLyogRlRMSlNDYWxsVmFyYXJncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5
NjE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUzM0Y1MDg0MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUUzMThDQkMwMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzY5NDFBRTlDQzMz
MDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5
Q0Y3MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBT
b3VyY2VzICovLApAQCAtODA5Myw2ICs4MTEzLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAwRkNFRkFCRTE4MDVEODY5
MDA0NzJDRTQgLyogTExWTUZvckpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJ
CW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTgxMDAsNiArODEyMSw3IEBACiAJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMEZDRUZB
QkUxODA1RDg2OTAwNDcyQ0U0IC8qIExMVk1Gb3JKU0MueGNjb25maWcgKi87CiAJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsK
IAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTgxMDcsNiArODEyOSw3IEBACiAJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJl
bmNlID0gMEZDRUZBQkUxODA1RDg2OTAwNDcyQ0U0IC8qIExMVk1Gb3JKU0MueGNjb25maWcgKi87
CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9F
UzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5nOwogCQl9OwpAQCAtODExNCw2
ICs4MTM3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSAwRkNFRkFCRTE4MDVEODY5MDA0NzJDRTQgLyogTExWTUZvckpT
Qy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RV
TEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwog
CQl9OwpAQCAtODEyMSw2ICs4MTQ1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0
NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQlu
YW1lID0gRGVidWc7CiAJCX07CkBAIC04MTI4LDYgKzgxNTMsNyBAQAogCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYy
MTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVT
OwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtODEzNSw2ICs4MTYxLDcgQEAK
IAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25m
aWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVO
QUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5nOwogCQl9OwpAQCAt
ODE0Miw2ICs4MTY5LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9v
bEV4ZWN1dGFibGUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJM
RV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJv
ZHVjdGlvbjsKIAkJfTsKQEAgLTgxNzAsNiArODE5OCw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5
RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJ
CQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtODE3Nyw2ICs4MjA2LDcgQEAKIAkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87
CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9F
UzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTgxODUsNiAr
ODIxNSw3IEBACiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4
QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CiAJCQkJQlVJTERfVkFSSUFOVFMgPSBub3JtYWw7CisJCQkJRU5BQkxFX0VTNl9NT0RV
TEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwog
CQl9OwpAQCAtODE5Miw2ICs4MjIzLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA1REFGRDZDQjE0NkI2ODYzMDBGQkVG
QjQgLyogSlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVf
RVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVn
OwogCQl9OwpAQCAtODE5OSw2ICs4MjMxLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA1REFGRDZDQjE0NkI2ODYzMDBG
QkVGQjQgLyogSlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFC
TEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFJl
bGVhc2U7CiAJCX07CkBAIC04MjA2LDYgKzgyMzksNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDVEQUZENkNCMTQ2QjY4
NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1l
ID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTgzMzcsNiArODM3MSw3IEBACiAJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUx
NDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVM
RVM7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHktSW5mby5wbGlz
dCI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKIAkJCX07CkBA
IC04MzQ2LDYgKzgzODEsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBK
YXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5B
QkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCUlORk9QTElTVF9GSUxF
ID0gIkRlcml2ZWQgU291cmNlcyBjb3B5LUluZm8ucGxpc3QiOwogCQkJCVBST0RVQ1RfTkFNRSA9
ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CiAJCQl9OwpAQCAtODM1NSw2ICs4MzkxLDcgQEAKIAkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVu
Y2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcg
Ki87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJM
RV9FUzZfTU9EVUxFUzsKIAkJCQlJTkZPUExJU1RfRklMRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29w
eS1JbmZvLnBsaXN0IjsKIAkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHki
OwogCQkJfTsKQEAgLTgzNjQsNiArODQwMSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAw
ODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJSU5G
T1BMSVNUX0ZJTEUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHktSW5mby5wbGlzdCI7CiAJCQkJUFJP
RFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKIAkJCX07CkBAIC04MzczLDYgKzg0
MTEsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29y
ZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RV
TEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJHZW5lcmF0ZSBE
ZXJpdmVkIFNvdXJjZXMiOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKQEAgLTgzODEsNiArODQy
MCw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3Jl
LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVM
RVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERl
cml2ZWQgU291cmNlcyI7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CkBAIC04Mzg5LDYgKzg0
MjksNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29y
ZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RV
TEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJHZW5lcmF0ZSBE
ZXJpdmVkIFNvdXJjZXMiOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwpAQCAtODQxMiw2
ICs4NDUzLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlw
dENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZf
TU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5n
OwogCQl9OwpAQCAtODQxOSw2ICs4NDYxLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4
MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlQUk9E
VUNUX05BTUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKIAkJCX07CiAJCQluYW1lID0g
UHJvZmlsaW5nOwpAQCAtODQ0MSw2ICs4NDg0LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA1REFGRDZDQjE0NkI2ODYz
MDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlF
TkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9
IFByb2ZpbGluZzsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QuanNvbgppbmRleCA0ZTVhOTZjMzhlZDg2Mjc3NDQyY2EyNjE5YzVjOGNhYzI5
Y2U4MmFhLi4wMjBlYzI0ODllZmUzYTMzMjk4NWI3MDkxMGRlY2NmNzhkNDlhOTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0x
NTcsNiArMTU3LDcgQEAKICAgICAgICAgImJ5dGVjb2RlcyIgOiBbCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJsbGludF9wcm9ncmFtX3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAibGxpbnRfZXZhbF9wcm9sb2d1ZSIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50
X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAibGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlIiB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAibGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2siIH0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDAxZjExZGE3
Yzc3MjBmZjgyYmJlYTkzNGNiMGFmZjBmYjNhMzAwYTMuLmYyZWJhZGQzNTg0YWRhMzc0NGM4ZDRj
YzY3NTAyOTIzNzIxOTQwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5o
IgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMTEludEVudHJ5
cG9pbnQuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgpAQCAtODcsNiArODgsOCBAQCBDU3RyaW5nIENvZGVCbG9jazo6aW5mZXJyZWRO
YW1lKCkgY29uc3QKICAgICAgICAgcmV0dXJuICI8ZXZhbD4iOwogICAgIGNhc2UgRnVuY3Rpb25D
b2RlOgogICAgICAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhl
Y3V0YWJsZSgpKS0+aW5mZXJyZWROYW1lKCkudXRmOCgpOworICAgIGNhc2UgTW9kdWxlQ29kZToK
KyAgICAgICAgcmV0dXJuICI8bW9kdWxlPiI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0go
KTsKICAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIsIDApOwpAQCAtMTk3MCw5ICsxOTczLDE0IEBA
IENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Nj
b3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxT
Y29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgdHlwZSk7CiAgICAgICAgICAgICBpbnN0cnVj
dGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IG9wLnR5cGU7CiAgICAgICAgICAgICBpbnN0cnVjdGlv
bnNbaSArIDVdLnUub3BlcmFuZCA9IG9wLmRlcHRoOwotICAgICAgICAgICAgaWYgKG9wLmxleGlj
YWxFbnZpcm9ubWVudCkKLSAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUuc3lt
Ym9sVGFibGUuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9ubWVu
dC0+c3ltYm9sVGFibGUoKSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAob3Au
bGV4aWNhbEVudmlyb25tZW50KSB7CisgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gTW9k
dWxlVmFyKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEtlZXAgdGhlIGxpbmtlZCBtb2R1bGUg
ZW52aXJvbm1lbnQgc3Ryb25nbHkgcmVmZXJlbmNlZC4KKyAgICAgICAgICAgICAgICAgICAgYWRk
Q29uc3RhbnQob3AubGV4aWNhbEVudmlyb25tZW50KTsKKyAgICAgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyA2XS51LmpzQ2VsbC5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3Au
bGV4aWNhbEVudmlyb25tZW50KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnN5bWJvbFRhYmxlLnNldCgqdm0oKSwgb3du
ZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCkpOworICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnBv
aW50ZXIgPSBudWxscHRyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE5OTcs
NyArMjAwNSwxMiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CiAgICAgICAg
ICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgbW9k
ZUFuZFR5cGUudHlwZSgpKTsKIAotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9w
ZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUobW9kZUFuZFR5cGUubW9kZSgpLCBvcC50eXBlKS5v
cGVyYW5kKCk7CisgICAgICAgICAgICAvLyBNb2R1bGVWYXIgY2FuIGdldCB0aGUgdmFyaWFibGUg
YXMgdGhlIHNhbWUgdG8gQ2xvc3VyZVZhci4KKyAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1v
ZHVsZVZhcikKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9
IFJlc29sdmVNb2RlQW5kVHlwZShtb2RlQW5kVHlwZS5tb2RlKCksIENsb3N1cmVWYXIpLm9wZXJh
bmQoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSAr
IDRdLnUub3BlcmFuZCA9IFJlc29sdmVNb2RlQW5kVHlwZShtb2RlQW5kVHlwZS5tb2RlKCksIG9w
LnR5cGUpLm9wZXJhbmQoKTsKKwogICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFy
IHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAgICAg
ICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUud2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9p
bnRTZXQ7CiAgICAgICAgICAgICBlbHNlIGlmIChvcC5zdHJ1Y3R1cmUpCkBAIC0yMDY1LDE3ICsy
MDc4LDE4IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICAgICAgLy8gd2Un
cmUgYWJzdHJhY3RseSAicmVhZCJpbmcgZnJvbSBhIEpTU2NvcGUuCiAgICAgICAgICAgICAgICAg
UmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIHR5cGUpOwog
Ci0gICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhcikKKyAgICAgICAgICAg
ICAgICBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFyIHx8IG9wLnR5cGUgPT0gTW9kdWxlVmFyKQog
ICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZSA9IG9wLmxleGljYWxFbnZpcm9ubWVudC0+
c3ltYm9sVGFibGUoKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IEdsb2Jh
bFZhcikKICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBtX2dsb2JhbE9iamVjdC5n
ZXQoKS0+c3ltYm9sVGFibGUoKTsKLSAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsID0gKG9wLnR5cGUgPT0gTW9kdWxlVmFyKSA/IG9wLmlt
cG9ydGVkTmFtZS5nZXQoKSA6IGlkZW50LmltcGwoKTsKICAgICAgICAgICAgICAgICBpZiAoc3lt
Ym9sVGFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIG91ciBw
YXJlbnQgc2NvcGUgd2FzIGNyZWF0ZWQgd2hpbGUgcHJvZmlsaW5nIHdhcyBkaXNhYmxlZCwgaXQg
d2lsbCBub3QgaGF2ZSBwcmVwYXJlZCBmb3IgcHJvZmlsaW5nIHlldC4KICAgICAgICAgICAgICAg
ICAgICAgc3ltYm9sVGFibGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVlSURG
b3JWYXJpYWJsZShsb2NrZXIsIGlkZW50LmltcGwoKSwgKnZtKCkpOwotICAgICAgICAgICAgICAg
ICAgICBnbG9iYWxUeXBlU2V0ID0gc3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJs
ZShsb2NrZXIsIGlkZW50LmltcGwoKSwgKnZtKCkpOworICAgICAgICAgICAgICAgICAgICBnbG9i
YWxWYXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBp
bXBsLCAqdm0oKSk7CisgICAgICAgICAgICAgICAgICAgIGdsb2JhbFR5cGVTZXQgPSBzeW1ib2xU
YWJsZS0+Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGxvY2tlciwgaW1wbCwgKnZtKCkpOwogICAg
ICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlE
ID0gVHlwZVByb2ZpbGVyTm9HbG9iYWxJREV4aXN0czsKIApAQCAtMzAyNSw2ICszMDM5LDExIEBA
IENvZGVCbG9jayogUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogICAgIHJldHVybiBq
c0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9jaygp
OwogfQogCitDb2RlQmxvY2sqIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnJlcGxhY2VtZW50KCkK
K3sKKyAgICByZXR1cm4ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVj
dXRhYmxlKCkpLT5jb2RlQmxvY2soKTsKK30KKwogQ29kZUJsb2NrKiBFdmFsQ29kZUJsb2NrOjpy
ZXBsYWNlbWVudCgpCiB7CiAgICAgcmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7CkBAIC0zMDQwLDYgKzMwNTksMTEgQEAgREZHOjpD
YXBhYmlsaXR5TGV2ZWwgUHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwo
KQogICAgIHJldHVybiBERkc6OnByb2dyYW1DYXBhYmlsaXR5TGV2ZWwodGhpcyk7CiB9CiAKK0RG
Rzo6Q2FwYWJpbGl0eUxldmVsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZl
bEludGVybmFsKCkKK3sKKyAgICByZXR1cm4gREZHOjpwcm9ncmFtQ2FwYWJpbGl0eUxldmVsKHRo
aXMpOworfQorCiBERkc6OkNhcGFiaWxpdHlMZXZlbCBFdmFsQ29kZUJsb2NrOjpjYXBhYmlsaXR5
TGV2ZWxJbnRlcm5hbCgpCiB7CiAgICAgcmV0dXJuIERGRzo6ZXZhbENhcGFiaWxpdHlMZXZlbCh0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA5
NDk5NDA1NjQzYWE5MTNkYzc4ZTc5OWFhMGNjNTY3MmViMzZlZjNjLi4xZmYxNmZlMzkyMjIyOGNm
YzhjMzFlYWRjNmZmZjkzZWJiMGJjNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCkBAIC04Miw2ICs4Miw3IEBAIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CiBjbGFzcyBUeXBl
TG9jYXRpb247CitjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwogCiBlbnVtIFJlb3B0aW1pemF0
aW9uTW9kZSB7IERvbnRDb3VudFJlb3B0aW1pemF0aW9uLCBDb3VudFJlb3B0aW1pemF0aW9uIH07
CiAKQEAgLTEwOTAsMTAgKzEwOTEsMjkgQEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jayA6IHB1Ymxp
YyBHbG9iYWxDb2RlQmxvY2sgewogI2VuZGlmCiB9OwogCitjbGFzcyBNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CitwdWJsaWM6CisgICAgTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sm
IG90aGVyKQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVy
KQorICAgIHsKKyAgICB9CisKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBQYXNzUmVmUHRyPFNvdXJj
ZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciwgdW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0
KQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29k
ZUJsb2NrLCBzY29wZSwgc291cmNlUHJvdmlkZXIsIDAsIGZpcnN0TGluZUNvbHVtbk9mZnNldCkK
KyAgICB7CisgICAgfQorCisjaWYgRU5BQkxFKEpJVCkKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIERGRzo6Q2Fw
YWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCkgb3ZlcnJpZGU7CisjZW5kaWYK
K307CisKIGNsYXNzIEV2YWxDb2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKIHB1
YmxpYzoKICAgICBFdmFsQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywgRXZhbENvZGVCbG9j
ayYgb3RoZXIpCi0gICAgOiBHbG9iYWxDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrLCBvdGhlcikK
KyAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrLCBvdGhlcikKICAgICB7
CiAgICAgfQogICAgICAgICAKQEAgLTExMTgsNyArMTEzOCw3IEBAIGNsYXNzIEV2YWxDb2RlQmxv
Y2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrIDog
cHVibGljIENvZGVCbG9jayB7CiBwdWJsaWM6CiAgICAgRnVuY3Rpb25Db2RlQmxvY2soQ29weVBh
cnNlZEJsb2NrVGFnLCBGdW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpCi0gICAgOiBDb2RlQmxvY2so
Q29weVBhcnNlZEJsb2NrLCBvdGhlcikKKyAgICAgICAgOiBDb2RlQmxvY2soQ29weVBhcnNlZEJs
b2NrLCBvdGhlcikKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVUeXBlLmNwcAppbmRleCA4YjJjYWQ1NmFiNjhhZjEyYjMyYmYyOWNkODQwYWMwYWE3
MTgzZDQ4Li4wYzcwNDNkZmEzZWFmZmU5Zjk0NmFkZDkxNzkzZmU2MjU3YWFlNDI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAKQEAgLTQyLDYgKzQyLDkg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6Q29kZVR5cGUgY29k
ZVR5cGUpCiAgICAgY2FzZSBKU0M6OkZ1bmN0aW9uQ29kZToKICAgICAgICAgb3V0LnByaW50KCJG
dW5jdGlvbiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6Ok1vZHVsZUNvZGU6Cisg
ICAgICAgIG91dC5wcmludCgiTW9kdWxlIik7CisgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0
OgogICAgICAgICBDUkFTSCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlVHlwZS5oCmluZGV4IGI4ZTEwN2RjZjZiNjcwY2Q4MjgzZWJmYTUzNTFm
N2M2MzQyZjAyM2MuLjk5NDFkNTE0Y2RkMGM1ZmZlMzBmMWE4ODRmM2JhNTRjNmYwMGY4OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCkBAIC0yOCw3ICsyOCw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZh
bENvZGUsIEZ1bmN0aW9uQ29kZSB9OworZW51bSBDb2RlVHlwZSB7IEdsb2JhbENvZGUsIEV2YWxD
b2RlLCBGdW5jdGlvbkNvZGUsIE1vZHVsZUNvZGUgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCmluZGV4IDU3NGIxZTQ4MjM4OThiMzgwMTRkNTE4MjllYWI3ZjcxMzA5ZGJiMGEuLjQ2
MDk1ZDg0YmNjYTYwNjc1ZmVmZGU3ZjQwMDI3NTJkZDlhZWI1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNDcs
NiArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZENvZGVC
bG9jazo6c19pbmZvID0geyAiVW5saW5rZWRDb2RlQmxvY2siLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFVubGlua2VkQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkR2xv
YmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEdsb2JhbENvZGVCbG9jayIsICZCYXNl
OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sp
IH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7
ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykgfTsKK2NvbnN0IENsYXNzSW5mbyBV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZv
IFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRFdmFsQ29kZUJsb2Nr
IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEV2YWxDb2Rl
QmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6c19p
bmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykgfTsKIApAQCAtODks
NyArOTAsNiBAQCB2b2lkIFVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8VW5saW5rZWRDb2RlQmxvY2sqPihjZWxsKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9zeW1ib2xUYWJsZSk7CiAgICAgZm9yIChGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3I6Oml0
ZXJhdG9yIHB0ciA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25EZWNscy5iZWdpbigpLCBlbmQgPSB0
aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRGVjbHMuZW5kKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQogICAg
ICAgICB2aXNpdG9yLmFwcGVuZChwdHIpOwogICAgIGZvciAoRnVuY3Rpb25FeHByZXNzaW9uVmVj
dG9yOjppdGVyYXRvciBwdHIgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRXhwcnMuYmVnaW4oKSwg
ZW5kID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkV4cHJzLmVuZCgpOyBwdHIgIT0gZW5kOyArK3B0
cikKQEAgLTI5Miw2ICsyOTIsMTQgQEAgdm9pZCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogfQogCit2b2lkIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayog
dGhpc09iamVjdCA9IGpzQ2FzdDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW1ib2xUYWJsZSk7Cit9CisKIFVubGlua2VkQ29kZUJs
b2NrOjp+VW5saW5rZWRDb2RlQmxvY2soKQogewogfQpAQCAtMzAxLDYgKzMwOSwxMSBAQCB2b2lk
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAganND
YXN0PFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpLT5+VW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrKCk7CiB9CiAKK3ZvaWQgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKj4oY2VsbCktPn5VbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKTsKK30KKwog
dm9pZCBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewogICAg
IGpzQ2FzdDxVbmxpbmtlZEV2YWxDb2RlQmxvY2sqPihjZWxsKS0+flVubGlua2VkRXZhbENvZGVC
bG9jaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAppbmRleCAzMjJkMjYxOTlmNzk3YzEwMzgxZGQ0NTg5M2JkNTM1M2ZmMWI2YjQ2
Li44OGNlMjMxM2NhY2EwODgyZDg2YzFmMjg3NzBhM2EwOTg3MDZiNmNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzYw
LDkgKzM2MCw2IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgewogICAgICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIGlmIChjb2RlVHlwZSgpID09IEdsb2JhbENvZGUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBT
eW1ib2xUYWJsZTo6Y3JlYXRlKHZtKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNDEyLDggKzQw
OSw2IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgRnVu
Y3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25EZWNsczsKICAgICBGdW5jdGlvbkV4cHJl
c3Npb25WZWN0b3IgbV9mdW5jdGlvbkV4cHJzOwogCi0gICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRh
YmxlPiBtX3N5bWJvbFRhYmxlOwotCiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zOwogCiAjaWYgRU5BQkxFKEJZVEVDT0RFX0NPTU1FTlRTKQpAQCAtNTE0
LDYgKzUwOSw0OSBAQCBjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sgZmluYWwgOiBwdWJs
aWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgewogICAgIERFQ0xBUkVfSU5GTzsKIH07CiAKK2Ns
YXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBVbmxpbmtl
ZEdsb2JhbENvZGVCbG9jayB7Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDb2RlQ2FjaGU7
CisgICAgc3RhdGljIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNKiB2
bSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCisgICAgeworICAgICAgICBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bS0+aGVhcCkpIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0tPnVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
a1N0cnVjdHVyZS5nZXQoKSwgaW5mbyk7CisgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bigqdm0pOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQorCitwdWJsaWM6CisgICAg
dHlwZWRlZiBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJl
SXNJbW1vcnRhbDsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUoKSB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9
CisKK3ByaXZhdGU6CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNKiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQorICAgICAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgTW9kdWxlQ29kZSwgaW5mbykKKyAgICB7CisgICAgfQor
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCisgICAgeworICAgICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIG1fc3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBT
eW1ib2xUYWJsZTo6Y3JlYXRlKHZtKSk7CisgICAgfQorCisgICAgV3JpdGVCYXJyaWVyPFN5bWJv
bFRhYmxlPiBtX3N5bWJvbFRhYmxlOworCitwdWJsaWM6CisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERFQ0xBUkVf
SU5GTzsKK307CisKIGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBV
bmxpbmtlZEdsb2JhbENvZGVCbG9jayB7CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb2Rl
Q2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDYyYzJkM2JhNDI1NzYzOGU4NDBiYjNhNjJkMjc3
NGIwZjMxMjdkZmMuLjI1MmNmZjBiYzk4ZGZiYTFjZWU4MzI2M2Q0NWE0MzVhYmU4N2NmN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC03MCw3ICs3MCw5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgaWYgKG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cykK
ICAgICAgICAgaW5pdGlhbGl6ZVZhcmlhYmxlKHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5hcmd1
bWVudHMpLCBtX2FyZ3VtZW50c1JlZ2lzdGVyKTsKIAotICAgIHB1c2hMZXhpY2FsU2NvcGUobV9z
Y29wZU5vZGUsIHRydWUpOworICAgIC8vIEZvciBNb2R1bGVDb2RlLCB3ZSBhbHJlYWR5IGluc3Rh
bnRpYXRlZCB0aGUgZW52aXJvbm1lbnQgZm9yIHRoZSBsZXhpY2FsIHZhcmlhYmxlcy4KKyAgICBp
ZiAobV9jb2RlVHlwZSAhPSBNb2R1bGVDb2RlKQorICAgICAgICBwdXNoTGV4aWNhbFNjb3BlKG1f
c2NvcGVOb2RlLCB0cnVlKTsKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRl
bXAgPSBuZXdUZW1wb3JhcnkoKTsKQEAgLTUwNCw2ICs1MDYsMTQzIEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5r
ZWRFdmFsQ29kCiAgICAgbV9URFpTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIoKnBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCBmYWxzZSkpOwogfQogCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUs
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBEZWJ1Z2dlck1vZGUg
ZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcykKKyAgICA6IG1fc2hvdWxkRW1pdERl
YnVnSG9va3MoT3B0aW9uczo6Zm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpIHx8IGRl
YnVnZ2VyTW9kZSA9PSBEZWJ1Z2dlck9uKQorICAgICwgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tz
KE9wdGlvbnM6OmZvcmNlUHJvZmlsZXJCeXRlY29kZUdlbmVyYXRpb24oKSB8fCBwcm9maWxlck1v
ZGUgPT0gUHJvZmlsZXJPbikKKyAgICAsIG1fc2NvcGVOb2RlKG1vZHVsZVByb2dyYW1Ob2RlKQor
ICAgICwgbV9jb2RlQmxvY2sodm0sIGNvZGVCbG9jaykKKyAgICAsIG1fdGhpc1JlZ2lzdGVyKENh
bGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpCisgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNv
ZGUpCisgICAgLCBtX3ZtKCZ2bSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCit7
CisgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLT5zaXplKCkpOworCisgICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVy
IDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQorICAgICAgICBjb25zdGFudFJlZ2lzdGVy
ID0gbnVsbHB0cjsKKworICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICBtX3No
b3VsZEVtaXREZWJ1Z0hvb2tzID0gZmFsc2U7CisKKyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUgPSBjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7CisgICAgc3ltYm9sVGFibGUtPnNldFVzZXNO
b25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOworICAgIHN5bWJvbFRhYmxlLT5zZXRT
Y29wZVR5cGUoU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNjb3BlKTsKKworICAgIC8v
IEZvciB0aGUgZXhwb3J0ZWQgdmFyaWFibGVzLCB3ZSBhbHJlYWR5IHJlZ2lzdGVyIHRoZW0gdG8g
dGhlIHN0b3JlZCBzeW1ib2wgdGFibGUuCisgICAgLy8gRXZlbiBpZiB0aGUgdW5saW5rZWQvbGlu
a2VkIGNvZGUgYmxvY2sgaXMgcmVtb3ZlZCBhbmQgc3ltYm9sIHRhYmxlIGlzIHJlY3JlYXRlZCwK
KyAgICAvLyB0aGlzIGVuc3VyZXMgdGhlIGdlbmVyYXRlZCBzeW1ib2wgdGFibGUgaXMgYWx3YXlz
IHRoZSBzYW1lLgorCisgICAgYm9vbCBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzID0gbV9z
aG91bGRFbWl0RGVidWdIb29rcyB8fCBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigp
OworICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVi
dWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CisgICAgaWYgKHNob3VsZENhcHR1cmVB
bGxPZlRoZVRoaW5ncykKKyAgICAgICAgbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9u
cygpLm1hcmtBbGxWYXJpYWJsZXNBc0NhcHR1cmVkKCk7CisKKyAgICBhdXRvIGNhcHR1cmVzID0g
WyZdIChVbmlxdWVkU3RyaW5nSW1wbCogdWlkKSAtPiBib29sIHsKKyAgICAgICAgaWYgKCFzaG91
bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gbW9kdWxlUHJvZ3JhbU5vZGUtPmNhcHR1cmVzKHVpZCk7CisgICAgfTsKKyAg
ICBhdXRvIGxvb2tVcFZhcktpbmQgPSBbJl0gKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgZW50cnkpIC0+IFZhcktpbmQgeworICAgICAgICBp
ZiAoZW50cnkuaXNFeHBvcnRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIFZhcktpbmQ6OlNjb3Bl
OworICAgICAgICBpZiAoZW50cnkuaXNJbXBvcnRlZE5hbWVzcGFjZSgpKQorICAgICAgICAgICAg
cmV0dXJuIFZhcktpbmQ6OlNjb3BlOworICAgICAgICBpZiAoZW50cnkuaXNDYXB0dXJlZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIFZhcktpbmQ6OlNjb3BlOworICAgICAgICByZXR1cm4gY2FwdHVy
ZXModWlkKSA/IFZhcktpbmQ6OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CisgICAgfTsKKworICAg
IGVtaXRPcGNvZGUob3BfZW50ZXIpOworCisgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKKwor
ICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKKworICAgIG1f
Y29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAvLyBBbGxvY2F0ZSBzcGFjZSBmb3IgInRo
aXMiCisKKyAgICBmb3IgKEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBmdW5jdGlvbiA6IG1vZHVsZVBy
b2dyYW1Ob2RlLT5mdW5jdGlvblN0YWNrKCkpIHsKKyAgICAgICAgY29uc3QgYXV0byYgaXRlcmF0
b3IgPSBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkuZmluZChmdW5jdGlvbi0+
aWRlbnQoKS5pbXBsKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpdGVyYXRvciAhPSBtb2R1
bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkuZW5kKCkpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVCghaXRlcmF0b3ItPnZhbHVlLmlzSW1wb3J0ZWQoKSk7CisKKyAgICAgICAgVmFyS2lu
ZCB2YXJLaW5kID0gbG9va1VwVmFyS2luZChpdGVyYXRvci0+a2V5LmdldCgpLCBpdGVyYXRvci0+
dmFsdWUpOworICAgICAgICBpZiAodmFyS2luZCA9PSBWYXJLaW5kOjpTY29wZSkgeworICAgICAg
ICAgICAgLy8gSGVhcCBhbGxvY2F0ZWQgZnVuY3Rpb25zIHNob3VsZCBiZSBpbnN0YW50aWF0ZWQg
d2hlbiB0aGUgbW9kdWxlIGVudmlyb25tZW50IGlzIGNyZWF0ZWQuCisgICAgICAgICAgICBtX2Nv
ZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gU3RhY2sgYWxsb2NhdGVkIGZ1bmN0aW9ucyBjYW4g
YmUgYWxsb2NhdGVkIHdoZW4gZXhlY3V0aW5nIHRoZSBtb2R1bGUncyBib2R5LgorICAgICAgICAg
ICAgbV9mdW5jdGlvbnNUb0luaXRpYWxpemUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGZ1bmN0aW9u
LCBOb3JtYWxGdW5jdGlvblZhcmlhYmxlKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBO
b3cgZGVjbGFyZSBhbGwgdmFyaWFibGVzLgorCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1vZHVs
ZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSkgeworICAgICAgICBBU1NFUlQoIWVudHJ5
LnZhbHVlLmlzTGV0KCkgJiYgIWVudHJ5LnZhbHVlLmlzQ29uc3QoKSk7CisgICAgICAgIGlmICgh
ZW50cnkudmFsdWUuaXNWYXIoKSkgLy8gVGhpcyBpcyBlaXRoZXIgYSBwYXJhbWV0ZXIgb3IgY2Fs
bGVlLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0lt
cG9ydGVkKCkgJiYgIWVudHJ5LnZhbHVlLmlzSW1wb3J0ZWROYW1lc3BhY2UoKSkgLy8gVGhlc2Ug
YXJlIG1hbmFnZWQgaW4gdGhlIG90aGVyIHBoYXNlLgorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIC8vIFZhcmlhYmxlcyBuYW1lZCAiYXJndW1lbnRzIiBhcmUgbmV2ZXIgY29uc3QuCisg
ICAgICAgIGNyZWF0ZVZhcmlhYmxlKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgZW50cnkua2V5
LmdldCgpKSwgbG9va1VwVmFyS2luZChlbnRyeS5rZXkuZ2V0KCksIGVudHJ5LnZhbHVlKSwgc3lt
Ym9sVGFibGUsIElnbm9yZUV4aXN0aW5nKTsKKyAgICB9CisKKyAgICBWYXJpYWJsZUVudmlyb25t
ZW50JiBlbnZpcm9ubWVudCA9IG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVzKCk7
CisKKyAgICB7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxl
LT5tX2xvY2spOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW52aXJvbm1lbnQpIHsKKyAg
ICAgICAgICAgIEFTU0VSVChlbnRyeS52YWx1ZS5pc0xldCgpIHx8IGVudHJ5LnZhbHVlLmlzQ29u
c3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LnZhbHVlLmlzVmFyKCkpOworICAgICAg
ICAgICAgU3ltYm9sVGFibGVFbnRyeSBzeW1ib2xUYWJsZUVudHJ5ID0gc3ltYm9sVGFibGUtPmdl
dChsb2NrZXIsIGVudHJ5LmtleS5nZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQoc3ltYm9sVGFi
bGVFbnRyeS5pc051bGwoKSk7CisKKyAgICAgICAgICAgIC8vIEltcG9ydGVkIHZhcmlhYmxlcyBh
cmUgaGFuZGxlZCBpbnNpZGUgdGhlIHRvcC1tb3N0IG1vZHVsZSBlbnZpcm9ubWVudC4KKyAgICAg
ICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0ltcG9ydGVkKCkgJiYgIWVudHJ5LnZhbHVlLmlzSW1w
b3J0ZWROYW1lc3BhY2UoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgVmFyS2luZCB2YXJLaW5kID0gbG9va1VwVmFyS2luZChlbnRyeS5rZXkuZ2V0KCksIGVudHJ5
LnZhbHVlKTsKKyAgICAgICAgICAgIFZhck9mZnNldCB2YXJPZmZzZXQ7CisgICAgICAgICAgICBp
ZiAodmFyS2luZCA9PSBWYXJLaW5kOjpTY29wZSkKKyAgICAgICAgICAgICAgICB2YXJPZmZzZXQg
PSBWYXJPZmZzZXQoc3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQobG9ja2VyKSk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyS2luZCA9PSBWYXJL
aW5kOjpTdGFjayk7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCogbG9jYWwgPSBuZXdCbG9j
a1Njb3BlVmFyaWFibGUoKTsKKyAgICAgICAgICAgICAgICBsb2NhbC0+cmVmKCk7CisgICAgICAg
ICAgICAgICAgdmFyT2Zmc2V0ID0gVmFyT2Zmc2V0KGxvY2FsLT52aXJ0dWFsUmVnaXN0ZXIoKSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnko
dmFyT2Zmc2V0LCBlbnRyeS52YWx1ZS5pc0NvbnN0KCkgPyBSZWFkT25seSA6IDApOworICAgICAg
ICAgICAgc3ltYm9sVGFibGUtPmFkZChsb2NrZXIsIGVudHJ5LmtleS5nZXQoKSwgbmV3RW50cnkp
OworICAgICAgICB9CisgICAgfQorCisgICAgUmVnaXN0ZXJJRCogY29uc3RhbnRTeW1ib2xUYWJs
ZSA9IG51bGxwdHI7CisgICAgaWYgKHZtLnR5cGVQcm9maWxlcigpKQorICAgICAgICBjb25zdGFu
dFN5bWJvbFRhYmxlID0gYWRkQ29uc3RhbnRWYWx1ZShzeW1ib2xUYWJsZSk7CisgICAgZWxzZQor
ICAgICAgICBjb25zdGFudFN5bWJvbFRhYmxlID0gYWRkQ29uc3RhbnRWYWx1ZShzeW1ib2xUYWJs
ZS0+Y2xvbmVTY29wZVBhcnQoKm1fdm0pKTsKKworICAgIG1fVERaU3RhY2suYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGVudmlyb25tZW50LCB0cnVlKSk7CisgICAgbV9zeW1ib2xUYWJsZVN0YWNrLmFw
cGVuZChTeW1ib2xUYWJsZVN0YWNrRW50cnkgeyBTdHJvbmc8U3ltYm9sVGFibGU+KCptX3ZtLCBz
eW1ib2xUYWJsZSksIG1fc2NvcGVSZWdpc3RlciwgZmFsc2UsIGNvbnN0YW50U3ltYm9sVGFibGUt
PmluZGV4KCkgfSk7CisKKyAgICAvLyBQcmVmaWxsIHN0YWNrIHZhcmlhYmxlcyB3aXRoIHRoZSBU
RFogZW1wdHkgdmFsdWUuCisgICAgLy8gU2NvcGUgdmFyaWFibGVzIHdpbGwgYmUgaW5pdGlhbGl6
ZWQgdG8gdGhlIFREWiBlbXB0eSB2YWx1ZSB3aGVuIEpTTGV4aWNhbEVudmlyb25tZW50IGlzIGFs
bG9jYXRlZC4KKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW52aXJvbm1lbnQpIHsKKyAgICAgICAg
Ly8gSW1wb3J0ZWQgdmFyaWFibGVzIGFyZSBhbHJlYWR5IGluaXRpYWxpemVkLgorICAgICAgICBp
ZiAoZW50cnkudmFsdWUuaXNJbXBvcnRlZCgpICYmICFlbnRyeS52YWx1ZS5pc0ltcG9ydGVkTmFt
ZXNwYWNlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBTeW1ib2xUYWJsZUVu
dHJ5IHN5bWJvbFRhYmxlRW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KGVudHJ5LmtleS5nZXQoKSk7
CisgICAgICAgIEFTU0VSVCghc3ltYm9sVGFibGVFbnRyeS5pc051bGwoKSk7CisgICAgICAgIFZh
ck9mZnNldCBvZmZzZXQgPSBzeW1ib2xUYWJsZUVudHJ5LnZhck9mZnNldCgpOworICAgICAgICBp
ZiAob2Zmc2V0LmlzU2NvcGUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBBU1NF
UlQob2Zmc2V0LmlzU3RhY2soKSk7CisgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZSgmcmVnaXN0
ZXJGb3Iob2Zmc2V0LnN0YWNrT2Zmc2V0KCkpKTsKKyAgICB9Cit9CisKIEJ5dGVjb2RlR2VuZXJh
dG9yOjp+Qnl0ZWNvZGVHZW5lcmF0b3IoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDg5Y2RlYWQx
MzU0NDgxYzc0NjY3MGUzNWY5NjAwNTkzN2ZiOTViYTcuLjE2YmJjMGRkYzBhZGY0MDkxZDhhMTM5
NDQ0YWJiMzkzNDBmNTA4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTI2OSw2ICsyNjksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSos
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CiAgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiwgRnVuY3Rpb25Ob2RlKiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayosIERlYnVnZ2VyTW9k
ZSwgUHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CiAgICAgICAgIEJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBE
ZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwor
ICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKIAogICAgICAgICB+Qnl0ZWNvZGVHZW5lcmF0b3Io
KTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKaW5kZXggOWM2ZTc2ZjJmNDJiZGRjZTk2NWI4MjQyMjhhYjY1MjE4
ZmUwZTE3ZS4uM2JiZDIwMTI2NWM0ZmZmNjZmOGFmZTIxZTAyYTAyN2FjNDhhNGY3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtMjg5NSw4ICsyODk1LDE3IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIE1vZHVsZVByb2dyYW1Ob2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLXZvaWQgTW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqKQordm9pZCBNb2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogeworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgc3RhcnRMaW5lKCksIHN0YXJ0
U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7CisKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZHN0UmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGRzdFJlZ2lzdGVyLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhzdGFydFN0YXJ0T2Zmc2V0KCkpOworICAg
IGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CisK
KyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgbGFzdExpbmUo
KSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0
RW5kKGRzdFJlZ2lzdGVyLmdldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMDU3LDMw
ICszMDY2LDM3IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIHZvaWQgSW1wb3J0RGVjbGFy
YXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikK
IHsKKyAgICAvLyBEbyBub3RoaW5nIGF0IHRoZSBydW50aW1lLgogfQogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKIHZvaWQgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKIHsKKyAgICAvLyBEbyBub3RoaW5nIGF0
IHRoZSBydW50aW1lLgogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhw
b3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhwb3J0
RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCopCit2b2lkIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Cisg
ICAgQVNTRVJUKG1fZGVjbGFyYXRpb24pOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1f
ZGVjbGFyYXRpb24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhw
b3J0TG9jYWxEZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhwb3J0
TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqKQordm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBB
U1NFUlQobV9kZWNsYXJhdGlvbik7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9kZWNs
YXJhdGlvbik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnRO
YW1lZERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBFeHBvcnROYW1l
ZERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCopCiB7CisgICAgLy8gRG8gbm90aGluZyBhdCB0aGUgcnVudGltZS4KIH0KIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSAt
LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCAwYTE2MjRlNzMxMTc2NGYzNzcwNmRiYjQxOWY2M2VlYjc2MmJi
YjQ3Li4xN2VkZGQyM2FhMTIxY2VhOTAwNzcwYzQ4MTdhNzk1Y2M2ZDkzYzJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDIsNiAr
NDIsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVu
dC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25t
ZW50LmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiUHV0QnlJ
ZFN0YXR1cy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCkBAIC0zODMzLDYgKzM4MzQs
MTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MpCiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0RGlyZWN0
KG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIE1vZHVsZVZhcjogeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYWxy
ZWFkeSBzdHJvbmdseSByZWZlcmVuY2VkIGJ5IHRoZSBDb2RlQmxvY2suCisgICAgICAgICAgICAg
ICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNNb2R1
bGVFbnZpcm9ubWVudCo+KGN1cnJlbnRJbnN0cnVjdGlvbls2XS51LmpzQ2VsbC5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihkc3QpLCB3ZWFrSlNDb25zdGFudCht
b2R1bGVFbnZpcm9ubWVudCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENs
b3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzOiB7CkBAIC00MDAyLDYgKzQwMDksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEdldENs
b3N1cmVWYXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBzY29wZU5vZGUp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNh
c2UgTW9kdWxlVmFyOgogICAgICAgICAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC00MDg2LDYgKzQwOTQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOgogICAgICAgICAgICAgY2Fz
ZSBEeW5hbWljOgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKaW5kZXggOTA0NGEwNzlkNGY0NzUxMGRmODAwMzgyZmFhNDZkNDAy
ZjBmNWIyYy4uYTNlODYzMjY2ZDQ0NTcwNzg4MjdmMTMyMjFmYjJhYmIxZjExMWViMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjE3LDYg
KzIxNyw5IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAKICAgICBjYXNlIG9wX3B1dF90b19z
Y29wZTogewogICAgICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IFJlc29sdmVNb2RlQW5k
VHlwZShwY1s0XS51Lm9wZXJhbmQpLnR5cGUoKTsKKyAgICAgICAgLy8gSW1wb3J0ZWQgYmluZGlu
Z3MgYXJlIGFsd2F5cyBpbW11dGFibGUuCisgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBNb2R1
bGVWYXIpCisgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKICAgICAgICAgLy8gSWYg
d2UncmUgd3JpdGluZyB0byBhIHJlYWRvbmx5IHByb3BlcnR5IHdlIGVtaXQgYSBEeW5hbWljIHB1
dCB0aGF0CiAgICAgICAgIC8vIHRoZSBERkcgY2FuJ3QgY3VycmVudGx5IGhhbmRsZS4KICAgICAg
ICAgaWYgKHJlc29sdmVUeXBlID09IER5bmFtaWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAxMDUwMWMxZDAxNmIxOWVlZWNh
NGQyODVkMjY2NWVjY2JhZjgyYjRmLi42YWIzMmFhZjk3YWFmZmRhYWU3YzljZjNkZTJiMzBjYWM2
ZWE3ZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1l
bnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNOb3RB
bk9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKQEAgLTk3LDYgKzk4LDcgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZyaWVuZGx5U291cmNl
VVJMKCkgY29uc3QKICAgICAKICAgICBzd2l0Y2ggKGNvZGVUeXBlKSB7CiAgICAgY2FzZSBTdGFj
a0ZyYW1lRXZhbENvZGU6CisgICAgY2FzZSBTdGFja0ZyYW1lTW9kdWxlQ29kZToKICAgICBjYXNl
IFN0YWNrRnJhbWVGdW5jdGlvbkNvZGU6CiAgICAgY2FzZSBTdGFja0ZyYW1lR2xvYmFsQ29kZToK
ICAgICAgICAgaWYgKCFzb3VyY2VVUkwuaXNFbXB0eSgpKQpAQCAtMTE4LDYgKzEyMCw5IEBAIFN0
cmluZyBTdGFja0ZyYW1lOjpmcmllbmRseUZ1bmN0aW9uTmFtZShDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkgY29uc3QKICAgICBjYXNlIFN0YWNrRnJhbWVFdmFsQ29kZToKICAgICAgICAgdHJhY2VMaW5l
ID0gImV2YWwgY29kZSI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhY2tGcmFtZU1vZHVs
ZUNvZGU6CisgICAgICAgIHRyYWNlTGluZSA9ICJtb2R1bGUgY29kZSI7CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgU3RhY2tGcmFtZU5hdGl2ZUNvZGU6CiAgICAgICAgIGlmIChjYWxsZWUpCiAg
ICAgICAgICAgICB0cmFjZUxpbmUgPSBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUoY2FsbEZyYW1l
LCBzdGFja0ZyYW1lQ2FsbGVlKS5pbXBsKCk7CkBAIC00NTEsNiArNDU2LDggQEAgc3RhdGljIFN0
YWNrRnJhbWVDb2RlVHlwZSBnZXRTdGFja0ZyYW1lQ29kZVR5cGUoU3RhY2tWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHN3aXRjaCAodmlzaXRvci0+Y29kZVR5cGUoKSkgewogICAgIGNhc2UgU3RhY2tW
aXNpdG9yOjpGcmFtZTo6RXZhbDoKICAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVFdmFsQ29kZTsK
KyAgICBjYXNlIFN0YWNrVmlzaXRvcjo6RnJhbWU6Ok1vZHVsZToKKyAgICAgICAgcmV0dXJuIFN0
YWNrRnJhbWVNb2R1bGVDb2RlOwogICAgIGNhc2UgU3RhY2tWaXNpdG9yOjpGcmFtZTo6RnVuY3Rp
b246CiAgICAgICAgIHJldHVybiBTdGFja0ZyYW1lRnVuY3Rpb25Db2RlOwogICAgIGNhc2UgU3Rh
Y2tWaXNpdG9yOjpGcmFtZTo6R2xvYmFsOgpAQCAtMTE3Niw2ICsxMTgzLDU0IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAor
SlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTTW9kdWxlRW52aXJvbm1lbnQqIHNjb3Bl
KQoreworICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKKyAgICBTYW1wbGluZ1Njb3BlIHNhbXBs
aW5nU2NvcGUodGhpcyk7CisKKyAgICBBU1NFUlQoc2NvcGUtPnZtKCkgPT0gJmNhbGxGcmFtZS0+
dm0oKSk7CisgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CisgICAgQVNTRVJUKCF2bS5pc0Nv
bGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9s
ZGluZ0FQSUxvY2soKSk7CisgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgICAgICBy
ZXR1cm4ganNOdWxsKCk7CisKKyAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgc2NvcGUt
Pmdsb2JhbE9iamVjdCgpKTsKKyAgICBpZiAoIXZtLmlzU2FmZVRvUmVjdXJzZSgpKQorICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUp
KTsKKworICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBleGVjdXRhYmxlLT5wcmVwYXJlRm9y
RXhlY3V0aW9uKGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsKTsKKyAgICBp
ZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQorICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVy
bihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjb21waWxlRXJyb3Ip
KTsKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5j
b2RlQmxvY2soKTsKKworICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRv
Zy0+ZGlkRmlyZShjYWxsRnJhbWUpKSkKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUpOworCisgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgorCisgICAgLy8g
VGhlIHx0aGlzfCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBgdW5kZWZpbmVkYC4KKyAgICAvLyBo
dHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxl
LWVudmlyb25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRpbmcKKyAgICAvLyBodHRwOi8vd3d3LmVj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50
LXJlY29yZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFt
ZTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgSlNDYWxsZWU6OmNyZWF0ZSh2
bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLCBzY29wZSksIGpzVW5kZWZpbmVkKCksIDEpOworCisg
ICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQor
ICAgICAgICBwcm9maWxlci0+d2lsbEV4ZWN1dGUoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3Vy
Y2VVUkwoKSwgZXhlY3V0YWJsZS0+Zmlyc3RMaW5lKCksIGV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1u
KCkpOworCisgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKKyAgICBKU1ZhbHVlIHJlc3VsdDsKKyAg
ICB7CisgICAgICAgIFNhbXBsaW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxl
ci5nZXQoKSk7CisgICAgICAgIHJlc3VsdCA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUo
KS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CisgICAgfQorCisgICAgaWYgKExlZ2Fj
eVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQorICAgICAgICBwcm9m
aWxlci0+ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZVVSTCgpLCBleGVj
dXRhYmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7CisKKyAgICBy
ZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOworfQorCiBORVZFUl9JTkxJTkUgdm9pZCBJbnRl
cnByZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERlYnVnSG9va0lEIGRlYnVnSG9v
a0lEKQogewogICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+dm1FbnRyeUdsb2Jh
bE9iamVjdCgpLT5kZWJ1Z2dlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCAxMzJjOTVkMTdmNGUxMDliYTM3YmJjYjAxODcyNzMy
YjJmOTUxMTZmLi40ZmVmYWE2Y2Y4ZTMxYWYyZDM1OWQxNjNiYWM4YTFhNDA5NWFmNDRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAt
NTQsOCArNTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9u
OwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAg
Y2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKKyAgICBjbGFzcyBKU01vZHVsZVJlY29yZDsKICAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFi
bGU7CisgICAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0
ZXI7CiAgICAgY2xhc3MgSlNTY29wZTsKICAgICBjbGFzcyBTYW1wbGluZ1Rvb2w7CkBAIC03Niw2
ICs3OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVudW0gU3RhY2tGcmFtZUNvZGVUeXBlIHsK
ICAgICAgICAgU3RhY2tGcmFtZUdsb2JhbENvZGUsCiAgICAgICAgIFN0YWNrRnJhbWVFdmFsQ29k
ZSwKKyAgICAgICAgU3RhY2tGcmFtZU1vZHVsZUNvZGUsCiAgICAgICAgIFN0YWNrRnJhbWVGdW5j
dGlvbkNvZGUsCiAgICAgICAgIFN0YWNrRnJhbWVOYXRpdmVDb2RlCiAgICAgfTsKQEAgLTIxMiw2
ICsyMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChD
YWxsRnJhbWUqLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYs
IEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CiAgICAgICAgIEpTT2JqZWN0KiBl
eGVjdXRlQ29uc3RydWN0KENhbGxGcmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ29uc3RydWN0
VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1Rh
cmdldCk7CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSosIENhbGxGcmFt
ZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKik7CisgICAgICAgIEpTVmFsdWUgZXhlY3V0
ZShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIEpTTW9kdWxlRW52aXJvbm1l
bnQqKTsKIAogICAgICAgICB2b2lkIGdldEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1lKiwgSlNGdW5j
dGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVyKiYgYXJndiwg
aW50JiBhcmdjKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IGQzNzZkYjQyMTdmYTYxZTZjMzJlYTlkYTI3
YTc1YmZiMDMzMGIzYjcuLjBiMWY0NTVmMTc3OWVjYjE1OWMzYTQ0ZTgzMDg1ZTcyM2QzZWIxMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0
b3IuY3BwCkBAIC0xODEsNiArMTgxLDggQEAgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Q29kZVR5cGUg
U3RhY2tWaXNpdG9yOjpGcmFtZTo6Y29kZVR5cGUoKSBjb25zdAogICAgIHN3aXRjaCAoY29kZUJs
b2NrKCktPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIEV2YWxDb2RlOgogICAgICAgICByZXR1cm4g
Q29kZVR5cGU6OkV2YWw7CisgICAgY2FzZSBNb2R1bGVDb2RlOgorICAgICAgICByZXR1cm4gQ29k
ZVR5cGU6Ok1vZHVsZTsKICAgICBjYXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAgcmV0dXJuIENv
ZGVUeXBlOjpGdW5jdGlvbjsKICAgICBjYXNlIEdsb2JhbENvZGU6CkBAIC0xOTksNiArMjAxLDkg
QEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSgpCiAgICAgY2FzZSBD
b2RlVHlwZTo6RXZhbDoKICAgICAgICAgdHJhY2VMaW5lID0gQVNDSUlMaXRlcmFsKCJldmFsIGNv
ZGUiKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2RlVHlwZTo6TW9kdWxlOgorICAgICAg
ICB0cmFjZUxpbmUgPSBBU0NJSUxpdGVyYWwoIm1vZHVsZSBjb2RlIik7CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ29kZVR5cGU6Ok5hdGl2ZToKICAgICAgICAgaWYgKGNhbGxlZSkKICAgICAg
ICAgICAgIHRyYWNlTGluZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUoKSwg
Y2FsbGVlKS5pbXBsKCk7CkBAIC0yMTksNiArMjI0LDcgQEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6
RnJhbWU6OnNvdXJjZVVSTCgpCiAKICAgICBzd2l0Y2ggKGNvZGVUeXBlKCkpIHsKICAgICBjYXNl
IENvZGVUeXBlOjpFdmFsOgorICAgIGNhc2UgQ29kZVR5cGU6Ok1vZHVsZToKICAgICBjYXNlIENv
ZGVUeXBlOjpGdW5jdGlvbjoKICAgICBjYXNlIENvZGVUeXBlOjpHbG9iYWw6IHsKICAgICAgICAg
U3RyaW5nIHNvdXJjZVVSTCA9IGNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNl
VVJMKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmgKaW5kZXggMDAzNmE3ODljNThlMTlhZTEzYjBkNGFiZmI3NTU4M2U5YmI0NjczNC4uNDFi
ZmM3MDg4MjBlY2NmY2FjNzM1YjM5YjQyMjQ3MTNlYmU1MmQ2OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaApAQCAtNTIsNiArNTIsNyBA
QCBjbGFzcyBTdGFja1Zpc2l0b3IgewogICAgICAgICAgICAgR2xvYmFsLAogICAgICAgICAgICAg
RXZhbCwKICAgICAgICAgICAgIEZ1bmN0aW9uLAorICAgICAgICAgICAgTW9kdWxlLAogICAgICAg
ICAgICAgTmF0aXZlCiAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCBiYmM4NTIzZjViYjIzYTM5MzBjMDk0ZWQ0ODYyMTc0NjRkODZjNTUxLi44NGYzNmQ1NDBmM2Ni
YWExYWVjYzU1M2FkZjhjNDYxNGI3YmRlODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC00ODYsNiArNDg2LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGls
ZShKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgCiAgICAgc3dpdGNoIChtX2NvZGVC
bG9jay0+Y29kZVR5cGUoKSkgewogICAgIGNhc2UgR2xvYmFsQ29kZToKKyAgICBjYXNlIE1vZHVs
ZUNvZGU6CiAgICAgY2FzZSBFdmFsQ29kZToKICAgICAgICAgbV9jb2RlQmxvY2stPm1fc2hvdWxk
QWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA0OGNkZjExZmQzNmZh
ZmQ5NmJmMmJiNjcxZjU1YzMxZDQ1N2U2NDQ5Li45YTRhZTQ1NTI5ZGVmZTQ3NWQ2NzdiZjcwNGI1
YzYwNzZlM2VkMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5o
IgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50
c1RhYmxlLmgiCisjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmlu
Z1ByaW50U3RyZWFtLmg+CiAKIApAQCAtNzAzLDYgKzcwNCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9yZXNvbHZlX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2Fz
ZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICAgICAgZW1pdFJlc29sdmVD
bG9zdXJlKGRzdCwgc2NvcGUsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSwg
ZGVwdGgpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKKyAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGN1cnJlbnRJbnN0cnVjdGlvbls2XS51LmpzQ2VsbC5nZXQoKSksIHJl
Z1QwKTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworICAgICAgICBicmVh
azsKICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtNzE2LDcgKzcyMSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9yZXNv
bHZlX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93CiAg
ICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgUmVzb2x2
ZVR5cGUgcmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3Ry
dWN0aW9uWzRdLnUub3BlcmFuZCk7CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJv
cGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENsb3N1
cmVWYXIpCisgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVU
eXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyIHx8IHJlc29sdmVU
eXBlID09IE1vZHVsZVZhcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOwpAQCAtNzc4LDYgKzc4Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3Bl
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBEeW5hbWljOgogICAg
ICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVs
ZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC04NTIsNiArODU4LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X3RvX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAg
IGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlw
ZSkpOwogICAgICAgICBlbWl0UHV0Q2xvc3VyZVZhcihzY29wZSwgKm9wZXJhbmRTbG90LCB2YWx1
ZSwgY3VycmVudEluc3RydWN0aW9uWzVdLnUud2F0Y2hwb2ludFNldCk7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xv
d0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CkBAIC04NzMsNyArODgwLDEyIEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgICAgIHJldHVybjsKICAgICB3aGlsZSAobGlua0NvdW50
LS0pCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblB1dFRvU2NvcGUsIGN1cnJlbnRJbnN0cnVjdGlvbik7CisKKyAgICBpZiAocmVzb2x2ZVR5
cGUgPT0gTW9kdWxlVmFyKSB7CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVh
ZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOworICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgp
OworICAgIH0gZWxzZQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUs
IGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2Fy
Z3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCBlOTI2ZjUyZGM3NmQ5ZWRlMmYwZTNhNWIz
ZGMyNmIzMzZhOTJmODVkLi4wMjY5YmE0NmIxYmIxZGUyMjA0MzM1YmViOTkzMmEwZGRkNzNiMGM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTMyLDgg
KzEzMiw4IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VS
VChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9PSA2NCk7CiAjZW5kaWYKICAgICBBU1NF
UlQoU3RyaW5nVHlwZSA9PSA2KTsKLSAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAxOCk7Ci0gICAg
QVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAxOSk7CisgICAgQVNTRVJUKE9iamVjdFR5cGUgPT0g
MjApOworICAgIEFTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMjEpOwogICAgIEFTU0VSVChNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID09IDEpOwogICAgIEFTU0VSVChJbXBsZW1lbnRzSGFzSW5zdGFu
Y2UgPT0gMik7CiAgICAgQVNTRVJUKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPT0gOCk7
CkBAIC0xNDEsMTUgKzE0MSwxNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2
bSkKICAgICBBU1NFUlQoR2xvYmFsQ29kZSA9PSAwKTsKICAgICBBU1NFUlQoRXZhbENvZGUgPT0g
MSk7CiAgICAgQVNTRVJUKEZ1bmN0aW9uQ29kZSA9PSAyKTsKKyAgICBBU1NFUlQoTW9kdWxlQ29k
ZSA9PSAzKTsKIAogICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHkgPT0gMCwgIkxMSW50
IGFzc3VtZXMgR2xvYmFsUHJvcGVydHkgUmVzdWx0VHlwZSBpcyA9PSAwIik7CiAgICAgc3RhdGlj
X2Fzc2VydChHbG9iYWxWYXIgPT0gMSwgIkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyIFJlc3VsdFR5
cGUgaXMgPT0gMSIpOwogICAgIHN0YXRpY19hc3NlcnQoQ2xvc3VyZVZhciA9PSAyLCAiTExJbnQg
YXNzdW1lcyBDbG9zdXJlVmFyIFJlc3VsdFR5cGUgaXMgPT0gMiIpOwogICAgIHN0YXRpY19hc3Nl
cnQoTG9jYWxDbG9zdXJlVmFyID09IDMsICJMTEludCBhc3N1bWVzIExvY2FsQ2xvc3VyZVZhciBS
ZXN1bHRUeXBlIGlzID09IDMiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrcyA9PSA0LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA0Iik7Ci0gICAgc3RhdGljX2Fz
c2VydChHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDUsICJMTEludCBhc3N1bWVz
IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA1Iik7Ci0g
ICAgc3RhdGljX2Fzc2VydChDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA2LCAi
TExJbnQgYXNzdW1lcyBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBl
IGlzID09IDYiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KER5bmFtaWMgPT0gNywgIkxMSW50IGFzc3Vt
ZXMgRHluYW1pYyBSZXN1bHRUeXBlIGlzID09IDciKTsKKyAgICBzdGF0aWNfYXNzZXJ0KE1vZHVs
ZVZhciA9PSA0LCAiTExJbnQgYXNzdW1lcyBNb2R1bGVWYXIgUmVzdWx0VHlwZSBpcyA9PSA0Iik7
CisgICAgc3RhdGljX2Fzc2VydChHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3Mg
PT0gNSwgIkxMSW50IGFzc3VtZXMgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
IFJlc3VsdFR5cGUgaXMgPT0gNSIpOworICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcyA9PSA2LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNiIpOworICAgIHN0YXRpY19hc3NlcnQoQ2xv
c3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNywgIkxMSW50IGFzc3VtZXMgQ2xvc3Vy
ZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA3Iik7CisgICAgc3Rh
dGljX2Fzc2VydChEeW5hbWljID09IDgsICJMTEludCBhc3N1bWVzIER5bmFtaWMgUmVzdWx0VHlw
ZSBpcyA9PSA4Iik7CiAgICAgCiAgICAgQVNTRVJUKFJlc29sdmVNb2RlQW5kVHlwZTo6bWFzayA9
PSAweGZmZmYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFbnRyeXBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnQuY3BwCmluZGV4IDlkMDAxMDZiOWE4Mjc2ZjQ4NDIwZjZiNTQ2YzMyZDU5MzBhMzZiNjgu
LmE2YzNkMjdlMjgwYTA0NDc5MjI4NjlkNzgyY2ZlMmE1NWFiNzgwYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCkBAIC05NywxMiArOTcs
MzAgQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVudHJ5cG9pbnQoVk0mIHZtLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaykKICAgICAgICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVMTEludENvZGVSZWYobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSks
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSkpOwog
fQogCitzdGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVC
bG9jayogY29kZUJsb2NrKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKHZtLmNhblVzZUpJ
VCgpKSB7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAgICAgICAgIGFkb3B0
UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHZtLmdldENUSVN0dWIobW9kdWxlUHJvZ3JhbUVudHJ5VGh1
bmtHZW5lcmF0b3IpLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuaykpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoSklU
KQorCisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoCisg
ICAgICAgIGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlTExJbnRDb2RlUmVmKGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7Cit9CisKIHZv
aWQgc2V0RW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIHN3
aXRjaCAoY29kZUJsb2NrLT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBHbG9iYWxDb2RlOgogICAg
ICAgICBzZXRQcm9ncmFtRW50cnlwb2ludCh2bSwgY29kZUJsb2NrKTsKICAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgTW9kdWxlQ29kZToKKyAgICAgICAgc2V0TW9kdWxlUHJvZ3JhbUVudHJ5cG9p
bnQodm0sIGNvZGVCbG9jayk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEV2YWxDb2RlOgog
ICAgICAgICBzZXRFdmFsRW50cnlwb2ludCh2bSwgY29kZUJsb2NrKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcAppbmRleCBhMmE2YjJiMTFjNTY4MWUwYjZlOTcwYzRmZDExYzk2ZTE5ZGI5M2Rh
Li45ZTNmNDQ4N2IwODUyMDEzNzJiMmQ3YjI3Yjc4Y2U1OTFhYmQ5NzBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApA
QCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVu
dFJlY29yZC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNb2R1
bGVSZWNvcmQuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIK
ICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5jcHAKaW5kZXggOGFiOTZiMzA0NzVmZDU1NGRlZjhiMzI2NjI0OTY2MzJlYWY5NmQ5
YS4uYWY2ODg0ZTVlZGU3YmViZTA0ZjM3YjNmMDAwOTFlZTE2Zjk1MTE3MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCkBAIC04OCw2ICs4OCwxMSBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQog
ICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5j
dGlvblB0cihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgInByb2dyYW0iKTsKIH0KIAorTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkK
K3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8odm0sIExMSW50OjpnZXRDb2Rl
RnVuY3Rpb25QdHIobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCAibW9kdWxlX3Byb2dy
YW0iKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgTExJbnQKIAogI2Vsc2UgLy8gRU5BQkxFKEpJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKaW5kZXggMGQxYmU2YmRh
ZWFkZjc5NDg3Y2U5MDY2ODI2NDY4NTE4OGE4YmQxMi4uOTViMGY0NDg0OGJjYzUyOWQxNTAzZTI4
OWI5M2VmZTM3MDVjODMxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
Q2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIG1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNWFkODM0NjVjZDFhNGU4ZjRl
OTY0YTY3ZWQwOGExNTdlN2ZhMzc1YS4uMjk4OGUxZWFiYTIwNzNhNzE0NzQzNTgyMmU0NTk2YWRk
NGFjNDM5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQpAQCAtMTYxLDggKzE2MSw4IEBAIGNvbnN0IFNsb3dQdXRBcnJheVN0
b3JhZ2VTaGFwZSA9IDMwCiAKICMgVHlwZSBjb25zdGFudHMuCiBjb25zdCBTdHJpbmdUeXBlID0g
NgotY29uc3QgT2JqZWN0VHlwZSA9IDE4Ci1jb25zdCBGaW5hbE9iamVjdFR5cGUgPSAxOQorY29u
c3QgT2JqZWN0VHlwZSA9IDIwCitjb25zdCBGaW5hbE9iamVjdFR5cGUgPSAyMQogCiAjIFR5cGUg
ZmxhZ3MgY29uc3RhbnRzLgogY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEKQEAgLTE3
Niw2ICsxNzYsNyBAQCBjb25zdCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAw
MDAKIGNvbnN0IEdsb2JhbENvZGUgPSAwCiBjb25zdCBFdmFsQ29kZSA9IDEKIGNvbnN0IEZ1bmN0
aW9uQ29kZSA9IDIKK2NvbnN0IE1vZHVsZUNvZGUgPSAzCiAKICMgVGhlIGludGVycHJldGVyIHN0
ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgogY29uc3QgTExJbnRSZXR1
cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKQEAgLTE5MSwxMCArMTkyLDExIEBAIGNv
bnN0IEdsb2JhbFByb3BlcnR5ID0gMAogY29uc3QgR2xvYmFsVmFyID0gMQogY29uc3QgQ2xvc3Vy
ZVZhciA9IDIKIGNvbnN0IExvY2FsQ2xvc3VyZVZhciA9IDMKLWNvbnN0IEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDQKLWNvbnN0IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgPSA1Ci1jb25zdCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDYK
LWNvbnN0IER5bmFtaWMgPSA3Citjb25zdCBNb2R1bGVWYXIgPSA0Citjb25zdCBHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA1Citjb25zdCBHbG9iYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzID0gNgorY29uc3QgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3Mg
PSA3Citjb25zdCBEeW5hbWljID0gOAogCiBjb25zdCBSZXNvbHZlTW9kZU1hc2sgPSAweGZmZmYK
IApAQCAtODg0LDYgKzg4NiwxMSBAQCBfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKICAgICBkaXNw
YXRjaCgwKQogCiAKK19sbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1
ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIs
IF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgw
KQorCisKIF9sbGludF9ldmFsX3Byb2xvZ3VlOgogICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29k
ZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29z
ciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQogICAgIGRpc3BhdGNoKDApCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4
IGQyMTUyYTJmMjc3YWRlNTg3OTc2YTFjM2YxMjAyMzcyOWIzOGE1OWEuLjVjMDBlNjQ2ZjYwMTBl
NmJhNjg2MWUzNGNlOWNmNzc0YTVhOGM0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xOTE4LDYgKzE5MTgs
MTIgQEAgbWFjcm8gZ2V0R2xvYmFsT2JqZWN0KGRzdCkKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQx
LCA4XQogZW5kCiAKK21hY3JvIGdldEltcG9ydGVkTW9kdWxlU2NvcGUoZHN0KQorICAgIGxvYWRw
RnJvbUluc3RydWN0aW9uKDYsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihkc3QsIHQx
KQorICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCitlbmQKKwogbWFjcm8gdmFySW5qZWN0aW9u
Q2hlY2soc2xvd1BhdGgpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCkBAIC0xOTU3LDEwICsxOTYzLDE1IEBA
IF9sbGludF9vcF9yZXNvbHZlX3Njb3BlOgogICAgIGRpc3BhdGNoKDcpCiAKIC5yQ2xvc3VyZVZh
cjoKLSAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3MKKyAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJNb2R1bGVWYXIKICAgICBy
ZXNvbHZlU2NvcGUoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5yTW9kdWxlVmFyOgorICAgIGJpbmVx
IHQwLCBNb2R1bGVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisg
ICAgZ2V0SW1wb3J0ZWRNb2R1bGVTY29wZSgxKQorICAgIGRpc3BhdGNoKDcpCisKIC5yR2xvYmFs
UHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKQEAgLTIxNDQsMTMgKzIxNTUs
MTggQEAgX2xsaW50X29wX3B1dF90b19zY29wZToKICAgICBkaXNwYXRjaCg3KQogCiAucENsb3N1
cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgotICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcywgLnBEeW5hbWljCisgICAgYmluZXEgdDAsIENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAucE1vZHVsZVZhcgogICAgIHdyaXRlQmFycmllck9uT3Bl
cmFuZHMoMSwgMykKICAgICB2YXJJbmplY3Rpb25DaGVjaygucER5bmFtaWMpCiAgICAgbG9hZFZh
cmlhYmxlKDEsIHQwKQogICAgIHB1dENsb3N1cmVWYXIoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5w
TW9kdWxlVmFyOgorICAgIGJpbmVxIHQwLCBNb2R1bGVWYXIsIC5wRHluYW1pYworICAgIGNhbGxT
bG93UGF0aChfc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dy
aXRlX2Vycm9yKQorICAgIGRpc3BhdGNoKDcpCisKIC5wRHluYW1pYzoKICAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCiAgICAgZGlzcGF0Y2goNykKQEAgLTIy
MzMsNCArMjI0OSw0IEBAIF9sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBs
b2FkcCBKU0Fycm93RnVuY3Rpb246Om1fYm91bmRUaGlzW3QwXSwgdDAKICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KLSAgICBkaXNw
YXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICBkaXNwYXRjaCgyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCAy
ZmE4MWFhY2ZjMWY4ZjJiZDc2NDJmMzgzOWIzYjEyNjA1ODdmMmYyLi5mNjIzOGZiOTY4MDJiZTUz
N2U5MWFkYzI2YjgyZDg5MGI5NTQwMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIE1vZHVsZUFu
YWx5emVyOjpleHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBs
b2NhbE5hbWUsCiAgICAgfQogCiAgICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBtb2R1bGVS
ZWNvcmQoKS0+bG9va1VwSW1wb3J0RW50cnkobG9jYWxOYW1lKTsKLSAgICBpZiAoaW1wb3J0RW50
cnkuaXNOYW1lc3BhY2Uodm0oKSkpIHsKKyAgICBpZiAodmFyaWFibGUuaXNJbXBvcnRlZE5hbWVz
cGFjZSgpKSB7CiAgICAgICAgIC8vIEV4cG9ydGVkIG5hbWVzcGFjZSBiaW5kaW5nLgogICAgICAg
ICAvLyBpbXBvcnQgKiBhcyBuYW1lc3BhY2UgZnJvbSAibW9kIgogICAgICAgICAvLyBleHBvcnQg
eyBuYW1lc3BhY2UgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4
IDhhOTM2MTU3YjNmNjk2MGI2M2JhODFlYjQ3NzY4ODZmYTAzNDU5OGEuLjdmMDUwMWM2NTMxMmRi
NGQ0ZmY4NWRjNGRiMTNhZjI2MzFkZGVjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKQEAgLTIzMTksNyArMjMxOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkltcG9ydFNwZWNpZmllciBQYXJzZXI8TGV4ZXJU
CiAgICAgfQogCiAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGxvY2FsTmFtZVRva2VuLm1fdHlwZSAm
IEtleXdvcmRUb2tlbkZsYWcsICJDYW5ub3QgdXNlIGtleXdvcmQgYXMgaW1wb3J0ZWQgYmluZGlu
ZyBuYW1lIik7Ci0gICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0g
ZGVjbGFyZVZhcmlhYmxlKGxvY2FsTmFtZSwgRGVjbGFyYXRpb25UeXBlOjpDb25zdERlY2xhcmF0
aW9uLCBEZWNsYXJhdGlvbkltcG9ydFR5cGU6OkltcG9ydGVkKTsKKyAgICBEZWNsYXJhdGlvblJl
c3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBkZWNsYXJlVmFyaWFibGUobG9jYWxOYW1lLCBE
ZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24sIChzcGVjaWZpZXJUeXBlID09IEltcG9y
dFNwZWNpZmllclR5cGU6Ok5hbWVzcGFjZUltcG9ydCkgPyBEZWNsYXJhdGlvbkltcG9ydFR5cGU6
OkltcG9ydGVkTmFtZXNwYWNlIDogRGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBvcnRlZCk7CiAg
ICAgaWYgKGRlY2xhcmF0aW9uUmVzdWx0ICE9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZCkgewog
ICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlv
blJlc3VsdDo6SW52YWxpZFN0cmljdE1vZGUsICJDYW5ub3QgZGVjbGFyZSBhbiBpbXBvcnRlZCBi
aW5kaW5nIG5hbWVkICIsIGxvY2FsTmFtZS0+aW1wbCgpLCAiIGluIHN0cmljdCBtb2RlIik7CiAg
ICAgICAgIGlmIChkZWNsYXJhdGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlk
RHVwbGljYXRlRGVjbGFyYXRpb24pCkBAIC0yNTYwLDEwICsyNTYwLDggQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4
cG9ydERlY2xhcmEKICAgICAgICAgICAgIC8vIGRvZXMgbm90IGhhdmUgZWZmZWN0IG9uIHRoZSBj
dXJyZW50IG1vZHVsZSdzIHNjb3BlLiBCdXQsCiAgICAgICAgICAgICAvLyAgIGV4cG9ydCB7IEEs
IEIsIEMgYXMgRCB9CiAgICAgICAgICAgICAvLyB3aWxsIHJlZmVyZW5jZSB0aGUgY3VycmVudCBt
b2R1bGUncyBiaW5kaW5ncy4KLSAgICAgICAgICAgIGZvciAoY29uc3QgSWRlbnRpZmllciogbG9j
YWxOYW1lIDogbWF5YmVMb2NhbE5hbWVzKSB7Ci0gICAgICAgICAgICAgICAgY3VycmVudFNjb3Bl
KCktPnVzZVZhcmlhYmxlKGxvY2FsTmFtZSwgbV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAq
bG9jYWxOYW1lKTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgSWRlbnRpZmllciogbG9jYWxOYW1l
IDogbWF5YmVMb2NhbE5hbWVzKQogICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5tb2R1
bGVTY29wZURhdGEoKS5leHBvcnRCaW5kaW5nKCpsb2NhbE5hbWUpOwotICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0TmFtZWREZWNs
YXJhdGlvbihleHBvcnRMb2NhdGlvbiwgc3BlY2lmaWVyTGlzdCwgbW9kdWxlTmFtZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBjMmU2YTY1MDQwODk5MTVkYzI4MDU3
ZmZlMDFmMDRlZWFkZTAxZjE0Li5mNjk3YmUzMzZiYjgwYzUyNTA0Mjg1NmI4YzA4NzU1MzczM2Ex
MjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTEwMCw2ICsxMDAs
NyBAQCBlbnVtIGNsYXNzIERlY2xhcmF0aW9uVHlwZSB7CiAKIGVudW0gY2xhc3MgRGVjbGFyYXRp
b25JbXBvcnRUeXBlIHsKICAgICBJbXBvcnRlZCwKKyAgICBJbXBvcnRlZE5hbWVzcGFjZSwKICAg
ICBOb3RJbXBvcnRlZAogfTsKIApAQCAtMzM1LDYgKzMzNiwxMCBAQCBzdHJ1Y3QgU2NvcGUgewog
CiAgICAgICAgIGlmIChpbXBvcnRUeXBlID09IERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1wb3J0
ZWQpCiAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNldElzSW1wb3J0ZWQo
KTsKKyAgICAgICAgZWxzZSBpZiAoaW1wb3J0VHlwZSA9PSBEZWNsYXJhdGlvbkltcG9ydFR5cGU6
OkltcG9ydGVkTmFtZXNwYWNlKSB7CisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLnNldElzSW1wb3J0ZWQoKTsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuc2V0SXNJbXBvcnRlZE5hbWVzcGFjZSgpOworICAgICAgICB9CiAKICAgICAgICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJl
c3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAppbmRleCA1ZWQyYTZiZGE5Mjgz
OGUyOTY0ODJmNjZjMDc4NWEzNjExYWU2MTVjLi43NmM3MDk2ZTllNjQ0N2ViYmJkYjBkOTY1YTNl
YTRhMjRhNTE3M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuaApAQCAtNDAsNiArNDAsNyBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZp
cm9ubWVudEVudHJ5IHsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNMZXQoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBJc0xldDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0V4cG9ydGVk
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNFeHBvcnRlZDsgfQogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc0ltcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNJbXBvcnRlZDsg
fQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0ltcG9ydGVkTmFtZXNwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9iaXRzICYgSXNJbXBvcnRlZE5hbWVzcGFjZTsgfQogCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7IG1fYml0cyB8PSBJc0NhcHR1cmVkOyB9CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldElzQ29uc3QoKSB7IG1fYml0cyB8PSBJc0NvbnN0OyB9CkBAIC00
Nyw2ICs0OCw3IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgewogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXRJc0xldCgpIHsgbV9iaXRzIHw9IElzTGV0OyB9CiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldElzRXhwb3J0ZWQoKSB7IG1fYml0cyB8PSBJc0V4cG9ydGVkOyB9CiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzSW1wb3J0ZWQoKSB7IG1fYml0cyB8PSBJc0ltcG9y
dGVkOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzSW1wb3J0ZWROYW1lc3BhY2UoKSB7
IG1fYml0cyB8PSBJc0ltcG9ydGVkTmFtZXNwYWNlOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgY2xlYXJJc1ZhcigpIHsgbV9iaXRzICY9IH5Jc1ZhcjsgfQogCkBAIC01Nyw3ICs1OSw4IEBA
IHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgewogICAgICAgICBJc1ZhciA9IDEgPDwg
MiwKICAgICAgICAgSXNMZXQgPSAxIDw8IDMsCiAgICAgICAgIElzRXhwb3J0ZWQgPSAxIDw8IDQs
Ci0gICAgICAgIElzSW1wb3J0ZWQgPSAxIDw8IDUKKyAgICAgICAgSXNJbXBvcnRlZCA9IDEgPDwg
NSwKKyAgICAgICAgSXNJbXBvcnRlZE5hbWVzcGFjZSA9IDEgPDwgNgogICAgIH07CiAgICAgdWlu
dDhfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAtNzksNiArODIsOCBAQCBjbGFzcyBWYXJpYWJsZUVu
dmlyb25tZW50IHsKICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX21hcC5zaXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY29udGFpbnMoY29u
c3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4g
bV9tYXAuY29udGFpbnMoaWRlbnRpZmllcik7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcmVt
b3ZlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJu
IG1fbWFwLnJlbW92ZShpZGVudGlmaWVyKTsgfQorICAgIEFMV0FZU19JTkxJTkUgTWFwOjppdGVy
YXRvciBmaW5kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsg
cmV0dXJuIG1fbWFwLmZpbmQoaWRlbnRpZmllcik7IH0KKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6
Y29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVu
dGlmaWVyKSBjb25zdCB7IHJldHVybiBtX21hcC5maW5kKGlkZW50aWZpZXIpOyB9CiAgICAgdm9p
ZCBzd2FwKFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKTsKICAgICB2b2lkIG1hcmtWYXJpYWJs
ZUFzQ2FwdHVyZWRJZkRlZmluZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRl
bnRpZmllcik7CiAgICAgdm9pZCBtYXJrVmFyaWFibGVBc0NhcHR1cmVkKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggYWI3MGVhYmI5ZTNhMmEwNDUwYzYyOWU3MDU2NjZm
NGRjY2EwMWUyOC4uZDJlZmVjZDgyOWIyYzQ0ODVkZjEwNGI3ZmU0MWMyYzc2OWJkOGE2MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC02NywxMSAr
NjcsMTkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBDYWNoZVR5cGVzIHsgfTsKIHRl
bXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4gewog
ICAgIHR5cGVkZWYgSlNDOjpQcm9ncmFtTm9kZSBSb290Tm9kZTsKICAgICBzdGF0aWMgY29uc3Qg
U291cmNlQ29kZUtleTo6Q29kZVR5cGUgY29kZVR5cGUgPSBTb3VyY2VDb2RlS2V5OjpQcm9ncmFt
VHlwZTsKKyAgICBzdGF0aWMgY29uc3QgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJj
ZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU7CiB9OwogCiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2FjaGVU
eXBlczxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+IHsKICAgICB0eXBlZGVmIEpTQzo6RXZhbE5vZGUg
Um9vdE5vZGU7CiAgICAgc3RhdGljIGNvbnN0IFNvdXJjZUNvZGVLZXk6OkNvZGVUeXBlIGNvZGVU
eXBlID0gU291cmNlQ29kZUtleTo6RXZhbFR5cGU7CisgICAgc3RhdGljIGNvbnN0IFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOworfTsKKwor
dGVtcGxhdGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrPiB7CisgICAgdHlwZWRlZiBKU0M6Ok1vZHVsZVByb2dyYW1Ob2RlIFJvb3ROb2RlOworICAg
IHN0YXRpYyBjb25zdCBTb3VyY2VDb2RlS2V5OjpDb2RlVHlwZSBjb2RlVHlwZSA9IFNvdXJjZUNv
ZGVLZXk6OlByb2dyYW1UeXBlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGU7CiB9OwogCiB0ZW1w
bGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4K
QEAgLTk1LDcgKzEwMyw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRH
bG9iYWxDb2RlQmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlCiAgICAgdHlwZWRlZiB0
eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3RO
b2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290
Tm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCBz
dHJpY3RNb2RlLAotICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvciwg
bnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CisgICAgICAgIENh
Y2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBlcnJvciwgbnVsbHB0
ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9kZSk7CiAgICAgaWYgKCFyb290Tm9k
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEzMiw2ICsxNDAsMTIgQEAgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2soVk0mIHZtLCBFdmFs
RXhlY3V0YWJsZSogZXhlY3UKICAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2Vk
RXZhbENvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmlj
dE1vZGUsIHRoaXNURFpNb2RlLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsIHZh
cmlhYmxlc1VuZGVyVERaKTsKIH0KIAorVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBD
b2RlQ2FjaGU6OmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0mIHZtLCBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9m
aWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCit7CisgICAgVmFyaWFi
bGVFbnZpcm9ubWVudCBlbXB0eVBhcmVudFREWlZhcmlhYmxlczsKKyAgICByZXR1cm4gZ2V0R2xv
YmFsQ29kZUJsb2NrPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0sIGV4ZWN1dGFi
bGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBUaGlz
VERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9y
LCAmZW1wdHlQYXJlbnRURFpWYXJpYWJsZXMpOworfQorCiAvLyBGSVhNRTogVGhlcmUncyBubyBu
ZWVkIHRvIGFkZCB0aGUgZnVuY3Rpb24ncyBuYW1lIHRvIHRoZSBrZXkgaGVyZS4gSXQncyBhbHJl
YWR5IGluIHRoZSBzb3VyY2UgY29kZS4KIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2Rl
Q2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2bSwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYg
ZXJyb3IpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4
IGFmN2RhYzdlNDg3MDQxMzE5YzYzZmVjOTc1NWUyMzkzMTg4MzRjYjYuLjcxNzVmZTM5NTEyYzkz
NjZlNjE2Mzk4MTNjYjZjNGY4MjI1OThkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5oCkBAIC00NSw4ICs0NSwxMCBAQCBjbGFzcyBJZGVudGlmaWVyOwogY2xh
c3MgSlNTY29wZTsKIGNsYXNzIFBhcnNlckVycm9yOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7
CitjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
OwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
OwpAQCAtNTYsNyArNTgsNyBAQCBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIAogY2xhc3MgU291cmNl
Q29kZUtleSB7CiBwdWJsaWM6Ci0gICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBlLCBQcm9ncmFt
VHlwZSwgRnVuY3Rpb25UeXBlIH07CisgICAgZW51bSBDb2RlVHlwZSB7IEV2YWxUeXBlLCBQcm9n
cmFtVHlwZSwgRnVuY3Rpb25UeXBlLCBNb2R1bGVUeXBlIH07CiAKICAgICBTb3VyY2VDb2RlS2V5
KCkKICAgICB7CkBAIC0yNTcsNiArMjU5LDcgQEAgY2xhc3MgQ29kZUNhY2hlIHsKIAogICAgIFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jayogZ2V0UHJvZ3JhbUNvZGVCbG9jayhWTSYsIFByb2dyYW1F
eGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFy
c2VyU3RyaWN0TW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJik7
CiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZXRFdmFsQ29kZUJsb2NrKFZNJiwgRXZhbEV4
ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJz
ZXJTdHJpY3RNb2RlLCBUaGlzVERaTW9kZSwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBh
cnNlckVycm9yJiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOworICAgIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayogZ2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSYsIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwogICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29k
ZShWTSYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3Im
KTsKIAogICAgIHZvaWQgY2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggMTYzYjExNjEwNDFjY2RiMzVhZDUyOTc2Y2Fm
ZTZiZDExZGZjOGI3Ny4uNGZkYmQ5MzE0MzA4ZmI5OTUxNDUzNjgzMzgzZTFiYTRlMmM4MmY3OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCkBAIC0yODMsNiArMjgzLDcgQEAKICAgICBtYWNybyhBcnJheSkgXAogICAgIG1hY3JvKFN0
cmluZykgXAogICAgIG1hY3JvKE1hcCkgXAorICAgIG1hY3JvKFNldCkgXAogICAgIG1hY3JvKFBy
b21pc2UpIFwKICAgICBtYWNybyhJbnRlcm5hbFByb21pc2UpIFwKICAgICBtYWNybyhhYnMpIFwK
QEAgLTMwNyw2ICszMDgsNyBAQAogICAgIG1hY3JvKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbikg
XAogICAgIG1hY3JvKGdldCkgXAogICAgIG1hY3JvKHNldCkgXAorICAgIG1hY3JvKGFkZCkgXAog
CiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYWNiZTE0NjI5ZDI4NGVlODI1MTFmNzNjNTY4MDkx
ZGVkZjNiNDQ0Zi4uMTNlMmU1YTM5NzRjYTM5NWM0YmE3NTc2OTU2ODMyYzNmNGZhZjY1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CkBAIC0yNzAsNiArMjcwLDEyIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90aHJvd190ZHpf
ZXJyb3IpCiAgICAgVEhST1coY3JlYXRlVERaRXJyb3IoZXhlYykpOwogfQogCitTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVf
ZXJyb3IpCit7CisgICAgQkVHSU4oKTsKKyAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpKTsKK30K
KwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25vdCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAwNjdk
ZjBjMzhlOTEyMGJmNzA3Y2ZkZTQxYzNlZmJmMmE2ODcyZWUzLi4zMDA5ODU1ZmY2YmEyZDE1Mjgz
ZGI4Zjg1ZjNjZTQ1N2RkYjI4NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMTg5LDYgKzE4OSw3IEBAIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZW50ZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9nZXRfY2FsbGVlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fdGhpcyk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Rocm93X3Rkel9lcnJvcik7CitTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3By
b3BlcnR5X3dyaXRlX2Vycm9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbm90
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZXEpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9uZXEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmNwcAppbmRleCAxYjlhNzNkNzkzMzhhYTM5MTRmM2U0NTQ1MWJiNmY5YTAwY2M5
MDk3Li42MTI4M2ZlNTAwNmEwYjJmYzI4YjY4NjQ5NDZhYTY4MzU1NWYxM2NhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkxMSW50
RW50cnlwb2ludC5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0
YWJhc2UuaCIKQEAgLTE1OSw3ICsxNjAsMTggQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0
YWxsQ29kZShDb2RlQmxvY2sqIGdlbmVyaWNDb2RlQmxvY2spCiAgICAgICAgIGV4ZWN1dGFibGUt
Pm1fcHJvZ3JhbUNvZGVCbG9jayA9IGNvZGVCbG9jazsKICAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgICAgICAKKworICAgIGNhc2UgTW9kdWxlQ29kZTogeworICAgICAgICBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+
KHRoaXMpOworICAgICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0
aWNfY2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oZ2VuZXJpY0NvZGVCbG9jayk7CisKKyAg
ICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOworCisgICAgICAgIG9sZENvZGVCbG9j
ayA9IGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKKyAgICAgICAgZXhlY3V0
YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrID0gY29kZUJsb2NrOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEV2YWxDb2RlOiB7CiAgICAgICAgIEV2YWxFeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0ganNDYXN0PEV2YWxFeGVjdXRhYmxlKj4odGhpcyk7CiAgICAgICAgIEV2
YWxDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PEV2YWxDb2RlQmxvY2sqPihnZW5l
cmljQ29kZUJsb2NrKTsKQEAgLTIyNiw3ICsyMzgsMTcgQEAgUmVmUHRyPENvZGVCbG9jaz4gU2Ny
aXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgICAgICAgICAgZXhlY3V0YWJsZSwg
ZXhlY3V0YWJsZS0+bV91bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlLAogICAg
ICAgICAgICAgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXhlY3V0YWJsZS0+c291
cmNlKCkuc3RhcnRDb2x1bW4oKSkpOwogICAgIH0KLSAgICAKKworICAgIGlmIChjbGFzc0luZm8o
KSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CisgICAgICAgIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKj4odGhpcyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICAgICAgZXhl
Y3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0
KCksIHNjb3BlLAorICAgICAgICAgICAgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwg
ZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRDb2x1bW4oKSkpOworICAgIH0KKwogICAgIFJFTEVB
U0VfQVNTRVJUKGNsYXNzSW5mbygpID09IEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChmdW5jdGlvbik7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOwpAQCAtMjgzLDYgKzMw
NSwxNyBAQCBQYXNzUmVmUHRyPENvZGVCbG9jaz4gU2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFj
ZW1lbnRDb2RlQmxvY2tGb3IoCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAg
aWYgKGNsYXNzSW5mbygpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CisgICAgICAgIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKj4odGhpcyk7CisgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGJhc2VsaW5l
ID0gc3RhdGljX2Nhc3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KAorICAgICAgICAgICAgZXhl
Y3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7Cisg
ICAgICAgIFJlZlB0cjxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiByZXN1bHQgPSBhZG9wdFJlZihu
ZXcgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKKyAgICAgICAgICAgIENvZGVCbG9jazo6Q29weVBh
cnNlZEJsb2NrLCAqYmFzZWxpbmUpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRBbHRlcm5hdGl2ZShi
YXNlbGluZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgUkVMRUFTRV9B
U1NFUlQoY2xhc3NJbmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpOwogICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
Pih0aGlzKTsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogYmFzZWxpbmUgPSBzdGF0aWNfY2FzdDxG
dW5jdGlvbkNvZGVCbG9jayo+KApAQCAtMzgzLDYgKzQxNiw0MiBAQCB2b2lkIFByb2dyYW1FeGVj
dXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhl
Y3V0YWJsZSo+KGNlbGwpLT5Qcm9ncmFtRXhlY3V0YWJsZTo6flByb2dyYW1FeGVjdXRhYmxlKCk7
CiB9CiAKK2NvbnN0IENsYXNzSW5mbyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6c19pbmZvID0g
eyAiTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSB9OworCitNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4
ZWMtPnZtKCkubW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZt
KCksIHNvdXJjZSwgZmFsc2UpCit7CisgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAw
OworICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7Cisg
ICAgaWYgKGV4ZWMtPnZtKCkudHlwZVByb2ZpbGVyKCkgfHwgZXhlYy0+dm0oKS5jb250cm9sRmxv
d1Byb2ZpbGVyKCkpCisgICAgICAgIGV4ZWMtPnZtKCkuZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hl
KCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShzb3VyY2VJRCgpLCBtX3R5cGVQcm9maWxpbmdTdGFy
dE9mZnNldCwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KTsKK30KKworTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQp
Cit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPigqZXhlYy0+
aGVhcCgpKSkgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoZXhlYywgc291cmNlKTsKKyAgICBleGVj
dXRhYmxlLT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpLCBtb2R1bGVSZWNvcmQpOworCisgICAg
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
ID0gZ2xvYmFsT2JqZWN0LT5jcmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKGV4ZWMsIGV4ZWN1
dGFibGUpOworICAgIGlmICghdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2suc2V0KGV4ZWMtPnZtKCksIGV4ZWN1dGFibGUsIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGUpOworCisgICAgcmV0dXJuIGV4ZWN1dGFibGU7Cit9CisKK3ZvaWQgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJl
Y29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgbV9tb2R1bGVSZWNv
cmQuc2V0KHZtLCB0aGlzLCBtb2R1bGVSZWNvcmQpOworfQorCit2b2lkIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpLT5Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6fk1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKCk7Cit9CisKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvbkV4
ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRh
YmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25FeGVjdXRhYmxlKSB9
OwogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgCkBAIC01MTUsNiArNTg0LDM4IEBAIHZvaWQgUHJvZ3JhbUV4
ZWN1dGFibGU6OmNsZWFyQ29kZSgpCiAgICAgQmFzZTo6Y2xlYXJDb2RlKCk7CiB9CiAKK0pTT2Jq
ZWN0KiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIFBhcnNlckVycm9yIGVycm9yOworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9k
dWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCisgICAgICAgIHZtLCBt
X3NvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAor
ICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1
bGVBbmFseXplTW9kZSwgZXJyb3IpOworICAgIGlmIChtb2R1bGVQcm9ncmFtTm9kZSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CisgICAgcmV0
dXJuIGVycm9yLnRvRXJyb3JPYmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCwgbV9zb3VyY2UpOwor
fQorCit2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihjZWxsKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAg
U2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2spOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZCk7
CisgICAgaWYgKHRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKKyAgICAgICAg
dGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNp
dG9yKTsKK30KKwordm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2xlYXJDb2RlKCkKK3sK
KyAgICBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBudWxscHRyOworICAgIG1fdW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7CisgICAgQmFzZTo6Y2xlYXJDb2RlKCk7Cit9
CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJs
b2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBGdW5jdGlvbkNvZGVC
bG9jayogcmVzdWx0OwpAQCAtNTg5LDYgKzY5MCwxNSBAQCB2b2lkIEV4ZWN1dGFibGVCYXNlOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgICAgICBvdXQucHJpbnQoIlByb2dy
YW1FeGVjdXRhYmxlIHcvbyBDb2RlQmxvY2siKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwor
ICAgIGlmIChjbGFzc0luZm8oKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7
CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4ocmVhbFRoaXMpOworICAgICAgICBpZiAoQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgIG91dC5w
cmludCgqY29kZUJsb2NrKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0LnByaW50KCJN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSB3L28gQ29kZUJsb2NrIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGpzQ2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihyZWFsVGhpcyk7CiAgICAgaWYgKCFmdW5jdGlvbi0+ZWl0aGVy
Q29kZUJsb2NrKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgK
aW5kZXggMjM0ZjJjZDdlZTM4NjIwMjQzM2FjYzY2YzUxZTJjNTEyNGFkYjMwOS4uMDNmZDZhZjU3
NjA1ZWY0ZWQ3MGNhOGEzYzUxNGQ4NGMwZGM1YzgwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNTIsNiArNTIsOCBAQCBjbGFzcyBFdmFsQ29kZUJs
b2NrOwogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOworY2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
azsKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOwogY2xhc3MgSlNTY29wZTsKICAgICAKIGVudW0gQ29t
cGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07
CkBAIC0xMDQsNiArMTA2LDExIEBAIGNsYXNzIEV4ZWN1dGFibGVCYXNlIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgewogICAgICAgICByZXR1cm4gdHlwZSgpID09IFByb2dyYW1FeGVjdXRhYmxlVHlw
ZTsKICAgICB9CisgICAgYm9vbCBpc01vZHVsZVByb2dyYW1FeGVjdXRhYmxlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0eXBlKCkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOworICAg
IH0KKwogCiAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0CiAgICAgewpAQCAtNTQxLDYg
KzU0OCw1NCBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRhYmxlIHsKICAgICBSZWZQdHI8UHJvZ3JhbUNvZGVCbG9jaz4gbV9wcm9ncmFtQ29kZUJs
b2NrOwogfTsKIAorY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0YWJsZSB7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKKyAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNNb2R1bGVSZWNvcmQq
KTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKiBjb2RlQmxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxl
UHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsKKyAgICB9CisKKyAgICBKU09iamVjdCogY2hlY2tTeW50
YXgoRXhlY1N0YXRlKik7CisKKyAgICBQYXNzUmVmUHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENv
ZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7Cisg
ICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7CisgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUlu
Zm8oTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgdm9pZCBjbGVhckNvZGUoKTsKKwor
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0
YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBm
YWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2so
KSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQorCitw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOworCisgICAgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYpOworCisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJh
cnJpZXI8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiBtX3VubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jazsKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+IG1fbW9kdWxl
UmVjb3JkOworICAgIFJlZlB0cjxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiBtX21vZHVsZVByb2dy
YW1Db2RlQmxvY2s7Cit9OworCiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtNjg1LDYgKzc0MCw4IEBAIGlubGluZSB2
b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGVWaXJ0dWFsKEV4ZWN1dGFibGVCYXNlKiBleGVj
dXRhYmxlKQogICAgICAgICByZXR1cm4ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oZXhlY3V0
YWJsZSktPmNsZWFyQ29kZSgpOwogICAgIGNhc2UgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZToKICAg
ICAgICAgcmV0dXJuIGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xl
YXJDb2RlKCk7CisgICAgY2FzZSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU6CisgICAgICAg
IHJldHVybiBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xl
YXJDb2RlKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxOYXRpdmVFeGVj
dXRhYmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5M2VlMWZkNzRi
OTkyNTkwNDFjYTFlODYyZjYzMTFmNjUwOTgzODlhLi4yZDIyOWJlNjk0NDlkNmU4MmI1MjhmZWVk
ZmFlMDNiNTJkOTdmMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCkBAIC04NCw2ICs4NCw4IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgi
CiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCkBAIC0zMTAsNiArMzEyLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVE
YXRhVmlldyldLnN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTRGF0YVZpZXc6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVEYXRhVmlldyldLnByb3Rv
dHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cykpOworICAgIG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01v
ZHVsZUVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKICAgICBtX3N0cmlj
dEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3RyaWN0RXZhbEFjdGl2YXRp
b246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX2RlYnVnZ2Vy
U2NvcGVTdHJ1Y3R1cmUuc2V0KG1fdm0sIHRoaXMsIERlYnVnZ2VyU2NvcGU6OmNyZWF0ZVN0cnVj
dHVyZShtX3ZtLCB0aGlzKSk7CiAgICAgbV93aXRoU2NvcGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBKU1dpdGhTY29wZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwpAQCAt
MzQ2LDYgKzM0OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1f
cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0
Y2hlc0FycmF5U3RydWN0dXJlKHZtLCAqdGhpcykpOwogCiAgICAgbV9tb2R1bGVSZWNvcmRTdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fbW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICAKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgbV93YXNtTW9kdWxlU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNXQVNNTW9k
dWxlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKQEAgLTUyMCw2ICs1MjQsNyBAQCBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93
ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYlByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgb3BlcmF0aW9uc1By
b21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Qcml2YXRlTmFtZSgpLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0
ZSh2bSwgdGhpcywgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPk1hcFByaXZhdGVOYW1lLCBtYXBDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+U2V0UHJpdmF0ZU5hbWUsIHNldENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSksCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2Jh
bHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApAQCAtNzg5LDYgKzc5
NCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93
aXRoU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N0
cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0
dXJlKTsKQEAgLTgxNiw2ICs4MjIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jb25zb2xlU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7
CkBAIC05MzAsNiArOTM3LDI1IEBAIFVubGlua2VkRXZhbENvZGVCbG9jayogSlNHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUsCiAgICAgcmV0dXJu
IHVubGlua2VkQ29kZUJsb2NrOwogfQogCitVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sq
IEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSkKK3sKKyAgICBQ
YXJzZXJFcnJvciBlcnJvcjsKKyAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlID0gaGFzRGVi
dWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKKyAgICBQcm9maWxlck1vZGUgcHJv
ZmlsZXJNb2RlID0gaGFzUHJvZmlsZXIoKSA/IFByb2ZpbGVyT24gOiBQcm9maWxlck9mZjsKKyAg
ICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gdm0o
KS5jb2RlQ2FjaGUoKS0+Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKKyAgICAgICAgdm0oKSwg
ZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5v
dEJ1aWx0aW4sIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisKKyAgICBpZiAo
aGFzRGVidWdnZXIoKSkKKyAgICAgICAgZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGNhbGxGcmFt
ZSwgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5t
ZXNzYWdlKCkpOworCisgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgeworICAgICAgICB0aHJvd1ZN
RXJyb3IoY2FsbEZyYW1lLCBlcnJvci50b0Vycm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNv
dXJjZSgpKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiB1
bmxpbmtlZENvZGVCbG9jazsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0UmVtb3RlRGVi
dWdnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCAyNjEzMTZlODVkMmJhZmJkZWQ3ODQzMGI2ZjhmOGViYTVhZDg3NzZlLi44YzJlM2NhNGVl
NGNmMmJlMWYyOWIxMmUwN2ZiNDU1MzAwNzFlYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTc4LDYgKzc4LDcgQEAgY2xhc3MgSlNT
dGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1pY3JvdGFzazsKIGNs
YXNzIE1vZHVsZUxvYWRlck9iamVjdDsKK2NsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwog
Y2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yOwog
Y2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKQEAgLTg1LDYgKzg2LDcgQEAgY2xhc3MgUHJvZ3JhbUV4
ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKIGNsYXNzIFJlZ0V4cFByb3RvdHlw
ZTsKIGNsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2s7CiBjbGFzcyBOdWxsR2V0dGVyRnVuY3Rpb247CiBjbGFzcyBOdWxsU2V0dGVyRnVuY3Rpb247
CiBlbnVtIGNsYXNzIFRoaXNURFpNb2RlOwpAQCAtMjMwLDYgKzIzMiw3IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmU7CisgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZTsKQEAg
LTI2Miw2ICsyNjUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2l0ZXJhdG9y
UmVzdWx0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0
Y2hlc0FycmF5U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9kdWxl
UmVjb3JkU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9kdWxlTmFt
ZXNwYWNlT2JqZWN0U3RydWN0dXJlOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmU7CiAjZW5kaWYKQEAgLTQ0
Niw2ICs0NTAsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBz
dHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0RXZh
bEFjdGl2YXRpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFjdGl2YXRpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZS5n
ZXQoKTsgfQorICAgIFN0cnVjdHVyZSogbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBkaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RpcmVj
dEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc2NvcGVkQXJndW1l
bnRzU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG91dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CkBAIC00
OTksNiArNTA0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdCB7CiAgICAgc3RhdGljIHB0cmRpZmZfdCBpdGVyYXRvclJlc3VsdFN0cnVj
dHVyZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9p
dGVyYXRvclJlc3VsdFN0cnVjdHVyZSk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNB
cnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVy
ZSogbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1
bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgU3RydWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV93YXNtTW9kdWxlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYKQEAgLTY0MSw2ICs2NDcsNyBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKIAogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlUHJvZ3JhbUNvZGVCbG9j
ayhDYWxsRnJhbWUqLCBQcm9ncmFtRXhlY3V0YWJsZSosIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsK
ICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1l
KiwgRXZhbEV4ZWN1dGFibGUqLCBUaGlzVERaTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCopOworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayhDYWxsRnJhbWUqLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSopOwogCiBw
cm90ZWN0ZWQ6CiAgICAgc3RydWN0IEdsb2JhbFByb3BlcnR5SW5mbyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCA5
NTE2MzE4ZDcwMTY5ZTNkZDhjMmJlZjc4MzMxMjU2NzVjNWUyMThiLi40NDhlYTQzMWI3YjdjOTgy
NjJkNDEwYmYwMWY4NDkzNzFkOGFiNTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBSZWdpc3RlcjsKICAgICAKIGNsYXNzIEpTTGV4aWNhbEVudmly
b25tZW50IDogcHVibGljIEpTRW52aXJvbm1lbnRSZWNvcmQgewotcHJpdmF0ZToKK3Byb3RlY3Rl
ZDoKICAgICBKU0xleGljYWxFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBT
eW1ib2xUYWJsZSopOwogICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjRmY2Fh
YTkxYjkxYTZmMjZiYTBjOWU2ZGUwYjJmYTM3NmIwZGZmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKQEAgLTAs
MCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIK
KworI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZUVudmlyb25tZW50OjpzX2luZm8gPSB7
ICJKU01vZHVsZUVudmlyb25tZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU01vZHVsZUVudmlyb25tZW50KSB9OworCitKU01vZHVsZUVudmlyb25tZW50KiBKU01v
ZHVsZUVudmlyb25tZW50OjpjcmVhdGUoCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFs
dWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIC8v
IEpTTGV4aWNhbEVudmlyb25tZW50IChwcmVjaXNlbHksIEpTRW52aXJvbm1lbnRSZWNvcmQpIGhh
cyB0aGUgc3RvcmFnZSB0byBzdG9yZSB0aGUgdmFyaWFibGUgc2xvdHMgYWZ0ZXIgdGhlIGl0cyBj
bGFzcyBzdG9yYWdlLgorICAgIC8vIEJlY2F1c2UgdGhlIG9mZnNldCBvZiB0aGUgdmFyaWFibGUg
c2xvdHMgYXJlIGZpeGVkIGluIHRoZSBKU0Vudmlyb25tZW50UmVjb3JkLCBpbmhlcml0dGluZyB0
aGVzZSBjbGFzcyBhbmQgYWRkaW5nIG5ldyBtZW1iZXIgZmllbGQgaXMgbm90IGFsbG93ZWQsCisg
ICAgLy8gdGhlIG5ldyBtZW1iZXIgd2lsbCBvdmVybGFwIHRoZSB2YXJpYWJsZSBzbG90cy4KKyAg
ICAvLyBUbyBrZWVwIHRoZSBKU01vZHVsZUVudmlyb25tZW50IGNvbXBhdGlibGUgdG8gdGhlIEpT
TGV4aWNhbEVudmlyb25tZW50IGJ1dCBhZGQgdGhlIG5ldyBtZW1iZXIgdG8gc3RvcmUgdGhlIEpT
TW9kdWxlUmVjb3JkLCB3ZSBhZGRpdGlvbmFsbHkgYWxsb2NhdGUKKyAgICAvLyB0aGUgc3RvcmFn
ZSBhZnRlciB0aGUgdmFyaWFibGUgc2xvdHMuCisgICAgLy8KKyAgICAvLyBKU0xleGljYWxFbnZp
cm9ubWVudDoKKyAgICAvLyAgICAgWyBKU0xleGljYWxFbnZpcm9ubWVudCBdWyB2YXJpYWJsZSBz
bG90cyBdCisgICAgLy8KKyAgICAvLyBKU01vZHVsZUVudmlyb25tZW50OgorICAgIC8vICAgICBb
IEpTTGV4aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxlIHNsb3RzIF1bIGFkZGl0aW9uYWwgc2xv
dHMgZm9yIEpTTW9kdWxlRW52aXJvbm1lbnQgXQorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHJl
c3VsdCA9CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAgICAgICAg
YWxsb2NhdGVDZWxsPEpTTW9kdWxlRW52aXJvbm1lbnQ+KHZtLmhlYXAsIEpTTW9kdWxlRW52aXJv
bm1lbnQ6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSkpCisgICAgICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSk7CisgICAg
cmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1v
ZHVsZVJlY29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVl
KTsKKyAgICB0aGlzLT5tb2R1bGVSZWNvcmRTbG90KCkuc2V0KHZtLCB0aGlzLCBtb2R1bGVSZWNv
cmQpOworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBw
ZW5kVmFsdWVzKHRoaXNPYmplY3QtPnZhcmlhYmxlcygpLCB0aGlzT2JqZWN0LT5zeW1ib2xUYWJs
ZSgpLT5zY29wZVNpemUoKSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1vZHVs
ZVJlY29yZFNsb3QoKSk7Cit9CisKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU01vZHVsZUVudmlyb25t
ZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAg
ICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVz
b2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51
aWQoKSkpOworICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29s
dXRpb246OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIGlt
cG9ydGVkTW9kdWxlRW52aXJvbm1lbnQgPSByZXNvbHV0aW9uLm1vZHVsZVJlY29yZC0+bW9kdWxl
RW52aXJvbm1lbnQoKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHJlZGlyZWN0U2xvdChpbXBvcnRl
ZE1vZHVsZUVudmlyb25tZW50KTsKKyAgICAgICAgaWYgKGltcG9ydGVkTW9kdWxlRW52aXJvbm1l
bnQtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QoaW1wb3J0ZWRN
b2R1bGVFbnZpcm9ubWVudCwgZXhlYywgcHJvcGVydHlOYW1lLCByZWRpcmVjdFNsb3QpKSB7Cisg
ICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gcmVkaXJlY3RTbG90LmdldFZhbHVlKGV4ZWMsIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCByZWRpcmVjdFNsb3QuYXR0cmlidXRlcygpLCB2YWx1ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJv
cGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK3Zv
aWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzQXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2RlKQoreworICAgIEpTTW9kdWxlRW52aXJvbm1l
bnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAg
IGlmIChwcm9wZXJ0eU5hbWVzQXJyYXkuaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKSkgeworICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+
aW1wb3J0RW50cmllcygpKSB7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9
IHBhaXIudmFsdWU7CisgICAgICAgICAgICBpZiAoIWltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKGV4
ZWMtPnZtKCkpKQorICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNBcnJheS5hZGQoaW1wb3J0
RW50cnkubG9jYWxOYW1lKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gQmFzZTo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXNB
cnJheSwgbW9kZSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVu
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAg
Ly8gQWxsIGltcG9ydGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCisgICAgY29uc3QgYXV0byBy
ZXNvbHV0aW9uID0gdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBp
ZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpS
ZXNvbHZlZCkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKK30KKworYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
TW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICAvLyBBbGwgaW1wb3J0ZWQgYmluZGluZ3Mg
YXJlIGltbXV0YWJsZS4KKyAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5t
b2R1bGVSZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4
ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOworICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNN
b2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjllNWUxMmVlZmM1NDhiOWVlNmViZjMxM2ZhN2E4ZDRjNzE2OTE0ZjEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgK
QEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBKU01vZHVsZUVudmlyb25tZW50X2gKKyNkZWZpbmUgSlNNb2R1bGVF
bnZpcm9ubWVudF9oCisKKyNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1
ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBSZWdpc3Rl
cjsKKworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0xleGljYWxFbnZpcm9u
bWVudCB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworcHVibGljOgorICAgIHR5cGVkZWYgSlNMZXhpY2FsRW52aXJvbm1lbnQg
QmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXM7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVFbnZpcm9ubWVudCogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgSlNWYWx1ZSBpbml0aWFs
VmFsdWUsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVFbnZpcm9ubWVu
dCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSog
Y3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFsdWUgaW5pdGlhbFZh
bHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQorICAgIHsKKyAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm1vZHVsZUVudmlyb25tZW50U3RydWN0dXJl
KCk7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBz
eW1ib2xUYWJsZSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOworICAgIH0KKworICAgIERF
Q0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCksIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mTW9kdWxlUmVjb3JkKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRl
QmFycmllcjxKU01vZHVsZVJlY29yZD4pPihCYXNlOjphbGxvY2F0aW9uU2l6ZShzeW1ib2xUYWJs
ZSkpOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoU3ltYm9sVGFi
bGUqIHN5bWJvbFRhYmxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTW9kdWxlUmVj
b3JkKHN5bWJvbFRhYmxlKSArIHNpemVvZihXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+KTsK
KyAgICB9CisKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtb2R1bGVSZWNvcmRTbG90KCkuZ2V0KCk7CisgICAgfQorCisgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKworcHJp
dmF0ZToKKyAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSos
IFN5bWJvbFRhYmxlKik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNWYWx1ZSBp
bml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPEpT
TW9kdWxlUmVjb3JkPiYgbW9kdWxlUmVjb3JkU2xvdCgpCisgICAgeworICAgICAgICByZXR1cm4g
KmJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPEpTTW9kdWxlUmVjb3JkPio+KGJpdHdpc2Vf
Y2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZk1vZHVsZVJlY29yZChzeW1ib2xUYWJsZSgpKSk7
CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworfTsKKworaW5saW5lIEpTTW9kdWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxlRW52aXJv
bm1lbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogY3VycmVudFNjb3Bl
LCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGN1
cnJlbnRTY29wZSwgc3ltYm9sVGFibGUpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gSlNNb2R1bGVFbnZpcm9ubWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDQ2MDVlOTkxMGE2MzNiYTBjNDY5MWRhMTYxZWQ0OTNhNWI0NDk2MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LmNwcApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oIgorCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2lu
Y2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3ltYm9sSXRlcmF0b3IoRXhlY1N0YXRlKik7CisK
K2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6c19pbmZvID0geyAiTW9k
dWxlTmFtZXNwYWNlT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU01vZHVsZU5hbWVzcGFjZU9iamVjdCkgfTsKKworCitKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgSWRlbnRpZmllclNldCYgZXhwb3J0cykKKyAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSkKKyAgICAsIG1fZXhwb3J0cyhleHBvcnRzKQoreworfQorCit2b2lkIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBtX21v
ZHVsZVJlY29yZC5zZXQodm0sIHRoaXMsIG1vZHVsZVJlY29yZCk7CisgICAgSlNDX05BVElWRV9G
VU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgbW9kdWxlTmFtZXNwYWNl
T2JqZWN0U3ltYm9sSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKworICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNl
LWV4b3RpYy1vYmplY3RzLWdldHByb3RvdHlwZW9mCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWlu
dGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGlj
LW9iamVjdHMtc2V0cHJvdG90eXBlb2YtdgorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmpl
Y3RzLWlzZXh0ZW5zaWJsZQorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9y
Zy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXByZXZl
bnRleHRlbnNpb25zCisgICAgcHJldmVudEV4dGVuc2lvbnModm0pOworfQorCit2b2lkIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9i
amVjdCo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojp+
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QoKTsKK30KKwordm9pZCBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVj
b3JkKTsKK30KKworYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50
ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMt
b2JqZWN0cy1nZXRvd25wcm9wZXJ0eS1wCisKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworCisg
ICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworCisgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2V4cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1l
LnVpZCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSlNNb2R1bGVSZWNvcmQqIG1v
ZHVsZVJlY29yZCA9IHRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkLmdldCgpOworCisgICAgY29u
c3QgYXV0byByZXNvbHV0aW9uID0gbW9kdWxlUmVjb3JkLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIElk
ZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgQVNTRVJU
KHJlc29sdXRpb24udHlwZSAhPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6Tm90
Rm91bmQgJiYgcmVzb2x1dGlvbi50eXBlICE9IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpU
eXBlOjpBbWJpZ3VvdXMpOworICAgIEpTTW9kdWxlUmVjb3JkKiB0YXJnZXRNb2R1bGUgPSByZXNv
bHV0aW9uLm1vZHVsZVJlY29yZDsKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0YXJnZXRFbnZp
cm9ubWVudCA9IHRhcmdldE1vZHVsZS0+bW9kdWxlRW52aXJvbm1lbnQoKTsKKyAgICBQcm9wZXJ0
eVNsb3QgdHJhbXBvbGluZVNsb3QodGFyZ2V0RW52aXJvbm1lbnQpOworICAgIGlmICghdGFyZ2V0
RW52aXJvbm1lbnQtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3Qo
dGFyZ2V0RW52aXJvbm1lbnQsIGV4ZWMsIHJlc29sdXRpb24ubG9jYWxOYW1lLCB0cmFtcG9saW5l
U2xvdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTVmFsdWUgdmFsdWUgPSB0cmFt
cG9saW5lU2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIEFTU0VSVCghZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpOworICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgRG9udERl
bGV0ZSwgdmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3Rz
LXNldC1wLXYtcmVjZWl2ZXIKKyAgICByZXR1cm47Cit9CisKK2Jvb2wgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0
cy1kZWxldGUtcAorICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgcmV0dXJuICF0aGlzT2Jq
ZWN0LT5tX2V4cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKK30KKwordm9pZCBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMt
b3ducHJvcGVydHlrZXlzCisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIG5hbWUgOiB0aGlzT2JqZWN0LT5tX2V4cG9ydHMpCisgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKG5hbWUuZ2V0KCkpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30KKworYm9vbCBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eShKU09iamVj
dCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmpl
Y3RzLWRlZmluZW93bnByb3BlcnR5LXAtZGVzYworICAgIGlmIChzaG91bGRUaHJvdykKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmlu
ZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVz
cGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmlzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJ8dGhpc3wgc2hvdWxkIGJlIGFuIG9iamVjdCIpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVy
ZSgpLCBhc09iamVjdCh0aGlzVmFsdWUpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFkNzcyMTExNjlkZTA5NDA3ODZlZmFjYzY3ODRlZDdiMjlm
NmZiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3RfaAorI2RlZmluZSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCisKKyNpbmNsdWRlICJK
U0Rlc3RydWN0aWJsZU9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNNb2R1
bGVSZWNvcmQ7CisKK2NsYXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0IDogcHVibGljIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlk
ZXNHZXRQcm9wZXJ0eU5hbWVzOworCisgICAgc3RhdGljIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCwgY29uc3Qg
SWRlbnRpZmllclNldCYgZXhwb3J0cykKKyAgICB7CisgICAgICAgIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZU5hbWVz
cGFjZU9iamVjdD4oZXhlYy0+dm0oKS5oZWFwKSkgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QoZXhl
Yy0+dm0oKSwgc3RydWN0dXJlLCBleHBvcnRzKTsKKyAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbihleGVjLT52bSgpLCBnbG9iYWxPYmplY3QsIG1vZHVsZVJlY29yZCk7CisgICAgICAgIHJl
dHVybiBvYmplY3Q7CisgICAgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRU
aHJvdyk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1
bGVSZWNvcmQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dChWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpOworCitwcml2
YXRlOgorICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgSWRlbnRpZmllclNl
dCBtX2V4cG9ydHM7CisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlUmVjb3JkPiBtX21vZHVsZVJl
Y29yZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVSZWNvcmQuY3BwCmluZGV4IDVkMTVlYmMzNmM4NDIwZWY2ZWNkNTRlZTA1M2Q5YTMzMTVmNmFi
OGIuLmVlOTg0ZmViYzY1NWZhOGUzODQzNjg5MDY2OGE2Zjc3NWQ5MDhiMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTI2LDEw
ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3Jk
LmgiCiAKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNs
dWRlICJJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVk
ZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgogCkBAIC01OCw3ICs2MiwxMSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAg
SlNNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihjZWxs
KTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50KTsKKyAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpOworICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZXBlbmRlbmNpZXNNYXApOworICAgIHZp
c2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPm1fbGlua2VkTW9kdWxlcy5kYXRhKCksIHRo
aXNPYmplY3QtPm1fbGlua2VkTW9kdWxlcy5zaXplKCkpOwogfQogCiBhdXRvIEpTTW9kdWxlUmVj
b3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFt
ZSwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
RW50cnkmIHZhcmlhYmxlKSAtPiBFeHBvcnRFbnRyeQpAQCAtOTAsMTMgKzk4LDM0NyBAQCBKU01v
ZHVsZVJlY29yZCogSlNNb2R1bGVSZWNvcmQ6Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihw
YWlyLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ2YWx1ZSIpKSk7CiB9
CiAKLXZvaWQgSlNNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKikKK2F1dG8gSlNNb2R1bGVS
ZWNvcmQ6OnJlc29sdmVJbXBvcnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBs
b2NhbE5hbWUpIC0+IFJlc29sdXRpb24KIHsKKyAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9p
bXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lLmltcGwoKSk7CisgICAgaWYgKGl0ZXJhdG9yID09
IG1faW1wb3J0RW50cmllcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIFJlc29sdXRpb24geyBSZXNv
bHV0aW9uOjpUeXBlOjpOb3RGb3VuZCwgdGhpcywgSWRlbnRpZmllcigpIH07CisKKyAgICBjb25z
dCBhdXRvJiBpbXBvcnRFbnRyeSA9IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoaW1wb3J0RW50
cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsg
UmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQsIHRoaXMsIElkZW50aWZpZXIoKSB9OworCisgICAg
SlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVs
ZShleGVjLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KTsKKyAgICByZXR1cm4gaW1wb3J0ZWRN
b2R1bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7Cit9CisK
K3N0cnVjdCBSZXNvbHZlUXVlcnkgeworICAgIFJlc29sdmVRdWVyeShKU01vZHVsZVJlY29yZCog
bW9kdWxlUmVjb3JkLCBVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkKKyAgICAgICAgOiBt
b2R1bGVSZWNvcmQobW9kdWxlUmVjb3JkKQorICAgICAgICAsIGV4cG9ydE5hbWUoZXhwb3J0TmFt
ZSkKKyAgICB7CisgICAgfQorCisgICAgUmVzb2x2ZVF1ZXJ5KEpTTW9kdWxlUmVjb3JkKiBtb2R1
bGVSZWNvcmQsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpCisgICAgICAgIDogUmVzb2x2
ZVF1ZXJ5KG1vZHVsZVJlY29yZCwgZXhwb3J0TmFtZS5pbXBsKCkpCisgICAgeworICAgIH0KKwor
ICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7IEVtcHR5VmFsdWUgfTsKKyAgICBSZXNvbHZlUXVlcnko
RW1wdHlWYWx1ZVRhZykKKyAgICB7CisgICAgfQorCisgICAgZW51bSBEZWxldGVkVmFsdWVUYWcg
eyBEZWxldGVkVmFsdWUgfTsKKyAgICBSZXNvbHZlUXVlcnkoRGVsZXRlZFZhbHVlVGFnKQorICAg
ICAgICA6IG1vZHVsZVJlY29yZChudWxscHRyKQorICAgICAgICAsIGV4cG9ydE5hbWUoV1RGOjpI
YXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eVZh
bHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhZXhwb3J0TmFtZTsKKyAgICB9CisK
KyAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBl
eHBvcnROYW1lLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CisgICAgfQorCisgICAgLy8gVGhl
IG1vZHVsZSByZWNvcmQgaXMgbm90IG1hcmtlZCBmcm9tIHRoZSBHQy4gQnV0IHRoZXNlIHJlY29y
ZHMgYXJlIHJlYWNoYWJsZSBmcm9tIHRoZSBKU0dsb2JhbE9iamVjdC4KKyAgICAvLyBTbyB3ZSBk
b24ndCBjYXJlIHRoZSByZWFjaGFiaWxpdHkgdG8gdGhpcyByZWNvcmQuCisgICAgSlNNb2R1bGVS
ZWNvcmQqIG1vZHVsZVJlY29yZDsKKyAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGV4cG9y
dE5hbWU7Cit9OworCitzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5SGFzaCB7CisgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgUmVzb2x2ZVF1ZXJ5Jik7CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgUmVzb2x2ZVF1ZXJ5JiwgY29uc3QgUmVzb2x2ZVF1ZXJ5Jik7CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKworaW5saW5l
IHVuc2lnbmVkIFJlc29sdmVRdWVyeUhhc2g6Omhhc2goY29uc3QgUmVzb2x2ZVF1ZXJ5JiBxdWVy
eSkKK3sKKyAgICByZXR1cm4gV1RGOjpQdHJIYXNoPEpTTW9kdWxlUmVjb3JkKj46Omhhc2gocXVl
cnkubW9kdWxlUmVjb3JkKSArIElkZW50aWZpZXJSZXBIYXNoOjpoYXNoKHF1ZXJ5LmV4cG9ydE5h
bWUpOworfQorCitpbmxpbmUgYm9vbCBSZXNvbHZlUXVlcnlIYXNoOjplcXVhbChjb25zdCBSZXNv
bHZlUXVlcnkmIGxocywgY29uc3QgUmVzb2x2ZVF1ZXJ5JiByaHMpCit7CisgICAgcmV0dXJuIGxo
cy5tb2R1bGVSZWNvcmQgPT0gcmhzLm1vZHVsZVJlY29yZCAmJiBsaHMuZXhwb3J0TmFtZSA9PSBy
aHMuZXhwb3J0TmFtZTsKK30KKworc3RhdGljIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJl
c29sdmVFeHBvcnRMb29wKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgUmVzb2x2ZVF1ZXJ5JiByb290
KQoreworICAgIHR5cGVkZWYgV1RGOjpIYXNoU2V0PFJlc29sdmVRdWVyeSwgUmVzb2x2ZVF1ZXJ5
SGFzaCwgV1RGOjpDdXN0b21IYXNoVHJhaXRzPFJlc29sdmVRdWVyeT4+IFJlc29sdmVTZXQ7Cisg
ICAgdXNpbmcgUmVzb2x1dGlvbiA9IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOworCisgICAg
ZW51bSBjbGFzcyBUeXBlIHsgU2VudGluZWwsIE5vbmUgfTsKKyAgICBzdHJ1Y3QgVGFzayB7Cisg
ICAgICAgIFJlc29sdmVRdWVyeSBxdWVyeTsKKyAgICAgICAgVHlwZSB0eXBlOworICAgIH07CisK
KyAgICBWZWN0b3I8VGFzaywgOD4gcGVuZGluZ1Rhc2tzOworICAgIFJlc29sdmVTZXQgcmVzb2x2
ZVNldDsKKyAgICBIYXNoU2V0PEpTTW9kdWxlUmVjb3JkKj4gc3RhclNldDsKKworICAgIGF1dG8g
cmVzdWx0ID0gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kLCBudWxscHRy
LCBJZGVudGlmaWVyKCkgfTsKKworICAgIGF1dG8gcmVzb2x2ZU5vbkxvY2FsID0gWyZdKGNvbnN0
IFJlc29sdmVRdWVyeSYgcXVlcnkpIC0+IGJvb2wgeworICAgICAgICBpZiAocXVlcnkuZXhwb3J0
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQuaW1wbCgpKSB7Cisg
ICAgICAgICAgICByZXN1bHQgPSBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3Is
IHF1ZXJ5Lm1vZHVsZVJlY29yZCwgSWRlbnRpZmllcigpIH07CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc3RhclNldC5hZGQocXVlcnkubW9kdWxl
UmVjb3JkKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGZvciAoY29uc3QgYXV0byYgc3Rhck1vZHVsZU5hbWUgOiBxdWVyeS5tb2R1bGVSZWNvcmQtPnN0
YXJFeHBvcnRFbnRyaWVzKCkpIHsKKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRl
ZE1vZHVsZVJlY29yZCA9IHF1ZXJ5Lm1vZHVsZVJlY29yZC0+aG9zdFJlc29sdmVJbXBvcnRlZE1v
ZHVsZShleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHN0YXJNb2R1bGVOYW1lLmdldCgp
KSk7CisgICAgICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyBSZXNvbHZlUXVlcnko
aW1wb3J0ZWRNb2R1bGVSZWNvcmQsIHF1ZXJ5LmV4cG9ydE5hbWUuZ2V0KCkpLCBUeXBlOjpOb25l
IH0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgcGVu
ZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgcm9vdCwgVHlwZTo6Tm9uZSB9KTsKKyAgICB3aGlsZSAo
IXBlbmRpbmdUYXNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29uc3QgYXV0byB0YXNrID0gcGVu
ZGluZ1Rhc2tzLnRha2VMYXN0KCk7CisKKyAgICAgICAgaWYgKHRhc2sudHlwZSA9PSBUeXBlOjpO
b25lKSB7CisgICAgICAgICAgICBjb25zdCBSZXNvbHZlUXVlcnkmIHF1ZXJ5ID0gdGFzay5xdWVy
eTsKKyAgICAgICAgICAgIGlmICghcmVzb2x2ZVNldC5hZGQodGFzay5xdWVyeSkuaXNOZXdFbnRy
eSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgSlNNb2R1bGVSZWNv
cmQqIG1vZHVsZVJlY29yZCA9IHF1ZXJ5Lm1vZHVsZVJlY29yZDsKKyAgICAgICAgICAgIGNvbnN0
IGF1dG8gaXRlcmF0b3IgPSBtb2R1bGVSZWNvcmQtPmV4cG9ydEVudHJpZXMoKS5maW5kKHF1ZXJ5
LmV4cG9ydE5hbWUpOworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1vZHVsZVJlY29yZC0+
ZXhwb3J0RW50cmllcygpLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMg
bm8gbWF0Y2hlZCBleHBvcnRlZCBiaW5kaW5nIGluIHRoZSBjdXJyZW50IG1vZHVsZSwKKyAgICAg
ICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGxvb2sgaW50byB0aGUgc3RhcnMuCisgICAgICAgICAg
ICAgICAgaWYgKHJlc29sdmVOb25Mb2NhbCh0YXNrLnF1ZXJ5KSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBpdGVyYXRvci0+dmFs
dWU7CisgICAgICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAgICAgICAgICAg
IGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAgICAgICAg
ICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6Cisg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZv
dW5kKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFJlc29sdXRpb24geyBSZXNvbHV0
aW9uOjpUeXBlOjpSZXNvbHZlZCwgbW9kdWxlUmVjb3JkLCBleHBvcnRFbnRyeS5sb2NhbE5hbWUg
fTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5tb2R1bGVSZWNvcmQgIT0gcXVlcnkubW9kdWxlUmVj
b3JkIHx8IHJlc3VsdC5sb2NhbE5hbWUgIT0gZXhwb3J0RW50cnkubG9jYWxOYW1lKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6OkFtYmln
dW91cywgbW9kdWxlUmVjb3JkLCBJZGVudGlmaWVyKCkgfTsKKworICAgICAgICAgICAgICAgIC8v
IFNhbWUgdmFsdWUgY2FzZS4KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0OiB7Cisg
ICAgICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlUmVjb3JkID0gbW9k
dWxlUmVjb3JkLT5ob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGV4cG9ydEVudHJ5Lm1v
ZHVsZU5hbWUpOworCisgICAgICAgICAgICAgICAgLy8gV2hlbiB0aGUgaW1wb3J0ZWQgbW9kdWxl
IGRvZXMgbm90IHByb2R1Y2UgYW55IHJlc29sdmVkIGJpbmRpbmcsIHdlIG5lZWQgdG8gbG9vayBp
bnRvIHRoZSBzdGFycyBpbiB0aGUgKmN1cnJlbnQqCisgICAgICAgICAgICAgICAgLy8gbW9kdWxl
LiBUbyBkbyB0aGlzLCB3ZSBhcHBlbmQgdGhlIGBTZW50aW5lbGAgdGFzayB0byB0aGUgdGFzayBx
dWV1ZS4KKyAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBgU2VudGluZWxgIHRhc2sgaXMgcG9w
ZWQgYW5kIHN0aWxsIHRoZSByZXF1ZXN0IGlzIG5vdCByZXNvbHZlZCwgd2Ugd2lsbCBsb29rIGlu
dG8gdGhlIHN0YXJzLgorICAgICAgICAgICAgICAgIHBlbmRpbmdUYXNrcy5hcHBlbmQoVGFzayB7
IHF1ZXJ5LCBUeXBlOjpTZW50aW5lbCB9KTsKKyAgICAgICAgICAgICAgICBwZW5kaW5nVGFza3Mu
YXBwZW5kKFRhc2sgeyBSZXNvbHZlUXVlcnkoaW1wb3J0ZWRNb2R1bGVSZWNvcmQsIGV4cG9ydEVu
dHJ5LmltcG9ydE5hbWUpLCBUeXBlOjpOb25lIH0pOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaWYgKHJlc3VsdC50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKSB7Cisg
ICAgICAgICAgICAgICAgLy8gSW5kaXJlY3QgZXhwb3J0IGVudHJ5IGRvZXMgbm90IHByb2R1Y2Ug
YW55IHJlc29sdmVkIGJpbmRpbmcuCisgICAgICAgICAgICAgICAgLy8gU28gd2Ugd2lsbCBpbnZl
c3RpZ2F0ZSB0aGUgc3RhcnMuCisgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVOb25Mb2NhbCh0
YXNrLnF1ZXJ5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2F1dG8g
SlNNb2R1bGVSZWNvcmQ6OnJlc29sdmVFeHBvcnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBleHBvcnROYW1lKSAtPiBSZXNvbHV0aW9uCit7CisgICAgcmV0dXJuIHJlc29sdmVF
eHBvcnRMb29wKGV4ZWMsIFJlc29sdmVRdWVyeSh0aGlzLCBleHBvcnROYW1lLmltcGwoKSkpOwor
fQorCitzdGF0aWMgdm9pZCBnZXRFeHBvcnRlZE5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNNb2R1
bGVSZWNvcmQqIHJvb3QsIElkZW50aWZpZXJTZXQmIGV4cG9ydGVkTmFtZXMpCit7CisgICAgSGFz
aFNldDxKU01vZHVsZVJlY29yZCo+IGV4cG9ydFN0YXJTZXQ7CisgICAgVmVjdG9yPEpTTW9kdWxl
UmVjb3JkKiwgOD4gcGVuZGluZ01vZHVsZXM7CisKKyAgICBwZW5kaW5nTW9kdWxlcy5hcHBlbmQo
cm9vdCk7CisKKyAgICB3aGlsZSAoIXBlbmRpbmdNb2R1bGVzLmlzRW1wdHkoKSkgeworICAgICAg
ICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gcGVuZGluZ01vZHVsZXMudGFrZUxhc3Qo
KTsKKyAgICAgICAgaWYgKGV4cG9ydFN0YXJTZXQuY29udGFpbnMobW9kdWxlUmVjb3JkKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBleHBvcnRTdGFyU2V0LmFkZChtb2R1bGVSZWNv
cmQpOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1vZHVsZVJlY29yZC0+ZXhw
b3J0RW50cmllcygpKSB7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBleHBvcnRFbnRyeSA9IHBh
aXIudmFsdWU7CisgICAgICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAgICAg
ICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAg
ICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVj
dDoKKyAgICAgICAgICAgICAgICBpZiAobW9kdWxlUmVjb3JkID09IHJvb3QgfHwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmRlZmF1bHRLZXl3b3JkICE9IGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpCisg
ICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkTmFtZXMuYWRkKGV4cG9ydEVudHJ5LmV4cG9ydE5h
bWUuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBK
U01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAoY29u
c3QgYXV0byYgc3Rhck1vZHVsZU5hbWUgOiBtb2R1bGVSZWNvcmQtPnN0YXJFeHBvcnRFbnRyaWVz
KCkpIHsKKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiByZXF1ZXN0ZWRNb2R1bGVSZWNvcmQg
PSBtb2R1bGVSZWNvcmQtPmhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVVpZChleGVjLCBzdGFyTW9kdWxlTmFtZS5nZXQoKSkpOworICAgICAgICAgICAgcGVu
ZGluZ01vZHVsZXMuYXBwZW5kKHJlcXVlc3RlZE1vZHVsZVJlY29yZCk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJlY29yZDo6Z2V0TW9k
dWxlTmFtZXNwYWNlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAobV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3QpCisgICAgICAgIHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5nZXQoKTsK
KworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7CisgICAgSWRlbnRpZmllclNldCBleHBvcnRlZE5hbWVzOworICAgIGdldEV4cG9y
dGVkTmFtZXMoZXhlYywgdGhpcywgZXhwb3J0ZWROYW1lcyk7CisKKyAgICBJZGVudGlmaWVyU2V0
IHVuYW1iaWd1b3VzTmFtZXM7CisgICAgZm9yIChjb25zdCBhdXRvJiBuYW1lIDogZXhwb3J0ZWRO
YW1lcykgeworICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgbmFtZS5nZXQoKSkpOworICAgICAgICBzd2l0
Y2ggKHJlc29sdXRpb24udHlwZSkgeworICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6Ok5v
dEZvdW5kOgorICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9yOgorICAgICAgICAg
ICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKKyAgICAg
ICAgICAgIHVuYW1iaWd1b3VzTmFtZXMuYWRkKG5hbWUpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQoZXhlYy0+
dm0oKSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZShleGVjLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCksIHRo
aXMsIHVuYW1iaWd1b3VzTmFtZXMpKTsKKyAgICByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuZ2V0KCk7Cit9CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBzb3VyY2VDb2RlKCksIHRoaXMpOworICAgIGlm
ICghZXhlY3V0YWJsZSkgeworICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGluc3RhbnRpYXRlRGVjbGFyYXRpb25zKGV4ZWMsIGV4ZWN1
dGFibGUpOworfQorCitzaXplX3QgSlNNb2R1bGVSZWNvcmQ6OmxpbmtNb2R1bGUoRXhlY1N0YXRl
KiBleGVjLCBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWQpCit7CisgICAgc2l6ZV90IGNhbmRpZGF0
ZUluZGV4ID0gbV9saW5rZWRNb2R1bGVzLnNpemUoKTsKKyAgICBjb25zdCBhdXRvIGFkZFJlc3Vs
dCA9IG1fbGlua2VkTW9kdWxlTWFwLmFkZChpbXBvcnRlZC0+bW9kdWxlRW52aXJvbm1lbnQoKSwg
Y2FuZGlkYXRlSW5kZXgpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAg
ICBtX2xpbmtlZE1vZHVsZXMuYXBwZW5kKFdyaXRlQmFycmllcjxVbmtub3duPigpKTsKKyAgICAg
ICAgbV9saW5rZWRNb2R1bGVzLmxhc3QoKS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgaW1wb3J0ZWQp
OworICAgICAgICByZXR1cm4gY2FuZGlkYXRlSW5kZXg7CisgICAgfQorICAgIHJldHVybiBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
KiBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkKK3sKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpOworICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xU
YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpOworICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRl
KGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBzeW1ib2xUYWJsZSwganNURFpWYWx1ZSgpLCB0aGlzKTsKKworICAgIC8v
IEluaXRpYWxpemUgbm9uLWxleGljYWwgdmFyaWFibGVzIHdpdGggdW5kZWZpbmVkLgorICAgIGZv
ciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiBtX2RlY2xhcmVkVmFyaWFibGVzKSB7CisgICAgICAg
IGNvbnN0IGF1dG8mIGVudHJ5ID0gc3ltYm9sVGFibGUtPmdldCh2YXJpYWJsZS5rZXkuZ2V0KCkp
OworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7CisgICAgICAg
IGlmICghb2Zmc2V0LmlzU3RhY2soKSkKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0KG1vZHVs
ZUVudmlyb25tZW50LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlhYmxlLmtl
eS5nZXQoKSksIGpzVW5kZWZpbmVkKCksIGZhbHNlKTsKKyAgICB9CisKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworCisgICAgLy8gSW5pdGlhbGl6ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCisg
ICAgZm9yIChzaXplX3QgaSA9IDAsIG51bWJlck9mRnVuY3Rpb25zID0gdW5saW5rZWRDb2RlQmxv
Y2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyBpIDwgbnVtYmVyT2ZGdW5jdGlvbnM7ICsraSkg
eworICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOworICAgICAgICBj
b25zdCBhdXRvJiBlbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQodW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUtPm5hbWUoKS5pbXBsKCkpOworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnku
dmFyT2Zmc2V0KCk7CisgICAgICAgIGlmICghb2Zmc2V0LmlzU3RhY2soKSkgeworICAgICAgICAg
ICAgQVNTRVJUKCF1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLmlzRW1wdHkoKSk7
CisgICAgICAgICAgICBpZiAodm0udHlwZVByb2ZpbGVyKCkgfHwgdm0uY29udHJvbEZsb3dQcm9m
aWxlcigpKSB7CisgICAgICAgICAgICAgICAgdm0uZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCkt
Pmluc2VydFVuZXhlY3V0ZWRSYW5nZShtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291cmNlSUQo
KSwKKyAgICAgICAgICAgICAgICAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPnR5cGVQ
cm9maWxpbmdTdGFydE9mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bGluayh2bSwgbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUtPnNvdXJjZSgpKSwgbW9kdWxlRW52aXJvbm1lbnQpOworICAgICAgICAgICAgc3ltYm9s
VGFibGVQdXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLT5uYW1lKCksIGZ1bmN0aW9uLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3Qg
YXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBpZiAoZXhwb3J0RW50cnku
dHlwZSA9PSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0KSB7Cisg
ICAgICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4ZWMsIGV4
cG9ydEVudHJ5LmV4cG9ydE5hbWUpOworICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5
cGUpIHsKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAg
ICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgY2FzZSBS
ZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhF
cnJvcihleGVjKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2Ug
UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2lt
cG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBwYWlyLnZh
bHVlOworICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVzb2x2
ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOworICAgICAg
ICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpIHsKKyAgICAgICAgICAg
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBuYW1lc3BhY2VPYmplY3QgPSBpbXBvcnRlZE1vZHVs
ZS0+Z2V0TW9kdWxlTmFtZXNwYWNlKGV4ZWMpOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAgU3lt
Ym9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlLT5pbmxpbmVHZXQobG9ja2VyLCBpbXBv
cnRFbnRyeS5sb2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAgIFNjb3BlT2Zmc2V0IG9mZnNl
dCA9IGVudHJ5LnNjb3BlT2Zmc2V0KCk7CisgICAgICAgICAgICBBU1NFUlQobW9kdWxlRW52aXJv
bm1lbnQtPmlzVmFsaWQob2Zmc2V0KSk7CisgICAgICAgICAgICBtb2R1bGVFbnZpcm9ubWVudC0+
dmFyaWFibGVBdChvZmZzZXQpLnNldChleGVjLT52bSgpLCBtb2R1bGVFbnZpcm9ubWVudCwgbmFt
ZXNwYWNlT2JqZWN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8g
cmVzb2x1dGlvbiA9IGltcG9ydGVkTW9kdWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGltcG9ydEVu
dHJ5LmltcG9ydE5hbWUpOworICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsK
KyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAg
ICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgIGNhc2UgUmVz
b2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihl
eGVjKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1
dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX21vZHVsZUVudmlyb25tZW50LnNldChleGVj
LT52bSgpLCB0aGlzLCBtb2R1bGVFbnZpcm9ubWVudCk7CisgICAgbV9tb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOwog
fQogCi1KU1ZhbHVlIEpTTW9kdWxlUmVjb3JkOjpleGVjdXRlKEV4ZWNTdGF0ZSopCitKU1ZhbHVl
IEpTTW9kdWxlUmVjb3JkOjpleGVjdXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICBpZiAoIW1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpCisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlYy0+aW50
ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmdldCgpLCBleGVj
LCBtX21vZHVsZUVudmlyb25tZW50LmdldCgpKTsKKyAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRh
YmxlLmNsZWFyKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIFN0cmluZyBwcmlu
dGFibGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHVpZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4IDkzNjI2M2Nj
ZjMxMjlkYTk1ZTMxZTkxYTIxOTQwZGQwYTk1NTI2NDUuLjY2Y2JlZTFlZTFhZjQ0OGQwMzA1OTIx
YzhhMGJhMDE2NzZiNjU0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuaApAQCAtMTA3LDE2ICsxMDcsMzkgQEAgY2xhc3MgSlNNb2R1bGVSZWNv
cmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIGNvbnN0IE9yZGVyZWRJZGVu
dGlmaWVyU2V0JiByZXF1ZXN0ZWRNb2R1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRN
b2R1bGVzOyB9CiAgICAgY29uc3QgRXhwb3J0TWFwJiBleHBvcnRFbnRyaWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9leHBvcnRFbnRyaWVzOyB9CiAgICAgY29uc3QgSW1wb3J0TWFwJiBpbXBvcnRFbnRy
aWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRFbnRyaWVzOyB9CisgICAgY29uc3QgSWRlbnRp
ZmllclNldCYgc3RhckV4cG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXJFeHBvcnRF
bnRyaWVzOyB9CiAKICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlh
YmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVjbGFyZWRWYXJpYWJsZXM7IH0KICAgICBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9s
ZXhpY2FsVmFyaWFibGVzOyB9CiAKICAgICB2b2lkIGR1bXAoKTsKIAorICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21v
ZHVsZUVudmlyb25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0
KCk7CisgICAgfQogCiAgICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSopOwogICAgIEpTVmFsdWUgZXhl
Y3V0ZShFeGVjU3RhdGUqKTsKIAorICAgIHN0cnVjdCBSZXNvbHV0aW9uIHsKKyAgICAgICAgZW51
bSBjbGFzcyBUeXBlIHsgUmVzb2x2ZWQsIE5vdEZvdW5kLCBBbWJpZ3VvdXMsIEVycm9yIH07CisK
KyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3Jk
OworICAgICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKKyAgICB9OworCisgICAgUmVzb2x1dGlv
biByZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUp
OworICAgIFJlc29sdXRpb24gcmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBsb2NhbE5hbWUpOworCisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZS5nZXQoKTsgfQorCisgICAgc2l6ZV90IGxpbmtNb2R1bGUoRXhlY1N0YXRlKiwgSlNNb2R1bGVS
ZWNvcmQqIGltcG9ydGVkKTsKKworICAgIEpTTW9kdWxlUmVjb3JkKiBob3N0UmVzb2x2ZUltcG9y
dGVkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOworCiBw
cml2YXRlOgogICAgIEpTTW9kdWxlUmVjb3JkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29k
ZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCiAgICAgICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQpAQCAtMTI5LDEwICsxNTIsMTIgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBw
dWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYpOwogCisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIGdldE1vZHVsZU5hbWVzcGFjZShF
eGVjU3RhdGUqKTsKKwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgSlNN
b2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisgICAgdm9pZCBpbnN0YW50aWF0ZURlY2xhcmF0aW9u
cyhFeGVjU3RhdGUqLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSopOwogCiAgICAgLy8gVGhlIGxv
YWRlciByZXNvbHZlcyB0aGUgZ2l2ZW4gbW9kdWxlIG5hbWUgdG8gdGhlIG1vZHVsZSBrZXkuIFRo
ZSBtb2R1bGUga2V5IGlzIHRoZSB1bmlxdWUgdmFsdWUgdG8gcmVwcmVzZW50IHRoaXMgbW9kdWxl
LgogICAgIElkZW50aWZpZXIgbV9tb2R1bGVLZXk7CkBAIC0xNTQsNyArMTc5LDE0IEBAIGNsYXNz
IEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICAvLyBo
dHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxl
ZXZhbHVhdGlvbgogICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxlczsK
IAorICAgIFdyaXRlQmFycmllcjxKU01vZHVsZUVudmlyb25tZW50PiBtX21vZHVsZUVudmlyb25t
ZW50OworICAgIFdyaXRlQmFycmllcjxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4gbV9tb2R1bGVO
YW1lc3BhY2VPYmplY3Q7CisgICAgV3JpdGVCYXJyaWVyPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
PiBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxKU01hcD4gbV9k
ZXBlbmRlbmNpZXNNYXA7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8SlNNb2R1bGVFbnZpcm9ubWVu
dCosIHNpemVfdD4gTGlua2VkTW9kdWxlTWFwOworICAgIExpbmtlZE1vZHVsZU1hcCBtX2xpbmtl
ZE1vZHVsZU1hcDsKKyAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiBtX2xpbmtlZE1v
ZHVsZXM7CiB9OwogCiBpbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVk
TW9kdWxlKGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IGJiMmVmZGQwNjMxY2QxOGVhOTc1NDI2NzRhMmNl
NzE4MTUwNzJjOGYuLjBiZWMwZDg2MWE3NDhkZDc4MDU0ZWU5ZjI5M2FjYjllMmIzMmMxZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC0yOCw2ICsyOCw4
IEBACiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVu
dmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUg
IkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAKQEAgLTY1LDYgKzY3LDIxIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0
cmFjdEFjY2VzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJZGVudGlm
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChKU01v
ZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1
bGVFbnZpcm9ubWVudCo+KHNjb3BlKSkgeworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1v
ZHVsZVJlY29yZCA9IG1vZHVsZUVudmlyb25tZW50LT5tb2R1bGVSZWNvcmQoKTsKKyAgICAgICAg
ICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+cmVzb2x2ZUltcG9ydChl
eGVjLCBpZGVudCk7CisgICAgICAgICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxl
UmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgeworICAgICAgICAgICAgICAgIEpT
TW9kdWxlUmVjb3JkKiBpbXBvcnRlZFJlY29yZCA9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkOwor
ICAgICAgICAgICAgICAgIG1vZHVsZVJlY29yZC0+bGlua01vZHVsZShleGVjLCBpbXBvcnRlZFJl
Y29yZCk7CisgICAgICAgICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogaW1wb3J0ZWRFbnZp
cm9ubWVudCA9IGltcG9ydGVkUmVjb3JkLT5tb2R1bGVFbnZpcm9ubWVudCgpOworICAgICAgICAg
ICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBpbXBvcnRlZEVudmlyb25tZW50LT5zeW1i
b2xUYWJsZSgpLT5nZXQocmVzb2x1dGlvbi5sb2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKKyAgICAgICAgICAgICAgICAvLyBNb2R1bGUg
ZXhlY3V0aW9uIGlzIGFsd2F5cyBkb25lIHVuZGVyIHRoZSBzdHJpY3QgbW9kZS4gU28gdGhlcmUg
aXMgbm8gd2F5IHRvIGluamVjdCB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgb3AgPSBSZXNv
bHZlT3AoTW9kdWxlVmFyLCBkZXB0aCwgMCwgaW1wb3J0ZWRFbnZpcm9ubWVudCwgZW50cnkud2F0
Y2hwb2ludFNldCgpLCBlbnRyeS5zY29wZU9mZnNldCgpLm9mZnNldCgpLCByZXNvbHV0aW9uLmxv
Y2FsTmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKICAgICAgICAgaWYgKGxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9s
VGFibGUoKS0+dXNlc05vblN0cmljdEV2YWwoKSkKICAgICAgICAgICAgIG5lZWRzVmFySW5qZWN0
aW9uQ2hlY2tzID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMyLDYgKzI0OSw3
IEBAIGNvbnN0IGNoYXIqIHJlc29sdmVUeXBlTmFtZShSZXNvbHZlVHlwZSB0eXBlKQogICAgICAg
ICAiR2xvYmFsVmFyIiwKICAgICAgICAgIkNsb3N1cmVWYXIiLAogICAgICAgICAiTG9jYWxDbG9z
dXJlVmFyIiwKKyAgICAgICAgIk1vZHVsZVZhciIsCiAgICAgICAgICJHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3MiLAogICAgICAgICAiR2xvYmFsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcyIsCiAgICAgICAgICJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKaW5kZXggYTY1MzE2NzQ5MGY2ODIy
M2Y1MTFkZDI4OTA4OTI5ZmM0NmExOTczYy4uMDI2YTI3MTRkYzhkOTIyYTk4Mjg4NWU1NDZiNTc4
YmE5NjM0ODBhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
Y29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAt
NDUsNiArNDUsNyBAQCBlbnVtIFJlc29sdmVUeXBlIHsKICAgICBHbG9iYWxWYXIsCiAgICAgQ2xv
c3VyZVZhciwKICAgICBMb2NhbENsb3N1cmVWYXIsCisgICAgTW9kdWxlVmFyLAogCiAgICAgLy8g
RGl0dG8sIGJ1dCBhdCBsZWFzdCBvbmUgaW50ZXJ2ZW5pbmcgc2NvcGUgdXNlZCBub24tc3RyaWN0
IGV2YWwsIHdoaWNoCiAgICAgLy8gY2FuIGluamVjdCBhbiBpbnRlcmNlcHRpbmcgdmFyIGRlbGNh
cmF0aW9uIGF0IHJ1bnRpbWUuCkBAIC03Miw2ICs3Myw3IEBAIGlubGluZSBSZXNvbHZlVHlwZSBt
YWtlVHlwZShSZXNvbHZlVHlwZSB0eXBlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQog
ICAgIGNhc2UgQ2xvc3VyZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAg
cmV0dXJuIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOworICAgIGNhc2UgTW9kdWxl
VmFyOgogICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAg
IGNhc2UgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIENsb3N1cmVW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgpAQCAtOTAsNiArOTIsNyBAQCBpbmxpbmUgYm9vbCBu
ZWVkc1ZhckluamVjdGlvbkNoZWNrcyhSZXNvbHZlVHlwZSB0eXBlKQogICAgIGNhc2UgR2xvYmFs
VmFyOgogICAgIGNhc2UgQ2xvc3VyZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKKyAg
ICBjYXNlIE1vZHVsZVZhcjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgR2xvYmFs
UHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgR2xvYmFsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrczoKQEAgLTEwMywxMyArMTA2LDE0IEBAIGlubGluZSBib29sIG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKFJlc29sdmVUeXBlIHR5cGUpCiB9CiAKIHN0cnVjdCBSZXNvbHZl
T3AgewotICAgIFJlc29sdmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50
LCBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0LCB1aW50cHRyX3Qgb3BlcmFuZCkKKyAgICBS
ZXNvbHZlT3AoUmVzb2x2ZVR5cGUgdHlwZSwgc2l6ZV90IGRlcHRoLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCwgV2F0Y2hwb2lu
dFNldCogd2F0Y2hwb2ludFNldCwgdWludHB0cl90IG9wZXJhbmQsIFVuaXF1ZWRTdHJpbmdJbXBs
KiBpbXBvcnRlZE5hbWUgPSBudWxscHRyKQogICAgICAgICA6IHR5cGUodHlwZSkKICAgICAgICAg
LCBkZXB0aChkZXB0aCkKICAgICAgICAgLCBzdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICAgICAs
IGxleGljYWxFbnZpcm9ubWVudChsZXhpY2FsRW52aXJvbm1lbnQpCiAgICAgICAgICwgd2F0Y2hw
b2ludFNldCh3YXRjaHBvaW50U2V0KQogICAgICAgICAsIG9wZXJhbmQob3BlcmFuZCkKKyAgICAg
ICAgLCBpbXBvcnRlZE5hbWUoaW1wb3J0ZWROYW1lKQogICAgIHsKICAgICB9CiAKQEAgLTExOSw2
ICsxMjMsNyBAQCBzdHJ1Y3QgUmVzb2x2ZU9wIHsKICAgICBKU0xleGljYWxFbnZpcm9ubWVudCog
bGV4aWNhbEVudmlyb25tZW50OwogICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQ7CiAg
ICAgdWludHB0cl90IG9wZXJhbmQ7CisgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBpbXBv
cnRlZE5hbWU7CiB9OwogCiBjbGFzcyBSZXNvbHZlTW9kZUFuZFR5cGUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCA0MDMyNmNlMGYzMjlmYTdjN2JiYzk5ZjQ0NjQy
OGZlOTZjOTEyNGIzLi5mY2UwNjFkMWY4ZDYxZGFiMDYzNjBhZThkN2FhNDQ4ZjJmMThjNzk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtNDEsMTAgKzQxLDEyIEBA
IGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAKICAgICBFdmFsRXhlY3V0YWJsZVR5cGUsCiAgICAg
UHJvZ3JhbUV4ZWN1dGFibGVUeXBlLAorICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZSwK
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlLAogCiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVUeXBlLAogICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1R5cGUsCisgICAgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrVHlwZSwKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2tU
eXBlLAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tUeXBlLAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAppbmRleCBl
NjdmYTM4NWJmZjc3MWM0ZTNkOGEyZDc5MTE3YjEzYTU3MjM4ZWExLi42ZTZmOWY5YTZkYTYxODEy
ZTNjMjFhZDQzNjZmZDg3YjdjZDE0N2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNl
RGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJv
bm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIk1vZHVsZUFu
YWx5emVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTI3NCw2ICsyNzUsOSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9u
SW5zdGFudGlhdGlvbihFeAogICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2xpbmtdICIsIG1vZHVs
ZVJlY29yZC0+bW9kdWxlS2V5KCksICJcbiIpOwogCiAgICAgbW9kdWxlUmVjb3JkLT5saW5rKGV4
ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRQcm90b3R5cGUuY3BwCmluZGV4IGU4M2UzODMyNThmOTliYjA1YmJlMTFlMGM2NWRlMDRiOGUw
NDllMGEuLjRjNDNjNmFmZjJmNjdmZjM1NzU3M2FlY2EyZGY0M2JkMzcxMTNiNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgog
CisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ2FsbC5oIgogI2lu
Y2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpAQCAtNjUsNiAr
NjYsMTAgQEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmhhcywgc2V0UHJvdG9GdW5jSGFzLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05B
VElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBzZXRQcm90b0Z1bmNFbnRy
aWVzLCBEb250RW51bSwgMCk7CiAKKyAgICAvLyBQcml2YXRlIGFkZCAvIGhhcyBvcGVyYXRpb25z
LgorICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+YWRkUHJpdmF0ZU5h
bWUsIHNldFByb3RvRnVuY0FkZCwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzUHJpdmF0ZU5hbWUoKSwgc2V0
UHJvdG9GdW5jSGFzLCBEb250RW51bSwgMSk7CisKICAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+
dmFsdWVzLnN0cmluZygpLCBzZXRQcm90b0Z1bmNWYWx1ZXMpOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMsIHZhbHVlcywgRG9udEVu
dW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5rZXlzLCB2YWx1ZXMsIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAppbmRleCA1YWY2Y2FmMjdkMzU5ZDkxZjQ3YzExNTY0NzU4NDIwOGI3ZjA0OTc2Li5iOTczYjEz
OGJlYmNmYmI5M2M5NDQ0ZTNjZTdkNGRjOWRmNTNjMDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCkBAIC0yMjEsNiArMjIxLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgIGV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywg
RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBwcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFByb2dyYW1FeGVjdXRhYmxl
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25FeGVj
dXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHJlZ0V4cFN0cnVjdHVyZS5zZXQoKnRoaXMs
IFJlZ0V4cDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHN5bWJv
bFN0cnVjdHVyZS5zZXQoKnRoaXMsIFN5bWJvbDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIHN5bWJvbFRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgU3ltYm9sVGFi
bGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKQEAgLTIzMiw2ICsyMzMs
NyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgdW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5r
ZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICB1bmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBwcm9wZXJ0eVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgUHJvcGVydHlUYWJsZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYWtNYXBEYXRhU3RydWN0dXJl
LnNldCgqdGhpcywgV2Vha01hcERhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBpbmZlcnJlZFZhbHVlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRWYWx1
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKaW5kZXggYmY5MjViNTk1ZjkyMzkzNjJlZjg3OTE3MDNjM2U1MGEyNzJhYzI4
Mi4uMTI4YmZkYjUzNjE0NmFlOTZkOGY5ZGYyOGJkZTM3NDI0NTg3ZThkZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCkBAIC0xMDMsNiArMTAzLDcgQEAgY2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2s7CiBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTsKIGNsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsKK2NsYXNzIFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFZpcnR1YWxSZWdpc3RlcjsKIGNs
YXNzIFZNRW50cnlTY29wZTsKIGNsYXNzIFdhdGNoZG9nOwpAQCAtMjc5LDYgKzI4MCw3IEBAIGNs
YXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
cHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rp
b25FeGVjdXRhYmxlU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVj
dHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzeW1ib2xTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gc3ltYm9sVGFibGVTdHJ1Y3R1cmU7CkBAIC0yOTAsNiArMjkyLDcgQEAgY2xh
c3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiB1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gdW5saW5rZWRFdmFsQ29kZUJsb2NrU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTdHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0
cnVjdHVyZT4gdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IHByb3BlcnR5VGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gd2Vha01hcERhdGFTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJy
ZWRWYWx1ZVN0cnVjdHVyZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260139</attachid>
            <date>2015-08-28 01:50:10 -0700</date>
            <delta_ts>2015-08-28 23:16:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147340-20150828014957.patch</filename>
            <type>text/plain</type>
            <size>157032</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MzVkMGU5NTczNzAxMjIxZWRkOWIwNmI5NjAzN2JkYWNiNmY1ODlkLi44OTE5ZjExZDAzZGM0Mjlm
MzY4MDk3ZjEyNGRlZDI1YTRlMmE2YjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODEgQEAKKzIwMTUtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBNb2R1bGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDczNDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjppbmZlcnJlZE5hbWUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVC
bG9jayk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnJlcGxhY2VtZW50
KToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVs
SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6RXZhbENvZGVCbG9jazo6RXZhbENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uQ29kZUJsb2NrOjpGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZVR5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlVHlwZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
OjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0Q2hpbGRy
ZW4pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkltcG9ydERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmZy
aWVuZGx5U291cmNlVVJMKToKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnJpZW5kbHlGdW5j
dGlvbk5hbWUpOgorICAgICAgICAoSlNDOjpnZXRTdGFja0ZyYW1lQ29kZVR5cGUpOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSk6CisgICAgICAgIChKU0M6
OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChKU0M6OlN0YWNr
VmlzaXRvcjo6RnJhbWU6OnNvdXJjZVVSTCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tW
aXNpdG9yLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9mcm9tX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19zY29w
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVy
Zm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpzZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6Om1vZHVsZVByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAg
ICAgKiBsbGludC9MTEludFRodW5rcy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206Cisg
ICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxl
QW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0Q2xhdXNlSXRlbSk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9u
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNs
YXJlTGV4aWNhbFZhcmlhYmxlKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVu
dC5oOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzSW1wb3J0ZWRO
YW1lc3BhY2UpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElz
SW1wb3J0ZWROYW1lc3BhY2UpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpm
aW5kKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNv
ZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUv
RXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxD
b2RlKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1lbnRDb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3kpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAg
ICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUpOgorICAgICAgICAo
SlNDOjpFeGVjdXRhYmxlQmFzZTo6ZHVtcCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxl
Lmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjppc01vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZU1vZHVsZVByb2dy
YW1Db2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpK
U01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmly
b25tZW50OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1l
bnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmly
b25tZW50OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmguCisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6Om9mZnNldE9mTW9kdWxlUmVjb3JkKToKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlND
OjpKU01vZHVsZUVudmlyb25tZW50Ojptb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZUVudmlyb25tZW50Ojptb2R1bGVSZWNvcmRTbG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVFbnZpcm9ubWVudDo6SlNNb2R1bGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcnVudGltZS9K
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpOgorICAgICAgICAoSlND
OjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3ltYm9sSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OlJlc29sdmVRdWVyeSk6CisgICAgICAgIChK
U0M6OlJlc29sdmVRdWVyeTo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1
ZXJ5Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVyeUhhc2g6Omhh
c2gpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnlIYXNoOjplcXVhbCk6CisgICAgICAgIChK
U0M6OnJlc29sdmVFeHBvcnRMb29wKToKKyAgICAgICAgKEpTQzo6Z2V0RXhwb3J0ZWROYW1lcyk6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpnZXRNb2R1bGVOYW1lc3BhY2UpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjpsaW5rTW9kdWxlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV4ZWN1
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVSZWNvcmQ6OnN0YXJFeHBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVSZWNvcmQ6Om1vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNv
cmQ6Om1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUu
Y3BwOgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OnJlc29s
dmVUeXBlTmFtZSk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgIChKU0M6
Om1ha2VUeXBlKToKKyAgICAgICAgKEpTQzo6bmVlZHNWYXJJbmplY3Rpb25DaGVja3MpOgorICAg
ICAgICAoSlNDOjpSZXNvbHZlT3A6OlJlc29sdmVPcCk6CisgICAgICAgICogcnVudGltZS9KU1R5
cGUuaDoKKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6Om1vZHVsZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbik6
CisgICAgICAgICogcnVudGltZS9TZXRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTUtMDgt
MjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VT
Nl0gSW1wbGVtZW50IE1vZHVsZSBleGVjdXRpb24gYW5kIExvYWRlcidzIHJlYWR5IC8gbGluayBw
aGFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDg0MGUyOTUwZTY1YmUxMmU1YzVkZjUyMDg1NmVmOWY5NzVlNjFi
NzIuLmM5MTJjOTg3N2VkYWIyYTUzOWE3YWZkYzEzMjk1MzQ5Y2UyZDgxMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxNS0wOC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgRVM2IE1vZHVsZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzM0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
T09QUyEpLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YSk6CisKIDIwMTUtMDgtMjcgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIERyYXcg
Zm9udHMgYXQgdGhlaXIgbmF0aXZlIHNpemVzIGluc3RlYWQgb2Ygc2NhbGluZyBhIDFwdCBmb250
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGViNjJjYTU2YTE1ZTA2YzAxOGQ1ODVi
ZGEzMjc2ZTc4YjJlMjhlNzMuLjg4YWJhYTVmMGY2OGZkZDNjNzY2MGNiMmRiOTc0OGY5MDA0MTZm
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzAwLDYgKzE3MDAsOSBAQAog
CQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY1MEU1NTU3NzUwMDMw
OTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUxMjRBOEY4MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0
cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTI0QThGNjBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovOyB9OwogCQlF
MThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNw
cCAqLzsgfTsKKwkJRTMwNjc3OTgxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVj
dC5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMw
Njc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5qcyAqLzsgfTsKKwkJ
RTMxOENCQzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJFMUI4
QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi87IH07CisJCUUz
MThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkYxQjhBRUY1
MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQw
IC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3Bw
ICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYz
MjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTE3MjIsNiArMTcyNSw4
IEBACiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMx
QjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CiAJCUUzOURB
NEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0Eg
LyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9OwogCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0Eg
LyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzRDIzOUM4
MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2
NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKKwkJRTNEMjM5QzkxQjgyOUMxQzAw
QkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVs
ZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNF
Rjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9
OwogCQlFM0VGODg3NTFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzMx
QjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2QjEyRUYyOTNFMDAx
ODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNl
UHJvdmlkZXJDYWNoZS5jcHAgKi87IH07CkBAIC0zNTUzLDYgKzM1NTgsOSBAQAogCQlFMTc4NjM2
QzBEOUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0aWFsaXplVGhyZWFkaW5nLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4RTNBNTYwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBWTS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIg
PSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZN
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGgg
PSBWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9u
SWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OworCQlFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3
RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gTW9kdWxlTG9hZGVyT2JqZWN0LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzE4Q0JCRjFC
OEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RP
YmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9i
amVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIw
MEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlZmxlY3RPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzQjNF
MjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU3Nyw2ICsz
NTg1LDggQEAKIAkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVN
b2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNDFCN0U4QjdD
MDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52
aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDIzOUM3
MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4
ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
NzY1LDYgKzQ3NzUsMTAgQEAKIAkJCQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAu
aCAqLywKIAkJCQlBNzRERUY4RjE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5jcHAg
Ki8sCiAJCQkJQTc0REVGOTAxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuaCAqLywK
KwkJCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAg
Ki8sCisJCQkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQu
aCAqLywKKwkJCQlFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuY3BwICovLAorCQkJCUUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oICovLAogCQkJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01v
ZHVsZVJlY29yZC5jcHAgKi8sCiAJCQkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmggKi8sCiAJCQkJQTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5P
YmplY3QuY3BwICovLApAQCAtNTc4Nyw2ICs1ODAxLDcgQEAKIAkJCQlFMzVFMDM2MTFCN0FCNDg1
MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmpzICovLAogCQkJCUUz
M0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAvKiBJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcyAq
LywKIAkJCQk3Q0Y5QkM1QjFCNjVEOUEzMDA5REIxRUYgLyogSXRlcmF0b3IucHJvdG90eXBlLmpz
ICovLAorCQkJCUUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3Qu
anMgKi8sCiAJCQkJN0NGOUJDNUMxQjY1RDlCMTAwOURCMUVGIC8qIE9iamVjdENvbnN0cnVjdG9y
LmpzICovLAogCQkJCTdDRjlCQzVEMUI2NUQ5QjEwMDlEQjFFRiAvKiBPcGVyYXRpb25zLlByb21p
c2UuanMgKi8sCiAJCQkJN0NGQkFDMUMxOEI1MzVFNTAwRDAwNzUwIC8qIFByb21pc2UucHJvdG90
eXBlLmpzICovLApAQCAtNjEyMSw2ICs2MTM2LDcgQEAKIAkJCQkwRjJCOUNFOTE5RDBCQTdEMDBC
MUQxQjUgLyogREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdEOUEyOTgxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0xJQ01QaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdEODlDRkMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQ
aGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpT
TW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjBGMTlCMTZCNzI5RkEw
MDVERjk1QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA5RkI4
NjgxQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2
N0I1QjYxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTYyNTQsNiArNjI3MCw3IEBACiAJCQkJN0IwMjQ3NTcxQjg2ODJF
NDAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
QTBBMTAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0Q4OUQwMjE3QTBCOTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUxRjIyMDBD
QTJDNDAgLyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkREMTcxNzhF
MUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJERTE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMg
Ki8sCkBAIC03MDMxLDYgKzcwNDgsNyBAQAogCQkJaXNhID0gUEJYUmVzb3VyY2VzQnVpbGRQaGFz
ZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlF
MzA2Nzc5ODFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzIGluIFJlc291
cmNlcyAqLywKIAkJCQlBNTNGMUFDMDE4QzkwRjhGMDA3MkVCNkQgLyogZnJhbWV3b3JrLnNiIGlu
IFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKQEAgLTczNjUsNiArNzM4Myw3IEBACiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUx
NjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2
QjU4MjY5MTREMjc5NzAwMEE5QzMwNiAvKiBDb2RlUHJvZmlsaW5nLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOEY5NDNDMTY2NzYzMTMwMEQ2MTk3MSAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01v
ZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEY5NDQyMTY2NzYzMzUw
MEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDMTEwN0VD
Mzc2MDA0MjdBNDggLyogQ29tbW9uSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY5QzVFNUUxOEUzNUY1RTAwRDQzMUMzIC8qIEZUTERXQVJGUmVnaXN0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC03NDQ0LDYgKzc0NjMsNyBAQAogCQkJCTBGRDEyMDMzMUE4Qzg1QkQwMDBGNTI4
MCAvKiBGVExKU0NhbGxWYXJhcmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzk2MTdG
RkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMz
RjUwODQxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzNjk0MUFFOUNDMzMwMDBE
NERGQiAvKiBERkdDbGVhblVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjcx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGM0JEMUI3MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC04MDkzLDYgKzgxMTMsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDBGQ0VGQUJFMTgwNUQ4NjkwMDQ3
MkNFNCAvKiBMTFZNRm9ySlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFt
ZSA9IERlYnVnOwogCQl9OwpAQCAtODEwMCw2ICs4MTIxLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAwRkNFRkFCRTE4
MDVEODY5MDA0NzJDRTQgLyogTExWTUZvckpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJ
fTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtODEwNyw2ICs4MTI5LDcgQEAKIAkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSAwRkNFRkFCRTE4MDVEODY5MDA0NzJDRTQgLyogTExWTUZvckpTQy54Y2NvbmZpZyAqLzsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9N
T0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CkBAIC04MTE0LDYgKzgx
MzcsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDBGQ0VGQUJFMTgwNUQ4NjkwMDQ3MkNFNCAvKiBMTFZNRm9ySlNDLnhj
Y29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMg
PSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07
CkBAIC04MTIxLDYgKzgxNDUsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJ
CQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAv
KiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
RU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUg
PSBEZWJ1ZzsKIAkJfTsKQEAgLTgxMjgsNiArODE1Myw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5
MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJ
CQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC04MTM1LDYgKzgxNjEsNyBAQAogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5j
ZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAq
LzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxF
X0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CkBAIC04MTQy
LDYgKzgxNjksNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29u
ZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhl
Y3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VT
Nl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0
aW9uOwogCQl9OwpAQCAtODE3MCw2ICs4MTk4LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3
MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07
CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC04MTc3LDYgKzgyMDYsNyBAQAogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFD
OTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9N
T0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtODE4NSw2ICs4MjE1
LDcgQEAKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAw
ODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9
IHsKIAkJCQlCVUlMRF9WQVJJQU5UUyA9IG5vcm1hbDsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMg
PSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07
CkBAIC04MTkyLDYgKzgyMjMsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJ
CQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAv
KiBKU0MueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZf
TU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJ
CX07CkBAIC04MTk5LDYgKzgyMzEsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZCRUZC
NCAvKiBKU0MueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9F
UzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFz
ZTsKIAkJfTsKQEAgLTgyMDYsNiArODIzOSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNURBRkQ2Q0IxNDZCNjg2MzAw
RkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5B
QkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQ
cm9kdWN0aW9uOwogCQl9OwpAQCAtODMzNyw2ICs4MzcxLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBC
QTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsK
IAkJCQlJTkZPUExJU1RfRklMRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weS1JbmZvLnBsaXN0IjsK
IAkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOwogCQkJfTsKQEAgLTgz
NDYsNiArODM4MSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFT
Y3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVf
RVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSAi
RGVyaXZlZCBTb3VyY2VzIGNvcHktSW5mby5wbGlzdCI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkRl
cml2ZWQgU291cmNlcyBjb3B5IjsKIAkJCX07CkBAIC04MzU1LDYgKzgzOTEsNyBAQAogCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9
IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsK
IAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VT
Nl9NT0RVTEVTOwogCQkJCUlORk9QTElTVF9GSUxFID0gIkRlcml2ZWQgU291cmNlcyBjb3B5LUlu
Zm8ucGxpc3QiOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CiAJ
CQl9OwpAQCAtODM2NCw2ICs4NDAxLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5
RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlJTkZPUExJ
U1RfRklMRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weS1JbmZvLnBsaXN0IjsKIAkJCQlQUk9EVUNU
X05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOwogCQkJfTsKQEAgLTgzNzMsNiArODQxMSw3
IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhj
Y29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMg
PSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2
ZWQgU291cmNlcyI7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwpAQCAtODM4MSw2ICs4NDIwLDcg
QEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNj
b25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9
IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlQUk9EVUNUX05BTUUgPSAiR2VuZXJhdGUgRGVyaXZl
ZCBTb3VyY2VzIjsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTgzODksNiArODQyOSw3
IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhj
Y29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMg
PSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2
ZWQgU291cmNlcyI7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CkBAIC04NDEyLDYgKzg0
NTMsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29y
ZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RV
TEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJ
CX07CkBAIC04NDE5LDYgKzg0NjEsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlE
MCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCVBST0RVQ1Rf
TkFNRSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9m
aWxpbmc7CkBAIC04NDQxLDYgKzg0ODQsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZC
RUZCNCAvKiBKU0MueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJM
RV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJv
ZmlsaW5nOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uCmluZGV4IDRlNWE5NmMzOGVkODYyNzc0NDJjYTI2MTljNWM4Y2FjMjljZTgy
YWEuLjAyMGVjMjQ4OWVmZTNhMzMyOTg1YjcwOTEwZGVjY2Y3OGQ0OWE5NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTE1Nyw2
ICsxNTcsNyBAQAogICAgICAgICAiYnl0ZWNvZGVzIiA6IFsKICAgICAgICAgICAgIHsgIm5hbWUi
IDogImxsaW50X3Byb2dyYW1fcHJvbG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJs
bGludF9ldmFsX3Byb2xvZ3VlIiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfbW9k
dWxlX3Byb2dyYW1fcHJvbG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayIgfSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMDFmMTFkYTdjNzcy
MGZmODJiYmVhOTM0Y2IwYWZmMGZiM2EzMDBhMy4uZjJlYmFkZDM1ODRhZGEzNzQ0YzhkNGNjNjc1
MDI5MjM3MjE5NDBlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCisj
aW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlwb2lu
dC5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCkBAIC04Nyw2ICs4OCw4IEBAIENTdHJpbmcgQ29kZUJsb2NrOjppbmZlcnJlZE5hbWUo
KSBjb25zdAogICAgICAgICByZXR1cm4gIjxldmFsPiI7CiAgICAgY2FzZSBGdW5jdGlvbkNvZGU6
CiAgICAgICAgIHJldHVybiBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRh
YmxlKCkpLT5pbmZlcnJlZE5hbWUoKS51dGY4KCk7CisgICAgY2FzZSBNb2R1bGVDb2RlOgorICAg
ICAgICByZXR1cm4gIjxtb2R1bGU+IjsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwog
ICAgICAgICByZXR1cm4gQ1N0cmluZygiIiwgMCk7CkBAIC0xOTcwLDkgKzE5NzMsMTQgQEAgQ29k
ZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmtlZENvZGVCbG9jayogdW5saW4KICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6
OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3Bl
RGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCB0eXBlKTsKICAgICAgICAgICAgIGluc3RydWN0aW9u
c1tpICsgNF0udS5vcGVyYW5kID0gb3AudHlwZTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tp
ICsgNV0udS5vcGVyYW5kID0gb3AuZGVwdGg7Ci0gICAgICAgICAgICBpZiAob3AubGV4aWNhbEVu
dmlyb25tZW50KQotICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5zeW1ib2xU
YWJsZS5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3AubGV4aWNhbEVudmlyb25tZW50LT5z
eW1ib2xUYWJsZSgpKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChvcC5sZXhp
Y2FsRW52aXJvbm1lbnQpIHsKKyAgICAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBNb2R1bGVW
YXIpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gS2VlcCB0aGUgbGlua2VkIG1vZHVsZSBlbnZp
cm9ubWVudCBzdHJvbmdseSByZWZlcmVuY2VkLgorICAgICAgICAgICAgICAgICAgICBhZGRDb25z
dGFudChvcC5sZXhpY2FsRW52aXJvbm1lbnQpOworICAgICAgICAgICAgICAgICAgICBpbnN0cnVj
dGlvbnNbaSArIDZdLnUuanNDZWxsLnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhp
Y2FsRW52aXJvbm1lbnQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUuc3ltYm9sVGFibGUuc2V0KCp2bSgpLCBvd25lckV4
ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKSk7CisgICAgICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUucG9pbnRl
ciA9IG51bGxwdHI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTk5Nyw3ICsy
MDA1LDEyIEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKICAgICAgICAgICAg
IFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCBtb2RlQW5k
VHlwZS50eXBlKCkpOwogCi0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFu
ZCA9IFJlc29sdmVNb2RlQW5kVHlwZShtb2RlQW5kVHlwZS5tb2RlKCksIG9wLnR5cGUpLm9wZXJh
bmQoKTsKKyAgICAgICAgICAgIC8vIE1vZHVsZVZhciBjYW4gZ2V0IHRoZSB2YXJpYWJsZSBhcyB0
aGUgc2FtZSB0byBDbG9zdXJlVmFyLgorICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gTW9kdWxl
VmFyKQorICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gUmVz
b2x2ZU1vZGVBbmRUeXBlKG1vZGVBbmRUeXBlLm1vZGUoKSwgQ2xvc3VyZVZhcikub3BlcmFuZCgp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0u
dS5vcGVyYW5kID0gUmVzb2x2ZU1vZGVBbmRUeXBlKG1vZGVBbmRUeXBlLm1vZGUoKSwgb3AudHlw
ZSkub3BlcmFuZCgpOworCiAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIgfHwg
b3AudHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAg
ICAgIGluc3RydWN0aW9uc1tpICsgNV0udS53YXRjaHBvaW50U2V0ID0gb3Aud2F0Y2hwb2ludFNl
dDsKICAgICAgICAgICAgIGVsc2UgaWYgKG9wLnN0cnVjdHVyZSkKQEAgLTIwNjUsMTcgKzIwNzgs
MTggQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAgICAgICAgICAgICAgICAvLyB3ZSdyZSBh
YnN0cmFjdGx5ICJyZWFkImluZyBmcm9tIGEgSlNTY29wZS4KICAgICAgICAgICAgICAgICBSZXNv
bHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgdHlwZSk7CiAKLSAg
ICAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFyKQorICAgICAgICAgICAgICAg
IGlmIChvcC50eXBlID09IENsb3N1cmVWYXIgfHwgb3AudHlwZSA9PSBNb2R1bGVWYXIpCiAgICAg
ICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gb3AubGV4aWNhbEVudmlyb25tZW50LT5zeW1i
b2xUYWJsZSgpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFy
KQogICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZSA9IG1fZ2xvYmFsT2JqZWN0LmdldCgp
LT5zeW1ib2xUYWJsZSgpOwotICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgVW5p
cXVlZFN0cmluZ0ltcGwqIGltcGwgPSAob3AudHlwZSA9PSBNb2R1bGVWYXIpID8gb3AuaW1wb3J0
ZWROYW1lLmdldCgpIDogaWRlbnQuaW1wbCgpOwogICAgICAgICAgICAgICAgIGlmIChzeW1ib2xU
YWJsZSkgewogICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihz
eW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgb3VyIHBhcmVu
dCBzY29wZSB3YXMgY3JlYXRlZCB3aGlsZSBwcm9maWxpbmcgd2FzIGRpc2FibGVkLCBpdCB3aWxs
IG5vdCBoYXZlIHByZXBhcmVkIGZvciBwcm9maWxpbmcgeWV0LgogICAgICAgICAgICAgICAgICAg
ICBzeW1ib2xUYWJsZS0+cHJlcGFyZUZvclR5cGVQcm9maWxpbmcobG9ja2VyKTsKLSAgICAgICAg
ICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclZh
cmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGdsb2JhbFR5cGVTZXQgPSBzeW1ib2xUYWJsZS0+Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGxv
Y2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7CisgICAgICAgICAgICAgICAgICAgIGdsb2JhbFZh
cmlhYmxlSUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIsIGltcGws
ICp2bSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVHlwZVNldCA9IHN5bWJvbFRhYmxl
LT5nbG9iYWxUeXBlU2V0Rm9yVmFyaWFibGUobG9ja2VyLCBpbXBsLCAqdm0oKSk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBU
eXBlUHJvZmlsZXJOb0dsb2JhbElERXhpc3RzOwogCkBAIC0zMDI1LDYgKzMwMzksMTEgQEAgQ29k
ZUJsb2NrKiBQcm9ncmFtQ29kZUJsb2NrOjpyZXBsYWNlbWVudCgpCiAgICAgcmV0dXJuIGpzQ2Fz
dDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7CiB9
CiAKK0NvZGVCbG9jayogTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQorewor
ICAgIHJldHVybiBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFi
bGUoKSktPmNvZGVCbG9jaygpOworfQorCiBDb2RlQmxvY2sqIEV2YWxDb2RlQmxvY2s6OnJlcGxh
Y2VtZW50KCkKIHsKICAgICByZXR1cm4ganNDYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVj
dXRhYmxlKCkpLT5jb2RlQmxvY2soKTsKQEAgLTMwNDAsNiArMzA1OSwxMSBAQCBERkc6OkNhcGFi
aWxpdHlMZXZlbCBQcm9ncmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpCiAg
ICAgcmV0dXJuIERGRzo6cHJvZ3JhbUNhcGFiaWxpdHlMZXZlbCh0aGlzKTsKIH0KIAorREZHOjpD
YXBhYmlsaXR5TGV2ZWwgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50
ZXJuYWwoKQoreworICAgIHJldHVybiBERkc6OnByb2dyYW1DYXBhYmlsaXR5TGV2ZWwodGhpcyk7
Cit9CisKIERGRzo6Q2FwYWJpbGl0eUxldmVsIEV2YWxDb2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZl
bEludGVybmFsKCkKIHsKICAgICByZXR1cm4gREZHOjpldmFsQ2FwYWJpbGl0eUxldmVsKHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDk0OTk0
MDU2NDNhYTkxM2RjNzhlNzk5YWEwY2M1NjcyZWIzNmVmM2MuLjFmZjE2ZmUzOTIyMjI4Y2ZjOGMz
MWVhZGM2ZmZmOTNlYmIwYmM2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKQEAgLTgyLDYgKzgyLDcgQEAgY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKIGNsYXNzIFR5cGVMb2Nh
dGlvbjsKK2NsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiAKIGVudW0gUmVvcHRpbWl6YXRpb25N
b2RlIHsgRG9udENvdW50UmVvcHRpbWl6YXRpb24sIENvdW50UmVvcHRpbWl6YXRpb24gfTsKIApA
QCAtMTA5MCwxMCArMTA5MSwyOSBAQCBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrIDogcHVibGljIEds
b2JhbENvZGVCbG9jayB7CiAjZW5kaWYKIH07CiAKK2NsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsKK3B1YmxpYzoKKyAgICBNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayYgb3Ro
ZXIpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCisg
ICAgeworICAgIH0KKworICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2soTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJv
dmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisg
ICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxv
Y2ssIHNjb3BlLCBzb3VyY2VQcm92aWRlciwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAg
IHsKKyAgICB9CisKKyNpZiBFTkFCTEUoSklUKQorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgQ29k
ZUJsb2NrKiByZXBsYWNlbWVudCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgREZHOjpDYXBhYmls
aXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKSBvdmVycmlkZTsKKyNlbmRpZgorfTsK
KwogY2xhc3MgRXZhbENvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogcHVibGlj
OgogICAgIEV2YWxDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLCBFdmFsQ29kZUJsb2NrJiBv
dGhlcikKLSAgICA6IEdsb2JhbENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQorICAg
ICAgICA6IEdsb2JhbENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQogICAgIHsKICAg
ICB9CiAgICAgICAgIApAQCAtMTExOCw3ICsxMTM4LDcgQEAgY2xhc3MgRXZhbENvZGVCbG9jayA6
IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2sgOiBwdWJs
aWMgQ29kZUJsb2NrIHsKIHB1YmxpYzoKICAgICBGdW5jdGlvbkNvZGVCbG9jayhDb3B5UGFyc2Vk
QmxvY2tUYWcsIEZ1bmN0aW9uQ29kZUJsb2NrJiBvdGhlcikKLSAgICA6IENvZGVCbG9jayhDb3B5
UGFyc2VkQmxvY2ssIG90aGVyKQorICAgICAgICA6IENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ss
IG90aGVyKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZVR5cGUuY3BwCmluZGV4IDhiMmNhZDU2YWI2OGFmMTJiMzJiZjI5Y2Q4NDBhYzBhYTcxODNk
NDguLjBjNzA0M2RmYTNlYWZmZTlmOTQ2YWRkOTE3OTNmZTYyNTdhYWU0MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmNwcApAQCAtNDIsNiArNDIsOSBAQCB2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpDb2RlVHlwZSBjb2RlVHlw
ZSkKICAgICBjYXNlIEpTQzo6RnVuY3Rpb25Db2RlOgogICAgICAgICBvdXQucHJpbnQoIkZ1bmN0
aW9uIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6TW9kdWxlQ29kZToKKyAgICAg
ICAgb3V0LnByaW50KCJNb2R1bGUiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIENSQVNIKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVUeXBlLmgKaW5kZXggYjhlMTA3ZGNmNmI2NzBjZDgyODNlYmZhNTM1MWY3YzYz
NDJmMDIzYy4uOTk0MWQ1MTRjZGQwYzVmZmUzMGYxYTg4NGYzYmE1NGM2ZjAwZjg5MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmgKQEAgLTI4LDcgKzI4LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gQ29kZVR5cGUgeyBHbG9iYWxDb2RlLCBFdmFsQ29k
ZSwgRnVuY3Rpb25Db2RlIH07CitlbnVtIENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZhbENvZGUs
IEZ1bmN0aW9uQ29kZSwgTW9kdWxlQ29kZSB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKaW5kZXggNTc0YjFlNDgyMzg5OGIzODAxNGQ1MTgyOWVhYjdmNzEzMDlkYmIwYS4uNDYwOTVk
ODRiY2NhNjA2NzVmZWZkZTdmNDAwMjc1MmRkOWFlYjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00Nyw2ICs0
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkQ29kZUJsb2Nr
OjpzX2luZm8gPSB7ICJVbmxpbmtlZENvZGVCbG9jayIsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoVW5saW5rZWRDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRHbG9iYWxD
b2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkR2xvYmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEdsb2JhbENvZGVCbG9jaykgfTsK
IGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKSB9OworY29uc3QgQ2xhc3NJbmZvIFVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5s
aW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2YWxDb2RlQmxvY2siLCAm
QmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRXZhbENvZGVCbG9j
aykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8g
PSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSB9OwogCkBAIC04OSw3ICs5
MCw2IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBVbmxpbmtlZENvZGVCbG9jayogdGhpc09iamVj
dCA9IGpzQ2FzdDxVbmxpbmtlZENvZGVCbG9jayo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3N5bWJvbFRhYmxlKTsKICAgICBmb3IgKEZ1bmN0aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0
b3IgcHRyID0gdGhpc09iamVjdC0+bV9mdW5jdGlvbkRlY2xzLmJlZ2luKCksIGVuZCA9IHRoaXNP
YmplY3QtPm1fZnVuY3Rpb25EZWNscy5lbmQoKTsgcHRyICE9IGVuZDsgKytwdHIpCiAgICAgICAg
IHZpc2l0b3IuYXBwZW5kKHB0cik7CiAgICAgZm9yIChGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3I6
Oml0ZXJhdG9yIHB0ciA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25FeHBycy5iZWdpbigpLCBlbmQg
PSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRXhwcnMuZW5kKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQpA
QCAtMjkyLDYgKzI5MiwxNCBAQCB2b2lkIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiB9CiAKK3ZvaWQgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB0aGlz
T2JqZWN0ID0ganNDYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbFRhYmxlKTsKK30KKwogVW5saW5rZWRDb2RlQmxvY2s6
On5VbmxpbmtlZENvZGVCbG9jaygpCiB7CiB9CkBAIC0zMDEsNiArMzA5LDExIEBAIHZvaWQgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBqc0Nhc3Q8
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKj4oY2VsbCktPn5VbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2soKTsKIH0KIAordm9pZCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqPihjZWxsKS0+flVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpOworfQorCiB2b2lk
IFVubGlua2VkRXZhbENvZGVCbG9jazo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CiAgICAganND
YXN0PFVubGlua2VkRXZhbENvZGVCbG9jayo+KGNlbGwpLT5+VW5saW5rZWRFdmFsQ29kZUJsb2Nr
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCmluZGV4IDMyMmQyNjE5OWY3OTdjMTAzODFkZDQ1ODkzYmQ1MzUzZmYxYjZiNDYuLjg4
Y2UyMzEzY2FjYTA4ODJkODZjMWYyODc3MGEzYTA5ODcwNmI2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0zNjAsOSAr
MzYwLDYgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKLSAgICAgICAgaWYgKGNvZGVUeXBlKCkgPT0gR2xvYmFsQ29kZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zeW1ib2xUYWJsZS5zZXQodm0sIHRoaXMsIFN5bWJv
bFRhYmxlOjpjcmVhdGUodm0pKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC00MTIsOCArNDA5LDYg
QEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBGdW5jdGlv
bkV4cHJlc3Npb25WZWN0b3IgbV9mdW5jdGlvbkRlY2xzOwogICAgIEZ1bmN0aW9uRXhwcmVzc2lv
blZlY3RvciBtX2Z1bmN0aW9uRXhwcnM7CiAKLSAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+
IG1fc3ltYm9sVGFibGU7Ci0KICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fcHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbnM7CiAKICNpZiBFTkFCTEUoQllURUNPREVfQ09NTUVOVFMpCkBAIC01MTQsNiAr
NTA5LDQ5IEBAIGNsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBV
bmxpbmtlZEdsb2JhbENvZGVCbG9jayB7CiAgICAgREVDTEFSRV9JTkZPOwogfTsKIAorY2xhc3Mg
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkR2xv
YmFsQ29kZUJsb2NrIHsKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAg
ICBzdGF0aWMgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0qIHZtLCBj
b25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbykKKyAgICB7CisgICAgICAgIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtLT5oZWFwKSkgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKHZtLCB2bS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3Ry
dWN0dXJlLmdldCgpLCBpbmZvKTsKKyAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2
bSk7CisgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICB9CisKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIFVubGlua2VkR2xvYmFsQ29kZUJsb2NrIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0lt
bW9ydGFsOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFN5bWJv
bFRhYmxlKiBzeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KKwor
cHJpdmF0ZToKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCisgICAgICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlLCBNb2R1bGVDb2RlLCBpbmZvKQorICAgIHsKKyAgICB9CisKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICAgICAgbV9zeW1ib2xUYWJsZS5zZXQodm0sIHRoaXMsIFN5bWJv
bFRhYmxlOjpjcmVhdGUodm0pKTsKKyAgICB9CisKKyAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFi
bGU+IG1fc3ltYm9sVGFibGU7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZP
OworfTsKKwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlu
a2VkR2xvYmFsQ29kZUJsb2NrIHsKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVDYWNo
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjJjMmQzYmE0MjU3NjM4ZTg0MGJiM2E2MmQyNzc0YjBm
MzEyN2RmYy4uMjUyY2ZmMGJjOThkZmJhMWNlZTgzMjYzZDQ1YTQzNWFiZTg3Y2Y3YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKQEAgLTcwLDcgKzcwLDkgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKCkKICAgICBpZiAobV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRzKQogICAg
ICAgICBpbml0aWFsaXplVmFyaWFibGUodmFyaWFibGUocHJvcGVydHlOYW1lcygpLmFyZ3VtZW50
cyksIG1fYXJndW1lbnRzUmVnaXN0ZXIpOwogCi0gICAgcHVzaExleGljYWxTY29wZShtX3Njb3Bl
Tm9kZSwgdHJ1ZSk7CisgICAgLy8gRm9yIE1vZHVsZUNvZGUsIHdlIGFscmVhZHkgaW5zdGFudGlh
dGVkIHRoZSBlbnZpcm9ubWVudCBmb3IgdGhlIGxleGljYWwgdmFyaWFibGVzLgorICAgIGlmICht
X2NvZGVUeXBlICE9IE1vZHVsZUNvZGUpCisgICAgICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29w
ZU5vZGUsIHRydWUpOwogCiAgICAgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcCA9
IG5ld1RlbXBvcmFyeSgpOwpAQCAtNTA0LDYgKzUwNiwxNDMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2
YWxDb2QKICAgICBtX1REWlN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigqcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsIGZhbHNlKSk7CiB9CiAKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlYnVnZ2VyTW9kZSBkZWJ1
Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKQorICAgIDogbV9zaG91bGRFbWl0RGVidWdI
b29rcyhPcHRpb25zOjpmb3JjZURlYnVnZ2VyQnl0ZWNvZGVHZW5lcmF0aW9uKCkgfHwgZGVidWdn
ZXJNb2RlID09IERlYnVnZ2VyT24pCisgICAgLCBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MoT3B0
aW9uczo6Zm9yY2VQcm9maWxlckJ5dGVjb2RlR2VuZXJhdGlvbigpIHx8IHByb2ZpbGVyTW9kZSA9
PSBQcm9maWxlck9uKQorICAgICwgbV9zY29wZU5vZGUobW9kdWxlUHJvZ3JhbU5vZGUpCisgICAg
LCBtX2NvZGVCbG9jayh2bSwgY29kZUJsb2NrKQorICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZy
YW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKKyAgICAsIG1fY29kZVR5cGUoTW9kdWxlQ29kZSkK
KyAgICAsIG1fdm0oJnZtKQorICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMtPnNpemUoKSk7CisKKyAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBt
X2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnMpCisgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBu
dWxscHRyOworCisgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgIG1fc2hvdWxk
RW1pdERlYnVnSG9va3MgPSBmYWxzZTsKKworICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9
IGNvZGVCbG9jay0+c3ltYm9sVGFibGUoKTsKKyAgICBzeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0
cmljdEV2YWwobV91c2VzTm9uU3RyaWN0RXZhbCk7CisgICAgc3ltYm9sVGFibGUtPnNldFNjb3Bl
VHlwZShTeW1ib2xUYWJsZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOworCisgICAgLy8gRm9y
IHRoZSBleHBvcnRlZCB2YXJpYWJsZXMsIHdlIGFscmVhZHkgcmVnaXN0ZXIgdGhlbSB0byB0aGUg
c3RvcmVkIHN5bWJvbCB0YWJsZS4KKyAgICAvLyBFdmVuIGlmIHRoZSB1bmxpbmtlZC9saW5rZWQg
Y29kZSBibG9jayBpcyByZW1vdmVkIGFuZCBzeW1ib2wgdGFibGUgaXMgcmVjcmVhdGVkLAorICAg
IC8vIHRoaXMgZW5zdXJlcyB0aGUgZ2VuZXJhdGVkIHN5bWJvbCB0YWJsZSBpcyBhbHdheXMgdGhl
IHNhbWUuCisKKyAgICBib29sIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSBtX3Nob3Vs
ZEVtaXREZWJ1Z0hvb2tzIHx8IG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7Cisg
ICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hv
b2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKKyAgICBpZiAoc2hvdWxkQ2FwdHVyZUFsbE9m
VGhlVGhpbmdzKQorICAgICAgICBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCku
bWFya0FsbFZhcmlhYmxlc0FzQ2FwdHVyZWQoKTsKKworICAgIGF1dG8gY2FwdHVyZXMgPSBbJl0g
KFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpIC0+IGJvb2wgeworICAgICAgICBpZiAoIXNob3VsZENh
cHR1cmVTb21lT2ZUaGVUaGluZ3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBtb2R1bGVQcm9ncmFtTm9kZS0+Y2FwdHVyZXModWlkKTsKKyAgICB9OworICAgIGF1
dG8gbG9va1VwVmFyS2luZCA9IFsmXSAoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5JiBlbnRyeSkgLT4gVmFyS2luZCB7CisgICAgICAgIGlmIChl
bnRyeS5pc0V4cG9ydGVkKCkpCisgICAgICAgICAgICByZXR1cm4gVmFyS2luZDo6U2NvcGU7Cisg
ICAgICAgIGlmIChlbnRyeS5pc0ltcG9ydGVkTmFtZXNwYWNlKCkpCisgICAgICAgICAgICByZXR1
cm4gVmFyS2luZDo6U2NvcGU7CisgICAgICAgIGlmIChlbnRyeS5pc0NhcHR1cmVkKCkpCisgICAg
ICAgICAgICByZXR1cm4gVmFyS2luZDo6U2NvcGU7CisgICAgICAgIHJldHVybiBjYXB0dXJlcyh1
aWQpID8gVmFyS2luZDo6U2NvcGUgOiBWYXJLaW5kOjpTdGFjazsKKyAgICB9OworCisgICAgZW1p
dE9wY29kZShvcF9lbnRlcik7CisKKyAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOworCisgICAg
bV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOworCisgICAgbV9jb2Rl
QmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7IC8vIEFsbG9jYXRlIHNwYWNlIGZvciAidGhpcyIK
KworICAgIGZvciAoRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uIDogbW9kdWxlUHJvZ3Jh
bU5vZGUtPmZ1bmN0aW9uU3RhY2soKSkgeworICAgICAgICBjb25zdCBhdXRvJiBpdGVyYXRvciA9
IG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKS5maW5kKGZ1bmN0aW9uLT5pZGVu
dCgpLmltcGwoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXJhdG9yICE9IG1vZHVsZVBy
b2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKS5lbmQoKSk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFpdGVyYXRvci0+dmFsdWUuaXNJbXBvcnRlZCgpKTsKKworICAgICAgICBWYXJLaW5kIHZh
cktpbmQgPSBsb29rVXBWYXJLaW5kKGl0ZXJhdG9yLT5rZXkuZ2V0KCksIGl0ZXJhdG9yLT52YWx1
ZSk7CisgICAgICAgIGlmICh2YXJLaW5kID09IFZhcktpbmQ6OlNjb3BlKSB7CisgICAgICAgICAg
ICAvLyBIZWFwIGFsbG9jYXRlZCBmdW5jdGlvbnMgc2hvdWxkIGJlIGluc3RhbnRpYXRlZCB3aGVu
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgY3JlYXRlZC4KKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBTdGFjayBhbGxvY2F0ZWQgZnVuY3Rpb25zIGNhbiBiZSBh
bGxvY2F0ZWQgd2hlbiBleGVjdXRpbmcgdGhlIG1vZHVsZSdzIGJvZHkuCisgICAgICAgICAgICBt
X2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZnVuY3Rpb24sIE5v
cm1hbEZ1bmN0aW9uVmFyaWFibGUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE5vdyBk
ZWNsYXJlIGFsbCB2YXJpYWJsZXMuCisKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogbW9kdWxlUHJv
Z3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpKSB7CisgICAgICAgIEFTU0VSVCghZW50cnkudmFs
dWUuaXNMZXQoKSAmJiAhZW50cnkudmFsdWUuaXNDb25zdCgpKTsKKyAgICAgICAgaWYgKCFlbnRy
eS52YWx1ZS5pc1ZhcigpKSAvLyBUaGlzIGlzIGVpdGhlciBhIHBhcmFtZXRlciBvciBjYWxsZWUu
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzSW1wb3J0
ZWQoKSAmJiAhZW50cnkudmFsdWUuaXNJbXBvcnRlZE5hbWVzcGFjZSgpKSAvLyBUaGVzZSBhcmUg
bWFuYWdlZCBpbiB0aGUgb3RoZXIgcGhhc2UuCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgLy8gVmFyaWFibGVzIG5hbWVkICJhcmd1bWVudHMiIGFyZSBuZXZlciBjb25zdC4KKyAgICAg
ICAgY3JlYXRlVmFyaWFibGUoSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBlbnRyeS5rZXkuZ2V0
KCkpLCBsb29rVXBWYXJLaW5kKGVudHJ5LmtleS5nZXQoKSwgZW50cnkudmFsdWUpLCBzeW1ib2xU
YWJsZSwgSWdub3JlRXhpc3RpbmcpOworICAgIH0KKworICAgIFZhcmlhYmxlRW52aXJvbm1lbnQm
IGVudmlyb25tZW50ID0gbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKTsKKwor
ICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1f
bG9jayk7CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnZpcm9ubWVudCkgeworICAgICAg
ICAgICAgQVNTRVJUKGVudHJ5LnZhbHVlLmlzTGV0KCkgfHwgZW50cnkudmFsdWUuaXNDb25zdCgp
KTsKKyAgICAgICAgICAgIEFTU0VSVCghZW50cnkudmFsdWUuaXNWYXIoKSk7CisgICAgICAgICAg
ICBTeW1ib2xUYWJsZUVudHJ5IHN5bWJvbFRhYmxlRW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KGxv
Y2tlciwgZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChzeW1ib2xUYWJsZUVu
dHJ5LmlzTnVsbCgpKTsKKworICAgICAgICAgICAgLy8gSW1wb3J0ZWQgdmFyaWFibGVzIGFyZSBo
YW5kbGVkIGluc2lkZSB0aGUgdG9wLW1vc3QgbW9kdWxlIGVudmlyb25tZW50LgorICAgICAgICAg
ICAgaWYgKGVudHJ5LnZhbHVlLmlzSW1wb3J0ZWQoKSAmJiAhZW50cnkudmFsdWUuaXNJbXBvcnRl
ZE5hbWVzcGFjZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBW
YXJLaW5kIHZhcktpbmQgPSBsb29rVXBWYXJLaW5kKGVudHJ5LmtleS5nZXQoKSwgZW50cnkudmFs
dWUpOworICAgICAgICAgICAgVmFyT2Zmc2V0IHZhck9mZnNldDsKKyAgICAgICAgICAgIGlmICh2
YXJLaW5kID09IFZhcktpbmQ6OlNjb3BlKQorICAgICAgICAgICAgICAgIHZhck9mZnNldCA9IFZh
ck9mZnNldChzeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChsb2NrZXIpKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJLaW5kID09IFZhcktpbmQ6
OlN0YWNrKTsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcklEKiBsb2NhbCA9IG5ld0Jsb2NrU2Nv
cGVWYXJpYWJsZSgpOworICAgICAgICAgICAgICAgIGxvY2FsLT5yZWYoKTsKKyAgICAgICAgICAg
ICAgICB2YXJPZmZzZXQgPSBWYXJPZmZzZXQobG9jYWwtPnZpcnR1YWxSZWdpc3RlcigpKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeSh2YXJP
ZmZzZXQsIGVudHJ5LnZhbHVlLmlzQ29uc3QoKSA/IFJlYWRPbmx5IDogMCk7CisgICAgICAgICAg
ICBzeW1ib2xUYWJsZS0+YWRkKGxvY2tlciwgZW50cnkua2V5LmdldCgpLCBuZXdFbnRyeSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBSZWdpc3RlcklEKiBjb25zdGFudFN5bWJvbFRhYmxlID0g
bnVsbHB0cjsKKyAgICBpZiAodm0udHlwZVByb2ZpbGVyKCkpCisgICAgICAgIGNvbnN0YW50U3lt
Ym9sVGFibGUgPSBhZGRDb25zdGFudFZhbHVlKHN5bWJvbFRhYmxlKTsKKyAgICBlbHNlCisgICAg
ICAgIGNvbnN0YW50U3ltYm9sVGFibGUgPSBhZGRDb25zdGFudFZhbHVlKHN5bWJvbFRhYmxlLT5j
bG9uZVNjb3BlUGFydCgqbV92bSkpOworCisgICAgbV9URFpTdGFjay5hcHBlbmQoc3RkOjptYWtl
X3BhaXIoZW52aXJvbm1lbnQsIHRydWUpKTsKKyAgICBtX3N5bWJvbFRhYmxlU3RhY2suYXBwZW5k
KFN5bWJvbFRhYmxlU3RhY2tFbnRyeSB7IFN0cm9uZzxTeW1ib2xUYWJsZT4oKm1fdm0sIHN5bWJv
bFRhYmxlKSwgbV9zY29wZVJlZ2lzdGVyLCBmYWxzZSwgY29uc3RhbnRTeW1ib2xUYWJsZS0+aW5k
ZXgoKSB9KTsKKworICAgIC8vIFByZWZpbGwgc3RhY2sgdmFyaWFibGVzIHdpdGggdGhlIFREWiBl
bXB0eSB2YWx1ZS4KKyAgICAvLyBTY29wZSB2YXJpYWJsZXMgd2lsbCBiZSBpbml0aWFsaXplZCB0
byB0aGUgVERaIGVtcHR5IHZhbHVlIHdoZW4gSlNMZXhpY2FsRW52aXJvbm1lbnQgaXMgYWxsb2Nh
dGVkLgorICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnZpcm9ubWVudCkgeworICAgICAgICAvLyBJ
bXBvcnRlZCB2YXJpYWJsZXMgYXJlIGFscmVhZHkgaW5pdGlhbGl6ZWQuCisgICAgICAgIGlmIChl
bnRyeS52YWx1ZS5pc0ltcG9ydGVkKCkgJiYgIWVudHJ5LnZhbHVlLmlzSW1wb3J0ZWROYW1lc3Bh
Y2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFN5bWJvbFRhYmxlRW50cnkg
c3ltYm9sVGFibGVFbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQoZW50cnkua2V5LmdldCgpKTsKKyAg
ICAgICAgQVNTRVJUKCFzeW1ib2xUYWJsZUVudHJ5LmlzTnVsbCgpKTsKKyAgICAgICAgVmFyT2Zm
c2V0IG9mZnNldCA9IHN5bWJvbFRhYmxlRW50cnkudmFyT2Zmc2V0KCk7CisgICAgICAgIGlmIChv
ZmZzZXQuaXNTY29wZSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEFTU0VSVChv
ZmZzZXQuaXNTdGFjaygpKTsKKyAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZyZWdpc3RlckZv
cihvZmZzZXQuc3RhY2tPZmZzZXQoKSkpOworICAgIH0KK30KKwogQnl0ZWNvZGVHZW5lcmF0b3I6
On5CeXRlY29kZUdlbmVyYXRvcigpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggODljZGVhZDEzNTQ0
ODFjNzQ2NjcwZTM1Zjk2MDA1OTM3ZmI5NWJhNy4uMTZiYmMwZGRjMGFkZjQwOTFkOGExMzk0NDRh
YmIzOTM0MGY1MDgxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMjY5LDYgKzI2OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2RlKiwgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBG
dW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQ
cm9maWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKICAgICAgICAgQnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSosIFVubGlua2VkRXZhbENvZGVCbG9jayosIERlYnVn
Z2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAg
ICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCopOwogCiAgICAgICAgIH5CeXRlY29kZUdlbmVyYXRvcigpOwog
ICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAppbmRleCA5YzZlNzZmMmY0MmJkZGNlOTY1YjgyNDIyOGFiNjUyMThmZTBl
MTdlLi4zYmJkMjAxMjY1YzRmZmY2NmY4YWZlMjFlMDJhMDI3YWM0OGE0ZjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0yODk1LDggKzI4OTUsMTcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gTW9kdWxlUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotdm9pZCBNb2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCopCit2b2lkIE1vZHVsZVByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7CisgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBzdGFydExpbmUoKSwgc3RhcnRTdGFy
dE9mZnNldCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgpKTsKKworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBkc3RSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBnZW5lcmF0
b3IuZW1pdExvYWQoZHN0UmVnaXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KHN0YXJ0U3RhcnRPZmZzZXQoKSk7CisgICAgZW1p
dFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGRzdFJlZ2lzdGVyLmdldCgpKTsKKworICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBsYXN0TGluZSgpLCBz
dGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFbmQo
ZHN0UmVnaXN0ZXIuZ2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMwNTcsMzAgKzMw
NjYsMzcgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKIAogdm9pZCBJbXBvcnREZWNsYXJhdGlv
bk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQogewor
ICAgIC8vIERvIG5vdGhpbmcgYXQgdGhlIHJ1bnRpbWUuCiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogdm9pZCBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQogeworICAgIC8vIERvIG5vdGhpbmcgYXQgdGhl
IHJ1bnRpbWUuCiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnRE
ZWZhdWx0RGVjbGFyYXRpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBFeHBvcnREZWZh
dWx0RGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKikKK3ZvaWQgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBB
U1NFUlQobV9kZWNsYXJhdGlvbik7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9kZWNs
YXJhdGlvbik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnRM
b2NhbERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBFeHBvcnRMb2Nh
bERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCopCit2b2lkIEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogeworICAgIEFTU0VS
VChtX2RlY2xhcmF0aW9uKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2RlY2xhcmF0
aW9uKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydE5hbWVk
RGVjbGFyYXRpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIEV4cG9ydE5hbWVkRGVj
bGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KikKIHsKKyAgICAvLyBEbyBub3RoaW5nIGF0IHRoZSBydW50aW1lLgogfQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlIC0tLS0t
LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCmluZGV4IDBhMTYyNGU3MzExNzY0ZjM3NzA2ZGJiNDE5ZjYzZWViNzYyYmJiNDcu
LjE3ZWRkZDIzYWExMjFjZWE5MDA3NzBjNDgxN2E3OTVjYzZkOTNjMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00Miw2ICs0Miw3
IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3Rh
dHVzLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKQEAgLTM4MzMsNiArMzgzNCwxMiBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAg
ICAgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3MgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cykKICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXREaXJlY3QobV9p
bmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgTW9kdWxlVmFyOiB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbHJlYWR5
IHN0cm9uZ2x5IHJlZmVyZW5jZWQgYnkgdGhlIENvZGVCbG9jay4KKyAgICAgICAgICAgICAgICBK
U01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU01vZHVsZUVu
dmlyb25tZW50Kj4oY3VycmVudEluc3RydWN0aW9uWzZdLnUuanNDZWxsLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdlYWtKU0NvbnN0YW50KG1vZHVs
ZUVudmlyb25tZW50KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgQ2xvc3Vy
ZVZhcjoKICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6
IHsKQEAgLTQwMDIsNiArNDAwOSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0Q2xvc3Vy
ZVZhciwgT3BJbmZvKG9wZXJhbmQpLCBPcEluZm8ocHJlZGljdGlvbiksIHNjb3BlTm9kZSkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBN
b2R1bGVWYXI6CiAgICAgICAgICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQw
ODYsNiArNDA5NCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQorICAgICAgICAgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgICAgICAgICBjYXNlIER5
bmFtaWM6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcAppbmRleCA5MDQ0YTA3OWQ0ZjQ3NTEwZGY4MDAzODJmYWE0NmQ0MDJmMGY1
YjJjLi5hM2U4NjMyNjZkNDQ1NzA3ODgyN2YxMzIyMWZiMmFiYjFmMTExZWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yMTcsNiArMjE3
LDkgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKIAogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3Bl
OiB7CiAgICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gUmVzb2x2ZU1vZGVBbmRUeXBl
KHBjWzRdLnUub3BlcmFuZCkudHlwZSgpOworICAgICAgICAvLyBJbXBvcnRlZCBiaW5kaW5ncyBh
cmUgYWx3YXlzIGltbXV0YWJsZS4KKyAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IE1vZHVsZVZh
cikKKyAgICAgICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwogICAgICAgICAvLyBJZiB3ZSdy
ZSB3cml0aW5nIHRvIGEgcmVhZG9ubHkgcHJvcGVydHkgd2UgZW1pdCBhIER5bmFtaWMgcHV0IHRo
YXQKICAgICAgICAgLy8gdGhlIERGRyBjYW4ndCBjdXJyZW50bHkgaGFuZGxlLgogICAgICAgICBp
ZiAocmVzb2x2ZVR5cGUgPT0gRHluYW1pYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDEwNTAxYzFkMDE2YjE5ZWVlY2E0ZDI4
NWQyNjY1ZWNjYmFmODJiNGYuLjZhYjMyYWFmOTdhYWZmZGFhZTdjOWNmM2RlMmIzMGNhYzZlYTdk
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5o
IgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU05vdEFuT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5o
IgpAQCAtOTcsNiArOTgsNyBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnJpZW5kbHlTb3VyY2VVUkwo
KSBjb25zdAogICAgIAogICAgIHN3aXRjaCAoY29kZVR5cGUpIHsKICAgICBjYXNlIFN0YWNrRnJh
bWVFdmFsQ29kZToKKyAgICBjYXNlIFN0YWNrRnJhbWVNb2R1bGVDb2RlOgogICAgIGNhc2UgU3Rh
Y2tGcmFtZUZ1bmN0aW9uQ29kZToKICAgICBjYXNlIFN0YWNrRnJhbWVHbG9iYWxDb2RlOgogICAg
ICAgICBpZiAoIXNvdXJjZVVSTC5pc0VtcHR5KCkpCkBAIC0xMTgsNiArMTIwLDkgQEAgU3RyaW5n
IFN0YWNrRnJhbWU6OmZyaWVuZGx5RnVuY3Rpb25OYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lKSBj
b25zdAogICAgIGNhc2UgU3RhY2tGcmFtZUV2YWxDb2RlOgogICAgICAgICB0cmFjZUxpbmUgPSAi
ZXZhbCBjb2RlIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGFja0ZyYW1lTW9kdWxlQ29k
ZToKKyAgICAgICAgdHJhY2VMaW5lID0gIm1vZHVsZSBjb2RlIjsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBTdGFja0ZyYW1lTmF0aXZlQ29kZToKICAgICAgICAgaWYgKGNhbGxlZSkKICAgICAg
ICAgICAgIHRyYWNlTGluZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUsIHN0
YWNrRnJhbWVDYWxsZWUpLmltcGwoKTsKQEAgLTQ1MSw2ICs0NTYsOCBAQCBzdGF0aWMgU3RhY2tG
cmFtZUNvZGVUeXBlIGdldFN0YWNrRnJhbWVDb2RlVHlwZShTdGFja1Zpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgc3dpdGNoICh2aXNpdG9yLT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBTdGFja1Zpc2l0
b3I6OkZyYW1lOjpFdmFsOgogICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUV2YWxDb2RlOworICAg
IGNhc2UgU3RhY2tWaXNpdG9yOjpGcmFtZTo6TW9kdWxlOgorICAgICAgICByZXR1cm4gU3RhY2tG
cmFtZU1vZHVsZUNvZGU7CiAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpGdW5jdGlvbjoK
ICAgICAgICAgcmV0dXJuIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGU7CiAgICAgY2FzZSBTdGFja1Zp
c2l0b3I6OkZyYW1lOjpHbG9iYWw6CkBAIC0xMTc2LDYgKzExODMsNTQgQEAgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEpTVmFsdWUKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCitKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCit7
CisgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOworICAgIFNhbXBsaW5nU2NvcGUgc2FtcGxpbmdT
Y29wZSh0aGlzKTsKKworICAgIEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52bSgp
KTsKKyAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVj
dG9yQnVzeSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5n
QVBJTG9jaygpKTsKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgICAgIHJldHVy
biBqc051bGwoKTsKKworICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xv
YmFsT2JqZWN0KCkpOworICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNlKCkpCisgICAgICAgIHJl
dHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwor
CisgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVj
dXRpb24oY2FsbEZyYW1lLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwpOworICAgIGlmIChV
TkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNh
bGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOwor
ICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVC
bG9jaygpOworCisgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5k
aWRGaXJlKGNhbGxGcmFtZSkpKQorICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCisKKyAgICAvLyBUaGUg
fHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRlZmluZWRgLgorICAgIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52
aXJvbm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1p
bnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVj
b3Jkcy1nZXR0aGlzYmluZGluZworICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwor
ICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBz
Y29wZS0+Z2xvYmFsT2JqZWN0KCksIHNjb3BlKSwganNVbmRlZmluZWQoKSwgMSk7CisKKyAgICBp
ZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAg
ICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZVVS
TCgpLCBleGVjdXRhYmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7
CisKKyAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAgIEpTVmFsdWUgcmVzdWx0OworICAgIHsK
KyAgICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdl
dCgpKTsKKyAgICAgICAgcmVzdWx0ID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5l
eGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9CisKKyAgICBpZiAoTGVnYWN5UHJv
ZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAgICAgIHByb2ZpbGVy
LT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFi
bGUtPmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKKworICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHJlc3VsdCk7Cit9CisKIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJl
dGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQp
CiB7CiAgICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2Jq
ZWN0KCktPmRlYnVnZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCmluZGV4IDEzMmM5NWQxN2Y0ZTEwOWJhMzdiYmNiMDE4NzI3MzJiMmY5
NTExNmYuLjRmZWZhYTZjZjhlMzFhZjJkMzU5ZDE2M2JhYzhhMWE0MDk1YWY0NGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC01NCw4
ICs1NCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0Fycm93RnVuY3Rpb247CiAg
ICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFz
cyBKU01vZHVsZUVudmlyb25tZW50OworICAgIGNsYXNzIEpTTW9kdWxlUmVjb3JkOwogICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsK
KyAgICBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsK
ICAgICBjbGFzcyBKU1Njb3BlOwogICAgIGNsYXNzIFNhbXBsaW5nVG9vbDsKQEAgLTc2LDYgKzc5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBTdGFja0ZyYW1lQ29kZVR5cGUgewogICAg
ICAgICBTdGFja0ZyYW1lR2xvYmFsQ29kZSwKICAgICAgICAgU3RhY2tGcmFtZUV2YWxDb2RlLAor
ICAgICAgICBTdGFja0ZyYW1lTW9kdWxlQ29kZSwKICAgICAgICAgU3RhY2tGcmFtZUZ1bmN0aW9u
Q29kZSwKICAgICAgICAgU3RhY2tGcmFtZU5hdGl2ZUNvZGUKICAgICB9OwpAQCAtMjEyLDYgKzIx
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKENhbGxG
cmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNW
YWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNPYmplY3QqIGV4ZWN1
dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBl
LCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0
KTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwg
SlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsKKyAgICAgICAgSlNWYWx1ZSBleGVjdXRlKE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNNb2R1bGVFbnZpcm9ubWVudCop
OwogCiAgICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9u
KiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQm
IGFyZ2MpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXggZDM3NmRiNDIxN2ZhNjFlNmMzMmVhOWRhMjdhNzVi
ZmIwMzMwYjNiNy4uMGIxZjQ1NWYxNzc5ZWNiMTU5YzNhNDRlODMwODVlNzIzZDNlYjExNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5j
cHAKQEAgLTE4MSw2ICsxODEsOCBAQCBTdGFja1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlwZSBTdGFj
a1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSgpIGNvbnN0CiAgICAgc3dpdGNoIChjb2RlQmxvY2so
KS0+Y29kZVR5cGUoKSkgewogICAgIGNhc2UgRXZhbENvZGU6CiAgICAgICAgIHJldHVybiBDb2Rl
VHlwZTo6RXZhbDsKKyAgICBjYXNlIE1vZHVsZUNvZGU6CisgICAgICAgIHJldHVybiBDb2RlVHlw
ZTo6TW9kdWxlOwogICAgIGNhc2UgRnVuY3Rpb25Db2RlOgogICAgICAgICByZXR1cm4gQ29kZVR5
cGU6OkZ1bmN0aW9uOwogICAgIGNhc2UgR2xvYmFsQ29kZToKQEAgLTE5OSw2ICsyMDEsOSBAQCBT
dHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVuY3Rpb25OYW1lKCkKICAgICBjYXNlIENvZGVU
eXBlOjpFdmFsOgogICAgICAgICB0cmFjZUxpbmUgPSBBU0NJSUxpdGVyYWwoImV2YWwgY29kZSIp
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENvZGVUeXBlOjpNb2R1bGU6CisgICAgICAgIHRy
YWNlTGluZSA9IEFTQ0lJTGl0ZXJhbCgibW9kdWxlIGNvZGUiKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDb2RlVHlwZTo6TmF0aXZlOgogICAgICAgICBpZiAoY2FsbGVlKQogICAgICAgICAg
ICAgdHJhY2VMaW5lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKGNhbGxGcmFtZSgpLCBjYWxs
ZWUpLmltcGwoKTsKQEAgLTIxOSw2ICsyMjQsNyBAQCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFt
ZTo6c291cmNlVVJMKCkKIAogICAgIHN3aXRjaCAoY29kZVR5cGUoKSkgewogICAgIGNhc2UgQ29k
ZVR5cGU6OkV2YWw6CisgICAgY2FzZSBDb2RlVHlwZTo6TW9kdWxlOgogICAgIGNhc2UgQ29kZVR5
cGU6OkZ1bmN0aW9uOgogICAgIGNhc2UgQ29kZVR5cGU6Okdsb2JhbDogewogICAgICAgICBTdHJp
bmcgc291cmNlVVJMID0gY29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
aAppbmRleCAwMDM2YTc4OWM1OGUxOWFlMTNiMGQ0YWJmYjc1NTgzZTliYjQ2NzM0Li40MWJmYzcw
ODgyMGVjY2ZjYWM3MzViMzliNDIyNDcxM2ViZTUyZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCkBAIC01Miw2ICs1Miw3IEBAIGNs
YXNzIFN0YWNrVmlzaXRvciB7CiAgICAgICAgICAgICBHbG9iYWwsCiAgICAgICAgICAgICBFdmFs
LAogICAgICAgICAgICAgRnVuY3Rpb24sCisgICAgICAgICAgICBNb2R1bGUsCiAgICAgICAgICAg
ICBOYXRpdmUKICAgICAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGJi
Yzg1MjNmNWJiMjNhMzkzMGMwOTRlZDQ4NjIxNzQ2NGQ4NmM1NTEuLjg0ZjM2ZDU0MGYzY2JhYTFh
ZWNjNTUzYWRmOGM0NjE0YjdiZGU4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAg
LTQ4Niw2ICs0ODYsNyBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJ
VENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAKICAgICBzd2l0Y2ggKG1fY29kZUJsb2Nr
LT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBHbG9iYWxDb2RlOgorICAgIGNhc2UgTW9kdWxlQ29k
ZToKICAgICBjYXNlIEV2YWxDb2RlOgogICAgICAgICBtX2NvZGVCbG9jay0+bV9zaG91bGRBbHdh
eXNCZUlubGluZWQgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDQ4Y2RmMTFmZDM2ZmFmZDk2
YmYyYmI2NzFmNTVjMzFkNDU3ZTY0NDkuLjlhNGFlNDU1MjlkZWZlNDc1ZDY3N2JmNzA0YjVjNjA3
NmUzZWQzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAj
aW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFi
bGUuaCIKKyNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KIAogCkBAIC03MDMsNiArNzA0LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3Jl
c29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYXNlIENs
b3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgICAgICBlbWl0UmVzb2x2ZUNsb3N1
cmUoZHN0LCBzY29wZSwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpLCBkZXB0
aCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFyOgorICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoY3VycmVudEluc3RydWN0aW9uWzZdLnUuanNDZWxsLmdldCgpKSwgcmVnVDAp
OworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAg
YnJlYWs7CkBAIC03MTYsNyArNzIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVf
c2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3cKICAgICBp
bnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBSZXNvbHZlVHlw
ZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kKTsKIAotICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0
eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZh
cikKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUg
PT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVWYXIgfHwgcmVzb2x2ZVR5cGUg
PT0gTW9kdWxlVmFyKQogICAgICAgICByZXR1cm47CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
CkBAIC03NzgsNiArNzgzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAg
IGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFy
OgogICAgIGNhc2UgTG9jYWxDbG9zdXJlVmFyOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KQEAgLTg1Miw2ICs4NTgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgZW1p
dFZhckluamVjdGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7
CiAgICAgICAgIGVtaXRQdXRDbG9zdXJlVmFyKHNjb3BlLCAqb3BlcmFuZFNsb3QsIHZhbHVlLCBj
dXJyZW50SW5zdHJ1Y3Rpb25bNV0udS53YXRjaHBvaW50U2V0KTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2Fz
ZShqdW1wKCkpOwogICAgICAgICBicmVhazsKQEAgLTg3Myw3ICs4ODAsMTIgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0MKICAgICAgICAgcmV0dXJuOwogICAgIHdoaWxlIChsaW5rQ291bnQtLSkK
ICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
UHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9uKTsKKworICAgIGlmIChyZXNvbHZlVHlwZSA9
PSBNb2R1bGVWYXIpIHsKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25s
eV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7CisgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3Vy
cmVudEluc3RydWN0aW9uKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1l
bnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGU5MjZmNTJkYzc2ZDllZGUyZjBlM2E1YjNkYzI2
YjMzNmE5MmY4NWQuLjAyNjliYTQ2YjFiYjFkZTIyMDQzMzViZWI5OTMyYTBkZGQ3M2IwYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xMzIsOCArMTMy
LDggQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKG1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsID09IDY0KTsKICNlbmRpZgogICAgIEFTU0VSVChT
dHJpbmdUeXBlID09IDYpOwotICAgIEFTU0VSVChPYmplY3RUeXBlID09IDE4KTsKLSAgICBBU1NF
UlQoRmluYWxPYmplY3RUeXBlID09IDE5KTsKKyAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAyMCk7
CisgICAgQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAyMSk7CiAgICAgQVNTRVJUKE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPT0gMSk7CiAgICAgQVNTRVJUKEltcGxlbWVudHNIYXNJbnN0YW5jZSA9
PSAyKTsKICAgICBBU1NFUlQoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9PSA4KTsKQEAg
LTE0MSwxNSArMTQxLDE3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQog
ICAgIEFTU0VSVChHbG9iYWxDb2RlID09IDApOwogICAgIEFTU0VSVChFdmFsQ29kZSA9PSAxKTsK
ICAgICBBU1NFUlQoRnVuY3Rpb25Db2RlID09IDIpOworICAgIEFTU0VSVChNb2R1bGVDb2RlID09
IDMpOwogCiAgICAgc3RhdGljX2Fzc2VydChHbG9iYWxQcm9wZXJ0eSA9PSAwLCAiTExJbnQgYXNz
dW1lcyBHbG9iYWxQcm9wZXJ0eSBSZXN1bHRUeXBlIGlzID09IDAiKTsKICAgICBzdGF0aWNfYXNz
ZXJ0KEdsb2JhbFZhciA9PSAxLCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXIgUmVzdWx0VHlwZSBp
cyA9PSAxIik7CiAgICAgc3RhdGljX2Fzc2VydChDbG9zdXJlVmFyID09IDIsICJMTEludCBhc3N1
bWVzIENsb3N1cmVWYXIgUmVzdWx0VHlwZSBpcyA9PSAyIik7CiAgICAgc3RhdGljX2Fzc2VydChM
b2NhbENsb3N1cmVWYXIgPT0gMywgIkxMSW50IGFzc3VtZXMgTG9jYWxDbG9zdXJlVmFyIFJlc3Vs
dFR5cGUgaXMgPT0gMyIpOwotICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHlXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzID09IDQsICJMTEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5V2l0aFZh
ckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNSwgIkxMSW50IGFzc3VtZXMgR2xv
YmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDUiKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDYsICJMTElu
dCBhc3N1bWVzIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMg
PT0gNiIpOwotICAgIHN0YXRpY19hc3NlcnQoRHluYW1pYyA9PSA3LCAiTExJbnQgYXNzdW1lcyBE
eW5hbWljIFJlc3VsdFR5cGUgaXMgPT0gNyIpOworICAgIHN0YXRpY19hc3NlcnQoTW9kdWxlVmFy
ID09IDQsICJMTEludCBhc3N1bWVzIE1vZHVsZVZhciBSZXN1bHRUeXBlIGlzID09IDQiKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA1
LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVz
dWx0VHlwZSBpcyA9PSA1Iik7CisgICAgc3RhdGljX2Fzc2VydChHbG9iYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzID09IDYsICJMTEludCBhc3N1bWVzIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA2Iik7CisgICAgc3RhdGljX2Fzc2VydChDbG9zdXJl
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA3LCAiTExJbnQgYXNzdW1lcyBDbG9zdXJlVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDciKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KER5bmFtaWMgPT0gOCwgIkxMSW50IGFzc3VtZXMgRHluYW1pYyBSZXN1bHRUeXBlIGlz
ID09IDgiKTsKICAgICAKICAgICBBU1NFUlQoUmVzb2x2ZU1vZGVBbmRUeXBlOjptYXNrID09IDB4
ZmZmZik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVu
dHJ5cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dC5jcHAKaW5kZXggOWQwMDEwNmI5YTgyNzZmNDg0MjBmNmI1NDZjMzJkNTkzMGEzNmI2OC4uYTZj
M2QyN2UyODBhMDQ0NzkyMjg2OWQ3ODJjZmUyYTU1YWI3ODBjMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTk3LDEyICs5NywzMCBA
QCBzdGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29k
ZUJsb2NrKQogICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAK
K3N0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAodm0uY2FuVXNlSklUKCkp
IHsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICAgICAgYWRvcHRSZWYo
bmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dl
bmVyYXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCisK
KyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAg
ICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVMTEludENvZGVSZWYobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKK30KKwogdm9pZCBz
ZXRFbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgc3dpdGNo
IChjb2RlQmxvY2stPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIEdsb2JhbENvZGU6CiAgICAgICAg
IHNldFByb2dyYW1FbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwogICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBNb2R1bGVDb2RlOgorICAgICAgICBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCh2
bSwgY29kZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRXZhbENvZGU6CiAgICAg
ICAgIHNldEV2YWxFbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwCmluZGV4IGEyYTZiMmIxMWM1NjgxZTBiNmU5NzBjNGZkMTFjOTZlMTlkYjkzZGEuLjll
M2Y0NDg3YjA4NTIwMTM3MmIyZDdiMjdiNzhjZTU5MWFiZDk3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVj
b3JkLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdGFjay5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmNwcAppbmRleCA4YWI5NmIzMDQ3NWZkNTU0ZGVmOGIzMjY2MjQ5NjYzMmVhZjk2ZDlhLi5h
ZjY4ODRlNWVkZTdiZWJlMDRmMzdiM2YwMDA5MWVlMTZmOTUxMTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKQEAgLTg4LDYgKzg4LDExIEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAg
cmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9u
UHRyKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCAicHJvZ3JhbSIpOwogfQogCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorewor
ICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5j
dGlvblB0cihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksICJtb2R1bGVfcHJvZ3JhbSIp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBMTEludAogCiAjZWxzZSAvLyBFTkFCTEUoSklUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAppbmRleCAwZDFiZTZiZGFlYWRm
Nzk0ODdjZTkwNjY4MjY0Njg1MTg4YThiZDEyLi45NWIwZjQ0ODQ4YmNjNTI5ZDE1MDNlMjg5Yjkz
ZWZlMzcwNWM4MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
aApAQCAtNDYsNiArNDYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxs
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkxMSW50CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA1YWQ4MzQ2NWNkMWE0ZThmNGU5NjRh
NjdlZDA4YTE1N2U3ZmEzNzVhLi4yOTg4ZTFlYWJhMjA3M2E3MTQ3NDM1ODIyZTQ1OTZhZGQ0YWM0
Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCkBAIC0xNjEsOCArMTYxLDggQEAgY29uc3QgU2xvd1B1dEFycmF5U3RvcmFn
ZVNoYXBlID0gMzAKIAogIyBUeXBlIGNvbnN0YW50cy4KIGNvbnN0IFN0cmluZ1R5cGUgPSA2Ci1j
b25zdCBPYmplY3RUeXBlID0gMTgKLWNvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDE5Citjb25zdCBP
YmplY3RUeXBlID0gMjAKK2NvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDIxCiAKICMgVHlwZSBmbGFn
cyBjb25zdGFudHMuCiBjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQpAQCAtMTc2LDYg
KzE3Niw3IEBAIGNvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAog
Y29uc3QgR2xvYmFsQ29kZSA9IDAKIGNvbnN0IEV2YWxDb2RlID0gMQogY29uc3QgRnVuY3Rpb25D
b2RlID0gMgorY29uc3QgTW9kdWxlQ29kZSA9IDMKIAogIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxz
IHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCiBjb25zdCBMTEludFJldHVyblBD
ID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldApAQCAtMTkxLDEwICsxOTIsMTEgQEAgY29uc3Qg
R2xvYmFsUHJvcGVydHkgPSAwCiBjb25zdCBHbG9iYWxWYXIgPSAxCiBjb25zdCBDbG9zdXJlVmFy
ID0gMgogY29uc3QgTG9jYWxDbG9zdXJlVmFyID0gMwotY29uc3QgR2xvYmFsUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzID0gNAotY29uc3QgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcyA9IDUKLWNvbnN0IENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNgotY29u
c3QgRHluYW1pYyA9IDcKK2NvbnN0IE1vZHVsZVZhciA9IDQKK2NvbnN0IEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDUKK2NvbnN0IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgPSA2Citjb25zdCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDcK
K2NvbnN0IER5bmFtaWMgPSA4CiAKIGNvbnN0IFJlc29sdmVNb2RlTWFzayA9IDB4ZmZmZgogCkBA
IC04ODQsNiArODg2LDExIEBAIF9sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgogICAgIGRpc3BhdGNo
KDApCiAKIAorX2xsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5v
dEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xs
aW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisK
KwogX2xsaW50X2V2YWxfcHJvbG9ndWU6CiAgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxv
Y2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBf
bGxpbnRfdHJhY2VfcHJvbG9ndWUpCiAgICAgZGlzcGF0Y2goMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDIx
NTJhMmYyNzdhZGU1ODc5NzZhMWMzZjEyMDIzNzI5YjM4YTU5YS4uNWMwMGU2NDZmNjAxMGU2YmE2
ODYxZTM0Y2U5Y2Y3NzRhNWE4YzQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE5MTgsNiArMTkxOCwxMiBA
QCBtYWNybyBnZXRHbG9iYWxPYmplY3QoZHN0KQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhd
CiBlbmQKIAorbWFjcm8gZ2V0SW1wb3J0ZWRNb2R1bGVTY29wZShkc3QpCisgICAgbG9hZHBGcm9t
SW5zdHJ1Y3Rpb24oNiwgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKGRzdCwgdDEpCisg
ICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KK2VuZAorCiBtYWNybyB2YXJJbmplY3Rpb25DaGVj
ayhzbG93UGF0aCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKQEAgLTE5NTcsMTAgKzE5NjMsMTUgQEAgX2xs
aW50X29wX3Jlc29sdmVfc2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAogLnJDbG9zdXJlVmFyOgot
ICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrcworICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuck1vZHVsZVZhcgogICAgIHJlc29s
dmVTY29wZSgpCiAgICAgZGlzcGF0Y2goNykKIAorLnJNb2R1bGVWYXI6CisgICAgYmluZXEgdDAs
IE1vZHVsZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKKyAgICBn
ZXRJbXBvcnRlZE1vZHVsZVNjb3BlKDEpCisgICAgZGlzcGF0Y2goNykKKwogLnJHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
CiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQpAQCAtMjE0NCwxMyArMjE1NSwxOCBA
QCBfbGxpbnRfb3BfcHV0X3RvX3Njb3BlOgogICAgIGRpc3BhdGNoKDcpCiAKIC5wQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3M6Ci0gICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzLCAucER5bmFtaWMKKyAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3MsIC5wTW9kdWxlVmFyCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5k
cygxLCAzKQogICAgIHZhckluamVjdGlvbkNoZWNrKC5wRHluYW1pYykKICAgICBsb2FkVmFyaWFi
bGUoMSwgdDApCiAgICAgcHV0Q2xvc3VyZVZhcigpCiAgICAgZGlzcGF0Y2goNykKIAorLnBNb2R1
bGVWYXI6CisgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnBEeW5hbWljCisgICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVf
ZXJyb3IpCisgICAgZGlzcGF0Y2goNykKKwogLnBEeW5hbWljOgogICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX3B1dF90b19zY29wZSkKICAgICBkaXNwYXRjaCg3KQpAQCAtMjIzMyw0
ICsyMjQ5LDQgQEAgX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgogICAgIGxvYWRw
IEpTQXJyb3dGdW5jdGlvbjo6bV9ib3VuZFRoaXNbdDBdLCB0MAogICAgIGxvYWRpc0Zyb21JbnN0
cnVjdGlvbigxLCB0MSkKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNo
KDIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgIGRpc3BhdGNoKDIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCmluZGV4IDJmYTgx
YWFjZmMxZjhmMmJkNzY0MmYzODM5YjNiMTI2MDU4N2YyZjIuLmY2MjM4ZmI5NjgwMmJlNTM3ZTkx
YWRjMjZiODJkODkwYjk1NDAzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgTW9kdWxlQW5hbHl6
ZXI6OmV4cG9ydFZhcmlhYmxlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2Fs
TmFtZSwKICAgICB9CiAKICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29y
ZCgpLT5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOwotICAgIGlmIChpbXBvcnRFbnRyeS5p
c05hbWVzcGFjZSh2bSgpKSkgeworICAgIGlmICh2YXJpYWJsZS5pc0ltcG9ydGVkTmFtZXNwYWNl
KCkpIHsKICAgICAgICAgLy8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJpbmRpbmcuCiAgICAgICAgIC8v
IGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9tICJtb2QiCiAgICAgICAgIC8vIGV4cG9ydCB7IG5h
bWVzcGFjZSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggOGE5
MzYxNTdiM2Y2OTYwYjYzYmE4MWViNDc3Njg4NmZhMDM0NTk4YS4uN2YwNTAxYzY1MzEyZGI0ZDRm
Zjg1ZGM0ZGIxM2FmMjYzMWRkZWM2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcApAQCAtMjMxOSw3ICsyMzE5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6SW1wb3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhlclQKICAg
ICB9CiAKICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobG9jYWxOYW1lVG9rZW4ubV90eXBlICYgS2V5
d29yZFRva2VuRmxhZywgIkNhbm5vdCB1c2Uga2V5d29yZCBhcyBpbXBvcnRlZCBiaW5kaW5nIG5h
bWUiKTsKLSAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBkZWNs
YXJlVmFyaWFibGUobG9jYWxOYW1lLCBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24s
IERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1wb3J0ZWQpOworICAgIERlY2xhcmF0aW9uUmVzdWx0
TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xhcmVWYXJpYWJsZShsb2NhbE5hbWUsIERlY2xh
cmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiwgKHNwZWNpZmllclR5cGUgPT0gSW1wb3J0U3Bl
Y2lmaWVyVHlwZTo6TmFtZXNwYWNlSW1wb3J0KSA/IERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1w
b3J0ZWROYW1lc3BhY2UgOiBEZWNsYXJhdGlvbkltcG9ydFR5cGU6OkltcG9ydGVkKTsKICAgICBp
ZiAoZGVjbGFyYXRpb25SZXN1bHQgIT0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkKSB7CiAgICAg
ICAgIGZhaWxJZlRydWVJZlN0cmljdChkZWNsYXJhdGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVz
dWx0OjpJbnZhbGlkU3RyaWN0TW9kZSwgIkNhbm5vdCBkZWNsYXJlIGFuIGltcG9ydGVkIGJpbmRp
bmcgbmFtZWQgIiwgbG9jYWxOYW1lLT5pbXBsKCksICIgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAg
ICAgaWYgKGRlY2xhcmF0aW9uUmVzdWx0ICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBs
aWNhdGVEZWNsYXJhdGlvbikKQEAgLTI1NjAsMTAgKzI1NjAsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0
RGVjbGFyYQogICAgICAgICAgICAgLy8gZG9lcyBub3QgaGF2ZSBlZmZlY3Qgb24gdGhlIGN1cnJl
bnQgbW9kdWxlJ3Mgc2NvcGUuIEJ1dCwKICAgICAgICAgICAgIC8vICAgZXhwb3J0IHsgQSwgQiwg
QyBhcyBEIH0KICAgICAgICAgICAgIC8vIHdpbGwgcmVmZXJlbmNlIHRoZSBjdXJyZW50IG1vZHVs
ZSdzIGJpbmRpbmdzLgotICAgICAgICAgICAgZm9yIChjb25zdCBJZGVudGlmaWVyKiBsb2NhbE5h
bWUgOiBtYXliZUxvY2FsTmFtZXMpIHsKLSAgICAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+
dXNlVmFyaWFibGUobG9jYWxOYW1lLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpsb2Nh
bE5hbWUpOworICAgICAgICAgICAgZm9yIChjb25zdCBJZGVudGlmaWVyKiBsb2NhbE5hbWUgOiBt
YXliZUxvY2FsTmFtZXMpCiAgICAgICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPm1vZHVsZVNj
b3BlRGF0YSgpLmV4cG9ydEJpbmRpbmcoKmxvY2FsTmFtZSk7Ci0gICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHBvcnROYW1lZERlY2xhcmF0
aW9uKGV4cG9ydExvY2F0aW9uLCBzcGVjaWZpZXJMaXN0LCBtb2R1bGVOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGMyZTZhNjUwNDA4OTkxNWRjMjgwNTdmZmUw
MWYwNGVlYWRlMDFmMTQuLmY2OTdiZTMzNmJiODBjNTI1MDQyODU2YjhjMDg3NTUzNzMzYTEyMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTAwLDYgKzEwMCw3IEBA
IGVudW0gY2xhc3MgRGVjbGFyYXRpb25UeXBlIHsKIAogZW51bSBjbGFzcyBEZWNsYXJhdGlvbklt
cG9ydFR5cGUgewogICAgIEltcG9ydGVkLAorICAgIEltcG9ydGVkTmFtZXNwYWNlLAogICAgIE5v
dEltcG9ydGVkCiB9OwogCkBAIC0zMzUsNiArMzM2LDEwIEBAIHN0cnVjdCBTY29wZSB7CiAKICAg
ICAgICAgaWYgKGltcG9ydFR5cGUgPT0gRGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBvcnRlZCkK
ICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2V0SXNJbXBvcnRlZCgpOwor
ICAgICAgICBlbHNlIGlmIChpbXBvcnRUeXBlID09IERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1w
b3J0ZWROYW1lc3BhY2UpIHsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
c2V0SXNJbXBvcnRlZCgpOworICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5z
ZXRJc0ltcG9ydGVkTmFtZXNwYWNlKCk7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIWFkZFJl
c3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0
OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCmluZGV4IDVlZDJhNmJkYTkyODM4ZTI5
NjQ4MmY2NmMwNzg1YTM2MTFhZTYxNWMuLjc2YzcwOTZlOWU2NDQ3ZWJiYmRiMGQ5NjVhM2VhNGEy
NGE1MTczZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oCkBAIC00MCw2ICs0MCw3IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0xldCgpIGNvbnN0IHsgcmV0dXJu
IG1fYml0cyAmIElzTGV0OyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRXhwb3J0ZWQoKSBj
b25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0V4cG9ydGVkOyB9CiAgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzSW1wb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0ltcG9ydGVkOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzSW1wb3J0ZWROYW1lc3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX2JpdHMgJiBJc0ltcG9ydGVkTmFtZXNwYWNlOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTQ3LDYg
KzQ4LDcgQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSB7CiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldElzTGV0KCkgeyBtX2JpdHMgfD0gSXNMZXQ7IH0KICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNFeHBvcnRlZCgpIHsgbV9iaXRzIHw9IElzRXhwb3J0ZWQ7IH0KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNJbXBvcnRlZCgpIHsgbV9iaXRzIHw9IElzSW1wb3J0ZWQ7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNJbXBvcnRlZE5hbWVzcGFjZSgpIHsgbV9i
aXRzIHw9IElzSW1wb3J0ZWROYW1lc3BhY2U7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBj
bGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTU3LDcgKzU5LDggQEAgc3Ry
dWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSB7CiAgICAgICAgIElzVmFyID0gMSA8PCAyLAog
ICAgICAgICBJc0xldCA9IDEgPDwgMywKICAgICAgICAgSXNFeHBvcnRlZCA9IDEgPDwgNCwKLSAg
ICAgICAgSXNJbXBvcnRlZCA9IDEgPDwgNQorICAgICAgICBJc0ltcG9ydGVkID0gMSA8PCA1LAor
ICAgICAgICBJc0ltcG9ydGVkTmFtZXNwYWNlID0gMSA8PCA2CiAgICAgfTsKICAgICB1aW50OF90
IG1fYml0cyB7IDAgfTsKIH07CkBAIC03OSw2ICs4Miw4IEBAIGNsYXNzIFZhcmlhYmxlRW52aXJv
bm1lbnQgewogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwLnNpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjb250YWlucyhjb25zdCBS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX21h
cC5jb250YWlucyhpZGVudGlmaWVyKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCByZW1vdmUo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1cm4gbV9t
YXAucmVtb3ZlKGlkZW50aWZpZXIpOyB9CisgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0ZXJhdG9y
IGZpbmQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1
cm4gbV9tYXAuZmluZChpZGVudGlmaWVyKTsgfQorICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25z
dF9pdGVyYXRvciBmaW5kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZp
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmZpbmQoaWRlbnRpZmllcik7IH0KICAgICB2b2lkIHN3
YXAoVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpOwogICAgIHZvaWQgbWFya1ZhcmlhYmxlQXND
YXB0dXJlZElmRGVmaW5lZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlm
aWVyKTsKICAgICB2b2lkIG1hcmtWYXJpYWJsZUFzQ2FwdHVyZWQoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmNwcAppbmRleCBhYjcwZWFiYjllM2EyYTA0NTBjNjI5ZTcwNTY2NmY0ZGNj
YTAxZTI4Li5kMmVmZWNkODI5YjJjNDQ4NWRmMTA0YjdmZTQxYzJjNzY5YmQ4YTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTY3LDExICs2Nywx
OSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IENhY2hlVHlwZXMgeyB9OwogdGVtcGxh
dGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrPiB7CiAgICAg
dHlwZWRlZiBKU0M6OlByb2dyYW1Ob2RlIFJvb3ROb2RlOwogICAgIHN0YXRpYyBjb25zdCBTb3Vy
Y2VDb2RlS2V5OjpDb2RlVHlwZSBjb2RlVHlwZSA9IFNvdXJjZUNvZGVLZXk6OlByb2dyYW1UeXBl
OworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZTsKIH07CiAKIHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVz
PFVubGlua2VkRXZhbENvZGVCbG9jaz4gewogICAgIHR5cGVkZWYgSlNDOjpFdmFsTm9kZSBSb290
Tm9kZTsKICAgICBzdGF0aWMgY29uc3QgU291cmNlQ29kZUtleTo6Q29kZVR5cGUgY29kZVR5cGUg
PSBTb3VyY2VDb2RlS2V5OjpFdmFsVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgU291cmNlUGFyc2VN
b2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU7Cit9OworCit0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgQ2FjaGVUeXBlczxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+
IHsKKyAgICB0eXBlZGVmIEpTQzo6TW9kdWxlUHJvZ3JhbU5vZGUgUm9vdE5vZGU7CisgICAgc3Rh
dGljIGNvbnN0IFNvdXJjZUNvZGVLZXk6OkNvZGVUeXBlIGNvZGVUeXBlID0gU291cmNlQ29kZUtl
eTo6UHJvZ3JhbVR5cGU7CisgICAgc3RhdGljIGNvbnN0IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZTsKIH07CiAKIHRlbXBsYXRl
IDxjbGFzcyBVbmxpbmtlZENvZGVCbG9ja1R5cGUsIGNsYXNzIEV4ZWN1dGFibGVUeXBlPgpAQCAt
OTUsNyArMTAzLDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsb2Jh
bENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGUKICAgICB0eXBlZGVmIHR5cGVu
YW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3ROb2Rl
PigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmlj
dE1vZGUsCi0gICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yLCBudWxs
cHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgQ2FjaGVU
eXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGVycm9yLCBudWxscHRyLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKICAgICBpZiAoIXJvb3ROb2RlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTMyLDYgKzE0MCwxMiBAQCBVbmxpbmtlZEV2
YWxDb2RlQmxvY2sqIENvZGVDYWNoZTo6Z2V0RXZhbENvZGVCbG9jayhWTSYgdm0sIEV2YWxFeGVj
dXRhYmxlKiBleGVjdQogICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5saW5rZWRFdmFs
Q29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9k
ZSwgdGhpc1REWk1vZGUsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgdmFyaWFi
bGVzVW5kZXJURFopOwogfQogCitVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIENvZGVD
YWNoZTo6Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSYgdm0sIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVp
bHRpbk1vZGUgYnVpbHRpbk1vZGUsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3sKKyAgICBWYXJpYWJsZUVu
dmlyb25tZW50IGVtcHR5UGFyZW50VERaVmFyaWFibGVzOworICAgIHJldHVybiBnZXRHbG9iYWxD
b2RlQmxvY2s8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwg
c291cmNlLCBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIFRoaXNURFpN
b2RlOjpDaGVja0lmTmVlZGVkLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IsICZl
bXB0eVBhcmVudFREWlZhcmlhYmxlcyk7Cit9CisKIC8vIEZJWE1FOiBUaGVyZSdzIG5vIG5lZWQg
dG8gYWRkIHRoZSBmdW5jdGlvbidzIG5hbWUgdG8gdGhlIGtleSBoZXJlLiBJdCdzIGFscmVhZHkg
aW4gdGhlIHNvdXJjZSBjb2RlLgogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNo
ZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHZtLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJv
cikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggYWY3
ZGFjN2U0ODcwNDEzMTljNjNmZWM5NzU1ZTIzOTMxODgzNGNiNi4uNzE3NWZlMzk1MTJjOTM2NmU2
MTYzOTgxM2NiNmM0ZjgyMjU5OGRlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmgKQEAgLTQ1LDggKzQ1LDEwIEBAIGNsYXNzIElkZW50aWZpZXI7CiBjbGFzcyBK
U1Njb3BlOwogY2xhc3MgUGFyc2VyRXJyb3I7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKK2Ns
YXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBj
bGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7CkBA
IC01Niw3ICs1OCw3IEBAIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogCiBjbGFzcyBTb3VyY2VDb2Rl
S2V5IHsKIHB1YmxpYzoKLSAgICBlbnVtIENvZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1UeXBl
LCBGdW5jdGlvblR5cGUgfTsKKyAgICBlbnVtIENvZGVUeXBlIHsgRXZhbFR5cGUsIFByb2dyYW1U
eXBlLCBGdW5jdGlvblR5cGUsIE1vZHVsZVR5cGUgfTsKIAogICAgIFNvdXJjZUNvZGVLZXkoKQog
ICAgIHsKQEAgLTI1Nyw2ICsyNTksNyBAQCBjbGFzcyBDb2RlQ2FjaGUgewogCiAgICAgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKiBnZXRQcm9ncmFtQ29kZUJsb2NrKFZNJiwgUHJvZ3JhbUV4ZWN1
dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJT
dHJpY3RNb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKICAg
ICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdldEV2YWxDb2RlQmxvY2soVk0mLCBFdmFsRXhlY3V0
YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0
cmljdE1vZGUsIFRoaXNURFpNb2RlLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2Vy
RXJyb3ImLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiBnZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNJiwgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwg
RGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJik7CiAgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZN
JiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwog
CiAgICAgdm9pZCBjbGVhcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaAppbmRleCAxNjNiMTE2MTA0MWNjZGIzNWFkNTI5NzZjYWZlNmJk
MTFkZmM4Yjc3Li40ZmRiZDkzMTQzMDhmYjk5NTE0NTM2ODMzODNlMWJhNGUyYzgyZjc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
QEAgLTI4Myw2ICsyODMsNyBAQAogICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8oU3RyaW5n
KSBcCiAgICAgbWFjcm8oTWFwKSBcCisgICAgbWFjcm8oU2V0KSBcCiAgICAgbWFjcm8oUHJvbWlz
ZSkgXAogICAgIG1hY3JvKEludGVybmFsUHJvbWlzZSkgXAogICAgIG1hY3JvKGFicykgXApAQCAt
MzA3LDYgKzMwOCw3IEBACiAgICAgbWFjcm8oSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKSBcCiAg
ICAgbWFjcm8oZ2V0KSBcCiAgICAgbWFjcm8oc2V0KSBcCisgICAgbWFjcm8oYWRkKSBcCiAKIAog
bmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAppbmRleCBhY2JlMTQ2MjlkMjg0ZWU4MjUxMWY3M2M1NjgwOTFkZWRm
M2I0NDRmLi4xM2UyZTVhMzk3NGNhMzk1YzRiYTc1NzY5NTY4MzJjM2Y0ZmFmNjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAg
LTI3MCw2ICsyNzAsMTIgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rocm93X3Rkel9lcnJv
cikKICAgICBUSFJPVyhjcmVhdGVURFpFcnJvcihleGVjKSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJv
cikKK3sKKyAgICBCRUdJTigpOworICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSkpOworfQorCiBT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbm90KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDA2N2RmMGMz
OGU5MTIwYmY3MDdjZmRlNDFjM2VmYmYyYTY4NzJlZTMuLjMwMDk4NTVmZjZiYTJkMTUyODNkYjhm
ODVmM2NlNDU3ZGRiMjg2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCkBAIC0xODksNiArMTg5LDcgQEAgU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9lbnRlcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dl
dF9jYWxsZWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b190aGlzKTsKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3dfdGR6X2Vycm9yKTsKK1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVy
dHlfd3JpdGVfZXJyb3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9ub3QpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lcSk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX25lcSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCmluZGV4IDFiOWE3M2Q3OTMzOGFhMzkxNGYzZTQ1NDUxYmI2ZjlhMDBjYzkwOTcu
LjYxMjgzZmU1MDA2YTBiMmZjMjhiNjg2NDk0NmFhNjgzNTU1ZjEzY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiREZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRy
eXBvaW50LmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFz
ZS5oIgpAQCAtMTU5LDcgKzE2MCwxOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omluc3RhbGxD
b2RlKENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaykKICAgICAgICAgZXhlY3V0YWJsZS0+bV9w
cm9ncmFtQ29kZUJsb2NrID0gY29kZUJsb2NrOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
ICAgIAorCisgICAgY2FzZSBNb2R1bGVDb2RlOiB7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhp
cyk7CisgICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19j
YXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihnZW5lcmljQ29kZUJsb2NrKTsKKworICAgICAg
ICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7CisKKyAgICAgICAgb2xkQ29kZUJsb2NrID0g
ZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworICAgICAgICBleGVjdXRhYmxl
LT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgRXZhbENvZGU6IHsKICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0aGlzKTsKICAgICAgICAgRXZhbENv
ZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8RXZhbENvZGVCbG9jayo+KGdlbmVyaWND
b2RlQmxvY2spOwpAQCAtMjI2LDcgKzIzOCwxNyBAQCBSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRF
eGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCiAgICAgICAgICAgICBleGVjdXRhYmxlLCBleGVj
dXRhYmxlLT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwgc2NvcGUsCiAgICAgICAg
ICAgICBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBleGVjdXRhYmxlLT5zb3VyY2Uo
KS5zdGFydENvbHVtbigpKSk7CiAgICAgfQotICAgIAorCisgICAgaWYgKGNsYXNzSW5mbygpID09
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAgICAgICAgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
Pih0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ2FsbCk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxv
Y2spOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghZnVuY3Rpb24pOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1vZHVsZVByb2dyYW1Db2RlQmxvY2soCisgICAgICAgICAgICBleGVjdXRh
YmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSwg
c2NvcGUsCisgICAgICAgICAgICBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBleGVj
dXRhYmxlLT5zb3VyY2UoKS5zdGFydENvbHVtbigpKSk7CisgICAgfQorCiAgICAgUkVMRUFTRV9B
U1NFUlQoY2xhc3NJbmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpOwogICAgIFJF
TEVBU0VfQVNTRVJUKGZ1bmN0aW9uKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyk7CkBAIC0yODMsNiArMzA1LDE3
IEBAIFBhc3NSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdSZXBsYWNlbWVu
dENvZGVCbG9ja0ZvcigKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBpZiAo
Y2xhc3NJbmZvKCkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChraW5kID09IENvZGVGb3JDYWxsKTsKKyAgICAgICAgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqPih0aGlzKTsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogYmFzZWxpbmUgPSBz
dGF0aWNfY2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oCisgICAgICAgICAgICBleGVjdXRh
YmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKTsKKyAgICAg
ICAgUmVmUHRyPE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IHJlc3VsdCA9IGFkb3B0UmVmKG5ldyBN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICAgICAgQ29kZUJsb2NrOjpDb3B5UGFyc2Vk
QmxvY2ssICpiYXNlbGluZSkpOworICAgICAgICByZXN1bHQtPnNldEFsdGVybmF0aXZlKGJhc2Vs
aW5lKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBSRUxFQVNFX0FTU0VS
VChjbGFzc0luZm8oKSA9PSBGdW5jdGlvbkV4ZWN1dGFibGU6OmluZm8oKSk7CiAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRo
aXMpOwogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBiYXNlbGluZSA9IHN0YXRpY19jYXN0PEZ1bmN0
aW9uQ29kZUJsb2NrKj4oCkBAIC0zODMsNiArNDE2LDQyIEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFi
bGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRh
YmxlKj4oY2VsbCktPlByb2dyYW1FeGVjdXRhYmxlOjp+UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIH0K
IAorY29uc3QgQ2xhc3NJbmZvIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIH07CisKK01vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+
dm0oKS5tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwg
c291cmNlLCBmYWxzZSkKK3sKKyAgICBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IDA7Cisg
ICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gc291cmNlLmxlbmd0aCgpIC0gMTsKKyAgICBp
ZiAoZXhlYy0+dm0oKS50eXBlUHJvZmlsZXIoKSB8fCBleGVjLT52bSgpLmNvbnRyb2xGbG93UHJv
ZmlsZXIoKSkKKyAgICAgICAgZXhlYy0+dm0oKS5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+
aW5zZXJ0VW5leGVjdXRlZFJhbmdlKHNvdXJjZUlEKCksIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zm
c2V0LCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQpOworfQorCitNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpOworICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+KCpleGVjLT5oZWFw
KCkpKSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpOworICAgIGV4ZWN1dGFi
bGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksIG1vZHVsZVJlY29yZCk7CisKKyAgICBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGUgPSBn
bG9iYWxPYmplY3QtPmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soZXhlYywgZXhlY3V0YWJs
ZSk7CisgICAgaWYgKCF1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ay5zZXQoZXhlYy0+dm0oKSwgZXhlY3V0YWJsZSwgdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZSk7
CisKKyAgICByZXR1cm4gZXhlY3V0YWJsZTsKK30KKwordm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3Jk
KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBtX21vZHVsZVJlY29yZC5z
ZXQodm0sIHRoaXMsIG1vZHVsZVJlY29yZCk7Cit9CisKK3ZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKj4oY2VsbCktPk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjp+TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUoKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6c19pbmZvID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAK
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCAKQEAgLTUxNSw2ICs1ODQsMzggQEAgdm9pZCBQcm9ncmFtRXhlY3V0
YWJsZTo6Y2xlYXJDb2RlKCkKICAgICBCYXNlOjpjbGVhckNvZGUoKTsKIH0KIAorSlNPYmplY3Qq
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAg
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQ
cm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKKyAgICAgICAgdm0sIG1fc291
cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCisgICAg
ICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFu
YWx5emVNb2RlLCBlcnJvcik7CisgICAgaWYgKG1vZHVsZVByb2dyYW1Ob2RlKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKKyAgICByZXR1cm4g
ZXJyb3IudG9FcnJvck9iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX3NvdXJjZSk7Cit9CisK
K3ZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSog
dGhpc09iamVjdCA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpOworICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBTY3Jp
cHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkKTsKKyAg
ICBpZiAodGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKQorICAgICAgICB0aGlz
T2JqZWN0LT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3Ip
OworfQorCit2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUoKQoreworICAg
IG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA9IG51bGxwdHI7CisgICAgbV91bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2suY2xlYXIoKTsKKyAgICBCYXNlOjpjbGVhckNvZGUoKTsKK30KKwog
RnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YmFzZWxpbmVDb2RlQmxvY2tG
b3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29kZUJsb2Nr
KiByZXN1bHQ7CkBAIC01ODksNiArNjkwLDE1IEBAIHZvaWQgRXhlY3V0YWJsZUJhc2U6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgICAgIG91dC5wcmludCgiUHJvZ3JhbUV4
ZWN1dGFibGUgdy9vIENvZGVCbG9jayIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAg
aWYgKGNsYXNzSW5mbygpID09IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAg
ICAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqPihyZWFsVGhpcyk7CisgICAgICAgIGlmIChDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9jaygpKQorICAgICAgICAgICAgb3V0LnByaW50
KCpjb2RlQmxvY2spOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQucHJpbnQoIk1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlIHcvbyBDb2RlQmxvY2siKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KICAgICAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0ganNDYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KHJlYWxUaGlzKTsKICAgICBpZiAoIWZ1bmN0aW9uLT5laXRoZXJDb2Rl
QmxvY2soKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRl
eCAyMzRmMmNkN2VlMzg2MjAyNDMzYWNjNjZjNTFlMmM1MTI0YWRiMzA5Li4wM2ZkNmFmNTc2MDVl
ZjRlZDcwY2E4YTNjNTE0ZDg0YzBkYzVjODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC01Miw2ICs1Miw4IEBAIGNsYXNzIEV2YWxDb2RlQmxvY2s7
CiBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwor
Y2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiBjbGFzcyBKU1Njb3BlOwogICAgIAogZW51bSBDb21waWxh
dGlvbktpbmQgeyBGaXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24gfTsKQEAg
LTEwNCw2ICsxMDYsMTEgQEAgY2xhc3MgRXhlY3V0YWJsZUJhc2UgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICB7CiAgICAgICAgIHJldHVybiB0eXBlKCkgPT0gUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOwog
ICAgIH0KKyAgICBib29sIGlzTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHR5cGUoKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU7CisgICAgfQor
CiAKICAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKICAgICB7CkBAIC01NDEsNiArNTQ4
LDU0IEBAIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1
dGFibGUgewogICAgIFJlZlB0cjxQcm9ncmFtQ29kZUJsb2NrPiBtX3Byb2dyYW1Db2RlQmxvY2s7
CiB9OwogCitjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRhYmxlIHsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
cHVibGljOgorICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3Ry
dWN0dXJlSXNJbW1vcnRhbDsKKworICAgIHN0YXRpYyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSog
Y3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU01vZHVsZVJlY29yZCopOwor
CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIE1vZHVsZVByb2dyYW1D
b2RlQmxvY2sqIGNvZGVCbG9jaygpCisgICAgeworICAgICAgICByZXR1cm4gbV9tb2R1bGVQcm9n
cmFtQ29kZUJsb2NrLmdldCgpOworICAgIH0KKworICAgIEpTT2JqZWN0KiBjaGVja1N5bnRheChF
eGVjU3RhdGUqKTsKKworICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgp
CisgICAgeworICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICB2b2lkIGNsZWFyQ29kZSgpOworCisgICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KKyAgICBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsg
cmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CisKKyAgICBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmll
cjxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IG1fdW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrOworICAgIFdyaXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNv
cmQ7CisgICAgUmVmUHRyPE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IG1fbW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jazsKK307CisKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRhYmxlIHsKICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC02ODUsNiArNzQwLDggQEAgaW5saW5lIHZvaWQg
RXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihleGVjdXRhYmxl
KS0+Y2xlYXJDb2RlKCk7CiAgICAgY2FzZSBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlOgogICAgICAg
ICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNv
ZGUoKTsKKyAgICBjYXNlIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZToKKyAgICAgICAgcmV0
dXJuIGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNv
ZGUoKTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4ganNDYXN0PE5hdGl2ZUV4ZWN1dGFi
bGUqPihleGVjdXRhYmxlKS0+Y2xlYXJDb2RlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDkzZWUxZmQ3NGI5OTI1
OTA0MWNhMWU4NjJmNjMxMWY2NTA5ODM4OWEuLjJkMjI5YmU2OTQ0OWQ2ZTgyYjUyOGZlZWRmYWUw
M2I1MmQ5N2YzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTg0LDYgKzg0LDggQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNp
bmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJK
U01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aCIKICNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIK
ICNpbmNsdWRlICJKU1Byb21pc2UuaCIKQEAgLTMxMCw2ICszMTIsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURhdGFW
aWV3KV0uc3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNEYXRhVmlldzo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURhdGFWaWV3KV0ucHJvdG90eXBl
LmdldCgpKSk7CiAgICAgCiAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBKU0xleGljYWxFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7
CisgICAgbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxl
RW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwogICAgIG1fc3RyaWN0RXZh
bEFjdGl2YXRpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIG1fZGVidWdnZXJTY29w
ZVN0cnVjdHVyZS5zZXQobV92bSwgdGhpcywgRGVidWdnZXJTY29wZTo6Y3JlYXRlU3RydWN0dXJl
KG1fdm0sIHRoaXMpKTsKICAgICBtX3dpdGhTY29wZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpT
V2l0aFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CkBAIC0zNDYs
NiArMzQ5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9yZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVz
QXJyYXlTdHJ1Y3R1cmUodm0sICp0aGlzKSk7CiAKICAgICBtX21vZHVsZVJlY29yZFN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RT
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIAogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dBU01Nb2R1bGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwpAQCAtNTIwLDYgKzUyNCw3IEBAIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5h
bWUgIyMgQ29uc3RydWN0CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iUHJpdmF0ZU5hbWUo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBvcGVyYXRpb25zUHJvbWlz
ZVByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlv
blByaXZhdGVOYW1lKCksIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZt
LCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+TWFwUHJpdmF0ZU5hbWUsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5TZXRQcml2YXRlTmFtZSwgc2V0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywg
V1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC03ODksNiArNzk0LDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhT
Y29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0
RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUp
OwpAQCAtODE2LDYgKzgyMiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NvbnNvbGVTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RvbGxhclZNU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKTsKQEAg
LTkzMCw2ICs5MzcsMjUgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6
Y3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwKICAgICByZXR1cm4gdW5s
aW5rZWRDb2RlQmxvY2s7CiB9CiAKK1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogSlNH
bG9iYWxPYmplY3Q6OmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlKQoreworICAgIFBhcnNl
ckVycm9yIGVycm9yOworICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNEZWJ1Z2dl
cigpID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOworICAgIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUgPSBoYXNQcm9maWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOworICAgIFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bSgpLmNv
ZGVDYWNoZSgpLT5nZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKAorICAgICAgICB2bSgpLCBleGVj
dXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVp
bHRpbiwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKworICAgIGlmIChoYXNE
ZWJ1Z2dlcigpKQorICAgICAgICBkZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoY2FsbEZyYW1lLCBl
eGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3Nh
Z2UoKSk7CisKKyAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIHRocm93Vk1FcnJv
cihjYWxsRnJhbWUsIGVycm9yLnRvRXJyb3JPYmplY3QodGhpcywgZXhlY3V0YWJsZS0+c291cmNl
KCkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIHVubGlu
a2VkQ29kZUJsb2NrOworfQorCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRSZW1vdGVEZWJ1Z2dp
bmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4
IDI2MTMxNmU4NWQyYmFmYmRlZDc4NDMwYjZmOGY4ZWJhNWFkODc3NmUuLjhjMmUzY2E0ZWU0Y2Yy
YmUxZjI5YjEyZTA3ZmI0NTUzMDA3MWViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBKU1N0YWNr
OwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwogY2xhc3Mg
TW9kdWxlTG9hZGVyT2JqZWN0OworY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiBjbGFz
cyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogY2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7CiBjbGFz
cyBQcm9ncmFtQ29kZUJsb2NrOwpAQCAtODUsNiArODYsNyBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0
YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwogY2xhc3MgUmVnRXhwUHJvdG90eXBlOwog
Y2xhc3MgU291cmNlQ29kZTsKK2NsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsK
IGNsYXNzIE51bGxHZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIE51bGxTZXR0ZXJGdW5jdGlvbjsKIGVu
dW0gY2xhc3MgVGhpc1REWk1vZGU7CkBAIC0yMzAsNiArMjMyLDcgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZTsKKyAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlOwpAQCAtMjYy
LDYgKzI2NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1
bHRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVz
QXJyYXlTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNv
cmRTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3RTdHJ1Y3R1cmU7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fd2FzbU1vZHVsZVN0cnVjdHVyZTsKICNlbmRpZgpAQCAtNDQ2LDYg
KzQ1MCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmlj
dEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0
aXZhdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYWN0aXZhdGlvblN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLmdldCgp
OyB9CisgICAgU3RydWN0dXJlKiBtb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1
cmUqIGRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0QXJn
dW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzY29wZWRBcmd1bWVudHNT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTQ5OSw2
ICs1MDQsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBzdGF0aWMgcHRyZGlmZl90IGl0ZXJhdG9yUmVzdWx0U3RydWN0dXJl
T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX2l0ZXJh
dG9yUmVzdWx0U3RydWN0dXJlKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBt
b2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5h
bWVzcGFjZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICBTdHJ1Y3R1cmUqIHdhc21Nb2R1bGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dh
c21Nb2R1bGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNlbmRpZgpAQCAtNjQxLDYgKzY0Nyw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
CiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVQcm9ncmFtQ29kZUJsb2NrKENh
bGxGcmFtZSosIFByb2dyYW1FeGVjdXRhYmxlKiwgSlNPYmplY3QqKiBleGNlcHRpb24pOwogICAg
IFVubGlua2VkRXZhbENvZGVCbG9jayogY3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqLCBF
dmFsRXhlY3V0YWJsZSosIFRoaXNURFpNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7
CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGVNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKENhbGxGcmFtZSosIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKik7CiAKIHByb3Rl
Y3RlZDoKICAgICBzdHJ1Y3QgR2xvYmFsUHJvcGVydHlJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IDk1MTYz
MThkNzAxNjllM2RkOGMyYmVmNzgzMzEyNTY3NWM1ZTIxOGIuLjQ0OGVhNDMxYjdiN2M5ODI2MmQ0
MTBiZjAxZjg0OTM3MWQ4YWI1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIGNsYXNzIFJlZ2lzdGVyOwogICAgIAogY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1l
bnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7Ci1wcml2YXRlOgorcHJvdGVjdGVkOgog
ICAgIEpTTGV4aWNhbEVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJv
bFRhYmxlKik7CiAgICAgCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyNGZjYWFhOTFi
OTFhNmYyNmJhMGM5ZTZkZTBiMmZhMzc2YjBkZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApAQCAtMCwwICsx
LDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorCisj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnNfaW5mbyA9IHsgIkpT
TW9kdWxlRW52aXJvbm1lbnQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTTW9kdWxlRW52aXJvbm1lbnQpIH07CisKK0pTTW9kdWxlRW52aXJvbm1lbnQqIEpTTW9kdWxl
RW52aXJvbm1lbnQ6OmNyZWF0ZSgKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSBp
bml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAgLy8gSlNM
ZXhpY2FsRW52aXJvbm1lbnQgKHByZWNpc2VseSwgSlNFbnZpcm9ubWVudFJlY29yZCkgaGFzIHRo
ZSBzdG9yYWdlIHRvIHN0b3JlIHRoZSB2YXJpYWJsZSBzbG90cyBhZnRlciB0aGUgaXRzIGNsYXNz
IHN0b3JhZ2UuCisgICAgLy8gQmVjYXVzZSB0aGUgb2Zmc2V0IG9mIHRoZSB2YXJpYWJsZSBzbG90
cyBhcmUgZml4ZWQgaW4gdGhlIEpTRW52aXJvbm1lbnRSZWNvcmQsIGluaGVyaXR0aW5nIHRoZXNl
IGNsYXNzIGFuZCBhZGRpbmcgbmV3IG1lbWJlciBmaWVsZCBpcyBub3QgYWxsb3dlZCwKKyAgICAv
LyB0aGUgbmV3IG1lbWJlciB3aWxsIG92ZXJsYXAgdGhlIHZhcmlhYmxlIHNsb3RzLgorICAgIC8v
IFRvIGtlZXAgdGhlIEpTTW9kdWxlRW52aXJvbm1lbnQgY29tcGF0aWJsZSB0byB0aGUgSlNMZXhp
Y2FsRW52aXJvbm1lbnQgYnV0IGFkZCB0aGUgbmV3IG1lbWJlciB0byBzdG9yZSB0aGUgSlNNb2R1
bGVSZWNvcmQsIHdlIGFkZGl0aW9uYWxseSBhbGxvY2F0ZQorICAgIC8vIHRoZSBzdG9yYWdlIGFm
dGVyIHRoZSB2YXJpYWJsZSBzbG90cy4KKyAgICAvLworICAgIC8vIEpTTGV4aWNhbEVudmlyb25t
ZW50OgorICAgIC8vICAgICBbIEpTTGV4aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxlIHNsb3Rz
IF0KKyAgICAvLworICAgIC8vIEpTTW9kdWxlRW52aXJvbm1lbnQ6CisgICAgLy8gICAgIFsgSlNM
ZXhpY2FsRW52aXJvbm1lbnQgXVsgdmFyaWFibGUgc2xvdHMgXVsgYWRkaXRpb25hbCBzbG90cyBm
b3IgSlNNb2R1bGVFbnZpcm9ubWVudCBdCisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogcmVzdWx0
ID0KKyAgICAgICAgbmV3ICgKKyAgICAgICAgICAgIE5vdE51bGwsCisgICAgICAgICAgICBhbGxv
Y2F0ZUNlbGw8SlNNb2R1bGVFbnZpcm9ubWVudD4odm0uaGVhcCwgSlNNb2R1bGVFbnZpcm9ubWVu
dDo6YWxsb2NhdGlvblNpemUoc3ltYm9sVGFibGUpKSkKKyAgICAgICAgSlNNb2R1bGVFbnZpcm9u
bWVudCh2bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKTsKKyAgICByZXN1
bHQtPmZpbmlzaENyZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUsIG1vZHVsZVJlY29yZCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxl
UmVjb3JkKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUpOwor
ICAgIHRoaXMtPm1vZHVsZVJlY29yZFNsb3QoKS5zZXQodm0sIHRoaXMsIG1vZHVsZVJlY29yZCk7
Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmRW
YWx1ZXModGhpc09iamVjdC0+dmFyaWFibGVzKCksIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCkt
PnNjb3BlU2l6ZSgpKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bW9kdWxlUmVj
b3JkU2xvdCgpKTsKK30KKworYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIGNv
bnN0IGF1dG8gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNvbHZl
SW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgp
KSk7CisgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlv
bjo6VHlwZTo6UmVzb2x2ZWQpIHsKKyAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogaW1wb3J0
ZWRNb2R1bGVFbnZpcm9ubWVudCA9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkLT5tb2R1bGVFbnZp
cm9ubWVudCgpOworICAgICAgICBQcm9wZXJ0eVNsb3QgcmVkaXJlY3RTbG90KGltcG9ydGVkTW9k
dWxlRW52aXJvbm1lbnQpOworICAgICAgICBpZiAoaW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdChpbXBvcnRlZE1vZHVs
ZUVudmlyb25tZW50LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHJlZGlyZWN0U2xvdCkpIHsKKyAgICAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSByZWRpcmVjdFNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIHJlZGlyZWN0U2xvdC5hdHRyaWJ1dGVzKCksIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKwordm9pZCBK
U01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXNB
cnJheSwgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgaWYg
KHByb3BlcnR5TmFtZXNBcnJheS5pbmNsdWRlU3RyaW5nUHJvcGVydGllcygpKSB7CisgICAgICAg
IGZvciAoY29uc3QgYXV0byYgcGFpciA6IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5pbXBv
cnRFbnRyaWVzKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gcGFp
ci52YWx1ZTsKKyAgICAgICAgICAgIGlmICghaW1wb3J0RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+
dm0oKSkpCisgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lc0FycmF5LmFkZChpbXBvcnRFbnRy
eS5sb2NhbE5hbWUpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBCYXNlOjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lc0FycmF5
LCBtb2RlKTsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICAvLyBB
bGwgaW1wb3J0ZWQgYmluZGluZ3MgYXJlIGltbXV0YWJsZS4KKyAgICBjb25zdCBhdXRvIHJlc29s
dXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOworICAgIGlmIChy
ZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29s
dmVkKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOworfQorCitib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1
bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUg
aW1tdXRhYmxlLgorICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVs
ZVJlY29yZCgpLT5yZXNvbHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywg
cHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVs
ZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU1
ZTEyZWVmYzU0OGI5ZWU2ZWJmMzEzZmE3YThkNGM3MTY5MTRmMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAt
MCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEpTTW9kdWxlRW52aXJvbm1lbnRfaAorI2RlZmluZSBKU01vZHVsZUVudmly
b25tZW50X2gKKworI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAi
SlNNb2R1bGVSZWNvcmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFJlZ2lzdGVyOwor
CitjbGFzcyBKU01vZHVsZUVudmlyb25tZW50IDogcHVibGljIEpTTGV4aWNhbEVudmlyb25tZW50
IHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0xleGljYWxFbnZpcm9ubWVudCBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lczsKKworICAgIHN0YXRpYyBKU01vZHVsZUVudmlyb25tZW50KiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBKU1ZhbHVlIGluaXRpYWxWYWx1
ZSwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIHN0YXRpYyBKU01vZHVsZUVudmlyb25tZW50KiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJy
ZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUs
IEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCisgICAgeworICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUoKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJv
bFRhYmxlLCBpbml0aWFsVmFsdWUsIG1vZHVsZVJlY29yZCk7CisgICAgfQorCisgICAgREVDTEFS
RV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBzaXpl
X3Qgb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJy
aWVyPEpTTW9kdWxlUmVjb3JkPik+KEJhc2U6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSk7
CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZNb2R1bGVSZWNvcmQo
c3ltYm9sVGFibGUpICsgc2l6ZW9mKFdyaXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4pOworICAg
IH0KKworICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1vZHVsZVJlY29yZFNsb3QoKS5nZXQoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOworCitwcml2YXRl
OgorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3lt
Ym9sVGFibGUqKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1ZhbHVlIGluaXRp
YWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIFdyaXRlQmFycmllckJhc2U8SlNNb2R1
bGVSZWNvcmQ+JiBtb2R1bGVSZWNvcmRTbG90KCkKKyAgICB7CisgICAgICAgIHJldHVybiAqYml0
d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8SlNNb2R1bGVSZWNvcmQ+Kj4oYml0d2lzZV9jYXN0
PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTW9kdWxlUmVjb3JkKHN5bWJvbFRhYmxlKCkpKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7Cit9OworCitpbmxpbmUgSlNNb2R1bGVFbnZpcm9ubWVudDo6SlNNb2R1bGVFbnZpcm9ubWVu
dChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5
bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY3VycmVu
dFNjb3BlLCBzeW1ib2xUYWJsZSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBKU01vZHVsZUVudmlyb25tZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NDYwNWU5OTEwYTYzM2JhMGM0NjkxZGExNjFlZDQ5M2E1YjQ0OTYyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
Y3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmgiCisKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVk
ZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUqKTsKKworY29u
c3QgQ2xhc3NJbmZvIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpzX2luZm8gPSB7ICJNb2R1bGVO
YW1lc3BhY2VPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KSB9OworCisKK0pTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyU2V0JiBleHBvcnRzKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQorICAgICwgbV9leHBvcnRzKGV4cG9ydHMpCit7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIG1fbW9kdWxl
UmVjb3JkLnNldCh2bSwgdGhpcywgbW9kdWxlUmVjb3JkKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBtb2R1bGVOYW1lc3BhY2VPYmpl
Y3RTeW1ib2xJdGVyYXRvciwgRG9udEVudW0sIDApOworCisgICAgLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhv
dGljLW9iamVjdHMtZ2V0cHJvdG90eXBlb2YKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJu
YXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2Jq
ZWN0cy1zZXRwcm90b3R5cGVvZi12CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMt
aXNleHRlbnNpYmxlCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtcHJldmVudGV4
dGVuc2lvbnMKKyAgICBwcmV2ZW50RXh0ZW5zaW9ucyh2bSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
Kj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6On5KU01v
ZHVsZU5hbWVzcGFjZU9iamVjdCgpOworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2
aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmQp
OworfQorCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmpl
Y3RzLWdldG93bnByb3BlcnR5LXAKKworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisKKyAgICBp
ZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisK
KyAgICBpZiAoIXRoaXNPYmplY3QtPm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlk
KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxl
UmVjb3JkID0gdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmQuZ2V0KCk7CisKKyAgICBjb25zdCBh
dXRvIHJlc29sdXRpb24gPSBtb2R1bGVSZWNvcmQtPnJlc29sdmVFeHBvcnQoZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBBU1NFUlQocmVz
b2x1dGlvbi50eXBlICE9IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3Vu
ZCAmJiByZXNvbHV0aW9uLnR5cGUgIT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6
OkFtYmlndW91cyk7CisgICAgSlNNb2R1bGVSZWNvcmQqIHRhcmdldE1vZHVsZSA9IHJlc29sdXRp
b24ubW9kdWxlUmVjb3JkOworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRhcmdldEVudmlyb25t
ZW50ID0gdGFyZ2V0TW9kdWxlLT5tb2R1bGVFbnZpcm9ubWVudCgpOworICAgIFByb3BlcnR5U2xv
dCB0cmFtcG9saW5lU2xvdCh0YXJnZXRFbnZpcm9ubWVudCk7CisgICAgaWYgKCF0YXJnZXRFbnZp
cm9ubWVudC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0YXJn
ZXRFbnZpcm9ubWVudCwgZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRyYW1wb2xpbmVTbG90
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IHRyYW1wb2xp
bmVTbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgQVNTRVJUKCFleGVjLT5o
YWRFeGNlcHRpb24oKSk7CisgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBEb250RGVsZXRl
LCB2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtc2V0
LXAtdi1yZWNlaXZlcgorICAgIHJldHVybjsKK30KKworYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWRl
bGV0ZS1wCisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICByZXR1cm4gIXRoaXNPYmplY3Qt
Pm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpOworfQorCit2b2lkIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJh
dGlvbk1vZGUgbW9kZSkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5v
cmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1vd25w
cm9wZXJ0eWtleXMKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworICAgIGZvciAoY29uc3QgYXV0
byYgbmFtZSA6IHRoaXNPYmplY3QtPm1fZXhwb3J0cykKKyAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQobmFtZS5nZXQoKSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworfQorCitib29sIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMt
ZGVmaW5lb3ducHJvcGVydHktcC1kZXNjCisgICAgaWYgKHNob3VsZFRocm93KQorICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHBy
b3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTmFtZXNwYWNl
T2JqZWN0U3ltYm9sSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoInx0aGlzfCBzaG91bGQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCks
IGFzT2JqZWN0KHRoaXNWYWx1ZSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42YWQ3NzIxMTE2OWRlMDk0MDc4NmVmYWNjNjc4NGVkN2IyOWY2ZmJj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dF9oCisjZGVmaW5lIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0X2gKKworI2luY2x1ZGUgIkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU01vZHVsZVJl
Y29yZDsKKworY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QgOiBwdWJsaWMgSlNEZXN0cnVj
dGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3Qg
QmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXM7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkLCBjb25zdCBJZGVu
dGlmaWVyU2V0JiBleHBvcnRzKQorICAgIHsKKyAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0PihleGVjLT52bSgpLmhlYXApKSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdChleGVjLT52
bSgpLCBzdHJ1Y3R1cmUsIGV4cG9ydHMpOworICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9u
KGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgbW9kdWxlUmVjb3JkKTsKKyAgICAgICAgcmV0dXJu
IG9iamVjdDsKKyAgICB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZVJl
Y29yZCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KFZN
JiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllclNldCYgZXhwb3J0cyk7CisKK3ByaXZhdGU6
CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBJZGVudGlmaWVyU2V0IG1f
ZXhwb3J0czsKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3Jk
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5jcHAKaW5kZXggNWQxNWViYzM2Yzg0MjBlZjZlY2Q1NGVlMDUzZDlhMzMxNWY2YWI4Yi4u
ZWU5ODRmZWJjNjU1ZmE4ZTM4NDM2ODkwNjY4YTZmNzc1ZDkwOGIxZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtMjYsMTAgKzI2
LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIK
IAorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUg
IklkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJK
U01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJ
bmxpbmVzLmgiCiAKQEAgLTU4LDcgKzYyLDExIEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBKU01v
ZHVsZVJlY29yZCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KGNlbGwpOwog
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnQpOworICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCk7CisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlcGVuZGVuY2llc01hcCk7CisgICAgdmlzaXRv
ci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bV9saW5rZWRNb2R1bGVzLmRhdGEoKSwgdGhpc09i
amVjdC0+bV9saW5rZWRNb2R1bGVzLnNpemUoKSk7CiB9CiAKIGF1dG8gSlNNb2R1bGVSZWNvcmQ6
OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBj
b25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eSYgdmFyaWFibGUpIC0+IEV4cG9ydEVudHJ5CkBAIC05MCwxMyArOTgsMzQ3IEBAIEpTTW9kdWxl
UmVjb3JkKiBKU01vZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0CiAgICAgcmV0dXJuIGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KHBhaXIu
Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInZhbHVlIikpKTsKIH0KIAot
dm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqKQorYXV0byBKU01vZHVsZVJlY29y
ZDo6cmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGxvY2Fs
TmFtZSkgLT4gUmVzb2x1dGlvbgogeworICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2ltcG9y
dEVudHJpZXMuZmluZChsb2NhbE5hbWUuaW1wbCgpKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9p
bXBvcnRFbnRyaWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFJlc29sdXRp
b246OlR5cGU6Ok5vdEZvdW5kLCB0aGlzLCBJZGVudGlmaWVyKCkgfTsKKworICAgIGNvbnN0IGF1
dG8mIGltcG9ydEVudHJ5ID0gaXRlcmF0b3ItPnZhbHVlOworICAgIGlmIChpbXBvcnRFbnRyeS5p
c05hbWVzcGFjZShleGVjLT52bSgpKSkKKyAgICAgICAgcmV0dXJuIFJlc29sdXRpb24geyBSZXNv
bHV0aW9uOjpUeXBlOjpOb3RGb3VuZCwgdGhpcywgSWRlbnRpZmllcigpIH07CisKKyAgICBKU01v
ZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4
ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOworICAgIHJldHVybiBpbXBvcnRlZE1vZHVs
ZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lKTsKK30KKworc3Ry
dWN0IFJlc29sdmVRdWVyeSB7CisgICAgUmVzb2x2ZVF1ZXJ5KEpTTW9kdWxlUmVjb3JkKiBtb2R1
bGVSZWNvcmQsIFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKQorICAgICAgICA6IG1vZHVs
ZVJlY29yZChtb2R1bGVSZWNvcmQpCisgICAgICAgICwgZXhwb3J0TmFtZShleHBvcnROYW1lKQor
ICAgIHsKKyAgICB9CisKKyAgICBSZXNvbHZlUXVlcnkoSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJl
Y29yZCwgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSkKKyAgICAgICAgOiBSZXNvbHZlUXVl
cnkobW9kdWxlUmVjb3JkLCBleHBvcnROYW1lLmltcGwoKSkKKyAgICB7CisgICAgfQorCisgICAg
ZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1ZSB9OworICAgIFJlc29sdmVRdWVyeShFbXB0
eVZhbHVlVGFnKQorICAgIHsKKyAgICB9CisKKyAgICBlbnVtIERlbGV0ZWRWYWx1ZVRhZyB7IERl
bGV0ZWRWYWx1ZSB9OworICAgIFJlc29sdmVRdWVyeShEZWxldGVkVmFsdWVUYWcpCisgICAgICAg
IDogbW9kdWxlUmVjb3JkKG51bGxwdHIpCisgICAgICAgICwgZXhwb3J0TmFtZShXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5VmFsdWUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFleHBvcnROYW1lOworICAgIH0KKworICAg
IGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4cG9y
dE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAgICB9CisKKyAgICAvLyBUaGUgbW9k
dWxlIHJlY29yZCBpcyBub3QgbWFya2VkIGZyb20gdGhlIEdDLiBCdXQgdGhlc2UgcmVjb3JkcyBh
cmUgcmVhY2hhYmxlIGZyb20gdGhlIEpTR2xvYmFsT2JqZWN0LgorICAgIC8vIFNvIHdlIGRvbid0
IGNhcmUgdGhlIHJlYWNoYWJpbGl0eSB0byB0aGlzIHJlY29yZC4KKyAgICBKU01vZHVsZVJlY29y
ZCogbW9kdWxlUmVjb3JkOworICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gZXhwb3J0TmFt
ZTsKK307CisKK3N0cnVjdCBSZXNvbHZlUXVlcnlIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChjb25zdCBSZXNvbHZlUXVlcnkmKTsKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBS
ZXNvbHZlUXVlcnkmLCBjb25zdCBSZXNvbHZlUXVlcnkmKTsKKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCitpbmxpbmUgdW5z
aWduZWQgUmVzb2x2ZVF1ZXJ5SGFzaDo6aGFzaChjb25zdCBSZXNvbHZlUXVlcnkmIHF1ZXJ5KQor
eworICAgIHJldHVybiBXVEY6OlB0ckhhc2g8SlNNb2R1bGVSZWNvcmQqPjo6aGFzaChxdWVyeS5t
b2R1bGVSZWNvcmQpICsgSWRlbnRpZmllclJlcEhhc2g6Omhhc2gocXVlcnkuZXhwb3J0TmFtZSk7
Cit9CisKK2lubGluZSBib29sIFJlc29sdmVRdWVyeUhhc2g6OmVxdWFsKGNvbnN0IFJlc29sdmVR
dWVyeSYgbGhzLCBjb25zdCBSZXNvbHZlUXVlcnkmIHJocykKK3sKKyAgICByZXR1cm4gbGhzLm1v
ZHVsZVJlY29yZCA9PSByaHMubW9kdWxlUmVjb3JkICYmIGxocy5leHBvcnROYW1lID09IHJocy5l
eHBvcnROYW1lOworfQorCitzdGF0aWMgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x2
ZUV4cG9ydExvb3AoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBSZXNvbHZlUXVlcnkmIHJvb3QpCit7
CisgICAgdHlwZWRlZiBXVEY6Okhhc2hTZXQ8UmVzb2x2ZVF1ZXJ5LCBSZXNvbHZlUXVlcnlIYXNo
LCBXVEY6OkN1c3RvbUhhc2hUcmFpdHM8UmVzb2x2ZVF1ZXJ5Pj4gUmVzb2x2ZVNldDsKKyAgICB1
c2luZyBSZXNvbHV0aW9uID0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb247CisKKyAgICBlbnVt
IGNsYXNzIFR5cGUgeyBTZW50aW5lbCwgTm9uZSB9OworICAgIHN0cnVjdCBUYXNrIHsKKyAgICAg
ICAgUmVzb2x2ZVF1ZXJ5IHF1ZXJ5OworICAgICAgICBUeXBlIHR5cGU7CisgICAgfTsKKworICAg
IFZlY3RvcjxUYXNrLCA4PiBwZW5kaW5nVGFza3M7CisgICAgUmVzb2x2ZVNldCByZXNvbHZlU2V0
OworICAgIEhhc2hTZXQ8SlNNb2R1bGVSZWNvcmQqPiBzdGFyU2V0OworCisgICAgYXV0byByZXN1
bHQgPSBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQsIG51bGxwdHIsIElk
ZW50aWZpZXIoKSB9OworCisgICAgYXV0byByZXNvbHZlTm9uTG9jYWwgPSBbJl0oY29uc3QgUmVz
b2x2ZVF1ZXJ5JiBxdWVyeSkgLT4gYm9vbCB7CisgICAgICAgIGlmIChxdWVyeS5leHBvcnROYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZWZhdWx0S2V5d29yZC5pbXBsKCkpIHsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvciwgcXVl
cnkubW9kdWxlUmVjb3JkLCBJZGVudGlmaWVyKCkgfTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzdGFyU2V0LmFkZChxdWVyeS5tb2R1bGVSZWNv
cmQpLmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBzdGFyTW9kdWxlTmFtZSA6IHF1ZXJ5Lm1vZHVsZVJlY29yZC0+c3RhckV4
cG9ydEVudHJpZXMoKSkgeworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9k
dWxlUmVjb3JkID0gcXVlcnkubW9kdWxlUmVjb3JkLT5ob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxl
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgc3Rhck1vZHVsZU5hbWUuZ2V0KCkpKTsK
KyAgICAgICAgICAgIHBlbmRpbmdUYXNrcy5hcHBlbmQoVGFzayB7IFJlc29sdmVRdWVyeShpbXBv
cnRlZE1vZHVsZVJlY29yZCwgcXVlcnkuZXhwb3J0TmFtZS5nZXQoKSksIFR5cGU6Ok5vbmUgfSk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICBwZW5kaW5n
VGFza3MuYXBwZW5kKFRhc2sgeyByb290LCBUeXBlOjpOb25lIH0pOworICAgIHdoaWxlICghcGVu
ZGluZ1Rhc2tzLmlzRW1wdHkoKSkgeworICAgICAgICBjb25zdCBhdXRvIHRhc2sgPSBwZW5kaW5n
VGFza3MudGFrZUxhc3QoKTsKKworICAgICAgICBpZiAodGFzay50eXBlID09IFR5cGU6Ok5vbmUp
IHsKKyAgICAgICAgICAgIGNvbnN0IFJlc29sdmVRdWVyeSYgcXVlcnkgPSB0YXNrLnF1ZXJ5Owor
ICAgICAgICAgICAgaWYgKCFyZXNvbHZlU2V0LmFkZCh0YXNrLnF1ZXJ5KS5pc05ld0VudHJ5KQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCog
bW9kdWxlUmVjb3JkID0gcXVlcnkubW9kdWxlUmVjb3JkOworICAgICAgICAgICAgY29uc3QgYXV0
byBpdGVyYXRvciA9IG1vZHVsZVJlY29yZC0+ZXhwb3J0RW50cmllcygpLmZpbmQocXVlcnkuZXhw
b3J0TmFtZSk7CisgICAgICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbW9kdWxlUmVjb3JkLT5leHBv
cnRFbnRyaWVzKCkuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBt
YXRjaGVkIGV4cG9ydGVkIGJpbmRpbmcgaW4gdGhlIGN1cnJlbnQgbW9kdWxlLAorICAgICAgICAg
ICAgICAgIC8vIHdlIG5lZWQgdG8gbG9vayBpbnRvIHRoZSBzdGFycy4KKyAgICAgICAgICAgICAg
ICBpZiAocmVzb2x2ZU5vbkxvY2FsKHRhc2sucXVlcnkpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjb25zdCBhdXRvJiBleHBvcnRFbnRyeSA9IGl0ZXJhdG9yLT52YWx1ZTsK
KyAgICAgICAgICAgIHN3aXRjaCAoZXhwb3J0RW50cnkudHlwZSkgeworICAgICAgICAgICAgY2Fz
ZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgorICAgICAgICAgICAg
Y2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKKyAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUmVzb2x1dGlvbiB7IFJlc29sdXRpb246
OlR5cGU6OlJlc29sdmVkLCBtb2R1bGVSZWNvcmQsIGV4cG9ydEVudHJ5LmxvY2FsTmFtZSB9Owor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0Lm1vZHVsZVJlY29yZCAhPSBxdWVyeS5tb2R1bGVSZWNvcmQg
fHwgcmVzdWx0LmxvY2FsTmFtZSAhPSBleHBvcnRFbnRyeS5sb2NhbE5hbWUpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3Vz
LCBtb2R1bGVSZWNvcmQsIElkZW50aWZpZXIoKSB9OworCisgICAgICAgICAgICAgICAgLy8gU2Ft
ZSB2YWx1ZSBjYXNlLgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBj
YXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6IHsKKyAgICAg
ICAgICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGVSZWNvcmQgPSBtb2R1bGVS
ZWNvcmQtPmhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgZXhwb3J0RW50cnkubW9kdWxl
TmFtZSk7CisKKyAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBpbXBvcnRlZCBtb2R1bGUgZG9l
cyBub3QgcHJvZHVjZSBhbnkgcmVzb2x2ZWQgYmluZGluZywgd2UgbmVlZCB0byBsb29rIGludG8g
dGhlIHN0YXJzIGluIHRoZSAqY3VycmVudCoKKyAgICAgICAgICAgICAgICAvLyBtb2R1bGUuIFRv
IGRvIHRoaXMsIHdlIGFwcGVuZCB0aGUgYFNlbnRpbmVsYCB0YXNrIHRvIHRoZSB0YXNrIHF1ZXVl
LgorICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGBTZW50aW5lbGAgdGFzayBpcyBwb3BlZCBh
bmQgc3RpbGwgdGhlIHJlcXVlc3QgaXMgbm90IHJlc29sdmVkLCB3ZSB3aWxsIGxvb2sgaW50byB0
aGUgc3RhcnMuCisgICAgICAgICAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgcXVl
cnksIFR5cGU6OlNlbnRpbmVsIH0pOworICAgICAgICAgICAgICAgIHBlbmRpbmdUYXNrcy5hcHBl
bmQoVGFzayB7IFJlc29sdmVRdWVyeShpbXBvcnRlZE1vZHVsZVJlY29yZCwgZXhwb3J0RW50cnku
aW1wb3J0TmFtZSksIFR5cGU6Ok5vbmUgfSk7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiAocmVzdWx0LnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpIHsKKyAgICAg
ICAgICAgICAgICAvLyBJbmRpcmVjdCBleHBvcnQgZW50cnkgZG9lcyBub3QgcHJvZHVjZSBhbnkg
cmVzb2x2ZWQgYmluZGluZy4KKyAgICAgICAgICAgICAgICAvLyBTbyB3ZSB3aWxsIGludmVzdGln
YXRlIHRoZSBzdGFycy4KKyAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZU5vbkxvY2FsKHRhc2su
cXVlcnkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYXV0byBKU01v
ZHVsZVJlY29yZDo6cmVzb2x2ZUV4cG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIGV4cG9ydE5hbWUpIC0+IFJlc29sdXRpb24KK3sKKyAgICByZXR1cm4gcmVzb2x2ZUV4cG9y
dExvb3AoZXhlYywgUmVzb2x2ZVF1ZXJ5KHRoaXMsIGV4cG9ydE5hbWUuaW1wbCgpKSk7Cit9CisK
K3N0YXRpYyB2b2lkIGdldEV4cG9ydGVkTmFtZXMoRXhlY1N0YXRlKiBleGVjLCBKU01vZHVsZVJl
Y29yZCogcm9vdCwgSWRlbnRpZmllclNldCYgZXhwb3J0ZWROYW1lcykKK3sKKyAgICBIYXNoU2V0
PEpTTW9kdWxlUmVjb3JkKj4gZXhwb3J0U3RhclNldDsKKyAgICBWZWN0b3I8SlNNb2R1bGVSZWNv
cmQqLCA4PiBwZW5kaW5nTW9kdWxlczsKKworICAgIHBlbmRpbmdNb2R1bGVzLmFwcGVuZChyb290
KTsKKworICAgIHdoaWxlICghcGVuZGluZ01vZHVsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIEpT
TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBwZW5kaW5nTW9kdWxlcy50YWtlTGFzdCgpOwor
ICAgICAgICBpZiAoZXhwb3J0U3RhclNldC5jb250YWlucyhtb2R1bGVSZWNvcmQpKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGV4cG9ydFN0YXJTZXQuYWRkKG1vZHVsZVJlY29yZCk7
CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbW9kdWxlUmVjb3JkLT5leHBvcnRF
bnRyaWVzKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVudHJ5ID0gcGFpci52
YWx1ZTsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwb3J0RW50cnkudHlwZSkgeworICAgICAgICAg
ICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgorICAgICAg
ICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0Ogor
ICAgICAgICAgICAgICAgIGlmIChtb2R1bGVSZWNvcmQgPT0gcm9vdCB8fCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQgIT0gZXhwb3J0RW50cnkuZXhwb3J0TmFtZSkKKyAgICAg
ICAgICAgICAgICAgICAgZXhwb3J0ZWROYW1lcy5hZGQoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5p
bXBsKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEpTTW9k
dWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBzdGFyTW9kdWxlTmFtZSA6IG1vZHVsZVJlY29yZC0+c3RhckV4cG9ydEVudHJpZXMoKSkg
eworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIHJlcXVlc3RlZE1vZHVsZVJlY29yZCA9IG1v
ZHVsZVJlY29yZC0+aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBJZGVudGlmaWVyOjpm
cm9tVWlkKGV4ZWMsIHN0YXJNb2R1bGVOYW1lLmdldCgpKSk7CisgICAgICAgICAgICBwZW5kaW5n
TW9kdWxlcy5hcHBlbmQocmVxdWVzdGVkTW9kdWxlUmVjb3JkKTsKKyAgICAgICAgfQorICAgIH0K
K30KKworSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIEpTTW9kdWxlUmVjb3JkOjpnZXRNb2R1bGVO
YW1lc3BhY2UoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChtX21vZHVsZU5hbWVzcGFjZU9i
amVjdCkKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOworCisg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKTsKKyAgICBJZGVudGlmaWVyU2V0IGV4cG9ydGVkTmFtZXM7CisgICAgZ2V0RXhwb3J0ZWRO
YW1lcyhleGVjLCB0aGlzLCBleHBvcnRlZE5hbWVzKTsKKworICAgIElkZW50aWZpZXJTZXQgdW5h
bWJpZ3VvdXNOYW1lczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG5hbWUgOiBleHBvcnRlZE5hbWVz
KSB7CisgICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywg
SWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBuYW1lLmdldCgpKSk7CisgICAgICAgIHN3aXRjaCAo
cmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91
bmQ6CisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkOgorICAgICAgICAg
ICAgdW5hbWJpZ3VvdXNOYW1lcy5hZGQobmFtZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LnNldChleGVjLT52bSgp
LCB0aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUoKSwgdGhpcywg
dW5hbWJpZ3VvdXNOYW1lcykpOworICAgIHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5n
ZXQoKTsKK30KKwordm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZUNvZGUoKSwgdGhpcyk7CisgICAgaWYgKCFl
eGVjdXRhYmxlKSB7CisgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYywgZXhlY3V0YWJs
ZSk7Cit9CisKK3NpemVfdCBKU01vZHVsZVJlY29yZDo6bGlua01vZHVsZShFeGVjU3RhdGUqIGV4
ZWMsIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZCkKK3sKKyAgICBzaXplX3QgY2FuZGlkYXRlSW5k
ZXggPSBtX2xpbmtlZE1vZHVsZXMuc2l6ZSgpOworICAgIGNvbnN0IGF1dG8gYWRkUmVzdWx0ID0g
bV9saW5rZWRNb2R1bGVNYXAuYWRkKGltcG9ydGVkLT5tb2R1bGVFbnZpcm9ubWVudCgpLCBjYW5k
aWRhdGVJbmRleCk7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIG1f
bGlua2VkTW9kdWxlcy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkpOworICAgICAgICBt
X2xpbmtlZE1vZHVsZXMubGFzdCgpLnNldChleGVjLT52bSgpLCB0aGlzLCBpbXBvcnRlZCk7Cisg
ICAgICAgIHJldHVybiBjYW5kaWRhdGVJbmRleDsKKyAgICB9CisgICAgcmV0dXJuIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7Cit9CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRl
RGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKQoreworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+dW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCk7CisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
ID0gdW5saW5rZWRDb2RlQmxvY2stPnN5bWJvbFRhYmxlKCk7CisgICAgSlNNb2R1bGVFbnZpcm9u
bWVudCogbW9kdWxlRW52aXJvbm1lbnQgPSBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUoZXhl
Yy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIHN5bWJvbFRhYmxlLCBqc1REWlZhbHVlKCksIHRoaXMpOworCisgICAgLy8gSW5p
dGlhbGl6ZSBub24tbGV4aWNhbCB2YXJpYWJsZXMgd2l0aCB1bmRlZmluZWQuCisgICAgZm9yIChj
b25zdCBhdXRvJiB2YXJpYWJsZSA6IG1fZGVjbGFyZWRWYXJpYWJsZXMpIHsKKyAgICAgICAgY29u
c3QgYXV0byYgZW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KHZhcmlhYmxlLmtleS5nZXQoKSk7Cisg
ICAgICAgIFZhck9mZnNldCBvZmZzZXQgPSBlbnRyeS52YXJPZmZzZXQoKTsKKyAgICAgICAgaWYg
KCFvZmZzZXQuaXNTdGFjaygpKQorICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQobW9kdWxlRW52
aXJvbm1lbnQsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5Lmdl
dCgpKSwganNVbmRlZmluZWQoKSwgZmFsc2UpOworICAgIH0KKworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisKKyAgICAvLyBJbml0aWFsaXplIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KKyAgICBm
b3IgKHNpemVfdCBpID0gMCwgbnVtYmVyT2ZGdW5jdGlvbnMgPSB1bmxpbmtlZENvZGVCbG9jay0+
bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IGkgPCBudW1iZXJPZkZ1bmN0aW9uczsgKytpKSB7Cisg
ICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CisgICAgICAgIGNvbnN0
IGF1dG8mIGVudHJ5ID0gc3ltYm9sVGFibGUtPmdldCh1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS0+bmFtZSgpLmltcGwoKSk7CisgICAgICAgIFZhck9mZnNldCBvZmZzZXQgPSBlbnRyeS52YXJP
ZmZzZXQoKTsKKyAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygpKSB7CisgICAgICAgICAgICBB
U1NFUlQoIXVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCkuaXNFbXB0eSgpKTsKKyAg
ICAgICAgICAgIGlmICh2bS50eXBlUHJvZmlsZXIoKSB8fCB2bS5jb250cm9sRmxvd1Byb2ZpbGVy
KCkpIHsKKyAgICAgICAgICAgICAgICB2bS5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5z
ZXJ0VW5leGVjdXRlZFJhbmdlKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT5zb3VyY2VJRCgpLAor
ICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+dHlwZVByb2Zp
bGluZ1N0YXJ0T2Zmc2V0KCksCisgICAgICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5saW5rKHZtLCBtb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZS0+c291cmNlKCkpLCBtb2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAgICAgICBzeW1ib2xUYWJs
ZVB1dChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUt
Pm5hbWUoKSwgZnVuY3Rpb24sIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAo
Y29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBhdXRv
JiBleHBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgIGlmIChleHBvcnRFbnRyeS50eXBl
ID09IEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3QpIHsKKyAgICAg
ICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgZXhwb3J0
RW50cnkuZXhwb3J0TmFtZSk7CisgICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkg
eworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAg
ICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICBjYXNlIFJlc29s
dXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9y
KGV4ZWMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNv
bHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoYXV0byYgcGFpciA6IG1faW1wb3J0
RW50cmllcykgeworICAgICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7
CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZSA9IGhvc3RSZXNvbHZlSW1w
b3J0ZWRNb2R1bGUoZXhlYywgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCk7CisgICAgICAgIGlm
IChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZShleGVjLT52bSgpKSkgeworICAgICAgICAgICAgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QqIG5hbWVzcGFjZU9iamVjdCA9IGltcG9ydGVkTW9kdWxlLT5n
ZXRNb2R1bGVOYW1lc3BhY2UoZXhlYyk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgQ29uY3VycmVudEpJ
VExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CisgICAgICAgICAgICBTeW1ib2xU
YWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUtPmlubGluZUdldChsb2NrZXIsIGltcG9ydEVu
dHJ5LmxvY2FsTmFtZS5pbXBsKCkpOworICAgICAgICAgICAgU2NvcGVPZmZzZXQgb2Zmc2V0ID0g
ZW50cnkuc2NvcGVPZmZzZXQoKTsKKyAgICAgICAgICAgIEFTU0VSVChtb2R1bGVFbnZpcm9ubWVu
dC0+aXNWYWxpZChvZmZzZXQpKTsKKyAgICAgICAgICAgIG1vZHVsZUVudmlyb25tZW50LT52YXJp
YWJsZUF0KG9mZnNldCkuc2V0KGV4ZWMtPnZtKCksIG1vZHVsZUVudmlyb25tZW50LCBuYW1lc3Bh
Y2VPYmplY3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29uc3QgYXV0byByZXNv
bHV0aW9uID0gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnku
aW1wb3J0TmFtZSk7CisgICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgeworICAg
ICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAgICAgIGNh
c2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgorICAgICAgICAgICAgY2FzZSBSZXNvbHV0
aW9uOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9u
OjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIG1fbW9kdWxlRW52aXJvbm1lbnQuc2V0KGV4ZWMtPnZt
KCksIHRoaXMsIG1vZHVsZUVudmlyb25tZW50KTsKKyAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRh
YmxlLnNldChleGVjLT52bSgpLCB0aGlzLCBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk7CiB9CiAK
LUpTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0YXRlKikKK0pTVmFsdWUgSlNN
b2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIGlmICghbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkKKyAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBleGVjLT5pbnRlcnBy
ZXRlcigpLT5leGVjdXRlKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuZ2V0KCksIGV4ZWMsIG1f
bW9kdWxlRW52aXJvbm1lbnQuZ2V0KCkpOworICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUu
Y2xlYXIoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgU3RyaW5nIHByaW50YWJs
ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgdWlkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXggOTM2MjYzY2NmMzEy
OWRhOTVlMzFlOTFhMjE5NDBkZDBhOTU1MjY0NS4uNjZjYmVlMWVlMWFmNDQ4ZDAzMDU5MjFjOGEw
YmEwMTY3NmI2NTQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZVJlY29yZC5oCkBAIC0xMDcsMTYgKzEwNywzOSBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6
IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgY29uc3QgT3JkZXJlZElkZW50aWZp
ZXJTZXQmIHJlcXVlc3RlZE1vZHVsZXMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlZE1vZHVs
ZXM7IH0KICAgICBjb25zdCBFeHBvcnRNYXAmIGV4cG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVy
biBtX2V4cG9ydEVudHJpZXM7IH0KICAgICBjb25zdCBJbXBvcnRNYXAmIGltcG9ydEVudHJpZXMo
KSBjb25zdCB7IHJldHVybiBtX2ltcG9ydEVudHJpZXM7IH0KKyAgICBjb25zdCBJZGVudGlmaWVy
U2V0JiBzdGFyRXhwb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhckV4cG9ydEVudHJp
ZXM7IH0KIAogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVz
KCkgY29uc3QgeyByZXR1cm4gbV9kZWNsYXJlZFZhcmlhYmxlczsgfQogICAgIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2xleGlj
YWxWYXJpYWJsZXM7IH0KIAogICAgIHZvaWQgZHVtcCgpOwogCisgICAgSlNNb2R1bGVFbnZpcm9u
bWVudCogbW9kdWxlRW52aXJvbm1lbnQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kdWxl
RW52aXJvbm1lbnQpOworICAgICAgICByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQoKTsK
KyAgICB9CiAKICAgICB2b2lkIGxpbmsoRXhlY1N0YXRlKik7CiAgICAgSlNWYWx1ZSBleGVjdXRl
KEV4ZWNTdGF0ZSopOwogCisgICAgc3RydWN0IFJlc29sdXRpb24geworICAgICAgICBlbnVtIGNs
YXNzIFR5cGUgeyBSZXNvbHZlZCwgTm90Rm91bmQsIEFtYmlndW91cywgRXJyb3IgfTsKKworICAg
ICAgICBUeXBlIHR5cGU7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQ7Cisg
ICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOworICAgIH07CisKKyAgICBSZXNvbHV0aW9uIHJl
c29sdmVFeHBvcnQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSk7Cisg
ICAgUmVzb2x1dGlvbiByZXNvbHZlSW1wb3J0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IGxvY2FsTmFtZSk7CisKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmdl
dCgpOyB9CisKKyAgICBzaXplX3QgbGlua01vZHVsZShFeGVjU3RhdGUqLCBKU01vZHVsZVJlY29y
ZCogaW1wb3J0ZWQpOworCisgICAgSlNNb2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZlSW1wb3J0ZWRN
b2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisKIHByaXZh
dGU6CiAgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAgICAgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCkBAIC0xMjksMTAgKzE1MiwxMiBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7
CiAKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogZ2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNT
dGF0ZSopOworCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKLSAgICBKU01vZHVs
ZVJlY29yZCogaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBtb2R1bGVOYW1lKTsKKyAgICB2b2lkIGluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4
ZWNTdGF0ZSosIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKik7CiAKICAgICAvLyBUaGUgbG9hZGVy
IHJlc29sdmVzIHRoZSBnaXZlbiBtb2R1bGUgbmFtZSB0byB0aGUgbW9kdWxlIGtleS4gVGhlIG1v
ZHVsZSBrZXkgaXMgdGhlIHVuaXF1ZSB2YWx1ZSB0byByZXByZXNlbnQgdGhpcyBtb2R1bGUuCiAg
ICAgSWRlbnRpZmllciBtX21vZHVsZUtleTsKQEAgLTE1NCw3ICsxNzksMTQgQEAgY2xhc3MgSlNN
b2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFs
dWF0aW9uCiAgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9yZXF1ZXN0ZWRNb2R1bGVzOwogCisg
ICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlRW52aXJvbm1lbnQ+IG1fbW9kdWxlRW52aXJvbm1lbnQ7
CisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PiBtX21vZHVsZU5hbWVz
cGFjZU9iamVjdDsKKyAgICBXcml0ZUJhcnJpZXI8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+IG1f
bW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgV3JpdGVCYXJyaWVyPEpTTWFwPiBtX2RlcGVu
ZGVuY2llc01hcDsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxKU01vZHVsZUVudmlyb25tZW50Kiwg
c2l6ZV90PiBMaW5rZWRNb2R1bGVNYXA7CisgICAgTGlua2VkTW9kdWxlTWFwIG1fbGlua2VkTW9k
dWxlTWFwOworICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+IG1fbGlua2VkTW9kdWxl
czsKIH07CiAKIGlubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1
bGUoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggYmIyZWZkZDA2MzFjZDE4ZWE5NzU0MjY3NGEyY2U3MTgx
NTA3MmM4Zi4uMGJlYzBkODYxYTc0OGRkNzgwNTRlZTlmMjkzYWNiOWUyYjMyYzFkZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAK
IAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNN
b2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKIApAQCAtNjUsNiArNjcsMjEgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0
QWNjZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWYKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKEpTTW9kdWxl
RW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUVu
dmlyb25tZW50Kj4oc2NvcGUpKSB7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxl
UmVjb3JkID0gbW9kdWxlRW52aXJvbm1lbnQtPm1vZHVsZVJlY29yZCgpOworICAgICAgICAgICAg
Y29uc3QgYXV0byByZXNvbHV0aW9uID0gbW9kdWxlUmVjb3JkLT5yZXNvbHZlSW1wb3J0KGV4ZWMs
IGlkZW50KTsKKyAgICAgICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNv
cmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAgICAgICAgICAgSlNNb2R1
bGVSZWNvcmQqIGltcG9ydGVkUmVjb3JkID0gcmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQ7CisgICAg
ICAgICAgICAgICAgbW9kdWxlUmVjb3JkLT5saW5rTW9kdWxlKGV4ZWMsIGltcG9ydGVkUmVjb3Jk
KTsKKyAgICAgICAgICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KiBpbXBvcnRlZEVudmlyb25t
ZW50ID0gaW1wb3J0ZWRSZWNvcmQtPm1vZHVsZUVudmlyb25tZW50KCk7CisgICAgICAgICAgICAg
ICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGltcG9ydGVkRW52aXJvbm1lbnQtPnN5bWJvbFRh
YmxlKCktPmdldChyZXNvbHV0aW9uLmxvY2FsTmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAg
IEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOworICAgICAgICAgICAgICAgIC8vIE1vZHVsZSBleGVj
dXRpb24gaXMgYWx3YXlzIGRvbmUgdW5kZXIgdGhlIHN0cmljdCBtb2RlLiBTbyB0aGVyZSBpcyBu
byB3YXkgdG8gaW5qZWN0IHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICBvcCA9IFJlc29sdmVP
cChNb2R1bGVWYXIsIGRlcHRoLCAwLCBpbXBvcnRlZEVudmlyb25tZW50LCBlbnRyeS53YXRjaHBv
aW50U2V0KCksIGVudHJ5LnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCksIHJlc29sdXRpb24ubG9jYWxO
YW1lLmltcGwoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKwogICAgICAgICBpZiAobGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJs
ZSgpLT51c2VzTm9uU3RyaWN0RXZhbCgpKQogICAgICAgICAgICAgbmVlZHNWYXJJbmplY3Rpb25D
aGVja3MgPSB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzIsNiArMjQ5LDcgQEAg
Y29uc3QgY2hhciogcmVzb2x2ZVR5cGVOYW1lKFJlc29sdmVUeXBlIHR5cGUpCiAgICAgICAgICJH
bG9iYWxWYXIiLAogICAgICAgICAiQ2xvc3VyZVZhciIsCiAgICAgICAgICJMb2NhbENsb3N1cmVW
YXIiLAorICAgICAgICAiTW9kdWxlVmFyIiwKICAgICAgICAgIkdsb2JhbFByb3BlcnR5V2l0aFZh
ckluamVjdGlvbkNoZWNrcyIsCiAgICAgICAgICJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIiwKICAgICAgICAgIkNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAppbmRleCBhNjUzMTY3NDkwZjY4MjIzZjUx
MWRkMjg5MDg5MjlmYzQ2YTE5NzNjLi4wMjZhMjcxNGRjOGQ5MjJhOTgyODg1ZTU0NmI1NzhiYTk2
MzQ4MGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3Bl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCkBAIC00NSw2
ICs0NSw3IEBAIGVudW0gUmVzb2x2ZVR5cGUgewogICAgIEdsb2JhbFZhciwKICAgICBDbG9zdXJl
VmFyLAogICAgIExvY2FsQ2xvc3VyZVZhciwKKyAgICBNb2R1bGVWYXIsCiAKICAgICAvLyBEaXR0
bywgYnV0IGF0IGxlYXN0IG9uZSBpbnRlcnZlbmluZyBzY29wZSB1c2VkIG5vbi1zdHJpY3QgZXZh
bCwgd2hpY2gKICAgICAvLyBjYW4gaW5qZWN0IGFuIGludGVyY2VwdGluZyB2YXIgZGVsY2FyYXRp
b24gYXQgcnVudGltZS4KQEAgLTcyLDYgKzczLDcgQEAgaW5saW5lIFJlc29sdmVUeXBlIG1ha2VU
eXBlKFJlc29sdmVUeXBlIHR5cGUsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCiAgICAg
Y2FzZSBDbG9zdXJlVmFyOgogICAgIGNhc2UgTG9jYWxDbG9zdXJlVmFyOgogICAgICAgICByZXR1
cm4gQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgY2FzZSBNb2R1bGVWYXI6
CiAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgY2Fz
ZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgQ2xvc3VyZVZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3M6CkBAIC05MCw2ICs5Miw3IEBAIGlubGluZSBib29sIG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKFJlc29sdmVUeXBlIHR5cGUpCiAgICAgY2FzZSBHbG9iYWxWYXI6
CiAgICAgY2FzZSBDbG9zdXJlVmFyOgogICAgIGNhc2UgTG9jYWxDbG9zdXJlVmFyOgorICAgIGNh
c2UgTW9kdWxlVmFyOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgY2FzZSBHbG9iYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzOgpAQCAtMTAzLDEzICsxMDYsMTQgQEAgaW5saW5lIGJvb2wgbmVlZHNWYXJJ
bmplY3Rpb25DaGVja3MoUmVzb2x2ZVR5cGUgdHlwZSkKIH0KIAogc3RydWN0IFJlc29sdmVPcCB7
Ci0gICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0aCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQsIFdh
dGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRwdHJfdCBvcGVyYW5kKQorICAgIFJlc29s
dmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50LCBXYXRjaHBvaW50U2V0
KiB3YXRjaHBvaW50U2V0LCB1aW50cHRyX3Qgb3BlcmFuZCwgVW5pcXVlZFN0cmluZ0ltcGwqIGlt
cG9ydGVkTmFtZSA9IG51bGxwdHIpCiAgICAgICAgIDogdHlwZSh0eXBlKQogICAgICAgICAsIGRl
cHRoKGRlcHRoKQogICAgICAgICAsIHN0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgICAgICwgbGV4
aWNhbEVudmlyb25tZW50KGxleGljYWxFbnZpcm9ubWVudCkKICAgICAgICAgLCB3YXRjaHBvaW50
U2V0KHdhdGNocG9pbnRTZXQpCiAgICAgICAgICwgb3BlcmFuZChvcGVyYW5kKQorICAgICAgICAs
IGltcG9ydGVkTmFtZShpbXBvcnRlZE5hbWUpCiAgICAgewogICAgIH0KIApAQCAtMTE5LDYgKzEy
Myw3IEBAIHN0cnVjdCBSZXNvbHZlT3AgewogICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhp
Y2FsRW52aXJvbm1lbnQ7CiAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldDsKICAgICB1
aW50cHRyX3Qgb3BlcmFuZDsKKyAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGltcG9ydGVk
TmFtZTsKIH07CiAKIGNsYXNzIFJlc29sdmVNb2RlQW5kVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDQwMzI2Y2UwZjMyOWZhN2M3YmJjOTlmNDQ2NDI4ZmU5
NmM5MTI0YjMuLmZjZTA2MWQxZjhkNjFkYWIwNjM2MGFlOGQ3YWE0NDhmMmYxOGM3OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC00MSwxMCArNDEsMTIgQEAgZW51
bSBKU1R5cGUgOiB1aW50OF90IHsKIAogICAgIEV2YWxFeGVjdXRhYmxlVHlwZSwKICAgICBQcm9n
cmFtRXhlY3V0YWJsZVR5cGUsCisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlLAogICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsCiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVR5cGUsCiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrVHlwZSwKKyAgICBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2tUeXBlLAogICAgIFVubGlua2VkRXZhbENvZGVCbG9ja1R5cGUs
CiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1R5cGUsCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCmluZGV4IGU2N2Zh
Mzg1YmZmNzcxYzRlM2Q4YTJkNzkxMTdiMTNhNTcyMzhlYTEuLjZlNmY5ZjlhNmRhNjE4MTJlM2My
MWFkNDM2NmZkODdiN2NkMTQ3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VEZWZl
cnJlZC5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVu
dC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTW9kdWxlQW5hbHl6
ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtMjc0LDYgKzI3NSw5IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRGVjbGFyYXRpb25JbnN0
YW50aWF0aW9uKEV4CiAgICAgICAgIGRhdGFMb2coIkxvYWRlciBbbGlua10gIiwgbW9kdWxlUmVj
b3JkLT5tb2R1bGVLZXkoKSwgIlxuIik7CiAKICAgICBtb2R1bGVSZWNvcmQtPmxpbmsoZXhlYyk7
CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5jcHAKaW5kZXggZTgzZTM4MzI1OGY5OWJiMDViYmUxMWUwYzY1ZGUwNGI4ZTA0OWUw
YS4uNGM0M2M2YWZmMmY2N2ZmMzU3NTczYWVjYTJkZjQzYmQzNzExM2I3NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2V0UHJvdG90eXBlLmgiCiAKKyNp
bmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJDYWNoZWRDYWxsLmgiCiAjaW5jbHVk
ZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCkBAIC02NSw2ICs2Niwx
MCBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+aGFzLCBzZXRQcm90b0Z1bmNIYXMsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfTkFUSVZF
X0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIHNldFByb3RvRnVuY0VudHJpZXMs
IERvbnRFbnVtLCAwKTsKIAorICAgIC8vIFByaXZhdGUgYWRkIC8gaGFzIG9wZXJhdGlvbnMuCisg
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5hZGRQcml2YXRlTmFtZSwg
c2V0UHJvdG9GdW5jQWRkLCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNQcml2YXRlTmFtZSgpLCBzZXRQcm90
b0Z1bmNIYXMsIERvbnRFbnVtLCAxKTsKKwogICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9IEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1
ZXMuc3RyaW5nKCksIHNldFByb3RvRnVuY1ZhbHVlcyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywgdmFsdWVzLCBEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmtl
eXMsIHZhbHVlcywgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmlu
ZGV4IDVhZjZjYWYyN2QzNTlkOTFmNDdjMTE1NjQ3NTg0MjA4YjdmMDQ5NzYuLmI5NzNiMTM4YmVi
Y2ZiYjkzYzk0NDRlM2NlN2Q0ZGM5ZGY1M2MwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKQEAgLTIyMSw2ICsyMjEsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5
cGUgaGVhcFR5cGUpCiAgICAgZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFdmFs
RXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHBy
b2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgUHJvZ3JhbUV4ZWN1dGFibGU6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVj
dHVyZS5zZXQoKnRoaXMsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcmVnRXhwU3RydWN0dXJlLnNldCgqdGhpcywgUmVn
RXhwOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3ltYm9sU3Ry
dWN0dXJlLnNldCgqdGhpcywgU3ltYm9sOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAgICAgc3ltYm9sVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTeW1ib2xUYWJsZTo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpAQCAtMjMyLDYgKzIzMyw3IEBA
IFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICB1bmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxpbmtlZEV2
YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIHVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHBy
b3BlcnR5VGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQcm9wZXJ0eVRhYmxlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgd2Vha01hcERhdGFTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBXZWFrTWFwRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIGluZmVycmVkVmFsdWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFZhbHVlOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAppbmRleCBiZjkyNWI1OTVmOTIzOTM2MmVmODc5MTcwM2MzZTUwYTI3MmFjMjgyLi4x
MjhiZmRiNTM2MTQ2YWU5NmQ4ZjlkZjI4YmRlMzc0MjQ1ODdlOGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9j
azsKIGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOworY2xhc3MgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogY2xhc3Mg
Vk1FbnRyeVNjb3BlOwogY2xhc3MgV2F0Y2hkb2c7CkBAIC0yNzksNiArMjgwLDcgQEAgY2xhc3Mg
Vk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBldmFsRXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9n
cmFtRXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvbkV4
ZWN1dGFibGVTdHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gbW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcmVnRXhwU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN5bWJvbFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBzeW1ib2xUYWJsZVN0cnVjdHVyZTsKQEAgLTI5MCw2ICsyOTIsNyBAQCBjbGFzcyBW
TSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0
dXJlPiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gcHJvcGVydHlUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiB3ZWFrTWFwRGF0YVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFZh
bHVlU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDk4MTJm
M2JjMWE3OTQxNjFjOWRlZDIyNTNjNjQ0ODdjYTRlZjFlOGMuLmRhMWU3OWVlYzMyN2EzNGQyOGNk
OGU2YmQ3YjExOTIwMTBhZWEyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTE0ODMsNiArMTQ4Myw4IEBAIFN0cmluZyBJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlKQogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJh
bCgiZnVuY3Rpb24gXCIiKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChpbmZlcnJlZE5hbWUpOwog
ICAgICAgICByZXN1bHQuYXBwZW5kKCciJyk7CisgICAgfSBlbHNlIGlmIChleGVjdXRhYmxlLT5p
c01vZHVsZVByb2dyYW1FeGVjdXRhYmxlKCkpCisgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCJtb2R1bGUiKTsKICAgICB9IGVsc2UgaWYgKGV4ZWN1dGFibGUtPmlzRXZhbEV4ZWN1dGFibGUo
KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImV2YWwiKTsKICAgICBlbHNlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260220</attachid>
            <date>2015-08-28 23:16:30 -0700</date>
            <delta_ts>2015-09-05 01:51:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147340-20150828231617.patch</filename>
            <type>text/plain</type>
            <size>198459</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
N2NkMTcwZGRjZGIzNmU0NmE3MjQ4YWVhZTc5MDAwZjBhYWJhODIyLi5lNDE2Nzg4OTgzYzcwYmM5
MzU4YWZmM2JhNTc2M2ViMjBkZjEzYmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNDEgQEAKKzIwMTUtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVTNiBNb2R1bGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjppbmZlcnJlZE5hbWUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVC
bG9jayk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnJlcGxhY2VtZW50
KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2
ZWxJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2s6Ok1vZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAg
ICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpFdmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25Db2RlQmxvY2s6OkZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVUeXBlLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2s6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6dmlzaXRDaGls
ZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6SW1wb3J0RGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6
ZnJpZW5kbHlTb3VyY2VVUkwpOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmcmllbmRseUZ1
bmN0aW9uTmFtZSk6CisgICAgICAgIChKU0M6OmdldFN0YWNrRnJhbWVDb2RlVHlwZSk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmNvZGVUeXBlKToKKyAgICAgICAgKEpT
Qzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVuY3Rpb25OYW1lKToKKyAgICAgICAgKEpTQzo6U3Rh
Y2tWaXNpdG9yOjpGcmFtZTo6c291cmNlVVJMKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Nj
b3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAg
ICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpw
ZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldEVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAg
ICAgICAoSlNDOjpMTEludDo6bW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAg
ICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpNb2R1
bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbXBvcnRDbGF1c2VJdGVt
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYXRp
b24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRl
Y2xhcmVMZXhpY2FsVmFyaWFibGUpOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25t
ZW50Lmg6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNJbXBvcnRl
ZE5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0
SXNJbXBvcnRlZE5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6
OmZpbmQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6
OmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hl
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRF
eGVjdXRhYmxlOjppbnN0YWxsQ29kZSk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6
Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Om5ld1Jl
cGxhY2VtZW50Q29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGU6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6
Y2xlYXJDb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmR1bXApOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6
aXNNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNl
OjpjbGVhckNvZGVWaXJ0dWFsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpjcmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojptb2R1bGVFbnZp
cm9ubWVudFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojptb2R1bGVO
YW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52
aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xleGljYWxFbnZpcm9ubWVudC5oLgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25t
ZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpvZmZzZXRPZk1v
ZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmFsbG9jYXRp
b25TaXplKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6bW9kdWxlUmVjb3Jk
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6bW9kdWxlUmVjb3JkU2xvdCk6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxlRW52aXJvbm1lbnQp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJh
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5OjpSZXNv
bHZlUXVlcnkpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OmlzRW1wdHlWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OlJlc29sdmVRdWVyeTo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlND
OjpSZXNvbHZlUXVlcnlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5SGFz
aDo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpyZXNvbHZlRXhwb3J0TG9vcCk6CisgICAgICAgIChK
U0M6OmdldEV4cG9ydGVkTmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6Z2V0
TW9kdWxlTmFtZXNwYWNlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmxpbmspOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bGlua01vZHVsZSk6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlUmVjb3JkOjpleGVjdXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmg6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpzdGFyRXhwb3J0RW50cmllcyk6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjptb2R1bGVFbnZpcm9ubWVudCk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjptb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAg
ICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6YWJzdHJhY3RBY2Nlc3Mp
OgorICAgICAgICAoSlNDOjpyZXNvbHZlVHlwZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
Y29wZS5oOgorICAgICAgICAoSlNDOjptYWtlVHlwZSk6CisgICAgICAgIChKU0M6Om5lZWRzVmFy
SW5qZWN0aW9uQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU9wOjpSZXNvbHZlT3ApOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2Fk
ZXJPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVEZWNs
YXJhdGlvbkluc3RhbnRpYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAg
ICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0
cy9tb2R1bGVzLnlhbWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvY3ljbGljLW1h
eS1wcm9kdWNlLXRkei5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9jeWNsaWMt
bWF5LXByb2R1Y2UtdGR6LzEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvY3lj
bGljLW1heS1wcm9kdWNlLXRkei8yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVz
L2RlZmF1bHQtZXJyb3IvbWFpbi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9l
eGVjdXRpb24tb3JkZXItY3ljbGljLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVz
L2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvMS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9k
dWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzEwLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0
cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvMTEuanM6IEFkZGVkLgorICAgICAgICAq
IHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy8yLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvMy5qczogQWRkZWQuCisg
ICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzQuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy81LmpzOiBB
ZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvNi5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGlj
LzcuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5
Y2xpYy84LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRl
ci1jeWNsaWMvOS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24t
b3JkZXItZGFnLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1v
cmRlci1kYWcvMS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24t
b3JkZXItZGFnLzEwLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlv
bi1vcmRlci1kYWcvMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRp
b24tb3JkZXItZGFnLzMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0
aW9uLW9yZGVyLWRhZy80LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1
dGlvbi1vcmRlci1kYWcvNS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVj
dXRpb24tb3JkZXItZGFnLzYuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhl
Y3V0aW9uLW9yZGVyLWRhZy83LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4
ZWN1dGlvbi1vcmRlci1kYWcvOC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9l
eGVjdXRpb24tb3JkZXItZGFnLzkuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMv
ZXhlY3V0aW9uLW9yZGVyLWRlcHRoLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVz
L2V4ZWN1dGlvbi1vcmRlci1kZXB0aC8xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1
bGVzL2V4ZWN1dGlvbi1vcmRlci1kZXB0aC8yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9t
b2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kZXB0aC8zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0
cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1zaWJsaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1zaWJsaW5nLzEuanM6IEFkZGVkLgorICAgICAg
ICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXNpYmxpbmcvMi5qczogQWRkZWQuCisg
ICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItc2libGluZy8zLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10cmVlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10cmVlLzEuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRyZWUvMTAuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRyZWUvMTEu
anM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRyZWUv
Mi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJl
ZS8zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10
cmVlLzQuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVy
LXRyZWUvNS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3Jk
ZXItdHJlZS82LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1v
cmRlci10cmVlLzcuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9u
LW9yZGVyLXRyZWUvOC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRp
b24tb3JkZXItdHJlZS85LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4cG9y
dGVkLWZ1bmN0aW9uLW1heS1iZS1jYWxsZWQtYmVmb3JlLW1vZHVsZS1pcy1leGVjdXRlZC5qczog
QWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leHBvcnRlZC1mdW5jdGlvbi1tYXktYmUt
Y2FsbGVkLWJlZm9yZS1tb2R1bGUtaXMtZXhlY3V0ZWQvMS5qczogQWRkZWQuCisgICAgICAgICog
dGVzdHMvbW9kdWxlcy9leHBvcnRlZC1mdW5jdGlvbi1tYXktYmUtY2FsbGVkLWJlZm9yZS1tb2R1
bGUtaXMtZXhlY3V0ZWQvMi5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuYWRkKToKKyAgICAg
ICAgKGV4cG9ydC5yYWlzZSk6CisgICAgICAgICogdGVzdHMvbW9kdWxlcy9pbXBvcnRlZC1iaW5k
aW5ncy1hcmUtaW1tdXRhYmxlLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2lt
cG9ydGVkLWJpbmRpbmdzLWFyZS1pbW11dGFibGUvYmluZGluZ3MuanM6IEFkZGVkLgorICAgICAg
ICAoZXhwb3J0LmZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoZXhwb3J0LmNsYXNzRGVj
bGFyYXRpb24pOgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvaW1wb3J0ZWQtYmluZGluZ3MtY2Fu
LWJlLWNoYW5nZWQtaW4tb3JpZ2luYWwtbW9kdWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0
cy9tb2R1bGVzL2ltcG9ydGVkLWJpbmRpbmdzLWNhbi1iZS1jaGFuZ2VkLWluLW9yaWdpbmFsLW1v
ZHVsZS9iaW5kaW5ncy5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9tb2R1bGUt
aXMtc3RyaWN0LWNvZGUuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvcmVzb3Vy
Y2VzL2Fzc2VydC5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuc2hvdWxkQmUpOgorICAgICAg
ICAoZXhwb3J0LnNob3VsZFRocm93KToKKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL3RoaXMtc2hv
dWxkLWJlLXVuZGVmaW5lZC5qczogQWRkZWQuCisKIDIwMTUtMDgtMjggIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBMSUNNIHNob3VsZCBiZSBzb3VuZCBldmVuIGlm
IHRoZSBDRkcgaGFzIGNoYW5nZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMDYxM2JjNjZkMWE3YmUxMDc1ZTRh
NGNmNDAxNTFhNzk3MjI3ZTVkLi40Y2MyYjFmODM2NWYyNDRmZTZjZTAyNWNmN2YzMGVjNjAyYTll
Yzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTUtMDgtMjggIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IEVT
NiBNb2R1bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDg1ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
cGFyc2VyTWV0YURhdGEpOgorCisyMDE1LTA4LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCiAgICAgICAgIE1vdmUgc3RkOjpmdW5jdGlvbiBmcm9tIEpTRnVuY3Rp
b24gaW50byBOYXRpdmVTdGRGdW5jdGlvbkNlbGwgdG8gY29ycmVjdGx5IGRlc3Ryb3kgdGhlIGhl
YXAgYWxsb2NhdGVkIHN0ZDo6ZnVuY3Rpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0ODI2MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGEzYzRhZWMzZDMxZTQzMjA3ZjI2YTVjODRkZTQzNzU4ZGFhOGI1MWYuLjhlNjhmZjA2ZTIy
NzFkYTg3YmY3OGY4OWY1ZmFhYmJmMjY4NzRmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNzAwLDYgKzE3MDAsOSBAQAogCQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyog
T3BhcXVlSlNTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxMjRBOEY1MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxMjRBOEY4MEU1
NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI0QThGNjBFNTU1Nzc1MDAzMDkxRjEgLyogT3Bh
cXVlSlNTdHJpbmcuY3BwICovOyB9OwogCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNB
NTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLzsgfTsKKwkJRTMwNjc3OTgxQjhCQzZGNTAw
M0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVs
ZUxvYWRlck9iamVjdC5qcyAqLzsgfTsKKwkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5jcHAgKi87IH07CisJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAw
RUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBF
RTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNC
M0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNF
MjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQu
aCAqLzsgfTsKQEAgLTE3MjYsNiArMTcyOSw4IEBACiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENF
NSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6
ZU1vZHVsZS5jcHAgKi87IH07CiAJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVs
ZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9Owog
CQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0
RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAq
LzsgfTsKKwkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3
MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0Yy
NkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwogCQlFM0VGODg3NTFCNjZERjIzMDAzRjI2Q0Ig
LyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1
NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgKi87IH07CkBAIC0z
NTU3LDYgKzM1NjIsOSBAQAogCQlFMTc4NjM2QzBEOUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0
aWFsaXplVGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4RTNB
NTYwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGlu
ZUVuZGluZyA9IDA7IHBhdGggPSBWTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1
YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJRTE4
RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9
OworCQlFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gTW9kdWxlTG9hZGVyT2JqZWN0
LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzE4Q0JCRTFCOEFFRjUxMDBBMjky
OUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNjM3QTMx
QjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzU4NSw2ICszNTkzLDggQEAKIAkJRTM5NjNDRUMxQjczRjc1MDAw
RUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0Eg
LyogSlNNb2R1bGVSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNN
b2R1bGVSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjM5QzYxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlRW52
aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzIxQjY2REYy
MzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5REMx
NDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzczLDYgKzQ3ODMsMTAgQEAKIAkJCQlBNzAwODc0
MDE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCAqLywKIAkJCQlBNzRERUY4RjE4MkQ5OTE0MDA1
MjJDMjIgLyogSlNNYXBJdGVyYXRvci5jcHAgKi8sCiAJCQkJQTc0REVGOTAxODJEOTkxNDAwNTIy
QzIyIC8qIEpTTWFwSXRlcmF0b3IuaCAqLywKKwkJCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcg
LyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8sCisJCQkJRTNEMjM5QzcxQjgyOUMxQzAwQkJF
RjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLywKKwkJCQlFMzE4Q0JCRTFCOEFFRjUxMDBB
MjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovLAorCQkJCUUzMThDQkJGMUI4
QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovLAogCQkJCUUzOURB
NEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8sCiAJCQkJRTM5REE0
QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8sCiAJCQkJRTMzRThEMUEx
QjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwICovLApAQCAtNTc5OSw2
ICs1ODEzLDcgQEAKIAkJCQlFMzVFMDM2MTFCN0FCNDg1MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0LmpzICovLAogCQkJCUUzM0Y1MDg4MUI4NDRBMUEwMDQxMzg1NiAv
KiBJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1QjFCNjVEOUEz
MDA5REIxRUYgLyogSXRlcmF0b3IucHJvdG90eXBlLmpzICovLAorCQkJCUUzMDY3Nzk3MUI4QkM2
RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgKi8sCiAJCQkJN0NGOUJDNUMxQjY1
RDlCMTAwOURCMUVGIC8qIE9iamVjdENvbnN0cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzVEMUI2
NUQ5QjEwMDlEQjFFRiAvKiBPcGVyYXRpb25zLlByb21pc2UuanMgKi8sCiAJCQkJN0NGQkFDMUMx
OEI1MzVFNTAwRDAwNzUwIC8qIFByb21pc2UucHJvdG90eXBlLmpzICovLApAQCAtNjEzMyw2ICs2
MTQ4LDcgQEAKIAkJCQkwRjJCOUNFOTE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0TWF0ZXJp
YWxpemF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEOUEyOTgxN0EwQkM3NDAwRUUy
NjE4IC8qIERGR0xJQ01QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRkMxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBERkdMb25nTGl2ZWRT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA5RkI4NjgxQUUzMzVDNjAwMzlEMDY5IC8qIEpT
V2Vha1NldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2NTAwNjNEOTQwIC8q
IERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTYyNjYs
NiArNjI4Miw3IEBACiAJCQkJN0IwMjQ3NTcxQjg2ODJFNDAwNTQyNDQwIC8qIFdBU01GdW5jdGlv
blBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3MjJDIC8q
IEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUQwMjE3QTBCOTA0
MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMx
OENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnkuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMjM1QkREMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJERTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NS
RXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC03MDQ1LDYgKzcwNjIsNyBA
QAogCQkJaXNhID0gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlFMzA2Nzc5ODFCOEJDNkY1MDAzRjg3RjAg
LyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlBNTNGMUFDMDE4
QzkwRjhGMDA3MkVCNkQgLyogZnJhbWV3b3JrLnNiIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTczNzksNiArNzM5
Nyw3IEBACiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJl
RGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2QjU4MjY5MTREMjc5NzAwMEE5QzMwNiAv
KiBDb2RlUHJvZmlsaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEY5NDNDMTY2NzYzMTMw
MEQ2MTk3MSAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDMTEwN0VDMzc2MDA0MjdBNDggLyogQ29tbW9uSWRl
bnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5QzVFNUUxOEUzNUY1RTAwRDQzMUMz
IC8qIEZUTERXQVJGUmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NDU4LDYgKzc0Nzcs
NyBAQAogCQkJCTBGRDEyMDMzMUE4Qzg1QkQwMDBGNTI4MCAvKiBGVExKU0NhbGxWYXJhcmdzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzk2MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVz
aGVkQXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMzRjUwODQxQjg0MzdBMDAwNDEzODU2IC8q
IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMxOENC
QzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGOUQzNjk0MUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjcxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Zs
dXNoRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0JEMUI3MUI4OTZBMDcwMDU5OEFB
NiAvKiBERkdJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04MTA5LDYgKzgxMjks
NyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDBGQ0VGQUJFMTgwNUQ4NjkwMDQ3MkNFNCAvKiBMTFZNRm9ySlNDLnhjY29u
ZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBF
TkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtODEx
Niw2ICs4MTM3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAwRkNFRkFCRTE4MDVEODY5MDA0NzJDRTQgLyogTExWTUZv
ckpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9N
T0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwog
CQl9OwpAQCAtODEyMyw2ICs4MTQ1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAwRkNFRkFCRTE4MDVEODY5MDA0NzJD
RTQgLyogTExWTUZvckpTQy54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
RU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUg
PSBQcm9maWxpbmc7CiAJCX07CkBAIC04MTMwLDYgKzgxNTMsNyBAQAogCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDBGQ0VGQUJF
MTgwNUQ4NjkwMDQ3MkNFNCAvKiBMTFZNRm9ySlNDLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJ
CQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC04MTM3LDYgKzgxNjEsNyBAQAog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZp
ZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5B
QkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTgxNDQs
NiArODE2OSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVj
dXRhYmxlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2
X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7
CiAJCX07CkBAIC04MTUxLDYgKzgxNzcsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZD
NTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJ
CW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CkBAIC04MTU4LDYgKzgxODUsNyBAQAogCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJD
MDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9N
T0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtODE4Niw2ICs4
MjE0LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENv
cmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9E
VUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07
CkBAIC04MTkzLDYgKzgyMjIsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJ
CQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAv
KiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
RU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUg
PSBSZWxlYXNlOwogCQl9OwpAQCAtODIwMSw2ICs4MjMxLDcgQEAKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3Jl
LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKIAkJCQlCVUlMRF9WQVJJQU5UUyA9
IG5vcm1hbDsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJ
CQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CkBAIC04MjA4LDYgKzgyMzksNyBAQAog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi87CiAJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9E
VUxFUzsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC04MjE1LDYgKzgyNDcsNyBA
QAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi87CiAJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZf
TU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTgyMjIsNiArODI1
NSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAq
LzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxF
X0VTNl9NT0RVTEVTOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtODM1
Myw2ICs4Mzg3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNj
cmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9F
UzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlJTkZPUExJU1RfRklMRSA9ICJE
ZXJpdmVkIFNvdXJjZXMgY29weS1JbmZvLnBsaXN0IjsKIAkJCQlQUk9EVUNUX05BTUUgPSAiRGVy
aXZlZCBTb3VyY2VzIGNvcHkiOwogCQkJfTsKQEAgLTgzNjIsNiArODM5Nyw3IEBACiAJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
MUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwog
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2
X01PRFVMRVM7CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHktSW5m
by5wbGlzdCI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKIAkJ
CX07CkBAIC04MzcxLDYgKzg0MDcsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlE
MCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCUlORk9QTElT
VF9GSUxFID0gIkRlcml2ZWQgU291cmNlcyBjb3B5LUluZm8ucGxpc3QiOwogCQkJCVBST0RVQ1Rf
TkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CiAJCQl9OwpAQCAtODM4MCw2ICs4NDE3LDcg
QEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNj
b25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9
IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJCQlJTkZPUExJU1RfRklMRSA9ICJEZXJpdmVkIFNvdXJj
ZXMgY29weS1JbmZvLnBsaXN0IjsKIAkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2Vz
IGNvcHkiOwogCQkJfTsKQEAgLTgzODksNiArODQyNyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5
RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJ
CQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CiAJCQl9OwogCQkJ
bmFtZSA9IERlYnVnOwpAQCAtODM5Nyw2ICs4NDM2LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlF
OEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9FUzZfTU9EVUxFUzsKIAkJ
CQlQUk9EVUNUX05BTUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKIAkJCX07CiAJCQlu
YW1lID0gUmVsZWFzZTsKQEAgLTg0MDUsNiArODQ0NSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5
RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlFTkFCTEVfRVM2X01PRFVMRVMgPSBFTkFCTEVfRVM2X01PRFVMRVM7CiAJ
CQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CiAJCQl9OwogCQkJ
bmFtZSA9IFByb2R1Y3Rpb247CkBAIC04NDI4LDYgKzg0NjksNyBAQAogCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQz
MEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0gRU5BQkxFX0VTNl9NT0RVTEVT
OwogCQkJfTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CiAJCX07CkBAIC04NDM1LDYgKzg0NzcsNyBA
QAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2Nv
bmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRU5BQkxFX0VTNl9NT0RVTEVTID0g
RU5BQkxFX0VTNl9NT0RVTEVTOwogCQkJCVBST0RVQ1RfTkFNRSA9ICJHZW5lcmF0ZSBEZXJpdmVk
IFNvdXJjZXMiOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9maWxpbmc7CkBAIC04NDU3LDYgKzg1MDAs
NyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi87
CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVOQUJMRV9FUzZfTU9EVUxFUyA9IEVOQUJMRV9F
UzZfTU9EVUxFUzsKIAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5nOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDRlNWE5
NmMzOGVkODYyNzc0NDJjYTI2MTljNWM4Y2FjMjljZTgyYWEuLjAyMGVjMjQ4OWVmZTNhMzMyOTg1
YjcwOTEwZGVjY2Y3OGQ0OWE5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTE1Nyw2ICsxNTcsNyBAQAogICAgICAgICAiYnl0
ZWNvZGVzIiA6IFsKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X3Byb2dyYW1fcHJvbG9n
dWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9ldmFsX3Byb2xvZ3VlIiB9LAor
ICAgICAgICAgICAgeyAibmFtZSIgOiAibGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUiIH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1
ZSIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogImxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfcHJvbG9ndWUiIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVjayIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggZjhhMGY0YmZjODY5NGZlYWQyOGE2YWI1N2M3YzIzNWZmMTNk
MTE4Zi4uNjcyNjQzY2U4YTg1YThjMmQ0ZDViZjc2MWMwM2RjZDBhMmU5MDlmMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ4LDYgKzQ4LDcg
QEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9u
bWVudC5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgogI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC04Nyw2ICs4OCw4IEBA
IENTdHJpbmcgQ29kZUJsb2NrOjppbmZlcnJlZE5hbWUoKSBjb25zdAogICAgICAgICByZXR1cm4g
IjxldmFsPiI7CiAgICAgY2FzZSBGdW5jdGlvbkNvZGU6CiAgICAgICAgIHJldHVybiBqc0Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5pbmZlcnJlZE5hbWUoKS51
dGY4KCk7CisgICAgY2FzZSBNb2R1bGVDb2RlOgorICAgICAgICByZXR1cm4gIjxtb2R1bGU+IjsK
ICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwogICAgICAgICByZXR1cm4gQ1N0cmluZygi
IiwgMCk7CkBAIC0xOTcwLDkgKzE5NzMsMTQgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAg
ICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0
LCB0eXBlKTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gb3Au
dHlwZTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNV0udS5vcGVyYW5kID0gb3AuZGVw
dGg7Ci0gICAgICAgICAgICBpZiAob3AubGV4aWNhbEVudmlyb25tZW50KQotICAgICAgICAgICAg
ICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5zeW1ib2xUYWJsZS5zZXQoKnZtKCksIG93bmVyRXhl
Y3V0YWJsZSwgb3AubGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpKTsKLSAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChvcC5sZXhpY2FsRW52aXJvbm1lbnQpIHsKKyAgICAg
ICAgICAgICAgICBpZiAob3AudHlwZSA9PSBNb2R1bGVWYXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gS2VlcCB0aGUgbGlua2VkIG1vZHVsZSBlbnZpcm9ubWVudCBzdHJvbmdseSByZWZlcmVu
Y2VkLgorICAgICAgICAgICAgICAgICAgICBhZGRDb25zdGFudChvcC5sZXhpY2FsRW52aXJvbm1l
bnQpOworICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUuanNDZWxsLnNl
dCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQpOworICAgICAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZd
LnUuc3ltYm9sVGFibGUuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZp
cm9ubWVudC0+c3ltYm9sVGFibGUoKSk7CisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUucG9pbnRlciA9IG51bGxwdHI7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtMTk5Nyw3ICsyMDA1LDEyIEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxv
Y2sqIHVubGluCiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZp
ZXIocGNbM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6
OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3Bl
RGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCBtb2RlQW5kVHlwZS50eXBlKCkpOwogCi0gICAgICAg
ICAgICBpbnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IFJlc29sdmVNb2RlQW5kVHlwZSht
b2RlQW5kVHlwZS5tb2RlKCksIG9wLnR5cGUpLm9wZXJhbmQoKTsKKyAgICAgICAgICAgIC8vIE1v
ZHVsZVZhciBjYW4gZ2V0IHRoZSB2YXJpYWJsZSBhcyB0aGUgc2FtZSB0byBDbG9zdXJlVmFyLgor
ICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gTW9kdWxlVmFyKQorICAgICAgICAgICAgICAgIGlu
c3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gUmVzb2x2ZU1vZGVBbmRUeXBlKG1vZGVBbmRU
eXBlLm1vZGUoKSwgQ2xvc3VyZVZhcikub3BlcmFuZCgpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gUmVzb2x2ZU1vZGVB
bmRUeXBlKG1vZGVBbmRUeXBlLm1vZGUoKSwgb3AudHlwZSkub3BlcmFuZCgpOworCiAgICAgICAg
ICAgICBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNV0u
dS53YXRjaHBvaW50U2V0ID0gb3Aud2F0Y2hwb2ludFNldDsKICAgICAgICAgICAgIGVsc2UgaWYg
KG9wLnN0cnVjdHVyZSkKQEAgLTIwNjUsMTcgKzIwNzgsMTggQEAgQ29kZUJsb2NrOjpDb2RlQmxv
Y2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayog
dW5saW4KICAgICAgICAgICAgICAgICAvLyB3ZSdyZSBhYnN0cmFjdGx5ICJyZWFkImluZyBmcm9t
IGEgSlNTY29wZS4KICAgICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0
cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxTY29wZURlcHRo
LCBzY29wZSwgaWRlbnQsIEdldCwgdHlwZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAob3AudHlw
ZSA9PSBDbG9zdXJlVmFyKQorICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IENsb3N1cmVW
YXIgfHwgb3AudHlwZSA9PSBNb2R1bGVWYXIpCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRh
YmxlID0gb3AubGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyKQogICAgICAgICAgICAgICAgICAgICBz
eW1ib2xUYWJsZSA9IG1fZ2xvYmFsT2JqZWN0LmdldCgpLT5zeW1ib2xUYWJsZSgpOwotICAgICAg
ICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwgPSAo
b3AudHlwZSA9PSBNb2R1bGVWYXIpID8gb3AuaW1wb3J0ZWROYW1lLmdldCgpIDogaWRlbnQuaW1w
bCgpOwogICAgICAgICAgICAgICAgIGlmIChzeW1ib2xUYWJsZSkgewogICAgICAgICAgICAgICAg
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKICAg
ICAgICAgICAgICAgICAgICAgLy8gSWYgb3VyIHBhcmVudCBzY29wZSB3YXMgY3JlYXRlZCB3aGls
ZSBwcm9maWxpbmcgd2FzIGRpc2FibGVkLCBpdCB3aWxsIG5vdCBoYXZlIHByZXBhcmVkIGZvciBw
cm9maWxpbmcgeWV0LgogICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+cHJlcGFyZUZv
clR5cGVQcm9maWxpbmcobG9ja2VyKTsKLSAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFi
bGVJRCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1w
bCgpLCAqdm0oKSk7Ci0gICAgICAgICAgICAgICAgICAgIGdsb2JhbFR5cGVTZXQgPSBzeW1ib2xU
YWJsZS0+Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAqdm0o
KSk7CisgICAgICAgICAgICAgICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBzeW1ib2xUYWJsZS0+
dW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIsIGltcGwsICp2bSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZ2xvYmFsVHlwZVNldCA9IHN5bWJvbFRhYmxlLT5nbG9iYWxUeXBlU2V0Rm9yVmFyaWFi
bGUobG9ja2VyLCBpbXBsLCAqdm0oKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBUeXBlUHJvZmlsZXJOb0dsb2JhbElERXhp
c3RzOwogCkBAIC0zMDYyLDYgKzMwNzYsMTEgQEAgQ29kZUJsb2NrKiBQcm9ncmFtQ29kZUJsb2Nr
OjpyZXBsYWNlbWVudCgpCiAgICAgcmV0dXJuIGpzQ2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93
bmVyRXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrKCk7CiB9CiAKK0NvZGVCbG9jayogTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQoreworICAgIHJldHVybiBqc0Nhc3Q8TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmNvZGVCbG9jaygpOworfQor
CiBDb2RlQmxvY2sqIEV2YWxDb2RlQmxvY2s6OnJlcGxhY2VtZW50KCkKIHsKICAgICByZXR1cm4g
anNDYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5jb2RlQmxvY2soKTsK
QEAgLTMwNzcsNiArMzA5NiwxMSBAQCBERkc6OkNhcGFiaWxpdHlMZXZlbCBQcm9ncmFtQ29kZUJs
b2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpCiAgICAgcmV0dXJuIERGRzo6cHJvZ3JhbUNh
cGFiaWxpdHlMZXZlbCh0aGlzKTsKIH0KIAorREZHOjpDYXBhYmlsaXR5TGV2ZWwgTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKQoreworICAgIHJldHVybiBE
Rkc6OnByb2dyYW1DYXBhYmlsaXR5TGV2ZWwodGhpcyk7Cit9CisKIERGRzo6Q2FwYWJpbGl0eUxl
dmVsIEV2YWxDb2RlQmxvY2s6OmNhcGFiaWxpdHlMZXZlbEludGVybmFsKCkKIHsKICAgICByZXR1
cm4gREZHOjpldmFsQ2FwYWJpbGl0eUxldmVsKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGNiOWViZDYxYjVkZGZlMGNiM2Y2N2YzMTBkZjg4
MTc3ZGQ2MzU0OWIuLjM4MjNiYzc1NWM4NGE2ZjhlYmFiZGMwNTA5MGZiZWEzYmExZjBmNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTgyLDYgKzgy
LDcgQEAgY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xh
c3MgUmVwYXRjaEJ1ZmZlcjsKIGNsYXNzIFR5cGVMb2NhdGlvbjsKK2NsYXNzIEpTTW9kdWxlRW52
aXJvbm1lbnQ7CiAKIGVudW0gUmVvcHRpbWl6YXRpb25Nb2RlIHsgRG9udENvdW50UmVvcHRpbWl6
YXRpb24sIENvdW50UmVvcHRpbWl6YXRpb24gfTsKIApAQCAtMTEwMiwxMCArMTEwMywyOSBAQCBj
bGFzcyBQcm9ncmFtQ29kZUJsb2NrIDogcHVibGljIEdsb2JhbENvZGVCbG9jayB7CiAjZW5kaWYK
IH07CiAKK2NsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgOiBwdWJsaWMgR2xvYmFsQ29kZUJs
b2NrIHsKK3B1YmxpYzoKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9j
a1RhZywgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpCisgICAgICAgIDogR2xvYmFsQ29k
ZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCisgICAgeworICAgIH0KKworICAgIE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2soTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJs
ZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNT
Y29wZSogc2NvcGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1
bnNpZ25lZCBmaXJzdExpbmVDb2x1bW5PZmZzZXQpCisgICAgICAgIDogR2xvYmFsQ29kZUJsb2Nr
KG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCBzb3VyY2VQcm92aWRl
ciwgMCwgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KQorICAgIHsKKyAgICB9CisKKyNpZiBFTkFCTEUo
SklUKQorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgREZHOjpDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
SW50ZXJuYWwoKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKwogY2xhc3MgRXZhbENvZGVCbG9jayA6
IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sgewogcHVibGljOgogICAgIEV2YWxDb2RlQmxvY2soQ29w
eVBhcnNlZEJsb2NrVGFnLCBFdmFsQ29kZUJsb2NrJiBvdGhlcikKLSAgICA6IEdsb2JhbENvZGVC
bG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQorICAgICAgICA6IEdsb2JhbENvZGVCbG9jayhD
b3B5UGFyc2VkQmxvY2ssIG90aGVyKQogICAgIHsKICAgICB9CiAgICAgICAgIApAQCAtMTEzMCw3
ICsxMTUwLDcgQEAgY2xhc3MgRXZhbENvZGVCbG9jayA6IHB1YmxpYyBHbG9iYWxDb2RlQmxvY2sg
ewogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2sgOiBwdWJsaWMgQ29kZUJsb2NrIHsKIHB1YmxpYzoK
ICAgICBGdW5jdGlvbkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsIEZ1bmN0aW9uQ29kZUJs
b2NrJiBvdGhlcikKLSAgICA6IENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQorICAg
ICAgICA6IENvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQogICAgIHsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3BwCmluZGV4IDhiMmNh
ZDU2YWI2OGFmMTJiMzJiZjI5Y2Q4NDBhYzBhYTcxODNkNDguLjBjNzA0M2RmYTNlYWZmZTlmOTQ2
YWRkOTE3OTNmZTYyNTdhYWU0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVUeXBlLmNwcApAQCAtNDIsNiArNDIsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgSlNDOjpDb2RlVHlwZSBjb2RlVHlwZSkKICAgICBjYXNlIEpTQzo6RnVuY3Rp
b25Db2RlOgogICAgICAgICBvdXQucHJpbnQoIkZ1bmN0aW9uIik7CiAgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEpTQzo6TW9kdWxlQ29kZToKKyAgICAgICAgb3V0LnByaW50KCJNb2R1bGUiKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmgKaW5kZXgg
YjhlMTA3ZGNmNmI2NzBjZDgyODNlYmZhNTM1MWY3YzYzNDJmMDIzYy4uOTk0MWQ1MTRjZGQwYzVm
ZmUzMGYxYTg4NGYzYmE1NGM2ZjAwZjg5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVUeXBlLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVu
dW0gQ29kZVR5cGUgeyBHbG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVuY3Rpb25Db2RlIH07CitlbnVt
IENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSwgTW9kdWxlQ29k
ZSB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggNTc0YjFlNDgyMzg5OGIz
ODAxNGQ1MTgyOWVhYjdmNzEzMDlkYmIwYS4uNDYwOTVkODRiY2NhNjA2NzVmZWZkZTdmNDAwMjc1
MmRkOWFlYjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
Y29uc3QgQ2xhc3NJbmZvIFVubGlua2VkQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZENv
ZGVCbG9jayIsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRDb2RlQmxvY2spIH07
CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRHbG9iYWxDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVu
bGlua2VkR2xvYmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShVbmxpbmtlZEdsb2JhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIs
ICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrKSB9OworY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
azo6c19pbmZvID0geyAiVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2lu
Zm8gPSB7ICJVbmxpbmtlZEV2YWxDb2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKFVubGlua2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKSB9OwogCkBAIC04OSw3ICs5MCw2IEBAIHZvaWQgVW5saW5rZWRDb2Rl
QmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICBVbmxpbmtlZENvZGVCbG9jayogdGhpc09iamVjdCA9IGpzQ2FzdDxVbmxpbmtlZENvZGVC
bG9jayo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwot
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbFRhYmxlKTsKICAgICBmb3Ig
KEZ1bmN0aW9uRXhwcmVzc2lvblZlY3Rvcjo6aXRlcmF0b3IgcHRyID0gdGhpc09iamVjdC0+bV9m
dW5jdGlvbkRlY2xzLmJlZ2luKCksIGVuZCA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25EZWNscy5l
bmQoKTsgcHRyICE9IGVuZDsgKytwdHIpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHB0cik7CiAg
ICAgZm9yIChGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3I6Oml0ZXJhdG9yIHB0ciA9IHRoaXNPYmpl
Y3QtPm1fZnVuY3Rpb25FeHBycy5iZWdpbigpLCBlbmQgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9u
RXhwcnMuZW5kKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQpAQCAtMjkyLDYgKzI5MiwxNCBAQCB2b2lk
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CiB9CiAKK3ZvaWQgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgVW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNP
YmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJv
bFRhYmxlKTsKK30KKwogVW5saW5rZWRDb2RlQmxvY2s6On5VbmxpbmtlZENvZGVCbG9jaygpCiB7
CiB9CkBAIC0zMDEsNiArMzA5LDExIEBAIHZvaWQgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBqc0Nhc3Q8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
Kj4oY2VsbCktPn5VbmxpbmtlZFByb2dyYW1Db2RlQmxvY2soKTsKIH0KIAordm9pZCBVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpz
Q2FzdDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihjZWxsKS0+flVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jaygpOworfQorCiB2b2lkIFVubGlua2VkRXZhbENvZGVCbG9jazo6
ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CiAgICAganNDYXN0PFVubGlua2VkRXZhbENvZGVCbG9j
ayo+KGNlbGwpLT5+VW5saW5rZWRFdmFsQ29kZUJsb2NrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDMyMmQyNjE5OWY3
OTdjMTAzODFkZDQ1ODkzYmQ1MzUzZmYxYjZiNDYuLjgyY2U4YjM1NjNjMmVhZTZmOGVkNDhiZDU0
NGEwYmUyMTJmMTdmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0zNjAsOSArMzYwLDYgQEAgY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgaWYg
KGNvZGVUeXBlKCkgPT0gR2xvYmFsQ29kZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
bV9zeW1ib2xUYWJsZS5zZXQodm0sIHRoaXMsIFN5bWJvbFRhYmxlOjpjcmVhdGUodm0pKTsKICAg
ICB9CiAKIHByaXZhdGU6CkBAIC00MTIsOCArNDA5LDYgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3IgbV9mdW5j
dGlvbkRlY2xzOwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1bmN0aW9uRXhwcnM7
CiAKLSAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGU7Ci0KICAgICBW
ZWN0b3I8dW5zaWduZWQ+IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAKICNpZiBFTkFC
TEUoQllURUNPREVfQ09NTUVOVFMpCkBAIC01MTQsNiArNTA5LDcxIEBAIGNsYXNzIFVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayB7
CiAgICAgREVDTEFSRV9JTkZPOwogfTsKIAorY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkR2xvYmFsQ29kZUJsb2NrIHsKK3ByaXZhdGU6
CisgICAgZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAgICBzdGF0aWMgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5m
bykKKyAgICB7CisgICAgICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2s+KHZtLT5oZWFwKSkgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS0+
dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLmdldCgpLCBpbmZvKTsKKyAg
ICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CisgICAgICAgIHJldHVybiBpbnN0
YW5jZTsKKyAgICB9CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFVubGlua2VkR2xvYmFsQ29kZUJs
b2NrIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCisgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIC8vIFRoaXMgc3ltYm9sIHRhYmxlIHJlcHJlc2Vu
dHMgdGhlIGxheW91dCBvZiB0aGUgbW9kdWxlIGVudmlyb25tZW50LiBUaGlzIHN5bWJvbCB0YWJs
ZSB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoZSBieXRlCisgICAgLy8gY29kZSBnZW5lcmF0b3Igc2lu
Y2UgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBpbmNsdWRlcyB0aGUgdG9wLW1vc3QgbGV4aWNhbCBj
YXB0dXJlZCB2YXJpYWJsZXMgaW5zaWRlIHRoZSBtb2R1bGUgY29kZS4KKyAgICAvLyBUaGlzIG1l
YW5zIHRoYXQsIG9uY2UgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBpcyBhbGxvY2F0ZWQgYW5kIGlu
c3RhbnRpYXRlZCBmcm9tIHRoaXMgc3ltYm9sIHRhYmxlLCBpdCBpcyB0aXRlbHkKKyAgICAvLyBj
b3VwbGVkIHdpdGggdGhlIHNwZWNpZmljIHVubGlua2VkIG1vZHVsZSBwcm9ncmFtIGNvZGUgYmxv
Y2sgYW5kIHRoZSBzeW1ib2wgdGFibGUuIFNvIGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVsZQor
ICAgIC8vIGNvZGUsIHdlIHNob3VsZCBub3QgY2xlYXIgdGhlIHVubGlua2VkIG1vZHVsZSBwcm9n
cmFtIGNvZGUgYmxvY2sgaW4gdGhlIG1vZHVsZSBleGVjdXRhYmxlLiBUaGlzIHJlcXVpcmVtZW50
IGlzIG1ldAorICAgIC8vIGJlY2F1c2UgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIG9ubHkgY2xlYXJz
IHVubGlua2VkIGNvZGUgaW4gKDEpIHVubWFya2VkIGV4ZWN1dGFibGVzIGFuZCAoMikgZnVuY3Rp
b24gZXhlY3V0YWJsZXMuCisgICAgLy8KKyAgICAvLyBTaW5jZSB0aGUgZnVuY3Rpb24gY29kZSBt
YXkgYmUgZXhlY3V0ZWQgcmVwZWF0ZWRseSBhbmQgdGhlIGVudmlyb25tZW50IG9mIGVhY2ggZnVu
Y3Rpb24gZXhlY3V0aW9uIGlzIGRpZmZlcmVudCwKKyAgICAvLyB0aGUgZnVuY3Rpb24gY29kZSBu
ZWVkIHRvIGFsbG9jYXRlIGFuZCBpbnN0YW50aWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4gdGhlIHBy
b2xvZ3VlIG9mIHRoZSBmdW5jdGlvbiBjb2RlLiBPbiB0aGUKKyAgICAvLyBvdGhlciBoYW5kLCB0
aGUgbW9kdWxlIGNvZGUgaXMgZXhlY3V0ZWQgb25seSBvbmNlLiBTbyB3ZSBjYW4gaW5zdGFudGlh
dGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBvdXRzaWRlIHRoZSBtb2R1bGUKKyAgICAvLyBjb2Rl
LiBBdCB0aGF0IHRpbWUsIHdlIGNvbnN0cnVjdCB0aGUgbW9kdWxlIGVudmlyb25tZW50IGJ5IHVz
aW5nIHRoaXMgc3ltYm9sIHRhYmxlIGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVsZSBjb2RlLgor
ICAgIC8vIEluc3RhbnRpYXRpbmcgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBiZWZvcmUgZXhlY3V0
aW5nIHRoZSBtb2R1bGUgY29kZSBpcyByZXF1aXJlZCB0byBsaW5rIHRoZSBpbXBvcnRlZCBiaW5k
aW5ncworICAgIC8vIGJldHdlZW4gdGhlIG1vZHVsZXMuCisgICAgLy8KKyAgICAvLyBUaGUgdW5s
aW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9jayBvbmx5IGhvbGRzIHRoZSBzeW1ib2wgdGFi
bGUuIE5vdCBob2xkcyB0aGUgbW9kdWxlIGVudmlyb25tZW50LiBTbyB3aGlsZQorICAgIC8vIHRo
ZSBtb2R1bGUgZW52aXJvbm1lbnQgcmVxdWlyZXMgdGhlIHNwZWNpZmljIHVubGlua2VkIG1vZHVs
ZSBwcm9ncmFtIGNvZGUgYmxvY2ssIHRoZSB1bmxpbmtlZCBtb2R1bGUgY29kZSBibG9jaworICAg
IC8vIGNhbiBiZSB1c2VkIGZvciB0aGUgbW9kdWxlIGVudmlyb25tZW50IGluc3RhbnRpYXRlZCBm
cm9tIHRoaXMgdW5saW5rZWQgY29kZSBibG9jay4gVGhlcmUgaXMgMTpOIHJlbGF0aW9uIGJldHdl
ZW4KKyAgICAvLyB0aGUgdW5saW5rZWQgbW9kdWxlIGNvZGUgYmxvY2sgYW5kIHRoZSBtb2R1bGUg
ZW52aXJvbm1lbnRzLiBTbyB0aGUgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9jayBj
YW4gYmUgY2FjaGVkLgorICAgIC8vCisgICAgLy8gT24gdGhlIG90aGVyIGhhbmQsIHRoZSBsaW5r
ZWQgY29kZSBibG9jayBmb3IgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBpbmNsdWRlcyB0aGUgcmVz
b2x2ZWQgcmVmZXJlbmNlcyB0byB0aGUgaW1wb3J0ZWQKKyAgICAvLyBiaW5kaW5ncy4gVGhlIGlt
cG9ydGVkIGJpbmRpbmcgcmVmZXJlbmNlcyB0aGUgb3RoZXIgbW9kdWxlIGVudmlyb25tZW50LCBz
byB0aGUgbGlua2VkIGNvZGUgYmxvY2sgaXMgdGl0bHkgY291cGxlZAorICAgIC8vIHdpdGggdGhl
IHNwZWNpZmljIHNldCBvZiB0aGUgbW9kdWxlIGVudmlyb25tZW50cy4gVGh1cywgdGhlIGxpbmtl
ZCBjb2RlIGJsb2NrIHNob3VsZCBub3QgYmUgY2FjaGVkLgorICAgIFN5bWJvbFRhYmxlKiBzeW1i
b2xUYWJsZSgpIHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAg
ICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCisgICAgICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlLCBNb2R1bGVDb2RlLCBpbmZvKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICAgICAgbV9zeW1ib2xUYWJsZS5zZXQodm0sIHRoaXMsIFN5bWJvbFRhYmxlOjpjcmVh
dGUodm0pKTsKKyAgICB9CisKKyAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9s
VGFibGU7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvLCBUeXBlSW5mbyhVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworfTsKKwogY2xh
c3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkR2xvYmFsQ29k
ZUJsb2NrIHsKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggNjJjMmQzYmE0MjU3NjM4ZTg0MGJiM2E2MmQyNzc0YjBmMzEyN2RmYy4uZWMy
OWQ1NTJhODQyNjQ0NDYxMDQ2MjdkNTA1NTBhZGJjOTMwODlkMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTcwLDcgKzcwLDkgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KCkKICAgICBpZiAobV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRzKQogICAgICAgICBpbml0aWFs
aXplVmFyaWFibGUodmFyaWFibGUocHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cyksIG1fYXJndW1l
bnRzUmVnaXN0ZXIpOwogCi0gICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgdHJ1ZSk7
CisgICAgLy8gRm9yIE1vZHVsZUNvZGUsIHdlIGFscmVhZHkgaW5zdGFudGlhdGVkIHRoZSBlbnZp
cm9ubWVudCBmb3IgdGhlIGxleGljYWwgdmFyaWFibGVzLgorICAgIGlmIChtX2NvZGVUeXBlICE9
IE1vZHVsZUNvZGUpCisgICAgICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIHRydWUp
OwogCiAgICAgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcCA9IG5ld1RlbXBvcmFy
eSgpOwpAQCAtNTA0LDYgKzUwNiwxODggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICBt
X1REWlN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMs
IGZhbHNlKSk7CiB9CiAKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFBy
b2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKQorICAgIDogbV9zaG91bGRFbWl0RGVidWdIb29rcyhPcHRpb25z
Ojpmb3JjZURlYnVnZ2VyQnl0ZWNvZGVHZW5lcmF0aW9uKCkgfHwgZGVidWdnZXJNb2RlID09IERl
YnVnZ2VyT24pCisgICAgLCBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MoT3B0aW9uczo6Zm9yY2VQ
cm9maWxlckJ5dGVjb2RlR2VuZXJhdGlvbigpIHx8IHByb2ZpbGVyTW9kZSA9PSBQcm9maWxlck9u
KQorICAgICwgbV9zY29wZU5vZGUobW9kdWxlUHJvZ3JhbU5vZGUpCisgICAgLCBtX2NvZGVCbG9j
ayh2bSwgY29kZUJsb2NrKQorICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJn
dW1lbnRPZmZzZXQoKSkKKyAgICAsIG1fY29kZVR5cGUoTW9kdWxlQ29kZSkKKyAgICAsIG1fdm0o
JnZtKQorICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKK3sKKyAgICBBU1NFUlRfVU5V
U0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMtPnNp
emUoKSk7CisKKyAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29u
c3RhbnRSZWdpc3RlcnMpCisgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOworCisg
ICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9v
a3MgPSBmYWxzZTsKKworICAgIC8vIFVzZSB0aGUgc3ltYm9sIHRhYmxlIGFsbG9jYXRlZCBpbiB0
aGUgdW5saW5rZWQgY29kZSBibG9jay4gVGhpcyBzeW1ib2wgdGFibGUKKyAgICAvLyB3aWxsIGJl
IHVzZWQgdG8gYWxsb2NhdGUgYW5kIGluc3RhbnRpYXRlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQu
CisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgp
OworICAgIHN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJpY3RF
dmFsKTsKKyAgICBzeW1ib2xUYWJsZS0+c2V0U2NvcGVUeXBlKFN5bWJvbFRhYmxlOjpTY29wZVR5
cGU6OkxleGljYWxTY29wZSk7CisKKyAgICBib29sIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGlu
Z3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29w
ZUNoYWluKCk7CisgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3Vs
ZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKKyAgICBpZiAoc2hvdWxk
Q2FwdHVyZUFsbE9mVGhlVGhpbmdzKQorICAgICAgICBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVj
bGFyYXRpb25zKCkubWFya0FsbFZhcmlhYmxlc0FzQ2FwdHVyZWQoKTsKKworICAgIGF1dG8gY2Fw
dHVyZXMgPSBbJl0gKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpIC0+IGJvb2wgeworICAgICAgICBp
ZiAoIXNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBtb2R1bGVQcm9ncmFtTm9kZS0+Y2FwdHVyZXModWlkKTsKKyAg
ICB9OworICAgIGF1dG8gbG9va1VwVmFyS2luZCA9IFsmXSAoVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiBlbnRyeSkgLT4gVmFyS2luZCB7Cisg
ICAgICAgIC8vIEFsbG9jYXRlIHRoZSBleHBvcnRlZCB2YXJpYWJsZXMgaW4gdGhlIG1vZHVsZSBl
bnZpcm9ubWVudC4KKyAgICAgICAgaWYgKGVudHJ5LmlzRXhwb3J0ZWQoKSkKKyAgICAgICAgICAg
IHJldHVybiBWYXJLaW5kOjpTY29wZTsKKworICAgICAgICAvLyBBbGxvY2F0ZSB0aGUgbmFtZXNw
YWNlIHZhcmlhYmxlcyBpbiB0aGUgbW9kdWxlIGVudmlyb25tZW50IHRvIGluc3RhbnRpYXRlCisg
ICAgICAgIC8vIGl0IGZyb20gdGhlIG91dHNpZGUgb2YgdGhlIG1vZHVsZSBjb2RlLgorICAgICAg
ICBpZiAoZW50cnkuaXNJbXBvcnRlZE5hbWVzcGFjZSgpKQorICAgICAgICAgICAgcmV0dXJuIFZh
cktpbmQ6OlNjb3BlOworCisgICAgICAgIGlmIChlbnRyeS5pc0NhcHR1cmVkKCkpCisgICAgICAg
ICAgICByZXR1cm4gVmFyS2luZDo6U2NvcGU7CisgICAgICAgIHJldHVybiBjYXB0dXJlcyh1aWQp
ID8gVmFyS2luZDo6U2NvcGUgOiBWYXJLaW5kOjpTdGFjazsKKyAgICB9OworCisgICAgZW1pdE9w
Y29kZShvcF9lbnRlcik7CisKKyAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOworCisgICAgbV9j
YWxsZWVSZWdpc3Rlci5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOworCisgICAgbV9jb2RlQmxv
Y2stPnNldE51bVBhcmFtZXRlcnMoMSk7IC8vIEFsbG9jYXRlIHNwYWNlIGZvciAidGhpcyIKKwor
ICAgIC8vIE5vdyBkZWNsYXJlIGFsbCB2YXJpYWJsZXMuCisKKyAgICBmb3IgKGF1dG8mIGVudHJ5
IDogbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpKSB7CisgICAgICAgIEFTU0VS
VCghZW50cnkudmFsdWUuaXNMZXQoKSAmJiAhZW50cnkudmFsdWUuaXNDb25zdCgpKTsKKyAgICAg
ICAgaWYgKCFlbnRyeS52YWx1ZS5pc1ZhcigpKSAvLyBUaGlzIGlzIGVpdGhlciBhIHBhcmFtZXRl
ciBvciBjYWxsZWUuCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gSW1wb3J0ZWQg
YmluZGluZ3MgYXJlIG5vdCBhbGxvY2F0ZWQgaW4gdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBhcyB1
c3VhbCB2YXJpYWJsZXMnIHdheS4KKyAgICAgICAgLy8gVGhlc2UgcmVmZXJlbmNlcyByZW1haW4g
dGhlICJEeW5hbWljIiBpbiB0aGUgdW5saW5rZWQgY29kZSBibG9jay4gTGF0ZXIsIHdoZW4gbGlu
a2luZworICAgICAgICAvLyB0aGUgY29kZSBibG9jaywgd2UgcmVzb2x2ZSB0aGUgcmVmZXJlbmNl
IHRvIHRoZSAiTW9kdWxlVmFyIi4KKyAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzSW1wb3J0ZWQo
KSAmJiAhZW50cnkudmFsdWUuaXNJbXBvcnRlZE5hbWVzcGFjZSgpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGNyZWF0ZVZhcmlhYmxlKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwg
ZW50cnkua2V5LmdldCgpKSwgbG9va1VwVmFyS2luZChlbnRyeS5rZXkuZ2V0KCksIGVudHJ5LnZh
bHVlKSwgc3ltYm9sVGFibGUsIElnbm9yZUV4aXN0aW5nKTsKKyAgICB9CisKKyAgICBWYXJpYWJs
ZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzID0gbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGlj
YWxWYXJpYWJsZXMoKTsKKworICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBsZXhp
Y2FsVmFyaWFibGVzKSB7CisgICAgICAgICAgICBBU1NFUlQoZW50cnkudmFsdWUuaXNMZXQoKSB8
fCBlbnRyeS52YWx1ZS5pc0NvbnN0KCkpOworICAgICAgICAgICAgQVNTRVJUKCFlbnRyeS52YWx1
ZS5pc1ZhcigpKTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgc3ltYm9sVGFibGVFbnRy
eSA9IHN5bWJvbFRhYmxlLT5nZXQobG9ja2VyLCBlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICAg
ICAgQVNTRVJUKHN5bWJvbFRhYmxlRW50cnkuaXNOdWxsKCkpOworCisgICAgICAgICAgICAvLyBJ
bXBvcnRlZCBiaW5kaW5ncyBhcmUgbm90IGFsbG9jYXRlZCBpbiB0aGUgbW9kdWxlIGVudmlyb25t
ZW50IGFzIHVzdWFsIHZhcmlhYmxlcycgd2F5LgorICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVl
LmlzSW1wb3J0ZWQoKSAmJiAhZW50cnkudmFsdWUuaXNJbXBvcnRlZE5hbWVzcGFjZSgpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBWYXJLaW5kIHZhcktpbmQgPSBs
b29rVXBWYXJLaW5kKGVudHJ5LmtleS5nZXQoKSwgZW50cnkudmFsdWUpOworICAgICAgICAgICAg
VmFyT2Zmc2V0IHZhck9mZnNldDsKKyAgICAgICAgICAgIGlmICh2YXJLaW5kID09IFZhcktpbmQ6
OlNjb3BlKQorICAgICAgICAgICAgICAgIHZhck9mZnNldCA9IFZhck9mZnNldChzeW1ib2xUYWJs
ZS0+dGFrZU5leHRTY29wZU9mZnNldChsb2NrZXIpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIEFTU0VSVCh2YXJLaW5kID09IFZhcktpbmQ6OlN0YWNrKTsKKyAgICAgICAg
ICAgICAgICBSZWdpc3RlcklEKiBsb2NhbCA9IG5ld0Jsb2NrU2NvcGVWYXJpYWJsZSgpOworICAg
ICAgICAgICAgICAgIGxvY2FsLT5yZWYoKTsKKyAgICAgICAgICAgICAgICB2YXJPZmZzZXQgPSBW
YXJPZmZzZXQobG9jYWwtPnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeSh2YXJPZmZzZXQsIGVudHJ5LnZhbHVl
LmlzQ29uc3QoKSA/IFJlYWRPbmx5IDogMCk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRk
KGxvY2tlciwgZW50cnkua2V5LmdldCgpLCBuZXdFbnRyeSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBSZWdpc3RlcklEKiBjb25zdGFudFN5bWJvbFRhYmxlID0gbnVsbHB0cjsKKyAgICBpZiAo
dm0udHlwZVByb2ZpbGVyKCkpCisgICAgICAgIGNvbnN0YW50U3ltYm9sVGFibGUgPSBhZGRDb25z
dGFudFZhbHVlKHN5bWJvbFRhYmxlKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnN0YW50U3ltYm9s
VGFibGUgPSBhZGRDb25zdGFudFZhbHVlKHN5bWJvbFRhYmxlLT5jbG9uZVNjb3BlUGFydCgqbV92
bSkpOworCisgICAgbV9URFpTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIobGV4aWNhbFZhcmlh
YmxlcywgdHJ1ZSkpOworICAgIG1fc3ltYm9sVGFibGVTdGFjay5hcHBlbmQoU3ltYm9sVGFibGVT
dGFja0VudHJ5IHsgU3Ryb25nPFN5bWJvbFRhYmxlPigqbV92bSwgc3ltYm9sVGFibGUpLCBtX3Nj
b3BlUmVnaXN0ZXIsIGZhbHNlLCBjb25zdGFudFN5bWJvbFRhYmxlLT5pbmRleCgpIH0pOworCisg
ICAgLy8gUHJlZmlsbCBzdGFjayB2YXJpYWJsZXMgd2l0aCB0aGUgVERaIGVtcHR5IHZhbHVlLgor
ICAgIC8vIFNjb3BlIHZhcmlhYmxlcyB3aWxsIGJlIGluaXRpYWxpemVkIHRvIHRoZSBURFogZW1w
dHkgdmFsdWUgd2hlbiBKU0xleGljYWxFbnZpcm9ubWVudCBpcyBhbGxvY2F0ZWQuCisgICAgZm9y
IChhdXRvJiBlbnRyeSA6IGxleGljYWxWYXJpYWJsZXMpIHsKKyAgICAgICAgLy8gSW1wb3J0ZWQg
YmluZGluZ3MgYXJlIG5vdCBhbGxvY2F0ZWQgaW4gdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBhcyB1
c3VhbCB2YXJpYWJsZXMnIHdheS4KKyAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzSW1wb3J0ZWQo
KSAmJiAhZW50cnkudmFsdWUuaXNJbXBvcnRlZE5hbWVzcGFjZSgpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBzeW1ib2xUYWJsZUVudHJ5ID0gc3lt
Ym9sVGFibGUtPmdldChlbnRyeS5rZXkuZ2V0KCkpOworICAgICAgICBBU1NFUlQoIXN5bWJvbFRh
YmxlRW50cnkuaXNOdWxsKCkpOworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gc3ltYm9sVGFi
bGVFbnRyeS52YXJPZmZzZXQoKTsKKyAgICAgICAgaWYgKG9mZnNldC5pc1Njb3BlKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKG9mZnNldC5pc1N0YWNrKCkpOworICAg
ICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoJnJlZ2lzdGVyRm9yKG9mZnNldC5zdGFja09mZnNldCgp
KSk7CisgICAgfQorCisgICAgLy8gbWFrZUZ1bmN0aW9uIGFzc3VtZXMgdGhhdCB0aGVyZSdzIGNv
cnJlY3QgVERaIHN0YWNrIGVudHJpZXMuCisgICAgLy8gU28gaXQgc2hvdWxkIGJlIGNhbGxlZCBh
ZnRlciBwdXR0aW5nIG91ciBsZXhpY2FsIGVudmlyb25tZW50IHRvIHRoZSBURFogc3RhY2sgY29y
cmVjdGx5LgorCisgICAgZm9yIChGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24gOiBtb2R1
bGVQcm9ncmFtTm9kZS0+ZnVuY3Rpb25TdGFjaygpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGl0
ZXJhdG9yID0gbW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLmZpbmQoZnVuY3Rp
b24tPmlkZW50KCkuaW1wbCgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXRlcmF0b3IgIT0g
bW9kdWxlUHJvZ3JhbU5vZGUtPnZhckRlY2xhcmF0aW9ucygpLmVuZCgpKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWl0ZXJhdG9yLT52YWx1ZS5pc0ltcG9ydGVkKCkpOworCisgICAgICAgIFZh
cktpbmQgdmFyS2luZCA9IGxvb2tVcFZhcktpbmQoaXRlcmF0b3ItPmtleS5nZXQoKSwgaXRlcmF0
b3ItPnZhbHVlKTsKKyAgICAgICAgaWYgKHZhcktpbmQgPT0gVmFyS2luZDo6U2NvcGUpIHsKKyAg
ICAgICAgICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKyAgICAgICAgICAgIC8vIFNl
Y3Rpb24gMTUuMi4xLjE2LjQsIHN0ZXAgMTYtYS1pdi0xLgorICAgICAgICAgICAgLy8gQWxsIGhl
YXAgYWxsb2NhdGVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBzaG91bGQgYmUgaW5zdGFudGlhdGVk
IHdoZW4gdGhlIG1vZHVsZSBlbnZpcm9ubWVudAorICAgICAgICAgICAgLy8gaXMgY3JlYXRlZC4g
VGhleSBpbmNsdWRlIHRoZSBleHBvcnRlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgYW5kIG5vdC1l
eHBvcnRlZC1idXQtaGVhcC1hbGxvY2F0ZWQKKyAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGRlY2xh
cmF0aW9ucy4gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIGV4cG9ydGVkIGZ1bmN0aW9uIHNob3Vs
ZCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlCisgICAgICAgICAgICAvLyBleGVjdXRpbmcgdGhlIGFu
eSBtb2R1bGUgaW4gdGhlIGRlcGVuZGVuY3kgZ3JhcGguIFRoaXMgZW5hYmxlcyB0aGUgbW9kdWxl
cyB0byBsaW5rIHRoZSBpbXBvcnRlZAorICAgICAgICAgICAgLy8gYmluZGluZ3MgYmVmb3JlIGV4
ZWN1dGluZyB0aGUgYW55IG1vZHVsZSBjb2RlLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAg
IC8vIEFuZCBzaW5jZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgYXJlIGluc3RhbnRpYXRlZCBiZWZv
cmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUgYm9keSBjb2RlLCB0aGUgc3BlYworICAgICAgICAgICAg
Ly8gYWxsb3dzIHRoZSBmdW5jdGlvbnMgaW5zaWRlIHRoZSBtb2R1bGUgdG8gYmUgZXhlY3V0ZWQg
YmVmb3JlIGl0cyBtb2R1bGUgYm9keSBpcyBleGVjdXRlZCB1bmRlcgorICAgICAgICAgICAgLy8g
dGhlIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4gVGhlIGZvbGxvd2luZyBpcyB0aGUgZXhhbXBsZS4K
KyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBNb2R1bGUgQSAoZXhlY3V0ZWQgMXN0KToK
KyAgICAgICAgICAgIC8vICAgIGltcG9ydCB7IGIgfSBmcm9tICJCIjsKKyAgICAgICAgICAgIC8v
ICAgIC8vIEhlcmUsIHRoZSBtb2R1bGUgIkIiIGlzIG5vdCBleGVjdXRlZCB5ZXQsIGJ1dCB0aGUg
ZnVuY3Rpb24gZGVjbGFyYXRpb24gaXMgYWxyZWFkeSBpbnN0YW50aWF0ZWQuCisgICAgICAgICAg
ICAvLyAgICAvLyBTbyB3ZSBjYW4gY2FsbCB0aGUgZnVuY3Rpb24gZXhwb3J0ZWQgZnJvbSAiQiIu
CisgICAgICAgICAgICAvLyAgICBiKCk7CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8g
ICAgZXhwb3J0IGZ1bmN0aW9uIGEoKSB7CisgICAgICAgICAgICAvLyAgICB9CisgICAgICAgICAg
ICAvLworICAgICAgICAgICAgLy8gTW9kdWxlIEIgKGV4ZWN1dGVkIDJuZCk6CisgICAgICAgICAg
ICAvLyAgICBpbXBvcnQgeyBhIH0gZnJvbSAiQSI7CisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgLy8gICAgZXhwb3J0IGZ1bmN0aW9uIGIoKSB7CisgICAgICAgICAgICAvLyAgICAgICAgYygp
OworICAgICAgICAgICAgLy8gICAgfQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vICAg
IC8vIGMgaXMgbm90IGV4cG9ydGVkLCBidXQgc2luY2UgaXQgaXMgcmVmZXJlbmNlZCBmcm9tIHRo
ZSBiLCB3ZSBzaG91bGQgaW5zdGFudGlhdGUgaXQgYmVmb3JlCisgICAgICAgICAgICAvLyAgICAv
LyBleGVjdXRpbmcgdGhlICJCIiBtb2R1bGUgY29kZS4KKyAgICAgICAgICAgIC8vICAgIGZ1bmN0
aW9uIGMoKSB7CisgICAgICAgICAgICAvLyAgICAgICAgYSgpOworICAgICAgICAgICAgLy8gICAg
fQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE1vZHVsZSBFbnRyeVBvaW50IChleGVj
dXRlZCBsYXN0KToKKyAgICAgICAgICAgIC8vICAgIGltcG9ydCAiQiI7CisgICAgICAgICAgICAv
LyAgICBpbXBvcnQgIkEiOworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIG1fY29kZUJsb2Nr
LT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAvLyBTdGFjayBhbGxvY2F0ZWQgZnVuY3Rpb25zIGNhbiBiZSBhbGxv
Y2F0ZWQgd2hlbiBleGVjdXRpbmcgdGhlIG1vZHVsZSdzIGJvZHkuCisgICAgICAgICAgICBtX2Z1
bmN0aW9uc1RvSW5pdGlhbGl6ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZnVuY3Rpb24sIE5vcm1h
bEZ1bmN0aW9uVmFyaWFibGUpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogQnl0ZWNvZGVHZW5l
cmF0b3I6On5CeXRlY29kZUdlbmVyYXRvcigpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggODljZGVh
ZDEzNTQ0ODFjNzQ2NjcwZTM1Zjk2MDA1OTM3ZmI5NWJhNy4uMTZiYmMwZGRjMGFkZjQwOTFkOGEx
Mzk0NDRhYmIzOTM0MGY1MDgxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMjY5LDYgKzI2OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2Rl
KiwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mLCBGdW5jdGlvbk5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgRGVidWdnZXJN
b2RlLCBQcm9maWxlck1vZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKICAgICAgICAg
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSosIFVubGlua2VkRXZhbENvZGVCbG9jayos
IERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7
CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBEZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogCiAgICAgICAgIH5CeXRlY29kZUdlbmVyYXRv
cigpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA5YzZlNzZmMmY0MmJkZGNlOTY1YjgyNDIyOGFiNjUy
MThmZTBlMTdlLi5kNGIzNTA0ZjkyMDZhNTIzNTA3ODM2MTU1Mzk2NmYwMDBjNTE5ODdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yODk1LDggKzI4OTUsMTcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTW9kdWxlUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotdm9pZCBNb2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCopCit2b2lkIE1vZHVsZVByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7CisgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBzdGFydExpbmUoKSwgc3Rh
cnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgpKTsKKworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVnaXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOworICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KHN0YXJ0U3RhcnRPZmZzZXQoKSk7Cisg
ICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGRzdFJlZ2lzdGVyLmdldCgpKTsK
KworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBsYXN0TGlu
ZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVt
aXRFbmQoZHN0UmVnaXN0ZXIuZ2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMwNTcs
MzAgKzMwNjYsMzcgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKIAogdm9pZCBJbXBvcnREZWNs
YXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
KQogeworICAgIC8vIERvIG5vdGhpbmcgYXQgcnVudGltZS4KIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiB2b2lkIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCiB7CisgICAgLy8gRG8gbm90aGluZyBhdCBy
dW50aW1lLgogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwb3J0RGVm
YXVsdERlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhwb3J0RGVmYXVs
dERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCopCit2b2lkIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CisgICAgQVNT
RVJUKG1fZGVjbGFyYXRpb24pOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZGVjbGFy
YXRpb24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwb3J0TG9j
YWxEZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhwb3J0TG9jYWxE
ZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqKQordm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKKyAgICBBU1NFUlQo
bV9kZWNsYXJhdGlvbik7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9kZWNsYXJhdGlv
bik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnROYW1lZERl
Y2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBFeHBvcnROYW1lZERlY2xh
cmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCop
CiB7CisgICAgLy8gRG8gbm90aGluZyBhdCBydW50aW1lLgogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlIC0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDdmNjUwNTJkYThmMmYxZjk3NDM0YzhjYjdhNmEyMGZjNDIyNmU1MDcuLmE3NDIz
MDhhNzlhNGNjYzllYTM0YzFmYzI5ZjVjNzZhZjdhMjU4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNp
bmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
CiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKQEAgLTM4MzMsNiArMzgzNCwxMiBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAg
ICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVj
a3MgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXREaXJlY3QobV9pbmxpbmVT
dGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgTW9kdWxlVmFyOiB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbHJlYWR5IHN0cm9u
Z2x5IHJlZmVyZW5jZWQgYnkgdGhlIENvZGVCbG9jay4KKyAgICAgICAgICAgICAgICBKU01vZHVs
ZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25t
ZW50Kj4oY3VycmVudEluc3RydWN0aW9uWzZdLnUuanNDZWxsLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdlYWtKU0NvbnN0YW50KG1vZHVsZUVudmly
b25tZW50KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcjoK
ICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKQEAg
LTQwMDIsNiArNDAwOSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0Q2xvc3VyZVZhciwg
T3BJbmZvKG9wZXJhbmQpLCBPcEluZm8ocHJlZGljdGlvbiksIHNjb3BlTm9kZSkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBNb2R1bGVW
YXI6CiAgICAgICAgICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQwODYsNiAr
NDA5NCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgICAgICAgICBjYXNlIER5bmFtaWM6
CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCBiZTYyYjlmMTViNjgxOTU3YjA3Y2FjNWE0Y2Q0NTZlNWQ1Mjc2MGQ0Li41
YTNmNzJlMzMyN2NlMWRkNzNhMWIwOGMwMDVkYzAwOWNjNDBjODRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yMjEsNiArMjIxLDkgQEAg
Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWMKIAogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CiAg
ICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gUmVzb2x2ZU1vZGVBbmRUeXBlKHBjWzRd
LnUub3BlcmFuZCkudHlwZSgpOworICAgICAgICAvLyBJbXBvcnRlZCBiaW5kaW5ncyBhcmUgYWx3
YXlzIGltbXV0YWJsZS4KKyAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IE1vZHVsZVZhcikKKyAg
ICAgICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwogICAgICAgICAvLyBJZiB3ZSdyZSB3cml0
aW5nIHRvIGEgcmVhZG9ubHkgcHJvcGVydHkgd2UgZW1pdCBhIER5bmFtaWMgcHV0IHRoYXQKICAg
ICAgICAgLy8gdGhlIERGRyBjYW4ndCBjdXJyZW50bHkgaGFuZGxlLgogICAgICAgICBpZiAocmVz
b2x2ZVR5cGUgPT0gRHluYW1pYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDY2ZmE4ZWNmNTQwNjM1ODZjZDRhYWE4ZmI4NDk3
YmM2MTUxZWIwMzcuLjVhN2EyYWU1ZGQwZTZkMDA0OTFjMDc3YmM1NDhkYmRkMTcxNjZiZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2lu
Y2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpAQCAt
OTcsNiArOTgsNyBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnJpZW5kbHlTb3VyY2VVUkwoKSBjb25z
dAogICAgIAogICAgIHN3aXRjaCAoY29kZVR5cGUpIHsKICAgICBjYXNlIFN0YWNrRnJhbWVFdmFs
Q29kZToKKyAgICBjYXNlIFN0YWNrRnJhbWVNb2R1bGVDb2RlOgogICAgIGNhc2UgU3RhY2tGcmFt
ZUZ1bmN0aW9uQ29kZToKICAgICBjYXNlIFN0YWNrRnJhbWVHbG9iYWxDb2RlOgogICAgICAgICBp
ZiAoIXNvdXJjZVVSTC5pc0VtcHR5KCkpCkBAIC0xMTgsNiArMTIwLDkgQEAgU3RyaW5nIFN0YWNr
RnJhbWU6OmZyaWVuZGx5RnVuY3Rpb25OYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lKSBjb25zdAog
ICAgIGNhc2UgU3RhY2tGcmFtZUV2YWxDb2RlOgogICAgICAgICB0cmFjZUxpbmUgPSAiZXZhbCBj
b2RlIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGFja0ZyYW1lTW9kdWxlQ29kZToKKyAg
ICAgICAgdHJhY2VMaW5lID0gIm1vZHVsZSBjb2RlIjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTdGFja0ZyYW1lTmF0aXZlQ29kZToKICAgICAgICAgaWYgKGNhbGxlZSkKICAgICAgICAgICAg
IHRyYWNlTGluZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUsIHN0YWNrRnJh
bWVDYWxsZWUpLmltcGwoKTsKQEAgLTQ1MSw2ICs0NTYsOCBAQCBzdGF0aWMgU3RhY2tGcmFtZUNv
ZGVUeXBlIGdldFN0YWNrRnJhbWVDb2RlVHlwZShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCiAgICAg
c3dpdGNoICh2aXNpdG9yLT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZy
YW1lOjpFdmFsOgogICAgICAgICByZXR1cm4gU3RhY2tGcmFtZUV2YWxDb2RlOworICAgIGNhc2Ug
U3RhY2tWaXNpdG9yOjpGcmFtZTo6TW9kdWxlOgorICAgICAgICByZXR1cm4gU3RhY2tGcmFtZU1v
ZHVsZUNvZGU7CiAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpGdW5jdGlvbjoKICAgICAg
ICAgcmV0dXJuIFN0YWNrRnJhbWVGdW5jdGlvbkNvZGU7CiAgICAgY2FzZSBTdGFja1Zpc2l0b3I6
OkZyYW1lOjpHbG9iYWw6CkBAIC0xMTg4LDYgKzExOTUsNTQgQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpT
VmFsdWUKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCitKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCit7CisgICAg
Vk0mIHZtID0gKnNjb3BlLT52bSgpOworICAgIFNhbXBsaW5nU2NvcGUgc2FtcGxpbmdTY29wZSh0
aGlzKTsKKworICAgIEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52bSgpKTsKKyAg
ICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVz
eSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9j
aygpKTsKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgICAgIHJldHVybiBqc051
bGwoKTsKKworICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2Jq
ZWN0KCkpOworICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNlKCkpCisgICAgICAgIHJldHVybiBj
aGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworCisgICAg
SlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb24o
Y2FsbEZyYW1lLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwpOworICAgIGlmIChVTkxJS0VM
WSghIWNvbXBpbGVFcnJvcikpCisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFt
ZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgIE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9jaygp
OworCisgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJl
KGNhbGxGcmFtZSkpKQorICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKGNhbGxGcmFtZSk7CisKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCisKKyAgICAvLyBUaGUgfHRoaXN8
IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRlZmluZWRgLgorICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1l
bnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1n
ZXR0aGlzYmluZGluZworICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOworICAgIHBy
b3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+
Z2xvYmFsT2JqZWN0KCksIHNjb3BlKSwganNVbmRlZmluZWQoKSwgMSk7CisKKyAgICBpZiAoTGVn
YWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAgICAgIHBy
b2ZpbGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZVVSTCgpLCBl
eGVjdXRhYmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7CisKKyAg
ICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAgIEpTVmFsdWUgcmVzdWx0OworICAgIHsKKyAgICAg
ICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgpKTsK
KyAgICAgICAgcmVzdWx0ID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVjdXRl
KCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9CisKKyAgICBpZiAoTGVnYWN5UHJvZmlsZXIq
IHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAgICAgIHByb2ZpbGVyLT5kaWRF
eGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFibGUtPmZp
cnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKKworICAgIHJldHVybiBjaGVj
a2VkUmV0dXJuKHJlc3VsdCk7Cit9CisKIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpk
ZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQpCiB7CiAg
ICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkt
PmRlYnVnZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCmluZGV4IDEzMmM5NWQxN2Y0ZTEwOWJhMzdiYmNiMDE4NzI3MzJiMmY5NTExNmYu
LjRmZWZhYTZjZjhlMzFhZjJkMzU5ZDE2M2JhYzhhMWE0MDk1YWY0NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC01NCw4ICs1NCwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0Fycm93RnVuY3Rpb247CiAgICAgY2xh
c3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBKU01v
ZHVsZUVudmlyb25tZW50OworICAgIGNsYXNzIEpTTW9kdWxlUmVjb3JkOwogICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKKyAgICBj
bGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBj
bGFzcyBKU1Njb3BlOwogICAgIGNsYXNzIFNhbXBsaW5nVG9vbDsKQEAgLTc2LDYgKzc5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBTdGFja0ZyYW1lQ29kZVR5cGUgewogICAgICAgICBT
dGFja0ZyYW1lR2xvYmFsQ29kZSwKICAgICAgICAgU3RhY2tGcmFtZUV2YWxDb2RlLAorICAgICAg
ICBTdGFja0ZyYW1lTW9kdWxlQ29kZSwKICAgICAgICAgU3RhY2tGcmFtZUZ1bmN0aW9uQ29kZSwK
ICAgICAgICAgU3RhY2tGcmFtZU5hdGl2ZUNvZGUKICAgICB9OwpAQCAtMjEyLDYgKzIxNiw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKENhbGxGcmFtZSos
IEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0
aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNPYmplY3QqIGV4ZWN1dGVDb25z
dHJ1Y3QoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBjb25z
dCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKICAg
ICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNWYWx1
ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsKKyAgICAgICAgSlNWYWx1ZSBleGVjdXRlKE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNNb2R1bGVFbnZpcm9ubWVudCopOwogCiAg
ICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0
cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2Mp
OwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9TdGFja1Zpc2l0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0
YWNrVmlzaXRvci5jcHAKaW5kZXggM2YyYjkxNDA0NTFkNDg4MzRhOWY3MTAzMzQ2NGEyMTQ3ZDFi
ZGI3MC4uNzVmMTc3MjNiMTRhNDc1ODZkOWVjZDY2MzZlZGZhNDY5ODE3YjAzMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKQEAg
LTE4MSw2ICsxODEsOCBAQCBTdGFja1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlwZSBTdGFja1Zpc2l0
b3I6OkZyYW1lOjpjb2RlVHlwZSgpIGNvbnN0CiAgICAgc3dpdGNoIChjb2RlQmxvY2soKS0+Y29k
ZVR5cGUoKSkgewogICAgIGNhc2UgRXZhbENvZGU6CiAgICAgICAgIHJldHVybiBDb2RlVHlwZTo6
RXZhbDsKKyAgICBjYXNlIE1vZHVsZUNvZGU6CisgICAgICAgIHJldHVybiBDb2RlVHlwZTo6TW9k
dWxlOwogICAgIGNhc2UgRnVuY3Rpb25Db2RlOgogICAgICAgICByZXR1cm4gQ29kZVR5cGU6OkZ1
bmN0aW9uOwogICAgIGNhc2UgR2xvYmFsQ29kZToKQEAgLTE5OSw2ICsyMDEsOSBAQCBTdHJpbmcg
U3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVuY3Rpb25OYW1lKCkKICAgICBjYXNlIENvZGVUeXBlOjpF
dmFsOgogICAgICAgICB0cmFjZUxpbmUgPSBBU0NJSUxpdGVyYWwoImV2YWwgY29kZSIpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENvZGVUeXBlOjpNb2R1bGU6CisgICAgICAgIHRyYWNlTGlu
ZSA9IEFTQ0lJTGl0ZXJhbCgibW9kdWxlIGNvZGUiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb2RlVHlwZTo6TmF0aXZlOgogICAgICAgICBpZiAoY2FsbGVlKQogICAgICAgICAgICAgdHJh
Y2VMaW5lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKGNhbGxGcmFtZSgpLCBjYWxsZWUpLmlt
cGwoKTsKQEAgLTIxOSw2ICsyMjQsNyBAQCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6c291
cmNlVVJMKCkKIAogICAgIHN3aXRjaCAoY29kZVR5cGUoKSkgewogICAgIGNhc2UgQ29kZVR5cGU6
OkV2YWw6CisgICAgY2FzZSBDb2RlVHlwZTo6TW9kdWxlOgogICAgIGNhc2UgQ29kZVR5cGU6OkZ1
bmN0aW9uOgogICAgIGNhc2UgQ29kZVR5cGU6Okdsb2JhbDogewogICAgICAgICBTdHJpbmcgc291
cmNlVVJMID0gY29kZUJsb2NrKCktPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
aAppbmRleCAwMDM2YTc4OWM1OGUxOWFlMTNiMGQ0YWJmYjc1NTgzZTliYjQ2NzM0Li40MWJmYzcw
ODgyMGVjY2ZjYWM3MzViMzliNDIyNDcxM2ViZTUyZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCkBAIC01Miw2ICs1Miw3IEBAIGNs
YXNzIFN0YWNrVmlzaXRvciB7CiAgICAgICAgICAgICBHbG9iYWwsCiAgICAgICAgICAgICBFdmFs
LAogICAgICAgICAgICAgRnVuY3Rpb24sCisgICAgICAgICAgICBNb2R1bGUsCiAgICAgICAgICAg
ICBOYXRpdmUKICAgICAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGJi
Yzg1MjNmNWJiMjNhMzkzMGMwOTRlZDQ4NjIxNzQ2NGQ4NmM1NTEuLjg0ZjM2ZDU0MGYzY2JhYTFh
ZWNjNTUzYWRmOGM0NjE0YjdiZGU4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAg
LTQ4Niw2ICs0ODYsNyBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJ
VENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAKICAgICBzd2l0Y2ggKG1fY29kZUJsb2Nr
LT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBHbG9iYWxDb2RlOgorICAgIGNhc2UgTW9kdWxlQ29k
ZToKICAgICBjYXNlIEV2YWxDb2RlOgogICAgICAgICBtX2NvZGVCbG9jay0+bV9zaG91bGRBbHdh
eXNCZUlubGluZWQgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDQ4Y2RmMTFmZDM2ZmFmZDk2
YmYyYmI2NzFmNTVjMzFkNDU3ZTY0NDkuLjlhNGFlNDU1MjlkZWZlNDc1ZDY3N2JmNzA0YjVjNjA3
NmUzZWQzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAj
aW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFi
bGUuaCIKKyNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KIAogCkBAIC03MDMsNiArNzA0LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3Jl
c29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYXNlIENs
b3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgICAgICBlbWl0UmVzb2x2ZUNsb3N1
cmUoZHN0LCBzY29wZSwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpLCBkZXB0
aCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFyOgorICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoY3VycmVudEluc3RydWN0aW9uWzZdLnUuanNDZWxsLmdldCgpKSwgcmVnVDAp
OworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAg
YnJlYWs7CkBAIC03MTYsNyArNzIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVf
c2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3cKICAgICBp
bnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBSZXNvbHZlVHlw
ZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kKTsKIAotICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0
eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZh
cikKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUg
PT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVWYXIgfHwgcmVzb2x2ZVR5cGUg
PT0gTW9kdWxlVmFyKQogICAgICAgICByZXR1cm47CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
CkBAIC03NzgsNiArNzgzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAg
IGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFy
OgogICAgIGNhc2UgTG9jYWxDbG9zdXJlVmFyOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KQEAgLTg1Miw2ICs4NTgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgZW1p
dFZhckluamVjdGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7
CiAgICAgICAgIGVtaXRQdXRDbG9zdXJlVmFyKHNjb3BlLCAqb3BlcmFuZFNsb3QsIHZhbHVlLCBj
dXJyZW50SW5zdHJ1Y3Rpb25bNV0udS53YXRjaHBvaW50U2V0KTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2Fz
ZShqdW1wKCkpOwogICAgICAgICBicmVhazsKQEAgLTg3Myw3ICs4ODAsMTIgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0MKICAgICAgICAgcmV0dXJuOwogICAgIHdoaWxlIChsaW5rQ291bnQtLSkK
ICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
UHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9uKTsKKworICAgIGlmIChyZXNvbHZlVHlwZSA9
PSBNb2R1bGVWYXIpIHsKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25s
eV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7CisgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3Vy
cmVudEluc3RydWN0aW9uKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1l
bnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IDczMTNmY2UyNDIwMGNjOTE2MTY5ZTgxNGEwYTA1
OTMwYWFiYWE1M2QuLjE1NjkyMWUzYWNlYmJlZmExMzY4MmM2OGMxOWQ0NTYxNWZkMWZlY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xMzIsOCArMTMy
LDggQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKG1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsID09IDY0KTsKICNlbmRpZgogICAgIEFTU0VSVChT
dHJpbmdUeXBlID09IDYpOwotICAgIEFTU0VSVChPYmplY3RUeXBlID09IDE5KTsKLSAgICBBU1NF
UlQoRmluYWxPYmplY3RUeXBlID09IDIwKTsKKyAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAyMSk7
CisgICAgQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAyMik7CiAgICAgQVNTRVJUKE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPT0gMSk7CiAgICAgQVNTRVJUKEltcGxlbWVudHNIYXNJbnN0YW5jZSA9
PSAyKTsKICAgICBBU1NFUlQoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9PSA4KTsKQEAg
LTE0MSwxNSArMTQxLDE3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQog
ICAgIEFTU0VSVChHbG9iYWxDb2RlID09IDApOwogICAgIEFTU0VSVChFdmFsQ29kZSA9PSAxKTsK
ICAgICBBU1NFUlQoRnVuY3Rpb25Db2RlID09IDIpOworICAgIEFTU0VSVChNb2R1bGVDb2RlID09
IDMpOwogCiAgICAgc3RhdGljX2Fzc2VydChHbG9iYWxQcm9wZXJ0eSA9PSAwLCAiTExJbnQgYXNz
dW1lcyBHbG9iYWxQcm9wZXJ0eSBSZXN1bHRUeXBlIGlzID09IDAiKTsKICAgICBzdGF0aWNfYXNz
ZXJ0KEdsb2JhbFZhciA9PSAxLCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXIgUmVzdWx0VHlwZSBp
cyA9PSAxIik7CiAgICAgc3RhdGljX2Fzc2VydChDbG9zdXJlVmFyID09IDIsICJMTEludCBhc3N1
bWVzIENsb3N1cmVWYXIgUmVzdWx0VHlwZSBpcyA9PSAyIik7CiAgICAgc3RhdGljX2Fzc2VydChM
b2NhbENsb3N1cmVWYXIgPT0gMywgIkxMSW50IGFzc3VtZXMgTG9jYWxDbG9zdXJlVmFyIFJlc3Vs
dFR5cGUgaXMgPT0gMyIpOwotICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHlXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzID09IDQsICJMTEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5V2l0aFZh
ckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNSwgIkxMSW50IGFzc3VtZXMgR2xv
YmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDUiKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDYsICJMTElu
dCBhc3N1bWVzIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMg
PT0gNiIpOwotICAgIHN0YXRpY19hc3NlcnQoRHluYW1pYyA9PSA3LCAiTExJbnQgYXNzdW1lcyBE
eW5hbWljIFJlc3VsdFR5cGUgaXMgPT0gNyIpOworICAgIHN0YXRpY19hc3NlcnQoTW9kdWxlVmFy
ID09IDQsICJMTEludCBhc3N1bWVzIE1vZHVsZVZhciBSZXN1bHRUeXBlIGlzID09IDQiKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA1
LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVz
dWx0VHlwZSBpcyA9PSA1Iik7CisgICAgc3RhdGljX2Fzc2VydChHbG9iYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzID09IDYsICJMTEludCBhc3N1bWVzIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA2Iik7CisgICAgc3RhdGljX2Fzc2VydChDbG9zdXJl
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA3LCAiTExJbnQgYXNzdW1lcyBDbG9zdXJlVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDciKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KER5bmFtaWMgPT0gOCwgIkxMSW50IGFzc3VtZXMgRHluYW1pYyBSZXN1bHRUeXBlIGlz
ID09IDgiKTsKICAgICAKICAgICBBU1NFUlQoUmVzb2x2ZU1vZGVBbmRUeXBlOjptYXNrID09IDB4
ZmZmZik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVu
dHJ5cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dC5jcHAKaW5kZXggOWQwMDEwNmI5YTgyNzZmNDg0MjBmNmI1NDZjMzJkNTkzMGEzNmI2OC4uYTZj
M2QyN2UyODBhMDQ0NzkyMjg2OWQ3ODJjZmUyYTU1YWI3ODBjMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTk3LDEyICs5NywzMCBA
QCBzdGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0sIENvZGVCbG9jayogY29k
ZUJsb2NrKQogICAgICAgICBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29kZShNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6OmNyZWF0ZUxMSW50Q29kZVJlZihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspKSk7CiB9CiAK
K3N0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAodm0uY2FuVXNlSklUKCkp
IHsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAorICAgICAgICAgICAgYWRvcHRSZWYo
bmV3IERpcmVjdEpJVENvZGUodm0uZ2V0Q1RJU3R1Yihtb2R1bGVQcm9ncmFtRW50cnlUaHVua0dl
bmVyYXRvciksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCisK
KyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKKyAgICAg
ICAgYWRvcHRSZWYobmV3IERpcmVjdEpJVENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVMTEludENvZGVSZWYobGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykpKTsKK30KKwogdm9pZCBz
ZXRFbnRyeXBvaW50KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgc3dpdGNo
IChjb2RlQmxvY2stPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIEdsb2JhbENvZGU6CiAgICAgICAg
IHNldFByb2dyYW1FbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwogICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBNb2R1bGVDb2RlOgorICAgICAgICBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCh2
bSwgY29kZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRXZhbENvZGU6CiAgICAg
ICAgIHNldEV2YWxFbnRyeXBvaW50KHZtLCBjb2RlQmxvY2spOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwCmluZGV4IGEyYTZiMmIxMWM1NjgxZTBiNmU5NzBjNGZkMTFjOTZlMTlkYjkzZGEuLjll
M2Y0NDg3YjA4NTIwMTM3MmIyZDdiMjdiNzhjZTU5MWFiZDk3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVj
b3JkLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdGFjay5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmNwcAppbmRleCA4YWI5NmIzMDQ3NWZkNTU0ZGVmOGIzMjY2MjQ5NjYzMmVhZjk2ZDlhLi5h
ZjY4ODRlNWVkZTdiZWJlMDRmMzdiM2YwMDA5MWVlMTZmOTUxMTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKQEAgLTg4LDYgKzg4LDExIEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAg
cmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKHZtLCBMTEludDo6Z2V0Q29kZUZ1bmN0aW9u
UHRyKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCAicHJvZ3JhbSIpOwogfQogCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorewor
ICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyh2bSwgTExJbnQ6OmdldENvZGVGdW5j
dGlvblB0cihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksICJtb2R1bGVfcHJvZ3JhbSIp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBMTEludAogCiAjZWxzZSAvLyBFTkFCTEUoSklUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAppbmRleCAwZDFiZTZiZGFlYWRm
Nzk0ODdjZTkwNjY4MjY0Njg1MTg4YThiZDEyLi45NWIwZjQ0ODQ4YmNjNTI5ZDE1MDNlMjg5Yjkz
ZWZlMzcwNWM4MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
aApAQCAtNDYsNiArNDYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxs
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkxMSW50CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAxMzZjOTE2NjFmMjJkMmQ4MDkzYzE5
OGM5YzViZDY2NDQzOGY1NDk2Li5hNzMxOGYzM2FhYTNhMTliODFiNjhjZDE3NWRlZDFhOWI1MmNk
NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCkBAIC0xNjEsOCArMTYxLDggQEAgY29uc3QgU2xvd1B1dEFycmF5U3RvcmFn
ZVNoYXBlID0gMzAKIAogIyBUeXBlIGNvbnN0YW50cy4KIGNvbnN0IFN0cmluZ1R5cGUgPSA2Ci1j
b25zdCBPYmplY3RUeXBlID0gMTkKLWNvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDIwCitjb25zdCBP
YmplY3RUeXBlID0gMjEKK2NvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDIyCiAKICMgVHlwZSBmbGFn
cyBjb25zdGFudHMuCiBjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQpAQCAtMTc2LDYg
KzE3Niw3IEBAIGNvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAog
Y29uc3QgR2xvYmFsQ29kZSA9IDAKIGNvbnN0IEV2YWxDb2RlID0gMQogY29uc3QgRnVuY3Rpb25D
b2RlID0gMgorY29uc3QgTW9kdWxlQ29kZSA9IDMKIAogIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxz
IHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCiBjb25zdCBMTEludFJldHVyblBD
ID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldApAQCAtMTkxLDEwICsxOTIsMTEgQEAgY29uc3Qg
R2xvYmFsUHJvcGVydHkgPSAwCiBjb25zdCBHbG9iYWxWYXIgPSAxCiBjb25zdCBDbG9zdXJlVmFy
ID0gMgogY29uc3QgTG9jYWxDbG9zdXJlVmFyID0gMwotY29uc3QgR2xvYmFsUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzID0gNAotY29uc3QgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcyA9IDUKLWNvbnN0IENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNgotY29u
c3QgRHluYW1pYyA9IDcKK2NvbnN0IE1vZHVsZVZhciA9IDQKK2NvbnN0IEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDUKK2NvbnN0IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgPSA2Citjb25zdCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDcK
K2NvbnN0IER5bmFtaWMgPSA4CiAKIGNvbnN0IFJlc29sdmVNb2RlTWFzayA9IDB4ZmZmZgogCkBA
IC04ODQsNiArODg2LDExIEBAIF9sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgogICAgIGRpc3BhdGNo
KDApCiAKIAorX2xsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5v
dEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xs
aW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisK
KwogX2xsaW50X2V2YWxfcHJvbG9ndWU6CiAgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxv
Y2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBf
bGxpbnRfdHJhY2VfcHJvbG9ndWUpCiAgICAgZGlzcGF0Y2goMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDIx
NTJhMmYyNzdhZGU1ODc5NzZhMWMzZjEyMDIzNzI5YjM4YTU5YS4uNWMwMGU2NDZmNjAxMGU2YmE2
ODYxZTM0Y2U5Y2Y3NzRhNWE4YzQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE5MTgsNiArMTkxOCwxMiBA
QCBtYWNybyBnZXRHbG9iYWxPYmplY3QoZHN0KQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhd
CiBlbmQKIAorbWFjcm8gZ2V0SW1wb3J0ZWRNb2R1bGVTY29wZShkc3QpCisgICAgbG9hZHBGcm9t
SW5zdHJ1Y3Rpb24oNiwgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKGRzdCwgdDEpCisg
ICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KK2VuZAorCiBtYWNybyB2YXJJbmplY3Rpb25DaGVj
ayhzbG93UGF0aCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKQEAgLTE5NTcsMTAgKzE5NjMsMTUgQEAgX2xs
aW50X29wX3Jlc29sdmVfc2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAogLnJDbG9zdXJlVmFyOgot
ICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrcworICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuck1vZHVsZVZhcgogICAgIHJlc29s
dmVTY29wZSgpCiAgICAgZGlzcGF0Y2goNykKIAorLnJNb2R1bGVWYXI6CisgICAgYmluZXEgdDAs
IE1vZHVsZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKKyAgICBn
ZXRJbXBvcnRlZE1vZHVsZVNjb3BlKDEpCisgICAgZGlzcGF0Y2goNykKKwogLnJHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
CiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQpAQCAtMjE0NCwxMyArMjE1NSwxOCBA
QCBfbGxpbnRfb3BfcHV0X3RvX3Njb3BlOgogICAgIGRpc3BhdGNoKDcpCiAKIC5wQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3M6Ci0gICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzLCAucER5bmFtaWMKKyAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3MsIC5wTW9kdWxlVmFyCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5k
cygxLCAzKQogICAgIHZhckluamVjdGlvbkNoZWNrKC5wRHluYW1pYykKICAgICBsb2FkVmFyaWFi
bGUoMSwgdDApCiAgICAgcHV0Q2xvc3VyZVZhcigpCiAgICAgZGlzcGF0Y2goNykKIAorLnBNb2R1
bGVWYXI6CisgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnBEeW5hbWljCisgICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVf
ZXJyb3IpCisgICAgZGlzcGF0Y2goNykKKwogLnBEeW5hbWljOgogICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX3B1dF90b19zY29wZSkKICAgICBkaXNwYXRjaCg3KQpAQCAtMjIzMyw0
ICsyMjQ5LDQgQEAgX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgogICAgIGxvYWRw
IEpTQXJyb3dGdW5jdGlvbjo6bV9ib3VuZFRoaXNbdDBdLCB0MAogICAgIGxvYWRpc0Zyb21JbnN0
cnVjdGlvbigxLCB0MSkKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNo
KDIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgIGRpc3BhdGNoKDIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCmluZGV4IDJmYTgx
YWFjZmMxZjhmMmJkNzY0MmYzODM5YjNiMTI2MDU4N2YyZjIuLmY2MjM4ZmI5NjgwMmJlNTM3ZTkx
YWRjMjZiODJkODkwYjk1NDAzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgTW9kdWxlQW5hbHl6
ZXI6OmV4cG9ydFZhcmlhYmxlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2Fs
TmFtZSwKICAgICB9CiAKICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29y
ZCgpLT5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOwotICAgIGlmIChpbXBvcnRFbnRyeS5p
c05hbWVzcGFjZSh2bSgpKSkgeworICAgIGlmICh2YXJpYWJsZS5pc0ltcG9ydGVkTmFtZXNwYWNl
KCkpIHsKICAgICAgICAgLy8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJpbmRpbmcuCiAgICAgICAgIC8v
IGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9tICJtb2QiCiAgICAgICAgIC8vIGV4cG9ydCB7IG5h
bWVzcGFjZSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggOGE5
MzYxNTdiM2Y2OTYwYjYzYmE4MWViNDc3Njg4NmZhMDM0NTk4YS4uN2YwNTAxYzY1MzEyZGI0ZDRm
Zjg1ZGM0ZGIxM2FmMjYzMWRkZWM2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcApAQCAtMjMxOSw3ICsyMzE5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6SW1wb3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhlclQKICAg
ICB9CiAKICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobG9jYWxOYW1lVG9rZW4ubV90eXBlICYgS2V5
d29yZFRva2VuRmxhZywgIkNhbm5vdCB1c2Uga2V5d29yZCBhcyBpbXBvcnRlZCBiaW5kaW5nIG5h
bWUiKTsKLSAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBkZWNs
YXJlVmFyaWFibGUobG9jYWxOYW1lLCBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24s
IERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1wb3J0ZWQpOworICAgIERlY2xhcmF0aW9uUmVzdWx0
TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xhcmVWYXJpYWJsZShsb2NhbE5hbWUsIERlY2xh
cmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiwgKHNwZWNpZmllclR5cGUgPT0gSW1wb3J0U3Bl
Y2lmaWVyVHlwZTo6TmFtZXNwYWNlSW1wb3J0KSA/IERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1w
b3J0ZWROYW1lc3BhY2UgOiBEZWNsYXJhdGlvbkltcG9ydFR5cGU6OkltcG9ydGVkKTsKICAgICBp
ZiAoZGVjbGFyYXRpb25SZXN1bHQgIT0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkKSB7CiAgICAg
ICAgIGZhaWxJZlRydWVJZlN0cmljdChkZWNsYXJhdGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVz
dWx0OjpJbnZhbGlkU3RyaWN0TW9kZSwgIkNhbm5vdCBkZWNsYXJlIGFuIGltcG9ydGVkIGJpbmRp
bmcgbmFtZWQgIiwgbG9jYWxOYW1lLT5pbXBsKCksICIgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAg
ICAgaWYgKGRlY2xhcmF0aW9uUmVzdWx0ICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBs
aWNhdGVEZWNsYXJhdGlvbikKQEAgLTI1NjAsMTAgKzI1NjAsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0
RGVjbGFyYQogICAgICAgICAgICAgLy8gZG9lcyBub3QgaGF2ZSBlZmZlY3Qgb24gdGhlIGN1cnJl
bnQgbW9kdWxlJ3Mgc2NvcGUuIEJ1dCwKICAgICAgICAgICAgIC8vICAgZXhwb3J0IHsgQSwgQiwg
QyBhcyBEIH0KICAgICAgICAgICAgIC8vIHdpbGwgcmVmZXJlbmNlIHRoZSBjdXJyZW50IG1vZHVs
ZSdzIGJpbmRpbmdzLgotICAgICAgICAgICAgZm9yIChjb25zdCBJZGVudGlmaWVyKiBsb2NhbE5h
bWUgOiBtYXliZUxvY2FsTmFtZXMpIHsKLSAgICAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+
dXNlVmFyaWFibGUobG9jYWxOYW1lLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpsb2Nh
bE5hbWUpOworICAgICAgICAgICAgZm9yIChjb25zdCBJZGVudGlmaWVyKiBsb2NhbE5hbWUgOiBt
YXliZUxvY2FsTmFtZXMpCiAgICAgICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPm1vZHVsZVNj
b3BlRGF0YSgpLmV4cG9ydEJpbmRpbmcoKmxvY2FsTmFtZSk7Ci0gICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHBvcnROYW1lZERlY2xhcmF0
aW9uKGV4cG9ydExvY2F0aW9uLCBzcGVjaWZpZXJMaXN0LCBtb2R1bGVOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGMyZTZhNjUwNDA4OTkxNWRjMjgwNTdmZmUw
MWYwNGVlYWRlMDFmMTQuLmY2OTdiZTMzNmJiODBjNTI1MDQyODU2YjhjMDg3NTUzNzMzYTEyMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTAwLDYgKzEwMCw3IEBA
IGVudW0gY2xhc3MgRGVjbGFyYXRpb25UeXBlIHsKIAogZW51bSBjbGFzcyBEZWNsYXJhdGlvbklt
cG9ydFR5cGUgewogICAgIEltcG9ydGVkLAorICAgIEltcG9ydGVkTmFtZXNwYWNlLAogICAgIE5v
dEltcG9ydGVkCiB9OwogCkBAIC0zMzUsNiArMzM2LDEwIEBAIHN0cnVjdCBTY29wZSB7CiAKICAg
ICAgICAgaWYgKGltcG9ydFR5cGUgPT0gRGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBvcnRlZCkK
ICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2V0SXNJbXBvcnRlZCgpOwor
ICAgICAgICBlbHNlIGlmIChpbXBvcnRUeXBlID09IERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1w
b3J0ZWROYW1lc3BhY2UpIHsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
c2V0SXNJbXBvcnRlZCgpOworICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5z
ZXRJc0ltcG9ydGVkTmFtZXNwYWNlKCk7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIWFkZFJl
c3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0
OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCmluZGV4IDVlZDJhNmJkYTkyODM4ZTI5
NjQ4MmY2NmMwNzg1YTM2MTFhZTYxNWMuLjc2YzcwOTZlOWU2NDQ3ZWJiYmRiMGQ5NjVhM2VhNGEy
NGE1MTczZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oCkBAIC00MCw2ICs0MCw3IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0xldCgpIGNvbnN0IHsgcmV0dXJu
IG1fYml0cyAmIElzTGV0OyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRXhwb3J0ZWQoKSBj
b25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0V4cG9ydGVkOyB9CiAgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzSW1wb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0ltcG9ydGVkOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzSW1wb3J0ZWROYW1lc3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX2JpdHMgJiBJc0ltcG9ydGVkTmFtZXNwYWNlOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTQ3LDYg
KzQ4LDcgQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSB7CiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldElzTGV0KCkgeyBtX2JpdHMgfD0gSXNMZXQ7IH0KICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNFeHBvcnRlZCgpIHsgbV9iaXRzIHw9IElzRXhwb3J0ZWQ7IH0KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNJbXBvcnRlZCgpIHsgbV9iaXRzIHw9IElzSW1wb3J0ZWQ7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNJbXBvcnRlZE5hbWVzcGFjZSgpIHsgbV9i
aXRzIHw9IElzSW1wb3J0ZWROYW1lc3BhY2U7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBj
bGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTU3LDcgKzU5LDggQEAgc3Ry
dWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSB7CiAgICAgICAgIElzVmFyID0gMSA8PCAyLAog
ICAgICAgICBJc0xldCA9IDEgPDwgMywKICAgICAgICAgSXNFeHBvcnRlZCA9IDEgPDwgNCwKLSAg
ICAgICAgSXNJbXBvcnRlZCA9IDEgPDwgNQorICAgICAgICBJc0ltcG9ydGVkID0gMSA8PCA1LAor
ICAgICAgICBJc0ltcG9ydGVkTmFtZXNwYWNlID0gMSA8PCA2CiAgICAgfTsKICAgICB1aW50OF90
IG1fYml0cyB7IDAgfTsKIH07CkBAIC03OSw2ICs4Miw4IEBAIGNsYXNzIFZhcmlhYmxlRW52aXJv
bm1lbnQgewogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwLnNpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjb250YWlucyhjb25zdCBS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX21h
cC5jb250YWlucyhpZGVudGlmaWVyKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCByZW1vdmUo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1cm4gbV9t
YXAucmVtb3ZlKGlkZW50aWZpZXIpOyB9CisgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0ZXJhdG9y
IGZpbmQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1
cm4gbV9tYXAuZmluZChpZGVudGlmaWVyKTsgfQorICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25z
dF9pdGVyYXRvciBmaW5kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZp
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmZpbmQoaWRlbnRpZmllcik7IH0KICAgICB2b2lkIHN3
YXAoVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpOwogICAgIHZvaWQgbWFya1ZhcmlhYmxlQXND
YXB0dXJlZElmRGVmaW5lZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlm
aWVyKTsKICAgICB2b2lkIG1hcmtWYXJpYWJsZUFzQ2FwdHVyZWQoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmNwcAppbmRleCBhYjcwZWFiYjllM2EyYTA0NTBjNjI5ZTcwNTY2NmY0ZGNj
YTAxZTI4Li5mMTNiMjVlNGM5YjI2MmM1MjVlMGY1NmVjMGY2OWNkYzdjYmVkZjBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTY3LDExICs2Nywx
OSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IENhY2hlVHlwZXMgeyB9OwogdGVtcGxh
dGUgPD4gc3RydWN0IENhY2hlVHlwZXM8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrPiB7CiAgICAg
dHlwZWRlZiBKU0M6OlByb2dyYW1Ob2RlIFJvb3ROb2RlOwogICAgIHN0YXRpYyBjb25zdCBTb3Vy
Y2VDb2RlS2V5OjpDb2RlVHlwZSBjb2RlVHlwZSA9IFNvdXJjZUNvZGVLZXk6OlByb2dyYW1UeXBl
OworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZTsKIH07CiAKIHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVz
PFVubGlua2VkRXZhbENvZGVCbG9jaz4gewogICAgIHR5cGVkZWYgSlNDOjpFdmFsTm9kZSBSb290
Tm9kZTsKICAgICBzdGF0aWMgY29uc3QgU291cmNlQ29kZUtleTo6Q29kZVR5cGUgY29kZVR5cGUg
PSBTb3VyY2VDb2RlS2V5OjpFdmFsVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgU291cmNlUGFyc2VN
b2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU7Cit9OworCit0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgQ2FjaGVUeXBlczxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+
IHsKKyAgICB0eXBlZGVmIEpTQzo6TW9kdWxlUHJvZ3JhbU5vZGUgUm9vdE5vZGU7CisgICAgc3Rh
dGljIGNvbnN0IFNvdXJjZUNvZGVLZXk6OkNvZGVUeXBlIGNvZGVUeXBlID0gU291cmNlQ29kZUtl
eTo6TW9kdWxlVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlOwogfTsKIAogdGVtcGxhdGUg
PGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3MgRXhlY3V0YWJsZVR5cGU+CkBAIC05
NSw3ICsxMDMsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFs
Q29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQogICAgIHR5cGVkZWYgdHlwZW5h
bWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+
KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0
TW9kZSwKLSAgICAgICAgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZXJyb3IsIG51bGxw
dHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOworICAgICAgICBDYWNoZVR5
cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgZXJyb3IsIG51bGxwdHIsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOwogICAgIGlmICghcm9vdE5vZGUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMzIsNiArMTQwLDEyIEBAIFVubGlua2VkRXZh
bENvZGVCbG9jayogQ29kZUNhY2hlOjpnZXRFdmFsQ29kZUJsb2NrKFZNJiB2bSwgRXZhbEV4ZWN1
dGFibGUqIGV4ZWN1CiAgICAgcmV0dXJuIGdldEdsb2JhbENvZGVCbG9jazxVbmxpbmtlZEV2YWxD
b2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2Rl
LCB0aGlzVERaTW9kZSwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yLCB2YXJpYWJs
ZXNVbmRlclREWik7CiB9CiAKK1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogQ29kZUNh
Y2hlOjpnZXRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWls
dGluTW9kZSBidWlsdGluTW9kZSwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJN
b2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQoreworICAgIFZhcmlhYmxlRW52
aXJvbm1lbnQgZW1wdHlQYXJlbnRURFpWYXJpYWJsZXM7CisgICAgcmV0dXJuIGdldEdsb2JhbENv
ZGVCbG9jazxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtLCBleGVjdXRhYmxlLCBz
b3VyY2UsIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgVGhpc1REWk1v
ZGU6OkNoZWNrSWZOZWVkZWQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvciwgJmVt
cHR5UGFyZW50VERaVmFyaWFibGVzKTsKK30KKwogLy8gRklYTUU6IFRoZXJlJ3Mgbm8gbmVlZCB0
byBhZGQgdGhlIGZ1bmN0aW9uJ3MgbmFtZSB0byB0aGUga2V5IGhlcmUuIEl0J3MgYWxyZWFkeSBp
biB0aGUgc291cmNlIGNvZGUuCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hl
OjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdm0sIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9y
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCBhZjdk
YWM3ZTQ4NzA0MTMxOWM2M2ZlYzk3NTVlMjM5MzE4ODM0Y2I2Li43MTc1ZmUzOTUxMmM5MzY2ZTYx
NjM5ODEzY2I2YzRmODIyNTk4ZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuaApAQCAtNDUsOCArNDUsMTAgQEAgY2xhc3MgSWRlbnRpZmllcjsKIGNsYXNzIEpT
U2NvcGU7CiBjbGFzcyBQYXJzZXJFcnJvcjsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOworY2xh
c3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKIGNs
YXNzIFVubGlua2VkRXZhbENvZGVCbG9jazsKK2NsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsKQEAg
LTU2LDcgKzU4LDcgQEAgY2xhc3MgU291cmNlUHJvdmlkZXI7CiAKIGNsYXNzIFNvdXJjZUNvZGVL
ZXkgewogcHVibGljOgotICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5cGUs
IEZ1bmN0aW9uVHlwZSB9OworICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5
cGUsIEZ1bmN0aW9uVHlwZSwgTW9kdWxlVHlwZSB9OwogCiAgICAgU291cmNlQ29kZUtleSgpCiAg
ICAgewpAQCAtMjU3LDYgKzI1OSw3IEBAIGNsYXNzIENvZGVDYWNoZSB7CiAKICAgICBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2sqIGdldFByb2dyYW1Db2RlQmxvY2soVk0mLCBQcm9ncmFtRXhlY3V0
YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0
cmljdE1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYpOwogICAg
IFVubGlua2VkRXZhbENvZGVCbG9jayogZ2V0RXZhbENvZGVCbG9jayhWTSYsIEV2YWxFeGVjdXRh
YmxlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3Ry
aWN0TW9kZSwgVGhpc1REWk1vZGUsIERlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlLCBQYXJzZXJF
cnJvciYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIGdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0mLCBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBE
ZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImKTsKICAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZ2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0m
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiAK
ICAgICB2b2lkIGNsZWFyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IDc1ODA4MzMyZTRkZDQwODQ0MmEwMzQzN2Q1NWMxMDVh
Y2MyOTVhYjEuLjM1YjYyOTc5MjA3ZWZhYzg3NDU2ZDc3MjY0YjRiMGZhZmZlODYyZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApA
QCAtMjcwLDYgKzI3MCwxMiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3dfdGR6X2Vy
cm9yKQogICAgIFRIUk9XKGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKIH0KIAorU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vy
cm9yKQoreworICAgIEJFR0lOKCk7CisgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSk7Cit9CisK
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9ub3QpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggMDY3ZGYw
YzM4ZTkxMjBiZjcwN2NmZGU0MWMzZWZiZjJhNjg3MmVlMy4uMzAwOTg1NWZmNmJhMmQxNTI4M2Ri
OGY4NWYzY2U0NTdkZGIyODY2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTE4OSw2ICsxODksNyBAQCBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2VudGVyKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Z2V0X2NhbGxlZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90aHJvd190ZHpfZXJyb3IpOworU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9w
ZXJ0eV93cml0ZV9lcnJvcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25vdCk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2VxKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfbmVxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAKaW5kZXggZTQ4NTQ3OTc1NjdkZThjZGJlOTY2MTU3MDJmYjZlNzUxYjYzYzVm
ZC4uYjFkMDA1NWVjZjAyNDM0MjlmYWYxOWVkYWZmOGZlMDY1MzliNmQ3NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTE2MSw3ICsxNjEsMTgg
QEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShDb2RlQmxvY2sqIGdlbmVyaWND
b2RlQmxvY2spCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNvZGVCbG9jayA9IGNvZGVC
bG9jazsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKworICAgIGNhc2UgTW9kdWxl
Q29kZTogeworICAgICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpz
Q2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOworICAgICAgICBNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKj4oZ2VuZXJpY0NvZGVCbG9jayk7CisKKyAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZv
ckNhbGwpOworCisgICAgICAgIG9sZENvZGVCbG9jayA9IGV4ZWN1dGFibGUtPm1fbW9kdWxlUHJv
Z3JhbUNvZGVCbG9jazsKKyAgICAgICAgZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJs
b2NrID0gY29kZUJsb2NrOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEV2YWxD
b2RlOiB7CiAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEV2YWxF
eGVjdXRhYmxlKj4odGhpcyk7CiAgICAgICAgIEV2YWxDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0
YXRpY19jYXN0PEV2YWxDb2RlQmxvY2sqPihnZW5lcmljQ29kZUJsb2NrKTsKQEAgLTIyOCw3ICsy
MzksMTcgQEAgUmVmUHRyPENvZGVCbG9jaz4gU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2Nr
Rm9yKAogICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZFByb2dy
YW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlLAogICAgICAgICAgICAgZXhlY3V0YWJsZS0+c291cmNl
KCkucHJvdmlkZXIoKSwgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRDb2x1bW4oKSkpOwogICAg
IH0KLSAgICAKKworICAgIGlmIChjbGFzc0luZm8oKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZTo6aW5mbygpKSB7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNhbGwpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
ZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIWZ1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKAorICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+bV91bmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlLAorICAgICAgICAgICAgZXhl
Y3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRD
b2x1bW4oKSkpOworICAgIH0KKwogICAgIFJFTEVBU0VfQVNTRVJUKGNsYXNzSW5mbygpID09IEZ1
bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygpKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlvbik7
CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KHRoaXMpOwpAQCAtMjg1LDYgKzMwNiwxNyBAQCBQYXNzUmVmUHRyPENvZGVCbG9j
az4gU2NyaXB0RXhlY3V0YWJsZTo6bmV3UmVwbGFjZW1lbnRDb2RlQmxvY2tGb3IoCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgaWYgKGNsYXNzSW5mbygpID09IE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlOjppbmZvKCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9
PSBDb2RlRm9yQ2FsbCk7CisgICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7CisgICAgICAgIE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIGJhc2VsaW5lID0gc3RhdGljX2Nhc3Q8TW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayo+KAorICAgICAgICAgICAgZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CisgICAgICAgIFJlZlB0cjxNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrPiByZXN1bHQgPSBhZG9wdFJlZihuZXcgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygK
KyAgICAgICAgICAgIENvZGVCbG9jazo6Q29weVBhcnNlZEJsb2NrLCAqYmFzZWxpbmUpKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRBbHRlcm5hdGl2ZShiYXNlbGluZSk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCiAgICAgUkVMRUFTRV9BU1NFUlQoY2xhc3NJbmZvKCkgPT0gRnVuY3Rp
b25FeGVjdXRhYmxlOjppbmZvKCkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzKTsKICAgICBGdW5jdGlvbkNvZGVC
bG9jayogYmFzZWxpbmUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KApAQCAtMzg1
LDYgKzQxNywzNiBAQCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2Vs
bCkKICAgICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpLT5Qcm9ncmFtRXhl
Y3V0YWJsZTo6flByb2dyYW1FeGVjdXRhYmxlKCk7CiB9CiAKK2NvbnN0IENsYXNzSW5mbyBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTo6c19pbmZvID0geyAiTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUi
LCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKSB9OworCitNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkubW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgZmFsc2UpCit7CisgICAg
bV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAwOworICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9m
ZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7CisgICAgaWYgKGV4ZWMtPnZtKCkudHlwZVByb2Zp
bGVyKCkgfHwgZXhlYy0+dm0oKS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpCisgICAgICAgIGV4ZWMt
PnZtKCkuZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShz
b3VyY2VJRCgpLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCwgbV90eXBlUHJvZmlsaW5nRW5k
T2Zmc2V0KTsKK30KKworTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Up
Cit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPigqZXhlYy0+
aGVhcCgpKSkgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoZXhlYywgc291cmNlKTsKKyAgICBleGVj
dXRhYmxlLT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKworICAgIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZSA9IGdsb2JhbE9iamVj
dC0+Y3JlYXRlTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhleGVjLCBleGVjdXRhYmxlKTsKKyAgICBp
ZiAoIXVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGUpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLnNldChleGVj
LT52bSgpLCBleGVjdXRhYmxlLCB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlKTsKKworICAgIHJl
dHVybiBleGVjdXRhYmxlOworfQorCit2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSo+KGNlbGwpLT5Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6fk1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKCk7Cit9CisKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvbkV4ZWN1dGFibGU6OnNfaW5m
byA9IHsgIkZ1bmN0aW9uRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25FeGVjdXRhYmxlKSB9OwogCiBGdW5jdGlvbkV4
ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgCkBAIC01MTcsNiArNTc5LDIzIEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmNsZWFy
Q29kZSgpCiAgICAgQmFzZTo6Y2xlYXJDb2RlKCk7CiB9CiAKK3ZvaWQgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7CisgICAgaWYgKHRoaXNPYmpl
Y3QtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKKyAgICAgICAgdGhpc09iamVjdC0+bV9tb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKK30KKwordm9pZCBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2xlYXJDb2RlKCkKK3sKKyAgICBtX21vZHVsZVByb2dy
YW1Db2RlQmxvY2sgPSBudWxscHRyOworICAgIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmNsZWFyKCk7CisgICAgQmFzZTo6Y2xlYXJDb2RlKCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJs
b2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKIHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0OwpAQCAt
NjQ3LDYgKzcyNiwxNSBAQCB2b2lkIEV4ZWN1dGFibGVCYXNlOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiAgICAgICAgICAgICBvdXQucHJpbnQoIlByb2dyYW1FeGVjdXRhYmxlIHcvbyBD
b2RlQmxvY2siKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmIChjbGFzc0luZm8o
KSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7CisgICAgICAgIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKj4ocmVhbFRoaXMpOworICAgICAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
dXRhYmxlLT5jb2RlQmxvY2soKSkKKyAgICAgICAgICAgIG91dC5wcmludCgqY29kZUJsb2NrKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0LnByaW50KCJNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSB3L28gQ29kZUJsb2NrIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihyZWFsVGhpcyk7CiAgICAgaWYgKCFmdW5jdGlvbi0+ZWl0aGVyQ29kZUJsb2NrKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggYTljNDFjNDUyMTYw
M2Q3MDIzM2RjMjAyYzk3M2RkZDY1ZTBkOWEzNy4uYzU5ODJjNDJkMWY0MGU0ZDc5MzU5OGE2MjE5
NTI3N2Q0Mjk1ZWJmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaApAQCAtNTUsNyArNTUsMTAgQEAgY2xhc3MgSlNXQVNNTW9kdWxlOwogY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFdlYkFzc2Vt
Ymx5Q29kZUJsb2NrOwotICAgIAorY2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKK2NsYXNz
IEpTTW9kdWxlUmVjb3JkOworY2xhc3MgSlNTY29wZTsKKwogZW51bSBDb21waWxhdGlvbktpbmQg
eyBGaXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24gfTsKIAogaW5saW5lIGJv
b2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTEwNiw2ICsxMDksMTEg
QEAgY2xhc3MgRXhlY3V0YWJsZUJhc2UgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB7CiAgICAgICAg
IHJldHVybiB0eXBlKCkgPT0gUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOwogICAgIH0KKyAgICBib29s
IGlzTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUo
KSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVR5cGU7CisgICAgfQorCiAKICAgICBib29sIGlz
SG9zdEZ1bmN0aW9uKCkgY29uc3QKICAgICB7CkBAIC01NTAsNiArNTU4LDQ5IEBAIGNsYXNzIFBy
b2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIFJl
ZlB0cjxQcm9ncmFtQ29kZUJsb2NrPiBtX3Byb2dyYW1Db2RlQmxvY2s7CiB9OwogCitjbGFzcyBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsK
KyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAgIHR5
cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRh
bDsKKworICAgIHN0YXRpYyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0
ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CisKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2soKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsKKyAgICB9CisKKyAg
ICBQYXNzUmVmUHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7CisgICAgfQorCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGVUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFS
RV9JTkZPOworCisgICAgdm9pZCBjbGVhckNvZGUoKTsKKworICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0
aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBTY3JpcHRFeGVjdXRhYmxlOworCisgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoRXhl
Y1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYpOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7
CisgICAgUmVmUHRyPE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IG1fbW9kdWxlUHJvZ3JhbUNvZGVC
bG9jazsKK307CisKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRhYmxlIHsKICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC03NDIsNiArNzkzLDggQEAgaW5saW5lIHZvaWQgRXhl
Y3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUp
CiAgICAgY2FzZSBXZWJBc3NlbWJseUV4ZWN1dGFibGVUeXBlOgogICAgICAgICByZXR1cm4ganND
YXN0PFdlYkFzc2VtYmx5RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsKICNl
bmRpZgorICAgIGNhc2UgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOgorICAgICAgICByZXR1
cm4ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29k
ZSgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBqc0Nhc3Q8TmF0aXZlRXhlY3V0YWJs
ZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggOTg2NjNkZmNiMDgyYzdh
YWIwN2E2OTViOTA5M2M3ZGM0NTlkMWMyMi4uNDY4YzYyMDI3M2M2ZGM2NjdmYmFhMTEzMTNmMGVk
NmM1MzQ4YWQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcApAQCAtODQsNiArODQsOCBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2lu
Y2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpT
TW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5o
IgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKQEAgLTMxMiw2ICszMTQsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3R5cGVkQXJyYXlzW3RvSW5kZXgo
VHlwZURhdGFWaWV3KV0uc3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNEYXRhVmlldzo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURhdGFWaWV3KV0u
cHJvdG90eXBlLmdldCgpKSk7CiAgICAgCiAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU0xleGljYWxFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzKSk7CisgICAgbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwogICAgIG1f
c3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTdHJpY3RFdmFsQWN0
aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIG1fZGVi
dWdnZXJTY29wZVN0cnVjdHVyZS5zZXQobV92bSwgdGhpcywgRGVidWdnZXJTY29wZTo6Y3JlYXRl
U3RydWN0dXJlKG1fdm0sIHRoaXMpKTsKICAgICBtX3dpdGhTY29wZVN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEpTV2l0aFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7
CkBAIC0zNDgsNiArMzUxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAg
ICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUodm0sICp0aGlzKSk7CiAKICAgICBtX21vZHVsZVJlY29y
ZFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIAogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dB
U01Nb2R1bGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwpAQCAtNzkxLDYgKzc5NSw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRoU2Nv
cGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N0cmljdEV2
YWxBY3RpdmF0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKTsK
QEAgLTgxOSw2ICs4MjQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jb25zb2xlU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CkBAIC05
MzMsNiArOTM5LDI1IEBAIFVubGlua2VkRXZhbENvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNy
ZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUsCiAgICAgcmV0dXJuIHVubGlu
a2VkQ29kZUJsb2NrOwogfQogCitVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIEpTR2xv
YmFsT2JqZWN0OjpjcmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSkKK3sKKyAgICBQYXJzZXJF
cnJvciBlcnJvcjsKKyAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlID0gaGFzRGVidWdnZXIo
KSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKKyAgICBQcm9maWxlck1vZGUgcHJvZmlsZXJN
b2RlID0gaGFzUHJvZmlsZXIoKSA/IFByb2ZpbGVyT24gOiBQcm9maWxlck9mZjsKKyAgICBVbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gdm0oKS5jb2Rl
Q2FjaGUoKS0+Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKKyAgICAgICAgdm0oKSwgZXhlY3V0
YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0
aW4sIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisKKyAgICBpZiAoaGFzRGVi
dWdnZXIoKSkKKyAgICAgICAgZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGNhbGxGcmFtZSwgZXhl
Y3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5tZXNzYWdl
KCkpOworCisgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgeworICAgICAgICB0aHJvd1ZNRXJyb3Io
Y2FsbEZyYW1lLCBlcnJvci50b0Vycm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJjZSgp
KSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiB1bmxpbmtl
ZENvZGVCbG9jazsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0UmVtb3RlRGVidWdnaW5n
RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAx
YTUyNTBjNjdjZDE0NmVmYmNmZDExMjdjNTcwNjM4YWE0MTNiMTk2Li5kMWNhZDg3MDczZTQ0ZWQy
ZDZiMDg3ZDM1MDQxMDAyODBmYzgyMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTc4LDYgKzc4LDcgQEAgY2xhc3MgSlNTdGFjazsK
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIE1v
ZHVsZUxvYWRlck9iamVjdDsKK2NsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3Mg
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yOwogY2xhc3Mg
UHJvZ3JhbUNvZGVCbG9jazsKQEAgLTg1LDYgKzg2LDcgQEAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFi
bGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKIGNsYXNzIFJlZ0V4cFByb3RvdHlwZTsKIGNs
YXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBj
bGFzcyBOdWxsR2V0dGVyRnVuY3Rpb247CiBjbGFzcyBOdWxsU2V0dGVyRnVuY3Rpb247CiBlbnVt
IGNsYXNzIFRoaXNURFpNb2RlOwpAQCAtMjMwLDYgKzIzMiw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZTsKQEAgLTI2Myw2
ICsyNjYsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVzdWx0
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9kdWxlUmVjb3Jk
U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0U3RydWN0dXJlOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmU7CiAjZW5kaWYKQEAgLTQ0Nyw2ICs0
NTEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpY3RF
dmFsQWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0RXZhbEFjdGl2
YXRpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFjdGl2YXRpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZS5nZXQoKTsg
fQorICAgIFN0cnVjdHVyZSogbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBkaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdEFyZ3Vt
ZW50c1N0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc2NvcGVkQXJndW1lbnRzU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIG91dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CkBAIC01MDEsNiAr
NTA2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAgICAgc3RhdGljIHB0cmRpZmZfdCBpdGVyYXRvclJlc3VsdFN0cnVjdHVyZU9m
ZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9pdGVyYXRv
clJlc3VsdFN0cnVjdHVyZSk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBtb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogbW9k
dWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVOYW1l
c3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgU3RydWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93YXNt
TW9kdWxlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYKQEAgLTY0Myw2ICs2NDksNyBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKIAog
ICAgIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlUHJvZ3JhbUNvZGVCbG9jayhDYWxs
RnJhbWUqLCBQcm9ncmFtRXhlY3V0YWJsZSosIEpTT2JqZWN0KiogZXhjZXB0aW9uKTsKICAgICBV
bmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiwgRXZh
bEV4ZWN1dGFibGUqLCBUaGlzVERaTW9kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwor
ICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jayhDYWxsRnJhbWUqLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSopOwogCiBwcm90ZWN0
ZWQ6CiAgICAgc3RydWN0IEdsb2JhbFByb3BlcnR5SW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCA5NTE2MzE4
ZDcwMTY5ZTNkZDhjMmJlZjc4MzMxMjU2NzVjNWUyMThiLi40NDhlYTQzMWI3YjdjOTgyNjJkNDEw
YmYwMWY4NDkzNzFkOGFiNTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiBjbGFzcyBSZWdpc3RlcjsKICAgICAKIGNsYXNzIEpTTGV4aWNhbEVudmlyb25tZW50
IDogcHVibGljIEpTRW52aXJvbm1lbnRSZWNvcmQgewotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAg
ICBKU0xleGljYWxFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xU
YWJsZSopOwogICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjRmY2FhYTkxYjkx
YTZmMjZiYTBjOWU2ZGUwYjJmYTM3NmIwZGZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKQEAgLTAsMCArMSwx
MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKworI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZUVudmlyb25tZW50OjpzX2luZm8gPSB7ICJKU01v
ZHVsZUVudmlyb25tZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U01vZHVsZUVudmlyb25tZW50KSB9OworCitKU01vZHVsZUVudmlyb25tZW50KiBKU01vZHVsZUVu
dmlyb25tZW50OjpjcmVhdGUoCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNT
Y29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFsdWUgaW5p
dGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIC8vIEpTTGV4
aWNhbEVudmlyb25tZW50IChwcmVjaXNlbHksIEpTRW52aXJvbm1lbnRSZWNvcmQpIGhhcyB0aGUg
c3RvcmFnZSB0byBzdG9yZSB0aGUgdmFyaWFibGUgc2xvdHMgYWZ0ZXIgdGhlIGl0cyBjbGFzcyBz
dG9yYWdlLgorICAgIC8vIEJlY2F1c2UgdGhlIG9mZnNldCBvZiB0aGUgdmFyaWFibGUgc2xvdHMg
YXJlIGZpeGVkIGluIHRoZSBKU0Vudmlyb25tZW50UmVjb3JkLCBpbmhlcml0dGluZyB0aGVzZSBj
bGFzcyBhbmQgYWRkaW5nIG5ldyBtZW1iZXIgZmllbGQgaXMgbm90IGFsbG93ZWQsCisgICAgLy8g
dGhlIG5ldyBtZW1iZXIgd2lsbCBvdmVybGFwIHRoZSB2YXJpYWJsZSBzbG90cy4KKyAgICAvLyBU
byBrZWVwIHRoZSBKU01vZHVsZUVudmlyb25tZW50IGNvbXBhdGlibGUgdG8gdGhlIEpTTGV4aWNh
bEVudmlyb25tZW50IGJ1dCBhZGQgdGhlIG5ldyBtZW1iZXIgdG8gc3RvcmUgdGhlIEpTTW9kdWxl
UmVjb3JkLCB3ZSBhZGRpdGlvbmFsbHkgYWxsb2NhdGUKKyAgICAvLyB0aGUgc3RvcmFnZSBhZnRl
ciB0aGUgdmFyaWFibGUgc2xvdHMuCisgICAgLy8KKyAgICAvLyBKU0xleGljYWxFbnZpcm9ubWVu
dDoKKyAgICAvLyAgICAgWyBKU0xleGljYWxFbnZpcm9ubWVudCBdWyB2YXJpYWJsZSBzbG90cyBd
CisgICAgLy8KKyAgICAvLyBKU01vZHVsZUVudmlyb25tZW50OgorICAgIC8vICAgICBbIEpTTGV4
aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxlIHNsb3RzIF1bIGFkZGl0aW9uYWwgc2xvdHMgZm9y
IEpTTW9kdWxlRW52aXJvbm1lbnQgXQorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHJlc3VsdCA9
CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAgICAgICAgYWxsb2Nh
dGVDZWxsPEpTTW9kdWxlRW52aXJvbm1lbnQ+KHZtLmhlYXAsIEpTTW9kdWxlRW52aXJvbm1lbnQ6
OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSkpCisgICAgICAgIEpTTW9kdWxlRW52aXJvbm1l
bnQodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSk7CisgICAgcmVzdWx0
LT5maW5pc2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJl
Y29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlKTsKKyAg
ICB0aGlzLT5tb2R1bGVSZWNvcmRTbG90KCkuc2V0KHZtLCB0aGlzLCBtb2R1bGVSZWNvcmQpOwor
fQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kVmFs
dWVzKHRoaXNPYmplY3QtPnZhcmlhYmxlcygpLCB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5z
Y29wZVNpemUoKSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1vZHVsZVJlY29y
ZFNsb3QoKSk7Cit9CisKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICBjb25z
dCBhdXRvIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2ZUlt
cG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkp
OworICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246
OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIGltcG9ydGVk
TW9kdWxlRW52aXJvbm1lbnQgPSByZXNvbHV0aW9uLm1vZHVsZVJlY29yZC0+bW9kdWxlRW52aXJv
bm1lbnQoKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHJlZGlyZWN0U2xvdChpbXBvcnRlZE1vZHVs
ZUVudmlyb25tZW50KTsKKyAgICAgICAgaWYgKGltcG9ydGVkTW9kdWxlRW52aXJvbm1lbnQtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QoaW1wb3J0ZWRNb2R1bGVF
bnZpcm9ubWVudCwgZXhlYywgcHJvcGVydHlOYW1lLCByZWRpcmVjdFNsb3QpKSB7CisgICAgICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gcmVkaXJlY3RTbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5
TmFtZSk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0
LCByZWRpcmVjdFNsb3QuYXR0cmlidXRlcygpLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlT
bG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK3ZvaWQgSlNN
b2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzQXJy
YXksIEVudW1lcmF0aW9uTW9kZSBtb2RlKQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIGlmIChw
cm9wZXJ0eU5hbWVzQXJyYXkuaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKSkgeworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+aW1wb3J0
RW50cmllcygpKSB7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IHBhaXIu
dmFsdWU7CisgICAgICAgICAgICBpZiAoIWltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKGV4ZWMtPnZt
KCkpKQorICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNBcnJheS5hZGQoaW1wb3J0RW50cnku
bG9jYWxOYW1lKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gQmFzZTo6Z2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXNBcnJheSwg
bW9kZSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgLy8gQWxs
IGltcG9ydGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCisgICAgY29uc3QgYXV0byByZXNvbHV0
aW9uID0gdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRl
bnRpZmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAocmVz
b2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZl
ZCkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKK30KKworYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxl
RW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICAvLyBBbGwgaW1wb3J0ZWQgYmluZGluZ3MgYXJlIGlt
bXV0YWJsZS4KKyAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVS
ZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHBy
b3BlcnR5TmFtZS51aWQoKSkpOworICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVS
ZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNWUx
MmVlZmM1NDhiOWVlNmViZjMxM2ZhN2E4ZDRjNzE2OTE0ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKQEAgLTAs
MCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBKU01vZHVsZUVudmlyb25tZW50X2gKKyNkZWZpbmUgSlNNb2R1bGVFbnZpcm9u
bWVudF9oCisKKyNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpT
TW9kdWxlUmVjb3JkLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBSZWdpc3RlcjsKKwor
Y2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0xleGljYWxFbnZpcm9ubWVudCB7
CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworcHVibGljOgorICAgIHR5cGVkZWYgSlNMZXhpY2FsRW52aXJvbm1lbnQgQmFzZTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXM7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVFbnZpcm9ubWVudCogY3JlYXRlKFZNJiwg
U3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgSlNWYWx1ZSBpbml0aWFsVmFsdWUs
IEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVFbnZpcm9ubWVudCogY3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogY3VycmVu
dFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBK
U01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQorICAgIHsKKyAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKCk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xU
YWJsZSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOworICAgIH0KKworICAgIERFQ0xBUkVf
SU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCksIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90
IG9mZnNldE9mTW9kdWxlUmVjb3JkKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmll
cjxKU01vZHVsZVJlY29yZD4pPihCYXNlOjphbGxvY2F0aW9uU2l6ZShzeW1ib2xUYWJsZSkpOwor
ICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTW9kdWxlUmVjb3JkKHN5
bWJvbFRhYmxlKSArIHNpemVvZihXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+KTsKKyAgICB9
CisKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtb2R1bGVSZWNvcmRTbG90KCkuZ2V0KCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSk7CisgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKworcHJpdmF0ZToK
KyAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJv
bFRhYmxlKik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNWYWx1ZSBpbml0aWFs
VmFsdWUsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPEpTTW9kdWxl
UmVjb3JkPiYgbW9kdWxlUmVjb3JkU2xvdCgpCisgICAgeworICAgICAgICByZXR1cm4gKmJpdHdp
c2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPEpTTW9kdWxlUmVjb3JkPio+KGJpdHdpc2VfY2FzdDxj
aGFyKj4odGhpcykgKyBvZmZzZXRPZk1vZHVsZVJlY29yZChzeW1ib2xUYWJsZSgpKSk7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OworfTsKKworaW5saW5lIEpTTW9kdWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxlRW52aXJvbm1lbnQo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1i
b2xUYWJsZSogc3ltYm9sVGFibGUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGN1cnJlbnRT
Y29wZSwgc3ltYm9sVGFibGUpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gSlNNb2R1bGVFbnZpcm9ubWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJj
OGE5NDkyY2M3NDM5OTllMjg4MGFlZjA0NTdhNzcxYjVjYjJhOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNw
cApAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5oIgorCisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRl
ICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlND
IHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTmFtZXNwYWNl
T2JqZWN0U3ltYm9sSXRlcmF0b3IoRXhlY1N0YXRlKik7CisKK2NvbnN0IENsYXNzSW5mbyBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6c19pbmZvID0geyAiTW9kdWxlTmFtZXNwYWNlT2JqZWN0Iiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU01vZHVsZU5hbWVz
cGFjZU9iamVjdCkgfTsKKworCitKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmll
clNldCYgZXhwb3J0cykKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhwb3J0
cyhleHBvcnRzKQoreworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTTW9kdWxlUmVj
b3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBtX21vZHVsZVJlY29yZC5zZXQodm0sIHRo
aXMsIG1vZHVsZVJlY29yZCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclN5bWJvbCwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3ltYm9sSXRlcmF0b3Is
IERvbnRFbnVtLCAwKTsKKworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9y
Zy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWdldHBy
b3RvdHlwZW9mCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtc2V0cHJvdG90eXBl
b2YtdgorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWlzZXh0ZW5zaWJsZQorICAg
IC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1t
b2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXByZXZlbnRleHRlbnNpb25zCisgICAgcHJl
dmVudEV4dGVuc2lvbnModm0pOworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworICAgIHRo
aXNPYmplY3QtPkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojp+SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QoKTsKK30KKwordm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkKTsKK30KKworYm9vbCBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1nZXRvd25wcm9wZXJ0
eS1wCisKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworCisgICAgaWYgKHByb3BlcnR5TmFtZS5p
c1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworCisgICAgaWYgKCF0aGlzT2Jq
ZWN0LT5tX2V4cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IHRoaXNPYmpl
Y3QtPm1fbW9kdWxlUmVjb3JkLmdldCgpOworCisgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0g
bW9kdWxlUmVjb3JkLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhl
YywgcHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgQVNTRVJUKHJlc29sdXRpb24udHlwZSAhPSBK
U01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQgJiYgcmVzb2x1dGlvbi50
eXBlICE9IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXMpOworICAg
IEpTTW9kdWxlUmVjb3JkKiB0YXJnZXRNb2R1bGUgPSByZXNvbHV0aW9uLm1vZHVsZVJlY29yZDsK
KyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0YXJnZXRFbnZpcm9ubWVudCA9IHRhcmdldE1vZHVs
ZS0+bW9kdWxlRW52aXJvbm1lbnQoKTsKKyAgICBQcm9wZXJ0eVNsb3QgdHJhbXBvbGluZVNsb3Qo
dGFyZ2V0RW52aXJvbm1lbnQpOworICAgIGlmICghdGFyZ2V0RW52aXJvbm1lbnQtPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGFyZ2V0RW52aXJvbm1lbnQsIGV4
ZWMsIHJlc29sdXRpb24ubG9jYWxOYW1lLCB0cmFtcG9saW5lU2xvdCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEpTVmFsdWUgdmFsdWUgPSB0cmFtcG9saW5lU2xvdC5nZXRWYWx1ZShl
eGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwor
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgRG9udERlbGV0ZSwgdmFsdWUpOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQor
eworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXNldC1wLXYtcmVjZWl2ZXIKKyAg
ICByZXR1cm47Cit9CisKK2Jvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4w
LyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1kZWxldGUtcAorICAgIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0Kj4oY2VsbCk7CisgICAgcmV0dXJuICF0aGlzT2JqZWN0LT5tX2V4cG9ydHMuY29udGFp
bnMocHJvcGVydHlOYW1lLnVpZCgpKTsKK30KKwordm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7
CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtb3ducHJvcGVydHlrZXlzCisgICAg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG5hbWUgOiB0aGlzT2Jq
ZWN0LT5tX2V4cG9ydHMpCisgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKG5hbWUuZ2V0KCkpOwor
ICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30KKworYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWRlZmluZW93bnByb3BlcnR5
LXAtZGVzYworICAgIGlmIChzaG91bGRUaHJvdykKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3Qg
dGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJh
dG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ8dGhp
c3wgc2hvdWxkIGJlIGFuIG9iamVjdCIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZSgpLCBhc09iamVjdCh0aGlzVmFs
dWUpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmFkNzcyMTExNjlkZTA5NDA3ODZlZmFjYzY3ODRlZDdiMjlmNmZiYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3RfaAorI2RlZmluZSBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdF9oCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CisKK2NsYXNzIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwor
CisgICAgc3RhdGljIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCwgY29uc3QgSWRlbnRpZmllclNldCYgZXhwb3J0
cykKKyAgICB7CisgICAgICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4oZXhlYy0+dm0o
KS5oZWFwKSkgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBl
eHBvcnRzKTsKKyAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpLCBnbG9i
YWxPYmplY3QsIG1vZHVsZVJlY29yZCk7CisgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfQor
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3du
Tm9uSW5kZXhQcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisKKyAgICBERUNMQVJF
X0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisg
ICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVSZWNvcmQqKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdChWTSYsIFN0cnVjdHVyZSosIGNv
bnN0IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpOworCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOworCisgICAgSWRlbnRpZmllclNldCBtX2V4cG9ydHM7CisgICAgV3Jp
dGVCYXJyaWVyPEpTTW9kdWxlUmVjb3JkPiBtX21vZHVsZVJlY29yZDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNNb2R1bGVOYW1lc3BhY2VPYmplY3RfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDVk
MTVlYmMzNmM4NDIwZWY2ZWNkNTRlZTA1M2Q5YTMzMTVmNmFiOGIuLjE4ZDI3ZjZhZGE4OGJhYzJh
ZjU5MzVkMzQwYjM0NDhjMmFiNmZhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTI2LDEwICsyNiwxNCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAKKyNpbmNsdWRlICJFcnJv
ci5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVu
dC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2xv
dFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCkBAIC01
OCw3ICs2MiwxMSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX21vZHVsZUVudmlyb25tZW50KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9kZXBlbmRlbmNpZXNNYXApOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRo
aXNPYmplY3QtPm1fbGlua2VkTW9kdWxlcy5kYXRhKCksIHRoaXNPYmplY3QtPm1fbGlua2VkTW9k
dWxlcy5zaXplKCkpOwogfQogCiBhdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3Jl
YXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYg
bG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkmIHZhcmlhYmxlKSAtPiBF
eHBvcnRFbnRyeQpAQCAtOTAsMTMgKzk4LDM0NyBAQCBKU01vZHVsZVJlY29yZCogSlNNb2R1bGVS
ZWNvcmQ6Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdAog
ICAgIHJldHVybiBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihwYWlyLmdldChleGVjLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ2YWx1ZSIpKSk7CiB9CiAKLXZvaWQgSlNNb2R1bGVSZWNv
cmQ6OmxpbmsoRXhlY1N0YXRlKikKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnJlc29sdmVJbXBvcnQo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpIC0+IFJlc29sdXRp
b24KIHsKKyAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9pbXBvcnRFbnRyaWVzLmZpbmQobG9j
YWxOYW1lLmltcGwoKSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1faW1wb3J0RW50cmllcy5lbmQo
KSkKKyAgICAgICAgcmV0dXJuIFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3Vu
ZCwgdGhpcywgSWRlbnRpZmllcigpIH07CisKKyAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9
IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+
dm0oKSkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6Tm90
Rm91bmQsIHRoaXMsIElkZW50aWZpZXIoKSB9OworCisgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9y
dGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBpbXBvcnRFbnRyeS5t
b2R1bGVSZXF1ZXN0KTsKKyAgICByZXR1cm4gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQo
ZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7Cit9CisKK3N0cnVjdCBSZXNvbHZlUXVlcnkg
eworICAgIFJlc29sdmVRdWVyeShKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkLCBVbmlxdWVk
U3RyaW5nSW1wbCogZXhwb3J0TmFtZSkKKyAgICAgICAgOiBtb2R1bGVSZWNvcmQobW9kdWxlUmVj
b3JkKQorICAgICAgICAsIGV4cG9ydE5hbWUoZXhwb3J0TmFtZSkKKyAgICB7CisgICAgfQorCisg
ICAgUmVzb2x2ZVF1ZXJ5KEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQsIGNvbnN0IElkZW50
aWZpZXImIGV4cG9ydE5hbWUpCisgICAgICAgIDogUmVzb2x2ZVF1ZXJ5KG1vZHVsZVJlY29yZCwg
ZXhwb3J0TmFtZS5pbXBsKCkpCisgICAgeworICAgIH0KKworICAgIGVudW0gRW1wdHlWYWx1ZVRh
ZyB7IEVtcHR5VmFsdWUgfTsKKyAgICBSZXNvbHZlUXVlcnkoRW1wdHlWYWx1ZVRhZykKKyAgICB7
CisgICAgfQorCisgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKKyAg
ICBSZXNvbHZlUXVlcnkoRGVsZXRlZFZhbHVlVGFnKQorICAgICAgICA6IG1vZHVsZVJlY29yZChu
dWxscHRyKQorICAgICAgICAsIGV4cG9ydE5hbWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
CisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiAhZXhwb3J0TmFtZTsKKyAgICB9CisKKyAgICBib29sIGlzRGVsZXRlZFZh
bHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBleHBvcnROYW1lLmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCk7CisgICAgfQorCisgICAgLy8gVGhlIG1vZHVsZSByZWNvcmQgaXMgbm90
IG1hcmtlZCBmcm9tIHRoZSBHQy4gQnV0IHRoZXNlIHJlY29yZHMgYXJlIHJlYWNoYWJsZSBmcm9t
IHRoZSBKU0dsb2JhbE9iamVjdC4KKyAgICAvLyBTbyB3ZSBkb24ndCBjYXJlIHRoZSByZWFjaGFi
aWxpdHkgdG8gdGhpcyByZWNvcmQuCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZDsK
KyAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGV4cG9ydE5hbWU7Cit9OworCitzdHJ1Y3Qg
UmVzb2x2ZVF1ZXJ5SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVzb2x2
ZVF1ZXJ5Jik7CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVzb2x2ZVF1ZXJ5JiwgY29u
c3QgUmVzb2x2ZVF1ZXJ5Jik7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKworaW5saW5lIHVuc2lnbmVkIFJlc29sdmVRdWVy
eUhhc2g6Omhhc2goY29uc3QgUmVzb2x2ZVF1ZXJ5JiBxdWVyeSkKK3sKKyAgICByZXR1cm4gV1RG
OjpQdHJIYXNoPEpTTW9kdWxlUmVjb3JkKj46Omhhc2gocXVlcnkubW9kdWxlUmVjb3JkKSArIElk
ZW50aWZpZXJSZXBIYXNoOjpoYXNoKHF1ZXJ5LmV4cG9ydE5hbWUpOworfQorCitpbmxpbmUgYm9v
bCBSZXNvbHZlUXVlcnlIYXNoOjplcXVhbChjb25zdCBSZXNvbHZlUXVlcnkmIGxocywgY29uc3Qg
UmVzb2x2ZVF1ZXJ5JiByaHMpCit7CisgICAgcmV0dXJuIGxocy5tb2R1bGVSZWNvcmQgPT0gcmhz
Lm1vZHVsZVJlY29yZCAmJiBsaHMuZXhwb3J0TmFtZSA9PSByaHMuZXhwb3J0TmFtZTsKK30KKwor
c3RhdGljIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdmVFeHBvcnRMb29wKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgUmVzb2x2ZVF1ZXJ5JiByb290KQoreworICAgIHR5cGVkZWYgV1RG
OjpIYXNoU2V0PFJlc29sdmVRdWVyeSwgUmVzb2x2ZVF1ZXJ5SGFzaCwgV1RGOjpDdXN0b21IYXNo
VHJhaXRzPFJlc29sdmVRdWVyeT4+IFJlc29sdmVTZXQ7CisgICAgdXNpbmcgUmVzb2x1dGlvbiA9
IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOworCisgICAgZW51bSBjbGFzcyBUeXBlIHsgU2Vu
dGluZWwsIE5vbmUgfTsKKyAgICBzdHJ1Y3QgVGFzayB7CisgICAgICAgIFJlc29sdmVRdWVyeSBx
dWVyeTsKKyAgICAgICAgVHlwZSB0eXBlOworICAgIH07CisKKyAgICBWZWN0b3I8VGFzaywgOD4g
cGVuZGluZ1Rhc2tzOworICAgIFJlc29sdmVTZXQgcmVzb2x2ZVNldDsKKyAgICBIYXNoU2V0PEpT
TW9kdWxlUmVjb3JkKj4gc3RhclNldDsKKworICAgIGF1dG8gcmVzdWx0ID0gUmVzb2x1dGlvbiB7
IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKKwor
ICAgIGF1dG8gcmVzb2x2ZU5vbkxvY2FsID0gWyZdKGNvbnN0IFJlc29sdmVRdWVyeSYgcXVlcnkp
IC0+IGJvb2wgeworICAgICAgICBpZiAocXVlcnkuZXhwb3J0TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQuaW1wbCgpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBS
ZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3IsIHF1ZXJ5Lm1vZHVsZVJlY29yZCwg
SWRlbnRpZmllcigpIH07CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghc3RhclNldC5hZGQocXVlcnkubW9kdWxlUmVjb3JkKS5pc05ld0VudHJ5KQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3Rh
ck1vZHVsZU5hbWUgOiBxdWVyeS5tb2R1bGVSZWNvcmQtPnN0YXJFeHBvcnRFbnRyaWVzKCkpIHsK
KyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9IHF1ZXJ5
Lm1vZHVsZVJlY29yZC0+aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKGV4ZWMsIHN0YXJNb2R1bGVOYW1lLmdldCgpKSk7CisgICAgICAgICAgICBwZW5k
aW5nVGFza3MuYXBwZW5kKFRhc2sgeyBSZXNvbHZlUXVlcnkoaW1wb3J0ZWRNb2R1bGVSZWNvcmQs
IHF1ZXJ5LmV4cG9ydE5hbWUuZ2V0KCkpLCBUeXBlOjpOb25lIH0pOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNr
IHsgcm9vdCwgVHlwZTo6Tm9uZSB9KTsKKyAgICB3aGlsZSAoIXBlbmRpbmdUYXNrcy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgY29uc3QgYXV0byB0YXNrID0gcGVuZGluZ1Rhc2tzLnRha2VMYXN0KCk7
CisKKyAgICAgICAgaWYgKHRhc2sudHlwZSA9PSBUeXBlOjpOb25lKSB7CisgICAgICAgICAgICBj
b25zdCBSZXNvbHZlUXVlcnkmIHF1ZXJ5ID0gdGFzay5xdWVyeTsKKyAgICAgICAgICAgIGlmICgh
cmVzb2x2ZVNldC5hZGQodGFzay5xdWVyeSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IHF1
ZXJ5Lm1vZHVsZVJlY29yZDsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtb2R1
bGVSZWNvcmQtPmV4cG9ydEVudHJpZXMoKS5maW5kKHF1ZXJ5LmV4cG9ydE5hbWUpOworICAgICAg
ICAgICAgaWYgKGl0ZXJhdG9yID09IG1vZHVsZVJlY29yZC0+ZXhwb3J0RW50cmllcygpLmVuZCgp
KSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbWF0Y2hlZCBleHBvcnRlZCBi
aW5kaW5nIGluIHRoZSBjdXJyZW50IG1vZHVsZSwKKyAgICAgICAgICAgICAgICAvLyB3ZSBuZWVk
IHRvIGxvb2sgaW50byB0aGUgc3RhcnMuCisgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVOb25M
b2NhbCh0YXNrLnF1ZXJ5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29u
c3QgYXV0byYgZXhwb3J0RW50cnkgPSBpdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICBzd2l0
Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6
OkV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNv
cmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6CisgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdC50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCwg
bW9kdWxlUmVjb3JkLCBleHBvcnRFbnRyeS5sb2NhbE5hbWUgfTsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdC5tb2R1bGVSZWNvcmQgIT0gcXVlcnkubW9kdWxlUmVjb3JkIHx8IHJlc3VsdC5sb2NhbE5h
bWUgIT0gZXhwb3J0RW50cnkubG9jYWxOYW1lKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
UmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91cywgbW9kdWxlUmVjb3JkLCBJ
ZGVudGlmaWVyKCkgfTsKKworICAgICAgICAgICAgICAgIC8vIFNhbWUgdmFsdWUgY2FzZS4KKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgY2FzZSBKU01vZHVsZVJlY29y
ZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0OiB7CisgICAgICAgICAgICAgICAgSlNNb2R1
bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlUmVjb3JkID0gbW9kdWxlUmVjb3JkLT5ob3N0UmVzb2x2
ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGV4cG9ydEVudHJ5Lm1vZHVsZU5hbWUpOworCisgICAgICAg
ICAgICAgICAgLy8gV2hlbiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGRvZXMgbm90IHByb2R1Y2UgYW55
IHJlc29sdmVkIGJpbmRpbmcsIHdlIG5lZWQgdG8gbG9vayBpbnRvIHRoZSBzdGFycyBpbiB0aGUg
KmN1cnJlbnQqCisgICAgICAgICAgICAgICAgLy8gbW9kdWxlLiBUbyBkbyB0aGlzLCB3ZSBhcHBl
bmQgdGhlIGBTZW50aW5lbGAgdGFzayB0byB0aGUgdGFzayBxdWV1ZS4KKyAgICAgICAgICAgICAg
ICAvLyBXaGVuIHRoZSBgU2VudGluZWxgIHRhc2sgaXMgcG9wZWQgYW5kIHN0aWxsIHRoZSByZXF1
ZXN0IGlzIG5vdCByZXNvbHZlZCwgd2Ugd2lsbCBsb29rIGludG8gdGhlIHN0YXJzLgorICAgICAg
ICAgICAgICAgIHBlbmRpbmdUYXNrcy5hcHBlbmQoVGFzayB7IHF1ZXJ5LCBUeXBlOjpTZW50aW5l
bCB9KTsKKyAgICAgICAgICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyBSZXNvbHZl
UXVlcnkoaW1wb3J0ZWRNb2R1bGVSZWNvcmQsIGV4cG9ydEVudHJ5LmltcG9ydE5hbWUpLCBUeXBl
OjpOb25lIH0pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBl
ID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKSB7CisgICAgICAgICAgICAgICAgLy8gSW5k
aXJlY3QgZXhwb3J0IGVudHJ5IGRvZXMgbm90IHByb2R1Y2UgYW55IHJlc29sdmVkIGJpbmRpbmcu
CisgICAgICAgICAgICAgICAgLy8gU28gd2Ugd2lsbCBpbnZlc3RpZ2F0ZSB0aGUgc3RhcnMuCisg
ICAgICAgICAgICAgICAgaWYgKHJlc29sdmVOb25Mb2NhbCh0YXNrLnF1ZXJ5KSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnJlc29s
dmVFeHBvcnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKSAt
PiBSZXNvbHV0aW9uCit7CisgICAgcmV0dXJuIHJlc29sdmVFeHBvcnRMb29wKGV4ZWMsIFJlc29s
dmVRdWVyeSh0aGlzLCBleHBvcnROYW1lLmltcGwoKSkpOworfQorCitzdGF0aWMgdm9pZCBnZXRF
eHBvcnRlZE5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNNb2R1bGVSZWNvcmQqIHJvb3QsIElkZW50
aWZpZXJTZXQmIGV4cG9ydGVkTmFtZXMpCit7CisgICAgSGFzaFNldDxKU01vZHVsZVJlY29yZCo+
IGV4cG9ydFN0YXJTZXQ7CisgICAgVmVjdG9yPEpTTW9kdWxlUmVjb3JkKiwgOD4gcGVuZGluZ01v
ZHVsZXM7CisKKyAgICBwZW5kaW5nTW9kdWxlcy5hcHBlbmQocm9vdCk7CisKKyAgICB3aGlsZSAo
IXBlbmRpbmdNb2R1bGVzLmlzRW1wdHkoKSkgeworICAgICAgICBKU01vZHVsZVJlY29yZCogbW9k
dWxlUmVjb3JkID0gcGVuZGluZ01vZHVsZXMudGFrZUxhc3QoKTsKKyAgICAgICAgaWYgKGV4cG9y
dFN0YXJTZXQuY29udGFpbnMobW9kdWxlUmVjb3JkKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBleHBvcnRTdGFyU2V0LmFkZChtb2R1bGVSZWNvcmQpOworCisgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgcGFpciA6IG1vZHVsZVJlY29yZC0+ZXhwb3J0RW50cmllcygpKSB7CisgICAg
ICAgICAgICBjb25zdCBhdXRvJiBleHBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgICAg
ICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVS
ZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1
bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDoKKyAgICAgICAgICAgICAgICBp
ZiAobW9kdWxlUmVjb3JkID09IHJvb3QgfHwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlZmF1bHRL
ZXl3b3JkICE9IGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpCisgICAgICAgICAgICAgICAgICAgIGV4
cG9ydGVkTmFtZXMuYWRkKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0
RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3Rhck1vZHVsZU5h
bWUgOiBtb2R1bGVSZWNvcmQtPnN0YXJFeHBvcnRFbnRyaWVzKCkpIHsKKyAgICAgICAgICAgIEpT
TW9kdWxlUmVjb3JkKiByZXF1ZXN0ZWRNb2R1bGVSZWNvcmQgPSBtb2R1bGVSZWNvcmQtPmhvc3RS
ZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBzdGFy
TW9kdWxlTmFtZS5nZXQoKSkpOworICAgICAgICAgICAgcGVuZGluZ01vZHVsZXMuYXBwZW5kKHJl
cXVlc3RlZE1vZHVsZVJlY29yZCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJlY29yZDo6Z2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpCisgICAgICAgIHJl
dHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5nZXQoKTsKKworICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgSWRlbnRp
ZmllclNldCBleHBvcnRlZE5hbWVzOworICAgIGdldEV4cG9ydGVkTmFtZXMoZXhlYywgdGhpcywg
ZXhwb3J0ZWROYW1lcyk7CisKKyAgICBJZGVudGlmaWVyU2V0IHVuYW1iaWd1b3VzTmFtZXM7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBuYW1lIDogZXhwb3J0ZWROYW1lcykgeworICAgICAgICBjb25z
dCBhdXRvIHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21V
aWQoZXhlYywgbmFtZS5nZXQoKSkpOworICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkg
eworICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgorICAgICAgICBjYXNl
IFJlc29sdXRpb246OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihl
eGVjKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGNhc2UgUmVzb2x1
dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAgIHVuYW1iaWd1b3VzTmFt
ZXMuYWRkKG5hbWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3Q6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCksIHRoaXMsIHVuYW1iaWd1b3VzTmFtZXMp
KTsKKyAgICByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3QuZ2V0KCk7Cit9CisKK3ZvaWQg
SlNNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjKQoreworICAgIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0
ZShleGVjLCBzb3VyY2VDb2RlKCkpOworICAgIGlmICghZXhlY3V0YWJsZSkgeworICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKGV4ZWMsIGV4ZWN1dGFibGUpOworICAgIG1fbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWN1dGFibGUpOworfQorCitzaXpl
X3QgSlNNb2R1bGVSZWNvcmQ6OmxpbmtNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU01vZHVsZVJl
Y29yZCogaW1wb3J0ZWQpCit7CisgICAgc2l6ZV90IGNhbmRpZGF0ZUluZGV4ID0gbV9saW5rZWRN
b2R1bGVzLnNpemUoKTsKKyAgICBjb25zdCBhdXRvIGFkZFJlc3VsdCA9IG1fbGlua2VkTW9kdWxl
TWFwLmFkZChpbXBvcnRlZC0+bW9kdWxlRW52aXJvbm1lbnQoKSwgY2FuZGlkYXRlSW5kZXgpOwor
ICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBtX2xpbmtlZE1vZHVsZXMu
YXBwZW5kKFdyaXRlQmFycmllcjxVbmtub3duPigpKTsKKyAgICAgICAgbV9saW5rZWRNb2R1bGVz
Lmxhc3QoKS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgaW1wb3J0ZWQpOworICAgICAgICByZXR1cm4g
Y2FuZGlkYXRlSW5kZXg7CisgICAgfQorICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlOworfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhF
eGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSkKK3sKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2Vk
Q29kZUJsb2NrID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jaygpOworICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IHVubGlua2VkQ29k
ZUJsb2NrLT5zeW1ib2xUYWJsZSgpOworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVu
dmlyb25tZW50ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzeW1i
b2xUYWJsZSwganNURFpWYWx1ZSgpLCB0aGlzKTsKKworICAgIC8vIEluaXRpYWxpemUgbm9uLWxl
eGljYWwgdmFyaWFibGVzIHdpdGggdW5kZWZpbmVkLgorICAgIGZvciAoY29uc3QgYXV0byYgdmFy
aWFibGUgOiBtX2RlY2xhcmVkVmFyaWFibGVzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGVudHJ5
ID0gc3ltYm9sVGFibGUtPmdldCh2YXJpYWJsZS5rZXkuZ2V0KCkpOworICAgICAgICBWYXJPZmZz
ZXQgb2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7CisgICAgICAgIGlmICghb2Zmc2V0LmlzU3Rh
Y2soKSkKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0KG1vZHVsZUVudmlyb25tZW50LCBleGVj
LCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlhYmxlLmtleS5nZXQoKSksIGpzVW5kZWZp
bmVkKCksIGZhbHNlKTsKKyAgICB9CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCisgICAg
Ly8gSW5pdGlhbGl6ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCisgICAgZm9yIChzaXplX3QgaSA9
IDAsIG51bWJlck9mRnVuY3Rpb25zID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rp
b25EZWNscygpOyBpIDwgbnVtYmVyT2ZGdW5jdGlvbnM7ICsraSkgeworICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgPSB1bmxpbmtl
ZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOworICAgICAgICBjb25zdCBhdXRvJiBlbnRyeSA9
IHN5bWJvbFRhYmxlLT5nZXQodW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKS5pbXBs
KCkpOworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7CisgICAg
ICAgIGlmICghb2Zmc2V0LmlzU3RhY2soKSkgeworICAgICAgICAgICAgQVNTRVJUKCF1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBpZiAo
dm0udHlwZVByb2ZpbGVyKCkgfHwgdm0uY29udHJvbEZsb3dQcm9maWxlcigpKSB7CisgICAgICAg
ICAgICAgICAgdm0uZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRS
YW5nZShtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291cmNlSUQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdTdGFydE9mZnNl
dCgpLAorICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+dHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB1bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS0+bGluayh2bSwgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnNvdXJjZSgpKSwg
bW9kdWxlRW52aXJvbm1lbnQpOworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQobW9kdWxlRW52
aXJvbm1lbnQsIGV4ZWMsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCksIGZ1bmN0
aW9uLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
aXIgOiBtX2V4cG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkg
PSBwYWlyLnZhbHVlOworICAgICAgICBpZiAoZXhwb3J0RW50cnkudHlwZSA9PSBKU01vZHVsZVJl
Y29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0KSB7CisgICAgICAgICAgICBjb25zdCBh
dXRvIHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydEVudHJ5LmV4cG9ydE5h
bWUpOworICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKKyAgICAgICAgICAg
IGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICBjYXNlIFJlc29s
dXRpb246OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpB
bWJpZ3VvdXM6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6
UmVzb2x2ZWQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpIHsKKyAg
ICAgICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBKU01v
ZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4
ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOworICAgICAgICBpZiAoaW1wb3J0RW50cnku
aXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpIHsKKyAgICAgICAgICAgIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0KiBuYW1lc3BhY2VPYmplY3QgPSBpbXBvcnRlZE1vZHVsZS0+Z2V0TW9kdWxlTmFtZXNw
YWNlKGV4ZWMpOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IHN5bWJvbFRhYmxlLT5pbmxpbmVHZXQobG9ja2VyLCBpbXBvcnRFbnRyeS5sb2NhbE5hbWUu
aW1wbCgpKTsKKyAgICAgICAgICAgIFNjb3BlT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnNjb3BlT2Zm
c2V0KCk7CisgICAgICAgICAgICBBU1NFUlQobW9kdWxlRW52aXJvbm1lbnQtPmlzVmFsaWQob2Zm
c2V0KSk7CisgICAgICAgICAgICBtb2R1bGVFbnZpcm9ubWVudC0+dmFyaWFibGVBdChvZmZzZXQp
LnNldChleGVjLT52bSgpLCBtb2R1bGVFbnZpcm9ubWVudCwgbmFtZXNwYWNlT2JqZWN0KTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IGltcG9y
dGVkTW9kdWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUpOwor
ICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2Ug
UmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246
OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJy
b3I6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2
ZWQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBtX21vZHVsZUVudmlyb25tZW50LnNldChleGVjLT52bSgpLCB0aGlzLCBtb2R1
bGVFbnZpcm9ubWVudCk7CiB9CiAKLUpTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhl
Y1N0YXRlKikKK0pTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0YXRlKiBleGVj
KQogewotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmICghbV9tb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUuZ2V0KCksIGV4ZWMsIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCkpOworICAgIG1fbW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUuY2xlYXIoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBz
dGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiYgdWlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3Jk
LmgKaW5kZXggOTM2MjYzY2NmMzEyOWRhOTVlMzFlOTFhMjE5NDBkZDBhOTU1MjY0NS4uNjZjYmVl
MWVlMWFmNDQ4ZDAzMDU5MjFjOGEwYmEwMTY3NmI2NTQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCkBAIC0xMDcsMTYgKzEwNywzOSBAQCBj
bGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAg
Y29uc3QgT3JkZXJlZElkZW50aWZpZXJTZXQmIHJlcXVlc3RlZE1vZHVsZXMoKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVlc3RlZE1vZHVsZXM7IH0KICAgICBjb25zdCBFeHBvcnRNYXAmIGV4cG9ydEVu
dHJpZXMoKSBjb25zdCB7IHJldHVybiBtX2V4cG9ydEVudHJpZXM7IH0KICAgICBjb25zdCBJbXBv
cnRNYXAmIGltcG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVybiBtX2ltcG9ydEVudHJpZXM7IH0K
KyAgICBjb25zdCBJZGVudGlmaWVyU2V0JiBzdGFyRXhwb3J0RW50cmllcygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhckV4cG9ydEVudHJpZXM7IH0KIAogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQmIGRlY2xhcmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9kZWNsYXJlZFZhcmlhYmxl
czsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMoKSBj
b25zdCB7IHJldHVybiBtX2xleGljYWxWYXJpYWJsZXM7IH0KIAogICAgIHZvaWQgZHVtcCgpOwog
CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fbW9kdWxlRW52aXJvbm1lbnQpOworICAgICAgICByZXR1cm4gbV9tb2R1
bGVFbnZpcm9ubWVudC5nZXQoKTsKKyAgICB9CiAKICAgICB2b2lkIGxpbmsoRXhlY1N0YXRlKik7
CiAgICAgSlNWYWx1ZSBleGVjdXRlKEV4ZWNTdGF0ZSopOwogCisgICAgc3RydWN0IFJlc29sdXRp
b24geworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBSZXNvbHZlZCwgTm90Rm91bmQsIEFtYmln
dW91cywgRXJyb3IgfTsKKworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIEpTTW9kdWxlUmVj
b3JkKiBtb2R1bGVSZWNvcmQ7CisgICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOworICAgIH07
CisKKyAgICBSZXNvbHV0aW9uIHJlc29sdmVFeHBvcnQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgZXhwb3J0TmFtZSk7CisgICAgUmVzb2x1dGlvbiByZXNvbHZlSW1wb3J0KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSk7CisKKyAgICBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSogbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmdldCgpOyB9CisKKyAgICBzaXplX3QgbGlua01vZHVsZShFeGVj
U3RhdGUqLCBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWQpOworCisgICAgSlNNb2R1bGVSZWNvcmQq
IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
bW9kdWxlTmFtZSk7CisKIHByaXZhdGU6CiAgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZh
cmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAg
ICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCkBAIC0xMjksMTAgKzE1MiwxMiBAQCBjbGFzcyBK
U01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJik7CiAKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogZ2V0
TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0ZSopOworCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKLSAgICBKU01vZHVsZVJlY29yZCogaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKyAgICB2b2lkIGluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSosIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKik7
CiAKICAgICAvLyBUaGUgbG9hZGVyIHJlc29sdmVzIHRoZSBnaXZlbiBtb2R1bGUgbmFtZSB0byB0
aGUgbW9kdWxlIGtleS4gVGhlIG1vZHVsZSBrZXkgaXMgdGhlIHVuaXF1ZSB2YWx1ZSB0byByZXBy
ZXNlbnQgdGhpcyBtb2R1bGUuCiAgICAgSWRlbnRpZmllciBtX21vZHVsZUtleTsKQEAgLTE1NCw3
ICsxNzksMTQgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVP
YmplY3QgewogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2
Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9uCiAgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9y
ZXF1ZXN0ZWRNb2R1bGVzOwogCisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlRW52aXJvbm1lbnQ+
IG1fbW9kdWxlRW52aXJvbm1lbnQ7CisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdDsKKyAgICBXcml0ZUJhcnJpZXI8TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU+IG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgV3JpdGVC
YXJyaWVyPEpTTWFwPiBtX2RlcGVuZGVuY2llc01hcDsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxK
U01vZHVsZUVudmlyb25tZW50Kiwgc2l6ZV90PiBMaW5rZWRNb2R1bGVNYXA7CisgICAgTGlua2Vk
TW9kdWxlTWFwIG1fbGlua2VkTW9kdWxlTWFwOworICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5r
bm93bj4+IG1fbGlua2VkTW9kdWxlczsKIH07CiAKIGlubGluZSB2b2lkIEpTTW9kdWxlUmVjb3Jk
OjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggYmIyZWZkZDA2MzFj
ZDE4ZWE5NzU0MjY3NGEyY2U3MTgxNTA3MmM4Zi4uMGJlYzBkODYxYTc0OGRkNzgwNTRlZTlmMjkz
YWNiOWUyYjMyYzFkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5j
cHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25t
ZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJKU1dpdGhTY29w
ZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIApAQCAtNjUsNiArNjcsMjEgQEAgc3RhdGlj
IGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIGNvbnN0IElkZW50aWYKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAK
KyAgICAgICAgaWYgKEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0ganNE
eW5hbWljQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oc2NvcGUpKSB7CisgICAgICAgICAgICBK
U01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gbW9kdWxlRW52aXJvbm1lbnQtPm1vZHVsZVJl
Y29yZCgpOworICAgICAgICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gbW9kdWxlUmVjb3Jk
LT5yZXNvbHZlSW1wb3J0KGV4ZWMsIGlkZW50KTsKKyAgICAgICAgICAgIGlmIChyZXNvbHV0aW9u
LnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7Cisg
ICAgICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkUmVjb3JkID0gcmVzb2x1dGlv
bi5tb2R1bGVSZWNvcmQ7CisgICAgICAgICAgICAgICAgbW9kdWxlUmVjb3JkLT5saW5rTW9kdWxl
KGV4ZWMsIGltcG9ydGVkUmVjb3JkKTsKKyAgICAgICAgICAgICAgICBKU01vZHVsZUVudmlyb25t
ZW50KiBpbXBvcnRlZEVudmlyb25tZW50ID0gaW1wb3J0ZWRSZWNvcmQtPm1vZHVsZUVudmlyb25t
ZW50KCk7CisgICAgICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGltcG9ydGVk
RW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChyZXNvbHV0aW9uLmxvY2FsTmFtZS5pbXBs
KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOworICAgICAgICAg
ICAgICAgIC8vIE1vZHVsZSBleGVjdXRpb24gaXMgYWx3YXlzIGRvbmUgdW5kZXIgdGhlIHN0cmlj
dCBtb2RlLiBTbyB0aGVyZSBpcyBubyB3YXkgdG8gaW5qZWN0IHZhcmlhYmxlcy4KKyAgICAgICAg
ICAgICAgICBvcCA9IFJlc29sdmVPcChNb2R1bGVWYXIsIGRlcHRoLCAwLCBpbXBvcnRlZEVudmly
b25tZW50LCBlbnRyeS53YXRjaHBvaW50U2V0KCksIGVudHJ5LnNjb3BlT2Zmc2V0KCkub2Zmc2V0
KCksIHJlc29sdXRpb24ubG9jYWxOYW1lLmltcGwoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBpZiAobGV4aWNhbEVu
dmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT51c2VzTm9uU3RyaWN0RXZhbCgpKQogICAgICAgICAg
ICAgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MgPSB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yMzIsNiArMjQ5LDcgQEAgY29uc3QgY2hhciogcmVzb2x2ZVR5cGVOYW1lKFJlc29sdmVU
eXBlIHR5cGUpCiAgICAgICAgICJHbG9iYWxWYXIiLAogICAgICAgICAiQ2xvc3VyZVZhciIsCiAg
ICAgICAgICJMb2NhbENsb3N1cmVWYXIiLAorICAgICAgICAiTW9kdWxlVmFyIiwKICAgICAgICAg
Ikdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyIsCiAgICAgICAgICJHbG9iYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwKICAgICAgICAgIkNsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAppbmRl
eCBhNjUzMTY3NDkwZjY4MjIzZjUxMWRkMjg5MDg5MjlmYzQ2YTE5NzNjLi4wMjZhMjcxNGRjOGQ5
MjJhOTgyODg1ZTU0NmI1NzhiYTk2MzQ4MGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Njb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5oCkBAIC00NSw2ICs0NSw3IEBAIGVudW0gUmVzb2x2ZVR5cGUgewogICAgIEds
b2JhbFZhciwKICAgICBDbG9zdXJlVmFyLAogICAgIExvY2FsQ2xvc3VyZVZhciwKKyAgICBNb2R1
bGVWYXIsCiAKICAgICAvLyBEaXR0bywgYnV0IGF0IGxlYXN0IG9uZSBpbnRlcnZlbmluZyBzY29w
ZSB1c2VkIG5vbi1zdHJpY3QgZXZhbCwgd2hpY2gKICAgICAvLyBjYW4gaW5qZWN0IGFuIGludGVy
Y2VwdGluZyB2YXIgZGVsY2FyYXRpb24gYXQgcnVudGltZS4KQEAgLTcyLDYgKzczLDcgQEAgaW5s
aW5lIFJlc29sdmVUeXBlIG1ha2VUeXBlKFJlc29sdmVUeXBlIHR5cGUsIGJvb2wgbmVlZHNWYXJJ
bmplY3Rpb25DaGVja3MpCiAgICAgY2FzZSBDbG9zdXJlVmFyOgogICAgIGNhc2UgTG9jYWxDbG9z
dXJlVmFyOgogICAgICAgICByZXR1cm4gQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7
CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3M6CiAgICAgY2FzZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgog
ICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CkBAIC05MCw2ICs5Miw3
IEBAIGlubGluZSBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKFJlc29sdmVUeXBlIHR5cGUp
CiAgICAgY2FzZSBHbG9iYWxWYXI6CiAgICAgY2FzZSBDbG9zdXJlVmFyOgogICAgIGNhc2UgTG9j
YWxDbG9zdXJlVmFyOgorICAgIGNhc2UgTW9kdWxlVmFyOgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgY2Fz
ZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgpAQCAtMTAzLDEzICsxMDYsMTQgQEAg
aW5saW5lIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MoUmVzb2x2ZVR5cGUgdHlwZSkKIH0K
IAogc3RydWN0IFJlc29sdmVPcCB7Ci0gICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNp
emVfdCBkZXB0aCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTGV4aWNhbEVudmlyb25tZW50KiBs
ZXhpY2FsRW52aXJvbm1lbnQsIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRwdHJf
dCBvcGVyYW5kKQorICAgIFJlc29sdmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXplX3QgZGVwdGgs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmly
b25tZW50LCBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0LCB1aW50cHRyX3Qgb3BlcmFuZCwg
VW5pcXVlZFN0cmluZ0ltcGwqIGltcG9ydGVkTmFtZSA9IG51bGxwdHIpCiAgICAgICAgIDogdHlw
ZSh0eXBlKQogICAgICAgICAsIGRlcHRoKGRlcHRoKQogICAgICAgICAsIHN0cnVjdHVyZShzdHJ1
Y3R1cmUpCiAgICAgICAgICwgbGV4aWNhbEVudmlyb25tZW50KGxleGljYWxFbnZpcm9ubWVudCkK
ICAgICAgICAgLCB3YXRjaHBvaW50U2V0KHdhdGNocG9pbnRTZXQpCiAgICAgICAgICwgb3BlcmFu
ZChvcGVyYW5kKQorICAgICAgICAsIGltcG9ydGVkTmFtZShpbXBvcnRlZE5hbWUpCiAgICAgewog
ICAgIH0KIApAQCAtMTE5LDYgKzEyMyw3IEBAIHN0cnVjdCBSZXNvbHZlT3AgewogICAgIEpTTGV4
aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQ7CiAgICAgV2F0Y2hwb2ludFNldCog
d2F0Y2hwb2ludFNldDsKICAgICB1aW50cHRyX3Qgb3BlcmFuZDsKKyAgICBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+IGltcG9ydGVkTmFtZTsKIH07CiAKIGNsYXNzIFJlc29sdmVNb2RlQW5kVHlw
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDE1OTZlNjU4NGM4
YWViOGI3YzBjY2I0ZGEzMDMwMjAwOThlNjk1ZmYuLjExMGY4YjVhYzlkYjcxZDMzMTY3ZDg1OWIy
ZDQ2OWYzZTdhNWZhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBA
IC00MSwxMSArNDEsMTMgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKIAogICAgIEV2YWxFeGVj
dXRhYmxlVHlwZSwKICAgICBQcm9ncmFtRXhlY3V0YWJsZVR5cGUsCisgICAgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGVUeXBlLAogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsCiAgICAgV2ViQXNz
ZW1ibHlFeGVjdXRhYmxlVHlwZSwKIAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlVHlw
ZSwKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2tUeXBlLAorICAgIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9ja1R5cGUsCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrVHlwZSwKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrVHlwZSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggZTY3ZmEzODVi
ZmY3NzFjNGUzZDhhMmQ3OTExN2IxM2E1NzIzOGVhMS4uNmU2ZjlmOWE2ZGE2MTgxMmUzYzIxYWQ0
MzY2ZmQ4N2I3Y2QxNDdkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
SlNJbnRlcm5hbFByb21pc2UuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZURlZmVycmVk
LmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5o
IgogI2luY2x1ZGUgIk5vZGVzLmgiCkBAIC0yNzQsNiArMjc1LDkgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRp
YXRpb24oRXgKICAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtsaW5rXSAiLCBtb2R1bGVSZWNvcmQt
Pm1vZHVsZUtleSgpLCAiXG4iKTsKIAogICAgIG1vZHVsZVJlY29yZC0+bGluayhleGVjKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOTYyZGM1
MmRkZDY3ZWM2OTllMTBhYzY5MmRhMDU5NDEyNzFmMzJjMy4uODI3YmIzNjhhZDgxZTM1ZjU0N2Nh
MWIxNzc3MzRjYWI1ODNkMzNiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApA
QCAtMjI1LDYgKzIyNSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgd2ViQXNzZW1ibHlFeGVjdXRhYmxlU3Ry
dWN0dXJlLnNldCgqdGhpcywgV2ViQXNzZW1ibHlFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAjZW5kaWYKKyAgICBtb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcmVnRXhwU3RydWN0dXJlLnNldCgqdGhp
cywgUmVnRXhwOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3lt
Ym9sU3RydWN0dXJlLnNldCgqdGhpcywgU3ltYm9sOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgc3ltYm9sVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTeW1ib2xU
YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpAQCAtMjM2LDYgKzIz
Nyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICB1bmxp
bmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZFByb2dyYW1D
b2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxp
bmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEV2YWxDb2RlQmxv
Y2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIHVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIHByb3BlcnR5VGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQcm9wZXJ0eVRhYmxlOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgd2Vha01hcERhdGFTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBXZWFrTWFwRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIGluZmVycmVkVmFsdWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFZh
bHVlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAppbmRleCBjNGU4MDM3OWU4YzIzOTIyYmZiNjgzODMxZmVjMTNiNGMzYTY4
N2FhLi44NGE1MzVhYjdkMWRkYjRjYmQ2NmIzZGQ1OTg4YWU2MjlmN2Y5YTBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOworY2xhc3Mg
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwog
Y2xhc3MgVk1FbnRyeVNjb3BlOwogY2xhc3MgV2F0Y2hkb2c7CkBAIC0yODIsNiArMjgzLDcgQEAg
Y2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlFeGVjdXRhYmxl
U3RydWN0dXJlOwogI2VuZGlmCisgICAgU3Ryb25nPFN0cnVjdHVyZT4gbW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcmVnRXhwU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN5bWJvbFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBzeW1ib2xUYWJsZVN0cnVjdHVyZTsKQEAgLTI5Myw2ICsyOTUsNyBAQCBjbGFzcyBW
TSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0
dXJlPiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gcHJvcGVydHlUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiB3ZWFrTWFwRGF0YVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFZh
bHVlU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21v
ZHVsZXMueWFtbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzLnlhbWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWI0NzhmMWY2NDQ5YTEyZmVlOGQ0YzYxZjUyOTAwYjVkMDg5YzVhZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzLnlhbWwKQEAg
LTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisj
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCistIHBhdGg6IG1v
ZHVsZXMKKyAgY21kOiBydW5Nb2R1bGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9jeWNsaWMtbWF5LXByb2R1Y2UtdGR6LmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvY3ljbGljLW1heS1wcm9kdWNlLXRkei5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMmJhZDYwYTVhYmY3YzU3MjJhMTYzYTA4NzU0MGZmNDNjZDhiYjliCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvY3ljbGljLW1heS1w
cm9kdWNlLXRkei5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCB7IENvY29hLCBDYXBwdWNjaW5v
LCBNYXRjaGEgfSBmcm9tICIuL2N5Y2xpYy1tYXktcHJvZHVjZS10ZHovMi5qcyIKK2ltcG9ydCB7
IHNob3VsZEJlIH0gZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIjsKKworLy8gQWxsIHRoaW5n
cyBhcmUgYWxyZWFkeSBzZXQuCitzaG91bGRCZShDb2NvYSwgIkNvY29hIik7CitzaG91bGRCZShD
YXBwdWNjaW5vLCAiQ2FwcHVjY2lubyIpOworc2hvdWxkQmUoTWF0Y2hhLCAiTWF0Y2hhIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9jeWNsaWMtbWF5
LXByb2R1Y2UtdGR6LzEuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9j
eWNsaWMtbWF5LXByb2R1Y2UtdGR6LzEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBjMjZmNjFiYjdhMGE2MDY0
ODgzNTNhMDZkYzY3YWQ0YTlkN2Q4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9tb2R1bGVzL2N5Y2xpYy1tYXktcHJvZHVjZS10ZHovMS5qcwpAQCAtMCww
ICsxLDEyIEBACitpbXBvcnQgeyBDYXBwdWNjaW5vLCBNYXRjaGEgfSBmcm9tICIuLzIuanMiCitp
bXBvcnQgeyBzaG91bGRUaHJvdywgc2hvdWxkQmUgfSBmcm9tICIuLi9yZXNvdXJjZXMvYXNzZXJ0
LmpzIjsKKworZXhwb3J0IGxldCBDb2NvYSA9ICJDb2NvYSI7CisKKy8vIG1vZHVsZSAiMiIgaXMg
bm90IGxvYWRlZCB5ZXQsIFREWi4KK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBDYXBwdWNjaW5v
OworfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFi
bGUuYCk7CisKKy8vIEJ1dCAiTWF0Y2hhIiBpcyB2YXJpYWJsZSAobm90IGxleGljYWwgdmFyaWFi
bGUpLiBJdCBpcyBhbHJlYWR5IGluaXRpYWxpemVkIGFzIHVuZGVmaW5lZC4KK3Nob3VsZEJlKE1h
dGNoYSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9tb2R1bGVzL2N5Y2xpYy1tYXktcHJvZHVjZS10ZHovMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9tb2R1bGVzL2N5Y2xpYy1tYXktcHJvZHVjZS10ZHovMi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMGYxNjM5YjViYWNkYTRmZmVlNDNjMGIzN2EwZjNlOGJhMTc1ZDRkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvY3ljbGljLW1heS1wcm9k
dWNlLXRkei8yLmpzCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCB7IENvY29hIH0gZnJvbSAiLi8x
LmpzIgoraW1wb3J0IHsgc2hvdWxkQmUgfSBmcm9tICIuLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIjsK
KworZXhwb3J0IGxldCBDYXBwdWNjaW5vID0gIkNhcHB1Y2Npbm8iOworCitleHBvcnQgdmFyIE1h
dGNoYSA9ICJNYXRjaGEiOworCisvLyAxIGlzIGFscmVhZHkgbG9hZGVkLgorc2hvdWxkQmUoQ29j
b2EsICJDb2NvYSIpOworCitzaG91bGRCZShDYXBwdWNjaW5vLCAiQ2FwcHVjY2lubyIpOworc2hv
dWxkQmUoTWF0Y2hhLCAiTWF0Y2hhIik7CisKKy8vIEluZGlyZWN0bHkgZXhwb3J0ICJDb2NvYSIK
K2V4cG9ydCB7IENvY29hIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvbW9kdWxlcy9kZWZhdWx0LWVycm9yL21haW4uanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvbW9kdWxlcy9kZWZhdWx0LWVycm9yL21haW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFhYjEzNTkx
ODM2NTU4MjY4OGY1ODhjMWE5ZTUzYjE3NTY0YjQyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2RlZmF1bHQtZXJyb3IvbWFpbi5qcwpAQCAt
MCwwICsxIEBACitpbXBvcnQgIkEiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmU1MjlkZDYxMThmMTBlNDVmODk2MDhkYmIyYzc0ZWFlYTlhZDgwYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRl
ci1jeWNsaWMuanMKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgIi4vZXhlY3V0aW9uLW9yZGVyLWN5
Y2xpYy8xMS5qcyIKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsK
K2lmIChnbG9iYWwuY291bnQgIT09IDExKQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVl
ICR7Z2xvYmFsLmNvdW50fWApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy8xLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy8xLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc5MGZkOGUzZmI4ZmViOGE1ZmU0ZTk2YjRjMzlmMTg1Mzk2ZGViMmEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3Jk
ZXItY3ljbGljLzEuanMKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgIi4vMTEuanMiCit2YXIgZ2xv
YmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKHR5cGVvZiBnbG9iYWwuY291
bnQgIT09ICd1bmRlZmluZWQnKQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xv
YmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvMTAuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGlj
LzEwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjlkY2U1ZDNiOWE2ZTlmZjNkNmE5Njg3NTA4MDZkMjA0YjdmNmIx
NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9leGVjdXRpb24tb3JkZXItY3ljbGljLzEwLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0ICIu
LzExLmpzIgoraW1wb3J0ICIuLzkuanMiCisKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVy
biB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9PSA5KQorICAgIHRocm93IG5ldyBFcnJv
cihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0gMTA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3Jk
ZXItY3ljbGljLzExLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhl
Y3V0aW9uLW9yZGVyLWN5Y2xpYy8xMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGYzY2VkYWUxODFmYjE5YzFi
OTU4NzQzNjg1NDk1YjdjM2YyM2U3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy8xMS5qcwpAQCAtMCww
ICsxLDcgQEAKK2ltcG9ydCAiLi8xMC5qcyIKK2ltcG9ydCAiLi80LmpzIgorCit2YXIgZ2xvYmFs
ID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gMTAp
CisgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9i
YWwuY291bnQgPSAxMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9t
b2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvMi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
ODY4ZTZmNmFmNjQ3YmNiMjE2MjFjZGFiMWFmNTYyNmZjOThjNWZkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5
Y2xpYy8yLmpzCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0ICIuLzExLmpzIgoraW1wb3J0ICIuLzku
anMiCitpbXBvcnQgIi4vNS5qcyIKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRo
aXMiKSkoKTsKK2lmIChnbG9iYWwuY291bnQgIT09IDEpCisgICAgdGhyb3cgbmV3IEVycm9yKGBi
YWQgdmFsdWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQgPSAyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5
Y2xpYy8zLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9u
LW9yZGVyLWN5Y2xpYy8zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczYzEwNTQwM2U4NTdhMmQ0NGFlNmExYjVi
MTM3YzJmMTE1OTNlOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzMuanMKQEAgLTAsMCArMSw3IEBA
CitpbXBvcnQgIi4vMS5qcyIKK2ltcG9ydCAiLi8yLmpzIgorCit2YXIgZ2xvYmFsID0gKEZ1bmN0
aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gMikKKyAgICB0aHJv
dyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9
IDM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVj
dXRpb24tb3JkZXItY3ljbGljLzQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9k
dWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZkMWE4OTE3MTU2
MGNhMzcwMDkwMjJlMmU1MDhjOTc3ZWRjNzZkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvNC5qcwpA
QCAtMCwwICsxLDYgQEAKK2ltcG9ydCAiLi8yLmpzIgorCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9u
KCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gMykKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRp
b24tb3JkZXItY3ljbGljLzUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9leGVjdXRpb24tb3JkZXItY3ljbGljLzUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFkZWVmOTJkMTJmNWFi
YzY4NmEzMThjMmJhYTQ5OGJmNjQ4MWU4ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvNS5qcwpAQCAt
MCwwICsxLDcgQEAKK2ltcG9ydCAiMy5qcyIKK2ltcG9ydCAiNC5qcyIKKwordmFyIGdsb2JhbCA9
IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK2lmIChnbG9iYWwuY291bnQgIT09IDQpCisg
ICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwu
Y291bnQgPSA1OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVs
ZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy82LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy82LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwNWM1
OTMxN2JmMWY1NzU2ODQzYWEwOWRjMWUxMGEwNjk4MGUyNGEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGlj
LzYuanMKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgIi4vNS5qcyIKK2ltcG9ydCAiLi85LmpzIgor
Cit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5j
b3VudCAhPT0gNSkKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3Vu
dH1gKTsKK2dsb2JhbC5jb3VudCA9IDY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzcuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzcuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmFlNmMwNTk5YTUxODk2ZTNiYmJkNjBjNTFiNmMzNzNiYjZmYTc5MAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlv
bi1vcmRlci1jeWNsaWMvNy5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCAiLi82LmpzIjsKK2lt
cG9ydCAiLi85LmpzIjsKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSko
KTsKK2lmIChnbG9iYWwuY291bnQgIT09IDYpCisgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFs
dWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQgPSA3OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy84
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVy
LWN5Y2xpYy84LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzYjBkYTVkZmIyZWRjM2Q0N2I2N2U5YWNiNzBjYzEy
NzhjZTI4MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzguanMKQEAgLTAsMCArMSw2IEBACitpbXBv
cnQgIi4vNy5qcyIKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsK
K2lmIChnbG9iYWwuY291bnQgIT09IDcpCisgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWUg
JHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQgPSA4OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy85Lmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5
Y2xpYy85LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3ZWNkYzllMjMyMzJkNWI2NWExN2QzZTlmYzcxMjA5OWQw
ZWI0ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9k
dWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzkuanMKQEAgLTAsMCArMSw4IEBACitpbXBvcnQg
Ii4vMTEuanMiOworaW1wb3J0ICIuLzguanMiOworaW1wb3J0ICIuLzYuanMiOworCit2YXIgZ2xv
YmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0g
OCkKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2ds
b2JhbC5jb3VudCA9IDk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGFnLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTdhYzdmZjlm
MmEzZmYyMmM2YmEwNWNkMzg4YWJiZGQ2M2I5MTczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy5qcwpAQCAt
MCwwICsxLDcgQEAKKy8vIFRoaXMgdGVzdHMgdGhlIERBRy4KK2ltcG9ydCAiLi9leGVjdXRpb24t
b3JkZXItZGFnLzkuanMiCitpbXBvcnQgIi4vZXhlY3V0aW9uLW9yZGVyLWRhZy8xMC5qcyIKKwor
dmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK2lmIChnbG9iYWwuY291
bnQgIT09IDEwKQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50
fWApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhl
Y3V0aW9uLW9yZGVyLWRhZy8xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVs
ZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy8xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiMWMzY2M1ZDBkNjNjMGMy
OTBlM2JlNjk1ZjFkZGU2ZjEzYjczYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGFnLzEuanMKQEAgLTAsMCAr
MSw0IEBACit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKHR5
cGVvZiBnbG9iYWwuY291bnQgIT09ICd1bmRlZmluZWQnKQorICAgIHRocm93IG5ldyBFcnJvcihg
YmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0gMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1k
YWcvMTAuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24t
b3JkZXItZGFnLzEwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyODA0OWRlNmVkNjYwYTVlZWZjMmRlYjdmMzg5
OTQ2ZTVkMTdhZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGFnLzEwLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1w
b3J0ICIuLzguanMiCitpbXBvcnQgIi4vNy5qcyIKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigi
cmV0dXJuIHRoaXMiKSkoKTsKK2lmIChnbG9iYWwuY291bnQgIT09IDkpCisgICAgdGhyb3cgbmV3
IEVycm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQgPSAxMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlv
bi1vcmRlci1kYWcvMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4
ZWN1dGlvbi1vcmRlci1kYWcvMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjUzYmQ4NTA3NjM5MjkwYjY0YjZh
ZDMyNjE1MmVjMTkzNDQ0ODA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy8yLmpzCkBAIC0wLDAgKzEsNiBA
QAoraW1wb3J0ICIuLzEuanMiOworCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhp
cyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gMSkKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGFn
LzMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3Jk
ZXItZGFnLzMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI1ZWI0ODY4YWUyMTAwODk5ZjA2OGJkOGJiMDYyMzdk
OGNkMWFlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9t
b2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvMy5qcwpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCAi
Li8yLmpzIjsKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK2lm
IChnbG9iYWwuY291bnQgIT09IDIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWUgJHtn
bG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQgPSAzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy80LmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy80Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjliZGFlNDlkOWQwMzlkMTZkMWM5YmNlZDNkYjI0YmIyZDViNTRjZDgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVj
dXRpb24tb3JkZXItZGFnLzQuanMKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgIi4vMS5qcyIKKwor
dmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK2lmIChnbG9iYWwuY291
bnQgIT09IDMpCisgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291bnR9
YCk7CitnbG9iYWwuY291bnQgPSA0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy81LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy81LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmEzM2I2M2NmNTRjYTdlNTkzYzNiYjcxYTA2OTdmNmI4NTk2M2JlYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXIt
ZGFnLzUuanMKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgIjQuanMiCitpbXBvcnQgIjEuanMiCisK
K3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNv
dW50ICE9PSA0KQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50
fWApOworZ2xvYmFsLmNvdW50ID0gNTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvNi5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvNi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NjEzZTcxMmI4Nzc5MGM2MWMzZmVmOWFlYTBiNGIxYmM5NDRlMjJlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVy
LWRhZy82LmpzCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0ICIuLzUuanMiCisKK3ZhciBnbG9iYWwg
PSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9PSA1KQor
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFs
LmNvdW50ID0gNjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1
bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvNy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvNy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjhlOWEwNjNm
NGU5NGFjNmQ4NmQwOGVjNmZhMjQxMmEyY2Y4ZGNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy83LmpzCkBA
IC0wLDAgKzEsNiBAQAoraW1wb3J0ICIuLzYuanMiOworCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9u
KCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gNikKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRp
b24tb3JkZXItZGFnLzguanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9l
eGVjdXRpb24tb3JkZXItZGFnLzguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNlM2I1ZjQ5OTIyODRhODkxY2Fh
YTRjYzNiYTA2NDYyZmI3Mjg3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvOC5qcwpAQCAtMCwwICsxLDcg
QEAKK2ltcG9ydCAiLi8zLmpzIgoraW1wb3J0ICIuLzcuanMiOworCit2YXIgZ2xvYmFsID0gKEZ1
bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gNykKKyAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3Vu
dCA9IDg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9l
eGVjdXRpb24tb3JkZXItZGFnLzkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9k
dWxlcy9leGVjdXRpb24tb3JkZXItZGFnLzkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjMyZTQyNWEyMmY4OTI1
NGVjMjE4OGI0MzAwMTI4NDA5MDA2MzNiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvOS5qcwpAQCAtMCww
ICsxLDYgQEAKK2ltcG9ydCAiLi84LmpzIjsKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0
dXJuIHRoaXMiKSkoKTsKK2lmIChnbG9iYWwuY291bnQgIT09IDgpCisgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQgPSA5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9y
ZGVyLWRlcHRoLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0
aW9uLW9yZGVyLWRlcHRoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyZTg5ZmQ4YjRjNDJjNDc5NDIzZWM5Yjlh
MjA1OTJhZDgxMjU4ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGVwdGguanMKQEAgLTAsMCArMSw1IEBACitp
bXBvcnQgIi4vZXhlY3V0aW9uLW9yZGVyLWRlcHRoLzMuanMiCisKK3ZhciBnbG9iYWwgPSAoRnVu
Y3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9PSAzKQorICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRlcHRo
LzEuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3Jk
ZXItZGVwdGgvMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjFjM2NjNWQwZDYzYzBjMjkwZTNiZTY5NWYxZGRl
NmYxM2I3M2EzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRlcHRoLzEuanMKQEAgLTAsMCArMSw0IEBACit2YXIg
Z2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKHR5cGVvZiBnbG9iYWwu
Y291bnQgIT09ICd1bmRlZmluZWQnKQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7
Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kZXB0aC8yLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRlcHRo
LzIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2Y1M2JkODUwNzYzOTI5MGI2NGI2YWQzMjYxNTJlYzE5MzQ0NDgw
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVz
L2V4ZWN1dGlvbi1vcmRlci1kZXB0aC8yLmpzCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0ICIuLzEu
anMiOworCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGds
b2JhbC5jb3VudCAhPT0gMSkKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2Jh
bC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGVwdGgvMy5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kZXB0aC8zLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIyNWViNDg2OGFlMjEwMDg5OWYwNjhiZDhiYjA2MjM3ZDhjZDFhZTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVj
dXRpb24tb3JkZXItZGVwdGgvMy5qcwpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCAiLi8yLmpzIjsK
KwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK2lmIChnbG9iYWwu
Y291bnQgIT09IDIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291
bnR9YCk7CitnbG9iYWwuY291bnQgPSAzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXNpYmxpbmcuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItc2libGluZy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45NTJlZGIxMDU0YTg3ZjJkMWI4Y2I5YjgyMzY0ODBiYWM5MmJkMDY0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9u
LW9yZGVyLXNpYmxpbmcuanMKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgIi4vZXhlY3V0aW9uLW9y
ZGVyLXNpYmxpbmcvMS5qcyIKK2ltcG9ydCAiLi9leGVjdXRpb24tb3JkZXItc2libGluZy8yLmpz
IgoraW1wb3J0ICIuL2V4ZWN1dGlvbi1vcmRlci1zaWJsaW5nLzMuanMiCisKK3ZhciBnbG9iYWwg
PSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9PSAzKQor
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVy
LXNpYmxpbmcvMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1
dGlvbi1vcmRlci1zaWJsaW5nLzEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIxYzNjYzVkMGQ2M2MwYzI5MGUz
YmU2OTVmMWRkZTZmMTNiNzNhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1zaWJsaW5nLzEuanMKQEAgLTAsMCAr
MSw0IEBACit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKHR5
cGVvZiBnbG9iYWwuY291bnQgIT09ICd1bmRlZmluZWQnKQorICAgIHRocm93IG5ldyBFcnJvcihg
YmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0gMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1z
aWJsaW5nLzIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRp
b24tb3JkZXItc2libGluZy8yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlY2U2NjE5NjQ2NjQ0NTFkZDNhODgz
YjA5NTc1YmEzYTEwNzlkNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItc2libGluZy8yLmpzCkBAIC0wLDAgKzEs
NCBAQAordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK2lmIChnbG9i
YWwuY291bnQgIT09IDEpCisgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwu
Y291bnR9YCk7CitnbG9iYWwuY291bnQgPSAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXNpYmxpbmcvMy5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1zaWJsaW5nLzMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDUwMGM1YjRlMTJmYzUyNjVmMjE2Y2E0ZGFjYjRiZjQyZjJiZWE5Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4
ZWN1dGlvbi1vcmRlci1zaWJsaW5nLzMuanMKQEAgLTAsMCArMSw0IEBACit2YXIgZ2xvYmFsID0g
KEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gMikKKyAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5j
b3VudCA9IDM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9leGVjdXRpb24tb3JkZXItdHJlZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9t
b2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10cmVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhOGFlNTkwYWYyNWFl
YmZkMThkNTM0M2NlOWQ0MzhmMjg0ZjFhNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS5qcwpAQCAtMCww
ICsxLDcgQEAKK2ltcG9ydCAiLi9leGVjdXRpb24tb3JkZXItdHJlZS81LmpzIgoraW1wb3J0ICIu
L2V4ZWN1dGlvbi1vcmRlci10cmVlLzcuanMiCitpbXBvcnQgIi4vZXhlY3V0aW9uLW9yZGVyLXRy
ZWUvMTEuanMiCisKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7Citp
ZiAoZ2xvYmFsLmNvdW50ICE9PSAxMSkKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAk
e2dsb2JhbC5jb3VudH1gKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10cmVlLzEuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS8xLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRi
MWMzY2M1ZDBkNjNjMGMyOTBlM2JlNjk1ZjFkZGU2ZjEzYjczYTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJl
ZS8xLmpzCkBAIC0wLDAgKzEsNCBAQAordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRo
aXMiKSkoKTsKK2lmICh0eXBlb2YgZ2xvYmFsLmNvdW50ICE9PSAndW5kZWZpbmVkJykKKyAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3Vu
dCA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9l
eGVjdXRpb24tb3JkZXItdHJlZS8xMC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9t
b2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10cmVlLzEwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5NmMzMjRkN2Ix
ZWE4YmNlMjZmYzdmYTUwNDRmMTBiOTkyMzAzNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS8xMC5qcwpA
QCAtMCwwICsxLDQgQEAKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7
CitpZiAoZ2xvYmFsLmNvdW50ICE9PSA5KQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVl
ICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0gMTA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS8xMS5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10
cmVlLzExLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0YmIyNTMzZjI1ZTYwN2E0OTkwZTg5NWEzNGVhZDMxZTlk
M2U4ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9k
dWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS8xMS5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCAi
Li85LmpzIjsKK2ltcG9ydCAiLi8xMC5qcyI7CisKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJl
dHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9PSAxMCkKKyAgICB0aHJvdyBuZXcg
RXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDExOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9u
LW9yZGVyLXRyZWUvMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4
ZWN1dGlvbi1vcmRlci10cmVlLzIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y1M2JkODUwNzYzOTI5MGI2NGI2
YWQzMjYxNTJlYzE5MzQ0NDgwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10cmVlLzIuanMKQEAgLTAsMCArMSw2
IEBACitpbXBvcnQgIi4vMS5qcyI7CisKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0
aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9PSAxKQorICAgIHRocm93IG5ldyBFcnJvcihg
YmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0gMjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10
cmVlLzMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24t
b3JkZXItdHJlZS8zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwNzljNjEyYWNhODU4Yzc1YTZhOGM0MjJjYzIw
MmYwZDQ0NDNmMjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS8zLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1w
b3J0ICIuLzEuanMiOworaW1wb3J0ICIuLzIuanMiOworCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9u
KCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gMikKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRp
b24tb3JkZXItdHJlZS80LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMv
ZXhlY3V0aW9uLW9yZGVyLXRyZWUvNC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzZiZWNiNjA1OWJmMDA3YmU1
Mjc5NmQwM2U0MTJiZDcxMDFlNjMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRyZWUvNC5qcwpAQCAtMCwwICsx
LDQgQEAKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xv
YmFsLmNvdW50ICE9PSAzKQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFs
LmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0gNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10cmVlLzUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS81LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmExZGVlZjkyZDEyZjVhYmM2ODZhMzE4YzJiYWE0OThiZjY0ODFlOGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRp
b24tb3JkZXItdHJlZS81LmpzCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0ICIzLmpzIgoraW1wb3J0
ICI0LmpzIgorCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYg
KGdsb2JhbC5jb3VudCAhPT0gNCkKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2ds
b2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS82LmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRyZWUvNi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMThkNDc0YzFhNjAwN2Q4MjYwNDg0ODk2ZGNiMDM1Mzc2Njk5NzdmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhl
Y3V0aW9uLW9yZGVyLXRyZWUvNi5qcwpAQCAtMCwwICsxLDQgQEAKK3ZhciBnbG9iYWwgPSAoRnVu
Y3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9PSA1KQorICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50
ID0gNjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4
ZWN1dGlvbi1vcmRlci10cmVlLzcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9k
dWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS83LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiOGU5YTA2M2Y0ZTk0
YWM2ZDg2ZDA4ZWM2ZmEyNDEyYTJjZjhkY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS83LmpzCkBAIC0w
LDAgKzEsNiBAQAoraW1wb3J0ICIuLzYuanMiOworCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJy
ZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gNikKKyAgICB0aHJvdyBuZXcg
RXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24t
b3JkZXItdHJlZS84LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhl
Y3V0aW9uLW9yZGVyLXRyZWUvOC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40N2M2ZjQ3MDMyNjNjNjczODczN2Nh
MDFlNjg1MmIyNmYwNjNkZWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRyZWUvOC5qcwpAQCAtMCwwICsxLDQg
QEAKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFs
LmNvdW50ICE9PSA3KQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNv
dW50fWApOworZ2xvYmFsLmNvdW50ID0gODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10cmVlLzkuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS85LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzMmU0MjVhMjJmODkyNTRlYzIxODhiNDMwMDEyODQwOTAwNjMzYmQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24t
b3JkZXItdHJlZS85LmpzCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0ICIuLzguanMiOworCit2YXIg
Z2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAh
PT0gOCkKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsK
K2dsb2JhbC5jb3VudCA9IDk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvbW9kdWxlcy9leHBvcnRlZC1mdW5jdGlvbi1tYXktYmUtY2FsbGVkLWJlZm9yZS1tb2R1bGUt
aXMtZXhlY3V0ZWQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leHBv
cnRlZC1mdW5jdGlvbi1tYXktYmUtY2FsbGVkLWJlZm9yZS1tb2R1bGUtaXMtZXhlY3V0ZWQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjMyODA0M2JjMmIzY2U1OTQ1N2I0YTg5Njc5YTE3N2M4ZDVjOWEzMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4cG9y
dGVkLWZ1bmN0aW9uLW1heS1iZS1jYWxsZWQtYmVmb3JlLW1vZHVsZS1pcy1leGVjdXRlZC5qcwpA
QCAtMCwwICsxIEBACitpbXBvcnQgIi4vZXhwb3J0ZWQtZnVuY3Rpb24tbWF5LWJlLWNhbGxlZC1i
ZWZvcmUtbW9kdWxlLWlzLWV4ZWN1dGVkLzIuanMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leHBvcnRlZC1mdW5jdGlvbi1tYXktYmUtY2FsbGVkLWJl
Zm9yZS1tb2R1bGUtaXMtZXhlY3V0ZWQvMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9tb2R1bGVzL2V4cG9ydGVkLWZ1bmN0aW9uLW1heS1iZS1jYWxsZWQtYmVmb3JlLW1vZHVsZS1p
cy1leGVjdXRlZC8xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNGI5NDI3ZjUxOGRlMmVlNzQ0MmJmY2NjNzVh
ZWI0NTY2ZWQyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvbW9kdWxlcy9leHBvcnRlZC1mdW5jdGlvbi1tYXktYmUtY2FsbGVkLWJlZm9yZS1tb2R1bGUt
aXMtZXhlY3V0ZWQvMS5qcwpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgeyBhZGQsIHJhaXNlIH0g
ZnJvbSAiLi8yLmpzIgoraW1wb3J0IHsgc2hvdWxkQmUsIHNob3VsZFRocm93IH0gZnJvbSAiLi4v
cmVzb3VyY2VzL2Fzc2VydC5qcyI7CisKK3Nob3VsZEJlKHR5cGVvZiBhZGQsICdmdW5jdGlvbicp
Oworc2hvdWxkQmUodHlwZW9mIHJhaXNlLCAnZnVuY3Rpb24nKTsKKworc2hvdWxkQmUoYWRkKDEw
LCAzMiksIDQyKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIC8vIGFkZCwgYW5kIHJhaXNl
IGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYW5kIGNhbiBiZSB1c2VkLgorICAgIC8vIEJ1dCBtb2R1
bGUgIjIiJ3MgYm9keSBpcyBub3QgZXhlY3V0ZWQgeWV0ISEhIQorICAgIC8vIHJhaXNlIGZ1bmN0
aW9uIHRvdWNoZXMgdGhlIGxleGljYWwgdmFyaWFibGUgaW4gdGhlIG1vZHVsZSAiMiIsIHNvIFRE
WgorICAgIC8vIGVycm9yIHNob3VsZCBiZSByYWlzZWQuCisgICAgcmFpc2UoKTsKK30sIGBSZWZl
cmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhwb3J0ZWQtZnVu
Y3Rpb24tbWF5LWJlLWNhbGxlZC1iZWZvcmUtbW9kdWxlLWlzLWV4ZWN1dGVkLzIuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leHBvcnRlZC1mdW5jdGlvbi1tYXktYmUt
Y2FsbGVkLWJlZm9yZS1tb2R1bGUtaXMtZXhlY3V0ZWQvMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWU1YzJi
NjRlMDk1YWM4N2VmNTlmNjBhODJjZTNjYjQyMzMzZmViCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhwb3J0ZWQtZnVuY3Rpb24tbWF5LWJl
LWNhbGxlZC1iZWZvcmUtbW9kdWxlLWlzLWV4ZWN1dGVkLzIuanMKQEAgLTAsMCArMSwxMyBAQAor
aW1wb3J0ICIuLzEuanMiCisKK2xldCB2YWx1ZSA9IDQyOworCitleHBvcnQgZnVuY3Rpb24gYWRk
KGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitleHBvcnQgZnVuY3Rpb24gcmFpc2Uo
KQoreworICAgIHJldHVybiB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9tb2R1bGVzL2ltcG9ydGVkLWJpbmRpbmdzLWFyZS1pbW11dGFibGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbXBvcnRlZC1iaW5kaW5ncy1hcmUt
aW1tdXRhYmxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5MGE3YjkwNTAwMzcyNzljMzgxMGY0OTE0MTk0OWM3
NTdlNTQ1MTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW9kdWxlcy9pbXBvcnRlZC1iaW5kaW5ncy1hcmUtaW1tdXRhYmxlLmpzCkBAIC0wLDAgKzEsMjcg
QEAKK2ltcG9ydCB7IHZhcmlhYmxlLCBjb25zdFZhcmlhYmxlLCBsZXRWYXJpYWJsZSwgZnVuY3Rp
b25EZWNsYXJhdGlvbiwgY2xhc3NEZWNsYXJhdGlvbiB9IGZyb20gIi4vaW1wb3J0ZWQtYmluZGlu
Z3MtYXJlLWltbXV0YWJsZS9iaW5kaW5ncy5qcyIKK2ltcG9ydCB7IHNob3VsZEJlLCBzaG91bGRU
aHJvdyB9IGZyb20gIi4vcmVzb3VyY2VzL2Fzc2VydC5qcyIKKworc2hvdWxkQmUodmFyaWFibGUs
ICdDb2NvYScpOworc2hvdWxkVGhyb3coKCkgPT4geworICAgIHZhcmlhYmxlID0gNDI7Cit9LCBg
VHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LmApOwor
CitzaG91bGRCZShjb25zdFZhcmlhYmxlLCAnQ29jb2EnKTsKK3Nob3VsZFRocm93KCgpID0+IHsK
KyAgICBjb25zdFZhcmlhYmxlID0gNDI7Cit9LCBgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNz
aWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LmApOworCitzaG91bGRCZShsZXRWYXJpYWJsZSwgJ0Nv
Y29hJyk7CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbGV0VmFyaWFibGUgPSA0MjsKK30sIGBU
eXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7CisK
K3Nob3VsZEJlKHR5cGVvZiBmdW5jdGlvbkRlY2xhcmF0aW9uLCAnZnVuY3Rpb24nKTsKK3Nob3Vs
ZFRocm93KCgpID0+IHsKKyAgICBmdW5jdGlvbkRlY2xhcmF0aW9uID0gNDI7Cit9LCBgVHlwZUVy
cm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LmApOworCitzaG91
bGRCZSh0eXBlb2YgY2xhc3NEZWNsYXJhdGlvbiwgJ2Z1bmN0aW9uJyk7CitzaG91bGRUaHJvdygo
KSA9PiB7CisgICAgY2xhc3NEZWNsYXJhdGlvbiA9IDQyOworfSwgYFR5cGVFcnJvcjogQXR0ZW1w
dGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS5gKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2ltcG9ydGVkLWJpbmRpbmdzLWFyZS1pbW11
dGFibGUvYmluZGluZ3MuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9p
bXBvcnRlZC1iaW5kaW5ncy1hcmUtaW1tdXRhYmxlL2JpbmRpbmdzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVk
NjQ1Y2RmOTVkZTE0N2RjYmU3OTRlYWFlYmM2YmMzOGI4YWUwZjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbXBvcnRlZC1iaW5kaW5ncy1h
cmUtaW1tdXRhYmxlL2JpbmRpbmdzLmpzCkBAIC0wLDAgKzEsMTEgQEAKK2V4cG9ydCB2YXIgdmFy
aWFibGUgPSAnQ29jb2EnOworCitleHBvcnQgY29uc3QgY29uc3RWYXJpYWJsZSA9ICdDb2NvYSc7
CisKK2V4cG9ydCBsZXQgbGV0VmFyaWFibGUgPSAnQ29jb2EnOworCitleHBvcnQgZnVuY3Rpb24g
ZnVuY3Rpb25EZWNsYXJhdGlvbigpIHsKK30KKworZXhwb3J0IGNsYXNzIGNsYXNzRGVjbGFyYXRp
b24geworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMv
aW1wb3J0ZWQtYmluZGluZ3MtY2FuLWJlLWNoYW5nZWQtaW4tb3JpZ2luYWwtbW9kdWxlLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW1wb3J0ZWQtYmluZGluZ3MtY2Fu
LWJlLWNoYW5nZWQtaW4tb3JpZ2luYWwtbW9kdWxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiOGI2YzQ4NDQ3
ZDI2YTQ5ZTg5YWE3YjA4NTUxMWIzOWRiZmFhMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbXBvcnRlZC1iaW5kaW5ncy1jYW4tYmUtY2hh
bmdlZC1pbi1vcmlnaW5hbC1tb2R1bGUuanMKQEAgLTAsMCArMSwxNyBAQAoraW1wb3J0IHsKKyAg
ICBDb2NvYSwKKyAgICBDYXBwdWNjaW5vLAorICAgIE1hdGNoYSwKKyAgICBNb2RpZmllcgorfSBm
cm9tICIuL2ltcG9ydGVkLWJpbmRpbmdzLWNhbi1iZS1jaGFuZ2VkLWluLW9yaWdpbmFsLW1vZHVs
ZS9iaW5kaW5ncy5qcyIKK2ltcG9ydCB7IHNob3VsZEJlLCBzaG91bGRUaHJvdyB9IGZyb20gIi4v
cmVzb3VyY2VzL2Fzc2VydC5qcyIKKworc2hvdWxkQmUoQ29jb2EsICJDb2NvYSIpOworc2hvdWxk
QmUoQ2FwcHVjY2lubywgIkNhcHB1Y2Npbm8iKTsKK3Nob3VsZEJlKE1hdGNoYSwgIk1hdGNoYSIp
OworCitNb2RpZmllci5jaGFuZ2UoIkNvY29hIik7CisKK3Nob3VsZEJlKENvY29hLCAiQ29jb2Ei
KTsKK3Nob3VsZEJlKENhcHB1Y2Npbm8sICJDb2NvYSIpOworc2hvdWxkQmUoTWF0Y2hhLCAiQ29j
b2EiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2lt
cG9ydGVkLWJpbmRpbmdzLWNhbi1iZS1jaGFuZ2VkLWluLW9yaWdpbmFsLW1vZHVsZS9iaW5kaW5n
cy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2ltcG9ydGVkLWJpbmRp
bmdzLWNhbi1iZS1jaGFuZ2VkLWluLW9yaWdpbmFsLW1vZHVsZS9iaW5kaW5ncy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MjQyODhjYzNjN2U2Y2Q5NGM2N2JlMjlkMzlkMzU4ZjM2NTlkNzEzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW1wb3J0ZWQtYmlu
ZGluZ3MtY2FuLWJlLWNoYW5nZWQtaW4tb3JpZ2luYWwtbW9kdWxlL2JpbmRpbmdzLmpzCkBAIC0w
LDAgKzEsMTYgQEAKK2xldCBDb2NvYSA9ICJDb2NvYSIsIENhcHB1Y2Npbm8gPSAiQ2FwcHVjY2lu
byIsIE1hdGNoYSA9ICJNYXRjaGEiOworCitleHBvcnQgbGV0IE1vZGlmaWVyID0geworICAgIGNo
YW5nZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIENvY29hID0gdmFsdWU7CisgICAgICAgIENhcHB1
Y2Npbm8gPSB2YWx1ZTsKKyAgICAgICAgTWF0Y2hhID0gdmFsdWU7CisgICAgfQorfTsKKworZXhw
b3J0IHsKKyAgICBDb2NvYSwKKyAgICBDYXBwdWNjaW5vLAorICAgIE1hdGNoYQorfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL21vZHVsZS1pcy1zdHJp
Y3QtY29kZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL21vZHVsZS1p
cy1zdHJpY3QtY29kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2MzYjMzZTcyMzM0NmFmNzJmNTk1OGRlY2Iw
ZDgxMzczNzk5ZjQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL21vZHVsZXMvbW9kdWxlLWlzLXN0cmljdC1jb2RlLmpzCkBAIC0wLDAgKzEsMTkgQEAKK2lt
cG9ydCB7IHNob3VsZFRocm93LCBzaG91bGRCZSB9IGZyb20gIi4vcmVzb3VyY2VzL2Fzc2VydC5q
cyI7CisKKy8vIE1vZHVsZSBjb2RlIGlzIGFsd2F5cyBzdHJpY3QgY29kZS4KK3Nob3VsZFRocm93
KCgpID0+IHsKKyAgICBldmFsKCJ3aXRoKHZhbHVlKSB7IH0iKTsKK30sIGBTeW50YXhFcnJvcjog
J3dpdGgnIHN0YXRlbWVudHMgYXJlIG5vdCB2YWxpZCBpbiBzdHJpY3QgbW9kZS5gKTsKKworLy8g
V2hlbiBjYWxsaW5nIHRoZSBpbmRpcmVjdCBldmFsIC8gRnVuY3Rpb24gY29uc3RydWN0b3IsIGl0
cyBzY29wZSBpcyBub3QgdGhlIG1vZHVsZSBzY29wZS4KK3ZhciBtb2R1bGVWYXJpYWJsZSA9IDQy
OworCitzaG91bGRCZShldmFsKCJtb2R1bGVWYXJpYWJsZSIpLCA0Mik7CisKK3Nob3VsZFRocm93
KCgpID0+IHsKKyAgICAoMCwgZXZhbCkoIm1vZHVsZVZhcmlhYmxlIik7Cit9LCBgUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IG1vZHVsZVZhcmlhYmxlYCk7CisKK3Nob3VsZFRo
cm93KCgpID0+IHsKKyAgICAoRnVuY3Rpb24oIm1vZHVsZVZhcmlhYmxlIikpKCk7Cit9LCBgUmVm
ZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IG1vZHVsZVZhcmlhYmxlYCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9yZXNvdXJjZXMvYXNz
ZXJ0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvcmVzb3VyY2VzL2Fz
c2VydC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMDA2Zjg0ZWJkZmEwMWVhYzE2NWQyZmEyZWQxNTFjYTdhNjRi
YWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVs
ZXMvcmVzb3VyY2VzL2Fzc2VydC5qcwpAQCAtMCwwICsxLDE5IEBACitleHBvcnQgZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1g
KTsKK30KKworZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkg
eworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7Cisg
ICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJy
b3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJy
b3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlm
IChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy90aGlzLXNob3VsZC1iZS11bmRlZmluZWQuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy90aGlzLXNob3VsZC1iZS11bmRl
ZmluZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODg0NTNlMmNmODY3MmY4ZGFlMzNjZDgwMTdmZjRiYWIzMTkx
YTZlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1
bGVzL3RoaXMtc2hvdWxkLWJlLXVuZGVmaW5lZC5qcwpAQCAtMCwwICsxLDMgQEAKK2ltcG9ydCB7
IHNob3VsZEJlIH0gZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIjsKKworc2hvdWxkQmUodGhp
cywgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4ZjJh
YzA5NTBlNmE5YmFiMTkzYWQwZThkMjYzMDlmMWM0ZDNlNjEwLi4zODc4NTBkNWE2Y2E2ZjRhOGQx
ODg2ZDYzODVhNzUxMmE1YjI4MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0xNDg1LDYgKzE0ODUsOCBAQCBTdHJpbmcgSW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIicp
OwogICAgIH0gZWxzZSBpZiAoZXhlY3V0YWJsZS0+aXNFdmFsRXhlY3V0YWJsZSgpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZXZhbCIpOworICAgIGVsc2UgaWYgKGV4ZWN1dGFibGUt
PmlzTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoIm1vZHVsZSIpOwogICAgIGVsc2UgaWYgKGV4ZWN1dGFibGUtPmlzUHJvZ3JhbUV4ZWN1dGFi
bGUoKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInByb2dyYW0iKTsKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggZjdhZjA0ZDNhM2RmNzdkNDQyODMwNjdjOTg0MzY4OTkxMGJjODZhMi4uYmQx
NDc3MjZjZmZiYmQ0NjJiZTg3NDYzMDI0MmQ3NzA5NGNhMDI0MCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA4
LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtF
UzZdIEltcGxlbWVudCBFUzYgTW9kdWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MzQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0czoKKyAg
ICAgICAgKHJ1bkpTQ1N0cmVzc1Rlc3RzKToKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3Ry
ZXNzLXRlc3RzOgorCiAyMDE1LTA4LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CiAKICAgICAgICAgTElDTSBzaG91bGQgYmUgc291bmQgZXZlbiBpZiB0aGUgQ0ZHIGhhcyBjaGFu
Z2VkCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyBi
L1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCmluZGV4IDQ5NDFkN2Y3YmU4
MGM0ZjA3OGI4YTBhYjlmODViNWRkZGExMWYxODcuLjJlNjkzNWFjYzQ5MTcwOTI1YTdkNWM0ZTdh
OWIxYzAxYTdlMDU5ZTIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRj
b3JlLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCkBA
IC0yODMsNyArMjgzLDggQEAgc3ViIHJ1bkpTQ1N0cmVzc1Rlc3RzCiAgICAgICAgICJQZXJmb3Jt
YW5jZVRlc3RzL1N1blNwaWRlci9wcm9maWxlci10ZXN0LnlhbWwiLAogICAgICAgICAiTGF5b3V0
VGVzdHMvanNjLWxheW91dC10ZXN0cy55YW1sIiwKICAgICAgICAgIlNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy90eXBlUHJvZmlsZXIueWFtbCIsCi0gICAgICAgICJTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvY29udHJvbEZsb3dQcm9maWxlci55YW1sIgorICAgICAgICAiU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIueWFtbCIsCisgICAgICAgICJT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy55YW1sIgogICAgICk7CiAgICAgaWYg
KGlzV2luZG93cygpICYmICFpc0N5Z3dpbigpKSB7CiAgICAgICAgIHNoaWZ0IEBqc2NTdHJlc3NE
cml2ZXJDbWQ7ICMgUmVtb3ZlIC91c3IvYmluL2VudgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy9ydW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVz
dHMKaW5kZXggODkyOWE1OTFhZjA1MzQ4YTAyNWM4NTEwMWIzNDUwZWMzYzQxMTE4Yi4uMmI3MTc4
OGIzOTdlN2M5ODBmNWEyYzBkNjkwN2U5NjUxNjZlODNjMCAxMDA3NTUKLS0tIGEvVG9vbHMvU2Ny
aXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3Ry
ZXNzLXRlc3RzCkBAIC04NzEsNiArODcxLDI4IEBAIGRlZiBydW5Db250cm9sRmxvd1Byb2ZpbGVy
CiAgICAgZW5kCiBlbmQKIAorZGVmIHJ1bk1vZHVsZXMKKyAgICBydW4oImRlZmF1bHQtbW9kdWxl
cyIsICItbSIpCisgICAgcnVuKCJhbHdheXMtdHJpZ2dlci1jb3B5LXBoYXNlLW1vZHVsZXMiLCAi
LW0iLCAiLS1taW5IZWFwVXRpbGl6YXRpb249Mi4wIiwgIi0tbWluQ29waWVkQmxvY2tVdGlsaXph
dGlvbj0yLjAiKQorCisgICAgaWYgISRqaXRUZXN0cworICAgICAgICByZXR1cm4KKyAgICBlbmQK
KworICAgIHJ1bigibm8tbGxpbnQtbW9kdWxlcyIsICItbSIsICItLXVzZUxMSW50PWZhbHNlIikK
KyAgICBydW4oIm5vLWNqaXQtdmFsaWRhdGUtcGhhc2VzLW1vZHVsZXMiLCAiLW0iLCAiLS12YWxp
ZGF0ZUJ5dGVjb2RlPXRydWUiLCAiLS12YWxpZGF0ZUdyYXBoQXRFYWNoUGhhc2U9dHJ1ZSIsICpO
T19DSklUX09QVElPTlMpCisgICAgcnVuKCJkZmctZWFnZXItbW9kdWxlcyIsICItbSIsICpFQUdF
Ul9PUFRJT05TKQorICAgIHJ1bigiZGZnLWVhZ2VyLW5vLWNqaXQtdmFsaWRhdGUtbW9kdWxlcyIs
ICItbSIsICItLXZhbGlkYXRlR3JhcGg9dHJ1ZSIsICooTk9fQ0pJVF9PUFRJT05TICsgRUFHRVJf
T1BUSU9OUykpCisgICAgaWYgJGVuYWJsZUZUTAorICAgICAgICBydW4oImRlZmF1bHQtZnRsLW1v
ZHVsZXMiLCAiLW0iLCAqRlRMX09QVElPTlMpCisgICAgICAgIHJ1bigiZnRsLW5vLWNqaXQtdmFs
aWRhdGUtbW9kdWxlcyIsICItbSIsICItLXZhbGlkYXRlR3JhcGg9dHJ1ZSIsICooRlRMX09QVElP
TlMgKyBOT19DSklUX09QVElPTlMpKQorICAgICAgICBydW4oImZ0bC1uby1jaml0LW5vLWlubGlu
ZS12YWxpZGF0ZS1tb2R1bGVzIiwgIi1tIiwgIi0tdmFsaWRhdGVHcmFwaD10cnVlIiwgIi0tbWF4
aW11bUlubGluaW5nRGVwdGg9MSIsICooRlRMX09QVElPTlMgKyBOT19DSklUX09QVElPTlMpKQor
ICAgICAgICBydW4oImZ0bC1lYWdlci1tb2R1bGVzIiwgIi1tIiwgKihGVExfT1BUSU9OUyArIEVB
R0VSX09QVElPTlMpKQorICAgICAgICBydW4oImZ0bC1lYWdlci1uby1jaml0LW1vZHVsZXMiLCAi
LW0iLCAiLS12YWxpZGF0ZUdyYXBoPXRydWUiLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJ
T05TICsgRUFHRVJfT1BUSU9OUykpCisgICAgICAgIHJ1bigiZnRsLW5vLWNqaXQtc21hbGwtcG9v
bC1tb2R1bGVzIiwgIi1tIiwgIi0taml0TWVtb3J5UmVzZXJ2YXRpb25TaXplPTUwMDAwIiwgKihG
VExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUykpCisgICAgZW5kCitlbmQKKwogZGVmIHJ1bkxh
eW91dFRlc3Qoa2luZCwgKm9wdGlvbnMpCiAgICAgcmFpc2UgdW5sZXNzICRiZW5jaG1hcmsudG9f
cyA9fiAvXC5qcyQvCiAgICAgdGVzdE5hbWUgPSAkfi5wcmVfbWF0Y2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>