<?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>230146</bug_id>
          
          <creation_ts>2021-09-10 05:07:22 -0700</creation_ts>
          <short_desc>Allow to subclass WritableStream</short_desc>
          <delta_ts>2021-10-15 02:48:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=231689</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>230208</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1792290</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-10 05:07:22 -0700</bug_when>
    <thetext>Allow to subclass WritableStream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792297</commentid>
    <comment_count>1</comment_count>
      <attachid>437853</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-10 05:36:42 -0700</bug_when>
    <thetext>Created attachment 437853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792304</commentid>
    <comment_count>2</comment_count>
      <attachid>437857</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-10 06:14:25 -0700</bug_when>
    <thetext>Created attachment 437857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792307</commentid>
    <comment_count>3</comment_count>
      <attachid>437859</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-10 06:20:10 -0700</bug_when>
    <thetext>Created attachment 437859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792308</commentid>
    <comment_count>4</comment_count>
      <attachid>437860</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-10 06:26:43 -0700</bug_when>
    <thetext>Created attachment 437860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792323</commentid>
    <comment_count>5</comment_count>
      <attachid>437865</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-10 07:11:40 -0700</bug_when>
    <thetext>Created attachment 437865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792394</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-10 09:29:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/82975733&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792431</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-10 10:22:08 -0700</bug_when>
    <thetext>Committed r282278 (241556@main): &lt;https://commits.webkit.org/241556@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437865.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792849</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-09-12 21:27:33 -0700</bug_when>
    <thetext>This change introduced a new assertion failure for WinCairo Debug WK2 test.
Filed : Bug 230208 – REGRESSION(r282278): ASSERTION FAILED: !m_needExceptionCheck in JSC::VM::verifyExceptionCheckNeedIsSatisfied</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437853</attachid>
            <date>2021-09-10 05:36:42 -0700</date>
            <delta_ts>2021-09-10 06:14:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230146-20210910143640.patch</filename>
            <type>text/plain</type>
            <size>71859</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzAwMTNiNDcxZTM3YjYx
NDI0MjIxYjhlMzE3NmI0NTBjMmY5NjM1NC4uY2Q2MTU0MTJhYTEwZmQzY2NhZTNjMWUyZTY5YTRh
N2M1YzZmNTFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTA5LTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0byBzdWJjbGFz
cyBXcml0YWJsZVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW50cm9kdWNlIGEgV2ViSURMLWJhc2VkIFdyaXRhYmxlU3RyZWFtIEMrKyBjbGFz
cy4KKyAgICAgICAgVG8ga2VlcCB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24sIHRoZSBwcmV2
aW91cyBKUyBXcml0YWJsZVN0cmVhbSBpbXBsZW1lbnRhdGlvbiBpcyB3cmFwcGVkIGFyb3VuZCBh
biBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtIEMrKyBjbGFzcworICAgICAgICB3aGljaCBpcyBhIHdy
YXBwZXIgYXJvdW5kIEpTLWJ1aWx0aW5zIG1hbmlwdWxhdGVkIG9iamVjdHMuCisgICAgICAgIElu
dGVybmFsV3JpdGFibGVTdHJlYW0gaXMgbWFkZSBET01HdWFyZGVkIHRvIGVuYWJsZSB0byBrZWVw
IGEgcmVmIHRvIHRoZSBKUyBvYmplY3QgZnJvbSBXcml0YWJsZVN0cmVhbS4KKworICAgICAgICBV
cGRhdGUgSlMgYnVpbHQtaW4gY29kZSB0byBtYW5hZ2UgaG9wcGluZyB0byB0aGUgSW50ZXJuYWxX
cml0YWJsZVN0cmVhbSBKUyBvYmplY3QgZnJvbSB0aGUgZXhwb3NlZCBXcml0YWJsZVN0cmVhbSBK
UyBvYmplY3QuCisgICAgICAgIFdlIGludHJvZHVjZSBnZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFt
IHJvdXRpbmUgZm9yIHRoYXQgcHVycG9zZS4KKworICAgICAgICBUcmFuc2l0aW9uIGV4aXN0aW5n
IFdyaXRhYmxlU3RyZWFtIHVzZXJzIHRvIHRoZSBuZXcgQysrIGNsYXNzLgorICAgICAgICBNaW5v
ciBjb2RlIGdlbmVyYXRvciBjaGFuZ2UgdG8gbWFrZSB1c2Ugb2YgdGhlIG5vdyBhdmFpbGFibGUg
SlNXcml0YWJsZVN0cmVhbS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGFuZCByZWJh
c2VkIHRlc3RzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBTRnJhbWVUcmFuc2Zvcm06OmlzQXR0YWNoZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6cmVhZGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwU0ZyYW1lVHJhbnNmb3JtOjp3cml0YWJsZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uanM6CisgICAgICAgIChwaXBlVGhyb3VnaCk6CisgICAgICAgICogTW9k
dWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbUludGVybmFscy5qczoKKyAgICAgICAgKGluaXRp
YWxpemVUcmFuc2Zvcm1TdHJlYW0pOgorICAgICAgICAodHJhbnNmb3JtU3RyZWFtRXJyb3JXcml0
YWJsZUFuZFVuYmxvY2tXcml0ZSk6CisgICAgICAgICh0cmFuc2Zvcm1TdHJlYW1EZWZhdWx0U2lu
a1dyaXRlQWxnb3JpdGhtKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJl
YW0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qczogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0V3Jp
dGVyLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlcik6
CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzOgor
ICAgICAgICAoaW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtU2xvdHMpOgorICAgICAgICAod3JpdGFi
bGVTdHJlYW1DbG9zZUZvckJpbmRpbmdzKToKKyAgICAgICAgKHdyaXRhYmxlU3RyZWFtQWJvcnRG
b3JCaW5kaW5ncyk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0ludGVybmFs
V3JpdGFibGVTdHJlYW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omludm9rZVdyaXRh
YmxlU3RyZWFtRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxXcml0YWJsZVN0
cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsV3JpdGFibGVTdHJlYW06
OmxvY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFdyaXRhYmxlU3RyZWFt
Ojpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsV3JpdGFibGVTdHJlYW06OmFib3J0
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsV3JpdGFibGVTdHJlYW06OmNsb3NlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsV3JpdGFibGVTdHJlYW06OmdldFdyaXRlcik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9i
YWxPYmplY3Q6OmFkZEJ1aWx0aW5HbG9iYWxzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmg6IFJl
bW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChBZGRUb0luY2x1ZGVzRm9ySURMVHlwZSk6CisKIDIwMjEtMDktMDkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpcmUgUlRDUGVlckNvbm5lY3Rp
b24uc2lnbmFsc3RhdGVjaGFuZ2UgYXMgcGVyIHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZDZkYjUwY2U5OTRlMWExMmQwMWU3
NWVhMGNhMjBkOWJjY2FhODE0MS4uNzQzZjUwZWUwYWVmNDFlNmFlYTI0OGZkYmNkMmFmOWI3MGVm
MDk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKQEAgLTI2NDMsNyArMjY0Myw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL1dlYktpdEZvbnRGYW1pbHlOYW1lcy5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dlYktpdEZvbnRGYW1pbHlOYW1lcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Xb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9ycy5pZGwKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dyaXRhYmxlU3RyZWFtQnVpbHRpbnMu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV3JpdGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlckJ1aWx0aW5z
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dyaXRhYmxl
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggNTA4MmQ3ZTczYWE1YWNjYjkwN2RiYTQ5ZWZjZDM3ZjA2NzAzM2M1Ny4uNTM0ZTljN2RkNGY0
NTg1M2I2NTE3NGI3NjMxMDk4ZjA3YjY2NjY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0xOTUyLDcgKzE5NTIsNiBAQCBXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvVHJhbnNmb3JtU3RyZWFtLmpzIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9UcmFuc2Zvcm1TdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5qcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvVHJhbnNmb3JtU3RyZWFtSW50
ZXJuYWxzLmpzIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVh
bS5qcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5qcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFi
bGVTdHJlYW1EZWZhdWx0V3JpdGVyLmpzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFt
cy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKaW5k
ZXggYzViYjdkOTc2NzUzYzFkNjk4ZmViZDFhOTU5YzUwNWIyYTlkMzMzYS4uMWJlYzdjMzE1YmU1
YzA3NTAzMjAwYjA1ZDk1M2NlMjE4OWIxODdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJ1ZmZlclNvdXJjZS5oIgog
I2luY2x1ZGUgIkpTUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaCIKICNpbmNsdWRlICJKU1JUQ0VuY29k
ZWRWaWRlb0ZyYW1lLmgiCisjaW5jbHVkZSAiSlNXcml0YWJsZVN0cmVhbVNpbmsuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaCIKICNpbmNs
dWRlICJSVENFbmNvZGVkVmlkZW9GcmFtZS5oIgpAQCAtNDMsNyArNDQsNiBAQAogI2luY2x1ZGUg
IlJlYWRhYmxlU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiV3JpdGFibGVTdHJlYW0uaCIKLSNpbmNsdWRlICJXcml0YWJsZVN0cmVhbVNpbmsuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC05OCw3ICs5OCw3IEBAIHVpbnQ2NF90IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6a2V5SWRG
b3JUZXN0aW5nKCkgY29uc3QKIAogYm9vbCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmlzQXR0YWNo
ZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX2lzQXR0YWNoZWQgfHwgKG1fcmVhZGFibGUgJiYg
bV9yZWFkYWJsZS0+aXNMb2NrZWQoKSkgfHwgKG1fd3JpdGFibGUgJiYgbV93cml0YWJsZS0+aXNM
b2NrZWQoKSk7CisgICAgcmV0dXJuIG1faXNBdHRhY2hlZCB8fCAobV9yZWFkYWJsZSAmJiBtX3Jl
YWRhYmxlLT5pc0xvY2tlZCgpKSB8fCAobV93cml0YWJsZSAmJiBtX3dyaXRhYmxlLT5sb2NrZWQo
KSk7CiB9CiAKIHN0YXRpYyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50OjpUeXBlIGVy
cm9yVHlwZUZyb21JbmZvcm1hdGlvbihjb25zdCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6RXJy
b3JJbmZvcm1hdGlvbiYgZXJyb3JJbmZvcm1hdGlvbikKQEAgLTIwOCwxNCArMjA4LDE4IEBAIHZv
aWQgdHJhbnNmb3JtRnJhbWUoRnJhbWUmIGZyYW1lLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0LCBSVENSdHBTRnJhbWVUCiAgICAgc291cmNlLmVucXVldWUodG9KUygmZ2xvYmFsT2Jq
ZWN0LCAmZ2xvYmFsT2JqZWN0LCBmcmFtZSkpOwogfQogCi12b2lkIFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybTo6Y3JlYXRlU3RyZWFtcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCitF
eGNlcHRpb25Pcjx2b2lkPiBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmNyZWF0ZVN0cmVhbXMoKQog
eworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA/IHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkgOiBudWxscHRyOworICAgIGlm
ICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKKwogICAgIG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBTaW1wbGVSZWFkYWJsZVN0
cmVhbVNvdXJjZTo6Y3JlYXRlKCk7Ci0gICAgYXV0byByZWFkYWJsZSA9IFJlYWRhYmxlU3RyZWFt
OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtX3JlYWRhYmxlU3RyZWFtU291cmNlLmNvcHlSZWYoKSk7
CisgICAgYXV0byByZWFkYWJsZSA9IFJlYWRhYmxlU3RyZWFtOjpjcmVhdGUoKmdsb2JhbE9iamVj
dCwgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS5jb3B5UmVmKCkpOwogICAgIGlmIChyZWFkYWJsZS5o
YXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gcmVhZGFibGUu
cmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgYXV0byB3cml0YWJsZSA9IFdyaXRhYmxlU3RyZWFt
OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBTaW1wbGVXcml0YWJsZVN0cmVhbVNpbms6OmNyZWF0ZShb
dHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCByZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG1fcmVh
ZGFibGVTdHJlYW1Tb3VyY2UsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGF1dG8mIGNv
bnRleHQsIGF1dG8gdmFsdWUpIC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsKKyAgICBhdXRvIHdyaXRh
YmxlID0gV3JpdGFibGVTdHJlYW06OmNyZWF0ZSgqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QpLCBTaW1wbGVXcml0YWJsZVN0cmVhbVNpbms6OmNyZWF0ZShbdHJh
bnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCByZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG1fcmVhZGFi
bGVTdHJlYW1Tb3VyY2UsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGF1dG8mIGNvbnRl
eHQsIGF1dG8gdmFsdWUpIC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsKICAgICAgICAgaWYgKCFjb250
ZXh0Lmdsb2JhbE9iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CiAgICAgICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGNvbnRleHQuZ2xvYmFsT2JqZWN0KCkpOwpAQCAtMjM4LDcg
KzI0Miw3IEBAIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJlYW1zKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
KSk7CiAgICAgaWYgKHdyaXRhYmxlLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB3cml0YWJsZS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKICAgICBtX3JlYWRh
YmxlID0gcmVhZGFibGUucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgbV93cml0YWJsZSA9IHdy
aXRhYmxlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwpAQCAtMjQ2LDM2ICsyNTAsMjYgQEAgdm9pZCBS
VENSdHBTRnJhbWVUcmFuc2Zvcm06OmNyZWF0ZVN0cmVhbXMoSlNDOjpKU0dsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogICAgICAgICBtX3JlYWRhYmxlLT5sb2NrKCk7CiAgICAgICAgIG1fd3Jp
dGFibGUtPmxvY2soKTsKICAgICB9CisgICAgcmV0dXJuIHsgfTsKIH0KIAogRXhjZXB0aW9uT3I8
UmVmUHRyPFJlYWRhYmxlU3RyZWFtPj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpyZWFkYWJsZSgp
CiB7Ci0gICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBp
ZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9OwotCi0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gY29udGV4dC0+Z2xvYmFsT2JqZWN0KCk7
Ci0gICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OwotCi0gICAgaWYgKCFtX3JlYWRhYmxlKQotICAgICAgICBjcmVhdGVT
dHJlYW1zKCpnbG9iYWxPYmplY3QpOwotCisgICAgaWYgKCFtX3JlYWRhYmxlKSB7CisgICAgICAg
IGF1dG8gcmVzdWx0ID0gY3JlYXRlU3RyZWFtcygpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7
CisgICAgfQogICAgIHJldHVybiBtX3JlYWRhYmxlLmNvcHlSZWYoKTsKIH0KIAogRXhjZXB0aW9u
T3I8UmVmUHRyPFdyaXRhYmxlU3RyZWFtPj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp3cml0YWJs
ZSgpCiB7Ci0gICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAg
ICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OwotCi0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gY29udGV4dC0+Z2xvYmFsT2JqZWN0
KCk7Ci0gICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciB9OwotCi0gICAgaWYgKCFtX3dyaXRhYmxlKQotICAgICAgICBjcmVh
dGVTdHJlYW1zKCpnbG9iYWxPYmplY3QpOworICAgIGlmICghbV93cml0YWJsZSkgeworICAgICAg
ICBhdXRvIHJlc3VsdCA9IGNyZWF0ZVN0cmVhbXMoKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigp
OworICAgIH0KIAogICAgIG1faGFzV3JpdGFibGUgPSB0cnVlOwogICAgIHJldHVybiBtX3dyaXRh
YmxlLmNvcHlSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCmluZGV4IGI1YTVlYmU0OTRhNjFkOTc4
MTg4MWJhZWEzNDE4ZjU1YmE3YjA5N2QuLjZkMTdiMGZhOGY3NGQ0ODY0MTRmNzMzNjM2NGQxZGFj
NmYzMzFjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRl
OgogCiAgICAgZW51bSBjbGFzcyBTaWRlIHsgU2VuZGVyLCBSZWNlaXZlciB9OwogICAgIHZvaWQg
aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmLCBTaWRlKTsKLSAg
ICB2b2lkIGNyZWF0ZVN0cmVhbXMoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IGNyZWF0ZVN0cmVhbXMoKTsKIAogICAgIGJvb2wgbV9pc0F0dGFjaGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1faGFzV3JpdGFibGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCmluZGV4IGM2ZGJkZjQxN2Fl
MTRmMTZlOWVlMThiOGU2YjMxYmNmY2Q3OTc0MTIuLjU5MWRhMGMzZGQ1NDNmZTJhMDdlOWJhNTZj
M2Q1Nzk1YTFlNWE4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uanMKQEAgLTEyMyw3ICsxMjMsOCBAQCBmdW5jdGlvbiBwaXBlVGhyb3Vn
aChzdHJlYW1zLCBvcHRpb25zKQogICAgICAgICAgICAgdGhyb3cgQG1ha2VUeXBlRXJyb3IoInJl
YWRhYmxlIHNob3VsZCBiZSBSZWFkYWJsZVN0cmVhbSIpOwogCiAgICAgICAgIGNvbnN0IHdyaXRh
YmxlID0gdHJhbnNmb3Jtc1sid3JpdGFibGUiXTsKLSAgICAgICAgaWYgKCFAaXNXcml0YWJsZVN0
cmVhbSh3cml0YWJsZSkpCisgICAgICAgIGNvbnN0IGludGVybmFsV3JpdGFibGUgPSBAZ2V0SW50
ZXJuYWxXcml0YWJsZVN0cmVhbSh3cml0YWJsZSk7CisgICAgICAgIGlmICghQGlzV3JpdGFibGVT
dHJlYW0oaW50ZXJuYWxXcml0YWJsZSkpCiAgICAgICAgICAgICB0aHJvdyBAbWFrZVR5cGVFcnJv
cigid3JpdGFibGUgc2hvdWxkIGJlIFdyaXRhYmxlU3RyZWFtIik7CiAKICAgICAgICAgbGV0IHBy
ZXZlbnRDbG9zZSA9IGZhbHNlOwpAQCAtMTQ5LDEwICsxNTAsMTAgQEAgZnVuY3Rpb24gcGlwZVRo
cm91Z2goc3RyZWFtcywgb3B0aW9ucykKICAgICAgICAgaWYgKEBpc1JlYWRhYmxlU3RyZWFtTG9j
a2VkKHRoaXMpKQogICAgICAgICAgICAgdGhyb3cgQG1ha2VUeXBlRXJyb3IoIlJlYWRhYmxlU3Ry
ZWFtIGlzIGxvY2tlZCIpOwogCi0gICAgICAgIGlmIChAaXNXcml0YWJsZVN0cmVhbUxvY2tlZCh3
cml0YWJsZSkpCisgICAgICAgIGlmIChAaXNXcml0YWJsZVN0cmVhbUxvY2tlZChpbnRlcm5hbFdy
aXRhYmxlKSkKICAgICAgICAgICAgIHRocm93IEBtYWtlVHlwZUVycm9yKCJXcml0YWJsZVN0cmVh
bSBpcyBsb2NrZWQiKTsKIAotICAgICAgICBAcmVhZGFibGVTdHJlYW1QaXBlVG9Xcml0YWJsZVN0
cmVhbSh0aGlzLCB3cml0YWJsZSwgcHJldmVudENsb3NlLCBwcmV2ZW50QWJvcnQsIHByZXZlbnRD
YW5jZWwsIHNpZ25hbCk7CisgICAgICAgIEByZWFkYWJsZVN0cmVhbVBpcGVUb1dyaXRhYmxlU3Ry
ZWFtKHRoaXMsIGludGVybmFsV3JpdGFibGUsIHByZXZlbnRDbG9zZSwgcHJldmVudEFib3J0LCBw
cmV2ZW50Q2FuY2VsLCBzaWduYWwpOwogCiAgICAgICAgIHJldHVybiByZWFkYWJsZTsKICAgICB9
CkBAIC0xOTYsNyArMTk3LDggQEAgZnVuY3Rpb24gcGlwZVRvKGRlc3RpbmF0aW9uKQogICAgICAg
ICAgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJvcHRpb25z
LnNpZ25hbCBtdXN0IGJlIEFib3J0U2lnbmFsIikpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KCFAaXNXcml0YWJsZVN0cmVhbShkZXN0aW5hdGlvbikpCisgICAgICAgIGNvbnN0IGludGVybmFs
RGVzdGluYXRpb24gPSBAZ2V0SW50ZXJuYWxXcml0YWJsZVN0cmVhbShkZXN0aW5hdGlvbik7Cisg
ICAgICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0oaW50ZXJuYWxEZXN0aW5hdGlvbikpCiAgICAg
ICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigiUmVhZGFibGVT
dHJlYW0gcGlwZVRvIHJlcXVpcmVzIGEgV3JpdGFibGVTdHJlYW0iKSk7CiAKICAgICAgICAgaWYg
KCFAaXNSZWFkYWJsZVN0cmVhbSh0aGlzKSkKQEAgLTIwNSwxMCArMjA3LDEwIEBAIGZ1bmN0aW9u
IHBpcGVUbyhkZXN0aW5hdGlvbikKICAgICAgICAgaWYgKEBpc1JlYWRhYmxlU3RyZWFtTG9ja2Vk
KHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJy
b3IoIlJlYWRhYmxlU3RyZWFtIGlzIGxvY2tlZCIpKTsKIAotICAgICAgICBpZiAoQGlzV3JpdGFi
bGVTdHJlYW1Mb2NrZWQoZGVzdGluYXRpb24pKQorICAgICAgICBpZiAoQGlzV3JpdGFibGVTdHJl
YW1Mb2NrZWQoaW50ZXJuYWxEZXN0aW5hdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gQFByb21p
c2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigiV3JpdGFibGVTdHJlYW0gaXMgbG9ja2VkIikpOwog
Ci0gICAgICAgIHJldHVybiBAcmVhZGFibGVTdHJlYW1QaXBlVG9Xcml0YWJsZVN0cmVhbSh0aGlz
LCBkZXN0aW5hdGlvbiwgcHJldmVudENsb3NlLCBwcmV2ZW50QWJvcnQsIHByZXZlbnRDYW5jZWws
IHNpZ25hbCk7CisgICAgICAgIHJldHVybiBAcmVhZGFibGVTdHJlYW1QaXBlVG9Xcml0YWJsZVN0
cmVhbSh0aGlzLCBpbnRlcm5hbERlc3RpbmF0aW9uLCBwcmV2ZW50Q2xvc2UsIHByZXZlbnRBYm9y
dCwgcHJldmVudENhbmNlbCwgc2lnbmFsKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogcmV3cml0
ZSBwaXBlVG8gc28gYXMgdG8gcmVxdWlyZSB0byBoYXZlICd0aGlzJyBhcyBhIFJlYWRhYmxlU3Ry
ZWFtIGFuZCBkZXN0aW5hdGlvbiBiZSBhIFdyaXRhYmxlU3RyZWFtLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbUludGVybmFscy5qcyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9UcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHMu
anMKaW5kZXggZDNkNjNjM2ZmZjE5MTZjMjFiODI2OWJlN2Q0M2VkYzdiZWFhMzM0NC4uNDI2M2Uz
OTkxYTkzYmI1MWY4YzZlMDFmOGRlODkyZGMyNmVmOWYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbUludGVybmFscy5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzLmpz
CkBAIC05NSw3ICs5NSwxMSBAQCBmdW5jdGlvbiBpbml0aWFsaXplVHJhbnNmb3JtU3RyZWFtKHN0
cmVhbSwgc3RhcnRQcm9taXNlLCB3cml0YWJsZUhpZ2hXYXRlck1hcmssCiAgICAgQHB1dEJ5SWRE
aXJlY3RQcml2YXRlKG9wdGlvbnMsICJoaWdoV2F0ZXJNYXJrIiwgcmVhZGFibGVIaWdoV2F0ZXJN
YXJrKTsKICAgICBjb25zdCByZWFkYWJsZSA9IG5ldyBAUmVhZGFibGVTdHJlYW0odW5kZXJseWlu
Z1NvdXJjZSwgb3B0aW9ucyk7CiAKKyAgICAvLyBUaGUgd3JpdGFibGUgdG8gZXhwb3NlIHRvIEpT
IHRocm91Z2ggd3JpdGFibGUgZ2V0dGVyLgogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShzdHJl
YW0sICJ3cml0YWJsZSIsIHdyaXRhYmxlKTsKKyAgICAvLyBUaGUgd3JpdGFibGUgdG8gdXNlIGZv
ciB0aGUgYWN0dWFsIHRyYW5zZm9ybSBhbGdvcml0aG1zLgorICAgIEBwdXRCeUlkRGlyZWN0UHJp
dmF0ZShzdHJlYW0sICJpbnRlcm5hbFdyaXRhYmxlIiwgQGdldEludGVybmFsV3JpdGFibGVTdHJl
YW0od3JpdGFibGUpKTsKKwogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShzdHJlYW0sICJyZWFk
YWJsZSIsIHJlYWRhYmxlKTsKICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAiYmFj
a3ByZXNzdXJlIiwgQHVuZGVmaW5lZCk7CiAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHN0cmVh
bSwgImJhY2twcmVzc3VyZUNoYW5nZVByb21pc2UiLCBAdW5kZWZpbmVkKTsKQEAgLTEyMSw3ICsx
MjUsNyBAQCBmdW5jdGlvbiB0cmFuc2Zvcm1TdHJlYW1FcnJvcldyaXRhYmxlQW5kVW5ibG9ja1dy
aXRlKHN0cmVhbSwgZSkKIAogICAgIEB0cmFuc2Zvcm1TdHJlYW1EZWZhdWx0Q29udHJvbGxlckNs
ZWFyQWxnb3JpdGhtcyhAZ2V0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAiY29udHJvbGxlciIp
KTsKIAotICAgIGNvbnN0IHdyaXRhYmxlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwg
IndyaXRhYmxlIik7CisgICAgY29uc3Qgd3JpdGFibGUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUo
c3RyZWFtLCAiaW50ZXJuYWxXcml0YWJsZSIpOwogICAgIEB3cml0YWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyRXJyb3JJZk5lZWRlZChAZ2V0QnlJZERpcmVjdFByaXZhdGUod3JpdGFibGUsICJj
b250cm9sbGVyIiksIGUpOwogCiAgICAgaWYgKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShzdHJlYW0s
ICJiYWNrcHJlc3N1cmUiKSkKQEAgLTI2Miw3ICsyNjYsNyBAQCBmdW5jdGlvbiB0cmFuc2Zvcm1T
dHJlYW1EZWZhdWx0U2lua1dyaXRlQWxnb3JpdGhtKHN0cmVhbSwgY2h1bmspCiB7CiAgICAgInVz
ZSBzdHJpY3QiOwogCi0gICAgY29uc3Qgd3JpdGFibGUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUo
c3RyZWFtLCAid3JpdGFibGUiKTsKKyAgICBjb25zdCB3cml0YWJsZSA9IEBnZXRCeUlkRGlyZWN0
UHJpdmF0ZShzdHJlYW0sICJpbnRlcm5hbFdyaXRhYmxlIik7CiAKICAgICBAYXNzZXJ0KEBnZXRC
eUlkRGlyZWN0UHJpdmF0ZSh3cml0YWJsZSwgInN0YXRlIikgPT09ICJ3cml0YWJsZSIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0u
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmlkbApp
bmRleCBkOWFlNjY5ZjFkYzlkNTZhMGJkMGEzN2ZkZWM2NmI5YzVlYTQwNDcxLi40ZjE4MDI3M2Nj
NDJhMzg1YTZiZjU3NGFkZTFmZWQwMzU3NzRjNmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5pZGwKQEAgLTEsNyArMSw3IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4KICAqIENvcHlyaWdodCAoQykgMjAxNSBJ
Z2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMxLDE1ICszMSwxNiBAQAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9V3JpdGFibGVT
dHJlYW1BUEksCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCi0gICAgSlNCdWlsdGluLAog
ICAgIFByaXZhdGVJZGVudGlmaWVyLAotICAgIFB1YmxpY0lkZW50aWZpZXIKKyAgICBQdWJsaWNJ
ZGVudGlmaWVyLAorICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCiBdIGludGVyZmFjZSBXcml0YWJs
ZVN0cmVhbSB7Ci0gICAgY29uc3RydWN0b3Iob3B0aW9uYWwgb2JqZWN0IHVuZGVybHlpbmdTaW5r
LCBvcHRpb25hbCBRdWV1aW5nU3RyYXRlZ3kgc3RyYXRlZ3kpOworICAgIC8vIEZJWE1FOiBUaWdo
dGVuIHBhcmFtZXRlciBtYXRjaGluZworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3RdIGNvbnN0
cnVjdG9yKG9wdGlvbmFsIG9iamVjdCB1bmRlcmx5aW5nU2luaywgb3B0aW9uYWwgb2JqZWN0IHN0
cmF0ZWd5KTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGxvY2tlZDsKIAotICAg
IFByb21pc2U8YW55PiBhYm9ydChvcHRpb25hbCBhbnkgcmVhc29uKTsKLSAgICBQcm9taXNlPGFu
eT4gY2xvc2UoKTsKLSAgICBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIgZ2V0V3JpdGVyKCk7
CisgICAgW0N1c3RvbSwgUmV0dXJuc093blByb21pc2VdIFByb21pc2U8YW55PiBhYm9ydChvcHRp
b25hbCBhbnkgcmVhc29uKTsKKyAgICBbQ3VzdG9tLCBSZXR1cm5zT3duUHJvbWlzZV0gUHJvbWlz
ZTxhbnk+IGNsb3NlKCk7CisgICAgW0N1c3RvbV0gV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVy
IGdldFdyaXRlcigpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9Xcml0YWJsZVN0cmVhbS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9X
cml0YWJsZVN0cmVhbS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg2ZjkyZjFj
MDI0N2JiMmU0NTkzNTAzNTU2NzY3OGJhZjlkM2YzYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3Jp
dGFibGVTdHJlYW0uanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlh
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIGlu
aXRpYWxpemVXcml0YWJsZVN0cmVhbSh1bmRlcmx5aW5nU2luaywgc3RyYXRlZ3kpCi17Ci0gICAg
InVzZSBzdHJpY3QiOwotCi0gICAgaWYgKHVuZGVybHlpbmdTaW5rID09PSBAdW5kZWZpbmVkKQot
ICAgICAgICB1bmRlcmx5aW5nU2luayA9IHsgfTsKLQotICAgIGlmIChzdHJhdGVneSA9PT0gQHVu
ZGVmaW5lZCkKLSAgICAgICAgc3RyYXRlZ3kgPSB7IH07Ci0KLSAgICBpZiAoIUBpc09iamVjdCh1
bmRlcmx5aW5nU2luaykpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigiV3JpdGFibGVTdHJlYW0g
Y29uc3RydWN0b3IgdGFrZXMgYW4gb2JqZWN0IGFzIGZpcnN0IGFyZ3VtZW50Iik7Ci0KLSAgICAv
LyBDcmVhdGVXcml0ZVN0cmVhbSBjb2RlIHBhdGguCi0gICAgaWYgKEBnZXRCeUlkRGlyZWN0UHJp
dmF0ZSh1bmRlcmx5aW5nU2luaywgIldyaXRhYmxlU3RyZWFtIikpIHsKLSAgICAgICAgQHByaXZh
dGVJbml0aWFsaXplV3JpdGFibGVTdHJlYW0odGhpcywgdW5kZXJseWluZ1NpbmspOwotCi0gICAg
ICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXIoKTsKLQotICAgICAgICBAc2V0VXBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKHRo
aXMsIGNvbnRyb2xsZXIsIHVuZGVybHlpbmdTaW5rLnN0YXJ0QWxnb3JpdGhtLCB1bmRlcmx5aW5n
U2luay53cml0ZUFsZ29yaXRobSwgdW5kZXJseWluZ1NpbmsuY2xvc2VBbGdvcml0aG0sIHVuZGVy
bHlpbmdTaW5rLmFib3J0QWxnb3JpdGhtLCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCBzdHJhdGVn
eS5zaXplQWxnb3JpdGhtKTsKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotCi0gICAgaWYg
KCJ0eXBlIiBpbiB1bmRlcmx5aW5nU2luaykKLSAgICAgICAgQHRocm93UmFuZ2VFcnJvcigiSW52
YWxpZCB0eXBlIGlzIHNwZWNpZmllZCIpOwotCi0gICAgY29uc3Qgc2l6ZUFsZ29yaXRobSA9IEBl
eHRyYWN0U2l6ZUFsZ29yaXRobShzdHJhdGVneSk7Ci0gICAgY29uc3QgaGlnaFdhdGVyTWFyayA9
IEBleHRyYWN0SGlnaFdhdGVyTWFyayhzdHJhdGVneSwgMSk7Ci0KLSAgICBjb25zdCB1bmRlcmx5
aW5nU2lua0RpY3QgPSB7IH07Ci0gICAgaWYgKCJzdGFydCIgaW4gdW5kZXJseWluZ1NpbmspIHsK
LSAgICAgICAgdW5kZXJseWluZ1NpbmtEaWN0WyJzdGFydCJdID0gdW5kZXJseWluZ1NpbmtbInN0
YXJ0Il07Ci0gICAgICAgIGlmICh0eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJzdGFydCJdICE9
PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5nU2lu
ay5zdGFydCBzaG91bGQgYmUgYSBmdW5jdGlvbiIpOwotICAgIH0KLSAgICBpZiAoIndyaXRlIiBp
biB1bmRlcmx5aW5nU2luaykgewotICAgICAgICB1bmRlcmx5aW5nU2lua0RpY3RbIndyaXRlIl0g
PSB1bmRlcmx5aW5nU2lua1sid3JpdGUiXTsKLSAgICAgICAgaWYgKHR5cGVvZiB1bmRlcmx5aW5n
U2lua0RpY3RbIndyaXRlIl0gIT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoInVuZGVybHlpbmdTaW5rLndyaXRlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7Ci0gICAg
fQotICAgIGlmICgiY2xvc2UiIGluIHVuZGVybHlpbmdTaW5rKSB7Ci0gICAgICAgIHVuZGVybHlp
bmdTaW5rRGljdFsiY2xvc2UiXSA9IHVuZGVybHlpbmdTaW5rWyJjbG9zZSJdOwotICAgICAgICBp
ZiAodHlwZW9mIHVuZGVybHlpbmdTaW5rRGljdFsiY2xvc2UiXSAhPT0gImZ1bmN0aW9uIikKLSAg
ICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigidW5kZXJseWluZ1NpbmsuY2xvc2Ugc2hvdWxkIGJl
IGEgZnVuY3Rpb24iKTsKLSAgICB9Ci0gICAgaWYgKCJhYm9ydCIgaW4gdW5kZXJseWluZ1Npbmsp
IHsKLSAgICAgICAgdW5kZXJseWluZ1NpbmtEaWN0WyJhYm9ydCJdID0gdW5kZXJseWluZ1Npbmtb
ImFib3J0Il07Ci0gICAgICAgIGlmICh0eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJhYm9ydCJd
ICE9PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5n
U2luay5hYm9ydCBzaG91bGQgYmUgYSBmdW5jdGlvbiIpOwotICAgIH0KLQotICAgIEBwcml2YXRl
SW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtKHRoaXMsIHVuZGVybHlpbmdTaW5rKTsKLSAgICBAc2V0
VXBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRnJvbVVuZGVybHlpbmdTaW5rKHRoaXMs
IHVuZGVybHlpbmdTaW5rLCB1bmRlcmx5aW5nU2lua0RpY3QsIGhpZ2hXYXRlck1hcmssIHNpemVB
bGdvcml0aG0pOwotCi0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLUBnZXR0ZXIKLWZ1bmN0aW9uIGxv
Y2tlZCgpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKCFAaXNXcml0YWJsZVN0cmVh
bSh0aGlzKSkKLSAgICAgICAgdGhyb3cgQG1ha2VUaGlzVHlwZUVycm9yKCJXcml0YWJsZVN0cmVh
bSIsICJsb2NrZWQiKTsKLQotICAgIHJldHVybiBAaXNXcml0YWJsZVN0cmVhbUxvY2tlZCh0aGlz
KTsKLX0KLQotZnVuY3Rpb24gYWJvcnQocmVhc29uKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQot
ICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0odGhpcykpCi0gICAgICAgIHJldHVybiBAUHJvbWlz
ZS5AcmVqZWN0KEBtYWtlVGhpc1R5cGVFcnJvcigiV3JpdGFibGVTdHJlYW0iLCAiYWJvcnQiKSk7
Ci0KLSAgICBpZiAoQGlzV3JpdGFibGVTdHJlYW1Mb2NrZWQodGhpcykpCi0gICAgICAgIHJldHVy
biBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbS5hYm9ydCBt
ZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBub24gbG9ja2VkIFdyaXRhYmxlU3RyZWFtIikpOwot
Ci0gICAgcmV0dXJuIEB3cml0YWJsZVN0cmVhbUFib3J0KHRoaXMsIHJlYXNvbik7Ci19Ci0KLWZ1
bmN0aW9uIGNsb3NlKCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoIUBpc1dyaXRh
YmxlU3RyZWFtKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVRo
aXNUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtIiwgImNsb3NlIikpOwotCi0gICAgaWYgKEBpc1dy
aXRhYmxlU3RyZWFtTG9ja2VkKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVj
dChAbWFrZVR5cGVFcnJvcigiV3JpdGFibGVTdHJlYW0uY2xvc2UgbWV0aG9kIGNhbiBvbmx5IGJl
IHVzZWQgb24gbm9uIGxvY2tlZCBXcml0YWJsZVN0cmVhbSIpKTsKLQotICAgIGlmIChAd3JpdGFi
bGVTdHJlYW1DbG9zZVF1ZXVlZE9ySW5GbGlnaHQodGhpcykpCi0gICAgICAgIHJldHVybiBAUHJv
bWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbS5jbG9zZSBtZXRob2Qg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBhIGJlaW5nIGNsb3NlIFdyaXRhYmxlU3RyZWFtIikpOwotCi0g
ICAgcmV0dXJuIEB3cml0YWJsZVN0cmVhbUNsb3NlKHRoaXMpOwotfQotCi1mdW5jdGlvbiBnZXRX
cml0ZXIoKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICghQGlzV3JpdGFibGVTdHJl
YW0odGhpcykpCi0gICAgICAgIHRocm93IEBtYWtlVGhpc1R5cGVFcnJvcigiV3JpdGFibGVTdHJl
YW0iLCAiZ2V0V3JpdGVyIik7Ci0KLSAgICByZXR1cm4gQGFjcXVpcmVXcml0YWJsZVN0cmVhbURl
ZmF1bHRXcml0ZXIodGhpcyk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyLmpzIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5qcwppbmRleCBlOWRj
OTcxMDU4M2M0OTU0MDYzN2ZhYWIxNzVhYjFkNmQxMDUyNzdiLi42OWE5NTNmYzNmMzllMmQxOGM0
N2IzNmY0YTEwYWE4ZGViNTgzYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIuanMKQEAgLTI3
LDYgKzI3LDEyIEBAIGZ1bmN0aW9uIGluaXRpYWxpemVXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0
ZXIoc3RyZWFtKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAorICAgIC8vIHN0cmVhbSBjYW4gYmUg
YSBXcml0YWJsZVN0cmVhbSBpZiBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIgY29uc3RydWN0
b3IgaXMgY2FsbGVkIGRpcmVjdGx5IGZyb20gSlMKKyAgICAvLyBvciBhbiBJbnRlcm5hbFdyaXRh
YmxlU3RyZWFtIGluIG90aGVyIGNvZGUgcGF0aHMuCisgICAgY29uc3QgaW50ZXJuYWxTdHJlYW0g
PSBAZ2V0SW50ZXJuYWxXcml0YWJsZVN0cmVhbShzdHJlYW0pOworICAgIGlmIChpbnRlcm5hbFN0
cmVhbSkKKyAgICAgICAgc3RyZWFtID0gaW50ZXJuYWxTdHJlYW07CisKICAgICBpZiAoIUBpc1dy
aXRhYmxlU3RyZWFtKHN0cmVhbSkpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiV3JpdGFibGVT
dHJlYW1EZWZhdWx0V3JpdGVyIGNvbnN0cnVjdG9yIHRha2VzIGEgV3JpdGFibGVTdHJlYW0iKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3Ry
ZWFtSW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxl
U3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IDY3MDUwNDYzZTFjMmU3NGQyNGMzMDYwMGNkN2QyZGVl
NWVkOGQzYzIuLjgyMjM4NDYxZWY2ZWY0ZTUyYTYyNGE3NjM5ZmM0NDIyYWI4ZDFmMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVy
bmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJl
YW1JbnRlcm5hbHMuanMKQEAgLTU3LDcgKzU3LDY2IEBAIGZ1bmN0aW9uIGNyZWF0ZVdyaXRhYmxl
U3RyZWFtKHN0YXJ0QWxnb3JpdGhtLCB3cml0ZUFsZ29yaXRobSwgY2xvc2VBbGdvcml0aG0sIGFi
CiAgICAgcmV0dXJuIG5ldyBAV3JpdGFibGVTdHJlYW0odW5kZXJseWluZ1NpbmssIHsgc2l6ZUFs
Z29yaXRobTogd3JpdGFibGVTaXplQWxnb3JpdGhtLCBoaWdoV2F0ZXJNYXJrOiB3cml0YWJsZUhp
Z2hXYXRlck1hcmsgfSk7CiB9CiAKLWZ1bmN0aW9uIHByaXZhdGVJbml0aWFsaXplV3JpdGFibGVT
dHJlYW0oc3RyZWFtLCB1bmRlcmx5aW5nU2luaykKK2Z1bmN0aW9uIGNyZWF0ZUludGVybmFsV3Jp
dGFibGVTdHJlYW0odW5kZXJseWluZ1NpbmssIHN0cmF0ZWd5KQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIGNvbnN0IHN0cmVhbSA9IHsgfTsKKworICAgIGlmICh1bmRlcmx5aW5nU2luayA9
PT0gQHVuZGVmaW5lZCkKKyAgICAgICAgdW5kZXJseWluZ1NpbmsgPSB7IH07CisKKyAgICBpZiAo
c3RyYXRlZ3kgPT09IEB1bmRlZmluZWQpCisgICAgICAgIHN0cmF0ZWd5ID0geyB9OworCisgICAg
aWYgKCFAaXNPYmplY3QodW5kZXJseWluZ1NpbmspKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
IldyaXRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHRha2VzIGFuIG9iamVjdCBhcyBmaXJzdCBhcmd1
bWVudCIpOworCisgICAgLy8gY3JlYXRlV3JpdGVTdHJlYW0gY29kZSBwYXRoLgorICAgIGlmIChA
Z2V0QnlJZERpcmVjdFByaXZhdGUodW5kZXJseWluZ1NpbmssICJXcml0YWJsZVN0cmVhbSIpKSB7
CisgICAgICAgIEBpbml0aWFsaXplV3JpdGFibGVTdHJlYW1TbG90cyhzdHJlYW0sIHVuZGVybHlp
bmdTaW5rKTsKKworICAgICAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEBXcml0YWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyKCk7CisKKyAgICAgICAgQHNldFVwV3JpdGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlcihzdHJlYW0sIGNvbnRyb2xsZXIsIHVuZGVybHlpbmdTaW5rLnN0YXJ0QWxn
b3JpdGhtLCB1bmRlcmx5aW5nU2luay53cml0ZUFsZ29yaXRobSwgdW5kZXJseWluZ1NpbmsuY2xv
c2VBbGdvcml0aG0sIHVuZGVybHlpbmdTaW5rLmFib3J0QWxnb3JpdGhtLCBzdHJhdGVneS5oaWdo
V2F0ZXJNYXJrLCBzdHJhdGVneS5zaXplQWxnb3JpdGhtKTsKKyAgICAgICAgcmV0dXJuIHN0cmVh
bTsKKyAgICB9CisKKyAgICBpZiAoInR5cGUiIGluIHVuZGVybHlpbmdTaW5rKQorICAgICAgICBA
dGhyb3dSYW5nZUVycm9yKCJJbnZhbGlkIHR5cGUgaXMgc3BlY2lmaWVkIik7CisKKyAgICBjb25z
dCBzaXplQWxnb3JpdGhtID0gQGV4dHJhY3RTaXplQWxnb3JpdGhtKHN0cmF0ZWd5KTsKKyAgICBj
b25zdCBoaWdoV2F0ZXJNYXJrID0gQGV4dHJhY3RIaWdoV2F0ZXJNYXJrKHN0cmF0ZWd5LCAxKTsK
KworICAgIGNvbnN0IHVuZGVybHlpbmdTaW5rRGljdCA9IHsgfTsKKyAgICBpZiAoInN0YXJ0IiBp
biB1bmRlcmx5aW5nU2luaykgeworICAgICAgICB1bmRlcmx5aW5nU2lua0RpY3RbInN0YXJ0Il0g
PSB1bmRlcmx5aW5nU2lua1sic3RhcnQiXTsKKyAgICAgICAgaWYgKHR5cGVvZiB1bmRlcmx5aW5n
U2lua0RpY3RbInN0YXJ0Il0gIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoInVuZGVybHlpbmdTaW5rLnN0YXJ0IHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7CisgICAg
fQorICAgIGlmICgid3JpdGUiIGluIHVuZGVybHlpbmdTaW5rKSB7CisgICAgICAgIHVuZGVybHlp
bmdTaW5rRGljdFsid3JpdGUiXSA9IHVuZGVybHlpbmdTaW5rWyJ3cml0ZSJdOworICAgICAgICBp
ZiAodHlwZW9mIHVuZGVybHlpbmdTaW5rRGljdFsid3JpdGUiXSAhPT0gImZ1bmN0aW9uIikKKyAg
ICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigidW5kZXJseWluZ1Npbmsud3JpdGUgc2hvdWxkIGJl
IGEgZnVuY3Rpb24iKTsKKyAgICB9CisgICAgaWYgKCJjbG9zZSIgaW4gdW5kZXJseWluZ1Npbmsp
IHsKKyAgICAgICAgdW5kZXJseWluZ1NpbmtEaWN0WyJjbG9zZSJdID0gdW5kZXJseWluZ1Npbmtb
ImNsb3NlIl07CisgICAgICAgIGlmICh0eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJjbG9zZSJd
ICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5n
U2luay5jbG9zZSBzaG91bGQgYmUgYSBmdW5jdGlvbiIpOworICAgIH0KKyAgICBpZiAoImFib3J0
IiBpbiB1bmRlcmx5aW5nU2luaykgeworICAgICAgICB1bmRlcmx5aW5nU2lua0RpY3RbImFib3J0
Il0gPSB1bmRlcmx5aW5nU2lua1siYWJvcnQiXTsKKyAgICAgICAgaWYgKHR5cGVvZiB1bmRlcmx5
aW5nU2lua0RpY3RbImFib3J0Il0gIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoInVuZGVybHlpbmdTaW5rLmFib3J0IHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7Cisg
ICAgfQorCisgICAgQGluaXRpYWxpemVXcml0YWJsZVN0cmVhbVNsb3RzKHN0cmVhbSwgdW5kZXJs
eWluZ1NpbmspOworICAgIEBzZXRVcFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJGcm9t
VW5kZXJseWluZ1Npbmsoc3RyZWFtLCB1bmRlcmx5aW5nU2luaywgdW5kZXJseWluZ1NpbmtEaWN0
LCBoaWdoV2F0ZXJNYXJrLCBzaXplQWxnb3JpdGhtKTsKKworICAgIHJldHVybiBzdHJlYW07Cit9
CisKK2Z1bmN0aW9uIGluaXRpYWxpemVXcml0YWJsZVN0cmVhbVNsb3RzKHN0cmVhbSwgdW5kZXJs
eWluZ1NpbmspCiB7CiAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgInN0YXRlIiwg
IndyaXRhYmxlIik7CiAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgInN0b3JlZEVy
cm9yIiwgQHVuZGVmaW5lZCk7CkBAIC03Miw2ICsxMzEsMjUgQEAgZnVuY3Rpb24gcHJpdmF0ZUlu
aXRpYWxpemVXcml0YWJsZVN0cmVhbShzdHJlYW0sIHVuZGVybHlpbmdTaW5rKQogICAgIEBwdXRC
eUlkRGlyZWN0UHJpdmF0ZShzdHJlYW0sICJ1bmRlcmx5aW5nU2luayIsIHVuZGVybHlpbmdTaW5r
KTsKIH0KIAorZnVuY3Rpb24gd3JpdGFibGVTdHJlYW1DbG9zZUZvckJpbmRpbmdzKHN0cmVhbSkK
K3sKKyAgICBpZiAoQGlzV3JpdGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKSkKKyAgICAgICAgcmV0
dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtLmNsb3Nl
IG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIG9uIG5vbiBsb2NrZWQgV3JpdGFibGVTdHJlYW0iKSk7
CisKKyAgICBpZiAoQHdyaXRhYmxlU3RyZWFtQ2xvc2VRdWV1ZWRPckluRmxpZ2h0KHN0cmVhbSkp
CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJXcml0YWJs
ZVN0cmVhbS5jbG9zZSBtZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBhIGJlaW5nIGNsb3NlIFdy
aXRhYmxlU3RyZWFtIikpOworCisgICAgcmV0dXJuIEB3cml0YWJsZVN0cmVhbUNsb3NlKHN0cmVh
bSk7Cit9CisKK2Z1bmN0aW9uIHdyaXRhYmxlU3RyZWFtQWJvcnRGb3JCaW5kaW5ncyhzdHJlYW0s
IHJlYXNvbikKK3sKKyAgICBpZiAoQGlzV3JpdGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKSkKKyAg
ICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIldyaXRhYmxlU3Ry
ZWFtLmFib3J0IG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIG9uIG5vbiBsb2NrZWQgV3JpdGFibGVT
dHJlYW0iKSk7CisKKyAgICByZXR1cm4gQHdyaXRhYmxlU3RyZWFtQWJvcnQoc3RyZWFtLCByZWFz
b24pOworfQorCiBmdW5jdGlvbiBpc1dyaXRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkKIHsKICAg
ICByZXR1cm4gQGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgIndyaXRlciIpICE9PSBAdW5k
ZWZpbmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBmZWZmOWQwNTlkZjhmYzNkOWIyOGM4MGY3YTA2MGVm
ZmM1NTgxM2U4Li4zODBjNjVkNTBkNmJjZDc0OTkyMGI2NTc1MTIzOTU3NDkxMjE3NTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtNDI3LDYgKzQyNyw3IEBAIGJpbmRpbmdzL2pzL0RPTUdDT3V0cHV0Q29u
c3RyYWludC5jcHAKIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKIGJpbmRpbmdzL2pz
L0dDQ29udHJvbGxlci5jcHAKIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCiti
aW5kaW5ncy9qcy9JbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmNwcAogYmluZGluZ3MvanMvSlNBYm9y
dFNpZ25hbEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTQWJzdHJhY3RSYW5nZUN1c3RvbS5jcHAK
IGJpbmRpbmdzL2pzL0pTQW5pbWF0aW9uRWZmZWN0Q3VzdG9tLmNwcApAQCAtNTcwLDcgKzU3MSw2
IEBAIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCiBiaW5kaW5ncy9qcy9XZWJD
b3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCiBiaW5kaW5ncy9qcy9Xb3JrZXJNb2R1bGVTY3Jp
cHRMb2FkZXIuY3BwCiBiaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5jcHAKLWJpbmRpbmdzL2pzL1dy
aXRhYmxlU3RyZWFtLmNwcAogYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCiBicmlkZ2UvTlBfanNv
YmplY3QuY3BwCiBicmlkZ2UvYy9DUnVudGltZU9iamVjdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYTU3YTFjMjVmYjk2
YjBiYjU2Y2M5OWFiMDY5ODE0NTUzY2EwMzM3Li4zYTg3MWU2NGM1NGE0MGY0YTJhZmFlZGIxYzIx
ODA4MDVmYmYwMDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMTE0LDcgKzExMTQsNiBAQAogCQk0MTZFNkZFODFCQkQxMkRG
MDAwQTYwNDMgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQw
MEI3M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU4MUJCRDEy
REYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBC
NzY0RTkgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBB
NjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVhZGFi
bGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1
aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkVDQUU1MjVC
NThDQzQwMEIzNERBNSAvKiBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkVDQUUzMjVCNThDQzQwMEIz
NERBNSAvKiBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFREJGNjI2MDBENjc5MDAwOTI2NzUg
LyogUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFREJGNDI2MDBENjc4MDAwOTI2NzUgLyogUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDE2RURDMDAyNjAwRTc4ODAwMDkyNjc1IC8qIFJUQ0RhdGFDaGFu
bmVsSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE2RURCRkYyNjAwRTc4NzAwMDkyNjc1IC8qIFJUQ0RhdGFDaGFubmVsSWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
MTk3LDYgKzExOTYsOCBAQAogCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RX
b3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RTFCMUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovOyB9OwogCQk0MUU2
N0E4MzI1RDE2ODQ3MDA3QjBBNEMgLyogU1RVTk1lc3NhZ2VQYXJzaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU2N0E4MTI1RDE2ODQ3MDA3QjBB
NEMgLyogU1RVTk1lc3NhZ2VQYXJzaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFFNkQ3MUIyNkVBMUE0NjAwQjc2NUQ2IC8qIFJUQ0Vycm9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI3QzA0
QjI2RTY5MTcxMDBEMzZDMDcgLyogUlRDRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUU2RDcyMzI2RUFBMDQ2MDBCNzY1RDYgLyogV3Jp
dGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRTZENzIxMjZFQUEwNDUwMEI3NjVENiAvKiBXcml0YWJsZVN0cmVhbS5oICovOyB9Owor
CQk0MUU2RDcyNDI2RUFBMDQ2MDBCNzY1RDYgLyogV3JpdGFibGVTdHJlYW0uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFNkQ3MjIyNkVBQTA0NjAw
Qjc2NUQ2IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCAqLzsgfTsKIAkJNDFFOURDRTcyMzE5NzRCRjAw
RjM1OTQ5IC8qIEJsb2JMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRTlEQ0U0MjMxOTczRkUwMEYzNTk0OSAvKiBCbG9iTG9hZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFFOURDRTky
MzE5Q0E3NjAwRjM1OTQ5IC8qIE5ldHdvcmtTZW5kUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTlEQ0U4MjMxOUNBNzUwMEYzNTk0OSAvKiBO
ZXR3b3JrU2VuZFF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDFGMDYyMTQwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRjA2MjEyMEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgg
Ki87IH07CkBAIC03ODMxLDggKzc4MzIsOCBAQAogCQk0MTQxODlGRjI1NjQxOEU3MDAzNjM0MTcg
LyogUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTQxOEEwMDI1NjQzNTk3MDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW1TaW5rLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXcml0YWJsZVN0cmVhbVNpbmsuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQxOEEwMjI1NjQzNTk4MDAzNjM0MTcgLyogV3JpdGFi
bGVTdHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxl
U3RyZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTQxOEEwMzI1NjQz
RTEyMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV3JpdGFibGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDMyNTY0M0UxMjAwMzYzNDE3IC8qIEludGVybmFs
V3JpdGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW50ZXJuYWxXcml0YWJsZVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxNDE4QTA0MjU2NDNFMTMwMDM2MzQxNyAvKiBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsV3JpdGFibGVTdHJlYW0uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0MThBMDUyNTY2NjBBRjAwMzYzNDE3IC8q
IFJUQ0VuY29kZWRGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSVENFbmNvZGVkRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQx
OEEwNjI1NjY2MEIwMDAzNjM0MTcgLyogUlRDRW5jb2RlZEZyYW1lLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0VuY29kZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTQ0NjBBMDI0MTI5OTQxMDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25JZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MTI5LDYgKzgxMzAsOCBA
QAogCQk0MUU1OTQwMTIxNDg2NUFCMDBEM0NCNjEgLyogUlRDUnRwRmVjUGFyYW1ldGVycy5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUlRDUnRwRmVjUGFyYW1ldGVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxRTY3QTdGMjVEMTY4NDYwMDdCMEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNpbmcuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1RVTk1lc3NhZ2VQYXJzaW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFNjdBODEyNUQxNjg0NzAwN0IwQTRD
IC8qIFNUVU5NZXNzYWdlUGFyc2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVFVOTWVzc2FnZVBhcnNpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFF
NkQ3MjEyNkVBQTA0NTAwQjc2NUQ2IC8qIFdyaXRhYmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxRTZENzIyMjZFQUEwNDYwMEI3NjVENiAvKiBXcml0YWJsZVN0cmVhbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0YWJsZVN0cmVhbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTlEQ0U0MjMxOTczRkUwMEYzNTk0OSAv
KiBCbG9iTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2JMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFOURDRTYyMzE5NzQyMzAwRjM1
OTQ5IC8qIEVuZGluZ1R5cGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVuZGluZ1R5cGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUU5RENFODIzMTlDQTc1MDBGMzU5
NDkgLyogTmV0d29ya1NlbmRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOZXR3b3JrU2VuZFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjI1
MCw3ICsxMjI1Myw2IEBACiAJCTk5MDhCMEVEMUJDQUNGOTEwMEVEMEY2NSAvKiBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTkwOEIwRUUxQkNBQ0Y5MTAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5Lmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQ291bnRRdWV1aW5nU3Ry
YXRlZ3kuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEVGMUJDQUNGOTEw
MEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNj
cmlwdDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk5OTA4QjBFRjFCQ0FDRjkxMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW0uanMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBXcml0YWJsZVN0cmVhbS5qczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjAxQkNBQ0Y5MTAwRUQwRjY1IC8qIFJl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmph
dmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGMDFCQ0FDRjkxMDBFRDNGNjQgLyogUmVh
ZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNj
cmlwdDsgcGF0aCA9IFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuanM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEYwMUJDQUNGOTEwMEVENTY3MiAvKiBSZWFkYWJsZVN0
cmVhbUJZT0JSZXF1ZXN0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEyMjY1LDcgKzEyMjY3LDYgQEAKIAkJOTkwOEIwRjYxQkNBRDA3RDAwRUQwRjY1IC8q
IENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHA7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5OTA4QjBGNzFCQ0FEMDdEMDBF
RDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmg7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTkwOEIwRjkxQkNBRDA3RDAwRUQw
RjY1IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gUmVhZGFibGVTdHJlYW1CdWlsdGlucy5jcHA7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL1JlYWRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQk5OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNzUgLyogV3Jp
dGFibGVTdHJlYW1CdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTk5MDhCMEZBMUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmNwcDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlckJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
OTkwOEIwRkIxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXJCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmg7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5MDhCMEZEMUJDQUQwN0QwMEVEMEY1NSAv
KiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHA7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL1N0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTEyMzA1LDcgKzEyMzA2LDYgQEAKIAkJOUIwM0Q4MDYx
QkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9SZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBS
ZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0
REEgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2
NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9Xcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRFOSAvKiBXcml0YWJsZVN0cmVh
bUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdy
aXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RUEgLyogVHJhbnNm
b3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOUIwOThCRDUxRjNENjAzMzAwMkRENTYy
IC8qIERhdGFUcmFuc2Zlckl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGF0YVRyYW5zZmVySXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xOTY1MCw4ICsxOTY1MCw5IEBACiAJCQkJNDFGQ0E1RkEyNEVBQUYxNjAwNUUxQkE2IC8qIFRy
YW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmlkbCAqLywKIAkJCQk0MUZDQTVGQjI0RUFB
RjE2MDA1RTFCQTYgLyogVHJhbnNmb3JtU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgKi8sCiAJ
CQkJNDFGQ0E1RkMyNEVBQjc4MDAwNUUxQkE2IC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFscy5q
cyAqLywKKwkJCQk0MUU2RDcyMjI2RUFBMDQ2MDBCNzY1RDYgLyogV3JpdGFibGVTdHJlYW0uY3Bw
ICovLAorCQkJCTQxRTZENzIxMjZFQUEwNDUwMEI3NjVENiAvKiBXcml0YWJsZVN0cmVhbS5oICov
LAogCQkJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJERiAvKiBXcml0YWJsZVN0cmVhbS5pZGwgKi8s
Ci0JCQkJOTkwOEIwRUYxQkNBQ0Y5MTAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtLmpzICovLAog
CQkJCTQxNzY2NzM0MjREQzA4RUIwMDhCRkUyOCAvKiBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250
cm9sbGVyLmlkbCAqLywKIAkJCQk0MTc2NjczMzI0REMwOEVCMDA4QkZFMjggLyogV3JpdGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlci5qcyAqLywKIAkJCQk0MTc2NjczMDI0REMwOEVBMDA4QkZF
MjggLyogV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyLmlkbCAqLywKQEAgLTIxNzU3LDggKzIx
NzU4LDYgQEAKIAkJCQlDMjFCRjc0MjIxQ0Q5NjNCMDAyMjc5NzkgLyogV0hMU0xTdGFuZGFyZExp
YnJhcnkuaCAqLywKIAkJCQkxQzUwQzQ5NTIyQzg0RjI0MDBBNkU0QkUgLyogV0hMU0xTdGFuZGFy
ZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAgKi8sCiAJCQkJNTE3NDhGQTIxQ0M2RUVFQjAwNzI4RDg0
IC8qIFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCAqLywKLQkJCQk5OTA4QjBGOTFC
Q0FEMDdEMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHAgKi8sCi0JCQkJOUIw
M0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLywKIAkJ
CQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWls
dGlucy5jcHAgKi8sCiAJCQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRhYmxlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLywKIAkJCQk2NTY1ODFFQTA5RDE1MDhEMDAwRTYxRDcg
LyogWExpbmtOYW1lcy5jcHAgKi8sCkBAIC0yNzEzNiw2ICsyNzEzNSw4IEBACiAJCQkJMTQzMkU4
NDYwQzUxNDkzODAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5oICovLAogCQkJCUM1ODVBNjYwMTFE
NEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmNwcCAqLywKIAkJCQlDNTg1QTY2
MTExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5oICovLAorCQkJCTQxNDE4
QTAzMjU2NDNFMTIwMDM2MzQxNyAvKiBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmNwcCAqLywKKwkJ
CQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyogSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5oICov
LAogCQkJCTlCRDRFOTE0MUM0NjI4NzIwMDUwNjVCQyAvKiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuY3BwICovLAogCQkJCTlCRDRFOTE1MUM0NjI4NzIwMDUwNjVCQyAvKiBKU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UuaCAqLywKIAkJCQk3QzU3QkZFNjFFREUyRjVCMDA1MzRBNDggLyogSlNET01B
YnN0cmFjdE9wZXJhdGlvbnMuaCAqLywKQEAgLTI3MjMwLDggKzI3MjMxLDYgQEAKIAkJCQlFMzQz
MkRFMzI1RDM3N0UzMDA1OEU2MTIgLyogV29ya2VyTW9kdWxlU2NyaXB0TG9hZGVyLmNwcCAqLywK
IAkJCQlFMzQzMkRFMDI1RDM3N0UyMDA1OEU2MTIgLyogV29ya2VyTW9kdWxlU2NyaXB0TG9hZGVy
LmggKi8sCiAJCQkJRTM0N0U1RjgyNUQ0RjAwMDAwRjE3QTVDIC8qIFdvcmtlclNjcmlwdEZldGNo
ZXIuaCAqLywKLQkJCQk0MTQxOEEwMzI1NjQzRTEyMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0u
Y3BwICovLAotCQkJCTQxNDE4QTA0MjU2NDNFMTMwMDM2MzQxNyAvKiBXcml0YWJsZVN0cmVhbS5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBqczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0zMjcwNCw3ICszMjcwMyw2IEBACiAJCQkJN0MzMEQ5ODQxRjgxNUFFQzAwMjY4MzU2IC8qIEpT
QWJvcnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzMwRDk4NjFGODE1QUVDMDAy
NjgzNTYgLyogSlNBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1NUVGNTEyNTNB
NDI3OTAwNkZGNEE0IC8qIEpTQWJzdHJhY3RSYW5nZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDFF
NkQ3MUIyNkVBMUE0NjAwQjc2NUQ2IC8qIFJUQ0Vycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTE2NzdFMTMyMTNFMDNDNjAwQTA4QzM0IC8qIEpTQWRkcmVzc0Vycm9ycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTcwNDQwNUExRTUzOTM2MjAwMzU2NjAxIC8qIEpTQWVzQ2JjQ2Zi
UGFyYW1zLmggaW4gSGVhZGVycyAqLywKQEAgLTM0NTQxLDYgKzM0NTM5LDcgQEAKIAkJCQk0MTg4
RDU2MzI2QzU1MUIxMDA0ODU4QzggLyogUlRDRHRsc1RyYW5zcG9ydFN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwNzhFMDkyMDE3RDE0RDFDMDA0MjBBQTEgLyogUlRDRFRNRlNlbmRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MjExN0QxNEQxQzAwNDIwQUExIC8qIFJUQ0RUTUZUb25l
Q2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRTZENzFCMjZFQTFBNDYwMEI3NjVE
NiAvKiBSVENFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFBQjk3OTUyNkU3NUEyRTAwN0Mw
RkU2IC8qIFJUQ0Vycm9yRGV0YWlsVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MjMx
N0QxNEQxQzAwNDIwQUExIC8qIFJUQ0ljZUNhbmRpZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDc4RTA5NDAxN0QxNkUxQzAwNDIwQUExIC8qIFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovLApAQCAtMzU2MTgsNyArMzU2MTcsNyBAQAogCQkJCTgzNEE2QTNBMjUyNjg0
NEEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMz
QkQ4MTcyNTI0RDRGMjAwNkU3MkIzIC8qIFdvcmtsZXRQZW5kaW5nVGFza3MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzMzA5RTI0MDk5RTY0OTIwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15
U3BhbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA1
MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUU2RDcy
MzI2RUFBMDQ2MDBCNzY1RDYgLyogV3JpdGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0
aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFGM0IyNDEyQzFBMzk4MDAwMTRCRjEgLyogV3Jp
dGluZ0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0NzZBQTgxNURDNEJCMTAwMzA1
REIyIC8qIFdyaXRpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTM2ODY5LDYgKzM2ODY4LDcg
QEAKIAkJCQlFMUVFOEI5MTI0MTMxOTUwMDBFNzk0RDYgLyogV2ViWFJWaWV3cG9ydC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMUVFOEI4MzI0MTMxOTFGMDBFNzk0RDYgLyogV2ViWFJXZWJHTExh
eWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1QzcwMERBNjNBNiAvKiBX
S1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCisJCQkJNDFFNkQ3MjQyNkVBQTA0NjAwQjc2NUQ2
IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDN0NDMEEyQ0Yw
NzQwMEQ1NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDODBD
MEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTVB
MzZEOTExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ludGVybmFsV3JpdGFibGVTdHJl
YW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSW50ZXJuYWxXcml0YWJsZVN0cmVh
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzBhYTZhZjhkZDEzNmQ1ZDhjYjdkYjdhZjgwYjRiZTdlMzcxNDlm
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ludGVybmFs
V3JpdGFibGVTdHJlYW0uY3BwCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgi
CisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBFeGNlcHRpb25PcjxKU0M6OkpTVmFsdWU+IGludm9rZVdyaXRhYmxlU3RyZWFt
RnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXImIGFy
Z3VtZW50cykKK3sKKyAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOworICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAgYXV0byBmdW5jdGlvbiA9IGdsb2JhbE9i
amVjdC5nZXQoJmdsb2JhbE9iamVjdCwgaWRlbnRpZmllcik7CisgICAgQVNTRVJUKGZ1bmN0aW9u
LmlzQ2FsbGFibGUodm0pKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24p
OworCisgICAgYXV0byByZXN1bHQgPSBjYWxsKCZnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxs
RGF0YSwgSlNDOjpqc1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOworICAgIGlmIChVTkxJS0VMWShz
Y29wZS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yIH07CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitFeGNlcHRpb25PcjxS
ZWY8SW50ZXJuYWxXcml0YWJsZVN0cmVhbT4+IEludGVybmFsV3JpdGFibGVTdHJlYW06OmNyZWF0
ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdW5kZXJseWlu
Z1NpbmssIEpTQzo6SlNWYWx1ZSBzdHJhdGVneSkKK3sKKyAgICBhdXRvKiBjbGllbnREYXRhID0g
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihnbG9iYWxPYmplY3Qudm0oKS5jbGllbnREYXRh
KTsKKyAgICBhdXRvJiBwcml2YXRlTmFtZSA9IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMo
KS53cml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zKCkuY3JlYXRlSW50ZXJuYWxXcml0YWJs
ZVN0cmVhbVByaXZhdGVOYW1lKCk7CisKKyAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHVuZGVybHlpbmdTaW5rKTsKKyAgICBhcmd1
bWVudHMuYXBwZW5kKHN0cmF0ZWd5KTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxv
d2VkKCkpOworCisgICAgYXV0byByZXN1bHQgPSBpbnZva2VXcml0YWJsZVN0cmVhbUZ1bmN0aW9u
KGdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CisgICAgaWYgKFVOTElLRUxZ
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpOworCisgICAgQVNTRVJUKHJlc3VsdC5yZXR1cm5WYWx1ZSgpLmlzT2JqZWN0KCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEludGVybmFsV3JpdGFibGVTdHJlYW0oZ2xvYmFs
T2JqZWN0LCAqcmVzdWx0LnJldHVyblZhbHVlKCkudG9PYmplY3QoJmdsb2JhbE9iamVjdCkpKTsK
K30KKworYm9vbCBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtOjpsb2NrZWQoKSBjb25zdAoreworICAg
IGF1dG8qIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOworICAgIGlmICghZ2xv
YmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworCisgICAgYXV0byogY2xpZW50
RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4oZ2xvYmFsT2JqZWN0LT52bSgpLmNs
aWVudERhdGEpOworICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLndyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5pc1dyaXRhYmxlU3Ry
ZWFtTG9ja2VkUHJpdmF0ZU5hbWUoKTsKKworICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIg
YXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoZ3VhcmRlZE9iamVjdCgpKTsKKyAgICBB
U1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgYXV0byByZXN1bHQgPSBp
bnZva2VXcml0YWJsZVN0cmVhbUZ1bmN0aW9uKCpnbG9iYWxPYmplY3QsIHByaXZhdGVOYW1lLCBh
cmd1bWVudHMpOworICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAgICAgICAgc2NvcGUuY2xl
YXJFeGNlcHRpb24oKTsKKworICAgIHJldHVybiByZXN1bHQuaGFzRXhjZXB0aW9uKCkgPyBmYWxz
ZSA6IHJlc3VsdC5yZXR1cm5WYWx1ZSgpLmlzVHJ1ZSgpOworfQorCit2b2lkIEludGVybmFsV3Jp
dGFibGVTdHJlYW06OmxvY2soKQoreworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRoaXMtPmds
b2JhbE9iamVjdCgpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkp
OworCisgICAgYXV0byogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
Z2xvYmFsT2JqZWN0LT52bSgpLmNsaWVudERhdGEpOworICAgIGF1dG8mIHByaXZhdGVOYW1lID0g
Y2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLndyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnMoKS5hY3F1aXJlV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyUHJpdmF0ZU5hbWUoKTsK
KworICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50
cy5hcHBlbmQoZ3VhcmRlZE9iamVjdCgpKTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVy
Zmxvd2VkKCkpOworCisgICAgaW52b2tlV3JpdGFibGVTdHJlYW1GdW5jdGlvbigqZ2xvYmFsT2Jq
ZWN0LCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhj
ZXB0aW9uKCkpKQorICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworfQorCitKU0M6OkpT
VmFsdWUgSW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6YWJvcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcmVhc29uKQoreworICAgIGF1dG8qIGNsaWVudERh
dGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KGdsb2JhbE9iamVjdC52bSgpLmNsaWVu
dERhdGEpOworICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLndyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS53cml0YWJsZVN0cmVhbUFi
b3J0Rm9yQmluZGluZ3NQcml2YXRlTmFtZSgpOworCisgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChndWFyZGVkT2JqZWN0KCkpOwor
ICAgIGFyZ3VtZW50cy5hcHBlbmQocmVhc29uKTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNP
dmVyZmxvd2VkKCkpOworCisgICAgYXV0byByZXN1bHQgPSBpbnZva2VXcml0YWJsZVN0cmVhbUZ1
bmN0aW9uKGdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CisgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBy
ZXN1bHQucmV0dXJuVmFsdWUoKTsKK30KKworSlNDOjpKU1ZhbHVlIEludGVybmFsV3JpdGFibGVT
dHJlYW06OmNsb3NlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBh
dXRvKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihnbG9iYWxPYmpl
Y3Qudm0oKS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBwcml2YXRlTmFtZSA9IGNsaWVudERhdGEt
PmJ1aWx0aW5GdW5jdGlvbnMoKS53cml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zKCkud3Jp
dGFibGVTdHJlYW1DbG9zZUZvckJpbmRpbmdzUHJpdmF0ZU5hbWUoKTsKKworICAgIEpTQzo6TWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoZ3VhcmRl
ZE9iamVjdCgpKTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOworCisg
ICAgYXV0byByZXN1bHQgPSBpbnZva2VXcml0YWJsZVN0cmVhbUZ1bmN0aW9uKGdsb2JhbE9iamVj
dCwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiByZXN1bHQucmV0dXJuVmFsdWUo
KTsKK30KKworSlNDOjpKU1ZhbHVlIEludGVybmFsV3JpdGFibGVTdHJlYW06OmdldFdyaXRlcihK
U0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgYXV0byogY2xpZW50RGF0
YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4oZ2xvYmFsT2JqZWN0LnZtKCkuY2xpZW50
RGF0YSk7CisgICAgYXV0byYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rp
b25zKCkud3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLmFjcXVpcmVXcml0YWJsZVN0
cmVhbURlZmF1bHRXcml0ZXJQcml2YXRlTmFtZSgpOworCisgICAgSlNDOjpNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChndWFyZGVkT2JqZWN0KCkp
OworICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICBhdXRvIHJl
c3VsdCA9IGludm9rZVdyaXRhYmxlU3RyZWFtRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBwcml2YXRl
TmFtZSwgYXJndW1lbnRzKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIHJlc3VsdC5yZXR1cm5WYWx1ZSgpOworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JbnRlcm5hbFdyaXRhYmxl
U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JbnRlcm5hbFdyaXRhYmxlU3Ry
ZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTBhYWEyNzNlNjZjYmUxNjdhMzkzYjcxZDIwYjY4MjFhYmY1NmVl
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ludGVybmFs
V3JpdGFibGVTdHJlYW0uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4
Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0LmgiCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
SW50ZXJuYWxXcml0YWJsZVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBET01HdWFyZGVkPEpTQzo6SlNP
YmplY3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEludGVybmFsV3Jp
dGFibGVTdHJlYW0+PiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUgdW5k
ZXJseWluZ1NpbmssIEpTQzo6SlNWYWx1ZSBzdHJhdGVneSk7CisKKyAgICBvcGVyYXRvciBKU0M6
OkpTVmFsdWUoKSBjb25zdCB7IHJldHVybiBndWFyZGVkKCk7IH0KKworICAgIGJvb2wgbG9ja2Vk
KCkgY29uc3Q7CisgICAgdm9pZCBsb2NrKCk7CisgICAgSlNDOjpKU1ZhbHVlIGFib3J0KEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOworICAgIEpTQzo6SlNWYWx1ZSBjbG9zZShK
U0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgSlNDOjpKU1ZhbHVlIGdldFdyaXRlcihKU0M6OkpT
R2xvYmFsT2JqZWN0Jik7CisKK3ByaXZhdGU6CisgICAgSW50ZXJuYWxXcml0YWJsZVN0cmVhbShK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0JiBqc09iamVjdCkK
KyAgICAgICAgOiBET01HdWFyZGVkPEpTQzo6SlNPYmplY3Q+KGdsb2JhbE9iamVjdCwganNPYmpl
Y3QpCisgICAgeworICAgIH0KK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5MTZkMzNkOWRlNzRmMjIxM2RiZTMzNDNl
ZmYzZDAyYTNhYzM1M2NkLi5hMDA3NDMxNDJkOGMwMDA0ODY0OTRkZjQ4NTAwMGNiMDM4Y2RmYmY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNSZW1vdGVET01XaW5kb3cuaCIKICNp
bmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFs
U2NvcGUuaCIKKyNpbmNsdWRlICJKU1dyaXRhYmxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiUmVqZWN0
ZWRQcm9taXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
ICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIKQEAgLTcxLDYgKzcyLDcgQEAgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihtYWtlVGhpc1R5cGVFcnJvckZvckJ1aWx0aW5zKTsKIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZUdldHRlclR5cGVFcnJvckZvckJ1aWx0aW5zKTsKIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZURPTUV4Y2VwdGlvbkZvckJ1aWx0aW5zKTsKIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKTsK
K0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZ2V0SW50ZXJuYWxXcml0YWJsZVN0cmVhbSk7CiBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGlzV3JpdGFibGVTdHJlYW1BUElFbmFibGVkKTsKIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2hlblNpZ25hbEFib3J0ZWQpOwogSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihpc0Fib3J0U2lnbmFsKTsKQEAgLTE2Myw2ICsxNjUsMTggQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGlzV3JpdGFibGVTdHJlYW1BUElFbmFibGVkLCAoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndyaXRhYmxlU3RyZWFtQVBJ
RW5hYmxlZCgpKSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnZXRJbnRlcm5hbFdy
aXRhYmxlU3RyZWFtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAgIEFTU0VSVChjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKSA9PSAxKTsKKworICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8qIHdyaXRhYmxlU3RyZWFtID0ganNEeW5hbWljQ2FzdDxKU1dyaXRh
YmxlU3RyZWFtKj4odm0sIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIGlm
IChVTkxJS0VMWSghd3JpdGFibGVTdHJlYW0pKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUod3JpdGFibGVT
dHJlYW0tPndyYXBwZWQoKS5pbnRlcm5hbFdyaXRhYmxlU3RyZWFtKCkpOworfQorCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04od2hlblNpZ25hbEFib3J0ZWQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgQVNTRVJUKGNhbGxGcmFt
ZSk7CkBAIC0yMTQsNiArMjI4LDcgQEAgU1VQUFJFU1NfQVNBTiB2b2lkIEpTRE9NR2xvYmFsT2Jq
ZWN0OjphZGRCdWlsdGluR2xvYmFscyhWTSYgdm0pCiAgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0
OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5yZWFkYWJsZUJ5
dGVTdHJlYW1BUElFbmFibGVkUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAwLCBTdHJpbmcoKSwgaXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAog
ICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEu
YnVpbHRpbk5hbWVzKCkud3JpdGFibGVTdHJlYW1BUElFbmFibGVkUHJpdmF0ZU5hbWUoKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgaXNXcml0YWJsZVN0cmVhbUFQ
SUVuYWJsZWQpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksCiAgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0
eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5pc0Fib3J0U2lnbmFsUHJpdmF0ZU5hbWUo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgaXNBYm9ydFNpZ25h
bCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KSwKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhj
bGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLmdldEludGVybmFsV3JpdGFibGVTdHJlYW1Qcml2YXRl
TmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBnZXRJbnRl
cm5hbFdyaXRhYmxlU3RyZWFtKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhz
dGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCBk
NGQxMzI0MjkyOTdjOGEyMjc5OGI5ZmQ5ZDU3ZDRhN2U0MWRlMWZhLi41Yjk0MzFlYzdlNDNiZTVm
MDI2ZjZlOGJhMzhhMmFhMTM3NjYwZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0zNDgsNiArMzQ4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIG1hY3JvKGZsdXNoQWxnb3JpdGhtKSBcCiAgICAgbWFjcm8oZm9jdXMp
IFwKICAgICBtYWNybyhmcmFtZXMpIFwKKyAgICBtYWNybyhnZXRJbnRlcm5hbFdyaXRhYmxlU3Ry
ZWFtKSBcCiAgICAgbWFjcm8oZ2V0VHJhY2tzKSBcCiAgICAgbWFjcm8oZ2V0VXNlck1lZGlhKSBc
CiAgICAgbWFjcm8oZ3B1KSBcCkBAIC0zNTksNiArMzYwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIG1hY3JvKGluRmxpZ2h0V3JpdGVSZXF1ZXN0KSBcCiAgICAgbWFjcm8oaW5kZXhlZERC
KSBcCiAgICAgbWFjcm8oaW5pdGlhbGl6ZVdpdGgpIFwKKyAgICBtYWNybyhpbnRlcm5hbFN0cmVh
bSkgXAorICAgIG1hY3JvKGludGVybmFsV3JpdGFibGUpIFwKICAgICBtYWNybyhpc0Fib3J0U2ln
bmFsKSBcCiAgICAgbWFjcm8oaXNEaXN0dXJiZWQpIFwKICAgICBtYWNybyhpc0xvYWRpbmcpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhOWMzNzIxZDNmYzRiMTk1NTU0MWViMTRlZDcxOWQ3
MjczM2ZkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBDQU5PTiBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldyaXRhYmxlU3Ry
ZWFtLmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCi0jaW5jbHVkZSAiSlNXcml0
YWJsZVN0cmVhbVNpbmsuaCIKLSNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdy
aXRhYmxlU3RyZWFtSW50ZXJuYWwgewotc3RhdGljIGlubGluZSBKU0M6OkpTVmFsdWUgY2FsbEZ1
bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBqc0Z1bmN0aW9uLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xp
c3QmIGFyZ3VtZW50cykKLXsKLSAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7
Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIGF1dG8gY2Fs
bERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBqc0Z1bmN0aW9uKTsKLSAgICBBU1NFUlQoY2Fs
bERhdGEudHlwZSAhPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsKLSAgICBhdXRvIHJlc3Vs
dCA9IGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGpzRnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlz
VmFsdWUsIGFyZ3VtZW50cyk7Ci0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRUZXJt
aW5hdGlvbigpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9v
bCBjaGVja1dyaXRhYmxlU3RyZWFtKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpT
V3JpdGFibGVTdHJlYW0qIHdyaXRhYmxlU3RyZWFtLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24pCi17
Ci0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKLQotICAgIEFT
U0VSVChmdW5jdGlvbik7Ci0gICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7
Ci0gICAgYXJndW1lbnRzLmFwcGVuZCh3cml0YWJsZVN0cmVhbSk7Ci0gICAgQVNTRVJUKCFhcmd1
bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gV3JpdGFibGVTdHJlYW1JbnRlcm5h
bDo6Y2FsbEZ1bmN0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBKU0M6OmpzVW5k
ZWZpbmVkKCksIGFyZ3VtZW50cykuaXNUcnVlKCk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxXcml0
YWJsZVN0cmVhbT4+IFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmUHRyPFdyaXRhYmxlU3RyZWFtU2luaz4mJiBzaW5rKQot
ewotICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKLSAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Ci0gICAgYXV0byYgZ2xv
YmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9i
YWxPYmplY3QpOwotCi0gICAgYXV0byogY29uc3RydWN0b3IgPSBKU0M6OmFzT2JqZWN0KGdsb2Jh
bE9iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGNsaWVudERhdGEuYnVpbHRpbk5hbWVz
KCkuV3JpdGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpKSk7Ci0KLSAgICBhdXRvIGNvbnN0cnVjdERh
dGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBjb25zdHJ1Y3Rvcik7Ci0gICAgQVNTRVJUKGNvbnN0
cnVjdERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7Ci0KLSAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHNpbmsgPyB0b0pTTmV3bHlDcmVhdGVk
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBzaW5rLnJlbGVhc2VOb25OdWxs
KCkpIDogSlNDOjpqc1VuZGVmaW5lZCgpKTsKLSAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dl
ZCgpKTsKLQotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOwotICAgIEFTU0VS
VCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFvYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0KLSAgICBy
ZXR1cm4gY3JlYXRlKGdsb2JhbE9iamVjdCwgKmpzQ2FzdDxKU1dyaXRhYmxlU3RyZWFtKj4ob2Jq
ZWN0KSk7Ci19Ci0KLXZvaWQgV3JpdGFibGVTdHJlYW06OmxvY2soKQotewotICAgIGF1dG8mIGxl
eGljYWxHbG9iYWxPYmplY3QgPSAqbV9nbG9iYWxPYmplY3Q7Ci0gICAgVk0mIHZtID0gbGV4aWNh
bEdsb2JhbE9iamVjdC52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKLQotICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKTsKLQotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gSlNDOjphc09i
amVjdChtX2dsb2JhbE9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjbGllbnREYXRh
LmJ1aWx0aW5OYW1lcygpLldyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlclByaXZhdGVOYW1lKCkp
KTsKLQotICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEodm0sIGNvbnN0
cnVjdG9yKTsKLSAgICBBU1NFUlQoY29uc3RydWN0RGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBl
OjpOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBl
bmQod3JpdGFibGVTdHJlYW0oKSk7Ci0gICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7
Ci0KLSAgICBKU0M6OmNvbnN0cnVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3RydWN0b3Is
IGNvbnN0cnVjdERhdGEsIGFyZ3MpOwotICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uRXhjZXB0
VGVybWluYXRpb24oKTsKLX0KLQotYm9vbCBXcml0YWJsZVN0cmVhbTo6aXNMb2NrZWQoKSBjb25z
dAotewotICAgIHJldHVybiBjaGVja1dyaXRhYmxlU3RyZWFtKCpnbG9iYWxPYmplY3QoKSwgd3Jp
dGFibGVTdHJlYW0oKSwgZ2xvYmFsT2JqZWN0KCktPmJ1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucygp
LndyaXRhYmxlU3RyZWFtSW50ZXJuYWxzKCkubV9pc1dyaXRhYmxlU3RyZWFtTG9ja2VkRnVuY3Rp
b24uZ2V0KCkpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xcml0YWJsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV3JpdGFibGVT
dHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUxOGE5NDU5NzcyNGUxZDcw
MTAxYTY3YmNkYjhlZjM5OTYxZmFkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5o
CisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRXhjZXB0aW9u
T3IuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnQu
aCIKLSNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKLSNpbmNsdWRlICJKU1dyaXRhYmxl
U3RyZWFtLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV3JpdGFibGVTdHJlYW1T
aW5rOwotCi1jbGFzcyBXcml0YWJsZVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBET01HdWFyZGVkPEpT
V3JpdGFibGVTdHJlYW0+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdyaXRhYmxlU3RyZWFt
PiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNXcml0YWJsZVN0cmVh
bSYganNTdHJlYW0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV3JpdGFibGVTdHJlYW0oZ2xvYmFs
T2JqZWN0LCBqc1N0cmVhbSkpOyB9Ci0KLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdyaXRh
YmxlU3RyZWFtPj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8V3JpdGFibGVT
dHJlYW1TaW5rPiYmKTsKLSAgICBKU1dyaXRhYmxlU3RyZWFtKiB3cml0YWJsZVN0cmVhbSgpIGNv
bnN0IHsgcmV0dXJuIGd1YXJkZWQoKTsgfQotCi0gICAgdm9pZCBsb2NrKCk7Ci0gICAgYm9vbCBp
c0xvY2tlZCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFdyaXRhYmxlU3RyZWFtKEpTRE9NR2xv
YmFsT2JqZWN0JiwgSlNXcml0YWJsZVN0cmVhbSYpOwotfTsKLQotc3RydWN0IEpTV3JpdGFibGVT
dHJlYW1XcmFwcGVyQ29udmVydGVyIHsKLSAgICBzdGF0aWMgUmVmUHRyPFdyaXRhYmxlU3RyZWFt
PiB0b1dyYXBwZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgSlNDOjpWTSYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gSlND
Ojpqc0R5bmFtaWNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odm0sICZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKLSAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgICAgICBhdXRvKiBXcml0YWJsZVN0cmVhbSA9IEpTQzo6anNEeW5hbWljQ2Fz
dDxKU1dyaXRhYmxlU3RyZWFtKj4odm0sIHZhbHVlKTsKLSAgICAgICAgaWYgKCFXcml0YWJsZVN0
cmVhbSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHJldHVybiBXcml0
YWJsZVN0cmVhbTo6Y3JlYXRlKCpnbG9iYWxPYmplY3QsICpXcml0YWJsZVN0cmVhbSk7Ci0gICAg
fQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdy
aXRhYmxlU3RyZWFtPiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNXcml0YWJsZVN0cmVh
bVdyYXBwZXJDb252ZXJ0ZXI7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFJlZlB0
cjxXcml0YWJsZVN0cmVhbT47Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUg
PSB0cnVlOwotfTsKLQotaW5saW5lIFdyaXRhYmxlU3RyZWFtOjpXcml0YWJsZVN0cmVhbShKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1dyaXRhYmxlU3RyZWFtJiBXcml0YWJsZVN0
cmVhbSkKLSAgICA6IERPTUd1YXJkZWQ8SlNXcml0YWJsZVN0cmVhbT4oZ2xvYmFsT2JqZWN0LCBX
cml0YWJsZVN0cmVhbSkKLXsKLX0KLQotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgV3JpdGFibGVTdHJlYW0qIHN0cmVh
bSkKLXsKLSAgICByZXR1cm4gc3RyZWFtID8gc3RyZWFtLT53cml0YWJsZVN0cmVhbSgpIDogSlND
Ojpqc1VuZGVmaW5lZCgpOwotfQotCi1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBXcml0YWJsZVN0cmVhbSYgc3RyZWFt
KQotewotICAgIHJldHVybiBzdHJlYW0ud3JpdGFibGVTdHJlYW0oKTsKLX0KLQotaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUds
b2JhbE9iamVjdCosIFJlZjxXcml0YWJsZVN0cmVhbT4mJiBzdHJlYW0pCi17Ci0gICAgcmV0dXJu
IHN0cmVhbS0+d3JpdGFibGVTdHJlYW0oKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAxZjI0ZjFlYjAxMGIz
YzU0YjczNDU0YTU2ZjIwOTNiM2U1NzA3YzUzLi5jMzFhOTYxZGQ1YWMyY2IzNzQ3ZWNjZDg0Y2U3
YWY3MzUxNjlhOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNjI3LDExICs2MjcsNiBAQCBzdWIgQWRkVG9JbmNsdWRl
c0ZvcklETFR5cGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICgkdHlwZS0+bmFt
ZSBlcSAiV3JpdGFibGVTdHJlYW0iKSB7Ci0gICAgICAgIEFkZFRvSW5jbHVkZXMoIldyaXRhYmxl
U3RyZWFtLmgiLCAkaW5jbHVkZXNSZWYsICRjb25kaXRpb25hbCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KICAgICBpZiAoJHR5cGUtPm5hbWUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKICAg
ICAgICAgQWRkVG9JbmNsdWRlcygiSlNYUGF0aE5TUmVzb2x2ZXIuaCIsICRpbmNsdWRlc1JlZiwg
JGNvbmRpdGlvbmFsKTsKICAgICAgICAgQWRkVG9JbmNsdWRlcygiSlNET01Db252ZXJ0WFBhdGhO
U1Jlc29sdmVyLmgiLCAkaW5jbHVkZXNSZWYsICRjb25kaXRpb25hbCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwppbmRleCAxZTA4NWQ0YzIxZDllMWY1OGYyZjhmMjM2NDQ5MjY5OTI4MzM0
YWFkLi44NmI2YWRmYzc0YTA0NDg3ZjhlMDYyNzM0YmQ4MDQ2Mjc5ZGQ1ZTBlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wOS0xMCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdG8gc3ViY2xhc3Mg
V3JpdGFibGVTdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMDE0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnktZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3Mu
YW55Lndvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0OgorCiAyMDIxLTA5LTA5ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXJlIFJUQ1BlZXJDb25uZWN0aW9uLnNpZ25hbHN0
YXRlY2hhbmdlIGFzIHBlciBzcGVjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lk
bGhhcm5lc3MuYW55LWV4cGVjdGVkLnR4dAppbmRleCA5M2ZhZDEzZWI2M2FiODczZWRkM2ZkNjZk
ZmUzYWEwNWViNjQyMDMxLi45OTJiOWUwZWQ4NDI3Y2YxNGY0OTgzYzI0YWE3NDFjM2M0MWQwNmI1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvaWRsaGFybmVzcy5hbnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFueS1leHBl
Y3RlZC50eHQKQEAgLTEyOCw3ICsxMjgsNyBAQCBQQVNTIFdyaXRhYmxlU3RyZWFtIGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgbwogUEFT
UyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBp
bnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkKIFBBU1Mg
V3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50
ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFibGVzIHByb3BlcnR5CiBQQVNTIFdy
aXRhYmxlU3RyZWFtIGludGVyZmFjZTogYXR0cmlidXRlIGxvY2tlZAotRkFJTCBXcml0YWJsZVN0
cmVhbSBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhYm9ydChvcHRpb25hbCBhbnkpIGFzc2VydF9lcXVh
bHM6IHByb3BlcnR5IGhhcyB3cm9uZyAubGVuZ3RoIGV4cGVjdGVkIDAgYnV0IGdvdCAxCitQQVNT
IFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogb3BlcmF0aW9uIGFib3J0KG9wdGlvbmFsIGFueSkK
IFBBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBvcGVyYXRpb24gY2xvc2UoKQogUEFTUyBX
cml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IG9wZXJhdGlvbiBnZXRXcml0ZXIoKQogUEFTUyBXcml0
YWJsZVN0cmVhbSBtdXN0IGJlIHByaW1hcnkgaW50ZXJmYWNlIG9mIG5ldyBXcml0YWJsZVN0cmVh
bSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDkzZmFkMTNlYjYzYWI4NzNlZGQzZmQ2NmRmZTNh
YTA1ZWI2NDIwMzEuLjk5MmI5ZTBlZDg0MjdjZjE0ZjQ5ODNjMjRhYTc0MWMzYzQxZDA2YjUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9pZGxoYXJuZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFueS53
b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xMjgsNyArMTI4LDcgQEAgUEFTUyBXcml0YWJsZVN0cmVh
bSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90
eXBlIG8KIFBBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3Bl
cnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3Bl
cnR5CiBQQVNTIFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0
aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgQEB1bnNjb3BhYmxlcyBwcm9wZXJ0
eQogUEFTUyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBsb2NrZWQKLUZBSUwg
V3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBvcGVyYXRpb24gYWJvcnQob3B0aW9uYWwgYW55KSBh
c3NlcnRfZXF1YWxzOiBwcm9wZXJ0eSBoYXMgd3JvbmcgLmxlbmd0aCBleHBlY3RlZCAwIGJ1dCBn
b3QgMQorUEFTUyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhYm9ydChvcHRp
b25hbCBhbnkpCiBQQVNTIFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogb3BlcmF0aW9uIGNsb3Nl
KCkKIFBBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBvcGVyYXRpb24gZ2V0V3JpdGVyKCkK
IFBBU1MgV3JpdGFibGVTdHJlYW0gbXVzdCBiZSBwcmltYXJ5IGludGVyZmFjZSBvZiBuZXcgV3Jp
dGFibGVTdHJlYW0oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3dyaXRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnktZXhwZWN0ZWQudHh0CmluZGV4IDI5Zjdi
MjFiN2E5NTRmZjU2MjIyMTUwNGMwOGFhYzQ4NjJlY2ZlMGYuLjUzMTM1ZDJmMmIxNGZjNWZiN2Q0
YTAxNGI4OWQyY2RiMjE0MDAzN2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQK
QEAgLTEzLDYgKzEzLDYgQEAgUEFTUyBtZXRob2RzIHNob3VsZCBub3Qgbm90IGhhdmUgLmFwcGx5
KCkgb3IgLmNhbGwoKSBjYWxsZWQKIFBBU1MgV3JpdGFibGVTdHJlYW0ncyBzdHJhdGVneS5zaXpl
IHNob3VsZCBub3QgYmUgY2FsbGVkIGFzIGEgbWV0aG9kCiBQQVNTIHJlZHVuZGFudCByZWxlYXNl
TG9jaygpIGlzIG5vLW9wCiBQQVNTIHJlYWR5IHByb21pc2Ugc2hvdWxkIGZpcmUgYmVmb3JlIGNs
b3NlZCBvbiByZWxlYXNlTG9jawotRkFJTCBTdWJjbGFzc2luZyBXcml0YWJsZVN0cmVhbSBzaG91
bGQgd29yayBhc3NlcnRfdHJ1ZTogU3ViY2xhc3Mgb2JqZWN0IHNob3VsZCBiZSBhbiBpbnN0YW5j
ZSBvZiBTdWJjbGFzcyBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBTdWJjbGFzc2luZyBX
cml0YWJsZVN0cmVhbSBzaG91bGQgd29yawogUEFTUyB0aGUgbG9ja2VkIGdldHRlciBzaG91bGQg
cmV0dXJuIHRydWUgaWYgdGhlIHN0cmVhbSBoYXMgYSB3cml0ZXIKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxl
LXN0cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dl
bmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQKaW5kZXggMjlmN2IyMWI3YTk1NGZmNTYyMjIx
NTA0YzA4YWFjNDg2MmVjZmUwZi4uNTMxMzVkMmYyYjE0ZmM1ZmI3ZDRhMDE0Yjg5ZDJjZGIyMTQw
MDM3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBA
IC0xMyw2ICsxMyw2IEBAIFBBU1MgbWV0aG9kcyBzaG91bGQgbm90IG5vdCBoYXZlIC5hcHBseSgp
IG9yIC5jYWxsKCkgY2FsbGVkCiBQQVNTIFdyaXRhYmxlU3RyZWFtJ3Mgc3RyYXRlZ3kuc2l6ZSBz
aG91bGQgbm90IGJlIGNhbGxlZCBhcyBhIG1ldGhvZAogUEFTUyByZWR1bmRhbnQgcmVsZWFzZUxv
Y2soKSBpcyBuby1vcAogUEFTUyByZWFkeSBwcm9taXNlIHNob3VsZCBmaXJlIGJlZm9yZSBjbG9z
ZWQgb24gcmVsZWFzZUxvY2sKLUZBSUwgU3ViY2xhc3NpbmcgV3JpdGFibGVTdHJlYW0gc2hvdWxk
IHdvcmsgYXNzZXJ0X3RydWU6IFN1YmNsYXNzIG9iamVjdCBzaG91bGQgYmUgYW4gaW5zdGFuY2Ug
b2YgU3ViY2xhc3MgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK1BBU1MgU3ViY2xhc3NpbmcgV3Jp
dGFibGVTdHJlYW0gc2hvdWxkIHdvcmsKIFBBU1MgdGhlIGxvY2tlZCBnZXR0ZXIgc2hvdWxkIHJl
dHVybiB0cnVlIGlmIHRoZSBzdHJlYW0gaGFzIGEgd3JpdGVyCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437857</attachid>
            <date>2021-09-10 06:14:25 -0700</date>
            <delta_ts>2021-09-10 06:32:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230146-20210910151421.patch</filename>
            <type>text/plain</type>
            <size>69482</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYyZjlmOTVjMjYwYTM4
YTUyNmY2MWE4NDk3ODdiZTk2OGNiOTVlNi4uYjBkMmU4ODVjODI3NTQ5OWFhNWUzYTNjNTQyOTZj
NTY5OWU1NGQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTA5LTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0byBzdWJjbGFz
cyBXcml0YWJsZVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW50cm9kdWNlIGEgV2ViSURMLWJhc2VkIFdyaXRhYmxlU3RyZWFtIEMrKyBjbGFz
cy4KKyAgICAgICAgVG8ga2VlcCB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24sIHRoZSBwcmV2
aW91cyBKUyBXcml0YWJsZVN0cmVhbSBpbXBsZW1lbnRhdGlvbiBpcyB3cmFwcGVkIGFyb3VuZCBh
biBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtIEMrKyBjbGFzcworICAgICAgICB3aGljaCBpcyBhIHdy
YXBwZXIgYXJvdW5kIEpTLWJ1aWx0aW5zIG1hbmlwdWxhdGVkIG9iamVjdHMuCisgICAgICAgIElu
dGVybmFsV3JpdGFibGVTdHJlYW0gaXMgbWFkZSBET01HdWFyZGVkIHRvIGVuYWJsZSB0byBrZWVw
IGEgcmVmIHRvIHRoZSBKUyBvYmplY3QgZnJvbSBXcml0YWJsZVN0cmVhbS4KKworICAgICAgICBV
cGRhdGUgSlMgYnVpbHQtaW4gY29kZSB0byBtYW5hZ2UgaG9wcGluZyB0byB0aGUgSW50ZXJuYWxX
cml0YWJsZVN0cmVhbSBKUyBvYmplY3QgZnJvbSB0aGUgZXhwb3NlZCBXcml0YWJsZVN0cmVhbSBK
UyBvYmplY3QuCisgICAgICAgIFdlIGludHJvZHVjZSBnZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFt
IHJvdXRpbmUgZm9yIHRoYXQgcHVycG9zZS4KKworICAgICAgICBUcmFuc2l0aW9uIGV4aXN0aW5n
IFdyaXRhYmxlU3RyZWFtIHVzZXJzIHRvIHRoZSBuZXcgQysrIGNsYXNzLgorICAgICAgICBNaW5v
ciBjb2RlIGdlbmVyYXRvciBjaGFuZ2UgdG8gbWFrZSB1c2Ugb2YgdGhlIG5vdyBhdmFpbGFibGUg
SlNXcml0YWJsZVN0cmVhbS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGFuZCByZWJh
c2VkIHRlc3RzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBTRnJhbWVUcmFuc2Zvcm06OmlzQXR0YWNoZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6cmVhZGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwU0ZyYW1lVHJhbnNmb3JtOjp3cml0YWJsZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uanM6CisgICAgICAgIChwaXBlVGhyb3VnaCk6CisgICAgICAgICogTW9k
dWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbUludGVybmFscy5qczoKKyAgICAgICAgKGluaXRp
YWxpemVUcmFuc2Zvcm1TdHJlYW0pOgorICAgICAgICAodHJhbnNmb3JtU3RyZWFtRXJyb3JXcml0
YWJsZUFuZFVuYmxvY2tXcml0ZSk6CisgICAgICAgICh0cmFuc2Zvcm1TdHJlYW1EZWZhdWx0U2lu
a1dyaXRlQWxnb3JpdGhtKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJl
YW0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qczogUmVt
b3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0V3Jp
dGVyLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlcik6
CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzOgor
ICAgICAgICAoaW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtU2xvdHMpOgorICAgICAgICAod3JpdGFi
bGVTdHJlYW1DbG9zZUZvckJpbmRpbmdzKToKKyAgICAgICAgKHdyaXRhYmxlU3RyZWFtQWJvcnRG
b3JCaW5kaW5ncyk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0ludGVybmFs
V3JpdGFibGVTdHJlYW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omludm9rZVdyaXRh
YmxlU3RyZWFtRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxXcml0YWJsZVN0
cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsV3JpdGFibGVTdHJlYW06
OmxvY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFdyaXRhYmxlU3RyZWFt
Ojpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsV3JpdGFibGVTdHJlYW06OmFib3J0
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsV3JpdGFibGVTdHJlYW06OmNsb3NlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsV3JpdGFibGVTdHJlYW06OmdldFdyaXRlcik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9i
YWxPYmplY3Q6OmFkZEJ1aWx0aW5HbG9iYWxzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmg6IFJl
bW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChBZGRUb0luY2x1ZGVzRm9ySURMVHlwZSk6CisKIDIwMjEtMDktMTAgIFJvYiBCdWlz
ICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggYXNwZWN0LXJhdGlvLWludHJpbnNp
Yy1zaXplLTAwNC5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CmluZGV4IGQ2ZGI1MGNlOTk0ZTFhMTJkMDFlNzVlYTBjYTIwZDliY2NhYTgx
NDEuLjc0M2Y1MGVlMGFlZjQxZTZhZWEyNDhmZGJjZDJhZjliNzBlZjA5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yNjQzLDcg
KzI2NDMsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9X
ZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9XZWJLaXRGb250RmFtaWx5TmFtZXMuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMu
aWRsCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Xb3JrbGV0
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9Xcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXJCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXJCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Xcml0YWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDUwODJkN2U3M2FhNWFj
Y2I5MDdkYmE0OWVmY2QzN2YwNjcwMzNjNTcuLjUzNGU5YzdkZDRmNDU4NTNiNjUxNzRiNzYzMTA5
OGYwN2I2NjY2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTk1Miw3ICsx
OTUyLDYgQEAgV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbS5qcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3N0cmVhbXMvVHJhbnNmb3JtU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbUludGVybmFscy5qcyBcCi0gICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdy
aXRlci5qcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1J
bnRlcm5hbHMuanMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCmluZGV4IGM1YmI3ZDk3Njc1M2Mx
ZDY5OGZlYmQxYTk1OWM1MDViMmE5ZDMzM2EuLjFiZWM3YzMxNWJlNWMwNzUwMzIwMGIwNWQ5NTNj
ZTIxODliMTg3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCdWZmZXJTb3VyY2UuaCIKICNpbmNsdWRlICJKU1JUQ0Vu
Y29kZWRBdWRpb0ZyYW1lLmgiCiAjaW5jbHVkZSAiSlNSVENFbmNvZGVkVmlkZW9GcmFtZS5oIgor
I2luY2x1ZGUgIkpTV3JpdGFibGVTdHJlYW1TaW5rLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlJUQ0VuY29kZWRBdWRpb0ZyYW1lLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2RlZFZp
ZGVvRnJhbWUuaCIKQEAgLTQzLDcgKzQ0LDYgQEAKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVNv
dXJjZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldyaXRhYmxlU3Ry
ZWFtLmgiCi0jaW5jbHVkZSAiV3JpdGFibGVTdHJlYW1TaW5rLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTgsNyArOTgsNyBA
QCB1aW50NjRfdCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmtleUlkRm9yVGVzdGluZygpIGNvbnN0
CiAKIGJvb2wgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppc0F0dGFjaGVkKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9pc0F0dGFjaGVkIHx8IChtX3JlYWRhYmxlICYmIG1fcmVhZGFibGUtPmlzTG9j
a2VkKCkpIHx8IChtX3dyaXRhYmxlICYmIG1fd3JpdGFibGUtPmlzTG9ja2VkKCkpOworICAgIHJl
dHVybiBtX2lzQXR0YWNoZWQgfHwgKG1fcmVhZGFibGUgJiYgbV9yZWFkYWJsZS0+aXNMb2NrZWQo
KSkgfHwgKG1fd3JpdGFibGUgJiYgbV93cml0YWJsZS0+bG9ja2VkKCkpOwogfQogCiBzdGF0aWMg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudDo6VHlwZSBlcnJvclR5cGVGcm9tSW5mb3Jt
YXRpb24oY29uc3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OkVycm9ySW5mb3JtYXRpb24mIGVy
cm9ySW5mb3JtYXRpb24pCkBAIC0yMDgsMTQgKzIwOCwxOCBAQCB2b2lkIHRyYW5zZm9ybUZyYW1l
KEZyYW1lJiBmcmFtZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUlRDUnRwU0Zy
YW1lVAogICAgIHNvdXJjZS5lbnF1ZXVlKHRvSlMoJmdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVj
dCwgZnJhbWUpKTsKIH0KIAotdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmNyZWF0ZVN0cmVh
bXMoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorRXhjZXB0aW9uT3I8dm9pZD4g
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJlYW1zKCkKIHsKKyAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPyBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmdsb2JhbE9iamVjdCgpIDogbnVsbHB0cjsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKICAgICBt
X3JlYWRhYmxlU3RyZWFtU291cmNlID0gU2ltcGxlUmVhZGFibGVTdHJlYW1Tb3VyY2U6OmNyZWF0
ZSgpOwotICAgIGF1dG8gcmVhZGFibGUgPSBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKGdsb2JhbE9i
amVjdCwgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS5jb3B5UmVmKCkpOworICAgIGF1dG8gcmVhZGFi
bGUgPSBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKCpnbG9iYWxPYmplY3QsIG1fcmVhZGFibGVTdHJl
YW1Tb3VyY2UuY29weVJlZigpKTsKICAgICBpZiAocmVhZGFibGUuaGFzRXhjZXB0aW9uKCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHJlYWRhYmxlLnJlbGVhc2VFeGNlcHRpb24o
KTsKIAotICAgIGF1dG8gd3JpdGFibGUgPSBXcml0YWJsZVN0cmVhbTo6Y3JlYXRlKGdsb2JhbE9i
amVjdCwgU2ltcGxlV3JpdGFibGVTdHJlYW1TaW5rOjpjcmVhdGUoW3RyYW5zZm9ybWVyID0gbV90
cmFuc2Zvcm1lciwgcmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBtX3JlYWRhYmxlU3RyZWFtU291cmNl
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRvJiBjb250ZXh0LCBhdXRvIHZhbHVl
KSAtPiBFeGNlcHRpb25Pcjx2b2lkPiB7CisgICAgYXV0byB3cml0YWJsZSA9IFdyaXRhYmxlU3Ry
ZWFtOjpjcmVhdGUoKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSwgU2ltcGxlV3JpdGFibGVTdHJlYW1TaW5rOjpjcmVhdGUoW3RyYW5zZm9ybWVyID0gbV90cmFu
c2Zvcm1lciwgcmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBtX3JlYWRhYmxlU3RyZWFtU291cmNlLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRvJiBjb250ZXh0LCBhdXRvIHZhbHVlKSAt
PiBFeGNlcHRpb25Pcjx2b2lkPiB7CiAgICAgICAgIGlmICghY29udGV4dC5nbG9iYWxPYmplY3Qo
KSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9Owog
ICAgICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihjb250ZXh0Lmdsb2JhbE9iamVjdCgpKTsKQEAgLTIzOCw3ICsyNDIsNyBAQCB2b2lkIFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybTo6Y3JlYXRlU3RyZWFtcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfSkpOwogICAgIGlmICh3cml0
YWJsZS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gd3Jp
dGFibGUucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAgICAgbV9yZWFkYWJsZSA9IHJlYWRhYmxlLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIG1fd3JpdGFibGUgPSB3cml0YWJsZS5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKQEAgLTI0NiwzNiArMjUwLDI2IEBAIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtOjpjcmVhdGVTdHJlYW1zKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAg
ICAgICAgbV9yZWFkYWJsZS0+bG9jaygpOwogICAgICAgICBtX3dyaXRhYmxlLT5sb2NrKCk7CiAg
ICAgfQorICAgIHJldHVybiB7IH07CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZlB0cjxSZWFkYWJsZVN0
cmVhbT4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6cmVhZGFibGUoKQogewotICAgIGF1dG8qIGNv
bnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKLQotICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IGNvbnRleHQtPmdsb2JhbE9iamVjdCgpOwotICAgIGlmICghZ2xvYmFs
T2JqZWN0KQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
LQotICAgIGlmICghbV9yZWFkYWJsZSkKLSAgICAgICAgY3JlYXRlU3RyZWFtcygqZ2xvYmFsT2Jq
ZWN0KTsKLQorICAgIGlmICghbV9yZWFkYWJsZSkgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNy
ZWF0ZVN0cmVhbXMoKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIH0KICAgICByZXR1
cm4gbV9yZWFkYWJsZS5jb3B5UmVmKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZlB0cjxXcml0YWJs
ZVN0cmVhbT4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6d3JpdGFibGUoKQogewotICAgIGF1dG8q
IGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQot
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKLQotICAgIGF1
dG8qIGdsb2JhbE9iamVjdCA9IGNvbnRleHQtPmdsb2JhbE9iamVjdCgpOwotICAgIGlmICghZ2xv
YmFsT2JqZWN0KQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKLQotICAgIGlmICghbV93cml0YWJsZSkKLSAgICAgICAgY3JlYXRlU3RyZWFtcygqZ2xvYmFs
T2JqZWN0KTsKKyAgICBpZiAoIW1fd3JpdGFibGUpIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBj
cmVhdGVTdHJlYW1zKCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICB9CiAKICAgICBt
X2hhc1dyaXRhYmxlID0gdHJ1ZTsKICAgICByZXR1cm4gbV93cml0YWJsZS5jb3B5UmVmKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFt
ZVRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm0uaAppbmRleCBiNWE1ZWJlNDk0YTYxZDk3ODE4ODFiYWVhMzQxOGY1NWJh
N2IwOTdkLi42ZDE3YjBmYThmNzRkNDg2NDE0ZjczMzYzNjRkMWRhYzZmMzMxYzZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmgKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gY2xh
c3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKICAgICB2b2lkIGluaXRpYWxpemVUcmFuc2Zv
cm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lkZSk7Ci0gICAgdm9pZCBjcmVhdGVTdHJl
YW1zKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjcmVhdGVT
dHJlYW1zKCk7CiAKICAgICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2hhc1dyaXRhYmxlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5qcwppbmRleCBjNmRiZGY0MTdhZTE0ZjE2ZTllZTE4YjhlNmIz
MWJjZmNkNzk3NDEyLi41OTFkYTBjM2RkNTQzZmUyYTA3ZTliYTU2YzNkNTc5NWExZTVhOGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
anMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpz
CkBAIC0xMjMsNyArMTIzLDggQEAgZnVuY3Rpb24gcGlwZVRocm91Z2goc3RyZWFtcywgb3B0aW9u
cykKICAgICAgICAgICAgIHRocm93IEBtYWtlVHlwZUVycm9yKCJyZWFkYWJsZSBzaG91bGQgYmUg
UmVhZGFibGVTdHJlYW0iKTsKIAogICAgICAgICBjb25zdCB3cml0YWJsZSA9IHRyYW5zZm9ybXNb
IndyaXRhYmxlIl07Ci0gICAgICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0od3JpdGFibGUpKQor
ICAgICAgICBjb25zdCBpbnRlcm5hbFdyaXRhYmxlID0gQGdldEludGVybmFsV3JpdGFibGVTdHJl
YW0od3JpdGFibGUpOworICAgICAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKGludGVybmFsV3Jp
dGFibGUpKQogICAgICAgICAgICAgdGhyb3cgQG1ha2VUeXBlRXJyb3IoIndyaXRhYmxlIHNob3Vs
ZCBiZSBXcml0YWJsZVN0cmVhbSIpOwogCiAgICAgICAgIGxldCBwcmV2ZW50Q2xvc2UgPSBmYWxz
ZTsKQEAgLTE0OSwxMCArMTUwLDEwIEBAIGZ1bmN0aW9uIHBpcGVUaHJvdWdoKHN0cmVhbXMsIG9w
dGlvbnMpCiAgICAgICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCh0aGlzKSkKICAgICAg
ICAgICAgIHRocm93IEBtYWtlVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBsb2NrZWQiKTsK
IAotICAgICAgICBpZiAoQGlzV3JpdGFibGVTdHJlYW1Mb2NrZWQod3JpdGFibGUpKQorICAgICAg
ICBpZiAoQGlzV3JpdGFibGVTdHJlYW1Mb2NrZWQoaW50ZXJuYWxXcml0YWJsZSkpCiAgICAgICAg
ICAgICB0aHJvdyBAbWFrZVR5cGVFcnJvcigiV3JpdGFibGVTdHJlYW0gaXMgbG9ja2VkIik7CiAK
LSAgICAgICAgQHJlYWRhYmxlU3RyZWFtUGlwZVRvV3JpdGFibGVTdHJlYW0odGhpcywgd3JpdGFi
bGUsIHByZXZlbnRDbG9zZSwgcHJldmVudEFib3J0LCBwcmV2ZW50Q2FuY2VsLCBzaWduYWwpOwor
ICAgICAgICBAcmVhZGFibGVTdHJlYW1QaXBlVG9Xcml0YWJsZVN0cmVhbSh0aGlzLCBpbnRlcm5h
bFdyaXRhYmxlLCBwcmV2ZW50Q2xvc2UsIHByZXZlbnRBYm9ydCwgcHJldmVudENhbmNlbCwgc2ln
bmFsKTsKIAogICAgICAgICByZXR1cm4gcmVhZGFibGU7CiAgICAgfQpAQCAtMTk2LDcgKzE5Nyw4
IEBAIGZ1bmN0aW9uIHBpcGVUbyhkZXN0aW5hdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4g
QFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigib3B0aW9ucy5zaWduYWwgbXVzdCBiZSBB
Ym9ydFNpZ25hbCIpKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghQGlzV3JpdGFibGVTdHJl
YW0oZGVzdGluYXRpb24pKQorICAgICAgICBjb25zdCBpbnRlcm5hbERlc3RpbmF0aW9uID0gQGdl
dEludGVybmFsV3JpdGFibGVTdHJlYW0oZGVzdGluYXRpb24pOworICAgICAgICBpZiAoIUBpc1dy
aXRhYmxlU3RyZWFtKGludGVybmFsRGVzdGluYXRpb24pKQogICAgICAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIHBpcGVUbyByZXF1
aXJlcyBhIFdyaXRhYmxlU3RyZWFtIikpOwogCiAgICAgICAgIGlmICghQGlzUmVhZGFibGVTdHJl
YW0odGhpcykpCkBAIC0yMDUsMTAgKzIwNywxMCBAQCBmdW5jdGlvbiBwaXBlVG8oZGVzdGluYXRp
b24pCiAgICAgICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCh0aGlzKSkKICAgICAgICAg
ICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVh
bSBpcyBsb2NrZWQiKSk7CiAKLSAgICAgICAgaWYgKEBpc1dyaXRhYmxlU3RyZWFtTG9ja2VkKGRl
c3RpbmF0aW9uKSkKKyAgICAgICAgaWYgKEBpc1dyaXRhYmxlU3RyZWFtTG9ja2VkKGludGVybmFs
RGVzdGluYXRpb24pKQogICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VU
eXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtIGlzIGxvY2tlZCIpKTsKIAotICAgICAgICByZXR1cm4g
QHJlYWRhYmxlU3RyZWFtUGlwZVRvV3JpdGFibGVTdHJlYW0odGhpcywgZGVzdGluYXRpb24sIHBy
ZXZlbnRDbG9zZSwgcHJldmVudEFib3J0LCBwcmV2ZW50Q2FuY2VsLCBzaWduYWwpOworICAgICAg
ICByZXR1cm4gQHJlYWRhYmxlU3RyZWFtUGlwZVRvV3JpdGFibGVTdHJlYW0odGhpcywgaW50ZXJu
YWxEZXN0aW5hdGlvbiwgcHJldmVudENsb3NlLCBwcmV2ZW50QWJvcnQsIHByZXZlbnRDYW5jZWws
IHNpZ25hbCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IHJld3JpdGUgcGlwZVRvIHNvIGFzIHRv
IHJlcXVpcmUgdG8gaGF2ZSAndGhpcycgYXMgYSBSZWFkYWJsZVN0cmVhbSBhbmQgZGVzdGluYXRp
b24gYmUgYSBXcml0YWJsZVN0cmVhbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9UcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IGQzZDYzYzNm
ZmYxOTE2YzIxYjgyNjliZTdkNDNlZGM3YmVhYTMzNDQuLjQyNjNlMzk5MWE5M2JiNTFmOGM2ZTAx
ZjhkZTg5MmRjMjZlZjlmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9UcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbUludGVybmFscy5qcwpAQCAtOTUsNyArOTUsMTEg
QEAgZnVuY3Rpb24gaW5pdGlhbGl6ZVRyYW5zZm9ybVN0cmVhbShzdHJlYW0sIHN0YXJ0UHJvbWlz
ZSwgd3JpdGFibGVIaWdoV2F0ZXJNYXJrLAogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShvcHRp
b25zLCAiaGlnaFdhdGVyTWFyayIsIHJlYWRhYmxlSGlnaFdhdGVyTWFyayk7CiAgICAgY29uc3Qg
cmVhZGFibGUgPSBuZXcgQFJlYWRhYmxlU3RyZWFtKHVuZGVybHlpbmdTb3VyY2UsIG9wdGlvbnMp
OwogCisgICAgLy8gVGhlIHdyaXRhYmxlIHRvIGV4cG9zZSB0byBKUyB0aHJvdWdoIHdyaXRhYmxl
IGdldHRlci4KICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAid3JpdGFibGUiLCB3
cml0YWJsZSk7CisgICAgLy8gVGhlIHdyaXRhYmxlIHRvIHVzZSBmb3IgdGhlIGFjdHVhbCB0cmFu
c2Zvcm0gYWxnb3JpdGhtcy4KKyAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAiaW50
ZXJuYWxXcml0YWJsZSIsIEBnZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFtKHdyaXRhYmxlKSk7CisK
ICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAicmVhZGFibGUiLCByZWFkYWJsZSk7
CiAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgImJhY2twcmVzc3VyZSIsIEB1bmRl
ZmluZWQpOwogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShzdHJlYW0sICJiYWNrcHJlc3N1cmVD
aGFuZ2VQcm9taXNlIiwgQHVuZGVmaW5lZCk7CkBAIC0xMjEsNyArMTI1LDcgQEAgZnVuY3Rpb24g
dHJhbnNmb3JtU3RyZWFtRXJyb3JXcml0YWJsZUFuZFVuYmxvY2tXcml0ZShzdHJlYW0sIGUpCiAK
ICAgICBAdHJhbnNmb3JtU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJDbGVhckFsZ29yaXRobXMoQGdl
dEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgImNvbnRyb2xsZXIiKSk7CiAKLSAgICBjb25zdCB3
cml0YWJsZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShzdHJlYW0sICJ3cml0YWJsZSIpOworICAg
IGNvbnN0IHdyaXRhYmxlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgImludGVybmFs
V3JpdGFibGUiKTsKICAgICBAd3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckVycm9ySWZO
ZWVkZWQoQGdldEJ5SWREaXJlY3RQcml2YXRlKHdyaXRhYmxlLCAiY29udHJvbGxlciIpLCBlKTsK
IAogICAgIGlmIChAZ2V0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAiYmFja3ByZXNzdXJlIikp
CkBAIC0yNjIsNyArMjY2LDcgQEAgZnVuY3Rpb24gdHJhbnNmb3JtU3RyZWFtRGVmYXVsdFNpbmtX
cml0ZUFsZ29yaXRobShzdHJlYW0sIGNodW5rKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAg
IGNvbnN0IHdyaXRhYmxlID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgIndyaXRhYmxl
Iik7CisgICAgY29uc3Qgd3JpdGFibGUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAi
aW50ZXJuYWxXcml0YWJsZSIpOwogCiAgICAgQGFzc2VydChAZ2V0QnlJZERpcmVjdFByaXZhdGUo
d3JpdGFibGUsICJzdGF0ZSIpID09PSAid3JpdGFibGUiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5pZGwKaW5kZXggZDlhZTY2OWYxZGM5
ZDU2YTBiZDBhMzdmZGVjNjZiOWM1ZWE0MDQ3MS4uNGYxODAyNzNjYzQyYTM4NWE2YmY1NzRhZGUx
ZmVkMDM1Nzc0YzZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1dyaXRhYmxlU3RyZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
V3JpdGFibGVTdHJlYW0uaWRsCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNSBDYW5vbiBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBB
cHBsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwxNSArMzEs
MTYgQEAKIFsKICAgICBFbmFibGVkQXRSdW50aW1lPVdyaXRhYmxlU3RyZWFtQVBJLAogICAgIEV4
cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAotICAgIEpTQnVpbHRpbiwKICAgICBQcml2YXRlSWRlbnRp
ZmllciwKLSAgICBQdWJsaWNJZGVudGlmaWVyCisgICAgUHVibGljSWRlbnRpZmllciwKKyAgICBT
a2lwVlRhYmxlVmFsaWRhdGlvbgogXSBpbnRlcmZhY2UgV3JpdGFibGVTdHJlYW0gewotICAgIGNv
bnN0cnVjdG9yKG9wdGlvbmFsIG9iamVjdCB1bmRlcmx5aW5nU2luaywgb3B0aW9uYWwgUXVldWlu
Z1N0cmF0ZWd5IHN0cmF0ZWd5KTsKKyAgICAvLyBGSVhNRTogVGlnaHRlbiBwYXJhbWV0ZXIgbWF0
Y2hpbmcKKyAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBjb25zdHJ1Y3RvcihvcHRpb25hbCBv
YmplY3QgdW5kZXJseWluZ1NpbmssIG9wdGlvbmFsIG9iamVjdCBzdHJhdGVneSk7CiAKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBsb2NrZWQ7CiAKLSAgICBQcm9taXNlPGFueT4gYWJv
cnQob3B0aW9uYWwgYW55IHJlYXNvbik7Ci0gICAgUHJvbWlzZTxhbnk+IGNsb3NlKCk7Ci0gICAg
V3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyIGdldFdyaXRlcigpOworICAgIFtDdXN0b20sIFJl
dHVybnNPd25Qcm9taXNlXSBQcm9taXNlPGFueT4gYWJvcnQob3B0aW9uYWwgYW55IHJlYXNvbik7
CisgICAgW0N1c3RvbSwgUmV0dXJuc093blByb21pc2VdIFByb21pc2U8YW55PiBjbG9zZSgpOwor
ICAgIFtDdXN0b21dIFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlciBnZXRXcml0ZXIoKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJl
YW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NmY5MmYxYzAyNDdiYjJlNDU5MzUwMzU1
Njc2NzhiYWY5ZDNmM2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
Q2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYQotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBpbml0aWFsaXplV3JpdGFibGVT
dHJlYW0odW5kZXJseWluZ1NpbmssIHN0cmF0ZWd5KQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQot
ICAgIGlmICh1bmRlcmx5aW5nU2luayA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgdW5kZXJseWlu
Z1NpbmsgPSB7IH07Ci0KLSAgICBpZiAoc3RyYXRlZ3kgPT09IEB1bmRlZmluZWQpCi0gICAgICAg
IHN0cmF0ZWd5ID0geyB9OwotCi0gICAgaWYgKCFAaXNPYmplY3QodW5kZXJseWluZ1NpbmspKQot
ICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHRha2Vz
IGFuIG9iamVjdCBhcyBmaXJzdCBhcmd1bWVudCIpOwotCi0gICAgLy8gQ3JlYXRlV3JpdGVTdHJl
YW0gY29kZSBwYXRoLgotICAgIGlmIChAZ2V0QnlJZERpcmVjdFByaXZhdGUodW5kZXJseWluZ1Np
bmssICJXcml0YWJsZVN0cmVhbSIpKSB7Ci0gICAgICAgIEBwcml2YXRlSW5pdGlhbGl6ZVdyaXRh
YmxlU3RyZWFtKHRoaXMsIHVuZGVybHlpbmdTaW5rKTsKLQotICAgICAgICBjb25zdCBjb250cm9s
bGVyID0gbmV3IEBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKCk7Ci0KLSAgICAgICAg
QHNldFVwV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcih0aGlzLCBjb250cm9sbGVyLCB1
bmRlcmx5aW5nU2luay5zdGFydEFsZ29yaXRobSwgdW5kZXJseWluZ1Npbmsud3JpdGVBbGdvcml0
aG0sIHVuZGVybHlpbmdTaW5rLmNsb3NlQWxnb3JpdGhtLCB1bmRlcmx5aW5nU2luay5hYm9ydEFs
Z29yaXRobSwgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgc3RyYXRlZ3kuc2l6ZUFsZ29yaXRobSk7
Ci0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0KLQotICAgIGlmICgidHlwZSIgaW4gdW5kZXJs
eWluZ1NpbmspCi0gICAgICAgIEB0aHJvd1JhbmdlRXJyb3IoIkludmFsaWQgdHlwZSBpcyBzcGVj
aWZpZWQiKTsKLQotICAgIGNvbnN0IHNpemVBbGdvcml0aG0gPSBAZXh0cmFjdFNpemVBbGdvcml0
aG0oc3RyYXRlZ3kpOwotICAgIGNvbnN0IGhpZ2hXYXRlck1hcmsgPSBAZXh0cmFjdEhpZ2hXYXRl
ck1hcmsoc3RyYXRlZ3ksIDEpOwotCi0gICAgY29uc3QgdW5kZXJseWluZ1NpbmtEaWN0ID0geyB9
OwotICAgIGlmICgic3RhcnQiIGluIHVuZGVybHlpbmdTaW5rKSB7Ci0gICAgICAgIHVuZGVybHlp
bmdTaW5rRGljdFsic3RhcnQiXSA9IHVuZGVybHlpbmdTaW5rWyJzdGFydCJdOwotICAgICAgICBp
ZiAodHlwZW9mIHVuZGVybHlpbmdTaW5rRGljdFsic3RhcnQiXSAhPT0gImZ1bmN0aW9uIikKLSAg
ICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigidW5kZXJseWluZ1Npbmsuc3RhcnQgc2hvdWxkIGJl
IGEgZnVuY3Rpb24iKTsKLSAgICB9Ci0gICAgaWYgKCJ3cml0ZSIgaW4gdW5kZXJseWluZ1Npbmsp
IHsKLSAgICAgICAgdW5kZXJseWluZ1NpbmtEaWN0WyJ3cml0ZSJdID0gdW5kZXJseWluZ1Npbmtb
IndyaXRlIl07Ci0gICAgICAgIGlmICh0eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJ3cml0ZSJd
ICE9PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5n
U2luay53cml0ZSBzaG91bGQgYmUgYSBmdW5jdGlvbiIpOwotICAgIH0KLSAgICBpZiAoImNsb3Nl
IiBpbiB1bmRlcmx5aW5nU2luaykgewotICAgICAgICB1bmRlcmx5aW5nU2lua0RpY3RbImNsb3Nl
Il0gPSB1bmRlcmx5aW5nU2lua1siY2xvc2UiXTsKLSAgICAgICAgaWYgKHR5cGVvZiB1bmRlcmx5
aW5nU2lua0RpY3RbImNsb3NlIl0gIT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoInVuZGVybHlpbmdTaW5rLmNsb3NlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7Ci0g
ICAgfQotICAgIGlmICgiYWJvcnQiIGluIHVuZGVybHlpbmdTaW5rKSB7Ci0gICAgICAgIHVuZGVy
bHlpbmdTaW5rRGljdFsiYWJvcnQiXSA9IHVuZGVybHlpbmdTaW5rWyJhYm9ydCJdOwotICAgICAg
ICBpZiAodHlwZW9mIHVuZGVybHlpbmdTaW5rRGljdFsiYWJvcnQiXSAhPT0gImZ1bmN0aW9uIikK
LSAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigidW5kZXJseWluZ1NpbmsuYWJvcnQgc2hvdWxk
IGJlIGEgZnVuY3Rpb24iKTsKLSAgICB9Ci0KLSAgICBAcHJpdmF0ZUluaXRpYWxpemVXcml0YWJs
ZVN0cmVhbSh0aGlzLCB1bmRlcmx5aW5nU2luayk7Ci0gICAgQHNldFVwV3JpdGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlckZyb21VbmRlcmx5aW5nU2luayh0aGlzLCB1bmRlcmx5aW5nU2luaywg
dW5kZXJseWluZ1NpbmtEaWN0LCBoaWdoV2F0ZXJNYXJrLCBzaXplQWxnb3JpdGhtKTsKLQotICAg
IHJldHVybiB0aGlzOwotfQotCi1AZ2V0dGVyCi1mdW5jdGlvbiBsb2NrZWQoKQotewotICAgICJ1
c2Ugc3RyaWN0IjsKLQotICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0odGhpcykpCi0gICAgICAg
IHRocm93IEBtYWtlVGhpc1R5cGVFcnJvcigiV3JpdGFibGVTdHJlYW0iLCAibG9ja2VkIik7Ci0K
LSAgICByZXR1cm4gQGlzV3JpdGFibGVTdHJlYW1Mb2NrZWQodGhpcyk7Ci19Ci0KLWZ1bmN0aW9u
IGFib3J0KHJlYXNvbikKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoIUBpc1dyaXRh
YmxlU3RyZWFtKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVRo
aXNUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtIiwgImFib3J0IikpOwotCi0gICAgaWYgKEBpc1dy
aXRhYmxlU3RyZWFtTG9ja2VkKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVj
dChAbWFrZVR5cGVFcnJvcigiV3JpdGFibGVTdHJlYW0uYWJvcnQgbWV0aG9kIGNhbiBvbmx5IGJl
IHVzZWQgb24gbm9uIGxvY2tlZCBXcml0YWJsZVN0cmVhbSIpKTsKLQotICAgIHJldHVybiBAd3Jp
dGFibGVTdHJlYW1BYm9ydCh0aGlzLCByZWFzb24pOwotfQotCi1mdW5jdGlvbiBjbG9zZSgpCi17
Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKCFAaXNXcml0YWJsZVN0cmVhbSh0aGlzKSkK
LSAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUaGlzVHlwZUVycm9yKCJXcml0
YWJsZVN0cmVhbSIsICJjbG9zZSIpKTsKLQotICAgIGlmIChAaXNXcml0YWJsZVN0cmVhbUxvY2tl
ZCh0aGlzKSkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3Io
IldyaXRhYmxlU3RyZWFtLmNsb3NlIG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIG9uIG5vbiBsb2Nr
ZWQgV3JpdGFibGVTdHJlYW0iKSk7Ci0KLSAgICBpZiAoQHdyaXRhYmxlU3RyZWFtQ2xvc2VRdWV1
ZWRPckluRmxpZ2h0KHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFr
ZVR5cGVFcnJvcigiV3JpdGFibGVTdHJlYW0uY2xvc2UgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQg
b24gYSBiZWluZyBjbG9zZSBXcml0YWJsZVN0cmVhbSIpKTsKLQotICAgIHJldHVybiBAd3JpdGFi
bGVTdHJlYW1DbG9zZSh0aGlzKTsKLX0KLQotZnVuY3Rpb24gZ2V0V3JpdGVyKCkKLXsKLSAgICAi
dXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRoaXMpKQotICAgICAg
ICB0aHJvdyBAbWFrZVRoaXNUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtIiwgImdldFdyaXRlciIp
OwotCi0gICAgcmV0dXJuIEBhY3F1aXJlV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyKHRoaXMp
OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxl
U3RyZWFtRGVmYXVsdFdyaXRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9X
cml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIuanMKaW5kZXggZTlkYzk3MTA1ODNjNDk1NDA2Mzdm
YWFiMTc1YWIxZDZkMTA1Mjc3Yi4uNjlhOTUzZmMzZjM5ZTJkMThjNDdiMzZmNGExMGFhOGRlYjU4
M2JiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxl
U3RyZWFtRGVmYXVsdFdyaXRlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyLmpzCkBAIC0yNyw2ICsyNywxMiBAQCBmdW5j
dGlvbiBpbml0aWFsaXplV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyKHN0cmVhbSkKIHsKICAg
ICAidXNlIHN0cmljdCI7CiAKKyAgICAvLyBzdHJlYW0gY2FuIGJlIGEgV3JpdGFibGVTdHJlYW0g
aWYgV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyIGNvbnN0cnVjdG9yIGlzIGNhbGxlZCBkaXJl
Y3RseSBmcm9tIEpTCisgICAgLy8gb3IgYW4gSW50ZXJuYWxXcml0YWJsZVN0cmVhbSBpbiBvdGhl
ciBjb2RlIHBhdGhzLgorICAgIGNvbnN0IGludGVybmFsU3RyZWFtID0gQGdldEludGVybmFsV3Jp
dGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICBpZiAoaW50ZXJuYWxTdHJlYW0pCisgICAgICAgIHN0
cmVhbSA9IGludGVybmFsU3RyZWFtOworCiAgICAgaWYgKCFAaXNXcml0YWJsZVN0cmVhbShzdHJl
YW0pKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRl
ciBjb25zdHJ1Y3RvciB0YWtlcyBhIFdyaXRhYmxlU3RyZWFtIik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qcyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5q
cwppbmRleCA2NzA1MDQ2M2UxYzJlNzRkMjRjMzA2MDBjZDdkMmRlZTVlZDhkM2MyLi44MjIzODQ2
MWVmNmVmNGU1MmE2MjRhNzYzOWZjNDQyMmFiOGQxZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCkBA
IC01Nyw3ICs1Nyw2NiBAQCBmdW5jdGlvbiBjcmVhdGVXcml0YWJsZVN0cmVhbShzdGFydEFsZ29y
aXRobSwgd3JpdGVBbGdvcml0aG0sIGNsb3NlQWxnb3JpdGhtLCBhYgogICAgIHJldHVybiBuZXcg
QFdyaXRhYmxlU3RyZWFtKHVuZGVybHlpbmdTaW5rLCB7IHNpemVBbGdvcml0aG06IHdyaXRhYmxl
U2l6ZUFsZ29yaXRobSwgaGlnaFdhdGVyTWFyazogd3JpdGFibGVIaWdoV2F0ZXJNYXJrIH0pOwog
fQogCi1mdW5jdGlvbiBwcml2YXRlSW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtKHN0cmVhbSwgdW5k
ZXJseWluZ1NpbmspCitmdW5jdGlvbiBjcmVhdGVJbnRlcm5hbFdyaXRhYmxlU3RyZWFtKHVuZGVy
bHlpbmdTaW5rLCBzdHJhdGVneSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBjb25zdCBz
dHJlYW0gPSB7IH07CisKKyAgICBpZiAodW5kZXJseWluZ1NpbmsgPT09IEB1bmRlZmluZWQpCisg
ICAgICAgIHVuZGVybHlpbmdTaW5rID0geyB9OworCisgICAgaWYgKHN0cmF0ZWd5ID09PSBAdW5k
ZWZpbmVkKQorICAgICAgICBzdHJhdGVneSA9IHsgfTsKKworICAgIGlmICghQGlzT2JqZWN0KHVu
ZGVybHlpbmdTaW5rKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbSBj
b25zdHJ1Y3RvciB0YWtlcyBhbiBvYmplY3QgYXMgZmlyc3QgYXJndW1lbnQiKTsKKworICAgIC8v
IGNyZWF0ZVdyaXRlU3RyZWFtIGNvZGUgcGF0aC4KKyAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2
YXRlKHVuZGVybHlpbmdTaW5rLCAiV3JpdGFibGVTdHJlYW0iKSkgeworICAgICAgICBAaW5pdGlh
bGl6ZVdyaXRhYmxlU3RyZWFtU2xvdHMoc3RyZWFtLCB1bmRlcmx5aW5nU2luayk7CisKKyAgICAg
ICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBAV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
cigpOworCisgICAgICAgIEBzZXRVcFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIoc3Ry
ZWFtLCBjb250cm9sbGVyLCB1bmRlcmx5aW5nU2luay5zdGFydEFsZ29yaXRobSwgdW5kZXJseWlu
Z1Npbmsud3JpdGVBbGdvcml0aG0sIHVuZGVybHlpbmdTaW5rLmNsb3NlQWxnb3JpdGhtLCB1bmRl
cmx5aW5nU2luay5hYm9ydEFsZ29yaXRobSwgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgc3RyYXRl
Z3kuc2l6ZUFsZ29yaXRobSk7CisgICAgICAgIHJldHVybiBzdHJlYW07CisgICAgfQorCisgICAg
aWYgKCJ0eXBlIiBpbiB1bmRlcmx5aW5nU2luaykKKyAgICAgICAgQHRocm93UmFuZ2VFcnJvcigi
SW52YWxpZCB0eXBlIGlzIHNwZWNpZmllZCIpOworCisgICAgY29uc3Qgc2l6ZUFsZ29yaXRobSA9
IEBleHRyYWN0U2l6ZUFsZ29yaXRobShzdHJhdGVneSk7CisgICAgY29uc3QgaGlnaFdhdGVyTWFy
ayA9IEBleHRyYWN0SGlnaFdhdGVyTWFyayhzdHJhdGVneSwgMSk7CisKKyAgICBjb25zdCB1bmRl
cmx5aW5nU2lua0RpY3QgPSB7IH07CisgICAgaWYgKCJzdGFydCIgaW4gdW5kZXJseWluZ1Npbmsp
IHsKKyAgICAgICAgdW5kZXJseWluZ1NpbmtEaWN0WyJzdGFydCJdID0gdW5kZXJseWluZ1Npbmtb
InN0YXJ0Il07CisgICAgICAgIGlmICh0eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJzdGFydCJd
ICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5n
U2luay5zdGFydCBzaG91bGQgYmUgYSBmdW5jdGlvbiIpOworICAgIH0KKyAgICBpZiAoIndyaXRl
IiBpbiB1bmRlcmx5aW5nU2luaykgeworICAgICAgICB1bmRlcmx5aW5nU2lua0RpY3RbIndyaXRl
Il0gPSB1bmRlcmx5aW5nU2lua1sid3JpdGUiXTsKKyAgICAgICAgaWYgKHR5cGVvZiB1bmRlcmx5
aW5nU2lua0RpY3RbIndyaXRlIl0gIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoInVuZGVybHlpbmdTaW5rLndyaXRlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7Cisg
ICAgfQorICAgIGlmICgiY2xvc2UiIGluIHVuZGVybHlpbmdTaW5rKSB7CisgICAgICAgIHVuZGVy
bHlpbmdTaW5rRGljdFsiY2xvc2UiXSA9IHVuZGVybHlpbmdTaW5rWyJjbG9zZSJdOworICAgICAg
ICBpZiAodHlwZW9mIHVuZGVybHlpbmdTaW5rRGljdFsiY2xvc2UiXSAhPT0gImZ1bmN0aW9uIikK
KyAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigidW5kZXJseWluZ1NpbmsuY2xvc2Ugc2hvdWxk
IGJlIGEgZnVuY3Rpb24iKTsKKyAgICB9CisgICAgaWYgKCJhYm9ydCIgaW4gdW5kZXJseWluZ1Np
bmspIHsKKyAgICAgICAgdW5kZXJseWluZ1NpbmtEaWN0WyJhYm9ydCJdID0gdW5kZXJseWluZ1Np
bmtbImFib3J0Il07CisgICAgICAgIGlmICh0eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJhYm9y
dCJdICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5
aW5nU2luay5hYm9ydCBzaG91bGQgYmUgYSBmdW5jdGlvbiIpOworICAgIH0KKworICAgIEBpbml0
aWFsaXplV3JpdGFibGVTdHJlYW1TbG90cyhzdHJlYW0sIHVuZGVybHlpbmdTaW5rKTsKKyAgICBA
c2V0VXBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRnJvbVVuZGVybHlpbmdTaW5rKHN0
cmVhbSwgdW5kZXJseWluZ1NpbmssIHVuZGVybHlpbmdTaW5rRGljdCwgaGlnaFdhdGVyTWFyaywg
c2l6ZUFsZ29yaXRobSk7CisKKyAgICByZXR1cm4gc3RyZWFtOworfQorCitmdW5jdGlvbiBpbml0
aWFsaXplV3JpdGFibGVTdHJlYW1TbG90cyhzdHJlYW0sIHVuZGVybHlpbmdTaW5rKQogewogICAg
IEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShzdHJlYW0sICJzdGF0ZSIsICJ3cml0YWJsZSIpOwogICAg
IEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShzdHJlYW0sICJzdG9yZWRFcnJvciIsIEB1bmRlZmluZWQp
OwpAQCAtNzIsNiArMTMxLDI1IEBAIGZ1bmN0aW9uIHByaXZhdGVJbml0aWFsaXplV3JpdGFibGVT
dHJlYW0oc3RyZWFtLCB1bmRlcmx5aW5nU2luaykKICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUo
c3RyZWFtLCAidW5kZXJseWluZ1NpbmsiLCB1bmRlcmx5aW5nU2luayk7CiB9CiAKK2Z1bmN0aW9u
IHdyaXRhYmxlU3RyZWFtQ2xvc2VGb3JCaW5kaW5ncyhzdHJlYW0pCit7CisgICAgaWYgKEBpc1dy
aXRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkpCisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVq
ZWN0KEBtYWtlVHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbS5jbG9zZSBtZXRob2QgY2FuIG9ubHkg
YmUgdXNlZCBvbiBub24gbG9ja2VkIFdyaXRhYmxlU3RyZWFtIikpOworCisgICAgaWYgKEB3cml0
YWJsZVN0cmVhbUNsb3NlUXVldWVkT3JJbkZsaWdodChzdHJlYW0pKQorICAgICAgICByZXR1cm4g
QFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigiV3JpdGFibGVTdHJlYW0uY2xvc2UgbWV0
aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24gYSBiZWluZyBjbG9zZSBXcml0YWJsZVN0cmVhbSIpKTsK
KworICAgIHJldHVybiBAd3JpdGFibGVTdHJlYW1DbG9zZShzdHJlYW0pOworfQorCitmdW5jdGlv
biB3cml0YWJsZVN0cmVhbUFib3J0Rm9yQmluZGluZ3Moc3RyZWFtLCByZWFzb24pCit7CisgICAg
aWYgKEBpc1dyaXRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkpCisgICAgICAgIHJldHVybiBAUHJv
bWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbS5hYm9ydCBtZXRob2Qg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBub24gbG9ja2VkIFdyaXRhYmxlU3RyZWFtIikpOworCisgICAg
cmV0dXJuIEB3cml0YWJsZVN0cmVhbUFib3J0KHN0cmVhbSwgcmVhc29uKTsKK30KKwogZnVuY3Rp
b24gaXNXcml0YWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCiB7CiAgICAgcmV0dXJuIEBnZXRCeUlk
RGlyZWN0UHJpdmF0ZShzdHJlYW0sICJ3cml0ZXIiKSAhPT0gQHVuZGVmaW5lZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggZmVmZjlkMDU5ZGY4ZmMzZDliMjhjODBmN2EwNjBlZmZjNTU4MTNlOC4uMzgwYzY1
ZDUwZDZiY2Q3NDk5MjBiNjU3NTEyMzk1NzQ5MTIxNzUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQy
Nyw2ICs0MjcsNyBAQCBiaW5kaW5ncy9qcy9ET01HQ091dHB1dENvbnN0cmFpbnQuY3BwCiBiaW5k
aW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCiBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3Bw
CiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorYmluZGluZ3MvanMvSW50ZXJu
YWxXcml0YWJsZVN0cmVhbS5jcHAKIGJpbmRpbmdzL2pzL0pTQWJvcnRTaWduYWxDdXN0b20uY3Bw
CiBiaW5kaW5ncy9qcy9KU0Fic3RyYWN0UmFuZ2VDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0Fu
aW1hdGlvbkVmZmVjdEN1c3RvbS5jcHAKQEAgLTU3MCw3ICs1NzEsNiBAQCBiaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmNwcAogYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250
cm9sbGVyLmNwcAogYmluZGluZ3MvanMvV29ya2VyTW9kdWxlU2NyaXB0TG9hZGVyLmNwcAogYmlu
ZGluZ3MvanMvV2luZG93UHJveHkuY3BwCi1iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAK
IGJyaWRnZS9JZGVudGlmaWVyUmVwLmNwcAogYnJpZGdlL05QX2pzb2JqZWN0LmNwcAogYnJpZGdl
L2MvQ1J1bnRpbWVPYmplY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjZjMGUzYzdmMGQ1OGZlZWE4MDg1OWMxOThiMjIx
MmUwMDE3MTdhYS4uODhiMmI4MTY0YWYxZTE2ZmE4OGJhZDc5NDM3MmYxYTkxMDI3OTFmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTExNCw3ICsxMTE0LDYgQEAKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDQzIC8qIFJlYWRh
YmxlQnl0ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzNGNjQgLyogUmVhZGFi
bGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3Jp
dGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRhYmxl
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFibGVT
dHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZF
NkZFOTFCQkQxMkU1MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAw
Qjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFQ0FFNTI1QjU4Q0M0MDBCMzREQTUgLyog
TWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFQ0FFMzI1QjU4Q0M0MDBCMzREQTUgLyogTWVkaWFTZXNz
aW9uR3JvdXBJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDE2RURCRjYyNjAwRDY3OTAwMDkyNjc1IC8qIFJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE2RURCRjQyNjAwRDY3ODAwMDkyNjc1IC8qIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxNkVEQzAwMjYwMEU3ODgwMDA5MjY3NSAvKiBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkVEQkZGMjYw
MEU3ODcwMDA5MjY3NSAvKiBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzgzMCw4ICs3ODI5LDggQEAK
IAkJNDE0MTg5RkYyNTY0MThFNzAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ0VuY29kZWRWaWRlb0ZyYW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0MThBMDAyNTY0MzU5NzAwMzYz
NDE3IC8qIFdyaXRhYmxlU3RyZWFtU2luay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV3Jp
dGFibGVTdHJlYW1TaW5rLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0MThB
MDIyNTY0MzU5ODAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtU2luay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXcml0YWJsZVN0cmVhbVNpbmsuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDE0MThBMDMyNTY0M0UxMjAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFt
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFt
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE0MThBMDQyNTY0M0UxMzAwMzYz
NDE3IC8qIFdyaXRhYmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdyaXRhYmxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4QTAz
MjU2NDNFMTIwMDM2MzQxNyAvKiBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGVybmFsV3JpdGFibGVTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyog
SW50ZXJuYWxXcml0YWJsZVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNDE4QTA1MjU2NjYwQUYwMDM2MzQxNyAvKiBSVENFbmNvZGVkRnJhbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDRW5jb2RlZEZyYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0MThBMDYyNTY2NjBCMDAwMzYzNDE3IC8qIFJUQ0Vu
Y29kZWRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENFbmNvZGVk
RnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0NDYwQTAyNDEyOTk0MTAw
ODE0QkU3IC8qIE1lZGlhU2Vzc2lvbklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODEyOCw2ICs4MTI3LDggQEAKIAkJNDFFNTk0MDEyMTQ4NjVBQjAwRDNDQjYx
IC8qIFJUQ1J0cEZlY1BhcmFtZXRlcnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cEZlY1BhcmFtZXRlcnMuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUU2N0E3RjI1RDE2ODQ2MDA3QjBBNEMg
LyogU1RVTk1lc3NhZ2VQYXJzaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNUVU5NZXNzYWdlUGFyc2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxRTY3QTgxMjVEMTY4NDcwMDdCMEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1RVTk1lc3NhZ2VQYXJzaW5nLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRTZENzIxMjZFQUEwNDUwMEI3NjVENiAvKiBXcml0
YWJsZVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0YWJsZVN0
cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUU2RDcyMjI2RUFBMDQ2MDBC
NzY1RDYgLyogV3JpdGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV3JpdGFibGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUU5RENFNDIzMTk3M0ZFMDBGMzU5NDkgLyogQmxvYkxvYWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCbG9iTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRTlEQ0U2MjMxOTc0MjMwMEYzNTk0OSAvKiBFbmRpbmdUeXBlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBFbmRpbmdUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFFOURDRTgyMzE5Q0E3NTAwRjM1OTQ5IC8qIE5ldHdvcmtTZW5kUXVldWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1NlbmRRdWV1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIyNDksNyArMTIyNTAsNiBAQAogCQk5OTA4QjBFRDFC
Q0FDRjkxMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ku
anM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEVFMUJDQUNGOTEwMEVEMEY2
NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNj
cmlwdDsgcGF0aCA9IENvdW50UXVldWluZ1N0cmF0ZWd5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OTA4QjBFRjFCQ0FDRjkxMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW0uanMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5q
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIwRUYxQkNBQ0Y5MTAwRUQwRjc1
IC8qIFdyaXRhYmxlU3RyZWFtLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBw
YXRoID0gV3JpdGFibGVTdHJlYW0uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5
MDhCMEYwMUJDQUNGOTEwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVy
LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkw
OEIwRjAxQkNBQ0Y5MTAwRUQzRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuanMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGMDFC
Q0FDRjkxMDBFRDU2NzIgLyogUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3Qu
anM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjI2NCw3ICsxMjI2NCw2IEBACiAJ
CTk5MDhCMEY2MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvdW50UXVldWluZ1N0
cmF0ZWd5QnVpbHRpbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1
ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJOTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5
QnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ291bnRRdWV1aW5n
U3RyYXRlZ3lCdWlsdGlucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1
ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCTk5MDhCMEY5MUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlYWRhYmxlU3RyZWFt
QnVpbHRpbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9SZWFkYWJsZVN0cmVh
bUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJOTkw
OEIwRjkxQkNBRDA3RDAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV3JpdGFibGVTdHJlYW1CdWlsdGlucy5j
cHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1dyaXRhYmxlU3RyZWFtQnVpbHRpbnMu
Y3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5OTA4QjBGQTFCQ0FE
MDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXJCdWlsdGlucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5MDhCMEZCMUJDQUQwN0QwMEVEMEY2NSAvKiBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5z
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXJCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNTUgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0xMjMw
NCw3ICsxMjMwMyw2IEBACiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0
cmVhbUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlYWRhYmxl
U3RyZWFtQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUmVhZGFibGVT
dHJlYW1CdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5
QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZWFkYWJsZVN0cmVhbUludGVy
bmFsc0J1aWx0aW5zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NERBIC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1
aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRE9NQmluZGluZ0lu
dGVybmFsc0J1aWx0aW5zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NQmlu
ZGluZ0ludGVybmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07Ci0JCTlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdyaXRhYmxlU3RyZWFtQnVpbHRp
bnMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV3JpdGFibGVTdHJlYW1CdWlsdGlu
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5QjAzRDgwNjFCQjMx
MTBEMDBCNzY0RTkgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5z
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxz
QnVpbHRpbnMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOUIwM0Q4
MDYxQkIzMTEwRDAwQjc2NEVBIC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRyYW5zZm9ybVN0cmVhbUludGVybmFs
c0J1aWx0aW5zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1RyYW5zZm9ybVN0cmVh
bUludGVybmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCTlCMDk4QkQ1MUYzRDYwMzMwMDJERDU2MiAvKiBEYXRhVHJhbnNmZXJJdGVtLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFUcmFuc2Zlckl0ZW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk2NDksOCArMTk2NDcsOSBAQAogCQkJCTQx
RkNBNUZBMjRFQUFGMTYwMDVFMUJBNiAvKiBUcmFuc2Zvcm1TdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5pZGwgKi8sCiAJCQkJNDFGQ0E1RkIyNEVBQUYxNjAwNUUxQkE2IC8qIFRyYW5zZm9ybVN0cmVh
bURlZmF1bHRDb250cm9sbGVyLmpzICovLAogCQkJCTQxRkNBNUZDMjRFQUI3ODAwMDVFMUJBNiAv
KiBUcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHMuanMgKi8sCisJCQkJNDFFNkQ3MjIyNkVBQTA0NjAw
Qjc2NUQ2IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCAqLywKKwkJCQk0MUU2RDcyMTI2RUFBMDQ1MDBC
NzY1RDYgLyogV3JpdGFibGVTdHJlYW0uaCAqLywKIAkJCQk0MUEwMjNFRDFBMzlEQjc5MDBGNzIy
REYgLyogV3JpdGFibGVTdHJlYW0uaWRsICovLAotCQkJCTk5MDhCMEVGMUJDQUNGOTEwMEVEMEY3
NSAvKiBXcml0YWJsZVN0cmVhbS5qcyAqLywKIAkJCQk0MTc2NjczNDI0REMwOEVCMDA4QkZFMjgg
LyogV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgKi8sCiAJCQkJNDE3NjY3MzMy
NERDMDhFQjAwOEJGRTI4IC8qIFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgKi8s
CiAJCQkJNDE3NjY3MzAyNERDMDhFQTAwOEJGRTI4IC8qIFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdy
aXRlci5pZGwgKi8sCkBAIC0yMTc1Niw4ICsyMTc1NSw2IEBACiAJCQkJQzIxQkY3NDIyMUNEOTYz
QjAwMjI3OTc5IC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5LmggKi8sCiAJCQkJMUM1MEM0OTUyMkM4
NEYyNDAwQTZFNEJFIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwICovLAog
CQkJCTUxNzQ4RkEyMUNDNkVFRUIwMDcyOEQ4NCAvKiBXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9ycy5pZGwgKi8sCi0JCQkJOTkwOEIwRjkxQkNBRDA3RDAwRUQwRjc1IC8qIFdyaXRhYmxlU3Ry
ZWFtQnVpbHRpbnMuY3BwICovLAotCQkJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0
YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi8sCiAJCQkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjc1IC8q
IFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovLAogCQkJCTlCMDNEODA2MUJC
MzExMEQwMEI3NjRFOSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8sCiAJ
CQkJNjU2NTgxRUEwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuY3BwICovLApAQCAtMjcx
MzUsNiArMjcxMzIsOCBAQAogCQkJCTE0MzJFODQ2MEM1MTQ5MzgwMEIxNTAwRiAvKiBHQ0NvbnRy
b2xsZXIuaCAqLywKIAkJCQlDNTg1QTY2MDExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0
aWxpdGllcy5jcHAgKi8sCiAJCQkJQzU4NUE2NjExMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRp
bmdVdGlsaXRpZXMuaCAqLywKKwkJCQk0MTQxOEEwMzI1NjQzRTEyMDAzNjM0MTcgLyogSW50ZXJu
YWxXcml0YWJsZVN0cmVhbS5jcHAgKi8sCisJCQkJNDE0MThBMDQyNTY0M0UxMzAwMzYzNDE3IC8q
IEludGVybmFsV3JpdGFibGVTdHJlYW0uaCAqLywKIAkJCQk5QkQ0RTkxNDFDNDYyODcyMDA1MDY1
QkMgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCAqLywKIAkJCQk5QkQ0RTkxNTFDNDYy
ODcyMDA1MDY1QkMgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggKi8sCiAJCQkJN0M1N0JG
RTYxRURFMkY1QjAwNTM0QTQ4IC8qIEpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmggKi8sCkBAIC0y
NzIyOSw4ICsyNzIyOCw2IEBACiAJCQkJRTM0MzJERTMyNUQzNzdFMzAwNThFNjEyIC8qIFdvcmtl
ck1vZHVsZVNjcmlwdExvYWRlci5jcHAgKi8sCiAJCQkJRTM0MzJERTAyNUQzNzdFMjAwNThFNjEy
IC8qIFdvcmtlck1vZHVsZVNjcmlwdExvYWRlci5oICovLAogCQkJCUUzNDdFNUY4MjVENEYwMDAw
MEYxN0E1QyAvKiBXb3JrZXJTY3JpcHRGZXRjaGVyLmggKi8sCi0JCQkJNDE0MThBMDMyNTY0M0Ux
MjAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCAqLywKLQkJCQk0MTQxOEEwNDI1NjQzRTEz
MDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0ganM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzU2MTYsNyArMzU2MTMsNyBAQAogCQkJCTgz
NEE2QTNBMjUyNjg0NEEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODMzQkQ4MTcyNTI0RDRGMjAwNkU3MkIzIC8qIFdvcmtsZXRQZW5kaW5nVGFza3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTI0MDk5RTY0OTIwMDU2RTU4MSAvKiBXcmFwQ29u
dGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNkU2RkU5MUJC
RDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MUU2RDcyMzI2RUFBMDQ2MDBCNzY1RDYgLyogV3JpdGFibGVTdHJlYW0uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUlu
dGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFGM0IyNDEyQzFBMzk4MDAw
MTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0NzZBQTgx
NURDNEJCMTAwMzA1REIyIC8qIFdyaXRpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTM2ODY3
LDYgKzM2ODY0LDcgQEAKIAkJCQlFMUVFOEI5MTI0MTMxOTUwMDBFNzk0RDYgLyogV2ViWFJWaWV3
cG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUVFOEI4MzI0MTMxOTFGMDBFNzk0RDYgLyog
V2ViWFJXZWJHTExheWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1Qzcw
MERBNjNBNiAvKiBXS1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCisJCQkJNDFFNkQ3MjQyNkVB
QTA0NjAwQjc2NUQ2IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
MzNDN0NDMEEyQ0YwNzQwMEQ1NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMTVBMzZEOTExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ludGVybmFs
V3JpdGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSW50ZXJuYWxX
cml0YWJsZVN0cmVhbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBhYTZhZjhkZDEzNmQ1ZDhjYjdkYjdhZjgw
YjRiZTdlMzcxNDlmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0ludGVybmFsV3JpdGFibGVTdHJlYW0uY3BwCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5oIgorCisjaW5jbHVkZSAi
RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBFeGNlcHRpb25PcjxKU0M6OkpTVmFsdWU+IGludm9rZVdy
aXRhYmxlU3RyZWFtRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBj
b25zdCBKU0M6OklkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IEpTQzo6TWFya2VkQXJndW1l
bnRCdWZmZXImIGFyZ3VtZW50cykKK3sKKyAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC52
bSgpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAgYXV0byBmdW5jdGlv
biA9IGdsb2JhbE9iamVjdC5nZXQoJmdsb2JhbE9iamVjdCwgaWRlbnRpZmllcik7CisgICAgQVNT
RVJUKGZ1bmN0aW9uLmlzQ2FsbGFibGUodm0pKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2
bSwgZnVuY3Rpb24pOworCisgICAgYXV0byByZXN1bHQgPSBjYWxsKCZnbG9iYWxPYmplY3QsIGZ1
bmN0aW9uLCBjYWxsRGF0YSwgSlNDOjpqc1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOworICAgIGlm
IChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitF
eGNlcHRpb25PcjxSZWY8SW50ZXJuYWxXcml0YWJsZVN0cmVhbT4+IEludGVybmFsV3JpdGFibGVT
dHJlYW06OmNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgdW5kZXJseWluZ1NpbmssIEpTQzo6SlNWYWx1ZSBzdHJhdGVneSkKK3sKKyAgICBhdXRvKiBj
bGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihnbG9iYWxPYmplY3Qudm0o
KS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBwcml2YXRlTmFtZSA9IGNsaWVudERhdGEtPmJ1aWx0
aW5GdW5jdGlvbnMoKS53cml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zKCkuY3JlYXRlSW50
ZXJuYWxXcml0YWJsZVN0cmVhbVByaXZhdGVOYW1lKCk7CisKKyAgICBKU0M6Ok1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHVuZGVybHlpbmdTaW5r
KTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHN0cmF0ZWd5KTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50
cy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgYXV0byByZXN1bHQgPSBpbnZva2VXcml0YWJsZVN0
cmVhbUZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CisgICAg
aWYgKFVOTElLRUxZKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgQVNTRVJUKHJlc3VsdC5yZXR1cm5WYWx1ZSgp
LmlzT2JqZWN0KCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEludGVybmFsV3JpdGFibGVT
dHJlYW0oZ2xvYmFsT2JqZWN0LCAqcmVzdWx0LnJldHVyblZhbHVlKCkudG9PYmplY3QoJmdsb2Jh
bE9iamVjdCkpKTsKK30KKworYm9vbCBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtOjpsb2NrZWQoKSBj
b25zdAoreworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwor
ICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworCisgICAg
YXV0byogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4oZ2xvYmFsT2Jq
ZWN0LT52bSgpLmNsaWVudERhdGEpOworICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0
YS0+YnVpbHRpbkZ1bmN0aW9ucygpLndyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5p
c1dyaXRhYmxlU3RyZWFtTG9ja2VkUHJpdmF0ZU5hbWUoKTsKKworICAgIEpTQzo6TWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoZ3VhcmRlZE9iamVj
dCgpKTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgYXV0
byByZXN1bHQgPSBpbnZva2VXcml0YWJsZVN0cmVhbUZ1bmN0aW9uKCpnbG9iYWxPYmplY3QsIHBy
aXZhdGVOYW1lLCBhcmd1bWVudHMpOworICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAgICAg
ICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKworICAgIHJldHVybiByZXN1bHQuaGFzRXhjZXB0
aW9uKCkgPyBmYWxzZSA6IHJlc3VsdC5yZXR1cm5WYWx1ZSgpLmlzVHJ1ZSgpOworfQorCit2b2lk
IEludGVybmFsV3JpdGFibGVTdHJlYW06OmxvY2soKQoreworICAgIGF1dG8qIGdsb2JhbE9iamVj
dCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShnbG9iYWxP
YmplY3QtPnZtKCkpOworCisgICAgYXV0byogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1D
bGllbnREYXRhKj4oZ2xvYmFsT2JqZWN0LT52bSgpLmNsaWVudERhdGEpOworICAgIGF1dG8mIHBy
aXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLndyaXRhYmxlU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMoKS5hY3F1aXJlV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyUHJp
dmF0ZU5hbWUoKTsKKworICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwor
ICAgIGFyZ3VtZW50cy5hcHBlbmQoZ3VhcmRlZE9iamVjdCgpKTsKKyAgICBBU1NFUlQoIWFyZ3Vt
ZW50cy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgaW52b2tlV3JpdGFibGVTdHJlYW1GdW5jdGlv
bigqZ2xvYmFsT2JqZWN0LCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKKyAgICBpZiAoVU5MSUtF
TFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwor
fQorCitKU0M6OkpTVmFsdWUgSW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6YWJvcnQoSlNDOjpKU0ds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcmVhc29uKQoreworICAgIGF1
dG8qIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KGdsb2JhbE9iamVj
dC52bSgpLmNsaWVudERhdGEpOworICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+
YnVpbHRpbkZ1bmN0aW9ucygpLndyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS53cml0
YWJsZVN0cmVhbUFib3J0Rm9yQmluZGluZ3NQcml2YXRlTmFtZSgpOworCisgICAgSlNDOjpNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChndWFyZGVk
T2JqZWN0KCkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQocmVhc29uKTsKKyAgICBBU1NFUlQoIWFy
Z3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgYXV0byByZXN1bHQgPSBpbnZva2VXcml0
YWJsZVN0cmVhbUZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7
CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIHJldHVybiByZXN1bHQucmV0dXJuVmFsdWUoKTsKK30KKworSlNDOjpKU1ZhbHVlIEludGVy
bmFsV3JpdGFibGVTdHJlYW06OmNsb3NlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBhdXRvKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
PihnbG9iYWxPYmplY3Qudm0oKS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBwcml2YXRlTmFtZSA9
IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS53cml0YWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zKCkud3JpdGFibGVTdHJlYW1DbG9zZUZvckJpbmRpbmdzUHJpdmF0ZU5hbWUoKTsKKwor
ICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5h
cHBlbmQoZ3VhcmRlZE9iamVjdCgpKTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxv
d2VkKCkpOworCisgICAgYXV0byByZXN1bHQgPSBpbnZva2VXcml0YWJsZVN0cmVhbUZ1bmN0aW9u
KGdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CisgICAgaWYgKHJlc3VsdC5o
YXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiByZXN1bHQu
cmV0dXJuVmFsdWUoKTsKK30KKworSlNDOjpKU1ZhbHVlIEludGVybmFsV3JpdGFibGVTdHJlYW06
OmdldFdyaXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgYXV0
byogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4oZ2xvYmFsT2JqZWN0
LnZtKCkuY2xpZW50RGF0YSk7CisgICAgYXV0byYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5i
dWlsdGluRnVuY3Rpb25zKCkud3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLmFjcXVp
cmVXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXJQcml2YXRlTmFtZSgpOworCisgICAgSlNDOjpN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChndWFy
ZGVkT2JqZWN0KCkpOworICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CisK
KyAgICBhdXRvIHJlc3VsdCA9IGludm9rZVdyaXRhYmxlU3RyZWFtRnVuY3Rpb24oZ2xvYmFsT2Jq
ZWN0LCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIHJlc3VsdC5yZXR1cm5WYWx1
ZSgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JbnRl
cm5hbFdyaXRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JbnRlcm5h
bFdyaXRhYmxlU3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBhYWEyNzNlNjZjYmUxNjdhMzkzYjcxZDIw
YjY4MjFhYmY1NmVlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0ludGVybmFsV3JpdGFibGVTdHJlYW0uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0Lmgi
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgSW50ZXJuYWxXcml0YWJsZVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBET01HdWFy
ZGVkPEpTQzo6SlNPYmplY3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
PEludGVybmFsV3JpdGFibGVTdHJlYW0+PiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmLCBKU0M6
OkpTVmFsdWUgdW5kZXJseWluZ1NpbmssIEpTQzo6SlNWYWx1ZSBzdHJhdGVneSk7CisKKyAgICBv
cGVyYXRvciBKU0M6OkpTVmFsdWUoKSBjb25zdCB7IHJldHVybiBndWFyZGVkKCk7IH0KKworICAg
IGJvb2wgbG9ja2VkKCkgY29uc3Q7CisgICAgdm9pZCBsb2NrKCk7CisgICAgSlNDOjpKU1ZhbHVl
IGFib3J0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOworICAgIEpTQzo6SlNW
YWx1ZSBjbG9zZShKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgSlNDOjpKU1ZhbHVlIGdldFdy
aXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisKK3ByaXZhdGU6CisgICAgSW50ZXJuYWxXcml0
YWJsZVN0cmVhbShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0
JiBqc09iamVjdCkKKyAgICAgICAgOiBET01HdWFyZGVkPEpTQzo6SlNPYmplY3Q+KGdsb2JhbE9i
amVjdCwganNPYmplY3QpCisgICAgeworICAgIH0KK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5MTZkMzNkOWRlNzRm
MjIxM2RiZTMzNDNlZmYzZDAyYTNhYzM1M2NkLi5hMDA3NDMxNDJkOGMwMDA0ODY0OTRkZjQ4NTAw
MGNiMDM4Y2RmYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNSZW1vdGVET01X
aW5kb3cuaCIKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNX
b3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1dyaXRhYmxlU3RyZWFtLmgiCiAjaW5j
bHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIKQEAgLTcxLDYgKzcy
LDcgQEAgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihtYWtlVGhpc1R5cGVFcnJvckZvckJ1aWx0
aW5zKTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZUdldHRlclR5cGVFcnJvckZvckJ1
aWx0aW5zKTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZURPTUV4Y2VwdGlvbkZvckJ1
aWx0aW5zKTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaXNSZWFkYWJsZUJ5dGVTdHJlYW1B
UElFbmFibGVkKTsKK0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZ2V0SW50ZXJuYWxXcml0YWJs
ZVN0cmVhbSk7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGlzV3JpdGFibGVTdHJlYW1BUElF
bmFibGVkKTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2hlblNpZ25hbEFib3J0ZWQpOwog
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihpc0Fib3J0U2lnbmFsKTsKQEAgLTE2Myw2ICsxNjUs
MTggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGlzV3JpdGFibGVTdHJlYW1BUElFbmFibGVk
LCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndyaXRh
YmxlU3RyZWFtQVBJRW5hYmxlZCgpKSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihn
ZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAgIEFT
U0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAxKTsKKworICAgIGF1dG8mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8qIHdyaXRhYmxlU3RyZWFtID0ganNEeW5hbWlj
Q2FzdDxKU1dyaXRhYmxlU3RyZWFtKj4odm0sIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOworICAgIGlmIChVTkxJS0VMWSghd3JpdGFibGVTdHJlYW0pKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUod3JpdGFibGVTdHJlYW0tPndyYXBwZWQoKS5pbnRlcm5hbFdyaXRhYmxlU3RyZWFtKCkpOwor
fQorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2hlblNpZ25hbEFib3J0ZWQsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgQVNT
RVJUKGNhbGxGcmFtZSk7CkBAIC0yMTQsNiArMjI4LDcgQEAgU1VQUFJFU1NfQVNBTiB2b2lkIEpT
RE9NR2xvYmFsT2JqZWN0OjphZGRCdWlsdGluR2xvYmFscyhWTSYgdm0pCiAgICAgICAgIEpTRE9N
R2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMo
KS5yZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgaXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFi
bGVkKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAogICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZv
KGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkud3JpdGFibGVTdHJlYW1BUElFbmFibGVkUHJpdmF0
ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgaXNXcml0
YWJsZVN0cmVhbUFQSUVuYWJsZWQpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpH
bG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5pc0Fib3J0U2lnbmFs
UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwg
aXNBYm9ydFNpZ25hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFBy
b3BlcnR5SW5mbyhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLmdldEludGVybmFsV3JpdGFibGVT
dHJlYW1Qcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmlu
ZygpLCBnZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFtKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3Rh
dGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWls
dGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFt
ZXMuaAppbmRleCBkNGQxMzI0MjkyOTdjOGEyMjc5OGI5ZmQ5ZDU3ZDRhN2U0MWRlMWZhLi41Yjk0
MzFlYzdlNDNiZTVmMDI2ZjZlOGJhMzhhMmFhMTM3NjYwZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0zNDgsNiArMzQ4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGZsdXNoQWxnb3JpdGhtKSBcCiAgICAg
bWFjcm8oZm9jdXMpIFwKICAgICBtYWNybyhmcmFtZXMpIFwKKyAgICBtYWNybyhnZXRJbnRlcm5h
bFdyaXRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oZ2V0VHJhY2tzKSBcCiAgICAgbWFjcm8oZ2V0
VXNlck1lZGlhKSBcCiAgICAgbWFjcm8oZ3B1KSBcCkBAIC0zNTksNiArMzYwLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGluRmxpZ2h0V3JpdGVSZXF1ZXN0KSBcCiAgICAgbWFj
cm8oaW5kZXhlZERCKSBcCiAgICAgbWFjcm8oaW5pdGlhbGl6ZVdpdGgpIFwKKyAgICBtYWNybyhp
bnRlcm5hbFN0cmVhbSkgXAorICAgIG1hY3JvKGludGVybmFsV3JpdGFibGUpIFwKICAgICBtYWNy
byhpc0Fib3J0U2lnbmFsKSBcCiAgICAgbWFjcm8oaXNEaXN0dXJiZWQpIFwKICAgICBtYWNybyhp
c0xvYWRpbmcpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRh
YmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFt
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhOWMzNzIxZDNmYzRiMTk1NTU0
MWViMTRlZDcxOWQ3MjczM2ZkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldyaXRhYmxlU3RyZWFtLmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCi0jaW5j
bHVkZSAiSlNXcml0YWJsZVN0cmVhbVNpbmsuaCIKLSNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnRE
YXRhLmgiCi0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQot
bmFtZXNwYWNlIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWwgewotc3RhdGljIGlubGluZSBKU0M6OkpT
VmFsdWUgY2FsbEZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBqc0Z1bmN0aW9uLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25z
dCBKU0M6OkFyZ0xpc3QmIGFyZ3VtZW50cykKLXsKLSAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFs
T2JqZWN0LnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwot
ICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBqc0Z1bmN0aW9uKTsKLSAg
ICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsKLSAg
ICBhdXRvIHJlc3VsdCA9IGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGpzRnVuY3Rpb24sIGNh
bGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3VtZW50cyk7Ci0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRp
b25FeGNlcHRUZXJtaW5hdGlvbigpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci19Ci0KLXN0YXRp
YyBpbmxpbmUgYm9vbCBjaGVja1dyaXRhYmxlU3RyZWFtKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIEpTV3JpdGFibGVTdHJlYW0qIHdyaXRhYmxlU3RyZWFtLCBKU0M6OkpTVmFsdWUg
ZnVuY3Rpb24pCi17Ci0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVj
dDsKLQotICAgIEFTU0VSVChmdW5jdGlvbik7Ci0gICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZCh3cml0YWJsZVN0cmVhbSk7Ci0gICAg
QVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gV3JpdGFibGVT
dHJlYW1JbnRlcm5hbDo6Y2FsbEZ1bmN0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9u
LCBKU0M6OmpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cykuaXNUcnVlKCk7Ci19Ci0KLUV4Y2VwdGlv
bk9yPFJlZjxXcml0YWJsZVN0cmVhbT4+IFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUoSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmUHRyPFdyaXRhYmxlU3RyZWFtU2lu
az4mJiBzaW5rKQotewotICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKLSAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBhdXRvJiBjbGll
bnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Ci0g
ICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
JmxleGljYWxHbG9iYWxPYmplY3QpOwotCi0gICAgYXV0byogY29uc3RydWN0b3IgPSBKU0M6OmFz
T2JqZWN0KGdsb2JhbE9iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGNsaWVudERhdGEu
YnVpbHRpbk5hbWVzKCkuV3JpdGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpKSk7Ci0KLSAgICBhdXRv
IGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBjb25zdHJ1Y3Rvcik7Ci0gICAg
QVNTRVJUKGNvbnN0cnVjdERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7Ci0KLSAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHNpbmsgPyB0b0pT
TmV3bHlDcmVhdGVkKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBzaW5rLnJl
bGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc1VuZGVmaW5lZCgpKTsKLSAgICBBU1NFUlQoIWFyZ3Mu
aGFzT3ZlcmZsb3dlZCgpKTsKLQotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBKU0M6OmNvbnN0cnVj
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEsIGFyZ3Mp
OwotICAgIEFTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFvYmplY3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3Ig
fSk7Ci0KLSAgICByZXR1cm4gY3JlYXRlKGdsb2JhbE9iamVjdCwgKmpzQ2FzdDxKU1dyaXRhYmxl
U3RyZWFtKj4ob2JqZWN0KSk7Ci19Ci0KLXZvaWQgV3JpdGFibGVTdHJlYW06OmxvY2soKQotewot
ICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqbV9nbG9iYWxPYmplY3Q7Ci0gICAgVk0m
IHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKLQotICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKLQotICAgIGF1dG8qIGNvbnN0cnVjdG9y
ID0gSlNDOjphc09iamVjdChtX2dsb2JhbE9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLldyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlclBy
aXZhdGVOYW1lKCkpKTsKLQotICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERh
dGEodm0sIGNvbnN0cnVjdG9yKTsKLSAgICBBU1NFUlQoY29uc3RydWN0RGF0YS50eXBlICE9IENh
bGxEYXRhOjpUeXBlOjpOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0g
ICAgYXJncy5hcHBlbmQod3JpdGFibGVTdHJlYW0oKSk7Ci0gICAgQVNTRVJUKCFhcmdzLmhhc092
ZXJmbG93ZWQoKSk7Ci0KLSAgICBKU0M6OmNvbnN0cnVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
Y29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOwotICAgIHNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uRXhjZXB0VGVybWluYXRpb24oKTsKLX0KLQotYm9vbCBXcml0YWJsZVN0cmVhbTo6aXNM
b2NrZWQoKSBjb25zdAotewotICAgIHJldHVybiBjaGVja1dyaXRhYmxlU3RyZWFtKCpnbG9iYWxP
YmplY3QoKSwgd3JpdGFibGVTdHJlYW0oKSwgZ2xvYmFsT2JqZWN0KCktPmJ1aWx0aW5JbnRlcm5h
bEZ1bmN0aW9ucygpLndyaXRhYmxlU3RyZWFtSW50ZXJuYWxzKCkubV9pc1dyaXRhYmxlU3RyZWFt
TG9ja2VkRnVuY3Rpb24uZ2V0KCkpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV3JpdGFibGVTdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUxOGE5
NDU5NzcyNGUxZDcwMTAxYTY3YmNkYjhlZjM5OTYxZmFkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0
YWJsZVN0cmVhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiRXhjZXB0aW9uT3IuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJK
U0RPTUNvbnZlcnQuaCIKLSNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKLSNpbmNsdWRl
ICJKU1dyaXRhYmxlU3RyZWFtLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV3Jp
dGFibGVTdHJlYW1TaW5rOwotCi1jbGFzcyBXcml0YWJsZVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBE
T01HdWFyZGVkPEpTV3JpdGFibGVTdHJlYW0+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdy
aXRhYmxlU3RyZWFtPiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNX
cml0YWJsZVN0cmVhbSYganNTdHJlYW0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV3JpdGFibGVT
dHJlYW0oZ2xvYmFsT2JqZWN0LCBqc1N0cmVhbSkpOyB9Ci0KLSAgICBzdGF0aWMgRXhjZXB0aW9u
T3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWZQ
dHI8V3JpdGFibGVTdHJlYW1TaW5rPiYmKTsKLSAgICBKU1dyaXRhYmxlU3RyZWFtKiB3cml0YWJs
ZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGd1YXJkZWQoKTsgfQotCi0gICAgdm9pZCBsb2NrKCk7
Ci0gICAgYm9vbCBpc0xvY2tlZCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFdyaXRhYmxlU3Ry
ZWFtKEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNXcml0YWJsZVN0cmVhbSYpOwotfTsKLQotc3RydWN0
IEpTV3JpdGFibGVTdHJlYW1XcmFwcGVyQ29udmVydGVyIHsKLSAgICBzdGF0aWMgUmVmUHRyPFdy
aXRhYmxlU3RyZWFtPiB0b1dyYXBwZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgSlNDOjpWTSYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAgICAgYXV0byogZ2xvYmFs
T2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odm0sICZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKLSAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBhdXRvKiBXcml0YWJsZVN0cmVhbSA9IEpTQzo6
anNEeW5hbWljQ2FzdDxKU1dyaXRhYmxlU3RyZWFtKj4odm0sIHZhbHVlKTsKLSAgICAgICAgaWYg
KCFXcml0YWJsZVN0cmVhbSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAg
IHJldHVybiBXcml0YWJsZVN0cmVhbTo6Y3JlYXRlKCpnbG9iYWxPYmplY3QsICpXcml0YWJsZVN0
cmVhbSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVy
dGVyVHJhaXRzPFdyaXRhYmxlU3RyZWFtPiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNX
cml0YWJsZVN0cmVhbVdyYXBwZXJDb252ZXJ0ZXI7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJu
VHlwZSA9IFJlZlB0cjxXcml0YWJsZVN0cmVhbT47Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IG5lZWRzU3RhdGUgPSB0cnVlOwotfTsKLQotaW5saW5lIFdyaXRhYmxlU3RyZWFtOjpXcml0YWJs
ZVN0cmVhbShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1dyaXRhYmxlU3RyZWFt
JiBXcml0YWJsZVN0cmVhbSkKLSAgICA6IERPTUd1YXJkZWQ8SlNXcml0YWJsZVN0cmVhbT4oZ2xv
YmFsT2JqZWN0LCBXcml0YWJsZVN0cmVhbSkKLXsKLX0KLQotaW5saW5lIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgV3JpdGFibGVT
dHJlYW0qIHN0cmVhbSkKLXsKLSAgICByZXR1cm4gc3RyZWFtID8gc3RyZWFtLT53cml0YWJsZVN0
cmVhbSgpIDogSlNDOjpqc1VuZGVmaW5lZCgpOwotfQotCi1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBXcml0YWJsZVN0
cmVhbSYgc3RyZWFtKQotewotICAgIHJldHVybiBzdHJlYW0ud3JpdGFibGVTdHJlYW0oKTsKLX0K
LQotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxXcml0YWJsZVN0cmVhbT4mJiBzdHJlYW0pCi17
Ci0gICAgcmV0dXJuIHN0cmVhbS0+d3JpdGFibGVTdHJlYW0oKTsKLX0KLQotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAx
ZjI0ZjFlYjAxMGIzYzU0YjczNDU0YTU2ZjIwOTNiM2U1NzA3YzUzLi5jMzFhOTYxZGQ1YWMyY2Iz
NzQ3ZWNjZDg0Y2U3YWY3MzUxNjlhOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNjI3LDExICs2MjcsNiBAQCBzdWIg
QWRkVG9JbmNsdWRlc0ZvcklETFR5cGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICgkdHlwZS0+bmFtZSBlcSAiV3JpdGFibGVTdHJlYW0iKSB7Ci0gICAgICAgIEFkZFRvSW5jbHVk
ZXMoIldyaXRhYmxlU3RyZWFtLmgiLCAkaW5jbHVkZXNSZWYsICRjb25kaXRpb25hbCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAoJHR5cGUtPm5hbWUgZXEgIlhQYXRoTlNSZXNv
bHZlciIpIHsKICAgICAgICAgQWRkVG9JbmNsdWRlcygiSlNYUGF0aE5TUmVzb2x2ZXIuaCIsICRp
bmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgQWRkVG9JbmNsdWRlcygiSlNET01D
b252ZXJ0WFBhdGhOU1Jlc29sdmVyLmgiLCAkaW5jbHVkZXNSZWYsICRjb25kaXRpb25hbCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA4Y2QzNzEzNzMxMTVkNDExY2Y1ZDdlNDdk
YTRhMTNmMzdhNWUwYWM1Li44NWVkOWI1NDUxNzU1NjU5ZDc5YzNiYWI1YzgxZTBjMzFlODMyNTVk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0w
OS0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cg
dG8gc3ViY2xhc3MgV3JpdGFibGVTdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMDE0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVz
cy5hbnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L2lkbGhhcm5lc3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFt
cy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0OgorCiAyMDIxLTA5LTA5ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgRm9udEZhY2VTZXQu
bG9hZCgpIG5lZWRzIHRvIHJlYWN0IHRvIHN0eWxlIGNoYW5nZXMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNz
LmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnktZXhwZWN0ZWQudHh0CmluZGV4IDkzZmFkMTNl
YjYzYWI4NzNlZGQzZmQ2NmRmZTNhYTA1ZWI2NDIwMzEuLjk5MmI5ZTBlZDg0MjdjZjE0ZjQ5ODNj
MjRhYTc0MWMzYzQxZDA2YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFueS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lk
bGhhcm5lc3MuYW55LWV4cGVjdGVkLnR4dApAQCAtMTI4LDcgKzEyOCw3IEBAIFBBU1MgV3JpdGFi
bGVTdHJlYW0gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNl
IHByb3RvdHlwZSBvCiBQQVNTIFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogZXhpc3RlbmNlIGFu
ZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9y
IiBwcm9wZXJ0eQogUEFTUyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQg
cHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMg
cHJvcGVydHkKIFBBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbG9ja2Vk
Ci1GQUlMIFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogb3BlcmF0aW9uIGFib3J0KG9wdGlvbmFs
IGFueSkgYXNzZXJ0X2VxdWFsczogcHJvcGVydHkgaGFzIHdyb25nIC5sZW5ndGggZXhwZWN0ZWQg
MCBidXQgZ290IDEKK1BBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBvcGVyYXRpb24gYWJv
cnQob3B0aW9uYWwgYW55KQogUEFTUyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IG9wZXJhdGlv
biBjbG9zZSgpCiBQQVNTIFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogb3BlcmF0aW9uIGdldFdy
aXRlcigpCiBQQVNTIFdyaXRhYmxlU3RyZWFtIG11c3QgYmUgcHJpbWFyeSBpbnRlcmZhY2Ugb2Yg
bmV3IFdyaXRhYmxlU3RyZWFtKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL2lkbGhhcm5lc3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKaW5kZXggOTNmYWQxM2ViNjNh
Yjg3M2VkZDNmZDY2ZGZlM2FhMDVlYjY0MjAzMS4uOTkyYjllMGVkODQyN2NmMTRmNDk4M2MyNGFh
NzQxYzNjNDFkMDZiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L2lkbGhhcm5lc3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEyOCw3ICsxMjgsNyBAQCBQ
QVNTIFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9m
IGludGVyZmFjZSBwcm90b3R5cGUgbwogUEFTUyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IGV4
aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJj
b25zdHJ1Y3RvciIgcHJvcGVydHkKIFBBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBleGlz
dGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVu
c2NvcGFibGVzIHByb3BlcnR5CiBQQVNTIFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogYXR0cmli
dXRlIGxvY2tlZAotRkFJTCBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhYm9y
dChvcHRpb25hbCBhbnkpIGFzc2VydF9lcXVhbHM6IHByb3BlcnR5IGhhcyB3cm9uZyAubGVuZ3Ro
IGV4cGVjdGVkIDAgYnV0IGdvdCAxCitQQVNTIFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogb3Bl
cmF0aW9uIGFib3J0KG9wdGlvbmFsIGFueSkKIFBBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNl
OiBvcGVyYXRpb24gY2xvc2UoKQogUEFTUyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IG9wZXJh
dGlvbiBnZXRXcml0ZXIoKQogUEFTUyBXcml0YWJsZVN0cmVhbSBtdXN0IGJlIHByaW1hcnkgaW50
ZXJmYWNlIG9mIG5ldyBXcml0YWJsZVN0cmVhbSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9n
ZW5lcmFsLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3Rl
ZC50eHQKaW5kZXggMjlmN2IyMWI3YTk1NGZmNTYyMjIxNTA0YzA4YWFjNDg2MmVjZmUwZi4uNTMx
MzVkMmYyYjE0ZmM1ZmI3ZDRhMDE0Yjg5ZDJjZGIyMTQwMDM3YSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvZ2VuZXJhbC5hbnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwu
YW55LWV4cGVjdGVkLnR4dApAQCAtMTMsNiArMTMsNiBAQCBQQVNTIG1ldGhvZHMgc2hvdWxkIG5v
dCBub3QgaGF2ZSAuYXBwbHkoKSBvciAuY2FsbCgpIGNhbGxlZAogUEFTUyBXcml0YWJsZVN0cmVh
bSdzIHN0cmF0ZWd5LnNpemUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgYXMgYSBtZXRob2QKIFBBU1Mg
cmVkdW5kYW50IHJlbGVhc2VMb2NrKCkgaXMgbm8tb3AKIFBBU1MgcmVhZHkgcHJvbWlzZSBzaG91
bGQgZmlyZSBiZWZvcmUgY2xvc2VkIG9uIHJlbGVhc2VMb2NrCi1GQUlMIFN1YmNsYXNzaW5nIFdy
aXRhYmxlU3RyZWFtIHNob3VsZCB3b3JrIGFzc2VydF90cnVlOiBTdWJjbGFzcyBvYmplY3Qgc2hv
dWxkIGJlIGFuIGluc3RhbmNlIG9mIFN1YmNsYXNzIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQ
QVNTIFN1YmNsYXNzaW5nIFdyaXRhYmxlU3RyZWFtIHNob3VsZCB3b3JrCiBQQVNTIHRoZSBsb2Nr
ZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyZWFtIGhhcyBhIHdyaXRlcgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dy
aXRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCAyOWY3
YjIxYjdhOTU0ZmY1NjIyMjE1MDRjMDhhYWM0ODYyZWNmZTBmLi41MzEzNWQyZjJiMTRmYzVmYjdk
NGEwMTRiODlkMmNkYjIxNDAwMzdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQKQEAgLTEzLDYgKzEzLDYgQEAgUEFTUyBtZXRob2RzIHNob3VsZCBub3Qg
bm90IGhhdmUgLmFwcGx5KCkgb3IgLmNhbGwoKSBjYWxsZWQKIFBBU1MgV3JpdGFibGVTdHJlYW0n
cyBzdHJhdGVneS5zaXplIHNob3VsZCBub3QgYmUgY2FsbGVkIGFzIGEgbWV0aG9kCiBQQVNTIHJl
ZHVuZGFudCByZWxlYXNlTG9jaygpIGlzIG5vLW9wCiBQQVNTIHJlYWR5IHByb21pc2Ugc2hvdWxk
IGZpcmUgYmVmb3JlIGNsb3NlZCBvbiByZWxlYXNlTG9jawotRkFJTCBTdWJjbGFzc2luZyBXcml0
YWJsZVN0cmVhbSBzaG91bGQgd29yayBhc3NlcnRfdHJ1ZTogU3ViY2xhc3Mgb2JqZWN0IHNob3Vs
ZCBiZSBhbiBpbnN0YW5jZSBvZiBTdWJjbGFzcyBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFT
UyBTdWJjbGFzc2luZyBXcml0YWJsZVN0cmVhbSBzaG91bGQgd29yawogUEFTUyB0aGUgbG9ja2Vk
IGdldHRlciBzaG91bGQgcmV0dXJuIHRydWUgaWYgdGhlIHN0cmVhbSBoYXMgYSB3cml0ZXIKIAo=
</data>
<flag name="commit-queue"
          id="461126"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437859</attachid>
            <date>2021-09-10 06:20:10 -0700</date>
            <delta_ts>2021-09-10 06:26:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230146-20210910152007.patch</filename>
            <type>text/plain</type>
            <size>76484</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYyZjlmOTVjMjYwYTM4
YTUyNmY2MWE4NDk3ODdiZTk2OGNiOTVlNi4uYTU1NjliMWJmYTVkMDdjZjQyZDU0Zjg4M2IyYTkx
Mjk4MjYzYmZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTA5LTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0byBzdWJjbGFz
cyBXcml0YWJsZVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW50cm9kdWNlIGEgV2ViSURMLWJhc2VkIFdyaXRhYmxlU3RyZWFtIEMrKyBjbGFz
cy4KKyAgICAgICAgVG8ga2VlcCB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24sIHRoZSBwcmV2
aW91cyBKUyBXcml0YWJsZVN0cmVhbSBpbXBsZW1lbnRhdGlvbiBpcyB3cmFwcGVkIGFyb3VuZCBh
biBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtIEMrKyBjbGFzcworICAgICAgICB3aGljaCBpcyBhIHdy
YXBwZXIgYXJvdW5kIEpTLWJ1aWx0aW5zIG1hbmlwdWxhdGVkIG9iamVjdHMuCisgICAgICAgIElu
dGVybmFsV3JpdGFibGVTdHJlYW0gaXMgbWFkZSBET01HdWFyZGVkIHRvIGVuYWJsZSB0byBrZWVw
IGEgcmVmIHRvIHRoZSBKUyBvYmplY3QgZnJvbSBXcml0YWJsZVN0cmVhbS4KKworICAgICAgICBV
cGRhdGUgSlMgYnVpbHQtaW4gY29kZSB0byBtYW5hZ2UgaG9wcGluZyB0byB0aGUgSW50ZXJuYWxX
cml0YWJsZVN0cmVhbSBKUyBvYmplY3QgZnJvbSB0aGUgZXhwb3NlZCBXcml0YWJsZVN0cmVhbSBK
UyBvYmplY3QuCisgICAgICAgIFdlIGludHJvZHVjZSBnZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFt
IHJvdXRpbmUgZm9yIHRoYXQgcHVycG9zZS4KKworICAgICAgICBUcmFuc2l0aW9uIGV4aXN0aW5n
IFdyaXRhYmxlU3RyZWFtIHVzZXJzIHRvIHRoZSBuZXcgQysrIGNsYXNzLgorICAgICAgICBNaW5v
ciBjb2RlIGdlbmVyYXRvciBjaGFuZ2UgdG8gbWFrZSB1c2Ugb2YgdGhlIG5vdyBhdmFpbGFibGUg
SlNXcml0YWJsZVN0cmVhbS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGFuZCByZWJh
c2VkIHRlc3RzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBTRnJhbWVUcmFuc2Zvcm06OmlzQXR0YWNoZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6cmVhZGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwU0ZyYW1lVHJhbnNmb3JtOjp3cml0YWJsZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uanM6CisgICAgICAgIChwaXBlVGhyb3VnaCk6CisgICAgICAgICogTW9k
dWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbUludGVybmFscy5qczoKKyAgICAgICAgKGluaXRp
YWxpemVUcmFuc2Zvcm1TdHJlYW0pOgorICAgICAgICAodHJhbnNmb3JtU3RyZWFtRXJyb3JXcml0
YWJsZUFuZFVuYmxvY2tXcml0ZSk6CisgICAgICAgICh0cmFuc2Zvcm1TdHJlYW1EZWZhdWx0U2lu
a1dyaXRlQWxnb3JpdGhtKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJl
YW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldyaXRhYmxlU3RyZWFtOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVTdHJlYW06OldyaXRhYmxlU3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTV3JpdGFibGVTdHJlYW06OmFib3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV3JpdGFibGVTdHJlYW06OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV3JpdGFi
bGVTdHJlYW06OmdldFdyaXRlcik6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxl
U3RyZWFtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVTdHJlYW06OmxvY2sp
OgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVTdHJlYW06OmxvY2tlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXcml0YWJsZVN0cmVhbTo6aW50ZXJuYWxXcml0YWJsZVN0cmVhbSk6CisK
KyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsOgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyLmpzOgorICAgICAgICAo
aW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlcik6CisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzOgorICAgICAgICAoaW5pdGlhbGl6
ZVdyaXRhYmxlU3RyZWFtU2xvdHMpOgorICAgICAgICAod3JpdGFibGVTdHJlYW1DbG9zZUZvckJp
bmRpbmdzKToKKyAgICAgICAgKHdyaXRhYmxlU3RyZWFtQWJvcnRGb3JCaW5kaW5ncyk6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0ludGVybmFsV3JpdGFibGVTdHJlYW0uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omludm9rZVdyaXRhYmxlU3RyZWFtRnVuY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsV3JpdGFibGVTdHJlYW06OmxvY2tlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFdyaXRhYmxlU3RyZWFtOjpsb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsV3JpdGFibGVTdHJlYW06OmFib3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsV3JpdGFibGVTdHJlYW06OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsV3JpdGFibGVTdHJlYW06OmdldFdyaXRlcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SW50ZXJuYWxXcml0YWJsZVN0cmVhbS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmFkZEJ1aWx0
aW5HbG9iYWxzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmg6IFJlbW92ZWQuCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChBZGRUb0luY2x1
ZGVzRm9ySURMVHlwZSk6CisKIDIwMjEtMDktMTAgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNv
bT4KIAogICAgICAgICBGaXggYXNwZWN0LXJhdGlvLWludHJpbnNpYy1zaXplLTAwNC5odG1sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4
IGQ2ZGI1MGNlOTk0ZTFhMTJkMDFlNzVlYTBjYTIwZDliY2NhYTgxNDEuLjc0M2Y1MGVlMGFlZjQx
ZTZhZWEyNDhmZGJjZDJhZjliNzBlZjA5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0yNjQzLDcgKzI2NDMsNiBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJLaXRGb250RmFtaWx5TmFt
ZXMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJL
aXRGb250RmFtaWx5TmFtZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnMuaWRsCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9X
cml0YWJsZVN0cmVhbUJ1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL1dyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJCdWlsdGlucy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Xcml0YWJsZVN0cmVh
bURlZmF1bHRXcml0ZXJCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9Xcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDUwODJkN2U3M2FhNWFjY2I5MDdkYmE0OWVmY2QzN2Yw
NjcwMzNjNTcuLjUzNGU5YzdkZDRmNDU4NTNiNjUxNzRiNzYzMTA5OGYwN2I2NjY2OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTk1Miw3ICsxOTUyLDYgQEAgV2ViQ29yZV9C
VUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1RyYW5z
Zm9ybVN0cmVhbS5qcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvVHJhbnNmb3Jt
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJl
YW1zL1RyYW5zZm9ybVN0cmVhbUludGVybmFscy5qcyBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJl
YW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5qcyBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm0uY3BwCmluZGV4IGM1YmI3ZDk3Njc1M2MxZDY5OGZlYmQxYTk1OWM1MDVi
MmE5ZDMzM2EuLjFiZWM3YzMxNWJlNWMwNzUwMzIwMGIwNWQ5NTNjZTIxODliMTg3ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNGcmFtZVRyYW5zZm9ybS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0RPTUNv
bnZlcnRCdWZmZXJTb3VyY2UuaCIKICNpbmNsdWRlICJKU1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmgi
CiAjaW5jbHVkZSAiSlNSVENFbmNvZGVkVmlkZW9GcmFtZS5oIgorI2luY2x1ZGUgIkpTV3JpdGFi
bGVTdHJlYW1TaW5rLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJUQ0VuY29k
ZWRBdWRpb0ZyYW1lLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2RlZFZpZGVvRnJhbWUuaCIKQEAgLTQz
LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldyaXRhYmxlU3RyZWFtLmgiCi0jaW5jbHVkZSAi
V3JpdGFibGVTdHJlYW1TaW5rLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTgsNyArOTgsNyBAQCB1aW50NjRfdCBSVENSdHBT
RnJhbWVUcmFuc2Zvcm06OmtleUlkRm9yVGVzdGluZygpIGNvbnN0CiAKIGJvb2wgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtOjppc0F0dGFjaGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pc0F0dGFj
aGVkIHx8IChtX3JlYWRhYmxlICYmIG1fcmVhZGFibGUtPmlzTG9ja2VkKCkpIHx8IChtX3dyaXRh
YmxlICYmIG1fd3JpdGFibGUtPmlzTG9ja2VkKCkpOworICAgIHJldHVybiBtX2lzQXR0YWNoZWQg
fHwgKG1fcmVhZGFibGUgJiYgbV9yZWFkYWJsZS0+aXNMb2NrZWQoKSkgfHwgKG1fd3JpdGFibGUg
JiYgbV93cml0YWJsZS0+bG9ja2VkKCkpOwogfQogCiBzdGF0aWMgUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtRXJyb3JFdmVudDo6VHlwZSBlcnJvclR5cGVGcm9tSW5mb3JtYXRpb24oY29uc3QgUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXI6OkVycm9ySW5mb3JtYXRpb24mIGVycm9ySW5mb3JtYXRpb24pCkBA
IC0yMDgsMTQgKzIwOCwxOCBAQCB2b2lkIHRyYW5zZm9ybUZyYW1lKEZyYW1lJiBmcmFtZSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUlRDUnRwU0ZyYW1lVAogICAgIHNvdXJjZS5l
bnF1ZXVlKHRvSlMoJmdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgZnJhbWUpKTsKIH0KIAot
dm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmNyZWF0ZVN0cmVhbXMoSlNDOjpKU0dsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQorRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtOjpjcmVhdGVTdHJlYW1zKCkKIHsKKyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgPyBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVj
dCgpIDogbnVsbHB0cjsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKICAgICBtX3JlYWRhYmxlU3RyZWFtU291
cmNlID0gU2ltcGxlUmVhZGFibGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZSgpOwotICAgIGF1dG8gcmVh
ZGFibGUgPSBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbV9yZWFkYWJsZVN0
cmVhbVNvdXJjZS5jb3B5UmVmKCkpOworICAgIGF1dG8gcmVhZGFibGUgPSBSZWFkYWJsZVN0cmVh
bTo6Y3JlYXRlKCpnbG9iYWxPYmplY3QsIG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UuY29weVJlZigp
KTsKICAgICBpZiAocmVhZGFibGUuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHJlYWRhYmxlLnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIGF1dG8gd3Jp
dGFibGUgPSBXcml0YWJsZVN0cmVhbTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgU2ltcGxlV3JpdGFi
bGVTdHJlYW1TaW5rOjpjcmVhdGUoW3RyYW5zZm9ybWVyID0gbV90cmFuc2Zvcm1lciwgcmVhZGFi
bGVTdHJlYW1Tb3VyY2UgPSBtX3JlYWRhYmxlU3RyZWFtU291cmNlLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKHRoaXMpXShhdXRvJiBjb250ZXh0LCBhdXRvIHZhbHVlKSAtPiBFeGNlcHRpb25Pcjx2
b2lkPiB7CisgICAgYXV0byB3cml0YWJsZSA9IFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUoKkpTQzo6
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgU2ltcGxlV3JpdGFibGVT
dHJlYW1TaW5rOjpjcmVhdGUoW3RyYW5zZm9ybWVyID0gbV90cmFuc2Zvcm1lciwgcmVhZGFibGVT
dHJlYW1Tb3VyY2UgPSBtX3JlYWRhYmxlU3RyZWFtU291cmNlLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpXShhdXRvJiBjb250ZXh0LCBhdXRvIHZhbHVlKSAtPiBFeGNlcHRpb25Pcjx2b2lk
PiB7CiAgICAgICAgIGlmICghY29udGV4dC5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogICAgICAgICBhdXRvJiBnbG9i
YWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjb250ZXh0Lmdsb2Jh
bE9iamVjdCgpKTsKQEAgLTIzOCw3ICsyNDIsNyBAQCB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bTo6Y3JlYXRlU3RyZWFtcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfSkpOwogICAgIGlmICh3cml0YWJsZS5oYXNFeGNlcHRpb24o
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gd3JpdGFibGUucmVsZWFzZUV4Y2Vw
dGlvbigpOwogCiAgICAgbV9yZWFkYWJsZSA9IHJlYWRhYmxlLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OwogICAgIG1fd3JpdGFibGUgPSB3cml0YWJsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKQEAgLTI0
NiwzNiArMjUwLDI2IEBAIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJlYW1z
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICAgICAgbV9yZWFkYWJsZS0+
bG9jaygpOwogICAgICAgICBtX3dyaXRhYmxlLT5sb2NrKCk7CiAgICAgfQorICAgIHJldHVybiB7
IH07CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4+IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybTo6cmVhZGFibGUoKQogewotICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKLQotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGNv
bnRleHQtPmdsb2JhbE9iamVjdCgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKLQotICAgIGlmICghbV9yZWFk
YWJsZSkKLSAgICAgICAgY3JlYXRlU3RyZWFtcygqZ2xvYmFsT2JqZWN0KTsKLQorICAgIGlmICgh
bV9yZWFkYWJsZSkgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZVN0cmVhbXMoKTsKKyAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIH0KICAgICByZXR1cm4gbV9yZWFkYWJsZS5jb3B5
UmVmKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZlB0cjxXcml0YWJsZVN0cmVhbT4+IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybTo6d3JpdGFibGUoKQogewotICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKLQotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IGNvbnRleHQtPmdsb2JhbE9iamVjdCgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKLQotICAgIGlmICghbV93
cml0YWJsZSkKLSAgICAgICAgY3JlYXRlU3RyZWFtcygqZ2xvYmFsT2JqZWN0KTsKKyAgICBpZiAo
IW1fd3JpdGFibGUpIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjcmVhdGVTdHJlYW1zKCk7Cisg
ICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICB9CiAKICAgICBtX2hhc1dyaXRhYmxlID0gdHJ1
ZTsKICAgICByZXR1cm4gbV93cml0YWJsZS5jb3B5UmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaApp
bmRleCBiNWE1ZWJlNDk0YTYxZDk3ODE4ODFiYWVhMzQxOGY1NWJhN2IwOTdkLi42ZDE3YjBmYThm
NzRkNDg2NDE0ZjczMzYzNjRkMWRhYzZmMzMxYzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAg
LTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gY2xhc3MgU2lkZSB7IFNlbmRlciwg
UmVjZWl2ZXIgfTsKICAgICB2b2lkIGluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kJiwgU2lkZSk7Ci0gICAgdm9pZCBjcmVhdGVTdHJlYW1zKEpTQzo6SlNHbG9iYWxP
YmplY3QmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjcmVhdGVTdHJlYW1zKCk7CiAKICAgICBi
b29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1dyaXRhYmxlIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bS5qcwppbmRleCBjNmRiZGY0MTdhZTE0ZjE2ZTllZTE4YjhlNmIzMWJjZmNkNzk3NDEyLi41OTFk
YTBjM2RkNTQzZmUyYTA3ZTliYTU2YzNkNTc5NWExZTVhOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCkBAIC0xMjMsNyArMTIzLDgg
QEAgZnVuY3Rpb24gcGlwZVRocm91Z2goc3RyZWFtcywgb3B0aW9ucykKICAgICAgICAgICAgIHRo
cm93IEBtYWtlVHlwZUVycm9yKCJyZWFkYWJsZSBzaG91bGQgYmUgUmVhZGFibGVTdHJlYW0iKTsK
IAogICAgICAgICBjb25zdCB3cml0YWJsZSA9IHRyYW5zZm9ybXNbIndyaXRhYmxlIl07Ci0gICAg
ICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0od3JpdGFibGUpKQorICAgICAgICBjb25zdCBpbnRl
cm5hbFdyaXRhYmxlID0gQGdldEludGVybmFsV3JpdGFibGVTdHJlYW0od3JpdGFibGUpOworICAg
ICAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKGludGVybmFsV3JpdGFibGUpKQogICAgICAgICAg
ICAgdGhyb3cgQG1ha2VUeXBlRXJyb3IoIndyaXRhYmxlIHNob3VsZCBiZSBXcml0YWJsZVN0cmVh
bSIpOwogCiAgICAgICAgIGxldCBwcmV2ZW50Q2xvc2UgPSBmYWxzZTsKQEAgLTE0OSwxMCArMTUw
LDEwIEBAIGZ1bmN0aW9uIHBpcGVUaHJvdWdoKHN0cmVhbXMsIG9wdGlvbnMpCiAgICAgICAgIGlm
IChAaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCh0aGlzKSkKICAgICAgICAgICAgIHRocm93IEBtYWtl
VHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBsb2NrZWQiKTsKIAotICAgICAgICBpZiAoQGlz
V3JpdGFibGVTdHJlYW1Mb2NrZWQod3JpdGFibGUpKQorICAgICAgICBpZiAoQGlzV3JpdGFibGVT
dHJlYW1Mb2NrZWQoaW50ZXJuYWxXcml0YWJsZSkpCiAgICAgICAgICAgICB0aHJvdyBAbWFrZVR5
cGVFcnJvcigiV3JpdGFibGVTdHJlYW0gaXMgbG9ja2VkIik7CiAKLSAgICAgICAgQHJlYWRhYmxl
U3RyZWFtUGlwZVRvV3JpdGFibGVTdHJlYW0odGhpcywgd3JpdGFibGUsIHByZXZlbnRDbG9zZSwg
cHJldmVudEFib3J0LCBwcmV2ZW50Q2FuY2VsLCBzaWduYWwpOworICAgICAgICBAcmVhZGFibGVT
dHJlYW1QaXBlVG9Xcml0YWJsZVN0cmVhbSh0aGlzLCBpbnRlcm5hbFdyaXRhYmxlLCBwcmV2ZW50
Q2xvc2UsIHByZXZlbnRBYm9ydCwgcHJldmVudENhbmNlbCwgc2lnbmFsKTsKIAogICAgICAgICBy
ZXR1cm4gcmVhZGFibGU7CiAgICAgfQpAQCAtMTk2LDcgKzE5Nyw4IEBAIGZ1bmN0aW9uIHBpcGVU
byhkZXN0aW5hdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChA
bWFrZVR5cGVFcnJvcigib3B0aW9ucy5zaWduYWwgbXVzdCBiZSBBYm9ydFNpZ25hbCIpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0oZGVzdGluYXRpb24pKQor
ICAgICAgICBjb25zdCBpbnRlcm5hbERlc3RpbmF0aW9uID0gQGdldEludGVybmFsV3JpdGFibGVT
dHJlYW0oZGVzdGluYXRpb24pOworICAgICAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKGludGVy
bmFsRGVzdGluYXRpb24pKQogICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1h
a2VUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIHBpcGVUbyByZXF1aXJlcyBhIFdyaXRhYmxlU3Ry
ZWFtIikpOwogCiAgICAgICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0odGhpcykpCkBAIC0yMDUs
MTAgKzIwNywxMCBAQCBmdW5jdGlvbiBwaXBlVG8oZGVzdGluYXRpb24pCiAgICAgICAgIGlmIChA
aXNSZWFkYWJsZVN0cmVhbUxvY2tlZCh0aGlzKSkKICAgICAgICAgICAgIHJldHVybiBAUHJvbWlz
ZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBsb2NrZWQiKSk7CiAK
LSAgICAgICAgaWYgKEBpc1dyaXRhYmxlU3RyZWFtTG9ja2VkKGRlc3RpbmF0aW9uKSkKKyAgICAg
ICAgaWYgKEBpc1dyaXRhYmxlU3RyZWFtTG9ja2VkKGludGVybmFsRGVzdGluYXRpb24pKQogICAg
ICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIldyaXRhYmxl
U3RyZWFtIGlzIGxvY2tlZCIpKTsKIAotICAgICAgICByZXR1cm4gQHJlYWRhYmxlU3RyZWFtUGlw
ZVRvV3JpdGFibGVTdHJlYW0odGhpcywgZGVzdGluYXRpb24sIHByZXZlbnRDbG9zZSwgcHJldmVu
dEFib3J0LCBwcmV2ZW50Q2FuY2VsLCBzaWduYWwpOworICAgICAgICByZXR1cm4gQHJlYWRhYmxl
U3RyZWFtUGlwZVRvV3JpdGFibGVTdHJlYW0odGhpcywgaW50ZXJuYWxEZXN0aW5hdGlvbiwgcHJl
dmVudENsb3NlLCBwcmV2ZW50QWJvcnQsIHByZXZlbnRDYW5jZWwsIHNpZ25hbCk7CiAgICAgfQog
CiAgICAgLy8gRklYTUU6IHJld3JpdGUgcGlwZVRvIHNvIGFzIHRvIHJlcXVpcmUgdG8gaGF2ZSAn
dGhpcycgYXMgYSBSZWFkYWJsZVN0cmVhbSBhbmQgZGVzdGluYXRpb24gYmUgYSBXcml0YWJsZVN0
cmVhbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9UcmFuc2Zv
cm1TdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvVHJh
bnNmb3JtU3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IGQzZDYzYzNmZmYxOTE2YzIxYjgyNjliZTdk
NDNlZGM3YmVhYTMzNDQuLjQyNjNlMzk5MWE5M2JiNTFmOGM2ZTAxZjhkZTg5MmRjMjZlZjlmMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9UcmFuc2Zvcm1TdHJl
YW1JbnRlcm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1RyYW5z
Zm9ybVN0cmVhbUludGVybmFscy5qcwpAQCAtOTUsNyArOTUsMTEgQEAgZnVuY3Rpb24gaW5pdGlh
bGl6ZVRyYW5zZm9ybVN0cmVhbShzdHJlYW0sIHN0YXJ0UHJvbWlzZSwgd3JpdGFibGVIaWdoV2F0
ZXJNYXJrLAogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShvcHRpb25zLCAiaGlnaFdhdGVyTWFy
ayIsIHJlYWRhYmxlSGlnaFdhdGVyTWFyayk7CiAgICAgY29uc3QgcmVhZGFibGUgPSBuZXcgQFJl
YWRhYmxlU3RyZWFtKHVuZGVybHlpbmdTb3VyY2UsIG9wdGlvbnMpOwogCisgICAgLy8gVGhlIHdy
aXRhYmxlIHRvIGV4cG9zZSB0byBKUyB0aHJvdWdoIHdyaXRhYmxlIGdldHRlci4KICAgICBAcHV0
QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAid3JpdGFibGUiLCB3cml0YWJsZSk7CisgICAgLy8g
VGhlIHdyaXRhYmxlIHRvIHVzZSBmb3IgdGhlIGFjdHVhbCB0cmFuc2Zvcm0gYWxnb3JpdGhtcy4K
KyAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAiaW50ZXJuYWxXcml0YWJsZSIsIEBn
ZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFtKHdyaXRhYmxlKSk7CisKICAgICBAcHV0QnlJZERpcmVj
dFByaXZhdGUoc3RyZWFtLCAicmVhZGFibGUiLCByZWFkYWJsZSk7CiAgICAgQHB1dEJ5SWREaXJl
Y3RQcml2YXRlKHN0cmVhbSwgImJhY2twcmVzc3VyZSIsIEB1bmRlZmluZWQpOwogICAgIEBwdXRC
eUlkRGlyZWN0UHJpdmF0ZShzdHJlYW0sICJiYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlIiwgQHVu
ZGVmaW5lZCk7CkBAIC0xMjEsNyArMTI1LDcgQEAgZnVuY3Rpb24gdHJhbnNmb3JtU3RyZWFtRXJy
b3JXcml0YWJsZUFuZFVuYmxvY2tXcml0ZShzdHJlYW0sIGUpCiAKICAgICBAdHJhbnNmb3JtU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXJDbGVhckFsZ29yaXRobXMoQGdldEJ5SWREaXJlY3RQcml2YXRl
KHN0cmVhbSwgImNvbnRyb2xsZXIiKSk7CiAKLSAgICBjb25zdCB3cml0YWJsZSA9IEBnZXRCeUlk
RGlyZWN0UHJpdmF0ZShzdHJlYW0sICJ3cml0YWJsZSIpOworICAgIGNvbnN0IHdyaXRhYmxlID0g
QGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgImludGVybmFsV3JpdGFibGUiKTsKICAgICBA
d3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckVycm9ySWZOZWVkZWQoQGdldEJ5SWREaXJl
Y3RQcml2YXRlKHdyaXRhYmxlLCAiY29udHJvbGxlciIpLCBlKTsKIAogICAgIGlmIChAZ2V0QnlJ
ZERpcmVjdFByaXZhdGUoc3RyZWFtLCAiYmFja3ByZXNzdXJlIikpCkBAIC0yNjIsNyArMjY2LDcg
QEAgZnVuY3Rpb24gdHJhbnNmb3JtU3RyZWFtRGVmYXVsdFNpbmtXcml0ZUFsZ29yaXRobShzdHJl
YW0sIGNodW5rKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGNvbnN0IHdyaXRhYmxlID0g
QGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgIndyaXRhYmxlIik7CisgICAgY29uc3Qgd3Jp
dGFibGUgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAiaW50ZXJuYWxXcml0YWJsZSIp
OwogCiAgICAgQGFzc2VydChAZ2V0QnlJZERpcmVjdFByaXZhdGUod3JpdGFibGUsICJzdGF0ZSIp
ID09PSAid3JpdGFibGUiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1dyaXRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9Xcml0YWJsZVN0cmVhbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZkOTk4YWFlZjY0ZDE5NTViMThhMjM2
M2M0ZTE4NDJjODg0MGM0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXcml0YWJsZVN0cmVhbS5oIgorCisjaW5jbHVkZSAiSlNXcml0YWJsZVN0cmVh
bS5oIgorI2luY2x1ZGUgIkpTV3JpdGFibGVTdHJlYW1TaW5rLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworRXhjZXB0aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gV3JpdGFibGVTdHJlYW06
OmNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIHN0ZDo6b3B0aW9uYWw8
SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdW5kZXJseWluZ1NpbmssIHN0ZDo6b3B0aW9u
YWw8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgc3RyYXRlZ3kpCit7CisgICAgSlNDOjpK
U1ZhbHVlIHVuZGVybHlpbmdTaW5rVmFsdWUgPSBKU0M6OmpzVW5kZWZpbmVkKCk7CisgICAgaWYg
KHVuZGVybHlpbmdTaW5rKQorICAgICAgICB1bmRlcmx5aW5nU2lua1ZhbHVlID0gdW5kZXJseWlu
Z1NpbmstPmdldCgpOworCisgICAgSlNDOjpKU1ZhbHVlIHN0cmF0ZWd5VmFsdWUgPSBKU0M6Ompz
VW5kZWZpbmVkKCk7CisgICAgaWYgKHN0cmF0ZWd5KQorICAgICAgICBzdHJhdGVneVZhbHVlID0g
c3RyYXRlZ3ktPmdldCgpOworCisgICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3QsIHVuZGVy
bHlpbmdTaW5rVmFsdWUsIHN0cmF0ZWd5VmFsdWUpOworfQorCitFeGNlcHRpb25PcjxSZWY8V3Jp
dGFibGVTdHJlYW0+PiBXcml0YWJsZVN0cmVhbTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHVuZGVybHlpbmdTaW5rLCBKU0M6OkpTVmFsdWUg
c3RyYXRlZ3kpCit7CisgICAgYXV0byByZXN1bHQgPSBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtOjpj
cmVhdGUoKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCksIHVu
ZGVybHlpbmdTaW5rLCBzdHJhdGVneSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXcml0YWJsZVN0cmVhbShyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkp
KTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gV3JpdGFibGVTdHJlYW06
OmNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8V3JpdGFibGVTdHJl
YW1TaW5rPiYmIHNpbmspCit7CisgICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3QsIHRvSlNO
ZXdseUNyZWF0ZWQoJmdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgV1RGTW92ZShzaW5rKSks
IEpTQzo6anNVbmRlZmluZWQoKSk7Cit9CisKK1dyaXRhYmxlU3RyZWFtOjpXcml0YWJsZVN0cmVh
bShSZWY8SW50ZXJuYWxXcml0YWJsZVN0cmVhbT4mJiBpbnRlcm5hbFdyaXRhYmxlU3RyZWFtKQor
ICAgIDogbV9pbnRlcm5hbFdyaXRhYmxlU3RyZWFtKFdURk1vdmUoaW50ZXJuYWxXcml0YWJsZVN0
cmVhbSkpCit7Cit9CisKK0pTQzo6SlNWYWx1ZSBKU1dyaXRhYmxlU3RyZWFtOjphYm9ydChKU0M6
OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJhbWUp
Cit7CisgICAgcmV0dXJuIHdyYXBwZWQoKS5pbnRlcm5hbFdyaXRhYmxlU3RyZWFtKCkuYWJvcnQo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUuYXJndW1lbnQoMCkpOworfQorCitKU0M6OkpTVmFsdWUg
SlNXcml0YWJsZVN0cmVhbTo6Y2xvc2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBKU0M6OkNhbGxGcmFtZSYpCit7CisgICAgcmV0dXJuIHdyYXBwZWQoKS5pbnRlcm5hbFdyaXRh
YmxlU3RyZWFtKCkuY2xvc2UoZ2xvYmFsT2JqZWN0KTsKK30KKworSlNDOjpKU1ZhbHVlIEpTV3Jp
dGFibGVTdHJlYW06OmdldFdyaXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTQzo6Q2FsbEZyYW1lJikKK3sKKyAgICByZXR1cm4gd3JhcHBlZCgpLmludGVybmFsV3JpdGFi
bGVTdHJlYW0oKS5nZXRXcml0ZXIoZ2xvYmFsT2JqZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRh
YmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJl
YW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yYzJhMjUyNGRiZDMwYjAwNzE3NjNkYzdlNmUzNzNlOTIxMmRhNGY3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRh
YmxlU3RyZWFtLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxXcml0
YWJsZVN0cmVhbS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW50
ZXJuYWxXcml0YWJsZVN0cmVhbTsKK2NsYXNzIEpTRE9NR2xvYmFsT2JqZWN0OworY2xhc3MgV3Jp
dGFibGVTdHJlYW1TaW5rOworCitjbGFzcyBXcml0YWJsZVN0cmVhbSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdyaXRhYmxlU3RyZWFtPiB7CitwdWJsaWM6CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxXcml0YWJsZVN0cmVhbT4+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjpvcHRp
b25hbDxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiwgc3RkOjpvcHRpb25hbDxKU0M6OlN0
cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXcml0
YWJsZVN0cmVhbT4+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxXcml0YWJsZVN0cmVh
bVNpbms+JiYpOworCisgICAgfldyaXRhYmxlU3RyZWFtKCkgPSBkZWZhdWx0OworCisgICAgdm9p
ZCBsb2NrKCkgeyBtX2ludGVybmFsV3JpdGFibGVTdHJlYW0tPmxvY2soKTsgfQorICAgIGJvb2wg
bG9ja2VkKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFdyaXRhYmxlU3RyZWFtLT5sb2NrZWQo
KTsgfQorCisgICAgSW50ZXJuYWxXcml0YWJsZVN0cmVhbSYgaW50ZXJuYWxXcml0YWJsZVN0cmVh
bSgpIHsgcmV0dXJuIG1faW50ZXJuYWxXcml0YWJsZVN0cmVhbS5nZXQoKTsgfQorCitwcml2YXRl
OgorICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8V3JpdGFibGVTdHJlYW0+PiBjcmVhdGUoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKKyAgICBleHBs
aWNpdCBXcml0YWJsZVN0cmVhbShSZWY8SW50ZXJuYWxXcml0YWJsZVN0cmVhbT4mJik7CisKKyAg
ICBSZWY8SW50ZXJuYWxXcml0YWJsZVN0cmVhbT4gbV9pbnRlcm5hbFdyaXRhYmxlU3RyZWFtOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5pZGwKaW5kZXggZDlhZTY2OWYxZGM5ZDU2YTBiZDBh
MzdmZGVjNjZiOWM1ZWE0MDQ3MS4uNGYxODAyNzNjYzQyYTM4NWE2YmY1NzRhZGUxZmVkMDM1Nzc0
YzZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxl
U3RyZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVT
dHJlYW0uaWRsCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5v
biBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwxNSArMzEsMTYgQEAKIFsK
ICAgICBFbmFibGVkQXRSdW50aW1lPVdyaXRhYmxlU3RyZWFtQVBJLAogICAgIEV4cG9zZWQ9KFdp
bmRvdyxXb3JrZXIpLAotICAgIEpTQnVpbHRpbiwKICAgICBQcml2YXRlSWRlbnRpZmllciwKLSAg
ICBQdWJsaWNJZGVudGlmaWVyCisgICAgUHVibGljSWRlbnRpZmllciwKKyAgICBTa2lwVlRhYmxl
VmFsaWRhdGlvbgogXSBpbnRlcmZhY2UgV3JpdGFibGVTdHJlYW0gewotICAgIGNvbnN0cnVjdG9y
KG9wdGlvbmFsIG9iamVjdCB1bmRlcmx5aW5nU2luaywgb3B0aW9uYWwgUXVldWluZ1N0cmF0ZWd5
IHN0cmF0ZWd5KTsKKyAgICAvLyBGSVhNRTogVGlnaHRlbiBwYXJhbWV0ZXIgbWF0Y2hpbmcKKyAg
ICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0XSBjb25zdHJ1Y3RvcihvcHRpb25hbCBvYmplY3QgdW5k
ZXJseWluZ1NpbmssIG9wdGlvbmFsIG9iamVjdCBzdHJhdGVneSk7CiAKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiBsb2NrZWQ7CiAKLSAgICBQcm9taXNlPGFueT4gYWJvcnQob3B0aW9u
YWwgYW55IHJlYXNvbik7Ci0gICAgUHJvbWlzZTxhbnk+IGNsb3NlKCk7Ci0gICAgV3JpdGFibGVT
dHJlYW1EZWZhdWx0V3JpdGVyIGdldFdyaXRlcigpOworICAgIFtDdXN0b20sIFJldHVybnNPd25Q
cm9taXNlXSBQcm9taXNlPGFueT4gYWJvcnQob3B0aW9uYWwgYW55IHJlYXNvbik7CisgICAgW0N1
c3RvbSwgUmV0dXJuc093blByb21pc2VdIFByb21pc2U8YW55PiBjbG9zZSgpOworICAgIFtDdXN0
b21dIFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlciBnZXRXcml0ZXIoKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NmY5MmYxYzAyNDdiYjJlNDU5MzUwMzU1Njc2NzhiYWY5
ZDNmM2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCisrKyAvZGV2L251
bGwKQEAgLTEsMTMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5j
LgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBpbml0aWFsaXplV3JpdGFibGVTdHJlYW0odW5k
ZXJseWluZ1NpbmssIHN0cmF0ZWd5KQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICh1
bmRlcmx5aW5nU2luayA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgdW5kZXJseWluZ1NpbmsgPSB7
IH07Ci0KLSAgICBpZiAoc3RyYXRlZ3kgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIHN0cmF0ZWd5
ID0geyB9OwotCi0gICAgaWYgKCFAaXNPYmplY3QodW5kZXJseWluZ1NpbmspKQotICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHRha2VzIGFuIG9iamVj
dCBhcyBmaXJzdCBhcmd1bWVudCIpOwotCi0gICAgLy8gQ3JlYXRlV3JpdGVTdHJlYW0gY29kZSBw
YXRoLgotICAgIGlmIChAZ2V0QnlJZERpcmVjdFByaXZhdGUodW5kZXJseWluZ1NpbmssICJXcml0
YWJsZVN0cmVhbSIpKSB7Ci0gICAgICAgIEBwcml2YXRlSW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFt
KHRoaXMsIHVuZGVybHlpbmdTaW5rKTsKLQotICAgICAgICBjb25zdCBjb250cm9sbGVyID0gbmV3
IEBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKCk7Ci0KLSAgICAgICAgQHNldFVwV3Jp
dGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcih0aGlzLCBjb250cm9sbGVyLCB1bmRlcmx5aW5n
U2luay5zdGFydEFsZ29yaXRobSwgdW5kZXJseWluZ1Npbmsud3JpdGVBbGdvcml0aG0sIHVuZGVy
bHlpbmdTaW5rLmNsb3NlQWxnb3JpdGhtLCB1bmRlcmx5aW5nU2luay5hYm9ydEFsZ29yaXRobSwg
c3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgc3RyYXRlZ3kuc2l6ZUFsZ29yaXRobSk7Ci0gICAgICAg
IHJldHVybiB0aGlzOwotICAgIH0KLQotICAgIGlmICgidHlwZSIgaW4gdW5kZXJseWluZ1Npbmsp
Ci0gICAgICAgIEB0aHJvd1JhbmdlRXJyb3IoIkludmFsaWQgdHlwZSBpcyBzcGVjaWZpZWQiKTsK
LQotICAgIGNvbnN0IHNpemVBbGdvcml0aG0gPSBAZXh0cmFjdFNpemVBbGdvcml0aG0oc3RyYXRl
Z3kpOwotICAgIGNvbnN0IGhpZ2hXYXRlck1hcmsgPSBAZXh0cmFjdEhpZ2hXYXRlck1hcmsoc3Ry
YXRlZ3ksIDEpOwotCi0gICAgY29uc3QgdW5kZXJseWluZ1NpbmtEaWN0ID0geyB9OwotICAgIGlm
ICgic3RhcnQiIGluIHVuZGVybHlpbmdTaW5rKSB7Ci0gICAgICAgIHVuZGVybHlpbmdTaW5rRGlj
dFsic3RhcnQiXSA9IHVuZGVybHlpbmdTaW5rWyJzdGFydCJdOwotICAgICAgICBpZiAodHlwZW9m
IHVuZGVybHlpbmdTaW5rRGljdFsic3RhcnQiXSAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAg
IEB0aHJvd1R5cGVFcnJvcigidW5kZXJseWluZ1Npbmsuc3RhcnQgc2hvdWxkIGJlIGEgZnVuY3Rp
b24iKTsKLSAgICB9Ci0gICAgaWYgKCJ3cml0ZSIgaW4gdW5kZXJseWluZ1NpbmspIHsKLSAgICAg
ICAgdW5kZXJseWluZ1NpbmtEaWN0WyJ3cml0ZSJdID0gdW5kZXJseWluZ1NpbmtbIndyaXRlIl07
Ci0gICAgICAgIGlmICh0eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJ3cml0ZSJdICE9PSAiZnVu
Y3Rpb24iKQotICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5nU2luay53cml0
ZSBzaG91bGQgYmUgYSBmdW5jdGlvbiIpOwotICAgIH0KLSAgICBpZiAoImNsb3NlIiBpbiB1bmRl
cmx5aW5nU2luaykgewotICAgICAgICB1bmRlcmx5aW5nU2lua0RpY3RbImNsb3NlIl0gPSB1bmRl
cmx5aW5nU2lua1siY2xvc2UiXTsKLSAgICAgICAgaWYgKHR5cGVvZiB1bmRlcmx5aW5nU2lua0Rp
Y3RbImNsb3NlIl0gIT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
InVuZGVybHlpbmdTaW5rLmNsb3NlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7Ci0gICAgfQotICAg
IGlmICgiYWJvcnQiIGluIHVuZGVybHlpbmdTaW5rKSB7Ci0gICAgICAgIHVuZGVybHlpbmdTaW5r
RGljdFsiYWJvcnQiXSA9IHVuZGVybHlpbmdTaW5rWyJhYm9ydCJdOwotICAgICAgICBpZiAodHlw
ZW9mIHVuZGVybHlpbmdTaW5rRGljdFsiYWJvcnQiXSAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigidW5kZXJseWluZ1NpbmsuYWJvcnQgc2hvdWxkIGJlIGEgZnVu
Y3Rpb24iKTsKLSAgICB9Ci0KLSAgICBAcHJpdmF0ZUluaXRpYWxpemVXcml0YWJsZVN0cmVhbSh0
aGlzLCB1bmRlcmx5aW5nU2luayk7Ci0gICAgQHNldFVwV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlckZyb21VbmRlcmx5aW5nU2luayh0aGlzLCB1bmRlcmx5aW5nU2luaywgdW5kZXJseWlu
Z1NpbmtEaWN0LCBoaWdoV2F0ZXJNYXJrLCBzaXplQWxnb3JpdGhtKTsKLQotICAgIHJldHVybiB0
aGlzOwotfQotCi1AZ2V0dGVyCi1mdW5jdGlvbiBsb2NrZWQoKQotewotICAgICJ1c2Ugc3RyaWN0
IjsKLQotICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0odGhpcykpCi0gICAgICAgIHRocm93IEBt
YWtlVGhpc1R5cGVFcnJvcigiV3JpdGFibGVTdHJlYW0iLCAibG9ja2VkIik7Ci0KLSAgICByZXR1
cm4gQGlzV3JpdGFibGVTdHJlYW1Mb2NrZWQodGhpcyk7Ci19Ci0KLWZ1bmN0aW9uIGFib3J0KHJl
YXNvbikKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFt
KHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVRoaXNUeXBlRXJy
b3IoIldyaXRhYmxlU3RyZWFtIiwgImFib3J0IikpOwotCi0gICAgaWYgKEBpc1dyaXRhYmxlU3Ry
ZWFtTG9ja2VkKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5
cGVFcnJvcigiV3JpdGFibGVTdHJlYW0uYWJvcnQgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24g
bm9uIGxvY2tlZCBXcml0YWJsZVN0cmVhbSIpKTsKLQotICAgIHJldHVybiBAd3JpdGFibGVTdHJl
YW1BYm9ydCh0aGlzLCByZWFzb24pOwotfQotCi1mdW5jdGlvbiBjbG9zZSgpCi17Ci0gICAgInVz
ZSBzdHJpY3QiOwotCi0gICAgaWYgKCFAaXNXcml0YWJsZVN0cmVhbSh0aGlzKSkKLSAgICAgICAg
cmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUaGlzVHlwZUVycm9yKCJXcml0YWJsZVN0cmVh
bSIsICJjbG9zZSIpKTsKLQotICAgIGlmIChAaXNXcml0YWJsZVN0cmVhbUxvY2tlZCh0aGlzKSkK
LSAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIldyaXRhYmxl
U3RyZWFtLmNsb3NlIG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIG9uIG5vbiBsb2NrZWQgV3JpdGFi
bGVTdHJlYW0iKSk7Ci0KLSAgICBpZiAoQHdyaXRhYmxlU3RyZWFtQ2xvc2VRdWV1ZWRPckluRmxp
Z2h0KHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJv
cigiV3JpdGFibGVTdHJlYW0uY2xvc2UgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24gYSBiZWlu
ZyBjbG9zZSBXcml0YWJsZVN0cmVhbSIpKTsKLQotICAgIHJldHVybiBAd3JpdGFibGVTdHJlYW1D
bG9zZSh0aGlzKTsKLX0KLQotZnVuY3Rpb24gZ2V0V3JpdGVyKCkKLXsKLSAgICAidXNlIHN0cmlj
dCI7Ci0KLSAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRoaXMpKQotICAgICAgICB0aHJvdyBA
bWFrZVRoaXNUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtIiwgImdldFdyaXRlciIpOwotCi0gICAg
cmV0dXJuIEBhY3F1aXJlV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyKHRoaXMpOwotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVm
YXVsdFdyaXRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0
cmVhbURlZmF1bHRXcml0ZXIuanMKaW5kZXggZTlkYzk3MTA1ODNjNDk1NDA2MzdmYWFiMTc1YWIx
ZDZkMTA1Mjc3Yi4uNjlhOTUzZmMzZjM5ZTJkMThjNDdiMzZmNGExMGFhOGRlYjU4M2JiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVm
YXVsdFdyaXRlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFi
bGVTdHJlYW1EZWZhdWx0V3JpdGVyLmpzCkBAIC0yNyw2ICsyNywxMiBAQCBmdW5jdGlvbiBpbml0
aWFsaXplV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyKHN0cmVhbSkKIHsKICAgICAidXNlIHN0
cmljdCI7CiAKKyAgICAvLyBzdHJlYW0gY2FuIGJlIGEgV3JpdGFibGVTdHJlYW0gaWYgV3JpdGFi
bGVTdHJlYW1EZWZhdWx0V3JpdGVyIGNvbnN0cnVjdG9yIGlzIGNhbGxlZCBkaXJlY3RseSBmcm9t
IEpTCisgICAgLy8gb3IgYW4gSW50ZXJuYWxXcml0YWJsZVN0cmVhbSBpbiBvdGhlciBjb2RlIHBh
dGhzLgorICAgIGNvbnN0IGludGVybmFsU3RyZWFtID0gQGdldEludGVybmFsV3JpdGFibGVTdHJl
YW0oc3RyZWFtKTsKKyAgICBpZiAoaW50ZXJuYWxTdHJlYW0pCisgICAgICAgIHN0cmVhbSA9IGlu
dGVybmFsU3RyZWFtOworCiAgICAgaWYgKCFAaXNXcml0YWJsZVN0cmVhbShzdHJlYW0pKQogICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlciBjb25zdHJ1
Y3RvciB0YWtlcyBhIFdyaXRhYmxlU3RyZWFtIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qcyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qcwppbmRleCA2
NzA1MDQ2M2UxYzJlNzRkMjRjMzA2MDBjZDdkMmRlZTVlZDhkM2MyLi44MjIzODQ2MWVmNmVmNGU1
MmE2MjRhNzYzOWZjNDQyMmFiOGQxZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC01Nyw3ICs1
Nyw2NiBAQCBmdW5jdGlvbiBjcmVhdGVXcml0YWJsZVN0cmVhbShzdGFydEFsZ29yaXRobSwgd3Jp
dGVBbGdvcml0aG0sIGNsb3NlQWxnb3JpdGhtLCBhYgogICAgIHJldHVybiBuZXcgQFdyaXRhYmxl
U3RyZWFtKHVuZGVybHlpbmdTaW5rLCB7IHNpemVBbGdvcml0aG06IHdyaXRhYmxlU2l6ZUFsZ29y
aXRobSwgaGlnaFdhdGVyTWFyazogd3JpdGFibGVIaWdoV2F0ZXJNYXJrIH0pOwogfQogCi1mdW5j
dGlvbiBwcml2YXRlSW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtKHN0cmVhbSwgdW5kZXJseWluZ1Np
bmspCitmdW5jdGlvbiBjcmVhdGVJbnRlcm5hbFdyaXRhYmxlU3RyZWFtKHVuZGVybHlpbmdTaW5r
LCBzdHJhdGVneSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBjb25zdCBzdHJlYW0gPSB7
IH07CisKKyAgICBpZiAodW5kZXJseWluZ1NpbmsgPT09IEB1bmRlZmluZWQpCisgICAgICAgIHVu
ZGVybHlpbmdTaW5rID0geyB9OworCisgICAgaWYgKHN0cmF0ZWd5ID09PSBAdW5kZWZpbmVkKQor
ICAgICAgICBzdHJhdGVneSA9IHsgfTsKKworICAgIGlmICghQGlzT2JqZWN0KHVuZGVybHlpbmdT
aW5rKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbSBjb25zdHJ1Y3Rv
ciB0YWtlcyBhbiBvYmplY3QgYXMgZmlyc3QgYXJndW1lbnQiKTsKKworICAgIC8vIGNyZWF0ZVdy
aXRlU3RyZWFtIGNvZGUgcGF0aC4KKyAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRlKHVuZGVy
bHlpbmdTaW5rLCAiV3JpdGFibGVTdHJlYW0iKSkgeworICAgICAgICBAaW5pdGlhbGl6ZVdyaXRh
YmxlU3RyZWFtU2xvdHMoc3RyZWFtLCB1bmRlcmx5aW5nU2luayk7CisKKyAgICAgICAgY29uc3Qg
Y29udHJvbGxlciA9IG5ldyBAV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcigpOworCisg
ICAgICAgIEBzZXRVcFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIoc3RyZWFtLCBjb250
cm9sbGVyLCB1bmRlcmx5aW5nU2luay5zdGFydEFsZ29yaXRobSwgdW5kZXJseWluZ1Npbmsud3Jp
dGVBbGdvcml0aG0sIHVuZGVybHlpbmdTaW5rLmNsb3NlQWxnb3JpdGhtLCB1bmRlcmx5aW5nU2lu
ay5hYm9ydEFsZ29yaXRobSwgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgc3RyYXRlZ3kuc2l6ZUFs
Z29yaXRobSk7CisgICAgICAgIHJldHVybiBzdHJlYW07CisgICAgfQorCisgICAgaWYgKCJ0eXBl
IiBpbiB1bmRlcmx5aW5nU2luaykKKyAgICAgICAgQHRocm93UmFuZ2VFcnJvcigiSW52YWxpZCB0
eXBlIGlzIHNwZWNpZmllZCIpOworCisgICAgY29uc3Qgc2l6ZUFsZ29yaXRobSA9IEBleHRyYWN0
U2l6ZUFsZ29yaXRobShzdHJhdGVneSk7CisgICAgY29uc3QgaGlnaFdhdGVyTWFyayA9IEBleHRy
YWN0SGlnaFdhdGVyTWFyayhzdHJhdGVneSwgMSk7CisKKyAgICBjb25zdCB1bmRlcmx5aW5nU2lu
a0RpY3QgPSB7IH07CisgICAgaWYgKCJzdGFydCIgaW4gdW5kZXJseWluZ1NpbmspIHsKKyAgICAg
ICAgdW5kZXJseWluZ1NpbmtEaWN0WyJzdGFydCJdID0gdW5kZXJseWluZ1NpbmtbInN0YXJ0Il07
CisgICAgICAgIGlmICh0eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJzdGFydCJdICE9PSAiZnVu
Y3Rpb24iKQorICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5nU2luay5zdGFy
dCBzaG91bGQgYmUgYSBmdW5jdGlvbiIpOworICAgIH0KKyAgICBpZiAoIndyaXRlIiBpbiB1bmRl
cmx5aW5nU2luaykgeworICAgICAgICB1bmRlcmx5aW5nU2lua0RpY3RbIndyaXRlIl0gPSB1bmRl
cmx5aW5nU2lua1sid3JpdGUiXTsKKyAgICAgICAgaWYgKHR5cGVvZiB1bmRlcmx5aW5nU2lua0Rp
Y3RbIndyaXRlIl0gIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
InVuZGVybHlpbmdTaW5rLndyaXRlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7CisgICAgfQorICAg
IGlmICgiY2xvc2UiIGluIHVuZGVybHlpbmdTaW5rKSB7CisgICAgICAgIHVuZGVybHlpbmdTaW5r
RGljdFsiY2xvc2UiXSA9IHVuZGVybHlpbmdTaW5rWyJjbG9zZSJdOworICAgICAgICBpZiAodHlw
ZW9mIHVuZGVybHlpbmdTaW5rRGljdFsiY2xvc2UiXSAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigidW5kZXJseWluZ1NpbmsuY2xvc2Ugc2hvdWxkIGJlIGEgZnVu
Y3Rpb24iKTsKKyAgICB9CisgICAgaWYgKCJhYm9ydCIgaW4gdW5kZXJseWluZ1NpbmspIHsKKyAg
ICAgICAgdW5kZXJseWluZ1NpbmtEaWN0WyJhYm9ydCJdID0gdW5kZXJseWluZ1NpbmtbImFib3J0
Il07CisgICAgICAgIGlmICh0eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJhYm9ydCJdICE9PSAi
ZnVuY3Rpb24iKQorICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5nU2luay5h
Ym9ydCBzaG91bGQgYmUgYSBmdW5jdGlvbiIpOworICAgIH0KKworICAgIEBpbml0aWFsaXplV3Jp
dGFibGVTdHJlYW1TbG90cyhzdHJlYW0sIHVuZGVybHlpbmdTaW5rKTsKKyAgICBAc2V0VXBXcml0
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRnJvbVVuZGVybHlpbmdTaW5rKHN0cmVhbSwgdW5k
ZXJseWluZ1NpbmssIHVuZGVybHlpbmdTaW5rRGljdCwgaGlnaFdhdGVyTWFyaywgc2l6ZUFsZ29y
aXRobSk7CisKKyAgICByZXR1cm4gc3RyZWFtOworfQorCitmdW5jdGlvbiBpbml0aWFsaXplV3Jp
dGFibGVTdHJlYW1TbG90cyhzdHJlYW0sIHVuZGVybHlpbmdTaW5rKQogewogICAgIEBwdXRCeUlk
RGlyZWN0UHJpdmF0ZShzdHJlYW0sICJzdGF0ZSIsICJ3cml0YWJsZSIpOwogICAgIEBwdXRCeUlk
RGlyZWN0UHJpdmF0ZShzdHJlYW0sICJzdG9yZWRFcnJvciIsIEB1bmRlZmluZWQpOwpAQCAtNzIs
NiArMTMxLDI1IEBAIGZ1bmN0aW9uIHByaXZhdGVJbml0aWFsaXplV3JpdGFibGVTdHJlYW0oc3Ry
ZWFtLCB1bmRlcmx5aW5nU2luaykKICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAi
dW5kZXJseWluZ1NpbmsiLCB1bmRlcmx5aW5nU2luayk7CiB9CiAKK2Z1bmN0aW9uIHdyaXRhYmxl
U3RyZWFtQ2xvc2VGb3JCaW5kaW5ncyhzdHJlYW0pCit7CisgICAgaWYgKEBpc1dyaXRhYmxlU3Ry
ZWFtTG9ja2VkKHN0cmVhbSkpCisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtl
VHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbS5jbG9zZSBtZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBv
biBub24gbG9ja2VkIFdyaXRhYmxlU3RyZWFtIikpOworCisgICAgaWYgKEB3cml0YWJsZVN0cmVh
bUNsb3NlUXVldWVkT3JJbkZsaWdodChzdHJlYW0pKQorICAgICAgICByZXR1cm4gQFByb21pc2Uu
QHJlamVjdChAbWFrZVR5cGVFcnJvcigiV3JpdGFibGVTdHJlYW0uY2xvc2UgbWV0aG9kIGNhbiBv
bmx5IGJlIHVzZWQgb24gYSBiZWluZyBjbG9zZSBXcml0YWJsZVN0cmVhbSIpKTsKKworICAgIHJl
dHVybiBAd3JpdGFibGVTdHJlYW1DbG9zZShzdHJlYW0pOworfQorCitmdW5jdGlvbiB3cml0YWJs
ZVN0cmVhbUFib3J0Rm9yQmluZGluZ3Moc3RyZWFtLCByZWFzb24pCit7CisgICAgaWYgKEBpc1dy
aXRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkpCisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVq
ZWN0KEBtYWtlVHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbS5hYm9ydCBtZXRob2QgY2FuIG9ubHkg
YmUgdXNlZCBvbiBub24gbG9ja2VkIFdyaXRhYmxlU3RyZWFtIikpOworCisgICAgcmV0dXJuIEB3
cml0YWJsZVN0cmVhbUFib3J0KHN0cmVhbSwgcmVhc29uKTsKK30KKwogZnVuY3Rpb24gaXNXcml0
YWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCiB7CiAgICAgcmV0dXJuIEBnZXRCeUlkRGlyZWN0UHJp
dmF0ZShzdHJlYW0sICJ3cml0ZXIiKSAhPT0gQHVuZGVmaW5lZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
ZmVmZjlkMDU5ZGY4ZmMzZDliMjhjODBmN2EwNjBlZmZjNTU4MTNlOC4uMzgwYzY1ZDUwZDZiY2Q3
NDk5MjBiNjU3NTEyMzk1NzQ5MTIxNzUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQyNyw2ICs0Mjcs
NyBAQCBiaW5kaW5ncy9qcy9ET01HQ091dHB1dENvbnN0cmFpbnQuY3BwCiBiaW5kaW5ncy9qcy9E
T01XcmFwcGVyV29ybGQuY3BwCiBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCiBiaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorYmluZGluZ3MvanMvSW50ZXJuYWxXcml0YWJs
ZVN0cmVhbS5jcHAKIGJpbmRpbmdzL2pzL0pTQWJvcnRTaWduYWxDdXN0b20uY3BwCiBiaW5kaW5n
cy9qcy9KU0Fic3RyYWN0UmFuZ2VDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0FuaW1hdGlvbkVm
ZmVjdEN1c3RvbS5jcHAKQEAgLTU3MCw3ICs1NzEsNiBAQCBiaW5kaW5ncy9qcy9XZWJDb3JlSlND
bGllbnREYXRhLmNwcAogYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNw
cAogYmluZGluZ3MvanMvV29ya2VyTW9kdWxlU2NyaXB0TG9hZGVyLmNwcAogYmluZGluZ3MvanMv
V2luZG93UHJveHkuY3BwCi1iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAKIGJyaWRnZS9J
ZGVudGlmaWVyUmVwLmNwcAogYnJpZGdlL05QX2pzb2JqZWN0LmNwcAogYnJpZGdlL2MvQ1J1bnRp
bWVPYmplY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMjZjMGUzYzdmMGQ1OGZlZWE4MDg1OWMxOThiMjIxMmUwMDE3MTdh
YS4uODhiMmI4MTY0YWYxZTE2ZmE4OGJhZDc5NDM3MmYxYTkxMDI3OTFmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTExNCw3
ICsxMTE0LDYgQEAKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDQzIC8qIFJlYWRhYmxlQnl0ZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzNGNjQgLyogUmVhZGFibGVCeXRlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJl
YW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRhYmxlU3RyZWFtSW50
ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1CdWls
dGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIw
M0Q4MDYxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZFNkZFOTFCQkQx
MkU1MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8q
IFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MTZFQ0FFNTI1QjU4Q0M0MDBCMzREQTUgLyogTWVkaWFTZXNz
aW9uR3JvdXBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTZFQ0FFMzI1QjU4Q0M0MDBCMzREQTUgLyogTWVkaWFTZXNzaW9uR3JvdXBJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDE2RURCRjYyNjAwRDY3OTAwMDkyNjc1IC8qIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2
RURCRjQyNjAwRDY3ODAwMDkyNjc1IC8qIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkVEQzAw
MjYwMEU3ODgwMDA5MjY3NSAvKiBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkVEQkZGMjYwMEU3ODcwMDA5
MjY3NSAvKiBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzgzMCw4ICs3ODI5LDggQEAKIAkJNDE0MTg5
RkYyNTY0MThFNzAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0MThBMDAyNTY0MzU5NzAwMzYzNDE3IC8qIFdy
aXRhYmxlU3RyZWFtU2luay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV3JpdGFibGVTdHJl
YW1TaW5rLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0MThBMDIyNTY0MzU5
ODAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtU2luay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXcml0YWJsZVN0cmVhbVNpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDE0MThBMDMyNTY0M0UxMjAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE0MThBMDQyNTY0M0UxMzAwMzYzNDE3IC8qIFdy
aXRhYmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxl
U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4QTAzMjU2NDNFMTIw
MDM2MzQxNyAvKiBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEludGVybmFsV3JpdGFibGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyogSW50ZXJuYWxX
cml0YWJsZVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcm5h
bFdyaXRhYmxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDE4QTA1
MjU2NjYwQUYwMDM2MzQxNyAvKiBSVENFbmNvZGVkRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUlRDRW5jb2RlZEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE0MThBMDYyNTY2NjBCMDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRGcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENFbmNvZGVkRnJhbWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0NDYwQTAyNDEyOTk0MTAwODE0QkU3IC8q
IE1lZGlhU2Vzc2lvbklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtODEyOCw2ICs4MTI3LDggQEAKIAkJNDFFNTk0MDEyMTQ4NjVBQjAwRDNDQjYxIC8qIFJUQ1J0
cEZlY1BhcmFtZXRlcnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cEZlY1BhcmFtZXRlcnMuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUU2N0E3RjI1RDE2ODQ2MDA3QjBBNEMgLyogU1RVTk1l
c3NhZ2VQYXJzaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNU
VU5NZXNzYWdlUGFyc2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTY3
QTgxMjVEMTY4NDcwMDdCMEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNpbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1RVTk1lc3NhZ2VQYXJzaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxRTZENzIxMjZFQUEwNDUwMEI3NjVENiAvKiBXcml0YWJsZVN0cmVh
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0YWJsZVN0cmVhbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUU2RDcyMjI2RUFBMDQ2MDBCNzY1RDYgLyog
V3JpdGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V3JpdGFibGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUU5RENF
NDIzMTk3M0ZFMDBGMzU5NDkgLyogQmxvYkxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCbG9iTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
RTlEQ0U2MjMxOTc0MjMwMEYzNTk0OSAvKiBFbmRpbmdUeXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBFbmRpbmdUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFF
OURDRTgyMzE5Q0E3NTAwRjM1OTQ5IC8qIE5ldHdvcmtTZW5kUXVldWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1NlbmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTIyNDksNyArMTIyNTAsNiBAQAogCQk5OTA4QjBFRDFCQ0FDRjkxMDBF
RDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuamF2YXNjcmlwdDsgcGF0aCA9IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEVFMUJDQUNGOTEwMEVEMEY2NSAvKiBDb3Vu
dFF1ZXVpbmdTdHJhdGVneS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0
aCA9IENvdW50UXVldWluZ1N0cmF0ZWd5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OTA4QjBFRjFCQ0FDRjkxMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW0uanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5qczsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIwRUYxQkNBQ0Y5MTAwRUQwRjc1IC8qIFdyaXRh
YmxlU3RyZWFtLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gV3Jp
dGFibGVTdHJlYW0uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEYwMUJD
QUNGOTEwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0
Q29udHJvbGxlci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjAxQkNB
Q0Y5MTAwRUQzRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9s
bGVyLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGMDFCQ0FDRjkxMDBF
RDU2NzIgLyogUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QuanM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjI2NCw3ICsxMjI2NCw2IEBACiAJCTk5MDhCMEY2
MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvdW50UXVldWluZ1N0cmF0ZWd5QnVp
bHRpbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJh
dGVneUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
OTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ291bnRRdWV1aW5nU3RyYXRlZ3lC
dWlsdGlucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJh
dGVneUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5
MDhCMEY5MUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMu
Y3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9SZWFkYWJsZVN0cmVhbUJ1aWx0aW5z
LmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJOTkwOEIwRjkxQkNB
RDA3RDAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHA7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1dyaXRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5OTA4QjBGQTFCQ0FEMDdEMDBFRDBG
NjUgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXJCdWlsdGlucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXJCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTk5MDhCMEZCMUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmg7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJC
dWlsdGlucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5OTA4QjBG
RDFCQ0FEMDdEMDBFRDBGNTUgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3Bw
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5j
cHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0xMjMwNCw3ICsxMjMw
Myw2IEBACiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0
aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlYWRhYmxlU3RyZWFtQnVp
bHRpbnMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUmVhZGFibGVTdHJlYW1CdWls
dGlucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5QjAzRDgwNjFC
QjMxMTBEMDBCNzY0RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0
aW5zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlYWRhYmxlU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOUIw
M0Q4MDYxQkIzMTEwRDAwQjc2NERBIC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRE9NQmluZGluZ0ludGVybmFsc0J1
aWx0aW5zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NQmluZGluZ0ludGVy
bmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTlC
MDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0
RTkgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmg7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMu
aDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOUIwM0Q4MDYxQkIzMTEw
RDAwQjc2NEVBIC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5z
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1RyYW5zZm9ybVN0cmVhbUludGVybmFs
c0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTlCMDk4
QkQ1MUYzRDYwMzMwMDJERDU2MiAvKiBEYXRhVHJhbnNmZXJJdGVtLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFUcmFuc2Zlckl0ZW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTk2NDksOCArMTk2NDcsOSBAQAogCQkJCTQxRkNBNUZBMjRF
QUFGMTYwMDVFMUJBNiAvKiBUcmFuc2Zvcm1TdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgKi8s
CiAJCQkJNDFGQ0E1RkIyNEVBQUYxNjAwNUUxQkE2IC8qIFRyYW5zZm9ybVN0cmVhbURlZmF1bHRD
b250cm9sbGVyLmpzICovLAogCQkJCTQxRkNBNUZDMjRFQUI3ODAwMDVFMUJBNiAvKiBUcmFuc2Zv
cm1TdHJlYW1JbnRlcm5hbHMuanMgKi8sCisJCQkJNDFFNkQ3MjIyNkVBQTA0NjAwQjc2NUQ2IC8q
IFdyaXRhYmxlU3RyZWFtLmNwcCAqLywKKwkJCQk0MUU2RDcyMTI2RUFBMDQ1MDBCNzY1RDYgLyog
V3JpdGFibGVTdHJlYW0uaCAqLywKIAkJCQk0MUEwMjNFRDFBMzlEQjc5MDBGNzIyREYgLyogV3Jp
dGFibGVTdHJlYW0uaWRsICovLAotCQkJCTk5MDhCMEVGMUJDQUNGOTEwMEVEMEY3NSAvKiBXcml0
YWJsZVN0cmVhbS5qcyAqLywKIAkJCQk0MTc2NjczNDI0REMwOEVCMDA4QkZFMjggLyogV3JpdGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgKi8sCiAJCQkJNDE3NjY3MzMyNERDMDhFQjAw
OEJGRTI4IC8qIFdyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgKi8sCiAJCQkJNDE3
NjY3MzAyNERDMDhFQTAwOEJGRTI4IC8qIFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwg
Ki8sCkBAIC0yMTc1Niw4ICsyMTc1NSw2IEBACiAJCQkJQzIxQkY3NDIyMUNEOTYzQjAwMjI3OTc5
IC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5LmggKi8sCiAJCQkJMUM1MEM0OTUyMkM4NEYyNDAwQTZF
NEJFIC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwICovLAogCQkJCTUxNzQ4
RkEyMUNDNkVFRUIwMDcyOEQ4NCAvKiBXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwg
Ki8sCi0JCQkJOTkwOEIwRjkxQkNBRDA3RDAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRp
bnMuY3BwICovLAotCQkJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVh
bUJ1aWx0aW5zLmggKi8sCiAJCQkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjc1IC8qIFdyaXRhYmxl
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovLAogCQkJCTlCMDNEODA2MUJCMzExMEQwMEI3
NjRFOSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8sCiAJCQkJNjU2NTgx
RUEwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuY3BwICovLApAQCAtMjcxMzUsNiArMjcx
MzIsOCBAQAogCQkJCTE0MzJFODQ2MEM1MTQ5MzgwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuaCAq
LywKIAkJCQlDNTg1QTY2MDExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5j
cHAgKi8sCiAJCQkJQzU4NUE2NjExMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRp
ZXMuaCAqLywKKwkJCQk0MTQxOEEwMzI1NjQzRTEyMDAzNjM0MTcgLyogSW50ZXJuYWxXcml0YWJs
ZVN0cmVhbS5jcHAgKi8sCisJCQkJNDE0MThBMDQyNTY0M0UxMzAwMzYzNDE3IC8qIEludGVybmFs
V3JpdGFibGVTdHJlYW0uaCAqLywKIAkJCQk5QkQ0RTkxNDFDNDYyODcyMDA1MDY1QkMgLyogSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCAqLywKIAkJCQk5QkQ0RTkxNTFDNDYyODcyMDA1MDY1
QkMgLyogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmggKi8sCiAJCQkJN0M1N0JGRTYxRURFMkY1
QjAwNTM0QTQ4IC8qIEpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmggKi8sCkBAIC0yNzIyOSw4ICsy
NzIyOCw2IEBACiAJCQkJRTM0MzJERTMyNUQzNzdFMzAwNThFNjEyIC8qIFdvcmtlck1vZHVsZVNj
cmlwdExvYWRlci5jcHAgKi8sCiAJCQkJRTM0MzJERTAyNUQzNzdFMjAwNThFNjEyIC8qIFdvcmtl
ck1vZHVsZVNjcmlwdExvYWRlci5oICovLAogCQkJCUUzNDdFNUY4MjVENEYwMDAwMEYxN0E1QyAv
KiBXb3JrZXJTY3JpcHRGZXRjaGVyLmggKi8sCi0JCQkJNDE0MThBMDMyNTY0M0UxMjAwMzYzNDE3
IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCAqLywKLQkJCQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcg
LyogV3JpdGFibGVTdHJlYW0uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0ganM7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMzU2MTYsNyArMzU2MTMsNyBAQAogCQkJCTgzNEE2QTNBMjUy
Njg0NEEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODMzQkQ4MTcyNTI0RDRGMjAwNkU3MkIzIC8qIFdvcmtsZXRQZW5kaW5nVGFza3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMzA5RTI0MDk5RTY0OTIwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1
bW15U3BhbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNkU2RkU5MUJCRDEyRTUwMDBB
NjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUU2
RDcyMzI2RUFBMDQ2MDBCNzY1RDYgLyogV3JpdGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFGM0IyNDEyQzFBMzk4MDAwMTRCRjEgLyog
V3JpdGluZ0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0NzZBQTgxNURDNEJCMTAw
MzA1REIyIC8qIFdyaXRpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTM2ODY3LDYgKzM2ODY0
LDcgQEAKIAkJCQlFMUVFOEI5MTI0MTMxOTUwMDBFNzk0RDYgLyogV2ViWFJWaWV3cG9ydC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFMUVFOEI4MzI0MTMxOTFGMDBFNzk0RDYgLyogV2ViWFJXZWJH
TExheWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1QzcwMERBNjNBNiAv
KiBXS1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCisJCQkJNDFFNkQ3MjQyNkVBQTA0NjAwQjc2
NUQ2IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDN0NDMEEy
Q0YwNzQwMEQ1NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzND
ODBDMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MTVBMzZEOTExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ludGVybmFsV3JpdGFibGVT
dHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSW50ZXJuYWxXcml0YWJsZVN0
cmVhbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBhYTZhZjhkZDEzNmQ1ZDhjYjdkYjdhZjgwYjRiZTdlMzcx
NDlmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ludGVy
bmFsV3JpdGFibGVTdHJlYW0uY3BwCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9u
LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0YXRpYyBFeGNlcHRpb25PcjxKU0M6OkpTVmFsdWU+IGludm9rZVdyaXRhYmxlU3Ry
ZWFtRnVuY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6
OklkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIm
IGFyZ3VtZW50cykKK3sKKyAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOworICAg
IEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAgYXV0byBmdW5jdGlvbiA9IGdsb2Jh
bE9iamVjdC5nZXQoJmdsb2JhbE9iamVjdCwgaWRlbnRpZmllcik7CisgICAgQVNTRVJUKGZ1bmN0
aW9uLmlzQ2FsbGFibGUodm0pKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rp
b24pOworCisgICAgYXV0byByZXN1bHQgPSBjYWxsKCZnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBj
YWxsRGF0YSwgSlNDOjpqc1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOworICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlzdGlu
Z0V4Y2VwdGlvbkVycm9yIH07CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitFeGNlcHRpb25P
cjxSZWY8SW50ZXJuYWxXcml0YWJsZVN0cmVhbT4+IEludGVybmFsV3JpdGFibGVTdHJlYW06OmNy
ZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdW5kZXJs
eWluZ1NpbmssIEpTQzo6SlNWYWx1ZSBzdHJhdGVneSkKK3sKKyAgICBhdXRvKiBjbGllbnREYXRh
ID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihnbG9iYWxPYmplY3Qudm0oKS5jbGllbnRE
YXRhKTsKKyAgICBhdXRvJiBwcml2YXRlTmFtZSA9IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlv
bnMoKS53cml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zKCkuY3JlYXRlSW50ZXJuYWxXcml0
YWJsZVN0cmVhbVByaXZhdGVOYW1lKCk7CisKKyAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHVuZGVybHlpbmdTaW5rKTsKKyAgICBh
cmd1bWVudHMuYXBwZW5kKHN0cmF0ZWd5KTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVy
Zmxvd2VkKCkpOworCisgICAgYXV0byByZXN1bHQgPSBpbnZva2VXcml0YWJsZVN0cmVhbUZ1bmN0
aW9uKGdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CisgICAgaWYgKFVOTElL
RUxZKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpOworCisgICAgQVNTRVJUKHJlc3VsdC5yZXR1cm5WYWx1ZSgpLmlzT2JqZWN0
KCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEludGVybmFsV3JpdGFibGVTdHJlYW0oZ2xv
YmFsT2JqZWN0LCAqcmVzdWx0LnJldHVyblZhbHVlKCkudG9PYmplY3QoJmdsb2JhbE9iamVjdCkp
KTsKK30KKworYm9vbCBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtOjpsb2NrZWQoKSBjb25zdAorewor
ICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOworICAgIGlmICgh
Z2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworCisgICAgYXV0byogY2xp
ZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4oZ2xvYmFsT2JqZWN0LT52bSgp
LmNsaWVudERhdGEpOworICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRp
bkZ1bmN0aW9ucygpLndyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5pc1dyaXRhYmxl
U3RyZWFtTG9ja2VkUHJpdmF0ZU5hbWUoKTsKKworICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoZ3VhcmRlZE9iamVjdCgpKTsKKyAg
ICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgYXV0byByZXN1bHQg
PSBpbnZva2VXcml0YWJsZVN0cmVhbUZ1bmN0aW9uKCpnbG9iYWxPYmplY3QsIHByaXZhdGVOYW1l
LCBhcmd1bWVudHMpOworICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAgICAgICAgc2NvcGUu
Y2xlYXJFeGNlcHRpb24oKTsKKworICAgIHJldHVybiByZXN1bHQuaGFzRXhjZXB0aW9uKCkgPyBm
YWxzZSA6IHJlc3VsdC5yZXR1cm5WYWx1ZSgpLmlzVHJ1ZSgpOworfQorCit2b2lkIEludGVybmFs
V3JpdGFibGVTdHJlYW06OmxvY2soKQoreworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRoaXMt
Pmdsb2JhbE9iamVjdCgpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShnbG9iYWxPYmplY3QtPnZt
KCkpOworCisgICAgYXV0byogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4oZ2xvYmFsT2JqZWN0LT52bSgpLmNsaWVudERhdGEpOworICAgIGF1dG8mIHByaXZhdGVOYW1l
ID0gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLndyaXRhYmxlU3RyZWFtSW50ZXJuYWxz
QnVpbHRpbnMoKS5hY3F1aXJlV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyUHJpdmF0ZU5hbWUo
KTsKKworICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3Vt
ZW50cy5hcHBlbmQoZ3VhcmRlZE9iamVjdCgpKTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNP
dmVyZmxvd2VkKCkpOworCisgICAgaW52b2tlV3JpdGFibGVTdHJlYW1GdW5jdGlvbigqZ2xvYmFs
T2JqZWN0LCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUu
ZXhjZXB0aW9uKCkpKQorICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworfQorCitKU0M6
OkpTVmFsdWUgSW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6YWJvcnQoSlNDOjpKU0dsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcmVhc29uKQoreworICAgIGF1dG8qIGNsaWVu
dERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KGdsb2JhbE9iamVjdC52bSgpLmNs
aWVudERhdGEpOworICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLndyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS53cml0YWJsZVN0cmVh
bUFib3J0Rm9yQmluZGluZ3NQcml2YXRlTmFtZSgpOworCisgICAgSlNDOjpNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChndWFyZGVkT2JqZWN0KCkp
OworICAgIGFyZ3VtZW50cy5hcHBlbmQocmVhc29uKTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5o
YXNPdmVyZmxvd2VkKCkpOworCisgICAgYXV0byByZXN1bHQgPSBpbnZva2VXcml0YWJsZVN0cmVh
bUZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CisgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVy
biByZXN1bHQucmV0dXJuVmFsdWUoKTsKK30KKworSlNDOjpKU1ZhbHVlIEludGVybmFsV3JpdGFi
bGVTdHJlYW06OmNsb3NlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICBhdXRvKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihnbG9iYWxP
YmplY3Qudm0oKS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBwcml2YXRlTmFtZSA9IGNsaWVudERh
dGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS53cml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zKCku
d3JpdGFibGVTdHJlYW1DbG9zZUZvckJpbmRpbmdzUHJpdmF0ZU5hbWUoKTsKKworICAgIEpTQzo6
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoZ3Vh
cmRlZE9iamVjdCgpKTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwor
CisgICAgYXV0byByZXN1bHQgPSBpbnZva2VXcml0YWJsZVN0cmVhbUZ1bmN0aW9uKGdsb2JhbE9i
amVjdCwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiByZXN1bHQucmV0dXJuVmFs
dWUoKTsKK30KKworSlNDOjpKU1ZhbHVlIEludGVybmFsV3JpdGFibGVTdHJlYW06OmdldFdyaXRl
cihKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgYXV0byogY2xpZW50
RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4oZ2xvYmFsT2JqZWN0LnZtKCkuY2xp
ZW50RGF0YSk7CisgICAgYXV0byYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkud3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLmFjcXVpcmVXcml0YWJs
ZVN0cmVhbURlZmF1bHRXcml0ZXJQcml2YXRlTmFtZSgpOworCisgICAgSlNDOjpNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChndWFyZGVkT2JqZWN0
KCkpOworICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICBhdXRv
IHJlc3VsdCA9IGludm9rZVdyaXRhYmxlU3RyZWFtRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBwcml2
YXRlTmFtZSwgYXJndW1lbnRzKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIHJlc3VsdC5yZXR1cm5WYWx1ZSgpOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JbnRlcm5hbFdyaXRh
YmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JbnRlcm5hbFdyaXRhYmxl
U3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBhYWEyNzNlNjZjYmUxNjdhMzkzYjcxZDIwYjY4MjFhYmY1
NmVlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ludGVy
bmFsV3JpdGFibGVTdHJlYW0uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0LmgiCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgSW50ZXJuYWxXcml0YWJsZVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBET01HdWFyZGVkPEpTQzo6
SlNPYmplY3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEludGVybmFs
V3JpdGFibGVTdHJlYW0+PiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUg
dW5kZXJseWluZ1NpbmssIEpTQzo6SlNWYWx1ZSBzdHJhdGVneSk7CisKKyAgICBvcGVyYXRvciBK
U0M6OkpTVmFsdWUoKSBjb25zdCB7IHJldHVybiBndWFyZGVkKCk7IH0KKworICAgIGJvb2wgbG9j
a2VkKCkgY29uc3Q7CisgICAgdm9pZCBsb2NrKCk7CisgICAgSlNDOjpKU1ZhbHVlIGFib3J0KEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOworICAgIEpTQzo6SlNWYWx1ZSBjbG9z
ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgSlNDOjpKU1ZhbHVlIGdldFdyaXRlcihKU0M6
OkpTR2xvYmFsT2JqZWN0Jik7CisKK3ByaXZhdGU6CisgICAgSW50ZXJuYWxXcml0YWJsZVN0cmVh
bShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0JiBqc09iamVj
dCkKKyAgICAgICAgOiBET01HdWFyZGVkPEpTQzo6SlNPYmplY3Q+KGdsb2JhbE9iamVjdCwganNP
YmplY3QpCisgICAgeworICAgIH0KK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5MTZkMzNkOWRlNzRmMjIxM2RiZTMz
NDNlZmYzZDAyYTNhYzM1M2NkLi5hMDA3NDMxNDJkOGMwMDA0ODY0OTRkZjQ4NTAwMGNiMDM4Y2Rm
YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNSZW1vdGVET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1dyaXRhYmxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiUmVq
ZWN0ZWRQcm9taXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCIKICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIKQEAgLTcxLDYgKzcyLDcgQEAgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihtYWtlVGhpc1R5cGVFcnJvckZvckJ1aWx0aW5zKTsKIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZUdldHRlclR5cGVFcnJvckZvckJ1aWx0aW5zKTsK
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04obWFrZURPTUV4Y2VwdGlvbkZvckJ1aWx0aW5zKTsK
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oaXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVk
KTsKK0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZ2V0SW50ZXJuYWxXcml0YWJsZVN0cmVhbSk7
CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGlzV3JpdGFibGVTdHJlYW1BUElFbmFibGVkKTsK
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04od2hlblNpZ25hbEFib3J0ZWQpOwogSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihpc0Fib3J0U2lnbmFsKTsKQEAgLTE2Myw2ICsxNjUsMTggQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGlzV3JpdGFibGVTdHJlYW1BUElFbmFibGVkLCAoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndyaXRhYmxlU3RyZWFt
QVBJRW5hYmxlZCgpKSk7CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnZXRJbnRlcm5h
bFdyaXRhYmxlU3RyZWFtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAgIEFTU0VSVChjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAxKTsKKworICAgIGF1dG8mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8qIHdyaXRhYmxlU3RyZWFtID0ganNEeW5hbWljQ2FzdDxKU1dy
aXRhYmxlU3RyZWFtKj4odm0sIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAg
IGlmIChVTkxJS0VMWSghd3JpdGFibGVTdHJlYW0pKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUod3JpdGFi
bGVTdHJlYW0tPndyYXBwZWQoKS5pbnRlcm5hbFdyaXRhYmxlU3RyZWFtKCkpOworfQorCiBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04od2hlblNpZ25hbEFib3J0ZWQsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgQVNTRVJUKGNhbGxG
cmFtZSk7CkBAIC0yMTQsNiArMjI4LDcgQEAgU1VQUFJFU1NfQVNBTiB2b2lkIEpTRE9NR2xvYmFs
T2JqZWN0OjphZGRCdWlsdGluR2xvYmFscyhWTSYgdm0pCiAgICAgICAgIEpTRE9NR2xvYmFsT2Jq
ZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5yZWFkYWJs
ZUJ5dGVTdHJlYW1BUElFbmFibGVkUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAwLCBTdHJpbmcoKSwgaXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
LAogICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERh
dGEuYnVpbHRpbk5hbWVzKCkud3JpdGFibGVTdHJlYW1BUElFbmFibGVkUHJpdmF0ZU5hbWUoKSwg
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgaXNXcml0YWJsZVN0cmVh
bUFQSUVuYWJsZWQpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCiAgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9w
ZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5pc0Fib3J0U2lnbmFsUHJpdmF0ZU5h
bWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgaXNBYm9ydFNp
Z25hbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5m
byhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLmdldEludGVybmFsV3JpdGFibGVTdHJlYW1Qcml2
YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBnZXRJ
bnRlcm5hbFdyaXRhYmxlU3RyZWFtKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFs
cyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRl
eCBkNGQxMzI0MjkyOTdjOGEyMjc5OGI5ZmQ5ZDU3ZDRhN2U0MWRlMWZhLi41Yjk0MzFlYzdlNDNi
ZTVmMDI2ZjZlOGJhMzhhMmFhMTM3NjYwZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0zNDgsNiArMzQ4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGZsdXNoQWxnb3JpdGhtKSBcCiAgICAgbWFjcm8oZm9j
dXMpIFwKICAgICBtYWNybyhmcmFtZXMpIFwKKyAgICBtYWNybyhnZXRJbnRlcm5hbFdyaXRhYmxl
U3RyZWFtKSBcCiAgICAgbWFjcm8oZ2V0VHJhY2tzKSBcCiAgICAgbWFjcm8oZ2V0VXNlck1lZGlh
KSBcCiAgICAgbWFjcm8oZ3B1KSBcCkBAIC0zNTksNiArMzYwLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIG1hY3JvKGluRmxpZ2h0V3JpdGVSZXF1ZXN0KSBcCiAgICAgbWFjcm8oaW5kZXhl
ZERCKSBcCiAgICAgbWFjcm8oaW5pdGlhbGl6ZVdpdGgpIFwKKyAgICBtYWNybyhpbnRlcm5hbFN0
cmVhbSkgXAorICAgIG1hY3JvKGludGVybmFsV3JpdGFibGUpIFwKICAgICBtYWNybyhpc0Fib3J0
U2lnbmFsKSBcCiAgICAgbWFjcm8oaXNEaXN0dXJiZWQpIFwKICAgICBtYWNybyhpc0xvYWRpbmcp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhOWMzNzIxZDNmYzRiMTk1NTU0MWViMTRlZDcx
OWQ3MjczM2ZkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBDQU5PTiBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldyaXRhYmxl
U3RyZWFtLmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCi0jaW5jbHVkZSAiSlNX
cml0YWJsZVN0cmVhbVNpbmsuaCIKLSNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNl
IFdyaXRhYmxlU3RyZWFtSW50ZXJuYWwgewotc3RhdGljIGlubGluZSBKU0M6OkpTVmFsdWUgY2Fs
bEZ1bmN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBqc0Z1bmN0aW9uLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFy
Z0xpc3QmIGFyZ3VtZW50cykKLXsKLSAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZt
KCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIGF1dG8g
Y2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBqc0Z1bmN0aW9uKTsKLSAgICBBU1NFUlQo
Y2FsbERhdGEudHlwZSAhPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsKLSAgICBhdXRvIHJl
c3VsdCA9IGNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGpzRnVuY3Rpb24sIGNhbGxEYXRhLCB0
aGlzVmFsdWUsIGFyZ3VtZW50cyk7Ci0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRU
ZXJtaW5hdGlvbigpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci19Ci0KLXN0YXRpYyBpbmxpbmUg
Ym9vbCBjaGVja1dyaXRhYmxlU3RyZWFtKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTV3JpdGFibGVTdHJlYW0qIHdyaXRhYmxlU3RyZWFtLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24p
Ci17Ci0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKLQotICAg
IEFTU0VSVChmdW5jdGlvbik7Ci0gICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVu
dHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZCh3cml0YWJsZVN0cmVhbSk7Ci0gICAgQVNTRVJUKCFh
cmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gV3JpdGFibGVTdHJlYW1JbnRl
cm5hbDo6Y2FsbEZ1bmN0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBKU0M6Ompz
VW5kZWZpbmVkKCksIGFyZ3VtZW50cykuaXNUcnVlKCk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxX
cml0YWJsZVN0cmVhbT4+IFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmUHRyPFdyaXRhYmxlU3RyZWFtU2luaz4mJiBzaW5r
KQotewotICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKLSAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBhdXRvJiBjbGllbnREYXRhID0g
KnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Ci0gICAgYXV0byYg
Z2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxH
bG9iYWxPYmplY3QpOwotCi0gICAgYXV0byogY29uc3RydWN0b3IgPSBKU0M6OmFzT2JqZWN0KGds
b2JhbE9iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGNsaWVudERhdGEuYnVpbHRpbk5h
bWVzKCkuV3JpdGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpKSk7Ci0KLSAgICBhdXRvIGNvbnN0cnVj
dERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBjb25zdHJ1Y3Rvcik7Ci0gICAgQVNTRVJUKGNv
bnN0cnVjdERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7Ci0KLSAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHNpbmsgPyB0b0pTTmV3bHlDcmVh
dGVkKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBzaW5rLnJlbGVhc2VOb25O
dWxsKCkpIDogSlNDOjpqc1VuZGVmaW5lZCgpKTsKLSAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZs
b3dlZCgpKTsKLQotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOwotICAgIEFT
U0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFvYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0KLSAg
ICByZXR1cm4gY3JlYXRlKGdsb2JhbE9iamVjdCwgKmpzQ2FzdDxKU1dyaXRhYmxlU3RyZWFtKj4o
b2JqZWN0KSk7Ci19Ci0KLXZvaWQgV3JpdGFibGVTdHJlYW06OmxvY2soKQotewotICAgIGF1dG8m
IGxleGljYWxHbG9iYWxPYmplY3QgPSAqbV9nbG9iYWxPYmplY3Q7Ci0gICAgVk0mIHZtID0gbGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKLQotICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKTsKLQotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gSlNDOjph
c09iamVjdChtX2dsb2JhbE9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjbGllbnRE
YXRhLmJ1aWx0aW5OYW1lcygpLldyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlclByaXZhdGVOYW1l
KCkpKTsKLQotICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEodm0sIGNv
bnN0cnVjdG9yKTsKLSAgICBBU1NFUlQoY29uc3RydWN0RGF0YS50eXBlICE9IENhbGxEYXRhOjpU
eXBlOjpOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5h
cHBlbmQod3JpdGFibGVTdHJlYW0oKSk7Ci0gICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQo
KSk7Ci0KLSAgICBKU0M6OmNvbnN0cnVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3RydWN0
b3IsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOwotICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uRXhj
ZXB0VGVybWluYXRpb24oKTsKLX0KLQotYm9vbCBXcml0YWJsZVN0cmVhbTo6aXNMb2NrZWQoKSBj
b25zdAotewotICAgIHJldHVybiBjaGVja1dyaXRhYmxlU3RyZWFtKCpnbG9iYWxPYmplY3QoKSwg
d3JpdGFibGVTdHJlYW0oKSwgZ2xvYmFsT2JqZWN0KCktPmJ1aWx0aW5JbnRlcm5hbEZ1bmN0aW9u
cygpLndyaXRhYmxlU3RyZWFtSW50ZXJuYWxzKCkubV9pc1dyaXRhYmxlU3RyZWFtTG9ja2VkRnVu
Y3Rpb24uZ2V0KCkpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xcml0YWJsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV3JpdGFi
bGVTdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUxOGE5NDU5NzcyNGUx
ZDcwMTAxYTY3YmNkYjhlZjM5OTYxZmFkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVh
bS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRXhjZXB0
aW9uT3IuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZl
cnQuaCIKLSNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKLSNpbmNsdWRlICJKU1dyaXRh
YmxlU3RyZWFtLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV3JpdGFibGVTdHJl
YW1TaW5rOwotCi1jbGFzcyBXcml0YWJsZVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBET01HdWFyZGVk
PEpTV3JpdGFibGVTdHJlYW0+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdyaXRhYmxlU3Ry
ZWFtPiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNXcml0YWJsZVN0
cmVhbSYganNTdHJlYW0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV3JpdGFibGVTdHJlYW0oZ2xv
YmFsT2JqZWN0LCBqc1N0cmVhbSkpOyB9Ci0KLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdy
aXRhYmxlU3RyZWFtPj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8V3JpdGFi
bGVTdHJlYW1TaW5rPiYmKTsKLSAgICBKU1dyaXRhYmxlU3RyZWFtKiB3cml0YWJsZVN0cmVhbSgp
IGNvbnN0IHsgcmV0dXJuIGd1YXJkZWQoKTsgfQotCi0gICAgdm9pZCBsb2NrKCk7Ci0gICAgYm9v
bCBpc0xvY2tlZCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFdyaXRhYmxlU3RyZWFtKEpTRE9N
R2xvYmFsT2JqZWN0JiwgSlNXcml0YWJsZVN0cmVhbSYpOwotfTsKLQotc3RydWN0IEpTV3JpdGFi
bGVTdHJlYW1XcmFwcGVyQ29udmVydGVyIHsKLSAgICBzdGF0aWMgUmVmUHRyPFdyaXRhYmxlU3Ry
ZWFtPiB0b1dyYXBwZWQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgSlNDOjpWTSYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0g
SlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odm0sICZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgICAgICBhdXRvKiBXcml0YWJsZVN0cmVhbSA9IEpTQzo6anNEeW5hbWlj
Q2FzdDxKU1dyaXRhYmxlU3RyZWFtKj4odm0sIHZhbHVlKTsKLSAgICAgICAgaWYgKCFXcml0YWJs
ZVN0cmVhbSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHJldHVybiBX
cml0YWJsZVN0cmVhbTo6Y3JlYXRlKCpnbG9iYWxPYmplY3QsICpXcml0YWJsZVN0cmVhbSk7Ci0g
ICAgfQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRz
PFdyaXRhYmxlU3RyZWFtPiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNXcml0YWJsZVN0
cmVhbVdyYXBwZXJDb252ZXJ0ZXI7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFJl
ZlB0cjxXcml0YWJsZVN0cmVhbT47Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3Rh
dGUgPSB0cnVlOwotfTsKLQotaW5saW5lIFdyaXRhYmxlU3RyZWFtOjpXcml0YWJsZVN0cmVhbShK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1dyaXRhYmxlU3RyZWFtJiBXcml0YWJs
ZVN0cmVhbSkKLSAgICA6IERPTUd1YXJkZWQ8SlNXcml0YWJsZVN0cmVhbT4oZ2xvYmFsT2JqZWN0
LCBXcml0YWJsZVN0cmVhbSkKLXsKLX0KLQotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgV3JpdGFibGVTdHJlYW0qIHN0
cmVhbSkKLXsKLSAgICByZXR1cm4gc3RyZWFtID8gc3RyZWFtLT53cml0YWJsZVN0cmVhbSgpIDog
SlNDOjpqc1VuZGVmaW5lZCgpOwotfQotCi1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBXcml0YWJsZVN0cmVhbSYgc3Ry
ZWFtKQotewotICAgIHJldHVybiBzdHJlYW0ud3JpdGFibGVTdHJlYW0oKTsKLX0KLQotaW5saW5l
IEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RP
TUdsb2JhbE9iamVjdCosIFJlZjxXcml0YWJsZVN0cmVhbT4mJiBzdHJlYW0pCi17Ci0gICAgcmV0
dXJuIHN0cmVhbS0+d3JpdGFibGVTdHJlYW0oKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAxZjI0ZjFlYjAx
MGIzYzU0YjczNDU0YTU2ZjIwOTNiM2U1NzA3YzUzLi5jMzFhOTYxZGQ1YWMyY2IzNzQ3ZWNjZDg0
Y2U3YWY3MzUxNjlhOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNjI3LDExICs2MjcsNiBAQCBzdWIgQWRkVG9JbmNs
dWRlc0ZvcklETFR5cGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICgkdHlwZS0+
bmFtZSBlcSAiV3JpdGFibGVTdHJlYW0iKSB7Ci0gICAgICAgIEFkZFRvSW5jbHVkZXMoIldyaXRh
YmxlU3RyZWFtLmgiLCAkaW5jbHVkZXNSZWYsICRjb25kaXRpb25hbCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KICAgICBpZiAoJHR5cGUtPm5hbWUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsK
ICAgICAgICAgQWRkVG9JbmNsdWRlcygiSlNYUGF0aE5TUmVzb2x2ZXIuaCIsICRpbmNsdWRlc1Jl
ZiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgQWRkVG9JbmNsdWRlcygiSlNET01Db252ZXJ0WFBh
dGhOU1Jlc29sdmVyLmgiLCAkaW5jbHVkZXNSZWYsICRjb25kaXRpb25hbCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA4Y2QzNzEzNzMxMTVkNDExY2Y1ZDdlNDdkYTRhMTNmMzdh
NWUwYWM1Li44NWVkOWI1NDUxNzU1NjU5ZDc5YzNiYWI1YzgxZTBjMzFlODMyNTVkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wOS0xMCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdG8gc3ViY2xh
c3MgV3JpdGFibGVTdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMDE0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnktZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5l
c3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFs
LmFueS53b3JrZXItZXhwZWN0ZWQudHh0OgorCiAyMDIxLTA5LTA5ICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgRm9udEZhY2VTZXQubG9hZCgpIG5l
ZWRzIHRvIHJlYWN0IHRvIHN0eWxlIGNoYW5nZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFueS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvaWRsaGFybmVzcy5hbnktZXhwZWN0ZWQudHh0CmluZGV4IDkzZmFkMTNlYjYzYWI4NzNl
ZGQzZmQ2NmRmZTNhYTA1ZWI2NDIwMzEuLjk5MmI5ZTBlZDg0MjdjZjE0ZjQ5ODNjMjRhYTc0MWMz
YzQxZDA2YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFueS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3Mu
YW55LWV4cGVjdGVkLnR4dApAQCAtMTI4LDcgKzEyOCw3IEBAIFBBU1MgV3JpdGFibGVTdHJlYW0g
aW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlw
ZSBvCiBQQVNTIFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0
aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0
eQogUEFTUyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGll
cyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkK
IFBBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbG9ja2VkCi1GQUlMIFdy
aXRhYmxlU3RyZWFtIGludGVyZmFjZTogb3BlcmF0aW9uIGFib3J0KG9wdGlvbmFsIGFueSkgYXNz
ZXJ0X2VxdWFsczogcHJvcGVydHkgaGFzIHdyb25nIC5sZW5ndGggZXhwZWN0ZWQgMCBidXQgZ290
IDEKK1BBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBvcGVyYXRpb24gYWJvcnQob3B0aW9u
YWwgYW55KQogUEFTUyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjbG9zZSgp
CiBQQVNTIFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogb3BlcmF0aW9uIGdldFdyaXRlcigpCiBQ
QVNTIFdyaXRhYmxlU3RyZWFtIG11c3QgYmUgcHJpbWFyeSBpbnRlcmZhY2Ugb2YgbmV3IFdyaXRh
YmxlU3RyZWFtKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhh
cm5lc3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKaW5kZXggOTNmYWQxM2ViNjNhYjg3M2VkZDNm
ZDY2ZGZlM2FhMDVlYjY0MjAzMS4uOTkyYjllMGVkODQyN2NmMTRmNDk4M2MyNGFhNzQxYzNjNDFk
MDZiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5l
c3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEyOCw3ICsxMjgsNyBAQCBQQVNTIFdyaXRh
YmxlU3RyZWFtIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFj
ZSBwcm90b3R5cGUgbwogUEFTUyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBh
bmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3Rv
ciIgcHJvcGVydHkKIFBBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5k
IHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFibGVz
IHByb3BlcnR5CiBQQVNTIFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogYXR0cmlidXRlIGxvY2tl
ZAotRkFJTCBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhYm9ydChvcHRpb25h
bCBhbnkpIGFzc2VydF9lcXVhbHM6IHByb3BlcnR5IGhhcyB3cm9uZyAubGVuZ3RoIGV4cGVjdGVk
IDAgYnV0IGdvdCAxCitQQVNTIFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogb3BlcmF0aW9uIGFi
b3J0KG9wdGlvbmFsIGFueSkKIFBBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBvcGVyYXRp
b24gY2xvc2UoKQogUEFTUyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IG9wZXJhdGlvbiBnZXRX
cml0ZXIoKQogUEFTUyBXcml0YWJsZVN0cmVhbSBtdXN0IGJlIHByaW1hcnkgaW50ZXJmYWNlIG9m
IG5ldyBXcml0YWJsZVN0cmVhbSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFu
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQKaW5k
ZXggMjlmN2IyMWI3YTk1NGZmNTYyMjIxNTA0YzA4YWFjNDg2MmVjZmUwZi4uNTMxMzVkMmYyYjE0
ZmM1ZmI3ZDRhMDE0Yjg5ZDJjZGIyMTQwMDM3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZ2Vu
ZXJhbC5hbnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVj
dGVkLnR4dApAQCAtMTMsNiArMTMsNiBAQCBQQVNTIG1ldGhvZHMgc2hvdWxkIG5vdCBub3QgaGF2
ZSAuYXBwbHkoKSBvciAuY2FsbCgpIGNhbGxlZAogUEFTUyBXcml0YWJsZVN0cmVhbSdzIHN0cmF0
ZWd5LnNpemUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgYXMgYSBtZXRob2QKIFBBU1MgcmVkdW5kYW50
IHJlbGVhc2VMb2NrKCkgaXMgbm8tb3AKIFBBU1MgcmVhZHkgcHJvbWlzZSBzaG91bGQgZmlyZSBi
ZWZvcmUgY2xvc2VkIG9uIHJlbGVhc2VMb2NrCi1GQUlMIFN1YmNsYXNzaW5nIFdyaXRhYmxlU3Ry
ZWFtIHNob3VsZCB3b3JrIGFzc2VydF90cnVlOiBTdWJjbGFzcyBvYmplY3Qgc2hvdWxkIGJlIGFu
IGluc3RhbmNlIG9mIFN1YmNsYXNzIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTIFN1YmNs
YXNzaW5nIFdyaXRhYmxlU3RyZWFtIHNob3VsZCB3b3JrCiBQQVNTIHRoZSBsb2NrZWQgZ2V0dGVy
IHNob3VsZCByZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyZWFtIGhhcyBhIHdyaXRlcgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
d3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0
cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCAyOWY3YjIxYjdhOTU0
ZmY1NjIyMjE1MDRjMDhhYWM0ODYyZWNmZTBmLi41MzEzNWQyZjJiMTRmYzVmYjdkNGEwMTRiODlk
MmNkYjIxNDAwMzdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3Rl
ZC50eHQKQEAgLTEzLDYgKzEzLDYgQEAgUEFTUyBtZXRob2RzIHNob3VsZCBub3Qgbm90IGhhdmUg
LmFwcGx5KCkgb3IgLmNhbGwoKSBjYWxsZWQKIFBBU1MgV3JpdGFibGVTdHJlYW0ncyBzdHJhdGVn
eS5zaXplIHNob3VsZCBub3QgYmUgY2FsbGVkIGFzIGEgbWV0aG9kCiBQQVNTIHJlZHVuZGFudCBy
ZWxlYXNlTG9jaygpIGlzIG5vLW9wCiBQQVNTIHJlYWR5IHByb21pc2Ugc2hvdWxkIGZpcmUgYmVm
b3JlIGNsb3NlZCBvbiByZWxlYXNlTG9jawotRkFJTCBTdWJjbGFzc2luZyBXcml0YWJsZVN0cmVh
bSBzaG91bGQgd29yayBhc3NlcnRfdHJ1ZTogU3ViY2xhc3Mgb2JqZWN0IHNob3VsZCBiZSBhbiBp
bnN0YW5jZSBvZiBTdWJjbGFzcyBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBTdWJjbGFz
c2luZyBXcml0YWJsZVN0cmVhbSBzaG91bGQgd29yawogUEFTUyB0aGUgbG9ja2VkIGdldHRlciBz
aG91bGQgcmV0dXJuIHRydWUgaWYgdGhlIHN0cmVhbSBoYXMgYSB3cml0ZXIKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437860</attachid>
            <date>2021-09-10 06:26:43 -0700</date>
            <delta_ts>2021-09-10 07:36:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230146-20210910152640.patch</filename>
            <type>text/plain</type>
            <size>78122</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYyZjlmOTVjMjYwYTM4
YTUyNmY2MWE4NDk3ODdiZTk2OGNiOTVlNi4uNzg0NDM0NTQ4YzYxMmZmZDJjMzc0NDliYjRlZDIy
ZjM3NzdmYzBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIxLTA5LTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0byBzdWJjbGFz
cyBXcml0YWJsZVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW50cm9kdWNlIGEgV2ViSURMLWJhc2VkIFdyaXRhYmxlU3RyZWFtIEMrKyBjbGFz
cy4KKyAgICAgICAgVG8ga2VlcCB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24sIHRoZSBwcmV2
aW91cyBKUyBXcml0YWJsZVN0cmVhbSBpbXBsZW1lbnRhdGlvbiBpcyB3cmFwcGVkIGFyb3VuZCBh
biBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtIEMrKyBjbGFzcworICAgICAgICB3aGljaCBpcyBhIHdy
YXBwZXIgYXJvdW5kIEpTLWJ1aWx0aW5zIG1hbmlwdWxhdGVkIG9iamVjdHMuCisgICAgICAgIElu
dGVybmFsV3JpdGFibGVTdHJlYW0gaXMgbWFkZSBET01HdWFyZGVkIHRvIGVuYWJsZSB0byBrZWVw
IGEgcmVmIHRvIHRoZSBKUyBvYmplY3QgZnJvbSBXcml0YWJsZVN0cmVhbS4KKworICAgICAgICBV
cGRhdGUgSlMgYnVpbHQtaW4gY29kZSB0byBtYW5hZ2UgaG9wcGluZyB0byB0aGUgSW50ZXJuYWxX
cml0YWJsZVN0cmVhbSBKUyBvYmplY3QgZnJvbSB0aGUgZXhwb3NlZCBXcml0YWJsZVN0cmVhbSBK
UyBvYmplY3QuCisgICAgICAgIFdlIGludHJvZHVjZSBnZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFt
IHJvdXRpbmUgZm9yIHRoYXQgcHVycG9zZS4KKworICAgICAgICBUcmFuc2l0aW9uIGV4aXN0aW5n
IFdyaXRhYmxlU3RyZWFtIHVzZXJzIHRvIHRoZSBuZXcgQysrIGNsYXNzLgorICAgICAgICBNaW5v
ciBjb2RlIGdlbmVyYXRvciBjaGFuZ2UgdG8gbWFrZSB1c2Ugb2YgdGhlIG5vdyBhdmFpbGFibGUg
SlNXcml0YWJsZVN0cmVhbS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGFuZCByZWJh
c2VkIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aXNBdHRhY2hlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmNyZWF0ZVN0cmVhbXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpyZWFkYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OndyaXRhYmxlKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oOgorICAgICAgICAqIE1v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qczoKKyAgICAgICAgKHBpcGVUaHJvdWdoKToK
KyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzLmpzOgor
ICAgICAgICAoaW5pdGlhbGl6ZVRyYW5zZm9ybVN0cmVhbSk6CisgICAgICAgICh0cmFuc2Zvcm1T
dHJlYW1FcnJvcldyaXRhYmxlQW5kVW5ibG9ja1dyaXRlKToKKyAgICAgICAgKHRyYW5zZm9ybVN0
cmVhbURlZmF1bHRTaW5rV3JpdGVBbGdvcml0aG0pOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFt
cy9Xcml0YWJsZVN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVT
dHJlYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXcml0YWJsZVN0cmVhbTo6V3JpdGFi
bGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNXcml0YWJsZVN0cmVhbTo6YWJvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXcml0YWJsZVN0cmVhbTo6Y2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXcml0YWJsZVN0cmVhbTo6Z2V0V3JpdGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3N0
cmVhbXMvV3JpdGFibGVTdHJlYW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXcml0YWJs
ZVN0cmVhbTo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXcml0YWJsZVN0cmVhbTo6bG9ja2Vk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldyaXRhYmxlU3RyZWFtOjppbnRlcm5hbFdyaXRh
YmxlU3RyZWFtKToKKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5p
ZGw6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIu
anM6CisgICAgICAgIChpbml0aWFsaXplV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAg
ICAgIChpbml0aWFsaXplV3JpdGFibGVTdHJlYW1TbG90cyk6CisgICAgICAgICh3cml0YWJsZVN0
cmVhbUNsb3NlRm9yQmluZGluZ3MpOgorICAgICAgICAod3JpdGFibGVTdHJlYW1BYm9ydEZvckJp
bmRpbmdzKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSW50ZXJuYWxXcml0
YWJsZVN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52b2tlV3JpdGFibGVT
dHJlYW1GdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFdyaXRhYmxlU3RyZWFt
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6bG9j
a2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsV3JpdGFibGVTdHJlYW06Omxv
Y2spOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6YWJvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6Z2V0V3JpdGVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9JbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmg6IEFkZGVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9i
amVjdDo6YWRkQnVpbHRpbkdsb2JhbHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVC
dWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAg
ICAgKEFkZFRvSW5jbHVkZXNGb3JJRExUeXBlKToKKwogMjAyMS0wOS0xMCAgUm9iIEJ1aXMgIDxy
YnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBhc3BlY3QtcmF0aW8taW50cmluc2ljLXNp
emUtMDA0Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDAxYTA5YmZjOGRjNjI0NTc5N2E5
NDI3MTg5MmIzMGI1MTQxZTczNy4uN2VkNjdmYzIzOWFjYjJjZTA3ZDhhNWQzOGJiNWNkNDg2Mjlm
MGE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwNTgsNyArMjA1OCw2IEBAIHNldChXZWJD
b3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMv
VHJhbnNmb3JtU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1Ry
YW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9k
dWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbUludGVybmFscy5qcwotICAgICR7V0VCQ09SRV9E
SVJ9L01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9
L01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzCiAgICAg
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRl
ci5qcwogICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUlu
dGVybmFscy5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QKaW5kZXggNzAzMjcwNmMzZDhiYmJiNDgzMTQ5ODZmMjZiMmQwNzU2YjQwNGZkOC4uZGU3
OGZhNTUwMGNmZWFkMTI4NDlhOGNkNDYyN2Q2M2FiODEyY2U1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC00NTAsNyArNDUwLDYgQEAg
JChQUk9KRUNUX0RJUikvTW9kdWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250
cm9sbGVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVh
bURlZmF1bHRDb250cm9sbGVyLmpzCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3N0cmVhbXMvVHJh
bnNmb3JtU3RyZWFtSW50ZXJuYWxzLmpzCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3N0cmVhbXMv
V3JpdGFibGVTdHJlYW0uaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFi
bGVTdHJlYW0uanMKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9zdHJlYW1zL1dy
aXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
c3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIuaWRsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGQ2ZGI1MGNlOTk0ZTFh
MTJkMDFlNzVlYTBjYTIwZDliY2NhYTgxNDEuLjc0M2Y1MGVlMGFlZjQxZTZhZWEyNDhmZGJjZDJh
ZjliNzBlZjA5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CkBAIC0yNjQzLDcgKzI2NDMsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJLaXRGb250RmFtaWx5TmFt
ZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Xcml0YWJsZVN0cmVhbUJ1
aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dy
aXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXJC
dWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9X
cml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IDUwODJkN2U3M2FhNWFjY2I5MDdkYmE0OWVmY2QzN2YwNjcwMzNjNTcuLjUzNGU5
YzdkZDRmNDU4NTNiNjUxNzRiNzYzMTA5OGYwN2I2NjY2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMTk1Miw3ICsxOTUyLDYgQEAgV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VT
ID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbS5qcyBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvVHJhbnNmb3JtU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIuanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0
cmVhbUludGVybmFscy5qcyBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFi
bGVTdHJlYW0uanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1z
L1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5qcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0u
Y3BwCmluZGV4IGM1YmI3ZDk3Njc1M2MxZDY5OGZlYmQxYTk1OWM1MDViMmE5ZDMzM2EuLjFiZWM3
YzMxNWJlNWMwNzUwMzIwMGIwNWQ5NTNjZTIxODliMTg3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCdWZmZXJTb3Vy
Y2UuaCIKICNpbmNsdWRlICJKU1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmgiCiAjaW5jbHVkZSAiSlNS
VENFbmNvZGVkVmlkZW9GcmFtZS5oIgorI2luY2x1ZGUgIkpTV3JpdGFibGVTdHJlYW1TaW5rLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJUQ0VuY29kZWRBdWRpb0ZyYW1lLmgi
CiAjaW5jbHVkZSAiUlRDRW5jb2RlZFZpZGVvRnJhbWUuaCIKQEAgLTQzLDcgKzQ0LDYgQEAKICNp
bmNsdWRlICJSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgIldyaXRhYmxlU3RyZWFtLmgiCi0jaW5jbHVkZSAiV3JpdGFibGVTdHJlYW1T
aW5rLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtOTgsNyArOTgsNyBAQCB1aW50NjRfdCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06
OmtleUlkRm9yVGVzdGluZygpIGNvbnN0CiAKIGJvb2wgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpp
c0F0dGFjaGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pc0F0dGFjaGVkIHx8IChtX3JlYWRh
YmxlICYmIG1fcmVhZGFibGUtPmlzTG9ja2VkKCkpIHx8IChtX3dyaXRhYmxlICYmIG1fd3JpdGFi
bGUtPmlzTG9ja2VkKCkpOworICAgIHJldHVybiBtX2lzQXR0YWNoZWQgfHwgKG1fcmVhZGFibGUg
JiYgbV9yZWFkYWJsZS0+aXNMb2NrZWQoKSkgfHwgKG1fd3JpdGFibGUgJiYgbV93cml0YWJsZS0+
bG9ja2VkKCkpOwogfQogCiBzdGF0aWMgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudDo6
VHlwZSBlcnJvclR5cGVGcm9tSW5mb3JtYXRpb24oY29uc3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OkVycm9ySW5mb3JtYXRpb24mIGVycm9ySW5mb3JtYXRpb24pCkBAIC0yMDgsMTQgKzIwOCwx
OCBAQCB2b2lkIHRyYW5zZm9ybUZyYW1lKEZyYW1lJiBmcmFtZSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgUlRDUnRwU0ZyYW1lVAogICAgIHNvdXJjZS5lbnF1ZXVlKHRvSlMoJmds
b2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgZnJhbWUpKTsKIH0KIAotdm9pZCBSVENSdHBTRnJh
bWVUcmFuc2Zvcm06OmNyZWF0ZVN0cmVhbXMoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQorRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJl
YW1zKCkKIHsKKyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgPyBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpIDogbnVsbHB0cjsK
KyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CisKICAgICBtX3JlYWRhYmxlU3RyZWFtU291cmNlID0gU2ltcGxlUmVh
ZGFibGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZSgpOwotICAgIGF1dG8gcmVhZGFibGUgPSBSZWFkYWJs
ZVN0cmVhbTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS5jb3B5
UmVmKCkpOworICAgIGF1dG8gcmVhZGFibGUgPSBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKCpnbG9i
YWxPYmplY3QsIG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UuY29weVJlZigpKTsKICAgICBpZiAocmVh
ZGFibGUuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHJl
YWRhYmxlLnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIGF1dG8gd3JpdGFibGUgPSBXcml0YWJs
ZVN0cmVhbTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgU2ltcGxlV3JpdGFibGVTdHJlYW1TaW5rOjpj
cmVhdGUoW3RyYW5zZm9ybWVyID0gbV90cmFuc2Zvcm1lciwgcmVhZGFibGVTdHJlYW1Tb3VyY2Ug
PSBtX3JlYWRhYmxlU3RyZWFtU291cmNlLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShh
dXRvJiBjb250ZXh0LCBhdXRvIHZhbHVlKSAtPiBFeGNlcHRpb25Pcjx2b2lkPiB7CisgICAgYXV0
byB3cml0YWJsZSA9IFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUoKkpTQzo6anNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgU2ltcGxlV3JpdGFibGVTdHJlYW1TaW5rOjpjcmVh
dGUoW3RyYW5zZm9ybWVyID0gbV90cmFuc2Zvcm1lciwgcmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBt
X3JlYWRhYmxlU3RyZWFtU291cmNlLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRv
JiBjb250ZXh0LCBhdXRvIHZhbHVlKSAtPiBFeGNlcHRpb25Pcjx2b2lkPiB7CiAgICAgICAgIGlm
ICghY29udGV4dC5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciB9OwogICAgICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlND
Ojpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjb250ZXh0Lmdsb2JhbE9iamVjdCgpKTsKQEAg
LTIzOCw3ICsyNDIsNyBAQCB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6Y3JlYXRlU3RyZWFt
cyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybiB7IH07
CiAgICAgfSkpOwogICAgIGlmICh3cml0YWJsZS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gd3JpdGFibGUucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAgICAg
bV9yZWFkYWJsZSA9IHJlYWRhYmxlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIG1fd3JpdGFi
bGUgPSB3cml0YWJsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKQEAgLTI0NiwzNiArMjUwLDI2IEBA
IHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJlYW1zKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKICAgICAgICAgbV9yZWFkYWJsZS0+bG9jaygpOwogICAgICAg
ICBtX3dyaXRhYmxlLT5sb2NrKCk7CiAgICAgfQorICAgIHJldHVybiB7IH07CiB9CiAKIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6cmVh
ZGFibGUoKQogewotICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IgfTsKLQotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGNvbnRleHQtPmdsb2JhbE9i
amVjdCgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKLQotICAgIGlmICghbV9yZWFkYWJsZSkKLSAgICAgICAg
Y3JlYXRlU3RyZWFtcygqZ2xvYmFsT2JqZWN0KTsKLQorICAgIGlmICghbV9yZWFkYWJsZSkgewor
ICAgICAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZVN0cmVhbXMoKTsKKyAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpOworICAgIH0KICAgICByZXR1cm4gbV9yZWFkYWJsZS5jb3B5UmVmKCk7CiB9CiAKIEV4
Y2VwdGlvbk9yPFJlZlB0cjxXcml0YWJsZVN0cmVhbT4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6
d3JpdGFibGUoKQogewotICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKLQotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGNvbnRleHQtPmdsb2Jh
bE9iamVjdCgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKLQotICAgIGlmICghbV93cml0YWJsZSkKLSAgICAg
ICAgY3JlYXRlU3RyZWFtcygqZ2xvYmFsT2JqZWN0KTsKKyAgICBpZiAoIW1fd3JpdGFibGUpIHsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBjcmVhdGVTdHJlYW1zKCk7CisgICAgICAgIGlmIChyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKTsKKyAgICB9CiAKICAgICBtX2hhc1dyaXRhYmxlID0gdHJ1ZTsKICAgICByZXR1cm4g
bV93cml0YWJsZS5jb3B5UmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaAppbmRleCBiNWE1ZWJlNDk0
YTYxZDk3ODE4ODFiYWVhMzQxOGY1NWJhN2IwOTdkLi42ZDE3YjBmYThmNzRkNDg2NDE0ZjczMzYz
NjRkMWRhYzZmMzMxYzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAgLTkzLDcgKzkzLDcgQEAg
cHJpdmF0ZToKIAogICAgIGVudW0gY2xhc3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKICAg
ICB2b2lkIGluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lk
ZSk7Ci0gICAgdm9pZCBjcmVhdGVTdHJlYW1zKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBjcmVhdGVTdHJlYW1zKCk7CiAKICAgICBib29sIG1faXNBdHRhY2hl
ZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1dyaXRhYmxlIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcwppbmRleCBjNmRi
ZGY0MTdhZTE0ZjE2ZTllZTE4YjhlNmIzMWJjZmNkNzk3NDEyLi41OTFkYTBjM2RkNTQzZmUyYTA3
ZTliYTU2YzNkNTc5NWExZTVhOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCkBAIC0xMjMsNyArMTIzLDggQEAgZnVuY3Rpb24gcGlw
ZVRocm91Z2goc3RyZWFtcywgb3B0aW9ucykKICAgICAgICAgICAgIHRocm93IEBtYWtlVHlwZUVy
cm9yKCJyZWFkYWJsZSBzaG91bGQgYmUgUmVhZGFibGVTdHJlYW0iKTsKIAogICAgICAgICBjb25z
dCB3cml0YWJsZSA9IHRyYW5zZm9ybXNbIndyaXRhYmxlIl07Ci0gICAgICAgIGlmICghQGlzV3Jp
dGFibGVTdHJlYW0od3JpdGFibGUpKQorICAgICAgICBjb25zdCBpbnRlcm5hbFdyaXRhYmxlID0g
QGdldEludGVybmFsV3JpdGFibGVTdHJlYW0od3JpdGFibGUpOworICAgICAgICBpZiAoIUBpc1dy
aXRhYmxlU3RyZWFtKGludGVybmFsV3JpdGFibGUpKQogICAgICAgICAgICAgdGhyb3cgQG1ha2VU
eXBlRXJyb3IoIndyaXRhYmxlIHNob3VsZCBiZSBXcml0YWJsZVN0cmVhbSIpOwogCiAgICAgICAg
IGxldCBwcmV2ZW50Q2xvc2UgPSBmYWxzZTsKQEAgLTE0OSwxMCArMTUwLDEwIEBAIGZ1bmN0aW9u
IHBpcGVUaHJvdWdoKHN0cmVhbXMsIG9wdGlvbnMpCiAgICAgICAgIGlmIChAaXNSZWFkYWJsZVN0
cmVhbUxvY2tlZCh0aGlzKSkKICAgICAgICAgICAgIHRocm93IEBtYWtlVHlwZUVycm9yKCJSZWFk
YWJsZVN0cmVhbSBpcyBsb2NrZWQiKTsKIAotICAgICAgICBpZiAoQGlzV3JpdGFibGVTdHJlYW1M
b2NrZWQod3JpdGFibGUpKQorICAgICAgICBpZiAoQGlzV3JpdGFibGVTdHJlYW1Mb2NrZWQoaW50
ZXJuYWxXcml0YWJsZSkpCiAgICAgICAgICAgICB0aHJvdyBAbWFrZVR5cGVFcnJvcigiV3JpdGFi
bGVTdHJlYW0gaXMgbG9ja2VkIik7CiAKLSAgICAgICAgQHJlYWRhYmxlU3RyZWFtUGlwZVRvV3Jp
dGFibGVTdHJlYW0odGhpcywgd3JpdGFibGUsIHByZXZlbnRDbG9zZSwgcHJldmVudEFib3J0LCBw
cmV2ZW50Q2FuY2VsLCBzaWduYWwpOworICAgICAgICBAcmVhZGFibGVTdHJlYW1QaXBlVG9Xcml0
YWJsZVN0cmVhbSh0aGlzLCBpbnRlcm5hbFdyaXRhYmxlLCBwcmV2ZW50Q2xvc2UsIHByZXZlbnRB
Ym9ydCwgcHJldmVudENhbmNlbCwgc2lnbmFsKTsKIAogICAgICAgICByZXR1cm4gcmVhZGFibGU7
CiAgICAgfQpAQCAtMTk2LDcgKzE5Nyw4IEBAIGZ1bmN0aW9uIHBpcGVUbyhkZXN0aW5hdGlvbikK
ICAgICAgICAgICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigi
b3B0aW9ucy5zaWduYWwgbXVzdCBiZSBBYm9ydFNpZ25hbCIpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0oZGVzdGluYXRpb24pKQorICAgICAgICBjb25zdCBp
bnRlcm5hbERlc3RpbmF0aW9uID0gQGdldEludGVybmFsV3JpdGFibGVTdHJlYW0oZGVzdGluYXRp
b24pOworICAgICAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKGludGVybmFsRGVzdGluYXRpb24p
KQogICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIlJl
YWRhYmxlU3RyZWFtIHBpcGVUbyByZXF1aXJlcyBhIFdyaXRhYmxlU3RyZWFtIikpOwogCiAgICAg
ICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0odGhpcykpCkBAIC0yMDUsMTAgKzIwNywxMCBAQCBm
dW5jdGlvbiBwaXBlVG8oZGVzdGluYXRpb24pCiAgICAgICAgIGlmIChAaXNSZWFkYWJsZVN0cmVh
bUxvY2tlZCh0aGlzKSkKICAgICAgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtl
VHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBsb2NrZWQiKSk7CiAKLSAgICAgICAgaWYgKEBp
c1dyaXRhYmxlU3RyZWFtTG9ja2VkKGRlc3RpbmF0aW9uKSkKKyAgICAgICAgaWYgKEBpc1dyaXRh
YmxlU3RyZWFtTG9ja2VkKGludGVybmFsRGVzdGluYXRpb24pKQogICAgICAgICAgICAgcmV0dXJu
IEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtIGlzIGxvY2tl
ZCIpKTsKIAotICAgICAgICByZXR1cm4gQHJlYWRhYmxlU3RyZWFtUGlwZVRvV3JpdGFibGVTdHJl
YW0odGhpcywgZGVzdGluYXRpb24sIHByZXZlbnRDbG9zZSwgcHJldmVudEFib3J0LCBwcmV2ZW50
Q2FuY2VsLCBzaWduYWwpOworICAgICAgICByZXR1cm4gQHJlYWRhYmxlU3RyZWFtUGlwZVRvV3Jp
dGFibGVTdHJlYW0odGhpcywgaW50ZXJuYWxEZXN0aW5hdGlvbiwgcHJldmVudENsb3NlLCBwcmV2
ZW50QWJvcnQsIHByZXZlbnRDYW5jZWwsIHNpZ25hbCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6
IHJld3JpdGUgcGlwZVRvIHNvIGFzIHRvIHJlcXVpcmUgdG8gaGF2ZSAndGhpcycgYXMgYSBSZWFk
YWJsZVN0cmVhbSBhbmQgZGVzdGluYXRpb24gYmUgYSBXcml0YWJsZVN0cmVhbS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9UcmFuc2Zvcm1TdHJlYW1JbnRlcm5h
bHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvVHJhbnNmb3JtU3RyZWFtSW50
ZXJuYWxzLmpzCmluZGV4IGQzZDYzYzNmZmYxOTE2YzIxYjgyNjliZTdkNDNlZGM3YmVhYTMzNDQu
LjQyNjNlMzk5MWE5M2JiNTFmOGM2ZTAxZjhkZTg5MmRjMjZlZjlmMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9UcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHMuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbUludGVy
bmFscy5qcwpAQCAtOTUsNyArOTUsMTEgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZVRyYW5zZm9ybVN0
cmVhbShzdHJlYW0sIHN0YXJ0UHJvbWlzZSwgd3JpdGFibGVIaWdoV2F0ZXJNYXJrLAogICAgIEBw
dXRCeUlkRGlyZWN0UHJpdmF0ZShvcHRpb25zLCAiaGlnaFdhdGVyTWFyayIsIHJlYWRhYmxlSGln
aFdhdGVyTWFyayk7CiAgICAgY29uc3QgcmVhZGFibGUgPSBuZXcgQFJlYWRhYmxlU3RyZWFtKHVu
ZGVybHlpbmdTb3VyY2UsIG9wdGlvbnMpOwogCisgICAgLy8gVGhlIHdyaXRhYmxlIHRvIGV4cG9z
ZSB0byBKUyB0aHJvdWdoIHdyaXRhYmxlIGdldHRlci4KICAgICBAcHV0QnlJZERpcmVjdFByaXZh
dGUoc3RyZWFtLCAid3JpdGFibGUiLCB3cml0YWJsZSk7CisgICAgLy8gVGhlIHdyaXRhYmxlIHRv
IHVzZSBmb3IgdGhlIGFjdHVhbCB0cmFuc2Zvcm0gYWxnb3JpdGhtcy4KKyAgICBAcHV0QnlJZERp
cmVjdFByaXZhdGUoc3RyZWFtLCAiaW50ZXJuYWxXcml0YWJsZSIsIEBnZXRJbnRlcm5hbFdyaXRh
YmxlU3RyZWFtKHdyaXRhYmxlKSk7CisKICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFt
LCAicmVhZGFibGUiLCByZWFkYWJsZSk7CiAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHN0cmVh
bSwgImJhY2twcmVzc3VyZSIsIEB1bmRlZmluZWQpOwogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZShzdHJlYW0sICJiYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlIiwgQHVuZGVmaW5lZCk7CkBAIC0x
MjEsNyArMTI1LDcgQEAgZnVuY3Rpb24gdHJhbnNmb3JtU3RyZWFtRXJyb3JXcml0YWJsZUFuZFVu
YmxvY2tXcml0ZShzdHJlYW0sIGUpCiAKICAgICBAdHJhbnNmb3JtU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXJDbGVhckFsZ29yaXRobXMoQGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgImNvbnRy
b2xsZXIiKSk7CiAKLSAgICBjb25zdCB3cml0YWJsZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShz
dHJlYW0sICJ3cml0YWJsZSIpOworICAgIGNvbnN0IHdyaXRhYmxlID0gQGdldEJ5SWREaXJlY3RQ
cml2YXRlKHN0cmVhbSwgImludGVybmFsV3JpdGFibGUiKTsKICAgICBAd3JpdGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlckVycm9ySWZOZWVkZWQoQGdldEJ5SWREaXJlY3RQcml2YXRlKHdyaXRh
YmxlLCAiY29udHJvbGxlciIpLCBlKTsKIAogICAgIGlmIChAZ2V0QnlJZERpcmVjdFByaXZhdGUo
c3RyZWFtLCAiYmFja3ByZXNzdXJlIikpCkBAIC0yNjIsNyArMjY2LDcgQEAgZnVuY3Rpb24gdHJh
bnNmb3JtU3RyZWFtRGVmYXVsdFNpbmtXcml0ZUFsZ29yaXRobShzdHJlYW0sIGNodW5rKQogewog
ICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGNvbnN0IHdyaXRhYmxlID0gQGdldEJ5SWREaXJlY3RQ
cml2YXRlKHN0cmVhbSwgIndyaXRhYmxlIik7CisgICAgY29uc3Qgd3JpdGFibGUgPSBAZ2V0QnlJ
ZERpcmVjdFByaXZhdGUoc3RyZWFtLCAiaW50ZXJuYWxXcml0YWJsZSIpOwogCiAgICAgQGFzc2Vy
dChAZ2V0QnlJZERpcmVjdFByaXZhdGUod3JpdGFibGUsICJzdGF0ZSIpID09PSAid3JpdGFibGUi
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxl
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVh
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWZkOTk4YWFlZjY0ZDE5NTViMThhMjM2M2M0ZTE4NDJjODg0MGM0
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0
YWJsZVN0cmVhbS5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXcml0
YWJsZVN0cmVhbS5oIgorCisjaW5jbHVkZSAiSlNXcml0YWJsZVN0cmVhbS5oIgorI2luY2x1ZGUg
IkpTV3JpdGFibGVTdHJlYW1TaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRXhjZXB0
aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gV3JpdGFibGVTdHJlYW06OmNyZWF0ZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIHN0ZDo6b3B0aW9uYWw8SlNDOjpTdHJvbmc8SlND
OjpKU09iamVjdD4+JiYgdW5kZXJseWluZ1NpbmssIHN0ZDo6b3B0aW9uYWw8SlNDOjpTdHJvbmc8
SlNDOjpKU09iamVjdD4+JiYgc3RyYXRlZ3kpCit7CisgICAgSlNDOjpKU1ZhbHVlIHVuZGVybHlp
bmdTaW5rVmFsdWUgPSBKU0M6OmpzVW5kZWZpbmVkKCk7CisgICAgaWYgKHVuZGVybHlpbmdTaW5r
KQorICAgICAgICB1bmRlcmx5aW5nU2lua1ZhbHVlID0gdW5kZXJseWluZ1NpbmstPmdldCgpOwor
CisgICAgSlNDOjpKU1ZhbHVlIHN0cmF0ZWd5VmFsdWUgPSBKU0M6OmpzVW5kZWZpbmVkKCk7Cisg
ICAgaWYgKHN0cmF0ZWd5KQorICAgICAgICBzdHJhdGVneVZhbHVlID0gc3RyYXRlZ3ktPmdldCgp
OworCisgICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3QsIHVuZGVybHlpbmdTaW5rVmFsdWUs
IHN0cmF0ZWd5VmFsdWUpOworfQorCitFeGNlcHRpb25PcjxSZWY8V3JpdGFibGVTdHJlYW0+PiBX
cml0YWJsZVN0cmVhbTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHVuZGVybHlpbmdTaW5rLCBKU0M6OkpTVmFsdWUgc3RyYXRlZ3kpCit7Cisg
ICAgYXV0byByZXN1bHQgPSBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUoKkpTQzo6anND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCksIHVuZGVybHlpbmdTaW5rLCBz
dHJhdGVneSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
cml0YWJsZVN0cmVhbShyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpKTsKK30KKworRXhjZXB0
aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gV3JpdGFibGVTdHJlYW06OmNyZWF0ZShKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8V3JpdGFibGVTdHJlYW1TaW5rPiYmIHNpbmsp
Cit7CisgICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3QsIHRvSlNOZXdseUNyZWF0ZWQoJmds
b2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgV1RGTW92ZShzaW5rKSksIEpTQzo6anNVbmRlZmlu
ZWQoKSk7Cit9CisKK1dyaXRhYmxlU3RyZWFtOjpXcml0YWJsZVN0cmVhbShSZWY8SW50ZXJuYWxX
cml0YWJsZVN0cmVhbT4mJiBpbnRlcm5hbFdyaXRhYmxlU3RyZWFtKQorICAgIDogbV9pbnRlcm5h
bFdyaXRhYmxlU3RyZWFtKFdURk1vdmUoaW50ZXJuYWxXcml0YWJsZVN0cmVhbSkpCit7Cit9CisK
K0pTQzo6SlNWYWx1ZSBKU1dyaXRhYmxlU3RyZWFtOjphYm9ydChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJu
IHdyYXBwZWQoKS5pbnRlcm5hbFdyaXRhYmxlU3RyZWFtKCkuYWJvcnQoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUuYXJndW1lbnQoMCkpOworfQorCitKU0M6OkpTVmFsdWUgSlNXcml0YWJsZVN0cmVh
bTo6Y2xvc2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSYpCit7CisgICAgcmV0dXJuIHdyYXBwZWQoKS5pbnRlcm5hbFdyaXRhYmxlU3RyZWFtKCkuY2xv
c2UoZ2xvYmFsT2JqZWN0KTsKK30KKworSlNDOjpKU1ZhbHVlIEpTV3JpdGFibGVTdHJlYW06Omdl
dFdyaXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
JikKK3sKKyAgICByZXR1cm4gd3JhcHBlZCgpLmludGVybmFsV3JpdGFibGVTdHJlYW0oKS5nZXRX
cml0ZXIoZ2xvYmFsT2JqZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYzJhMjUyNGRiZDMwYjAwNzE3NjNkYzdlNmUzNzNlOTIxMmRhNGY3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmgKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5oIgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW50ZXJuYWxXcml0YWJsZVN0
cmVhbTsKK2NsYXNzIEpTRE9NR2xvYmFsT2JqZWN0OworY2xhc3MgV3JpdGFibGVTdHJlYW1TaW5r
OworCitjbGFzcyBXcml0YWJsZVN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPFdyaXRhYmxlU3Ry
ZWFtPiB7CitwdWJsaWM6CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXcml0YWJsZVN0cmVh
bT4+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjpvcHRpb25hbDxKU0M6OlN0cm9u
ZzxKU0M6OkpTT2JqZWN0Pj4mJiwgc3RkOjpvcHRpb25hbDxKU0M6OlN0cm9uZzxKU0M6OkpTT2Jq
ZWN0Pj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXcml0YWJsZVN0cmVhbT4+IGNy
ZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxXcml0YWJsZVN0cmVhbVNpbms+JiYpOworCisg
ICAgfldyaXRhYmxlU3RyZWFtKCkgPSBkZWZhdWx0OworCisgICAgdm9pZCBsb2NrKCkgeyBtX2lu
dGVybmFsV3JpdGFibGVTdHJlYW0tPmxvY2soKTsgfQorICAgIGJvb2wgbG9ja2VkKCkgY29uc3Qg
eyByZXR1cm4gbV9pbnRlcm5hbFdyaXRhYmxlU3RyZWFtLT5sb2NrZWQoKTsgfQorCisgICAgSW50
ZXJuYWxXcml0YWJsZVN0cmVhbSYgaW50ZXJuYWxXcml0YWJsZVN0cmVhbSgpIHsgcmV0dXJuIG1f
aW50ZXJuYWxXcml0YWJsZVN0cmVhbS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBF
eGNlcHRpb25PcjxSZWY8V3JpdGFibGVTdHJlYW0+PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKKyAgICBleHBsaWNpdCBXcml0YWJsZVN0
cmVhbShSZWY8SW50ZXJuYWxXcml0YWJsZVN0cmVhbT4mJik7CisKKyAgICBSZWY8SW50ZXJuYWxX
cml0YWJsZVN0cmVhbT4gbV9pbnRlcm5hbFdyaXRhYmxlU3RyZWFtOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1dyaXRhYmxlU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0
YWJsZVN0cmVhbS5pZGwKaW5kZXggZDlhZTY2OWYxZGM5ZDU2YTBiZDBhMzdmZGVjNjZiOWM1ZWE0
MDQ3MS4uNGYxODAyNzNjYzQyYTM4NWE2YmY1NzRhZGUxZmVkMDM1Nzc0YzZlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsCkBAIC0x
LDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwxNSArMzEsMTYgQEAKIFsKICAgICBFbmFibGVkQXRS
dW50aW1lPVdyaXRhYmxlU3RyZWFtQVBJLAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAot
ICAgIEpTQnVpbHRpbiwKICAgICBQcml2YXRlSWRlbnRpZmllciwKLSAgICBQdWJsaWNJZGVudGlm
aWVyCisgICAgUHVibGljSWRlbnRpZmllciwKKyAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgogXSBp
bnRlcmZhY2UgV3JpdGFibGVTdHJlYW0gewotICAgIGNvbnN0cnVjdG9yKG9wdGlvbmFsIG9iamVj
dCB1bmRlcmx5aW5nU2luaywgb3B0aW9uYWwgUXVldWluZ1N0cmF0ZWd5IHN0cmF0ZWd5KTsKKyAg
ICAvLyBGSVhNRTogVGlnaHRlbiBwYXJhbWV0ZXIgbWF0Y2hpbmcKKyAgICBbQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0XSBjb25zdHJ1Y3RvcihvcHRpb25hbCBvYmplY3QgdW5kZXJseWluZ1NpbmssIG9w
dGlvbmFsIG9iamVjdCBzdHJhdGVneSk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biBsb2NrZWQ7CiAKLSAgICBQcm9taXNlPGFueT4gYWJvcnQob3B0aW9uYWwgYW55IHJlYXNvbik7
Ci0gICAgUHJvbWlzZTxhbnk+IGNsb3NlKCk7Ci0gICAgV3JpdGFibGVTdHJlYW1EZWZhdWx0V3Jp
dGVyIGdldFdyaXRlcigpOworICAgIFtDdXN0b20sIFJldHVybnNPd25Qcm9taXNlXSBQcm9taXNl
PGFueT4gYWJvcnQob3B0aW9uYWwgYW55IHJlYXNvbik7CisgICAgW0N1c3RvbSwgUmV0dXJuc093
blByb21pc2VdIFByb21pc2U8YW55PiBjbG9zZSgpOworICAgIFtDdXN0b21dIFdyaXRhYmxlU3Ry
ZWFtRGVmYXVsdFdyaXRlciBnZXRXcml0ZXIoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDk4NmY5MmYxYzAyNDdiYjJlNDU5MzUwMzU1Njc2NzhiYWY5ZDNmM2IuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0
IChDKSAyMDE1IElnYWxpYQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1mdW5jdGlvbiBpbml0aWFsaXplV3JpdGFibGVTdHJlYW0odW5kZXJseWluZ1NpbmssIHN0
cmF0ZWd5KQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICh1bmRlcmx5aW5nU2luayA9
PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgdW5kZXJseWluZ1NpbmsgPSB7IH07Ci0KLSAgICBpZiAo
c3RyYXRlZ3kgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIHN0cmF0ZWd5ID0geyB9OwotCi0gICAg
aWYgKCFAaXNPYmplY3QodW5kZXJseWluZ1NpbmspKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
IldyaXRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHRha2VzIGFuIG9iamVjdCBhcyBmaXJzdCBhcmd1
bWVudCIpOwotCi0gICAgLy8gQ3JlYXRlV3JpdGVTdHJlYW0gY29kZSBwYXRoLgotICAgIGlmIChA
Z2V0QnlJZERpcmVjdFByaXZhdGUodW5kZXJseWluZ1NpbmssICJXcml0YWJsZVN0cmVhbSIpKSB7
Ci0gICAgICAgIEBwcml2YXRlSW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtKHRoaXMsIHVuZGVybHlp
bmdTaW5rKTsKLQotICAgICAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEBXcml0YWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyKCk7Ci0KLSAgICAgICAgQHNldFVwV3JpdGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlcih0aGlzLCBjb250cm9sbGVyLCB1bmRlcmx5aW5nU2luay5zdGFydEFsZ29y
aXRobSwgdW5kZXJseWluZ1Npbmsud3JpdGVBbGdvcml0aG0sIHVuZGVybHlpbmdTaW5rLmNsb3Nl
QWxnb3JpdGhtLCB1bmRlcmx5aW5nU2luay5hYm9ydEFsZ29yaXRobSwgc3RyYXRlZ3kuaGlnaFdh
dGVyTWFyaywgc3RyYXRlZ3kuc2l6ZUFsZ29yaXRobSk7Ci0gICAgICAgIHJldHVybiB0aGlzOwot
ICAgIH0KLQotICAgIGlmICgidHlwZSIgaW4gdW5kZXJseWluZ1NpbmspCi0gICAgICAgIEB0aHJv
d1JhbmdlRXJyb3IoIkludmFsaWQgdHlwZSBpcyBzcGVjaWZpZWQiKTsKLQotICAgIGNvbnN0IHNp
emVBbGdvcml0aG0gPSBAZXh0cmFjdFNpemVBbGdvcml0aG0oc3RyYXRlZ3kpOwotICAgIGNvbnN0
IGhpZ2hXYXRlck1hcmsgPSBAZXh0cmFjdEhpZ2hXYXRlck1hcmsoc3RyYXRlZ3ksIDEpOwotCi0g
ICAgY29uc3QgdW5kZXJseWluZ1NpbmtEaWN0ID0geyB9OwotICAgIGlmICgic3RhcnQiIGluIHVu
ZGVybHlpbmdTaW5rKSB7Ci0gICAgICAgIHVuZGVybHlpbmdTaW5rRGljdFsic3RhcnQiXSA9IHVu
ZGVybHlpbmdTaW5rWyJzdGFydCJdOwotICAgICAgICBpZiAodHlwZW9mIHVuZGVybHlpbmdTaW5r
RGljdFsic3RhcnQiXSAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJv
cigidW5kZXJseWluZ1Npbmsuc3RhcnQgc2hvdWxkIGJlIGEgZnVuY3Rpb24iKTsKLSAgICB9Ci0g
ICAgaWYgKCJ3cml0ZSIgaW4gdW5kZXJseWluZ1NpbmspIHsKLSAgICAgICAgdW5kZXJseWluZ1Np
bmtEaWN0WyJ3cml0ZSJdID0gdW5kZXJseWluZ1NpbmtbIndyaXRlIl07Ci0gICAgICAgIGlmICh0
eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJ3cml0ZSJdICE9PSAiZnVuY3Rpb24iKQotICAgICAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5nU2luay53cml0ZSBzaG91bGQgYmUgYSBm
dW5jdGlvbiIpOwotICAgIH0KLSAgICBpZiAoImNsb3NlIiBpbiB1bmRlcmx5aW5nU2luaykgewot
ICAgICAgICB1bmRlcmx5aW5nU2lua0RpY3RbImNsb3NlIl0gPSB1bmRlcmx5aW5nU2lua1siY2xv
c2UiXTsKLSAgICAgICAgaWYgKHR5cGVvZiB1bmRlcmx5aW5nU2lua0RpY3RbImNsb3NlIl0gIT09
ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInVuZGVybHlpbmdTaW5r
LmNsb3NlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7Ci0gICAgfQotICAgIGlmICgiYWJvcnQiIGlu
IHVuZGVybHlpbmdTaW5rKSB7Ci0gICAgICAgIHVuZGVybHlpbmdTaW5rRGljdFsiYWJvcnQiXSA9
IHVuZGVybHlpbmdTaW5rWyJhYm9ydCJdOwotICAgICAgICBpZiAodHlwZW9mIHVuZGVybHlpbmdT
aW5rRGljdFsiYWJvcnQiXSAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIEB0aHJvd1R5cGVF
cnJvcigidW5kZXJseWluZ1NpbmsuYWJvcnQgc2hvdWxkIGJlIGEgZnVuY3Rpb24iKTsKLSAgICB9
Ci0KLSAgICBAcHJpdmF0ZUluaXRpYWxpemVXcml0YWJsZVN0cmVhbSh0aGlzLCB1bmRlcmx5aW5n
U2luayk7Ci0gICAgQHNldFVwV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckZyb21VbmRl
cmx5aW5nU2luayh0aGlzLCB1bmRlcmx5aW5nU2luaywgdW5kZXJseWluZ1NpbmtEaWN0LCBoaWdo
V2F0ZXJNYXJrLCBzaXplQWxnb3JpdGhtKTsKLQotICAgIHJldHVybiB0aGlzOwotfQotCi1AZ2V0
dGVyCi1mdW5jdGlvbiBsb2NrZWQoKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICgh
QGlzV3JpdGFibGVTdHJlYW0odGhpcykpCi0gICAgICAgIHRocm93IEBtYWtlVGhpc1R5cGVFcnJv
cigiV3JpdGFibGVTdHJlYW0iLCAibG9ja2VkIik7Ci0KLSAgICByZXR1cm4gQGlzV3JpdGFibGVT
dHJlYW1Mb2NrZWQodGhpcyk7Ci19Ci0KLWZ1bmN0aW9uIGFib3J0KHJlYXNvbikKLXsKLSAgICAi
dXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRoaXMpKQotICAgICAg
ICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVRoaXNUeXBlRXJyb3IoIldyaXRhYmxlU3Ry
ZWFtIiwgImFib3J0IikpOwotCi0gICAgaWYgKEBpc1dyaXRhYmxlU3RyZWFtTG9ja2VkKHRoaXMp
KQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigiV3JpdGFi
bGVTdHJlYW0uYWJvcnQgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24gbm9uIGxvY2tlZCBXcml0
YWJsZVN0cmVhbSIpKTsKLQotICAgIHJldHVybiBAd3JpdGFibGVTdHJlYW1BYm9ydCh0aGlzLCBy
ZWFzb24pOwotfQotCi1mdW5jdGlvbiBjbG9zZSgpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0g
ICAgaWYgKCFAaXNXcml0YWJsZVN0cmVhbSh0aGlzKSkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNl
LkByZWplY3QoQG1ha2VUaGlzVHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbSIsICJjbG9zZSIpKTsK
LQotICAgIGlmIChAaXNXcml0YWJsZVN0cmVhbUxvY2tlZCh0aGlzKSkKLSAgICAgICAgcmV0dXJu
IEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtLmNsb3NlIG1l
dGhvZCBjYW4gb25seSBiZSB1c2VkIG9uIG5vbiBsb2NrZWQgV3JpdGFibGVTdHJlYW0iKSk7Ci0K
LSAgICBpZiAoQHdyaXRhYmxlU3RyZWFtQ2xvc2VRdWV1ZWRPckluRmxpZ2h0KHRoaXMpKQotICAg
ICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigiV3JpdGFibGVTdHJl
YW0uY2xvc2UgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24gYSBiZWluZyBjbG9zZSBXcml0YWJs
ZVN0cmVhbSIpKTsKLQotICAgIHJldHVybiBAd3JpdGFibGVTdHJlYW1DbG9zZSh0aGlzKTsKLX0K
LQotZnVuY3Rpb24gZ2V0V3JpdGVyKCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAo
IUBpc1dyaXRhYmxlU3RyZWFtKHRoaXMpKQotICAgICAgICB0aHJvdyBAbWFrZVRoaXNUeXBlRXJy
b3IoIldyaXRhYmxlU3RyZWFtIiwgImdldFdyaXRlciIpOwotCi0gICAgcmV0dXJuIEBhY3F1aXJl
V3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyKHRoaXMpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5qcyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0
ZXIuanMKaW5kZXggZTlkYzk3MTA1ODNjNDk1NDA2MzdmYWFiMTc1YWIxZDZkMTA1Mjc3Yi4uNjlh
OTUzZmMzZjM5ZTJkMThjNDdiMzZmNGExMGFhOGRlYjU4M2JiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0
V3JpdGVyLmpzCkBAIC0yNyw2ICsyNywxMiBAQCBmdW5jdGlvbiBpbml0aWFsaXplV3JpdGFibGVT
dHJlYW1EZWZhdWx0V3JpdGVyKHN0cmVhbSkKIHsKICAgICAidXNlIHN0cmljdCI7CiAKKyAgICAv
LyBzdHJlYW0gY2FuIGJlIGEgV3JpdGFibGVTdHJlYW0gaWYgV3JpdGFibGVTdHJlYW1EZWZhdWx0
V3JpdGVyIGNvbnN0cnVjdG9yIGlzIGNhbGxlZCBkaXJlY3RseSBmcm9tIEpTCisgICAgLy8gb3Ig
YW4gSW50ZXJuYWxXcml0YWJsZVN0cmVhbSBpbiBvdGhlciBjb2RlIHBhdGhzLgorICAgIGNvbnN0
IGludGVybmFsU3RyZWFtID0gQGdldEludGVybmFsV3JpdGFibGVTdHJlYW0oc3RyZWFtKTsKKyAg
ICBpZiAoaW50ZXJuYWxTdHJlYW0pCisgICAgICAgIHN0cmVhbSA9IGludGVybmFsU3RyZWFtOwor
CiAgICAgaWYgKCFAaXNXcml0YWJsZVN0cmVhbShzdHJlYW0pKQogICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoIldyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlciBjb25zdHJ1Y3RvciB0YWtlcyBhIFdy
aXRhYmxlU3RyZWFtIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qcwppbmRleCA2NzA1MDQ2M2UxYzJlNzRk
MjRjMzA2MDBjZDdkMmRlZTVlZDhkM2MyLi44MjIzODQ2MWVmNmVmNGU1MmE2MjRhNzYzOWZjNDQy
MmFiOGQxZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3Jp
dGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC01Nyw3ICs1Nyw2NiBAQCBmdW5jdGlv
biBjcmVhdGVXcml0YWJsZVN0cmVhbShzdGFydEFsZ29yaXRobSwgd3JpdGVBbGdvcml0aG0sIGNs
b3NlQWxnb3JpdGhtLCBhYgogICAgIHJldHVybiBuZXcgQFdyaXRhYmxlU3RyZWFtKHVuZGVybHlp
bmdTaW5rLCB7IHNpemVBbGdvcml0aG06IHdyaXRhYmxlU2l6ZUFsZ29yaXRobSwgaGlnaFdhdGVy
TWFyazogd3JpdGFibGVIaWdoV2F0ZXJNYXJrIH0pOwogfQogCi1mdW5jdGlvbiBwcml2YXRlSW5p
dGlhbGl6ZVdyaXRhYmxlU3RyZWFtKHN0cmVhbSwgdW5kZXJseWluZ1NpbmspCitmdW5jdGlvbiBj
cmVhdGVJbnRlcm5hbFdyaXRhYmxlU3RyZWFtKHVuZGVybHlpbmdTaW5rLCBzdHJhdGVneSkKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICBjb25zdCBzdHJlYW0gPSB7IH07CisKKyAgICBpZiAo
dW5kZXJseWluZ1NpbmsgPT09IEB1bmRlZmluZWQpCisgICAgICAgIHVuZGVybHlpbmdTaW5rID0g
eyB9OworCisgICAgaWYgKHN0cmF0ZWd5ID09PSBAdW5kZWZpbmVkKQorICAgICAgICBzdHJhdGVn
eSA9IHsgfTsKKworICAgIGlmICghQGlzT2JqZWN0KHVuZGVybHlpbmdTaW5rKSkKKyAgICAgICAg
QHRocm93VHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB0YWtlcyBhbiBvYmpl
Y3QgYXMgZmlyc3QgYXJndW1lbnQiKTsKKworICAgIC8vIGNyZWF0ZVdyaXRlU3RyZWFtIGNvZGUg
cGF0aC4KKyAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRlKHVuZGVybHlpbmdTaW5rLCAiV3Jp
dGFibGVTdHJlYW0iKSkgeworICAgICAgICBAaW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtU2xvdHMo
c3RyZWFtLCB1bmRlcmx5aW5nU2luayk7CisKKyAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5l
dyBAV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcigpOworCisgICAgICAgIEBzZXRVcFdy
aXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIoc3RyZWFtLCBjb250cm9sbGVyLCB1bmRlcmx5
aW5nU2luay5zdGFydEFsZ29yaXRobSwgdW5kZXJseWluZ1Npbmsud3JpdGVBbGdvcml0aG0sIHVu
ZGVybHlpbmdTaW5rLmNsb3NlQWxnb3JpdGhtLCB1bmRlcmx5aW5nU2luay5hYm9ydEFsZ29yaXRo
bSwgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgc3RyYXRlZ3kuc2l6ZUFsZ29yaXRobSk7CisgICAg
ICAgIHJldHVybiBzdHJlYW07CisgICAgfQorCisgICAgaWYgKCJ0eXBlIiBpbiB1bmRlcmx5aW5n
U2luaykKKyAgICAgICAgQHRocm93UmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlIGlzIHNwZWNpZmll
ZCIpOworCisgICAgY29uc3Qgc2l6ZUFsZ29yaXRobSA9IEBleHRyYWN0U2l6ZUFsZ29yaXRobShz
dHJhdGVneSk7CisgICAgY29uc3QgaGlnaFdhdGVyTWFyayA9IEBleHRyYWN0SGlnaFdhdGVyTWFy
ayhzdHJhdGVneSwgMSk7CisKKyAgICBjb25zdCB1bmRlcmx5aW5nU2lua0RpY3QgPSB7IH07Cisg
ICAgaWYgKCJzdGFydCIgaW4gdW5kZXJseWluZ1NpbmspIHsKKyAgICAgICAgdW5kZXJseWluZ1Np
bmtEaWN0WyJzdGFydCJdID0gdW5kZXJseWluZ1NpbmtbInN0YXJ0Il07CisgICAgICAgIGlmICh0
eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJzdGFydCJdICE9PSAiZnVuY3Rpb24iKQorICAgICAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5nU2luay5zdGFydCBzaG91bGQgYmUgYSBm
dW5jdGlvbiIpOworICAgIH0KKyAgICBpZiAoIndyaXRlIiBpbiB1bmRlcmx5aW5nU2luaykgewor
ICAgICAgICB1bmRlcmx5aW5nU2lua0RpY3RbIndyaXRlIl0gPSB1bmRlcmx5aW5nU2lua1sid3Jp
dGUiXTsKKyAgICAgICAgaWYgKHR5cGVvZiB1bmRlcmx5aW5nU2lua0RpY3RbIndyaXRlIl0gIT09
ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInVuZGVybHlpbmdTaW5r
LndyaXRlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7CisgICAgfQorICAgIGlmICgiY2xvc2UiIGlu
IHVuZGVybHlpbmdTaW5rKSB7CisgICAgICAgIHVuZGVybHlpbmdTaW5rRGljdFsiY2xvc2UiXSA9
IHVuZGVybHlpbmdTaW5rWyJjbG9zZSJdOworICAgICAgICBpZiAodHlwZW9mIHVuZGVybHlpbmdT
aW5rRGljdFsiY2xvc2UiXSAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIEB0aHJvd1R5cGVF
cnJvcigidW5kZXJseWluZ1NpbmsuY2xvc2Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24iKTsKKyAgICB9
CisgICAgaWYgKCJhYm9ydCIgaW4gdW5kZXJseWluZ1NpbmspIHsKKyAgICAgICAgdW5kZXJseWlu
Z1NpbmtEaWN0WyJhYm9ydCJdID0gdW5kZXJseWluZ1NpbmtbImFib3J0Il07CisgICAgICAgIGlm
ICh0eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJhYm9ydCJdICE9PSAiZnVuY3Rpb24iKQorICAg
ICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5nU2luay5hYm9ydCBzaG91bGQgYmUg
YSBmdW5jdGlvbiIpOworICAgIH0KKworICAgIEBpbml0aWFsaXplV3JpdGFibGVTdHJlYW1TbG90
cyhzdHJlYW0sIHVuZGVybHlpbmdTaW5rKTsKKyAgICBAc2V0VXBXcml0YWJsZVN0cmVhbURlZmF1
bHRDb250cm9sbGVyRnJvbVVuZGVybHlpbmdTaW5rKHN0cmVhbSwgdW5kZXJseWluZ1NpbmssIHVu
ZGVybHlpbmdTaW5rRGljdCwgaGlnaFdhdGVyTWFyaywgc2l6ZUFsZ29yaXRobSk7CisKKyAgICBy
ZXR1cm4gc3RyZWFtOworfQorCitmdW5jdGlvbiBpbml0aWFsaXplV3JpdGFibGVTdHJlYW1TbG90
cyhzdHJlYW0sIHVuZGVybHlpbmdTaW5rKQogewogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShz
dHJlYW0sICJzdGF0ZSIsICJ3cml0YWJsZSIpOwogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShz
dHJlYW0sICJzdG9yZWRFcnJvciIsIEB1bmRlZmluZWQpOwpAQCAtNzIsNiArMTMxLDI1IEBAIGZ1
bmN0aW9uIHByaXZhdGVJbml0aWFsaXplV3JpdGFibGVTdHJlYW0oc3RyZWFtLCB1bmRlcmx5aW5n
U2luaykKICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAidW5kZXJseWluZ1Npbmsi
LCB1bmRlcmx5aW5nU2luayk7CiB9CiAKK2Z1bmN0aW9uIHdyaXRhYmxlU3RyZWFtQ2xvc2VGb3JC
aW5kaW5ncyhzdHJlYW0pCit7CisgICAgaWYgKEBpc1dyaXRhYmxlU3RyZWFtTG9ja2VkKHN0cmVh
bSkpCisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJXcml0
YWJsZVN0cmVhbS5jbG9zZSBtZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBub24gbG9ja2VkIFdy
aXRhYmxlU3RyZWFtIikpOworCisgICAgaWYgKEB3cml0YWJsZVN0cmVhbUNsb3NlUXVldWVkT3JJ
bkZsaWdodChzdHJlYW0pKQorICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5
cGVFcnJvcigiV3JpdGFibGVTdHJlYW0uY2xvc2UgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24g
YSBiZWluZyBjbG9zZSBXcml0YWJsZVN0cmVhbSIpKTsKKworICAgIHJldHVybiBAd3JpdGFibGVT
dHJlYW1DbG9zZShzdHJlYW0pOworfQorCitmdW5jdGlvbiB3cml0YWJsZVN0cmVhbUFib3J0Rm9y
QmluZGluZ3Moc3RyZWFtLCByZWFzb24pCit7CisgICAgaWYgKEBpc1dyaXRhYmxlU3RyZWFtTG9j
a2VkKHN0cmVhbSkpCisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVy
cm9yKCJXcml0YWJsZVN0cmVhbS5hYm9ydCBtZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBub24g
bG9ja2VkIFdyaXRhYmxlU3RyZWFtIikpOworCisgICAgcmV0dXJuIEB3cml0YWJsZVN0cmVhbUFi
b3J0KHN0cmVhbSwgcmVhc29uKTsKK30KKwogZnVuY3Rpb24gaXNXcml0YWJsZVN0cmVhbUxvY2tl
ZChzdHJlYW0pCiB7CiAgICAgcmV0dXJuIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShzdHJlYW0sICJ3
cml0ZXIiKSAhPT0gQHVuZGVmaW5lZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZmVmZjlkMDU5ZGY4ZmMz
ZDliMjhjODBmN2EwNjBlZmZjNTU4MTNlOC4uMzgwYzY1ZDUwZDZiY2Q3NDk5MjBiNjU3NTEyMzk1
NzQ5MTIxNzUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQyNyw2ICs0MjcsNyBAQCBiaW5kaW5ncy9q
cy9ET01HQ091dHB1dENvbnN0cmFpbnQuY3BwCiBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQu
Y3BwCiBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCiBiaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmNwcAorYmluZGluZ3MvanMvSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5jcHAKIGJp
bmRpbmdzL2pzL0pTQWJvcnRTaWduYWxDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0Fic3RyYWN0
UmFuZ2VDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0FuaW1hdGlvbkVmZmVjdEN1c3RvbS5jcHAK
QEAgLTU3MCw3ICs1NzEsNiBAQCBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAog
YmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogYmluZGluZ3MvanMv
V29ya2VyTW9kdWxlU2NyaXB0TG9hZGVyLmNwcAogYmluZGluZ3MvanMvV2luZG93UHJveHkuY3Bw
Ci1iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAKIGJyaWRnZS9JZGVudGlmaWVyUmVwLmNw
cAogYnJpZGdlL05QX2pzb2JqZWN0LmNwcAogYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMjZjMGUzYzdmMGQ1OGZlZWE4MDg1OWMxOThiMjIxMmUwMDE3MTdhYS4uODhiMmI4MTY0YWYx
ZTE2ZmE4OGJhZDc5NDM3MmYxYTkxMDI3OTFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTExNCw3ICsxMTE0LDYgQEAKIAkJ
NDE2RTZGRTgxQkJEMTJERjAwMEE2MDQzIC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjAzRDgwNjFCQjMxMTBEMDBCNzNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWls
dGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIw
M0Q4MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZF
NkZFOTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAw
Qjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNTMgLyog
V3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFt
QnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MTZFQ0FFNTI1QjU4Q0M0MDBCMzREQTUgLyogTWVkaWFTZXNzaW9uR3JvdXBJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZF
Q0FFMzI1QjU4Q0M0MDBCMzREQTUgLyogTWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RURCRjYy
NjAwRDY3OTAwMDkyNjc1IC8qIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RURCRjQyNjAwRDY3ODAw
MDkyNjc1IC8qIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkVEQzAwMjYwMEU3ODgwMDA5MjY3
NSAvKiBSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkVEQkZGMjYwMEU3ODcwMDA5MjY3NSAvKiBSVENEYXRh
Q2hhbm5lbElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtNzgzMCw4ICs3ODI5LDggQEAKIAkJNDE0MTg5RkYyNTY0MThFNzAwMzYz
NDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE0MThBMDAyNTY0MzU5NzAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtU2lu
ay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV3JpdGFibGVTdHJlYW1TaW5rLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0MThBMDIyNTY0MzU5ODAwMzYzNDE3IC8qIFdy
aXRhYmxlU3RyZWFtU2luay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0
YWJsZVN0cmVhbVNpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE0MThBMDMy
NTY0M0UxMjAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNDE0MThBMDQyNTY0M0UxMzAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4QTAzMjU2NDNFMTIwMDM2MzQxNyAvKiBJbnRl
cm5hbFdyaXRhYmxlU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEludGVybmFsV3JpdGFibGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyogSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcm5hbFdyaXRhYmxlU3RyZWFt
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDE4QTA1MjU2NjYwQUYwMDM2MzQx
NyAvKiBSVENFbmNvZGVkRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUlRDRW5jb2RlZEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE0MThBMDYyNTY2NjBCMDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRGcmFtZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSVENFbmNvZGVkRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE0NDYwQTAyNDEyOTk0MTAwODE0QkU3IC8qIE1lZGlhU2Vzc2lvbklk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTZXNzaW9u
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODEyOCw2ICs4MTI3
LDggQEAKIAkJNDFFNTk0MDEyMTQ4NjVBQjAwRDNDQjYxIC8qIFJUQ1J0cEZlY1BhcmFtZXRlcnMu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFJUQ1J0cEZlY1BhcmFtZXRlcnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUU2N0E3RjI1RDE2ODQ2MDA3QjBBNEMgLyogU1RVTk1lc3NhZ2VQYXJzaW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNUVU5NZXNzYWdlUGFyc2lu
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTY3QTgxMjVEMTY4NDcwMDdC
MEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1RVTk1lc3NhZ2VQYXJzaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxRTZENzIxMjZFQUEwNDUwMEI3NjVENiAvKiBXcml0YWJsZVN0cmVhbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0YWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MUU2RDcyMjI2RUFBMDQ2MDBCNzY1RDYgLyogV3JpdGFibGVTdHJlYW0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV3JpdGFibGVTdHJlYW0u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUU5RENFNDIzMTk3M0ZFMDBGMzU5
NDkgLyogQmxvYkxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9i
TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTlEQ0U2MjMxOTc0MjMw
MEYzNTk0OSAvKiBFbmRpbmdUeXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbmRpbmdU
eXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFOURDRTgyMzE5Q0E3NTAw
RjM1OTQ5IC8qIE5ldHdvcmtTZW5kUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmV0d29ya1NlbmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTIyNDksNyArMTIyNTAsNiBAQAogCQk5OTA4QjBFRDFCQ0FDRjkxMDBFRDBGNjUgLyogQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5MDhCMEVFMUJDQUNGOTEwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVn
eS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IENvdW50UXVldWlu
Z1N0cmF0ZWd5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBFRjFCQ0FD
RjkxMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW0uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmph
dmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJOTkwOEIwRUYxQkNBQ0Y5MTAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtLmpzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gV3JpdGFibGVTdHJlYW0uanM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEYwMUJDQUNGOTEwMEVEMEY2NSAv
KiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5qczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjAxQkNBQ0Y5MTAwRUQzRjY0IC8q
IFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmph
dmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmpzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGMDFCQ0FDRjkxMDBFRDU2NzIgLyogUmVhZGFi
bGVTdHJlYW1CWU9CUmVxdWVzdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMjI2NCw3ICsxMjI2NCw2IEBACiAJCTk5MDhCMEY2MUJDQUQwN0QwMEVEMEY2
NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNw
cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTkwOEIwRjcxQkNBRDA3
RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5MDhCMEY5MUJDQUQwN0Qw
MEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9SZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJOTkwOEIwRjkxQkNBRDA3RDAwRUQwRjc1IC8q
IFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL1dyaXRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogCQk5OTA4QjBGQTFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJCdWlsdGlucy5j
cHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXJCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCTk5MDhCMEZCMUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250
cm9sbGVyQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmg7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJCdWlsdGlucy5oOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBG
NTUgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9TdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0xMjMwNCw3ICsxMjMwMyw2IEBACiAJCTlCMDNE
ODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDkg
LyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmg7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOUIwM0Q4MDYxQkIzMTEwRDAw
Qjc2NERBIC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmg7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTlCMDNEODA2MUJCMzExMEQw
MEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTkgLyogV3JpdGFibGVT
dHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmg7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEVBIC8qIFRy
YW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFRyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmg7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL1RyYW5zZm9ybVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmg7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTlCMDk4QkQ1MUYzRDYwMzMwMDJE
RDU2MiAvKiBEYXRhVHJhbnNmZXJJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERhdGFUcmFuc2Zlckl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTk2NDksOCArMTk2NDcsOSBAQAogCQkJCTQxRkNBNUZBMjRFQUFGMTYwMDVFMUJBNiAv
KiBUcmFuc2Zvcm1TdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgKi8sCiAJCQkJNDFGQ0E1RkIy
NEVBQUYxNjAwNUUxQkE2IC8qIFRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzICov
LAogCQkJCTQxRkNBNUZDMjRFQUI3ODAwMDVFMUJBNiAvKiBUcmFuc2Zvcm1TdHJlYW1JbnRlcm5h
bHMuanMgKi8sCisJCQkJNDFFNkQ3MjIyNkVBQTA0NjAwQjc2NUQ2IC8qIFdyaXRhYmxlU3RyZWFt
LmNwcCAqLywKKwkJCQk0MUU2RDcyMTI2RUFBMDQ1MDBCNzY1RDYgLyogV3JpdGFibGVTdHJlYW0u
aCAqLywKIAkJCQk0MUEwMjNFRDFBMzlEQjc5MDBGNzIyREYgLyogV3JpdGFibGVTdHJlYW0uaWRs
ICovLAotCQkJCTk5MDhCMEVGMUJDQUNGOTEwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVhbS5qcyAq
LywKIAkJCQk0MTc2NjczNDI0REMwOEVCMDA4QkZFMjggLyogV3JpdGFibGVTdHJlYW1EZWZhdWx0
Q29udHJvbGxlci5pZGwgKi8sCiAJCQkJNDE3NjY3MzMyNERDMDhFQjAwOEJGRTI4IC8qIFdyaXRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgKi8sCiAJCQkJNDE3NjY3MzAyNERDMDhFQTAw
OEJGRTI4IC8qIFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwgKi8sCkBAIC0yMTc1Niw4
ICsyMTc1NSw2IEBACiAJCQkJQzIxQkY3NDIyMUNEOTYzQjAwMjI3OTc5IC8qIFdITFNMU3RhbmRh
cmRMaWJyYXJ5LmggKi8sCiAJCQkJMUM1MEM0OTUyMkM4NEYyNDAwQTZFNEJFIC8qIFdITFNMU3Rh
bmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwICovLAogCQkJCTUxNzQ4RkEyMUNDNkVFRUIwMDcy
OEQ4NCAvKiBXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwgKi8sCi0JCQkJOTkwOEIw
RjkxQkNBRDA3RDAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovLAotCQkJ
CTlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi8s
CiAJCQkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxz
QnVpbHRpbnMuY3BwICovLAogCQkJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRFOSAvKiBXcml0YWJs
ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8sCiAJCQkJNjU2NTgxRUEwOUQxNTA4RDAwMEU2
MUQ3IC8qIFhMaW5rTmFtZXMuY3BwICovLApAQCAtMjcxMzUsNiArMjcxMzIsOCBAQAogCQkJCTE0
MzJFODQ2MEM1MTQ5MzgwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuaCAqLywKIAkJCQlDNTg1QTY2
MDExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5jcHAgKi8sCiAJCQkJQzU4
NUE2NjExMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuaCAqLywKKwkJCQk0
MTQxOEEwMzI1NjQzRTEyMDAzNjM0MTcgLyogSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5jcHAgKi8s
CisJCQkJNDE0MThBMDQyNTY0M0UxMzAwMzYzNDE3IC8qIEludGVybmFsV3JpdGFibGVTdHJlYW0u
aCAqLywKIAkJCQk5QkQ0RTkxNDFDNDYyODcyMDA1MDY1QkMgLyogSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlLmNwcCAqLywKIAkJCQk5QkQ0RTkxNTFDNDYyODcyMDA1MDY1QkMgLyogSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlLmggKi8sCiAJCQkJN0M1N0JGRTYxRURFMkY1QjAwNTM0QTQ4IC8qIEpT
RE9NQWJzdHJhY3RPcGVyYXRpb25zLmggKi8sCkBAIC0yNzIyOSw4ICsyNzIyOCw2IEBACiAJCQkJ
RTM0MzJERTMyNUQzNzdFMzAwNThFNjEyIC8qIFdvcmtlck1vZHVsZVNjcmlwdExvYWRlci5jcHAg
Ki8sCiAJCQkJRTM0MzJERTAyNUQzNzdFMjAwNThFNjEyIC8qIFdvcmtlck1vZHVsZVNjcmlwdExv
YWRlci5oICovLAogCQkJCUUzNDdFNUY4MjVENEYwMDAwMEYxN0E1QyAvKiBXb3JrZXJTY3JpcHRG
ZXRjaGVyLmggKi8sCi0JCQkJNDE0MThBMDMyNTY0M0UxMjAwMzYzNDE3IC8qIFdyaXRhYmxlU3Ry
ZWFtLmNwcCAqLywKLQkJCQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyogV3JpdGFibGVTdHJl
YW0uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0ganM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtMzU2MTYsNyArMzU2MTMsNyBAQAogCQkJCTgzNEE2QTNBMjUyNjg0NEEwMDc0N0Y1RCAv
KiBXb3JrbGV0UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMzQkQ4MTcyNTI0RDRG
MjAwNkU3MkIzIC8qIFdvcmtsZXRQZW5kaW5nVGFza3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
MzA5RTI0MDk5RTY0OTIwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQu
aCBpbiBIZWFkZXJzICovLAotCQkJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJs
ZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUU2RDcyMzI2RUFBMDQ2MDBC
NzY1RDYgLyogV3JpdGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU4MUJC
RDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5QkFGM0IyNDEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0NzZBQTgxNURDNEJCMTAwMzA1REIyIC8qIFdyaXRp
bmdNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTM2ODY3LDYgKzM2ODY0LDcgQEAKIAkJCQlFMUVF
OEI5MTI0MTMxOTUwMDBFNzk0RDYgLyogV2ViWFJWaWV3cG9ydC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUVFOEI4MzI0MTMxOTFGMDBFNzk0RDYgLyogV2ViWFJXZWJHTExheWVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1QzcwMERBNjNBNiAvKiBXS1V0aWxpdGllcy5j
IGluIFNvdXJjZXMgKi8sCisJCQkJNDFFNkQ3MjQyNkVBQTA0NjAwQjc2NUQ2IC8qIFdyaXRhYmxl
U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDN0NDMEEyQ0YwNzQwMEQ1NzY2NCAv
KiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1
NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTVBMzZEOTExMDQ1NzI3
MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ludGVybmFsV3JpdGFibGVTdHJlYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzBhYTZhZjhkZDEzNmQ1ZDhjYjdkYjdhZjgwYjRiZTdlMzcxNDlmMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ludGVybmFsV3JpdGFibGVTdHJl
YW0uY3BwCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIENBTk9OIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50ZXJu
YWxXcml0YWJsZVN0cmVhbS5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBF
eGNlcHRpb25PcjxKU0M6OkpTVmFsdWU+IGludm9rZVdyaXRhYmxlU3RyZWFtRnVuY3Rpb24oSlND
OjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OklkZW50aWZpZXImIGlk
ZW50aWZpZXIsIGNvbnN0IEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3VtZW50cykKK3sK
KyAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOworICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2sodm0pOworCisgICAgYXV0byBmdW5jdGlvbiA9IGdsb2JhbE9iamVjdC5nZXQoJmds
b2JhbE9iamVjdCwgaWRlbnRpZmllcik7CisgICAgQVNTRVJUKGZ1bmN0aW9uLmlzQ2FsbGFibGUo
dm0pKTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBh
dXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOworCisgICAgYXV0
byByZXN1bHQgPSBjYWxsKCZnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgSlNDOjpq
c1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9y
IH07CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitFeGNlcHRpb25PcjxSZWY8SW50ZXJuYWxX
cml0YWJsZVN0cmVhbT4+IEludGVybmFsV3JpdGFibGVTdHJlYW06OmNyZWF0ZShKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdW5kZXJseWluZ1NpbmssIEpTQzo6
SlNWYWx1ZSBzdHJhdGVneSkKK3sKKyAgICBhdXRvKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPihnbG9iYWxPYmplY3Qudm0oKS5jbGllbnREYXRhKTsKKyAgICBhdXRv
JiBwcml2YXRlTmFtZSA9IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS53cml0YWJsZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zKCkuY3JlYXRlSW50ZXJuYWxXcml0YWJsZVN0cmVhbVByaXZh
dGVOYW1lKCk7CisKKyAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAg
ICBhcmd1bWVudHMuYXBwZW5kKHVuZGVybHlpbmdTaW5rKTsKKyAgICBhcmd1bWVudHMuYXBwZW5k
KHN0cmF0ZWd5KTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOworCisg
ICAgYXV0byByZXN1bHQgPSBpbnZva2VXcml0YWJsZVN0cmVhbUZ1bmN0aW9uKGdsb2JhbE9iamVj
dCwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CisgICAgaWYgKFVOTElLRUxZKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwor
CisgICAgQVNTRVJUKHJlc3VsdC5yZXR1cm5WYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEludGVybmFsV3JpdGFibGVTdHJlYW0oZ2xvYmFsT2JqZWN0LCAqcmVz
dWx0LnJldHVyblZhbHVlKCkudG9PYmplY3QoJmdsb2JhbE9iamVjdCkpKTsKK30KKworYm9vbCBJ
bnRlcm5hbFdyaXRhYmxlU3RyZWFtOjpsb2NrZWQoKSBjb25zdAoreworICAgIGF1dG8qIGdsb2Jh
bE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9T
Q09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworCisgICAgYXV0byogY2xpZW50RGF0YSA9IHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4oZ2xvYmFsT2JqZWN0LT52bSgpLmNsaWVudERhdGEpOwor
ICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLndy
aXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5pc1dyaXRhYmxlU3RyZWFtTG9ja2VkUHJp
dmF0ZU5hbWUoKTsKKworICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwor
ICAgIGFyZ3VtZW50cy5hcHBlbmQoZ3VhcmRlZE9iamVjdCgpKTsKKyAgICBBU1NFUlQoIWFyZ3Vt
ZW50cy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgYXV0byByZXN1bHQgPSBpbnZva2VXcml0YWJs
ZVN0cmVhbUZ1bmN0aW9uKCpnbG9iYWxPYmplY3QsIHByaXZhdGVOYW1lLCBhcmd1bWVudHMpOwor
ICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24o
KTsKKworICAgIHJldHVybiByZXN1bHQuaGFzRXhjZXB0aW9uKCkgPyBmYWxzZSA6IHJlc3VsdC5y
ZXR1cm5WYWx1ZSgpLmlzVHJ1ZSgpOworfQorCit2b2lkIEludGVybmFsV3JpdGFibGVTdHJlYW06
OmxvY2soKQoreworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgp
OworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOworCisgICAgYXV0
byogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4oZ2xvYmFsT2JqZWN0
LT52bSgpLmNsaWVudERhdGEpOworICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+
YnVpbHRpbkZ1bmN0aW9ucygpLndyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5hY3F1
aXJlV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyUHJpdmF0ZU5hbWUoKTsKKworICAgIEpTQzo6
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoZ3Vh
cmRlZE9iamVjdCgpKTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwor
CisgICAgaW52b2tlV3JpdGFibGVTdHJlYW1GdW5jdGlvbigqZ2xvYmFsT2JqZWN0LCBwcml2YXRl
TmFtZSwgYXJndW1lbnRzKTsKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQor
ICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworfQorCitKU0M6OkpTVmFsdWUgSW50ZXJu
YWxXcml0YWJsZVN0cmVhbTo6YWJvcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcmVhc29uKQoreworICAgIGF1dG8qIGNsaWVudERhdGEgPSBzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KGdsb2JhbE9iamVjdC52bSgpLmNsaWVudERhdGEpOworICAg
IGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLndyaXRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS53cml0YWJsZVN0cmVhbUFib3J0Rm9yQmluZGlu
Z3NQcml2YXRlTmFtZSgpOworCisgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVu
dHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChndWFyZGVkT2JqZWN0KCkpOworICAgIGFyZ3VtZW50
cy5hcHBlbmQocmVhc29uKTsKKyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkp
OworCisgICAgYXV0byByZXN1bHQgPSBpbnZva2VXcml0YWJsZVN0cmVhbUZ1bmN0aW9uKGdsb2Jh
bE9iamVjdCwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiByZXN1bHQucmV0dXJu
VmFsdWUoKTsKK30KKworSlNDOjpKU1ZhbHVlIEludGVybmFsV3JpdGFibGVTdHJlYW06OmNsb3Nl
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBhdXRvKiBjbGllbnRE
YXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihnbG9iYWxPYmplY3Qudm0oKS5jbGll
bnREYXRhKTsKKyAgICBhdXRvJiBwcml2YXRlTmFtZSA9IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS53cml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zKCkud3JpdGFibGVTdHJlYW1D
bG9zZUZvckJpbmRpbmdzUHJpdmF0ZU5hbWUoKTsKKworICAgIEpTQzo6TWFya2VkQXJndW1lbnRC
dWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoZ3VhcmRlZE9iamVjdCgpKTsK
KyAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgYXV0byByZXN1
bHQgPSBpbnZva2VXcml0YWJsZVN0cmVhbUZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgcHJpdmF0ZU5h
bWUsIGFyZ3VtZW50cyk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIHJldHVybiByZXN1bHQucmV0dXJuVmFsdWUoKTsKK30KKworSlND
OjpKU1ZhbHVlIEludGVybmFsV3JpdGFibGVTdHJlYW06OmdldFdyaXRlcihKU0M6OkpTR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgYXV0byogY2xpZW50RGF0YSA9IHN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4oZ2xvYmFsT2JqZWN0LnZtKCkuY2xpZW50RGF0YSk7CisgICAg
YXV0byYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkud3JpdGFi
bGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLmFjcXVpcmVXcml0YWJsZVN0cmVhbURlZmF1bHRX
cml0ZXJQcml2YXRlTmFtZSgpOworCisgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChndWFyZGVkT2JqZWN0KCkpOworICAgIEFTU0VS
VCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IGludm9r
ZVdyaXRhYmxlU3RyZWFtRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBwcml2YXRlTmFtZSwgYXJndW1l
bnRzKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgcmV0dXJuIHJlc3VsdC5yZXR1cm5WYWx1ZSgpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTBhYWEyNzNlNjZjYmUxNjdhMzkzYjcxZDIwYjY4MjFhYmY1NmVlNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ludGVybmFsV3JpdGFibGVTdHJl
YW0uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIENBTk9OIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CisjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNPYmplY3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50ZXJuYWxXcml0
YWJsZVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBET01HdWFyZGVkPEpTQzo6SlNPYmplY3Q+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEludGVybmFsV3JpdGFibGVTdHJlYW0+
PiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUgdW5kZXJseWluZ1Npbmss
IEpTQzo6SlNWYWx1ZSBzdHJhdGVneSk7CisKKyAgICBvcGVyYXRvciBKU0M6OkpTVmFsdWUoKSBj
b25zdCB7IHJldHVybiBndWFyZGVkKCk7IH0KKworICAgIGJvb2wgbG9ja2VkKCkgY29uc3Q7Cisg
ICAgdm9pZCBsb2NrKCk7CisgICAgSlNDOjpKU1ZhbHVlIGFib3J0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBKU0M6OkpTVmFsdWUpOworICAgIEpTQzo6SlNWYWx1ZSBjbG9zZShKU0M6OkpTR2xvYmFs
T2JqZWN0Jik7CisgICAgSlNDOjpKU1ZhbHVlIGdldFdyaXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0
Jik7CisKK3ByaXZhdGU6CisgICAgSW50ZXJuYWxXcml0YWJsZVN0cmVhbShKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0JiBqc09iamVjdCkKKyAgICAgICAgOiBE
T01HdWFyZGVkPEpTQzo6SlNPYmplY3Q+KGdsb2JhbE9iamVjdCwganNPYmplY3QpCisgICAgewor
ICAgIH0KK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmNwcAppbmRleCA5MTZkMzNkOWRlNzRmMjIxM2RiZTMzNDNlZmYzZDAyYTNhYzM1
M2NkLi5hMDA3NDMxNDJkOGMwMDA0ODY0OTRkZjQ4NTAwMGNiMDM4Y2RmYmY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00Niw2
ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNSZW1vdGVET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU1dv
cmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNp
bmNsdWRlICJKU1dyaXRhYmxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJh
Y2tlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJT
Y3JpcHRNb2R1bGVMb2FkZXIuaCIKQEAgLTcxLDYgKzcyLDcgQEAgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihtYWtlVGhpc1R5cGVFcnJvckZvckJ1aWx0aW5zKTsKIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04obWFrZUdldHRlclR5cGVFcnJvckZvckJ1aWx0aW5zKTsKIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04obWFrZURPTUV4Y2VwdGlvbkZvckJ1aWx0aW5zKTsKIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oaXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKTsKK0pTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oZ2V0SW50ZXJuYWxXcml0YWJsZVN0cmVhbSk7CiBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGlzV3JpdGFibGVTdHJlYW1BUElFbmFibGVkKTsKIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04od2hlblNpZ25hbEFib3J0ZWQpOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tihpc0Fib3J0U2lnbmFsKTsKQEAgLTE2Myw2ICsxNjUsMTggQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGlzV3JpdGFibGVTdHJlYW1BUElFbmFibGVkLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndyaXRhYmxlU3RyZWFtQVBJRW5hYmxlZCgpKSk7
CiB9CiAKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFt
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQor
eworICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAgIEFTU0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSA9PSAxKTsKKworICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8qIHdyaXRhYmxlU3RyZWFtID0ganNEeW5hbWljQ2FzdDxKU1dyaXRhYmxlU3RyZWFtKj4o
dm0sIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIGlmIChVTkxJS0VMWSgh
d3JpdGFibGVTdHJlYW0pKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUod3JpdGFibGVTdHJlYW0tPndyYXBw
ZWQoKS5pbnRlcm5hbFdyaXRhYmxlU3RyZWFtKCkpOworfQorCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04od2hlblNpZ25hbEFib3J0ZWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgQVNTRVJUKGNhbGxGcmFtZSk7CkBAIC0yMTQs
NiArMjI4LDcgQEAgU1VQUFJFU1NfQVNBTiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjphZGRCdWls
dGluR2xvYmFscyhWTSYgdm0pCiAgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9w
ZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5yZWFkYWJsZUJ5dGVTdHJlYW1BUElF
bmFibGVkUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgaXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogICAgICAgICBKU0RP
TUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5hbWVz
KCkud3JpdGFibGVTdHJlYW1BUElFbmFibGVkUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgaXNXcml0YWJsZVN0cmVhbUFQSUVuYWJsZWQpLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCiAgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50
RGF0YS5idWlsdGluTmFtZXMoKS5pc0Fib3J0U2lnbmFsUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgaXNBYm9ydFNpZ25hbCksIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAg
ICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhjbGllbnREYXRhLmJ1
aWx0aW5OYW1lcygpLmdldEludGVybmFsV3JpdGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBnZXRJbnRlcm5hbFdyaXRhYmxl
U3RyZWFtKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxz
LCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCBkNGQxMzI0MjkyOTdj
OGEyMjc5OGI5ZmQ5ZDU3ZDRhN2U0MWRlMWZhLi41Yjk0MzFlYzdlNDNiZTVmMDI2ZjZlOGJhMzhh
MmFhMTM3NjYwZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUJ1aWx0aW5OYW1lcy5oCkBAIC0zNDgsNiArMzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIG1hY3JvKGZsdXNoQWxnb3JpdGhtKSBcCiAgICAgbWFjcm8oZm9jdXMpIFwKICAgICBtYWNy
byhmcmFtZXMpIFwKKyAgICBtYWNybyhnZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFtKSBcCiAgICAg
bWFjcm8oZ2V0VHJhY2tzKSBcCiAgICAgbWFjcm8oZ2V0VXNlck1lZGlhKSBcCiAgICAgbWFjcm8o
Z3B1KSBcCkBAIC0zNTksNiArMzYwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3Jv
KGluRmxpZ2h0V3JpdGVSZXF1ZXN0KSBcCiAgICAgbWFjcm8oaW5kZXhlZERCKSBcCiAgICAgbWFj
cm8oaW5pdGlhbGl6ZVdpdGgpIFwKKyAgICBtYWNybyhpbnRlcm5hbFN0cmVhbSkgXAorICAgIG1h
Y3JvKGludGVybmFsV3JpdGFibGUpIFwKICAgICBtYWNybyhpc0Fib3J0U2lnbmFsKSBcCiAgICAg
bWFjcm8oaXNEaXN0dXJiZWQpIFwKICAgICBtYWNybyhpc0xvYWRpbmcpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYmZhOWMzNzIxZDNmYzRiMTk1NTU0MWViMTRlZDcxOWQ3MjczM2ZkMS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIENBTk9OIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldyaXRhYmxlU3RyZWFtLmgiCi0KLSNp
bmNsdWRlICJFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVk
ZSAiSlNET01Db252ZXJ0U2VxdWVuY2VzLmgiCi0jaW5jbHVkZSAiSlNXcml0YWJsZVN0cmVhbVNp
bmsuaCIKLSNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdyaXRhYmxlU3RyZWFt
SW50ZXJuYWwgewotc3RhdGljIGlubGluZSBKU0M6OkpTVmFsdWUgY2FsbEZ1bmN0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBqc0Z1bmN0
aW9uLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3VtZW50
cykKLXsKLSAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7Ci0gICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6
OmdldENhbGxEYXRhKHZtLCBqc0Z1bmN0aW9uKTsKLSAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAh
PSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOb25lKTsKLSAgICBhdXRvIHJlc3VsdCA9IGNhbGwoJmxl
eGljYWxHbG9iYWxPYmplY3QsIGpzRnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3Vt
ZW50cyk7Ci0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja1dyaXRh
YmxlU3RyZWFtKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTV3JpdGFibGVTdHJl
YW0qIHdyaXRhYmxlU3RyZWFtLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24pCi17Ci0gICAgYXV0byYg
bGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKLQotICAgIEFTU0VSVChmdW5jdGlv
bik7Ci0gICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJndW1l
bnRzLmFwcGVuZCh3cml0YWJsZVN0cmVhbSk7Ci0gICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3Zl
cmZsb3dlZCgpKTsKLSAgICByZXR1cm4gV3JpdGFibGVTdHJlYW1JbnRlcm5hbDo6Y2FsbEZ1bmN0
aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBKU0M6OmpzVW5kZWZpbmVkKCksIGFy
Z3VtZW50cykuaXNUcnVlKCk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZjxXcml0YWJsZVN0cmVhbT4+
IFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUmVmUHRyPFdyaXRhYmxlU3RyZWFtU2luaz4mJiBzaW5rKQotewotICAgIFZNJiB2
bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0KLSAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Ci0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0g
KkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpOwot
Ci0gICAgYXV0byogY29uc3RydWN0b3IgPSBKU0M6OmFzT2JqZWN0KGdsb2JhbE9iamVjdC5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuV3JpdGFibGVT
dHJlYW1Qcml2YXRlTmFtZSgpKSk7Ci0KLSAgICBhdXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25z
dHJ1Y3REYXRhKHZtLCBjb25zdHJ1Y3Rvcik7Ci0gICAgQVNTRVJUKGNvbnN0cnVjdERhdGEudHlw
ZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7Ci0KLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOwotICAgIGFyZ3MuYXBwZW5kKHNpbmsgPyB0b0pTTmV3bHlDcmVhdGVkKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBzaW5rLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpq
c1VuZGVmaW5lZCgpKTsKLSAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKLQotICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
Y29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOwotICAgIEFTU0VSVCghIXNjb3BlLmV4
Y2VwdGlvbigpID09ICFvYmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4
Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0KLSAgICByZXR1cm4gY3JlYXRl
KGdsb2JhbE9iamVjdCwgKmpzQ2FzdDxKU1dyaXRhYmxlU3RyZWFtKj4ob2JqZWN0KSk7Ci19Ci0K
LXZvaWQgV3JpdGFibGVTdHJlYW06OmxvY2soKQotewotICAgIGF1dG8mIGxleGljYWxHbG9iYWxP
YmplY3QgPSAqbV9nbG9iYWxPYmplY3Q7Ci0gICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVj
dC52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLQotICAg
IGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKTsKLQotICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gSlNDOjphc09iamVjdChtX2dsb2Jh
bE9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjbGllbnREYXRhLmJ1aWx0aW5OYW1l
cygpLldyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlclByaXZhdGVOYW1lKCkpKTsKLQotICAgIGF1
dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEodm0sIGNvbnN0cnVjdG9yKTsKLSAg
ICBBU1NFUlQoY29uc3RydWN0RGF0YS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lKTsKLQot
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQod3JpdGFibGVT
dHJlYW0oKSk7Ci0gICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7Ci0KLSAgICBKU0M6
OmNvbnN0cnVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIGNvbnN0cnVjdERh
dGEsIGFyZ3MpOwotICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uRXhjZXB0VGVybWluYXRpb24o
KTsKLX0KLQotYm9vbCBXcml0YWJsZVN0cmVhbTo6aXNMb2NrZWQoKSBjb25zdAotewotICAgIHJl
dHVybiBjaGVja1dyaXRhYmxlU3RyZWFtKCpnbG9iYWxPYmplY3QoKSwgd3JpdGFibGVTdHJlYW0o
KSwgZ2xvYmFsT2JqZWN0KCktPmJ1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucygpLndyaXRhYmxlU3Ry
ZWFtSW50ZXJuYWxzKCkubV9pc1dyaXRhYmxlU3RyZWFtTG9ja2VkRnVuY3Rpb24uZ2V0KCkpOwot
fQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0
cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUxOGE5NDU5NzcyNGUxZDcwMTAxYTY3YmNkYjhl
ZjM5OTYxZmFkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5oCisrKyAvZGV2L251
bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBDQU5PTiBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
Q0FOT04gSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKLSNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKLSNpbmNsdWRl
ICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKLSNpbmNsdWRlICJKU1dyaXRhYmxlU3RyZWFtLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV3JpdGFibGVTdHJlYW1TaW5rOwotCi1jbGFz
cyBXcml0YWJsZVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBET01HdWFyZGVkPEpTV3JpdGFibGVTdHJl
YW0+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdyaXRhYmxlU3RyZWFtPiBjcmVhdGUoSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNXcml0YWJsZVN0cmVhbSYganNTdHJlYW0p
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV3JpdGFibGVTdHJlYW0oZ2xvYmFsT2JqZWN0LCBqc1N0
cmVhbSkpOyB9Ci0KLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4g
Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8V3JpdGFibGVTdHJlYW1TaW5rPiYm
KTsKLSAgICBKU1dyaXRhYmxlU3RyZWFtKiB3cml0YWJsZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJu
IGd1YXJkZWQoKTsgfQotCi0gICAgdm9pZCBsb2NrKCk7Ci0gICAgYm9vbCBpc0xvY2tlZCgpIGNv
bnN0OwotCi1wcml2YXRlOgotICAgIFdyaXRhYmxlU3RyZWFtKEpTRE9NR2xvYmFsT2JqZWN0Jiwg
SlNXcml0YWJsZVN0cmVhbSYpOwotfTsKLQotc3RydWN0IEpTV3JpdGFibGVTdHJlYW1XcmFwcGVy
Q29udmVydGVyIHsKLSAgICBzdGF0aWMgUmVmUHRyPFdyaXRhYmxlU3RyZWFtPiB0b1dyYXBwZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZh
bHVlKQotICAgIHsKLSAgICAgICAgSlNDOjpWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKLSAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0R5bmFtaWND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAg
ICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
ICAgICBhdXRvKiBXcml0YWJsZVN0cmVhbSA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU1dyaXRhYmxl
U3RyZWFtKj4odm0sIHZhbHVlKTsKLSAgICAgICAgaWYgKCFXcml0YWJsZVN0cmVhbSkKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHJldHVybiBXcml0YWJsZVN0cmVhbTo6
Y3JlYXRlKCpnbG9iYWxPYmplY3QsICpXcml0YWJsZVN0cmVhbSk7Ci0gICAgfQotfTsKLQotdGVt
cGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdyaXRhYmxlU3RyZWFt
PiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNXcml0YWJsZVN0cmVhbVdyYXBwZXJDb252
ZXJ0ZXI7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFJlZlB0cjxXcml0YWJsZVN0
cmVhbT47Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSB0cnVlOwotfTsK
LQotaW5saW5lIFdyaXRhYmxlU3RyZWFtOjpXcml0YWJsZVN0cmVhbShKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBKU1dyaXRhYmxlU3RyZWFtJiBXcml0YWJsZVN0cmVhbSkKLSAgICA6
IERPTUd1YXJkZWQ8SlNXcml0YWJsZVN0cmVhbT4oZ2xvYmFsT2JqZWN0LCBXcml0YWJsZVN0cmVh
bSkKLXsKLX0KLQotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgV3JpdGFibGVTdHJlYW0qIHN0cmVhbSkKLXsKLSAgICBy
ZXR1cm4gc3RyZWFtID8gc3RyZWFtLT53cml0YWJsZVN0cmVhbSgpIDogSlNDOjpqc1VuZGVmaW5l
ZCgpOwotfQotCi1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBXcml0YWJsZVN0cmVhbSYgc3RyZWFtKQotewotICAgIHJl
dHVybiBzdHJlYW0ud3JpdGFibGVTdHJlYW0oKTsKLX0KLQotaW5saW5lIEpTQzo6SlNWYWx1ZSB0
b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCos
IFJlZjxXcml0YWJsZVN0cmVhbT4mJiBzdHJlYW0pCi17Ci0gICAgcmV0dXJuIHN0cmVhbS0+d3Jp
dGFibGVTdHJlYW0oKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAxZjI0ZjFlYjAxMGIzYzU0YjczNDU0YTU2
ZjIwOTNiM2U1NzA3YzUzLi5jMzFhOTYxZGQ1YWMyY2IzNzQ3ZWNjZDg0Y2U3YWY3MzUxNjlhOGRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtNjI3LDExICs2MjcsNiBAQCBzdWIgQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICgkdHlwZS0+bmFtZSBlcSAiV3JpdGFi
bGVTdHJlYW0iKSB7Ci0gICAgICAgIEFkZFRvSW5jbHVkZXMoIldyaXRhYmxlU3RyZWFtLmgiLCAk
aW5jbHVkZXNSZWYsICRjb25kaXRpb25hbCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAg
ICBpZiAoJHR5cGUtPm5hbWUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKICAgICAgICAgQWRkVG9J
bmNsdWRlcygiSlNYUGF0aE5TUmVzb2x2ZXIuaCIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFs
KTsKICAgICAgICAgQWRkVG9JbmNsdWRlcygiSlNET01Db252ZXJ0WFBhdGhOU1Jlc29sdmVyLmgi
LCAkaW5jbHVkZXNSZWYsICRjb25kaXRpb25hbCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwppbmRleCA4Y2QzNzEzNzMxMTVkNDExY2Y1ZDdlNDdkYTRhMTNmMzdhNWUwYWM1Li44NWVkOWI1
NDUxNzU1NjU5ZDc5YzNiYWI1YzgxZTBjMzFlODMyNTVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wOS0xMCAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdG8gc3ViY2xhc3MgV3JpdGFibGVTdHJl
YW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDE0
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnktZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFi
bGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhw
ZWN0ZWQudHh0OgorCiAyMDIxLTA5LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgRm9udEZhY2VTZXQubG9hZCgpIG5lZWRzIHRvIHJlYWN0IHRv
IHN0eWxlIGNoYW5nZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFueS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVz
cy5hbnktZXhwZWN0ZWQudHh0CmluZGV4IDkzZmFkMTNlYjYzYWI4NzNlZGQzZmQ2NmRmZTNhYTA1
ZWI2NDIwMzEuLjk5MmI5ZTBlZDg0MjdjZjE0ZjQ5ODNjMjRhYTc0MWMzYzQxZDA2YjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9pZGxoYXJuZXNzLmFueS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55LWV4cGVjdGVkLnR4
dApAQCAtMTI4LDcgKzEyOCw3IEBAIFBBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBleGlz
dGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvCiBQQVNTIFdyaXRh
YmxlU3RyZWFtIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFj
ZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eQogUEFTUyBXcml0YWJs
ZVN0cmVhbSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ug
cHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkKIFBBU1MgV3JpdGFibGVT
dHJlYW0gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbG9ja2VkCi1GQUlMIFdyaXRhYmxlU3RyZWFtIGlu
dGVyZmFjZTogb3BlcmF0aW9uIGFib3J0KG9wdGlvbmFsIGFueSkgYXNzZXJ0X2VxdWFsczogcHJv
cGVydHkgaGFzIHdyb25nIC5sZW5ndGggZXhwZWN0ZWQgMCBidXQgZ290IDEKK1BBU1MgV3JpdGFi
bGVTdHJlYW0gaW50ZXJmYWNlOiBvcGVyYXRpb24gYWJvcnQob3B0aW9uYWwgYW55KQogUEFTUyBX
cml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjbG9zZSgpCiBQQVNTIFdyaXRhYmxl
U3RyZWFtIGludGVyZmFjZTogb3BlcmF0aW9uIGdldFdyaXRlcigpCiBQQVNTIFdyaXRhYmxlU3Ry
ZWFtIG11c3QgYmUgcHJpbWFyeSBpbnRlcmZhY2Ugb2YgbmV3IFdyaXRhYmxlU3RyZWFtKCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9pZGxoYXJuZXNzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQKaW5kZXggOTNmYWQxM2ViNjNhYjg3M2VkZDNmZDY2ZGZlM2FhMDVlYjY0
MjAzMS4uOTkyYjllMGVkODQyN2NmMTRmNDk4M2MyNGFhNzQxYzNjNDFkMDZiNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lk
bGhhcm5lc3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQKQEAgLTEyOCw3ICsxMjgsNyBAQCBQQVNTIFdyaXRhYmxlU3RyZWFtIGludGVy
ZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgbwog
UEFTUyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBv
ZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkKIFBB
U1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2Yg
aW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFibGVzIHByb3BlcnR5CiBQQVNT
IFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogYXR0cmlidXRlIGxvY2tlZAotRkFJTCBXcml0YWJs
ZVN0cmVhbSBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhYm9ydChvcHRpb25hbCBhbnkpIGFzc2VydF9l
cXVhbHM6IHByb3BlcnR5IGhhcyB3cm9uZyAubGVuZ3RoIGV4cGVjdGVkIDAgYnV0IGdvdCAxCitQ
QVNTIFdyaXRhYmxlU3RyZWFtIGludGVyZmFjZTogb3BlcmF0aW9uIGFib3J0KG9wdGlvbmFsIGFu
eSkKIFBBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBvcGVyYXRpb24gY2xvc2UoKQogUEFT
UyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IG9wZXJhdGlvbiBnZXRXcml0ZXIoKQogUEFTUyBX
cml0YWJsZVN0cmVhbSBtdXN0IGJlIHByaW1hcnkgaW50ZXJmYWNlIG9mIG5ldyBXcml0YWJsZVN0
cmVhbSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3Jp
dGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQKaW5kZXggMjlmN2IyMWI3YTk1
NGZmNTYyMjIxNTA0YzA4YWFjNDg2MmVjZmUwZi4uNTMxMzVkMmYyYjE0ZmM1ZmI3ZDRhMDE0Yjg5
ZDJjZGIyMTQwMDM3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnktZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dApAQCAtMTMs
NiArMTMsNiBAQCBQQVNTIG1ldGhvZHMgc2hvdWxkIG5vdCBub3QgaGF2ZSAuYXBwbHkoKSBvciAu
Y2FsbCgpIGNhbGxlZAogUEFTUyBXcml0YWJsZVN0cmVhbSdzIHN0cmF0ZWd5LnNpemUgc2hvdWxk
IG5vdCBiZSBjYWxsZWQgYXMgYSBtZXRob2QKIFBBU1MgcmVkdW5kYW50IHJlbGVhc2VMb2NrKCkg
aXMgbm8tb3AKIFBBU1MgcmVhZHkgcHJvbWlzZSBzaG91bGQgZmlyZSBiZWZvcmUgY2xvc2VkIG9u
IHJlbGVhc2VMb2NrCi1GQUlMIFN1YmNsYXNzaW5nIFdyaXRhYmxlU3RyZWFtIHNob3VsZCB3b3Jr
IGFzc2VydF90cnVlOiBTdWJjbGFzcyBvYmplY3Qgc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIFN1
YmNsYXNzIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTIFN1YmNsYXNzaW5nIFdyaXRhYmxl
U3RyZWFtIHNob3VsZCB3b3JrCiBQQVNTIHRoZSBsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4g
dHJ1ZSBpZiB0aGUgc3RyZWFtIGhhcyBhIHdyaXRlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFt
cy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCAyOWY3YjIxYjdhOTU0ZmY1NjIyMjE1MDRjMDhh
YWM0ODYyZWNmZTBmLi41MzEzNWQyZjJiMTRmYzVmYjdkNGEwMTRiODlkMmNkYjIxNDAwMzdhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEzLDYg
KzEzLDYgQEAgUEFTUyBtZXRob2RzIHNob3VsZCBub3Qgbm90IGhhdmUgLmFwcGx5KCkgb3IgLmNh
bGwoKSBjYWxsZWQKIFBBU1MgV3JpdGFibGVTdHJlYW0ncyBzdHJhdGVneS5zaXplIHNob3VsZCBu
b3QgYmUgY2FsbGVkIGFzIGEgbWV0aG9kCiBQQVNTIHJlZHVuZGFudCByZWxlYXNlTG9jaygpIGlz
IG5vLW9wCiBQQVNTIHJlYWR5IHByb21pc2Ugc2hvdWxkIGZpcmUgYmVmb3JlIGNsb3NlZCBvbiBy
ZWxlYXNlTG9jawotRkFJTCBTdWJjbGFzc2luZyBXcml0YWJsZVN0cmVhbSBzaG91bGQgd29yayBh
c3NlcnRfdHJ1ZTogU3ViY2xhc3Mgb2JqZWN0IHNob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBTdWJj
bGFzcyBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBTdWJjbGFzc2luZyBXcml0YWJsZVN0
cmVhbSBzaG91bGQgd29yawogUEFTUyB0aGUgbG9ja2VkIGdldHRlciBzaG91bGQgcmV0dXJuIHRy
dWUgaWYgdGhlIHN0cmVhbSBoYXMgYSB3cml0ZXIKIAo=
</data>
<flag name="commit-queue"
          id="461133"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437865</attachid>
            <date>2021-09-10 07:11:40 -0700</date>
            <delta_ts>2021-09-10 10:22:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230146-20210910161138.patch</filename>
            <type>text/plain</type>
            <size>78457</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYyZjlmOTVjMjYwYTM4
YTUyNmY2MWE4NDk3ODdiZTk2OGNiOTVlNi4uNzg0NDM0NTQ4YzYxMmZmZDJjMzc0NDliYjRlZDIy
ZjM3NzdmYzBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIxLTA5LTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0byBzdWJjbGFz
cyBXcml0YWJsZVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMwMTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW50cm9kdWNlIGEgV2ViSURMLWJhc2VkIFdyaXRhYmxlU3RyZWFtIEMrKyBjbGFz
cy4KKyAgICAgICAgVG8ga2VlcCB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24sIHRoZSBwcmV2
aW91cyBKUyBXcml0YWJsZVN0cmVhbSBpbXBsZW1lbnRhdGlvbiBpcyB3cmFwcGVkIGFyb3VuZCBh
biBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtIEMrKyBjbGFzcworICAgICAgICB3aGljaCBpcyBhIHdy
YXBwZXIgYXJvdW5kIEpTLWJ1aWx0aW5zIG1hbmlwdWxhdGVkIG9iamVjdHMuCisgICAgICAgIElu
dGVybmFsV3JpdGFibGVTdHJlYW0gaXMgbWFkZSBET01HdWFyZGVkIHRvIGVuYWJsZSB0byBrZWVw
IGEgcmVmIHRvIHRoZSBKUyBvYmplY3QgZnJvbSBXcml0YWJsZVN0cmVhbS4KKworICAgICAgICBV
cGRhdGUgSlMgYnVpbHQtaW4gY29kZSB0byBtYW5hZ2UgaG9wcGluZyB0byB0aGUgSW50ZXJuYWxX
cml0YWJsZVN0cmVhbSBKUyBvYmplY3QgZnJvbSB0aGUgZXhwb3NlZCBXcml0YWJsZVN0cmVhbSBK
UyBvYmplY3QuCisgICAgICAgIFdlIGludHJvZHVjZSBnZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFt
IHJvdXRpbmUgZm9yIHRoYXQgcHVycG9zZS4KKworICAgICAgICBUcmFuc2l0aW9uIGV4aXN0aW5n
IFdyaXRhYmxlU3RyZWFtIHVzZXJzIHRvIHRoZSBuZXcgQysrIGNsYXNzLgorICAgICAgICBNaW5v
ciBjb2RlIGdlbmVyYXRvciBjaGFuZ2UgdG8gbWFrZSB1c2Ugb2YgdGhlIG5vdyBhdmFpbGFibGUg
SlNXcml0YWJsZVN0cmVhbS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGFuZCByZWJh
c2VkIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aXNBdHRhY2hlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmNyZWF0ZVN0cmVhbXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpyZWFkYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OndyaXRhYmxlKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oOgorICAgICAgICAqIE1v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qczoKKyAgICAgICAgKHBpcGVUaHJvdWdoKToK
KyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzLmpzOgor
ICAgICAgICAoaW5pdGlhbGl6ZVRyYW5zZm9ybVN0cmVhbSk6CisgICAgICAgICh0cmFuc2Zvcm1T
dHJlYW1FcnJvcldyaXRhYmxlQW5kVW5ibG9ja1dyaXRlKToKKyAgICAgICAgKHRyYW5zZm9ybVN0
cmVhbURlZmF1bHRTaW5rV3JpdGVBbGdvcml0aG0pOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFt
cy9Xcml0YWJsZVN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVT
dHJlYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXcml0YWJsZVN0cmVhbTo6V3JpdGFi
bGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNXcml0YWJsZVN0cmVhbTo6YWJvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXcml0YWJsZVN0cmVhbTo6Y2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXcml0YWJsZVN0cmVhbTo6Z2V0V3JpdGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3N0
cmVhbXMvV3JpdGFibGVTdHJlYW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXcml0YWJs
ZVN0cmVhbTo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXcml0YWJsZVN0cmVhbTo6bG9ja2Vk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldyaXRhYmxlU3RyZWFtOjppbnRlcm5hbFdyaXRh
YmxlU3RyZWFtKToKKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5p
ZGw6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIu
anM6CisgICAgICAgIChpbml0aWFsaXplV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAg
ICAgIChpbml0aWFsaXplV3JpdGFibGVTdHJlYW1TbG90cyk6CisgICAgICAgICh3cml0YWJsZVN0
cmVhbUNsb3NlRm9yQmluZGluZ3MpOgorICAgICAgICAod3JpdGFibGVTdHJlYW1BYm9ydEZvckJp
bmRpbmdzKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSW50ZXJuYWxXcml0
YWJsZVN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52b2tlV3JpdGFibGVT
dHJlYW1GdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFdyaXRhYmxlU3RyZWFt
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6bG9j
a2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsV3JpdGFibGVTdHJlYW06Omxv
Y2spOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6YWJvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6Z2V0V3JpdGVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9JbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmg6IEFkZGVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9i
amVjdDo6YWRkQnVpbHRpbkdsb2JhbHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVC
dWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAg
ICAgKEFkZFRvSW5jbHVkZXNGb3JJRExUeXBlKToKKwogMjAyMS0wOS0xMCAgUm9iIEJ1aXMgIDxy
YnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBhc3BlY3QtcmF0aW8taW50cmluc2ljLXNp
emUtMDA0Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDAxYTA5YmZjOGRjNjI0NTc5N2E5
NDI3MTg5MmIzMGI1MTQxZTczNy4uN2VkNjdmYzIzOWFjYjJjZTA3ZDhhNWQzOGJiNWNkNDg2Mjlm
MGE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwNTgsNyArMjA1OCw2IEBAIHNldChXZWJD
b3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMv
VHJhbnNmb3JtU3RyZWFtLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1Ry
YW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9k
dWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbUludGVybmFscy5qcwotICAgICR7V0VCQ09SRV9E
SVJ9L01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcwogICAgICR7V0VCQ09SRV9ESVJ9
L01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzCiAgICAg
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRl
ci5qcwogICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUlu
dGVybmFscy5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QKaW5kZXggNzAzMjcwNmMzZDhiYmJiNDgzMTQ5ODZmMjZiMmQwNzU2YjQwNGZkOC4uZGU3
OGZhNTUwMGNmZWFkMTI4NDlhOGNkNDYyN2Q2M2FiODEyY2U1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC00NTAsNyArNDUwLDYgQEAg
JChQUk9KRUNUX0RJUikvTW9kdWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250
cm9sbGVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVh
bURlZmF1bHRDb250cm9sbGVyLmpzCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3N0cmVhbXMvVHJh
bnNmb3JtU3RyZWFtSW50ZXJuYWxzLmpzCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3N0cmVhbXMv
V3JpdGFibGVTdHJlYW0uaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFi
bGVTdHJlYW0uanMKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9zdHJlYW1zL1dy
aXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
c3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIuaWRsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGQ2ZGI1MGNlOTk0ZTFh
MTJkMDFlNzVlYTBjYTIwZDliY2NhYTgxNDEuLjc0M2Y1MGVlMGFlZjQxZTZhZWEyNDhmZGJjZDJh
ZjliNzBlZjA5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CkBAIC0yNjQzLDcgKzI2NDMsNiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJLaXRGb250RmFtaWx5TmFt
ZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9Xb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCi0kKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Xcml0YWJsZVN0cmVhbUJ1
aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dy
aXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXJC
dWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9X
cml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IDUwODJkN2U3M2FhNWFjY2I5MDdkYmE0OWVmY2QzN2YwNjcwMzNjNTcuLjUzNGU5
YzdkZDRmNDU4NTNiNjUxNzRiNzYzMTA5OGYwN2I2NjY2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMTk1Miw3ICsxOTUyLDYgQEAgV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VT
ID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbS5qcyBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvVHJhbnNmb3JtU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIuanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0
cmVhbUludGVybmFscy5qcyBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFi
bGVTdHJlYW0uanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1z
L1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5qcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0u
Y3BwCmluZGV4IGM1YmI3ZDk3Njc1M2MxZDY5OGZlYmQxYTk1OWM1MDViMmE5ZDMzM2EuLjFiZWM3
YzMxNWJlNWMwNzUwMzIwMGIwNWQ5NTNjZTIxODliMTg3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCdWZmZXJTb3Vy
Y2UuaCIKICNpbmNsdWRlICJKU1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmgiCiAjaW5jbHVkZSAiSlNS
VENFbmNvZGVkVmlkZW9GcmFtZS5oIgorI2luY2x1ZGUgIkpTV3JpdGFibGVTdHJlYW1TaW5rLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJUQ0VuY29kZWRBdWRpb0ZyYW1lLmgi
CiAjaW5jbHVkZSAiUlRDRW5jb2RlZFZpZGVvRnJhbWUuaCIKQEAgLTQzLDcgKzQ0LDYgQEAKICNp
bmNsdWRlICJSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgIldyaXRhYmxlU3RyZWFtLmgiCi0jaW5jbHVkZSAiV3JpdGFibGVTdHJlYW1T
aW5rLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtOTgsNyArOTgsNyBAQCB1aW50NjRfdCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06
OmtleUlkRm9yVGVzdGluZygpIGNvbnN0CiAKIGJvb2wgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpp
c0F0dGFjaGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pc0F0dGFjaGVkIHx8IChtX3JlYWRh
YmxlICYmIG1fcmVhZGFibGUtPmlzTG9ja2VkKCkpIHx8IChtX3dyaXRhYmxlICYmIG1fd3JpdGFi
bGUtPmlzTG9ja2VkKCkpOworICAgIHJldHVybiBtX2lzQXR0YWNoZWQgfHwgKG1fcmVhZGFibGUg
JiYgbV9yZWFkYWJsZS0+aXNMb2NrZWQoKSkgfHwgKG1fd3JpdGFibGUgJiYgbV93cml0YWJsZS0+
bG9ja2VkKCkpOwogfQogCiBzdGF0aWMgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudDo6
VHlwZSBlcnJvclR5cGVGcm9tSW5mb3JtYXRpb24oY29uc3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OkVycm9ySW5mb3JtYXRpb24mIGVycm9ySW5mb3JtYXRpb24pCkBAIC0yMDgsMTQgKzIwOCwx
OCBAQCB2b2lkIHRyYW5zZm9ybUZyYW1lKEZyYW1lJiBmcmFtZSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgUlRDUnRwU0ZyYW1lVAogICAgIHNvdXJjZS5lbnF1ZXVlKHRvSlMoJmds
b2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgZnJhbWUpKTsKIH0KIAotdm9pZCBSVENSdHBTRnJh
bWVUcmFuc2Zvcm06OmNyZWF0ZVN0cmVhbXMoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQorRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJl
YW1zKCkKIHsKKyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgPyBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpIDogbnVsbHB0cjsK
KyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CisKICAgICBtX3JlYWRhYmxlU3RyZWFtU291cmNlID0gU2ltcGxlUmVh
ZGFibGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZSgpOwotICAgIGF1dG8gcmVhZGFibGUgPSBSZWFkYWJs
ZVN0cmVhbTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS5jb3B5
UmVmKCkpOworICAgIGF1dG8gcmVhZGFibGUgPSBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKCpnbG9i
YWxPYmplY3QsIG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UuY29weVJlZigpKTsKICAgICBpZiAocmVh
ZGFibGUuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHJl
YWRhYmxlLnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIGF1dG8gd3JpdGFibGUgPSBXcml0YWJs
ZVN0cmVhbTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgU2ltcGxlV3JpdGFibGVTdHJlYW1TaW5rOjpj
cmVhdGUoW3RyYW5zZm9ybWVyID0gbV90cmFuc2Zvcm1lciwgcmVhZGFibGVTdHJlYW1Tb3VyY2Ug
PSBtX3JlYWRhYmxlU3RyZWFtU291cmNlLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShh
dXRvJiBjb250ZXh0LCBhdXRvIHZhbHVlKSAtPiBFeGNlcHRpb25Pcjx2b2lkPiB7CisgICAgYXV0
byB3cml0YWJsZSA9IFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUoKkpTQzo6anNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgU2ltcGxlV3JpdGFibGVTdHJlYW1TaW5rOjpjcmVh
dGUoW3RyYW5zZm9ybWVyID0gbV90cmFuc2Zvcm1lciwgcmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBt
X3JlYWRhYmxlU3RyZWFtU291cmNlLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRv
JiBjb250ZXh0LCBhdXRvIHZhbHVlKSAtPiBFeGNlcHRpb25Pcjx2b2lkPiB7CiAgICAgICAgIGlm
ICghY29udGV4dC5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciB9OwogICAgICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlND
Ojpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjb250ZXh0Lmdsb2JhbE9iamVjdCgpKTsKQEAg
LTIzOCw3ICsyNDIsNyBAQCB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6Y3JlYXRlU3RyZWFt
cyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybiB7IH07
CiAgICAgfSkpOwogICAgIGlmICh3cml0YWJsZS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gd3JpdGFibGUucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAgICAg
bV9yZWFkYWJsZSA9IHJlYWRhYmxlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIG1fd3JpdGFi
bGUgPSB3cml0YWJsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKQEAgLTI0NiwzNiArMjUwLDI2IEBA
IHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJlYW1zKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKICAgICAgICAgbV9yZWFkYWJsZS0+bG9jaygpOwogICAgICAg
ICBtX3dyaXRhYmxlLT5sb2NrKCk7CiAgICAgfQorICAgIHJldHVybiB7IH07CiB9CiAKIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6cmVh
ZGFibGUoKQogewotICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IgfTsKLQotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGNvbnRleHQtPmdsb2JhbE9i
amVjdCgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKLQotICAgIGlmICghbV9yZWFkYWJsZSkKLSAgICAgICAg
Y3JlYXRlU3RyZWFtcygqZ2xvYmFsT2JqZWN0KTsKLQorICAgIGlmICghbV9yZWFkYWJsZSkgewor
ICAgICAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZVN0cmVhbXMoKTsKKyAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpOworICAgIH0KICAgICByZXR1cm4gbV9yZWFkYWJsZS5jb3B5UmVmKCk7CiB9CiAKIEV4
Y2VwdGlvbk9yPFJlZlB0cjxXcml0YWJsZVN0cmVhbT4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6
d3JpdGFibGUoKQogewotICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKLQotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGNvbnRleHQtPmdsb2Jh
bE9iamVjdCgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKLQotICAgIGlmICghbV93cml0YWJsZSkKLSAgICAg
ICAgY3JlYXRlU3RyZWFtcygqZ2xvYmFsT2JqZWN0KTsKKyAgICBpZiAoIW1fd3JpdGFibGUpIHsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBjcmVhdGVTdHJlYW1zKCk7CisgICAgICAgIGlmIChyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKTsKKyAgICB9CiAKICAgICBtX2hhc1dyaXRhYmxlID0gdHJ1ZTsKICAgICByZXR1cm4g
bV93cml0YWJsZS5jb3B5UmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaAppbmRleCBiNWE1ZWJlNDk0
YTYxZDk3ODE4ODFiYWVhMzQxOGY1NWJhN2IwOTdkLi42ZDE3YjBmYThmNzRkNDg2NDE0ZjczMzYz
NjRkMWRhYzZmMzMxYzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAgLTkzLDcgKzkzLDcgQEAg
cHJpdmF0ZToKIAogICAgIGVudW0gY2xhc3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKICAg
ICB2b2lkIGluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lk
ZSk7Ci0gICAgdm9pZCBjcmVhdGVTdHJlYW1zKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBjcmVhdGVTdHJlYW1zKCk7CiAKICAgICBib29sIG1faXNBdHRhY2hl
ZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1dyaXRhYmxlIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcwppbmRleCBjNmRi
ZGY0MTdhZTE0ZjE2ZTllZTE4YjhlNmIzMWJjZmNkNzk3NDEyLi41OTFkYTBjM2RkNTQzZmUyYTA3
ZTliYTU2YzNkNTc5NWExZTVhOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCkBAIC0xMjMsNyArMTIzLDggQEAgZnVuY3Rpb24gcGlw
ZVRocm91Z2goc3RyZWFtcywgb3B0aW9ucykKICAgICAgICAgICAgIHRocm93IEBtYWtlVHlwZUVy
cm9yKCJyZWFkYWJsZSBzaG91bGQgYmUgUmVhZGFibGVTdHJlYW0iKTsKIAogICAgICAgICBjb25z
dCB3cml0YWJsZSA9IHRyYW5zZm9ybXNbIndyaXRhYmxlIl07Ci0gICAgICAgIGlmICghQGlzV3Jp
dGFibGVTdHJlYW0od3JpdGFibGUpKQorICAgICAgICBjb25zdCBpbnRlcm5hbFdyaXRhYmxlID0g
QGdldEludGVybmFsV3JpdGFibGVTdHJlYW0od3JpdGFibGUpOworICAgICAgICBpZiAoIUBpc1dy
aXRhYmxlU3RyZWFtKGludGVybmFsV3JpdGFibGUpKQogICAgICAgICAgICAgdGhyb3cgQG1ha2VU
eXBlRXJyb3IoIndyaXRhYmxlIHNob3VsZCBiZSBXcml0YWJsZVN0cmVhbSIpOwogCiAgICAgICAg
IGxldCBwcmV2ZW50Q2xvc2UgPSBmYWxzZTsKQEAgLTE0OSwxMCArMTUwLDEwIEBAIGZ1bmN0aW9u
IHBpcGVUaHJvdWdoKHN0cmVhbXMsIG9wdGlvbnMpCiAgICAgICAgIGlmIChAaXNSZWFkYWJsZVN0
cmVhbUxvY2tlZCh0aGlzKSkKICAgICAgICAgICAgIHRocm93IEBtYWtlVHlwZUVycm9yKCJSZWFk
YWJsZVN0cmVhbSBpcyBsb2NrZWQiKTsKIAotICAgICAgICBpZiAoQGlzV3JpdGFibGVTdHJlYW1M
b2NrZWQod3JpdGFibGUpKQorICAgICAgICBpZiAoQGlzV3JpdGFibGVTdHJlYW1Mb2NrZWQoaW50
ZXJuYWxXcml0YWJsZSkpCiAgICAgICAgICAgICB0aHJvdyBAbWFrZVR5cGVFcnJvcigiV3JpdGFi
bGVTdHJlYW0gaXMgbG9ja2VkIik7CiAKLSAgICAgICAgQHJlYWRhYmxlU3RyZWFtUGlwZVRvV3Jp
dGFibGVTdHJlYW0odGhpcywgd3JpdGFibGUsIHByZXZlbnRDbG9zZSwgcHJldmVudEFib3J0LCBw
cmV2ZW50Q2FuY2VsLCBzaWduYWwpOworICAgICAgICBAcmVhZGFibGVTdHJlYW1QaXBlVG9Xcml0
YWJsZVN0cmVhbSh0aGlzLCBpbnRlcm5hbFdyaXRhYmxlLCBwcmV2ZW50Q2xvc2UsIHByZXZlbnRB
Ym9ydCwgcHJldmVudENhbmNlbCwgc2lnbmFsKTsKIAogICAgICAgICByZXR1cm4gcmVhZGFibGU7
CiAgICAgfQpAQCAtMTk2LDcgKzE5Nyw4IEBAIGZ1bmN0aW9uIHBpcGVUbyhkZXN0aW5hdGlvbikK
ICAgICAgICAgICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigi
b3B0aW9ucy5zaWduYWwgbXVzdCBiZSBBYm9ydFNpZ25hbCIpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0oZGVzdGluYXRpb24pKQorICAgICAgICBjb25zdCBp
bnRlcm5hbERlc3RpbmF0aW9uID0gQGdldEludGVybmFsV3JpdGFibGVTdHJlYW0oZGVzdGluYXRp
b24pOworICAgICAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKGludGVybmFsRGVzdGluYXRpb24p
KQogICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIlJl
YWRhYmxlU3RyZWFtIHBpcGVUbyByZXF1aXJlcyBhIFdyaXRhYmxlU3RyZWFtIikpOwogCiAgICAg
ICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0odGhpcykpCkBAIC0yMDUsMTAgKzIwNywxMCBAQCBm
dW5jdGlvbiBwaXBlVG8oZGVzdGluYXRpb24pCiAgICAgICAgIGlmIChAaXNSZWFkYWJsZVN0cmVh
bUxvY2tlZCh0aGlzKSkKICAgICAgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtl
VHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBsb2NrZWQiKSk7CiAKLSAgICAgICAgaWYgKEBp
c1dyaXRhYmxlU3RyZWFtTG9ja2VkKGRlc3RpbmF0aW9uKSkKKyAgICAgICAgaWYgKEBpc1dyaXRh
YmxlU3RyZWFtTG9ja2VkKGludGVybmFsRGVzdGluYXRpb24pKQogICAgICAgICAgICAgcmV0dXJu
IEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtIGlzIGxvY2tl
ZCIpKTsKIAotICAgICAgICByZXR1cm4gQHJlYWRhYmxlU3RyZWFtUGlwZVRvV3JpdGFibGVTdHJl
YW0odGhpcywgZGVzdGluYXRpb24sIHByZXZlbnRDbG9zZSwgcHJldmVudEFib3J0LCBwcmV2ZW50
Q2FuY2VsLCBzaWduYWwpOworICAgICAgICByZXR1cm4gQHJlYWRhYmxlU3RyZWFtUGlwZVRvV3Jp
dGFibGVTdHJlYW0odGhpcywgaW50ZXJuYWxEZXN0aW5hdGlvbiwgcHJldmVudENsb3NlLCBwcmV2
ZW50QWJvcnQsIHByZXZlbnRDYW5jZWwsIHNpZ25hbCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6
IHJld3JpdGUgcGlwZVRvIHNvIGFzIHRvIHJlcXVpcmUgdG8gaGF2ZSAndGhpcycgYXMgYSBSZWFk
YWJsZVN0cmVhbSBhbmQgZGVzdGluYXRpb24gYmUgYSBXcml0YWJsZVN0cmVhbS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9UcmFuc2Zvcm1TdHJlYW1JbnRlcm5h
bHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvVHJhbnNmb3JtU3RyZWFtSW50
ZXJuYWxzLmpzCmluZGV4IGQzZDYzYzNmZmYxOTE2YzIxYjgyNjliZTdkNDNlZGM3YmVhYTMzNDQu
LjQyNjNlMzk5MWE5M2JiNTFmOGM2ZTAxZjhkZTg5MmRjMjZlZjlmMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9UcmFuc2Zvcm1TdHJlYW1JbnRlcm5hbHMuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1RyYW5zZm9ybVN0cmVhbUludGVy
bmFscy5qcwpAQCAtOTUsNyArOTUsMTEgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZVRyYW5zZm9ybVN0
cmVhbShzdHJlYW0sIHN0YXJ0UHJvbWlzZSwgd3JpdGFibGVIaWdoV2F0ZXJNYXJrLAogICAgIEBw
dXRCeUlkRGlyZWN0UHJpdmF0ZShvcHRpb25zLCAiaGlnaFdhdGVyTWFyayIsIHJlYWRhYmxlSGln
aFdhdGVyTWFyayk7CiAgICAgY29uc3QgcmVhZGFibGUgPSBuZXcgQFJlYWRhYmxlU3RyZWFtKHVu
ZGVybHlpbmdTb3VyY2UsIG9wdGlvbnMpOwogCisgICAgLy8gVGhlIHdyaXRhYmxlIHRvIGV4cG9z
ZSB0byBKUyB0aHJvdWdoIHdyaXRhYmxlIGdldHRlci4KICAgICBAcHV0QnlJZERpcmVjdFByaXZh
dGUoc3RyZWFtLCAid3JpdGFibGUiLCB3cml0YWJsZSk7CisgICAgLy8gVGhlIHdyaXRhYmxlIHRv
IHVzZSBmb3IgdGhlIGFjdHVhbCB0cmFuc2Zvcm0gYWxnb3JpdGhtcy4KKyAgICBAcHV0QnlJZERp
cmVjdFByaXZhdGUoc3RyZWFtLCAiaW50ZXJuYWxXcml0YWJsZSIsIEBnZXRJbnRlcm5hbFdyaXRh
YmxlU3RyZWFtKHdyaXRhYmxlKSk7CisKICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFt
LCAicmVhZGFibGUiLCByZWFkYWJsZSk7CiAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHN0cmVh
bSwgImJhY2twcmVzc3VyZSIsIEB1bmRlZmluZWQpOwogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZShzdHJlYW0sICJiYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlIiwgQHVuZGVmaW5lZCk7CkBAIC0x
MjEsNyArMTI1LDcgQEAgZnVuY3Rpb24gdHJhbnNmb3JtU3RyZWFtRXJyb3JXcml0YWJsZUFuZFVu
YmxvY2tXcml0ZShzdHJlYW0sIGUpCiAKICAgICBAdHJhbnNmb3JtU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXJDbGVhckFsZ29yaXRobXMoQGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgImNvbnRy
b2xsZXIiKSk7CiAKLSAgICBjb25zdCB3cml0YWJsZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShz
dHJlYW0sICJ3cml0YWJsZSIpOworICAgIGNvbnN0IHdyaXRhYmxlID0gQGdldEJ5SWREaXJlY3RQ
cml2YXRlKHN0cmVhbSwgImludGVybmFsV3JpdGFibGUiKTsKICAgICBAd3JpdGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlckVycm9ySWZOZWVkZWQoQGdldEJ5SWREaXJlY3RQcml2YXRlKHdyaXRh
YmxlLCAiY29udHJvbGxlciIpLCBlKTsKIAogICAgIGlmIChAZ2V0QnlJZERpcmVjdFByaXZhdGUo
c3RyZWFtLCAiYmFja3ByZXNzdXJlIikpCkBAIC0yNjIsNyArMjY2LDcgQEAgZnVuY3Rpb24gdHJh
bnNmb3JtU3RyZWFtRGVmYXVsdFNpbmtXcml0ZUFsZ29yaXRobShzdHJlYW0sIGNodW5rKQogewog
ICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGNvbnN0IHdyaXRhYmxlID0gQGdldEJ5SWREaXJlY3RQ
cml2YXRlKHN0cmVhbSwgIndyaXRhYmxlIik7CisgICAgY29uc3Qgd3JpdGFibGUgPSBAZ2V0QnlJ
ZERpcmVjdFByaXZhdGUoc3RyZWFtLCAiaW50ZXJuYWxXcml0YWJsZSIpOwogCiAgICAgQGFzc2Vy
dChAZ2V0QnlJZERpcmVjdFByaXZhdGUod3JpdGFibGUsICJzdGF0ZSIpID09PSAid3JpdGFibGUi
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxl
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVh
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWZkOTk4YWFlZjY0ZDE5NTViMThhMjM2M2M0ZTE4NDJjODg0MGM0
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0
YWJsZVN0cmVhbS5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXcml0
YWJsZVN0cmVhbS5oIgorCisjaW5jbHVkZSAiSlNXcml0YWJsZVN0cmVhbS5oIgorI2luY2x1ZGUg
IkpTV3JpdGFibGVTdHJlYW1TaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRXhjZXB0
aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gV3JpdGFibGVTdHJlYW06OmNyZWF0ZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIHN0ZDo6b3B0aW9uYWw8SlNDOjpTdHJvbmc8SlND
OjpKU09iamVjdD4+JiYgdW5kZXJseWluZ1NpbmssIHN0ZDo6b3B0aW9uYWw8SlNDOjpTdHJvbmc8
SlNDOjpKU09iamVjdD4+JiYgc3RyYXRlZ3kpCit7CisgICAgSlNDOjpKU1ZhbHVlIHVuZGVybHlp
bmdTaW5rVmFsdWUgPSBKU0M6OmpzVW5kZWZpbmVkKCk7CisgICAgaWYgKHVuZGVybHlpbmdTaW5r
KQorICAgICAgICB1bmRlcmx5aW5nU2lua1ZhbHVlID0gdW5kZXJseWluZ1NpbmstPmdldCgpOwor
CisgICAgSlNDOjpKU1ZhbHVlIHN0cmF0ZWd5VmFsdWUgPSBKU0M6OmpzVW5kZWZpbmVkKCk7Cisg
ICAgaWYgKHN0cmF0ZWd5KQorICAgICAgICBzdHJhdGVneVZhbHVlID0gc3RyYXRlZ3ktPmdldCgp
OworCisgICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3QsIHVuZGVybHlpbmdTaW5rVmFsdWUs
IHN0cmF0ZWd5VmFsdWUpOworfQorCitFeGNlcHRpb25PcjxSZWY8V3JpdGFibGVTdHJlYW0+PiBX
cml0YWJsZVN0cmVhbTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHVuZGVybHlpbmdTaW5rLCBKU0M6OkpTVmFsdWUgc3RyYXRlZ3kpCit7Cisg
ICAgYXV0byByZXN1bHQgPSBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUoKkpTQzo6anND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCksIHVuZGVybHlpbmdTaW5rLCBz
dHJhdGVneSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
cml0YWJsZVN0cmVhbShyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpKTsKK30KKworRXhjZXB0
aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gV3JpdGFibGVTdHJlYW06OmNyZWF0ZShKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8V3JpdGFibGVTdHJlYW1TaW5rPiYmIHNpbmsp
Cit7CisgICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3QsIHRvSlNOZXdseUNyZWF0ZWQoJmds
b2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgV1RGTW92ZShzaW5rKSksIEpTQzo6anNVbmRlZmlu
ZWQoKSk7Cit9CisKK1dyaXRhYmxlU3RyZWFtOjpXcml0YWJsZVN0cmVhbShSZWY8SW50ZXJuYWxX
cml0YWJsZVN0cmVhbT4mJiBpbnRlcm5hbFdyaXRhYmxlU3RyZWFtKQorICAgIDogbV9pbnRlcm5h
bFdyaXRhYmxlU3RyZWFtKFdURk1vdmUoaW50ZXJuYWxXcml0YWJsZVN0cmVhbSkpCit7Cit9CisK
K0pTQzo6SlNWYWx1ZSBKU1dyaXRhYmxlU3RyZWFtOjphYm9ydChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJu
IHdyYXBwZWQoKS5pbnRlcm5hbFdyaXRhYmxlU3RyZWFtKCkuYWJvcnQoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUuYXJndW1lbnQoMCkpOworfQorCitKU0M6OkpTVmFsdWUgSlNXcml0YWJsZVN0cmVh
bTo6Y2xvc2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSYpCit7CisgICAgcmV0dXJuIHdyYXBwZWQoKS5pbnRlcm5hbFdyaXRhYmxlU3RyZWFtKCkuY2xv
c2UoZ2xvYmFsT2JqZWN0KTsKK30KKworSlNDOjpKU1ZhbHVlIEpTV3JpdGFibGVTdHJlYW06Omdl
dFdyaXRlcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
JikKK3sKKyAgICByZXR1cm4gd3JhcHBlZCgpLmludGVybmFsV3JpdGFibGVTdHJlYW0oKS5nZXRX
cml0ZXIoZ2xvYmFsT2JqZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYzJhMjUyNGRiZDMwYjAwNzE3NjNkYzdlNmUzNzNlOTIxMmRhNGY3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmgKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5oIgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW50ZXJuYWxXcml0YWJsZVN0
cmVhbTsKK2NsYXNzIEpTRE9NR2xvYmFsT2JqZWN0OworY2xhc3MgV3JpdGFibGVTdHJlYW1TaW5r
OworCitjbGFzcyBXcml0YWJsZVN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPFdyaXRhYmxlU3Ry
ZWFtPiB7CitwdWJsaWM6CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXcml0YWJsZVN0cmVh
bT4+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jiwgc3RkOjpvcHRpb25hbDxKU0M6OlN0cm9u
ZzxKU0M6OkpTT2JqZWN0Pj4mJiwgc3RkOjpvcHRpb25hbDxKU0M6OlN0cm9uZzxKU0M6OkpTT2Jq
ZWN0Pj4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXcml0YWJsZVN0cmVhbT4+IGNy
ZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxXcml0YWJsZVN0cmVhbVNpbms+JiYpOworCisg
ICAgfldyaXRhYmxlU3RyZWFtKCkgPSBkZWZhdWx0OworCisgICAgdm9pZCBsb2NrKCkgeyBtX2lu
dGVybmFsV3JpdGFibGVTdHJlYW0tPmxvY2soKTsgfQorICAgIGJvb2wgbG9ja2VkKCkgY29uc3Qg
eyByZXR1cm4gbV9pbnRlcm5hbFdyaXRhYmxlU3RyZWFtLT5sb2NrZWQoKTsgfQorCisgICAgSW50
ZXJuYWxXcml0YWJsZVN0cmVhbSYgaW50ZXJuYWxXcml0YWJsZVN0cmVhbSgpIHsgcmV0dXJuIG1f
aW50ZXJuYWxXcml0YWJsZVN0cmVhbS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBF
eGNlcHRpb25PcjxSZWY8V3JpdGFibGVTdHJlYW0+PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKKyAgICBleHBsaWNpdCBXcml0YWJsZVN0
cmVhbShSZWY8SW50ZXJuYWxXcml0YWJsZVN0cmVhbT4mJik7CisKKyAgICBSZWY8SW50ZXJuYWxX
cml0YWJsZVN0cmVhbT4gbV9pbnRlcm5hbFdyaXRhYmxlU3RyZWFtOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1dyaXRhYmxlU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0
YWJsZVN0cmVhbS5pZGwKaW5kZXggZDlhZTY2OWYxZGM5ZDU2YTBiZDBhMzdmZGVjNjZiOWM1ZWE0
MDQ3MS4uNGYxODAyNzNjYzQyYTM4NWE2YmY1NzRhZGUxZmVkMDM1Nzc0YzZlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsCkBAIC0x
LDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwxNSArMzEsMTYgQEAKIFsKICAgICBFbmFibGVkQXRS
dW50aW1lPVdyaXRhYmxlU3RyZWFtQVBJLAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAot
ICAgIEpTQnVpbHRpbiwKICAgICBQcml2YXRlSWRlbnRpZmllciwKLSAgICBQdWJsaWNJZGVudGlm
aWVyCisgICAgUHVibGljSWRlbnRpZmllciwKKyAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgogXSBp
bnRlcmZhY2UgV3JpdGFibGVTdHJlYW0gewotICAgIGNvbnN0cnVjdG9yKG9wdGlvbmFsIG9iamVj
dCB1bmRlcmx5aW5nU2luaywgb3B0aW9uYWwgUXVldWluZ1N0cmF0ZWd5IHN0cmF0ZWd5KTsKKyAg
ICAvLyBGSVhNRTogVGlnaHRlbiBwYXJhbWV0ZXIgbWF0Y2hpbmcKKyAgICBbQ2FsbFdpdGg9R2xv
YmFsT2JqZWN0XSBjb25zdHJ1Y3RvcihvcHRpb25hbCBvYmplY3QgdW5kZXJseWluZ1NpbmssIG9w
dGlvbmFsIG9iamVjdCBzdHJhdGVneSk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biBsb2NrZWQ7CiAKLSAgICBQcm9taXNlPGFueT4gYWJvcnQob3B0aW9uYWwgYW55IHJlYXNvbik7
Ci0gICAgUHJvbWlzZTxhbnk+IGNsb3NlKCk7Ci0gICAgV3JpdGFibGVTdHJlYW1EZWZhdWx0V3Jp
dGVyIGdldFdyaXRlcigpOworICAgIFtDdXN0b20sIFJldHVybnNPd25Qcm9taXNlXSBQcm9taXNl
PGFueT4gYWJvcnQob3B0aW9uYWwgYW55IHJlYXNvbik7CisgICAgW0N1c3RvbSwgUmV0dXJuc093
blByb21pc2VdIFByb21pc2U8YW55PiBjbG9zZSgpOworICAgIFtDdXN0b21dIFdyaXRhYmxlU3Ry
ZWFtRGVmYXVsdFdyaXRlciBnZXRXcml0ZXIoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDk4NmY5MmYxYzAyNDdiYjJlNDU5MzUwMzU1Njc2NzhiYWY5ZDNmM2IuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0
IChDKSAyMDE1IElnYWxpYQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1mdW5jdGlvbiBpbml0aWFsaXplV3JpdGFibGVTdHJlYW0odW5kZXJseWluZ1NpbmssIHN0
cmF0ZWd5KQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICh1bmRlcmx5aW5nU2luayA9
PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgdW5kZXJseWluZ1NpbmsgPSB7IH07Ci0KLSAgICBpZiAo
c3RyYXRlZ3kgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIHN0cmF0ZWd5ID0geyB9OwotCi0gICAg
aWYgKCFAaXNPYmplY3QodW5kZXJseWluZ1NpbmspKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
IldyaXRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHRha2VzIGFuIG9iamVjdCBhcyBmaXJzdCBhcmd1
bWVudCIpOwotCi0gICAgLy8gQ3JlYXRlV3JpdGVTdHJlYW0gY29kZSBwYXRoLgotICAgIGlmIChA
Z2V0QnlJZERpcmVjdFByaXZhdGUodW5kZXJseWluZ1NpbmssICJXcml0YWJsZVN0cmVhbSIpKSB7
Ci0gICAgICAgIEBwcml2YXRlSW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtKHRoaXMsIHVuZGVybHlp
bmdTaW5rKTsKLQotICAgICAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEBXcml0YWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyKCk7Ci0KLSAgICAgICAgQHNldFVwV3JpdGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlcih0aGlzLCBjb250cm9sbGVyLCB1bmRlcmx5aW5nU2luay5zdGFydEFsZ29y
aXRobSwgdW5kZXJseWluZ1Npbmsud3JpdGVBbGdvcml0aG0sIHVuZGVybHlpbmdTaW5rLmNsb3Nl
QWxnb3JpdGhtLCB1bmRlcmx5aW5nU2luay5hYm9ydEFsZ29yaXRobSwgc3RyYXRlZ3kuaGlnaFdh
dGVyTWFyaywgc3RyYXRlZ3kuc2l6ZUFsZ29yaXRobSk7Ci0gICAgICAgIHJldHVybiB0aGlzOwot
ICAgIH0KLQotICAgIGlmICgidHlwZSIgaW4gdW5kZXJseWluZ1NpbmspCi0gICAgICAgIEB0aHJv
d1JhbmdlRXJyb3IoIkludmFsaWQgdHlwZSBpcyBzcGVjaWZpZWQiKTsKLQotICAgIGNvbnN0IHNp
emVBbGdvcml0aG0gPSBAZXh0cmFjdFNpemVBbGdvcml0aG0oc3RyYXRlZ3kpOwotICAgIGNvbnN0
IGhpZ2hXYXRlck1hcmsgPSBAZXh0cmFjdEhpZ2hXYXRlck1hcmsoc3RyYXRlZ3ksIDEpOwotCi0g
ICAgY29uc3QgdW5kZXJseWluZ1NpbmtEaWN0ID0geyB9OwotICAgIGlmICgic3RhcnQiIGluIHVu
ZGVybHlpbmdTaW5rKSB7Ci0gICAgICAgIHVuZGVybHlpbmdTaW5rRGljdFsic3RhcnQiXSA9IHVu
ZGVybHlpbmdTaW5rWyJzdGFydCJdOwotICAgICAgICBpZiAodHlwZW9mIHVuZGVybHlpbmdTaW5r
RGljdFsic3RhcnQiXSAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJv
cigidW5kZXJseWluZ1Npbmsuc3RhcnQgc2hvdWxkIGJlIGEgZnVuY3Rpb24iKTsKLSAgICB9Ci0g
ICAgaWYgKCJ3cml0ZSIgaW4gdW5kZXJseWluZ1NpbmspIHsKLSAgICAgICAgdW5kZXJseWluZ1Np
bmtEaWN0WyJ3cml0ZSJdID0gdW5kZXJseWluZ1NpbmtbIndyaXRlIl07Ci0gICAgICAgIGlmICh0
eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJ3cml0ZSJdICE9PSAiZnVuY3Rpb24iKQotICAgICAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5nU2luay53cml0ZSBzaG91bGQgYmUgYSBm
dW5jdGlvbiIpOwotICAgIH0KLSAgICBpZiAoImNsb3NlIiBpbiB1bmRlcmx5aW5nU2luaykgewot
ICAgICAgICB1bmRlcmx5aW5nU2lua0RpY3RbImNsb3NlIl0gPSB1bmRlcmx5aW5nU2lua1siY2xv
c2UiXTsKLSAgICAgICAgaWYgKHR5cGVvZiB1bmRlcmx5aW5nU2lua0RpY3RbImNsb3NlIl0gIT09
ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInVuZGVybHlpbmdTaW5r
LmNsb3NlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7Ci0gICAgfQotICAgIGlmICgiYWJvcnQiIGlu
IHVuZGVybHlpbmdTaW5rKSB7Ci0gICAgICAgIHVuZGVybHlpbmdTaW5rRGljdFsiYWJvcnQiXSA9
IHVuZGVybHlpbmdTaW5rWyJhYm9ydCJdOwotICAgICAgICBpZiAodHlwZW9mIHVuZGVybHlpbmdT
aW5rRGljdFsiYWJvcnQiXSAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIEB0aHJvd1R5cGVF
cnJvcigidW5kZXJseWluZ1NpbmsuYWJvcnQgc2hvdWxkIGJlIGEgZnVuY3Rpb24iKTsKLSAgICB9
Ci0KLSAgICBAcHJpdmF0ZUluaXRpYWxpemVXcml0YWJsZVN0cmVhbSh0aGlzLCB1bmRlcmx5aW5n
U2luayk7Ci0gICAgQHNldFVwV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckZyb21VbmRl
cmx5aW5nU2luayh0aGlzLCB1bmRlcmx5aW5nU2luaywgdW5kZXJseWluZ1NpbmtEaWN0LCBoaWdo
V2F0ZXJNYXJrLCBzaXplQWxnb3JpdGhtKTsKLQotICAgIHJldHVybiB0aGlzOwotfQotCi1AZ2V0
dGVyCi1mdW5jdGlvbiBsb2NrZWQoKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICgh
QGlzV3JpdGFibGVTdHJlYW0odGhpcykpCi0gICAgICAgIHRocm93IEBtYWtlVGhpc1R5cGVFcnJv
cigiV3JpdGFibGVTdHJlYW0iLCAibG9ja2VkIik7Ci0KLSAgICByZXR1cm4gQGlzV3JpdGFibGVT
dHJlYW1Mb2NrZWQodGhpcyk7Ci19Ci0KLWZ1bmN0aW9uIGFib3J0KHJlYXNvbikKLXsKLSAgICAi
dXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRoaXMpKQotICAgICAg
ICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVRoaXNUeXBlRXJyb3IoIldyaXRhYmxlU3Ry
ZWFtIiwgImFib3J0IikpOwotCi0gICAgaWYgKEBpc1dyaXRhYmxlU3RyZWFtTG9ja2VkKHRoaXMp
KQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigiV3JpdGFi
bGVTdHJlYW0uYWJvcnQgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24gbm9uIGxvY2tlZCBXcml0
YWJsZVN0cmVhbSIpKTsKLQotICAgIHJldHVybiBAd3JpdGFibGVTdHJlYW1BYm9ydCh0aGlzLCBy
ZWFzb24pOwotfQotCi1mdW5jdGlvbiBjbG9zZSgpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0g
ICAgaWYgKCFAaXNXcml0YWJsZVN0cmVhbSh0aGlzKSkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNl
LkByZWplY3QoQG1ha2VUaGlzVHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbSIsICJjbG9zZSIpKTsK
LQotICAgIGlmIChAaXNXcml0YWJsZVN0cmVhbUxvY2tlZCh0aGlzKSkKLSAgICAgICAgcmV0dXJu
IEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtLmNsb3NlIG1l
dGhvZCBjYW4gb25seSBiZSB1c2VkIG9uIG5vbiBsb2NrZWQgV3JpdGFibGVTdHJlYW0iKSk7Ci0K
LSAgICBpZiAoQHdyaXRhYmxlU3RyZWFtQ2xvc2VRdWV1ZWRPckluRmxpZ2h0KHRoaXMpKQotICAg
ICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigiV3JpdGFibGVTdHJl
YW0uY2xvc2UgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24gYSBiZWluZyBjbG9zZSBXcml0YWJs
ZVN0cmVhbSIpKTsKLQotICAgIHJldHVybiBAd3JpdGFibGVTdHJlYW1DbG9zZSh0aGlzKTsKLX0K
LQotZnVuY3Rpb24gZ2V0V3JpdGVyKCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAo
IUBpc1dyaXRhYmxlU3RyZWFtKHRoaXMpKQotICAgICAgICB0aHJvdyBAbWFrZVRoaXNUeXBlRXJy
b3IoIldyaXRhYmxlU3RyZWFtIiwgImdldFdyaXRlciIpOwotCi0gICAgcmV0dXJuIEBhY3F1aXJl
V3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyKHRoaXMpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5qcyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0
ZXIuanMKaW5kZXggZTlkYzk3MTA1ODNjNDk1NDA2MzdmYWFiMTc1YWIxZDZkMTA1Mjc3Yi4uNjlh
OTUzZmMzZjM5ZTJkMThjNDdiMzZmNGExMGFhOGRlYjU4M2JiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0
V3JpdGVyLmpzCkBAIC0yNyw2ICsyNywxMiBAQCBmdW5jdGlvbiBpbml0aWFsaXplV3JpdGFibGVT
dHJlYW1EZWZhdWx0V3JpdGVyKHN0cmVhbSkKIHsKICAgICAidXNlIHN0cmljdCI7CiAKKyAgICAv
LyBzdHJlYW0gY2FuIGJlIGEgV3JpdGFibGVTdHJlYW0gaWYgV3JpdGFibGVTdHJlYW1EZWZhdWx0
V3JpdGVyIGNvbnN0cnVjdG9yIGlzIGNhbGxlZCBkaXJlY3RseSBmcm9tIEpTCisgICAgLy8gb3Ig
YW4gSW50ZXJuYWxXcml0YWJsZVN0cmVhbSBpbiBvdGhlciBjb2RlIHBhdGhzLgorICAgIGNvbnN0
IGludGVybmFsU3RyZWFtID0gQGdldEludGVybmFsV3JpdGFibGVTdHJlYW0oc3RyZWFtKTsKKyAg
ICBpZiAoaW50ZXJuYWxTdHJlYW0pCisgICAgICAgIHN0cmVhbSA9IGludGVybmFsU3RyZWFtOwor
CiAgICAgaWYgKCFAaXNXcml0YWJsZVN0cmVhbShzdHJlYW0pKQogICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoIldyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlciBjb25zdHJ1Y3RvciB0YWtlcyBhIFdy
aXRhYmxlU3RyZWFtIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qcwppbmRleCA2NzA1MDQ2M2UxYzJlNzRk
MjRjMzA2MDBjZDdkMmRlZTVlZDhkM2MyLi44MjIzODQ2MWVmNmVmNGU1MmE2MjRhNzYzOWZjNDQy
MmFiOGQxZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3Jp
dGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC01Nyw3ICs1Nyw2NiBAQCBmdW5jdGlv
biBjcmVhdGVXcml0YWJsZVN0cmVhbShzdGFydEFsZ29yaXRobSwgd3JpdGVBbGdvcml0aG0sIGNs
b3NlQWxnb3JpdGhtLCBhYgogICAgIHJldHVybiBuZXcgQFdyaXRhYmxlU3RyZWFtKHVuZGVybHlp
bmdTaW5rLCB7IHNpemVBbGdvcml0aG06IHdyaXRhYmxlU2l6ZUFsZ29yaXRobSwgaGlnaFdhdGVy
TWFyazogd3JpdGFibGVIaWdoV2F0ZXJNYXJrIH0pOwogfQogCi1mdW5jdGlvbiBwcml2YXRlSW5p
dGlhbGl6ZVdyaXRhYmxlU3RyZWFtKHN0cmVhbSwgdW5kZXJseWluZ1NpbmspCitmdW5jdGlvbiBj
cmVhdGVJbnRlcm5hbFdyaXRhYmxlU3RyZWFtKHVuZGVybHlpbmdTaW5rLCBzdHJhdGVneSkKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICBjb25zdCBzdHJlYW0gPSB7IH07CisKKyAgICBpZiAo
dW5kZXJseWluZ1NpbmsgPT09IEB1bmRlZmluZWQpCisgICAgICAgIHVuZGVybHlpbmdTaW5rID0g
eyB9OworCisgICAgaWYgKHN0cmF0ZWd5ID09PSBAdW5kZWZpbmVkKQorICAgICAgICBzdHJhdGVn
eSA9IHsgfTsKKworICAgIGlmICghQGlzT2JqZWN0KHVuZGVybHlpbmdTaW5rKSkKKyAgICAgICAg
QHRocm93VHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB0YWtlcyBhbiBvYmpl
Y3QgYXMgZmlyc3QgYXJndW1lbnQiKTsKKworICAgIC8vIGNyZWF0ZVdyaXRlU3RyZWFtIGNvZGUg
cGF0aC4KKyAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRlKHVuZGVybHlpbmdTaW5rLCAiV3Jp
dGFibGVTdHJlYW0iKSkgeworICAgICAgICBAaW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtU2xvdHMo
c3RyZWFtLCB1bmRlcmx5aW5nU2luayk7CisKKyAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5l
dyBAV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcigpOworCisgICAgICAgIEBzZXRVcFdy
aXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIoc3RyZWFtLCBjb250cm9sbGVyLCB1bmRlcmx5
aW5nU2luay5zdGFydEFsZ29yaXRobSwgdW5kZXJseWluZ1Npbmsud3JpdGVBbGdvcml0aG0sIHVu
ZGVybHlpbmdTaW5rLmNsb3NlQWxnb3JpdGhtLCB1bmRlcmx5aW5nU2luay5hYm9ydEFsZ29yaXRo
bSwgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgc3RyYXRlZ3kuc2l6ZUFsZ29yaXRobSk7CisgICAg
ICAgIHJldHVybiBzdHJlYW07CisgICAgfQorCisgICAgaWYgKCJ0eXBlIiBpbiB1bmRlcmx5aW5n
U2luaykKKyAgICAgICAgQHRocm93UmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlIGlzIHNwZWNpZmll
ZCIpOworCisgICAgY29uc3Qgc2l6ZUFsZ29yaXRobSA9IEBleHRyYWN0U2l6ZUFsZ29yaXRobShz
dHJhdGVneSk7CisgICAgY29uc3QgaGlnaFdhdGVyTWFyayA9IEBleHRyYWN0SGlnaFdhdGVyTWFy
ayhzdHJhdGVneSwgMSk7CisKKyAgICBjb25zdCB1bmRlcmx5aW5nU2lua0RpY3QgPSB7IH07Cisg
ICAgaWYgKCJzdGFydCIgaW4gdW5kZXJseWluZ1NpbmspIHsKKyAgICAgICAgdW5kZXJseWluZ1Np
bmtEaWN0WyJzdGFydCJdID0gdW5kZXJseWluZ1NpbmtbInN0YXJ0Il07CisgICAgICAgIGlmICh0
eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJzdGFydCJdICE9PSAiZnVuY3Rpb24iKQorICAgICAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5nU2luay5zdGFydCBzaG91bGQgYmUgYSBm
dW5jdGlvbiIpOworICAgIH0KKyAgICBpZiAoIndyaXRlIiBpbiB1bmRlcmx5aW5nU2luaykgewor
ICAgICAgICB1bmRlcmx5aW5nU2lua0RpY3RbIndyaXRlIl0gPSB1bmRlcmx5aW5nU2lua1sid3Jp
dGUiXTsKKyAgICAgICAgaWYgKHR5cGVvZiB1bmRlcmx5aW5nU2lua0RpY3RbIndyaXRlIl0gIT09
ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInVuZGVybHlpbmdTaW5r
LndyaXRlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7CisgICAgfQorICAgIGlmICgiY2xvc2UiIGlu
IHVuZGVybHlpbmdTaW5rKSB7CisgICAgICAgIHVuZGVybHlpbmdTaW5rRGljdFsiY2xvc2UiXSA9
IHVuZGVybHlpbmdTaW5rWyJjbG9zZSJdOworICAgICAgICBpZiAodHlwZW9mIHVuZGVybHlpbmdT
aW5rRGljdFsiY2xvc2UiXSAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIEB0aHJvd1R5cGVF
cnJvcigidW5kZXJseWluZ1NpbmsuY2xvc2Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24iKTsKKyAgICB9
CisgICAgaWYgKCJhYm9ydCIgaW4gdW5kZXJseWluZ1NpbmspIHsKKyAgICAgICAgdW5kZXJseWlu
Z1NpbmtEaWN0WyJhYm9ydCJdID0gdW5kZXJseWluZ1NpbmtbImFib3J0Il07CisgICAgICAgIGlm
ICh0eXBlb2YgdW5kZXJseWluZ1NpbmtEaWN0WyJhYm9ydCJdICE9PSAiZnVuY3Rpb24iKQorICAg
ICAgICAgICAgQHRocm93VHlwZUVycm9yKCJ1bmRlcmx5aW5nU2luay5hYm9ydCBzaG91bGQgYmUg
YSBmdW5jdGlvbiIpOworICAgIH0KKworICAgIEBpbml0aWFsaXplV3JpdGFibGVTdHJlYW1TbG90
cyhzdHJlYW0sIHVuZGVybHlpbmdTaW5rKTsKKyAgICBAc2V0VXBXcml0YWJsZVN0cmVhbURlZmF1
bHRDb250cm9sbGVyRnJvbVVuZGVybHlpbmdTaW5rKHN0cmVhbSwgdW5kZXJseWluZ1NpbmssIHVu
ZGVybHlpbmdTaW5rRGljdCwgaGlnaFdhdGVyTWFyaywgc2l6ZUFsZ29yaXRobSk7CisKKyAgICBy
ZXR1cm4gc3RyZWFtOworfQorCitmdW5jdGlvbiBpbml0aWFsaXplV3JpdGFibGVTdHJlYW1TbG90
cyhzdHJlYW0sIHVuZGVybHlpbmdTaW5rKQogewogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShz
dHJlYW0sICJzdGF0ZSIsICJ3cml0YWJsZSIpOwogICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShz
dHJlYW0sICJzdG9yZWRFcnJvciIsIEB1bmRlZmluZWQpOwpAQCAtNzIsNiArMTMxLDI1IEBAIGZ1
bmN0aW9uIHByaXZhdGVJbml0aWFsaXplV3JpdGFibGVTdHJlYW0oc3RyZWFtLCB1bmRlcmx5aW5n
U2luaykKICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAidW5kZXJseWluZ1Npbmsi
LCB1bmRlcmx5aW5nU2luayk7CiB9CiAKK2Z1bmN0aW9uIHdyaXRhYmxlU3RyZWFtQ2xvc2VGb3JC
aW5kaW5ncyhzdHJlYW0pCit7CisgICAgaWYgKEBpc1dyaXRhYmxlU3RyZWFtTG9ja2VkKHN0cmVh
bSkpCisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJXcml0
YWJsZVN0cmVhbS5jbG9zZSBtZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBub24gbG9ja2VkIFdy
aXRhYmxlU3RyZWFtIikpOworCisgICAgaWYgKEB3cml0YWJsZVN0cmVhbUNsb3NlUXVldWVkT3JJ
bkZsaWdodChzdHJlYW0pKQorICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5
cGVFcnJvcigiV3JpdGFibGVTdHJlYW0uY2xvc2UgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24g
YSBiZWluZyBjbG9zZSBXcml0YWJsZVN0cmVhbSIpKTsKKworICAgIHJldHVybiBAd3JpdGFibGVT
dHJlYW1DbG9zZShzdHJlYW0pOworfQorCitmdW5jdGlvbiB3cml0YWJsZVN0cmVhbUFib3J0Rm9y
QmluZGluZ3Moc3RyZWFtLCByZWFzb24pCit7CisgICAgaWYgKEBpc1dyaXRhYmxlU3RyZWFtTG9j
a2VkKHN0cmVhbSkpCisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVy
cm9yKCJXcml0YWJsZVN0cmVhbS5hYm9ydCBtZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBub24g
bG9ja2VkIFdyaXRhYmxlU3RyZWFtIikpOworCisgICAgcmV0dXJuIEB3cml0YWJsZVN0cmVhbUFi
b3J0KHN0cmVhbSwgcmVhc29uKTsKK30KKwogZnVuY3Rpb24gaXNXcml0YWJsZVN0cmVhbUxvY2tl
ZChzdHJlYW0pCiB7CiAgICAgcmV0dXJuIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShzdHJlYW0sICJ3
cml0ZXIiKSAhPT0gQHVuZGVmaW5lZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZmVmZjlkMDU5ZGY4ZmMz
ZDliMjhjODBmN2EwNjBlZmZjNTU4MTNlOC4uZDYyYzA5ODA5NjMxODZmZjY4ZDE2NzcxNDg1ZTMx
MTU0ZjY5MDUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIzNSw2ICsyMzUsNyBAQCBNb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKIE1vZHVsZXMvc3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAKIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwCiBNb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuY3BwCitNb2R1bGVzL3N0cmVhbXMvV3JpdGFi
bGVTdHJlYW0uY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAKIE1vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlLmNwcApAQCAtNDI3LDYgKzQyOCw3IEBAIGJpbmRpbmdzL2pzL0RPTUdD
T3V0cHV0Q29uc3RyYWludC5jcHAKIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKIGJp
bmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRp
ZXMuY3BwCitiaW5kaW5ncy9qcy9JbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmNwcAogYmluZGluZ3Mv
anMvSlNBYm9ydFNpZ25hbEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTQWJzdHJhY3RSYW5nZUN1
c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTQW5pbWF0aW9uRWZmZWN0Q3VzdG9tLmNwcApAQCAtNTcw
LDcgKzU3Miw2IEBAIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCiBiaW5kaW5n
cy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCiBiaW5kaW5ncy9qcy9Xb3JrZXJN
b2R1bGVTY3JpcHRMb2FkZXIuY3BwCiBiaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5jcHAKLWJpbmRp
bmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcAogYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCiBicmlk
Z2UvTlBfanNvYmplY3QuY3BwCiBicmlkZ2UvYy9DUnVudGltZU9iamVjdC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNmMw
ZTNjN2YwZDU4ZmVlYTgwODU5YzE5OGIyMjEyZTAwMTcxN2FhLi44OGIyYjgxNjRhZjFlMTZmYTg4
YmFkNzk0MzcyZjFhOTEwMjc5MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTE0LDcgKzExMTQsNiBAQAogCQk0MTZFNkZF
ODFCQkQxMkRGMDAwQTYwNDMgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2
MUJCMzExMEQwMEI3M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2
RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFC
QjMxMTBEMDBCNzY0RTkgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJC
RDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDgg
LyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJs
ZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlu
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
NkVDQUU1MjVCNThDQzQwMEIzNERBNSAvKiBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkVDQUUzMjVC
NThDQzQwMEIzNERBNSAvKiBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFREJGNjI2MDBENjc5
MDAwOTI2NzUgLyogUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFREJGNDI2MDBENjc4MDAwOTI2NzUg
LyogUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RURDMDAyNjAwRTc4ODAwMDkyNjc1IC8qIFJU
Q0RhdGFDaGFubmVsSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE2RURCRkYyNjAwRTc4NzAwMDkyNjc1IC8qIFJUQ0RhdGFDaGFubmVs
SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC03ODMwLDggKzc4MjksOCBAQAogCQk0MTQxODlGRjI1NjQxOEU3MDAzNjM0MTcgLyog
UlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTQxOEEwMDI1NjQzNTk3MDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW1TaW5rLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXcml0YWJsZVN0cmVhbVNpbmsuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTQxOEEwMjI1NjQzNTk4MDAzNjM0MTcgLyogV3JpdGFibGVT
dHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3Ry
ZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTQxOEEwMzI1NjQzRTEy
MDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV3JpdGFibGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDMyNTY0M0UxMjAwMzYzNDE3IC8qIEludGVybmFsV3Jp
dGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50
ZXJuYWxXcml0YWJsZVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
NDE4QTA0MjU2NDNFMTMwMDM2MzQxNyAvKiBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsV3JpdGFibGVTdHJlYW0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0MThBMDUyNTY2NjBBRjAwMzYzNDE3IC8qIFJU
Q0VuY29kZWRGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
VENFbmNvZGVkRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQxOEEw
NjI1NjY2MEIwMDAzNjM0MTcgLyogUlRDRW5jb2RlZEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJUQ0VuY29kZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTQ0NjBBMDI0MTI5OTQxMDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25JZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MTI4LDYgKzgxMjcsOCBAQAog
CQk0MUU1OTQwMTIxNDg2NUFCMDBEM0NCNjEgLyogUlRDUnRwRmVjUGFyYW1ldGVycy5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gUlRDUnRwRmVjUGFyYW1ldGVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRTY3QTdGMjVEMTY4NDYwMDdCMEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1RVTk1lc3NhZ2VQYXJzaW5nLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFNjdBODEyNUQxNjg0NzAwN0IwQTRDIC8q
IFNUVU5NZXNzYWdlUGFyc2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VFVOTWVzc2FnZVBhcnNpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFNkQ3
MjEyNkVBQTA0NTAwQjc2NUQ2IC8qIFdyaXRhYmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxRTZENzIyMjZFQUEwNDYwMEI3NjVENiAvKiBXcml0YWJsZVN0cmVhbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0YWJsZVN0cmVhbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTlEQ0U0MjMxOTczRkUwMEYzNTk0OSAvKiBC
bG9iTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2JMb2FkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFOURDRTYyMzE5NzQyMzAwRjM1OTQ5
IC8qIEVuZGluZ1R5cGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVuZGluZ1R5cGUuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUU5RENFODIzMTlDQTc1MDBGMzU5NDkg
LyogTmV0d29ya1NlbmRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
ZXR3b3JrU2VuZFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjI0OSw3
ICsxMjI1MCw2IEBACiAJCTk5MDhCMEVEMUJDQUNGOTEwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTkwOEIwRUUxQkNBQ0Y5MTAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5LmpzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQ291bnRRdWV1aW5nU3RyYXRl
Z3kuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEVGMUJDQUNGOTEwMEVE
MEY2NSAvKiBSZWFkYWJsZVN0cmVhbS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5OTA4QjBFRjFCQ0FDRjkxMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW0uanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBXcml0YWJsZVN0cmVhbS5qczsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjAxQkNBQ0Y5MTAwRUQwRjY1IC8qIFJlYWRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGMDFCQ0FDRjkxMDBFRDNGNjQgLyogUmVhZGFi
bGVCeXRlU3RyZWFtQ29udHJvbGxlci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgcGF0aCA9IFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuanM7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk5MDhCMEYwMUJDQUNGOTEwMEVENTY3MiAvKiBSZWFkYWJsZVN0cmVh
bUJZT0JSZXF1ZXN0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
UmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEyMjY0LDcgKzEyMjY0LDYgQEAKIAkJOTkwOEIwRjYxQkNBRDA3RDAwRUQwRjY1IC8qIENv
dW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHA7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5OTA4QjBGNzFCQ0FEMDdEMDBFRDBG
NjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmg7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0NvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTkwOEIwRjkxQkNBRDA3RDAwRUQwRjY1
IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gUmVhZGFibGVTdHJlYW1CdWlsdGlucy5jcHA7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL1JlYWRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwotCQk5OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFi
bGVTdHJlYW1CdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTk5MDhCMEZBMUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmNwcDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ckJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTkw
OEIwRkIxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJC
dWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5MDhCMEZEMUJDQUQwN0QwMEVEMEY1NSAvKiBT
dHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL1N0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKQEAgLTEyMzA0LDcgKzEyMzAzLDYgQEAKIAkJOUIwM0Q4MDYxQkIz
MTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9SZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFk
YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0REEg
LyogSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01CaW5kaW5nSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4
IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9Xcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRFOSAvKiBXcml0YWJsZVN0cmVhbUlu
dGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdyaXRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RUEgLyogVHJhbnNmb3Jt
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvVHJhbnNmb3JtU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOUIwOThCRDUxRjNENjAzMzAwMkRENTYyIC8q
IERhdGFUcmFuc2Zlckl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRGF0YVRyYW5zZmVySXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
OTY0OSw4ICsxOTY0Nyw5IEBACiAJCQkJNDFGQ0E1RkEyNEVBQUYxNjAwNUUxQkE2IC8qIFRyYW5z
Zm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmlkbCAqLywKIAkJCQk0MUZDQTVGQjI0RUFBRjE2
MDA1RTFCQTYgLyogVHJhbnNmb3JtU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgKi8sCiAJCQkJ
NDFGQ0E1RkMyNEVBQjc4MDAwNUUxQkE2IC8qIFRyYW5zZm9ybVN0cmVhbUludGVybmFscy5qcyAq
LywKKwkJCQk0MUU2RDcyMjI2RUFBMDQ2MDBCNzY1RDYgLyogV3JpdGFibGVTdHJlYW0uY3BwICov
LAorCQkJCTQxRTZENzIxMjZFQUEwNDUwMEI3NjVENiAvKiBXcml0YWJsZVN0cmVhbS5oICovLAog
CQkJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJERiAvKiBXcml0YWJsZVN0cmVhbS5pZGwgKi8sCi0J
CQkJOTkwOEIwRUYxQkNBQ0Y5MTAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtLmpzICovLAogCQkJ
CTQxNzY2NzM0MjREQzA4RUIwMDhCRkUyOCAvKiBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9s
bGVyLmlkbCAqLywKIAkJCQk0MTc2NjczMzI0REMwOEVCMDA4QkZFMjggLyogV3JpdGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5qcyAqLywKIAkJCQk0MTc2NjczMDI0REMwOEVBMDA4QkZFMjgg
LyogV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyLmlkbCAqLywKQEAgLTIxNzU2LDggKzIxNzU1
LDYgQEAKIAkJCQlDMjFCRjc0MjIxQ0Q5NjNCMDAyMjc5NzkgLyogV0hMU0xTdGFuZGFyZExpYnJh
cnkuaCAqLywKIAkJCQkxQzUwQzQ5NTIyQzg0RjI0MDBBNkU0QkUgLyogV0hMU0xTdGFuZGFyZExp
YnJhcnlGdW5jdGlvbk1hcC5jcHAgKi8sCiAJCQkJNTE3NDhGQTIxQ0M2RUVFQjAwNzI4RDg0IC8q
IFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCAqLywKLQkJCQk5OTA4QjBGOTFCQ0FE
MDdEMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHAgKi8sCi0JCQkJOUIwM0Q4
MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLywKIAkJCQk5
OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
cy5jcHAgKi8sCiAJCQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRhYmxlU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuaCAqLywKIAkJCQk2NTY1ODFFQTA5RDE1MDhEMDAwRTYxRDcgLyog
WExpbmtOYW1lcy5jcHAgKi8sCkBAIC0yNzEzNSw2ICsyNzEzMiw4IEBACiAJCQkJMTQzMkU4NDYw
QzUxNDkzODAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5oICovLAogCQkJCUM1ODVBNjYwMTFENEZB
QzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmNwcCAqLywKIAkJCQlDNTg1QTY2MTEx
RDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5oICovLAorCQkJCTQxNDE4QTAz
MjU2NDNFMTIwMDM2MzQxNyAvKiBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmNwcCAqLywKKwkJCQk0
MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyogSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5oICovLAog
CQkJCTlCRDRFOTE0MUM0NjI4NzIwMDUwNjVCQyAvKiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2Uu
Y3BwICovLAogCQkJCTlCRDRFOTE1MUM0NjI4NzIwMDUwNjVCQyAvKiBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuaCAqLywKIAkJCQk3QzU3QkZFNjFFREUyRjVCMDA1MzRBNDggLyogSlNET01BYnN0
cmFjdE9wZXJhdGlvbnMuaCAqLywKQEAgLTI3MjI5LDggKzI3MjI4LDYgQEAKIAkJCQlFMzQzMkRF
MzI1RDM3N0UzMDA1OEU2MTIgLyogV29ya2VyTW9kdWxlU2NyaXB0TG9hZGVyLmNwcCAqLywKIAkJ
CQlFMzQzMkRFMDI1RDM3N0UyMDA1OEU2MTIgLyogV29ya2VyTW9kdWxlU2NyaXB0TG9hZGVyLmgg
Ki8sCiAJCQkJRTM0N0U1RjgyNUQ0RjAwMDAwRjE3QTVDIC8qIFdvcmtlclNjcmlwdEZldGNoZXIu
aCAqLywKLQkJCQk0MTQxOEEwMzI1NjQzRTEyMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uY3Bw
ICovLAotCQkJCTQxNDE4QTA0MjU2NDNFMTMwMDM2MzQxNyAvKiBXcml0YWJsZVN0cmVhbS5oICov
LAogCQkJKTsKIAkJCXBhdGggPSBqczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0z
NTYxNiw3ICszNTYxMyw3IEBACiAJCQkJODM0QTZBM0EyNTI2ODQ0QTAwNzQ3RjVEIC8qIFdvcmts
ZXRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzNCRDgxNzI1MjRENEYyMDA2RTcy
QjMgLyogV29ya2xldFBlbmRpbmdUYXNrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQw
OTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFt
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRTZENzIzMjZFQUEwNDYwMEI3NjVENiAv
KiBXcml0YWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJERjAw
MEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTlCQUYzQjI0MTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDQ3NkFBODE1REM0QkIxMDAzMDVEQjIgLyogV3JpdGluZ01vZGUu
aCBpbiBIZWFkZXJzICovLApAQCAtMzY4NjcsNiArMzY4NjQsNyBAQAogCQkJCUUxRUU4QjkxMjQx
MzE5NTAwMEU3OTRENiAvKiBXZWJYUlZpZXdwb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
RUU4QjgzMjQxMzE5MUYwMEU3OTRENiAvKiBXZWJYUldlYkdMTGF5ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE0ODMyQzIxODdGNjVDNzAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmMgaW4gU291
cmNlcyAqLywKKwkJCQk0MUU2RDcyNDI2RUFBMDQ2MDBCNzY1RDYgLyogV3JpdGFibGVTdHJlYW0u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0MwQTJDRjA3NDAwRDU3NjY0IC8qIFhMaW5r
TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M4MEMwQTJDRjI1NjAwRDU3NjY0IC8q
IFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNUEzNkQ5MTEwNDU3MjcwMEI3QjYz
OSAvKiBYTUxOU05hbWVzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9JbnRlcm5hbFdyaXRhYmxlU3RyZWFtLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
MGFhNmFmOGRkMTM2ZDVkOGNiN2RiN2FmODBiNGJlN2UzNzE0OWYzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5jcHAK
QEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQ0FOT04gSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRlcm5hbFdyaXRh
YmxlU3RyZWFtLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEV4Y2VwdGlv
bk9yPEpTQzo6SlNWYWx1ZT4gaW52b2tlV3JpdGFibGVTdHJlYW1GdW5jdGlvbihKU0M6OkpTR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgaWRlbnRpZmll
ciwgY29uc3QgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJndW1lbnRzKQoreworICAgIEpT
Qzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7CisKKyAgICBhdXRvIGZ1bmN0aW9uID0gZ2xvYmFsT2JqZWN0LmdldCgmZ2xvYmFsT2Jq
ZWN0LCBpZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoZnVuY3Rpb24uaXNDYWxsYWJsZSh2bSkpOwor
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8gY2Fs
bERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CisKKyAgICBhdXRvIHJlc3Vs
dCA9IGNhbGwoJmdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCBKU0M6OmpzVW5kZWZp
bmVkKCksIGFyZ3VtZW50cyk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsKKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxJbnRlcm5hbFdyaXRhYmxl
U3RyZWFtPj4gSW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6Y3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB1bmRlcmx5aW5nU2luaywgSlNDOjpKU1ZhbHVl
IHN0cmF0ZWd5KQoreworICAgIGF1dG8qIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KGdsb2JhbE9iamVjdC52bSgpLmNsaWVudERhdGEpOworICAgIGF1dG8mIHByaXZh
dGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLndyaXRhYmxlU3RyZWFtSW50
ZXJuYWxzQnVpbHRpbnMoKS5jcmVhdGVJbnRlcm5hbFdyaXRhYmxlU3RyZWFtUHJpdmF0ZU5hbWUo
KTsKKworICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3Vt
ZW50cy5hcHBlbmQodW5kZXJseWluZ1NpbmspOworICAgIGFyZ3VtZW50cy5hcHBlbmQoc3RyYXRl
Z3kpOworICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICBhdXRv
IHJlc3VsdCA9IGludm9rZVdyaXRhYmxlU3RyZWFtRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBwcml2
YXRlTmFtZSwgYXJndW1lbnRzKTsKKyAgICBpZiAoVU5MSUtFTFkocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBB
U1NFUlQocmVzdWx0LnJldHVyblZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSW50ZXJuYWxXcml0YWJsZVN0cmVhbShnbG9iYWxPYmplY3QsICpyZXN1bHQucmV0
dXJuVmFsdWUoKS50b09iamVjdCgmZ2xvYmFsT2JqZWN0KSkpOworfQorCitib29sIEludGVybmFs
V3JpdGFibGVTdHJlYW06OmxvY2tlZCgpIGNvbnN0Cit7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0
ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKGds
b2JhbE9iamVjdC0+dm0oKSk7CisKKyAgICBhdXRvKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPihnbG9iYWxPYmplY3QtPnZtKCkuY2xpZW50RGF0YSk7CisgICAgYXV0
byYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkud3JpdGFibGVT
dHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLmlzV3JpdGFibGVTdHJlYW1Mb2NrZWRQcml2YXRlTmFt
ZSgpOworCisgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJn
dW1lbnRzLmFwcGVuZChndWFyZGVkT2JqZWN0KCkpOworICAgIEFTU0VSVCghYXJndW1lbnRzLmhh
c092ZXJmbG93ZWQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IGludm9rZVdyaXRhYmxlU3RyZWFt
RnVuY3Rpb24oKmdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CisgICAgaWYg
KHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworCisg
ICAgcmV0dXJuIHJlc3VsdC5oYXNFeGNlcHRpb24oKSA/IGZhbHNlIDogcmVzdWx0LnJldHVyblZh
bHVlKCkuaXNUcnVlKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6bG9jaygp
Cit7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisgICAg
aWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX0NBVENIX1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7CisKKyAgICBhdXRvKiBjbGll
bnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihnbG9iYWxPYmplY3QtPnZtKCku
Y2xpZW50RGF0YSk7CisgICAgYXV0byYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGlu
RnVuY3Rpb25zKCkud3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLmFjcXVpcmVXcml0
YWJsZVN0cmVhbURlZmF1bHRXcml0ZXJQcml2YXRlTmFtZSgpOworCisgICAgSlNDOjpNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChndWFyZGVkT2Jq
ZWN0KCkpOworICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICBp
bnZva2VXcml0YWJsZVN0cmVhbUZ1bmN0aW9uKCpnbG9iYWxPYmplY3QsIHByaXZhdGVOYW1lLCBh
cmd1bWVudHMpOworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAg
IHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Cit9CisKK0pTQzo6SlNWYWx1ZSBJbnRlcm5hbFdyaXRh
YmxlU3RyZWFtOjphYm9ydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSByZWFzb24pCit7CisgICAgYXV0byogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4oZ2xvYmFsT2JqZWN0LnZtKCkuY2xpZW50RGF0YSk7CisgICAgYXV0byYg
cHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkud3JpdGFibGVTdHJl
YW1JbnRlcm5hbHNCdWlsdGlucygpLndyaXRhYmxlU3RyZWFtQWJvcnRGb3JCaW5kaW5nc1ByaXZh
dGVOYW1lKCk7CisKKyAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAg
ICBhcmd1bWVudHMuYXBwZW5kKGd1YXJkZWRPYmplY3QoKSk7CisgICAgYXJndW1lbnRzLmFwcGVu
ZChyZWFzb24pOworICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAg
ICBhdXRvIHJlc3VsdCA9IGludm9rZVdyaXRhYmxlU3RyZWFtRnVuY3Rpb24oZ2xvYmFsT2JqZWN0
LCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIHJlc3VsdC5yZXR1cm5WYWx1ZSgp
OworfQorCitKU0M6OkpTVmFsdWUgSW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6Y2xvc2UoSlNDOjpK
U0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIGF1dG8qIGNsaWVudERhdGEgPSBz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KGdsb2JhbE9iamVjdC52bSgpLmNsaWVudERhdGEp
OworICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygp
LndyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS53cml0YWJsZVN0cmVhbUNsb3NlRm9y
QmluZGluZ3NQcml2YXRlTmFtZSgpOworCisgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChndWFyZGVkT2JqZWN0KCkpOworICAgIEFT
U0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IGlu
dm9rZVdyaXRhYmxlU3RyZWFtRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBwcml2YXRlTmFtZSwgYXJn
dW1lbnRzKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgcmV0dXJuIHJlc3VsdC5yZXR1cm5WYWx1ZSgpOworfQorCitKU0M6OkpTVmFs
dWUgSW50ZXJuYWxXcml0YWJsZVN0cmVhbTo6Z2V0V3JpdGVyKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3sKKyAgICBhdXRvKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPihnbG9iYWxPYmplY3Qudm0oKS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBw
cml2YXRlTmFtZSA9IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS53cml0YWJsZVN0cmVh
bUludGVybmFsc0J1aWx0aW5zKCkuYWNxdWlyZVdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlclBy
aXZhdGVOYW1lKCk7CisKKyAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsK
KyAgICBhcmd1bWVudHMuYXBwZW5kKGd1YXJkZWRPYmplY3QoKSk7CisgICAgQVNTRVJUKCFhcmd1
bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKKworICAgIGF1dG8gcmVzdWx0ID0gaW52b2tlV3JpdGFi
bGVTdHJlYW1GdW5jdGlvbihnbG9iYWxPYmplY3QsIHByaXZhdGVOYW1lLCBhcmd1bWVudHMpOwor
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICByZXR1cm4gcmVzdWx0LnJldHVyblZhbHVlKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ludGVybmFsV3JpdGFibGVTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0ludGVybmFsV3JpdGFibGVTdHJlYW0uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
MGFhYTI3M2U2NmNiZTE2N2EzOTNiNzFkMjBiNjgyMWFiZjU2ZWU1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSW50ZXJuYWxXcml0YWJsZVN0cmVhbS5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBDQU5PTiBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
Q0FOT04gSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNs
dWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09i
amVjdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnRlcm5hbFdyaXRhYmxlU3Ry
ZWFtIGZpbmFsIDogcHVibGljIERPTUd1YXJkZWQ8SlNDOjpKU09iamVjdD4geworcHVibGljOgor
ICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW50ZXJuYWxXcml0YWJsZVN0cmVhbT4+IGNyZWF0
ZShKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSB1bmRlcmx5aW5nU2luaywgSlNDOjpK
U1ZhbHVlIHN0cmF0ZWd5KTsKKworICAgIG9wZXJhdG9yIEpTQzo6SlNWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIGd1YXJkZWQoKTsgfQorCisgICAgYm9vbCBsb2NrZWQoKSBjb25zdDsKKyAgICB2b2lk
IGxvY2soKTsKKyAgICBKU0M6OkpTVmFsdWUgYWJvcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Qzo6SlNWYWx1ZSk7CisgICAgSlNDOjpKU1ZhbHVlIGNsb3NlKEpTQzo6SlNHbG9iYWxPYmplY3Qm
KTsKKyAgICBKU0M6OkpTVmFsdWUgZ2V0V3JpdGVyKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKwor
cHJpdmF0ZToKKyAgICBJbnRlcm5hbFdyaXRhYmxlU3RyZWFtKEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QmIGpzT2JqZWN0KQorICAgICAgICA6IERPTUd1YXJk
ZWQ8SlNDOjpKU09iamVjdD4oZ2xvYmFsT2JqZWN0LCBqc09iamVjdCkKKyAgICB7CisgICAgfQor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IDkxNmQzM2Q5ZGU3NGYyMjEzZGJlMzM0M2VmZjNkMDJhM2FjMzUzY2QuLmEw
MDc0MzE0MmQ4YzAwMDQ4NjQ5NGRmNDg1MDAwY2IwMzhjZGZiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ2LDYgKzQ2LDcg
QEAKICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTV29ya2VyR2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1dvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUg
IkpTV3JpdGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJSZWplY3RlZFByb21pc2VUcmFja2VyLmgi
CiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdE1v
ZHVsZUxvYWRlci5oIgpAQCAtNzEsNiArNzIsNyBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KG1ha2VUaGlzVHlwZUVycm9yRm9yQnVpbHRpbnMpOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihtYWtlR2V0dGVyVHlwZUVycm9yRm9yQnVpbHRpbnMpOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihtYWtlRE9NRXhjZXB0aW9uRm9yQnVpbHRpbnMpOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihpc1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQpOworSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihnZXRJbnRlcm5hbFdyaXRhYmxlU3RyZWFtKTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oaXNXcml0YWJsZVN0cmVhbUFQSUVuYWJsZWQpOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTih3aGVuU2lnbmFsQWJvcnRlZCk7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGlzQWJv
cnRTaWduYWwpOwpAQCAtMTYzLDYgKzE2NSwxOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
aXNXcml0YWJsZVN0cmVhbUFQSUVuYWJsZWQsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkud3JpdGFibGVTdHJlYW1BUElFbmFibGVkKCkpKTsKIH0KIAor
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdldEludGVybmFsV3JpdGFibGVTdHJlYW0sIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
QVNTRVJUKGNhbGxGcmFtZSk7CisgICAgQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
ID09IDEpOworCisgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byog
d3JpdGFibGVTdHJlYW0gPSBqc0R5bmFtaWNDYXN0PEpTV3JpdGFibGVTdHJlYW0qPih2bSwgY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgaWYgKFVOTElLRUxZKCF3cml0YWJs
ZVN0cmVhbSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh3cml0YWJsZVN0cmVhbS0+d3JhcHBlZCgpLmlu
dGVybmFsV3JpdGFibGVTdHJlYW0oKSk7Cit9CisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3
aGVuU2lnbmFsQWJvcnRlZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKIHsKICAgICBBU1NFUlQoY2FsbEZyYW1lKTsKQEAgLTIxNCw2ICsyMjgs
NyBAQCBTVVBQUkVTU19BU0FOIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmFkZEJ1aWx0aW5HbG9i
YWxzKFZNJiB2bSkKICAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5m
byhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLnJlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWRQ
cml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBp
c1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAgICAgICAgIEpTRE9NR2xvYmFs
T2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS53cml0
YWJsZVN0cmVhbUFQSUVuYWJsZWRQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDAsIFN0cmluZygpLCBpc1dyaXRhYmxlU3RyZWFtQVBJRW5hYmxlZCksIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAg
ICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5mbyhjbGllbnREYXRhLmJ1
aWx0aW5OYW1lcygpLmlzQWJvcnRTaWduYWxQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBpc0Fib3J0U2lnbmFsKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAorICAgICAgICBK
U0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5h
bWVzKCkuZ2V0SW50ZXJuYWxXcml0YWJsZVN0cmVhbVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGdldEludGVybmFsV3JpdGFibGVTdHJlYW0p
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9B
UlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IGQ0ZDEzMjQyOTI5N2M4YTIyNzk4
YjlmZDlkNTdkNGE3ZTQxZGUxZmEuLjViOTQzMWVjN2U0M2JlNWYwMjZmNmU4YmEzOGEyYWExMzc2
NjBlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWls
dGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRp
bk5hbWVzLmgKQEAgLTM0OCw2ICszNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFj
cm8oZmx1c2hBbGdvcml0aG0pIFwKICAgICBtYWNybyhmb2N1cykgXAogICAgIG1hY3JvKGZyYW1l
cykgXAorICAgIG1hY3JvKGdldEludGVybmFsV3JpdGFibGVTdHJlYW0pIFwKICAgICBtYWNybyhn
ZXRUcmFja3MpIFwKICAgICBtYWNybyhnZXRVc2VyTWVkaWEpIFwKICAgICBtYWNybyhncHUpIFwK
QEAgLTM1OSw2ICszNjAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oaW5GbGln
aHRXcml0ZVJlcXVlc3QpIFwKICAgICBtYWNybyhpbmRleGVkREIpIFwKICAgICBtYWNybyhpbml0
aWFsaXplV2l0aCkgXAorICAgIG1hY3JvKGludGVybmFsU3RyZWFtKSBcCisgICAgbWFjcm8oaW50
ZXJuYWxXcml0YWJsZSkgXAogICAgIG1hY3JvKGlzQWJvcnRTaWduYWwpIFwKICAgICBtYWNybyhp
c0Rpc3R1cmJlZCkgXAogICAgIG1hY3JvKGlzTG9hZGluZykgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiZmE5YzM3MjFkM2ZjNGIxOTU1NTQxZWIxNGVkNzE5ZDcyNzMzZmQxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FO
T04gSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV3JpdGFibGVTdHJlYW0uaCIKLQotI2luY2x1ZGUg
IkV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJKU0RP
TUNvbnZlcnRTZXF1ZW5jZXMuaCIKLSNpbmNsdWRlICJKU1dyaXRhYmxlU3RyZWFtU2luay5oIgot
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV3JpdGFibGVTdHJlYW1JbnRlcm5h
bCB7Ci1zdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsRnVuY3Rpb24oSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGpzRnVuY3Rpb24sIEpT
Qzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJndW1lbnRzKQotewot
ICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKLSAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgYXV0byBjYWxsRGF0YSA9IEpTQzo6Z2V0Q2Fs
bERhdGEodm0sIGpzRnVuY3Rpb24pOwotICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IEpTQzo6
Q2FsbERhdGE6OlR5cGU6Ok5vbmUpOwotICAgIGF1dG8gcmVzdWx0ID0gY2FsbCgmbGV4aWNhbEds
b2JhbE9iamVjdCwganNGdW5jdGlvbiwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJndW1lbnRzKTsK
LSAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1pbmF0aW9uKCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLX0KLQotc3RhdGljIGlubGluZSBib29sIGNoZWNrV3JpdGFibGVTdHJl
YW0oSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNXcml0YWJsZVN0cmVhbSogd3Jp
dGFibGVTdHJlYW0sIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbikKLXsKLSAgICBhdXRvJiBsZXhpY2Fs
R2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OwotCi0gICAgQVNTRVJUKGZ1bmN0aW9uKTsKLSAg
ICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBw
ZW5kKHdyaXRhYmxlU3RyZWFtKTsKLSAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2Vk
KCkpOwotICAgIHJldHVybiBXcml0YWJsZVN0cmVhbUludGVybmFsOjpjYWxsRnVuY3Rpb24obGV4
aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIEpTQzo6anNVbmRlZmluZWQoKSwgYXJndW1lbnRz
KS5pc1RydWUoKTsKLX0KLQotRXhjZXB0aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gV3JpdGFi
bGVTdHJlYW06OmNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBSZWZQdHI8V3JpdGFibGVTdHJlYW1TaW5rPiYmIHNpbmspCi17Ci0gICAgVk0mIHZtID0gbGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLQotICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKTsKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0KLSAgICBh
dXRvKiBjb25zdHJ1Y3RvciA9IEpTQzo6YXNPYmplY3QoZ2xvYmFsT2JqZWN0LmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5Xcml0YWJsZVN0cmVhbVBy
aXZhdGVOYW1lKCkpKTsKLQotICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERh
dGEodm0sIGNvbnN0cnVjdG9yKTsKLSAgICBBU1NFUlQoY29uc3RydWN0RGF0YS50eXBlICE9IENh
bGxEYXRhOjpUeXBlOjpOb25lKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0g
ICAgYXJncy5hcHBlbmQoc2luayA/IHRvSlNOZXdseUNyZWF0ZWQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsICZnbG9iYWxPYmplY3QsIHNpbmsucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzVW5kZWZp
bmVkKCkpOwotICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwotCi0gICAgSlNPYmpl
Y3QqIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1
Y3RvciwgY29uc3RydWN0RGF0YSwgYXJncyk7Ci0gICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9u
KCkgPT0gIW9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9u
IHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLQotICAgIHJldHVybiBjcmVhdGUoZ2xvYmFs
T2JqZWN0LCAqanNDYXN0PEpTV3JpdGFibGVTdHJlYW0qPihvYmplY3QpKTsKLX0KLQotdm9pZCBX
cml0YWJsZVN0cmVhbTo6bG9jaygpCi17Ci0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9
ICptX2dsb2JhbE9iamVjdDsKLSAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7
Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotCi0gICAgYXV0byYg
Y2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
OwotCi0gICAgYXV0byogY29uc3RydWN0b3IgPSBKU0M6OmFzT2JqZWN0KG1fZ2xvYmFsT2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuV3Jp
dGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyUHJpdmF0ZU5hbWUoKSkpOwotCi0gICAgYXV0byBjb25z
dHJ1Y3REYXRhID0gZ2V0Q29uc3RydWN0RGF0YSh2bSwgY29uc3RydWN0b3IpOwotICAgIEFTU0VS
VChjb25zdHJ1Y3REYXRhLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpOwotCi0gICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBhcmdzLmFwcGVuZCh3cml0YWJsZVN0cmVhbSgp
KTsKLSAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKLQotICAgIEpTQzo6Y29uc3Ry
dWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSwgYXJn
cyk7Ci0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwotfQot
Ci1ib29sIFdyaXRhYmxlU3RyZWFtOjppc0xvY2tlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNo
ZWNrV3JpdGFibGVTdHJlYW0oKmdsb2JhbE9iamVjdCgpLCB3cml0YWJsZVN0cmVhbSgpLCBnbG9i
YWxPYmplY3QoKS0+YnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkud3JpdGFibGVTdHJlYW1JbnRl
cm5hbHMoKS5tX2lzV3JpdGFibGVTdHJlYW1Mb2NrZWRGdW5jdGlvbi5nZXQoKSk7Ci19Ci0KLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjNTE4YTk0NTk3NzI0ZTFkNzAxMDFhNjdiY2RiOGVmMzk5NjFm
YWQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw5NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIENBTk9OIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgotI2luY2x1ZGUgIkpTRE9N
R3VhcmRlZE9iamVjdC5oIgotI2luY2x1ZGUgIkpTV3JpdGFibGVTdHJlYW0uaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBXcml0YWJsZVN0cmVhbVNpbms7Ci0KLWNsYXNzIFdyaXRh
YmxlU3RyZWFtIGZpbmFsIDogcHVibGljIERPTUd1YXJkZWQ8SlNXcml0YWJsZVN0cmVhbT4gewot
cHVibGljOgotICAgIHN0YXRpYyBSZWY8V3JpdGFibGVTdHJlYW0+IGNyZWF0ZShKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1dyaXRhYmxlU3RyZWFtJiBqc1N0cmVhbSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXcml0YWJsZVN0cmVhbShnbG9iYWxPYmplY3QsIGpzU3RyZWFtKSk7
IH0KLQotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8V3JpdGFibGVTdHJlYW0+PiBjcmVhdGUo
SlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZlB0cjxXcml0YWJsZVN0cmVhbVNpbms+JiYpOwotICAg
IEpTV3JpdGFibGVTdHJlYW0qIHdyaXRhYmxlU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gZ3VhcmRl
ZCgpOyB9Ci0KLSAgICB2b2lkIGxvY2soKTsKLSAgICBib29sIGlzTG9ja2VkKCkgY29uc3Q7Ci0K
LXByaXZhdGU6Ci0gICAgV3JpdGFibGVTdHJlYW0oSlNET01HbG9iYWxPYmplY3QmLCBKU1dyaXRh
YmxlU3RyZWFtJik7Ci19OwotCi1zdHJ1Y3QgSlNXcml0YWJsZVN0cmVhbVdyYXBwZXJDb252ZXJ0
ZXIgewotICAgIHN0YXRpYyBSZWZQdHI8V3JpdGFibGVTdHJlYW0+IHRvV3JhcHBlZChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUpCi0g
ICAgewotICAgICAgICBKU0M6OlZNJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwotICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPih2bSwgJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICBpZiAo
IWdsb2JhbE9iamVjdCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIGF1
dG8qIFdyaXRhYmxlU3RyZWFtID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTV3JpdGFibGVTdHJlYW0q
Pih2bSwgdmFsdWUpOwotICAgICAgICBpZiAoIVdyaXRhYmxlU3RyZWFtKQotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgcmV0dXJuIFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUo
Kmdsb2JhbE9iamVjdCwgKldyaXRhYmxlU3RyZWFtKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+
IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8V3JpdGFibGVTdHJlYW0+IHsKLSAg
ICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1dyaXRhYmxlU3RyZWFtV3JhcHBlckNvbnZlcnRlcjsK
LSAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gUmVmUHRyPFdyaXRhYmxlU3RyZWFtPjsK
LSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNTdGF0ZSA9IHRydWU7Ci19OwotCi1pbmxp
bmUgV3JpdGFibGVTdHJlYW06OldyaXRhYmxlU3RyZWFtKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIEpTV3JpdGFibGVTdHJlYW0mIFdyaXRhYmxlU3RyZWFtKQotICAgIDogRE9NR3Vh
cmRlZDxKU1dyaXRhYmxlU3RyZWFtPihnbG9iYWxPYmplY3QsIFdyaXRhYmxlU3RyZWFtKQotewot
fQotCi1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBXcml0YWJsZVN0cmVhbSogc3RyZWFtKQotewotICAgIHJldHVybiBz
dHJlYW0gPyBzdHJlYW0tPndyaXRhYmxlU3RyZWFtKCkgOiBKU0M6OmpzVW5kZWZpbmVkKCk7Ci19
Ci0KLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIFdyaXRhYmxlU3RyZWFtJiBzdHJlYW0pCi17Ci0gICAgcmV0dXJuIHN0
cmVhbS53cml0YWJsZVN0cmVhbSgpOwotfQotCi1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXds
eUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFdy
aXRhYmxlU3RyZWFtPiYmIHN0cmVhbSkKLXsKLSAgICByZXR1cm4gc3RyZWFtLT53cml0YWJsZVN0
cmVhbSgpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDFmMjRmMWViMDEwYjNjNTRiNzM0NTRhNTZmMjA5M2Iz
ZTU3MDdjNTMuLmMzMWE5NjFkZDVhYzJjYjM3NDdlY2NkODRjZTdhZjczNTE2OWE4ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CkBAIC02MjcsMTEgKzYyNyw2IEBAIHN1YiBBZGRUb0luY2x1ZGVzRm9ySURMVHlwZQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCR0eXBlLT5uYW1lIGVxICJXcml0YWJsZVN0cmVh
bSIpIHsKLSAgICAgICAgQWRkVG9JbmNsdWRlcygiV3JpdGFibGVTdHJlYW0uaCIsICRpbmNsdWRl
c1JlZiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmICgk
dHlwZS0+bmFtZSBlcSAiWFBhdGhOU1Jlc29sdmVyIikgewogICAgICAgICBBZGRUb0luY2x1ZGVz
KCJKU1hQYXRoTlNSZXNvbHZlci5oIiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwogICAg
ICAgICBBZGRUb0luY2x1ZGVzKCJKU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIuaCIsICRpbmNs
dWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4
IDhjZDM3MTM3MzExNWQ0MTFjZjVkN2U0N2RhNGExM2YzN2E1ZTBhYzUuLjg1ZWQ5YjU0NTE3NTU2
NTlkNzljM2JhYjVjODFlMGMzMWU4MzI1NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA5LTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0byBzdWJjbGFzcyBXcml0YWJsZVN0cmVhbQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMTQ2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFueS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJl
YW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50
eHQ6CisKIDIwMjEtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBGb250RmFjZVNldC5sb2FkKCkgbmVlZHMgdG8gcmVhY3QgdG8gc3R5bGUg
Y2hhbmdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL2lkbGhhcm5lc3MuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9pZGxoYXJuZXNzLmFueS1l
eHBlY3RlZC50eHQKaW5kZXggOTNmYWQxM2ViNjNhYjg3M2VkZDNmZDY2ZGZlM2FhMDVlYjY0MjAz
MS4uOTkyYjllMGVkODQyN2NmMTRmNDk4M2MyNGFhNzQxYzNjNDFkMDZiNSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lkbGhh
cm5lc3MuYW55LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnktZXhwZWN0ZWQudHh0CkBAIC0x
MjgsNyArMTI4LDcgQEAgUEFTUyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBh
bmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG8KIFBBU1MgV3JpdGFibGVTdHJl
YW0gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3Rv
dHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5CiBQQVNTIFdyaXRhYmxlU3RyZWFt
IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5
cGUgb2JqZWN0J3MgQEB1bnNjb3BhYmxlcyBwcm9wZXJ0eQogUEFTUyBXcml0YWJsZVN0cmVhbSBp
bnRlcmZhY2U6IGF0dHJpYnV0ZSBsb2NrZWQKLUZBSUwgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNl
OiBvcGVyYXRpb24gYWJvcnQob3B0aW9uYWwgYW55KSBhc3NlcnRfZXF1YWxzOiBwcm9wZXJ0eSBo
YXMgd3JvbmcgLmxlbmd0aCBleHBlY3RlZCAwIGJ1dCBnb3QgMQorUEFTUyBXcml0YWJsZVN0cmVh
bSBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhYm9ydChvcHRpb25hbCBhbnkpCiBQQVNTIFdyaXRhYmxl
U3RyZWFtIGludGVyZmFjZTogb3BlcmF0aW9uIGNsb3NlKCkKIFBBU1MgV3JpdGFibGVTdHJlYW0g
aW50ZXJmYWNlOiBvcGVyYXRpb24gZ2V0V3JpdGVyKCkKIFBBU1MgV3JpdGFibGVTdHJlYW0gbXVz
dCBiZSBwcmltYXJ5IGludGVyZmFjZSBvZiBuZXcgV3JpdGFibGVTdHJlYW0oKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2lk
bGhhcm5lc3MuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dAppbmRleCA5M2ZhZDEzZWI2M2FiODczZWRkM2ZkNjZkZmUzYWEwNWViNjQyMDMxLi45
OTJiOWUwZWQ4NDI3Y2YxNGY0OTgzYzI0YWE3NDFjM2M0MWQwNmI1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVz
cy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvaWRsaGFybmVzcy5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dApAQCAtMTI4LDcgKzEyOCw3IEBAIFBBU1MgV3JpdGFibGVTdHJlYW0gaW50ZXJmYWNlOiBl
eGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvCiBQQVNTIFdy
aXRhYmxlU3RyZWFtIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVy
ZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eQogUEFTUyBXcml0
YWJsZVN0cmVhbSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkKIFBBU1MgV3JpdGFi
bGVTdHJlYW0gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbG9ja2VkCi1GQUlMIFdyaXRhYmxlU3RyZWFt
IGludGVyZmFjZTogb3BlcmF0aW9uIGFib3J0KG9wdGlvbmFsIGFueSkgYXNzZXJ0X2VxdWFsczog
cHJvcGVydHkgaGFzIHdyb25nIC5sZW5ndGggZXhwZWN0ZWQgMCBidXQgZ290IDEKK1BBU1MgV3Jp
dGFibGVTdHJlYW0gaW50ZXJmYWNlOiBvcGVyYXRpb24gYWJvcnQob3B0aW9uYWwgYW55KQogUEFT
UyBXcml0YWJsZVN0cmVhbSBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjbG9zZSgpCiBQQVNTIFdyaXRh
YmxlU3RyZWFtIGludGVyZmFjZTogb3BlcmF0aW9uIGdldFdyaXRlcigpCiBQQVNTIFdyaXRhYmxl
U3RyZWFtIG11c3QgYmUgcHJpbWFyeSBpbnRlcmZhY2Ugb2YgbmV3IFdyaXRhYmxlU3RyZWFtKCkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1z
dHJlYW1zL2dlbmVyYWwuYW55LWV4cGVjdGVkLnR4dAppbmRleCAyOWY3YjIxYjdhOTU0ZmY1NjIy
MjE1MDRjMDhhYWM0ODYyZWNmZTBmLi41MzEzNWQyZjJiMTRmYzVmYjdkNGEwMTRiODlkMmNkYjIx
NDAwMzdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3dyaXRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5hbnktZXhwZWN0ZWQudHh0CkBAIC0xMyw2ICsxMyw2
IEBAIFBBU1MgbWV0aG9kcyBzaG91bGQgbm90IG5vdCBoYXZlIC5hcHBseSgpIG9yIC5jYWxsKCkg
Y2FsbGVkCiBQQVNTIFdyaXRhYmxlU3RyZWFtJ3Mgc3RyYXRlZ3kuc2l6ZSBzaG91bGQgbm90IGJl
IGNhbGxlZCBhcyBhIG1ldGhvZAogUEFTUyByZWR1bmRhbnQgcmVsZWFzZUxvY2soKSBpcyBuby1v
cAogUEFTUyByZWFkeSBwcm9taXNlIHNob3VsZCBmaXJlIGJlZm9yZSBjbG9zZWQgb24gcmVsZWFz
ZUxvY2sKLUZBSUwgU3ViY2xhc3NpbmcgV3JpdGFibGVTdHJlYW0gc2hvdWxkIHdvcmsgYXNzZXJ0
X3RydWU6IFN1YmNsYXNzIG9iamVjdCBzaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgU3ViY2xhc3Mg
ZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK1BBU1MgU3ViY2xhc3NpbmcgV3JpdGFibGVTdHJlYW0g
c2hvdWxkIHdvcmsKIFBBU1MgdGhlIGxvY2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVybiB0cnVlIGlm
IHRoZSBzdHJlYW0gaGFzIGEgd3JpdGVyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93cml0YWJsZS1zdHJlYW1zL2dlbmVy
YWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvd3JpdGFibGUtc3RyZWFtcy9nZW5lcmFsLmFueS53b3Jr
ZXItZXhwZWN0ZWQudHh0CmluZGV4IDI5ZjdiMjFiN2E5NTRmZjU2MjIyMTUwNGMwOGFhYzQ4NjJl
Y2ZlMGYuLjUzMTM1ZDJmMmIxNGZjNWZiN2Q0YTAxNGI4OWQyY2RiMjE0MDAzN2EgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy93
cml0YWJsZS1zdHJlYW1zL2dlbmVyYWwuYW55Lndvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3dyaXRhYmxl
LXN0cmVhbXMvZ2VuZXJhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMTMsNiArMTMsNiBA
QCBQQVNTIG1ldGhvZHMgc2hvdWxkIG5vdCBub3QgaGF2ZSAuYXBwbHkoKSBvciAuY2FsbCgpIGNh
bGxlZAogUEFTUyBXcml0YWJsZVN0cmVhbSdzIHN0cmF0ZWd5LnNpemUgc2hvdWxkIG5vdCBiZSBj
YWxsZWQgYXMgYSBtZXRob2QKIFBBU1MgcmVkdW5kYW50IHJlbGVhc2VMb2NrKCkgaXMgbm8tb3AK
IFBBU1MgcmVhZHkgcHJvbWlzZSBzaG91bGQgZmlyZSBiZWZvcmUgY2xvc2VkIG9uIHJlbGVhc2VM
b2NrCi1GQUlMIFN1YmNsYXNzaW5nIFdyaXRhYmxlU3RyZWFtIHNob3VsZCB3b3JrIGFzc2VydF90
cnVlOiBTdWJjbGFzcyBvYmplY3Qgc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIFN1YmNsYXNzIGV4
cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTIFN1YmNsYXNzaW5nIFdyaXRhYmxlU3RyZWFtIHNo
b3VsZCB3b3JrCiBQQVNTIHRoZSBsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiB0
aGUgc3RyZWFtIGhhcyBhIHdyaXRlcgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>